diff --git a/java/README.md b/java/README.md index a17ab56..14f5aed 100644 --- a/java/README.md +++ b/java/README.md @@ -6,7 +6,7 @@ * 继承:继承是类与类的一种关系,比较像集合中的从属于关系。 * 封装:隐藏类的基本信息,不允许外部程序直接访问,而是通过该类的方法实现对隐藏信息的操作和访问。 * 多态:方法的重写、重载与动态连接构成多态性; -* 面向对象的六大原则 【参考[设计模式](http://www.zeekling.cn/gogs/zeek/designPattern/src/master/principle)】 +* 面向对象的六大原则 【参考[设计模式](https://git.zeekling.cn/java/designPattern/src/branch/master/principle)】 * 单一职责原理:一个类只负责一项职责。 * 里氏替换原则:劲量不要重写父类的已经实现了的方法,可以用接口等其他方法绕开。 * 依赖倒置原则:高层模块不应该依赖底层模块,二者应依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。 @@ -25,7 +25,7 @@ * 弱引用:用来描述非必须的对象,但是它的强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾收集发送之前。 * 虚引用:虚引用也称为幽灵引用或者幻影引用,它是最弱的一种引用关系。一个持有虚引用的对象,和没有引用几乎是一样的,随时都有可能被垃圾回收器回收。 * java集合 - ![集合类总图](http://www.zeekling.cn/gogs/zeek/study/raw/master/java/pics/list.png) + ![集合类总图](https://git.zeekling.cn/zeekling/study/raw/branch/master/java/pics/list.png) * Collection:集合类的根接口,list和set都继承自此接口 * List:有序,可以重复,一般用index标示顺序 * LinkedList:底层用双链表实现:增加删除效率高 @@ -43,11 +43,11 @@ * HashMap:非同步、线程不安全,一般不要求线程安全的情况下建议使用 * LinkedHashMap: 是HashMap+LinkedList,即它既使用HashMap操作数据结构,又使用LinkedList维护插入元素的先后顺序。 java 7 hashmap实现原理 - ![hashmap实现原理](http://www.zeekling.cn/gogs/zeek/study/raw/master/java/pics/hashmap1.jpeg) + ![hashmap实现原理](https://git.zeekling.cn/zeekling/study/raw/branch/master/java/pics/hashmap1.jpeg) java8 实现原理 - ![java8 实现原理](http://www.zeekling.cn/gogs/zeek/study/raw/master/java/pics/hashmap2.png) + ![java8 实现原理](https://git.zeekling.cn/zeekling/study/raw/branch/master/java/pics/hashmap2.png) * ConcurrentHsahMap:可以用来代替HashTable,而且比HashTable的扩展性好。 - ![ConcurrentHsahMap实现原理](http://www.zeekling.cn/gogs/zeek/study/raw/master/java/pics/ConcurrentHashMap.png) + ![ConcurrentHsahMap实现原理](https://git.zeekling.cn/zeekling/study/raw/branch/master/java/pics/ConcurrentHashMap.png) * TreeMap:是一个有序的key-value集合,它是通过红黑树实现的。是SortedMap的一个实现类 * WeakHashMap: * IdentifyHashMap: @@ -59,7 +59,7 @@ * CountDownLatch:可以用来在一个线程中等待多个线程完成任务的类 * Vector * io流 -![io详解](http://www.zeekling.cn/gogs/zeek/study/raw/master/java/pics/io.png) +![io详解](https://git.zeekling.cn/zeekling/study/raw/branch/master/java/pics/io.png) * 根据处理数据的类型 * 字节流:字节流因为操作的是字节,所以可以用来操作媒体文件。 * 字符流:字符流中的对象融合了编码表,也就是系统默认的编码表。我们的系统一般都是GBK编码。字符流只用来处理文本数据,字节流用来处理媒体数据。 @@ -70,7 +70,7 @@ * 对象序列化 * NIO(非阻塞IO) * IO和NIO的区别 -![IO和NIO的区别](http://www.zeekling.cn/gogs/zeek/study/raw/master/java/pics/nio_and_io.png) +![IO和NIO的区别](https://git.zeekling.cn/zeekling/study/raw/branch/master/java/pics/nio_and_io.png) * AIO (异步IO) * 多线程 @@ -144,9 +144,9 @@ java虚拟机我看过周志明的《深入理解java虚拟机》和周志明等 * 元空间:1.8引入的,用来替换方法区(永久代);不再虚拟机中,使用的是本地内存,取决于电脑的内存大小 ***内存结构图*** 1.7及以前版本java内存分布图: -![jvm内存管理](http://www.zeekling.cn/gogs/zeek/study/raw/master/java/pics/jvm.jpg) +![jvm内存管理](https://git.zeekling.cn/zeekling/study/raw/branch/master/java/pics/jvm.jpg) 1.8 内存分布图: -![jvm内存管理](http://www.zeekling.cn/gogs/zeek/study/raw/master/java/pics/jvm.png)
+![jvm内存管理](https://git.zeekling.cn/zeekling/study/raw/branch/master/java/pics/jvm.png)
* 对象 * 对象的创建 * 对象的内存布局 @@ -159,9 +159,9 @@ java虚拟机我看过周志明的《深入理解java虚拟机》和周志明等 * 指针方式访问(hotspot 虚拟机用的就是指针方式访问):指针访问方式访问方式比句柄方式快,节省一次指正定位带来的时间开销。 * 句柄方式访问(其他虚拟机):句柄池中存放的是稳定的句柄,当对象被移动时,只需要改变句柄的实例数据就行,不需要改变reference本身的值。 ***普通对象的内存分布*** - ![mei对象](http://www.zeekling.cn/gogs/zeek/study/raw/master/java/pics/object.JPEG) + ![mei对象](https://git.zeekling.cn/zeekling/study/raw/branch/master/java/pics/object.JPEG) ***数组对象的内存分布*** - ![mei对象](http://www.zeekling.cn/gogs/zeek/study/raw/master/java/pics/object_arr.JPEG) + ![mei对象](https://git.zeekling.cn/zeekling/study/raw/branch/master/java/pics/object_arr.JPEG) * 垃圾回收 * 判断对象已死 * 引用计数法(无法判断循环引用的对象是否已死):每个对象都有一个引用计数器,对象每被引用一次就加1,对象被释放就减1,引用计数为0表示可以被回收。