一、装饰器 装饰器可以在函数执行前和执行后执行其他的附加功能,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator),装饰器的功能非常强大,但是理解起来有些困难,因此我尽量用最简单的例子一步步的说明这个原理。 写代码要遵循开发封闭原则,虽然在这个原则是用的面向对象开发,但是也适 ...
分类:
编程语言 时间:
2016-08-30 08:18:32
阅读次数:
224
单例模式:程序在运行期间只能有一个实例对象。 第一中实现方式:饥汉模式 在类进行初始化的时候 就加载了singleton 对象,这是会占用内存。 第二种实现方式:懒汉模式 在进行调用时对singleton进行实例化,这时如果多个线程同时调用getInstance(),这时线程存在安全问题。 为了解决 ...
分类:
其他好文 时间:
2016-08-29 22:28:58
阅读次数:
161
Spring核心之二:AOP(Aspect Oriented Programming) 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻 ...
分类:
编程语言 时间:
2016-08-28 23:52:09
阅读次数:
236
//多态的概念:对象在不同时刻表现出来的状态////针对引用类型:// 编译期间的状态和运行期间的状态 // 举例:Person p= new person(); p在编译时转态和运行时的状态都是一样的,因此它不是多态//多态的前提条件:// A:要有继承关系// B:要有方法的重写(返回值类型、函 ...
分类:
其他好文 时间:
2016-08-27 23:24:15
阅读次数:
157
控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到了外部容器,控制权的转移就是所谓反转,目的是为了获得更好的扩展性和良好的可维护性。所谓依赖注入就是指:在运行期,由外部容器动态地将依赖对象注入到组件中。 实例化Spring容器常用的两种方 ...
分类:
编程语言 时间:
2016-08-24 13:06:39
阅读次数:
224
写作日期 2016-08-22-23 交流qq:992591601 参考资料:《深入理解java虚拟机》、《thinking in java》、《Effective Java》 直接从最要紧的地方讲,Java GC算法。需说明一点,GC机制只是涉及堆内存的。因为堆内存是动态的,在程序运行期间分配的。 ...
分类:
编程语言 时间:
2016-08-24 01:03:16
阅读次数:
209
Runtime简称运行时,是一套比较底层的纯C语言的API, 作为OC的核心,运行时是一种面向对象的编程语言的运行环境,其中最主要的是消息机制,Objective-C 就是基于运行时的。 所谓运行时,是指尽可能地把决定从编译期推迟到运行期,就是尽可能地做到动态.只是在运行的时候才会去确定对象的类型和 ...
分类:
其他好文 时间:
2016-08-21 11:00:59
阅读次数:
138
前几天与同事激烈讨论了一下,有一点收获,记录起来。 首先给出MSDN的定义: lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。 先来看看执行过程,代码示例如下: 假设线程A先执行,线程B稍微慢一点。线程A执行到lock语句,判断 ...
GC需要完成的3件事情: 1.哪些内存需要回收? 2.什么时候回收? 3.如何回收? 哪些内存需要回收? 对于程序计数器、虚拟机栈、本地方法栈3个区域随线程而生,随线程而灭,栈帧随方法的进入和退出执行入栈和出栈的操作。每一个栈帧分配多少内存基本上在类结构确定下来时就已知(运行期JIT编译器会进行一些 ...
分类:
其他好文 时间:
2016-08-21 00:50:43
阅读次数:
147
一、基本概念 Java是一门面向对象的程序设计语言,因为Java具备面向对象的三个基本特征:封装、继承和多态。这三个特征并不是各自独立的,从一定角度上看,封装和继承几乎都是为多态而准备的。多态性主要体现在对象的方法调用上: 1.编译期根据对象的静态类型进行静态分派。 2.运行期根据对象的实际类型进行 ...
分类:
编程语言 时间:
2016-08-18 19:53:58
阅读次数:
296