摘要:什么是代理 所谓代理,是指对一个对象A的方法调用会被对象B先截获,然后由B来决定是继续调用A的方法或者做其他操作。也就是说,在代码中,我们直接操作的对象从A变成了B,对A的任何操作都要经过B才能完成。那么就可以说,B是A的代理 如何实现一个代理 要实现一个代理是非常简单的,只需要将代理对象B设置为目
阅读全文
摘要:基本概念 可见性 当一个线程修改了共享变量时,另一个线程可以读取到这个修改后的值。 内存屏障(Memory Barriers) 处理器的一组指令,用于实现对内存操作的顺序限制。 缓冲行 CPU告诉缓存中可以分配的最小存储单位,处理器填写缓存行时,会加载整个缓存行。 Lock前缀的指令 Lock前缀的
阅读全文
摘要:Java 正则表达式学习 匹配模式 JDK提供三种匹配模式,分别是:贪婪模式(greedy),勉强模式(reluctant)和占有模式(possessive),分别对应三种占有量词,其中贪婪模式是默认的模式,勉强模式通过在表达式后面加一个?来表示。占有模式通过在表达式后面加一个+来表示。 三种模式的
阅读全文
摘要:概述 HashMap是Map接口的一个哈希表的实现,内部是一个数组表示的。数组中的元素叫做一个Node,一个Node可以一个是一个简单的表示键值对的二元组,也可以是一个复杂的TreeNode。如果是一个一个简单的二元组,则可以通过Node的next域构成构成一个链表。 当需要遍历Map的时候,建议使
阅读全文
摘要:接口 ArrayList实现了List接口,因此可以当作一个List来使用。 此外,ArrayList还实现RandomAccess接口和Serializable,说明ArrayList支持随机访问并且支持Java序列化机制。 实现 ArrayList内部含有的非静态域只有两个,一个用户保存数据的O
阅读全文
摘要:public class Dijkstra { public static void main(String[] args) { // TODO Auto-generated method stub int[][] weight = { {0,3,9999999,7,9999999}, {3,0,4
阅读全文
摘要:String源码学习 零散的收获 数组的元素类型可以通过getComponentType来获取到 子类型的数组可以赋值给父类型的数组,。但是并不存在继承关系。数组的父类是Object。 通过声明如下代码来控制需要序列化的field private static final ObjectStreamF
阅读全文