摘要: 1. HashSet 简介 HashSet 是个包装HashMap的一种数据结构,HashSet的大部分的方法都是依靠找HashMap的方法,在内部结构没有特别复杂的实现,在方法的实现中没有synchronized关键字修饰,所以是线程不安全的 HashSet继承了AbstractMap、实现了Ma 阅读全文
posted @ 2021-08-20 20:11 青竹zzq 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 1. LinkedList 简介 LinkedList 是链表结构,和ArrayList相比使用场景有所区别,因为ArrayList是数组结构,所以在查找数据的性能上是很好的,但是LinkedList是链表结构,所以已在查询上的性能不是很理想,但是在插入和删除的性能是很好的 LinkedList继承 阅读全文
posted @ 2021-08-18 20:43 青竹zzq 阅读(44) 评论(0) 推荐(0) 编辑
摘要: 1. Vector 简介 Vector 是个数组,但是可自动扩容的动态数组。和普通的数组相比,它的容量能够动态的增长,默认大小为10,每次插入数据的时候都会比较插入数据后和数组长度的大小,如果数组长度小则扩容1倍。在add和remove方法中都增加了synchronized关键字修饰,所以是线程安全 阅读全文
posted @ 2021-08-18 18:37 青竹zzq 阅读(218) 评论(0) 推荐(0) 编辑
摘要: 1. ArrayList 简介 ArrayList 是个数组,但是可自动扩容的动态数组。和普通的数组相比,它的容量能够动态的增长,默认大小为10,每次插入数据的时候都会比较插入数据后和数组长度的大小,如果数组长度小则扩容0.5倍。 ArrayList继承了AbstractList、实现了List、R 阅读全文
posted @ 2021-08-17 20:46 青竹zzq 阅读(82) 评论(0) 推荐(0) 编辑
摘要: JAVA的集合体系是个庞大的知识体系,里面涵盖了,如数组结构,链表,红黑树,排序算法,线程安全等等知识点,接下来将会使用一系列的分享文章整理自己的学习心得,留的温故而知新。下图是整理出来的JAVA集合体系的图谱,也查看了其他分享的图谱,有些出入,但是这些事我看源码整理出来的,以偏概全吧,后续发现有不 阅读全文
posted @ 2021-08-16 20:43 青竹zzq 阅读(34) 评论(0) 推荐(0) 编辑
摘要: 从递归到尾递归的一次优化 阅读全文
posted @ 2019-12-04 16:44 青竹zzq 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 有A类和B类,如果在A类实例化B类,最简单直接的方法就是在B中使用include require_once A的文件,但是这种方法显然是不友好的,在框架中叶不是这么做的,在框架中使用的是自动加载的机制也成为懒加载。 php中自动加载使用spl_autoload_register来完成在没有指定类的情 阅读全文
posted @ 2019-03-01 18:27 青竹zzq 阅读(1070) 评论(0) 推荐(0) 编辑
摘要: 建造者模式:将一个负责对象的构建与它的表示分离,使得同样的构建过程有不同的表示。建造者模式是一步一步创建负责的对象,它允许开发者只通过指定对象的类型和内容就可以创建它们。开发者不需要知道具体的构造细节。 UML图: 构造者模式的demo demo执行结果 建造者模式的优点: 建造者模式可以很好地将一 阅读全文
posted @ 2019-02-14 17:19 青竹zzq 阅读(249) 评论(0) 推荐(0) 编辑
摘要: 代理模式是常用的设计模式之一,代理模式为对象的间接访问提供了一套方案,可以对对象访问进行控制,也能监控对象访问相关的数据信息。 代理模式(Proxy)就是给某一个对象提供代理,在由代理控制原对象的访问。 代理模式的UML图: 下面是代理模式的demo: demo的执行结果 其它帖子有说了很多代理模式 阅读全文
posted @ 2019-02-13 15:54 青竹zzq 阅读(179) 评论(0) 推荐(0) 编辑
摘要: 列举一个场景:下班之后回家,打开家门,开始做饭,之后睡觉 以上场景如果按照传统的开始方式就是封装一个用户类,里面有回家方法,打开门方法,做饭方法,睡觉方法,之后在外面依次调用。 假设你代码开发完了,这时需求变了,变为:下班之后回家,打开家门,开始做饭,运动,打游戏,之后睡觉 一段时间后又变了:打开家 阅读全文
posted @ 2019-02-12 11:55 青竹zzq 阅读(107) 评论(0) 推荐(0) 编辑