08 2017 档案
摘要:定义及概念 B树 二叉树的深度较大,在查找时会造成I/O读写频繁,查询效率低下,所以引入了多叉树的结构,也就是B树。阶为M的B树具有以下性质: 1、根节点在不为叶子节点的情况下儿子数为 2 ~ M2、除根结点以外的非叶子结点的儿子数为 M/2(向上取整) ~ M3、拥有 K 个孩子的非叶子节点包含
阅读全文
摘要:B/S基于统一的应用层协议HTTP来交互数据,目前的B/S网络架构大多采用如图所示的架构设计,既要满足海量用户访问请求,又要保持用户请求的快速响应。 当一个用户在浏览器输入www.taobao.com这个URL时,将会发生很多操作。首先它会请求DNS把这个域名解析成对应的IP地址,然后根据这个IP地
阅读全文
摘要:一、什么是适配器 适配器是将一种接口改造成另外一种接口的一个包装类; 二、补充说明 有两种实现方式,一种是通过继承,另外一种通过组合; 使用组合实现的时候,跟装饰者模式有点类似,不过侧重点不同,装饰者模式是给对象增加新行为,适配器是为了适配接口; 优点:符合开闭原则;适配者类和目标类解耦;代码复用;
阅读全文
摘要:一、什么是单例模式 一个类只有一个全局实例 二、补充说明 一般把其构造方法设为私有,另外提供一个可以获取该实例的静态方法; 由于java存在反射机制,即使是私有构造方法,也能被外部创建,所以一般的写法严格来讲不属于单例模式;(ps:可以在构造方法内加个静态flag标志判断,保证其只能创建一次) 违背
阅读全文
摘要:一、什么是抽象工厂模式 就是对一组具有相同主题的工厂进行封装(维基百科解释的很到位); 例如:生产一台PC机,使用工厂方法模式的话,一般会有cpu工厂,内存工厂,显卡工厂...但是使用抽象工厂模式的话,只有一个工厂就是PC工厂,但是一个PC工厂涵盖了cpu工厂,内存工厂,显卡工厂等要做的所有事; 二
阅读全文
摘要:一、什么是工厂方法 具体的工厂对象负责生产具体的产品对象; 二、补充说明 符合开放--封闭"原则(OCP),新增产品时,只需新增工厂的实现类、产品的实现类,不修改原来的代码; 属于23种GOF设计模式中的一种; 三、角色 抽象工厂 具体工厂 抽象产品 具体产品 产品使用者 具体工厂'继承'抽象工厂;
阅读全文
摘要:Java集合大致可分为Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5之后,增加了Queue体系集合,代表一种队列集合实现。 Java集合框架主要由Collection和Map两个根接口及其子接口、实现
阅读全文
摘要:Java集合大致可分为Set、List和Map三种体系,其中Set代表无序、不可重复的集合;List代表有序、重复的集合;而Map则代表具有映射关系的集合。Java 5之后,增加了Queue体系集合,代表一种队列集合实现。 Java集合框架主要由Collection和Map两个根接口及其子接口、实现
阅读全文
摘要:第1部分 Vector介绍 Vector简介 Vector 是矢量队列,它是JDK1.0版本添加的类。继承于AbstractList,实现了List, RandomAccess, Cloneable这些接口。Vector 继承了AbstractList,实现了List;所以,它是一个队列,支持相关的
阅读全文
摘要:1. ArrayList概述: ArrayList是List接口的可变数组的实现。实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List 接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。 每个ArrayList实例都有一个容量,该容量是指用来存储列表元素的数组
阅读全文
摘要:HashSet: HashSet实现了Set接口,它不允许集合中出现重复元素。当我们提到HashSet时,第一件事就是在将对象存储在 HashSet之前,要确保重写hashCode()方法和equals()方法,这样才能比较对象的值是否相等,确保集合中没有 储存相同的对象。如果不重写上述两个方法,那
阅读全文
摘要:注:本人的源码基于JDK1.8.0,JDK的版本可以在命令行模式下通过java -version命令查看。 在前面的博文(Java集合框架源码(一)——hashMap)中我们详细讲了HashMap的原理,对于HashSet而言,它是基于HashMap来实现的,底层采用HashMap来保存元素。 一、
阅读全文
摘要:1、HashMap不是线程安全的 HashMap是map接口的子类,是将键映射到值的对象,其中键和值都是对象,并且不能包含重复键,但可以包含重复值。HashMap允许null key和null value,而hashtable不允许。 2、HashTable是线程安全 HashMap是Hashtab
阅读全文
摘要:从JDK1.2起,就有了HashMap,HashMap不是线程安全的,因此多线程操作时需要格外小心。 在JDK1.5中,Doug Lea给我们带来了concurrent包,从此Map也有安全的了。 ConcurrentHashMap具体是怎么实现线程安全的呢,肯定不可能是每个方法加synchroni
阅读全文
摘要:1、 “什么是HashMap? HashMap可以接受null键值和值,而Hashtable则不能;HashMap是非synchronized;HashMap很快;以及HashMap储存的是键值对等等。 2、“你知道HashMap的工作原理吗?” “你知道HashMap的get()方法的工作原理吗?
阅读全文
摘要:注:本人的源码基于JDK1.8.0,JDK的版本可以在命令行模式下通过java -version命令查看。 一首先我们来看一下HashMap类的定义: 从上述JDK源码可以看到: 1HashMap继承自AbstractMap类同时实现了Cloneable,Serializable这两个接口,其中前一
阅读全文