Java基础
文章平均质量分 63
Lv-D-J
这个作者很懒,什么都没留下…
展开
-
HashMap源码解读
简介HashMap 是一个采用hash表实现键值对集合,其依赖图如下源码解读成员变量/** * The default initial capacity - MUST be a power of two. * 初始容量大小 16,必须是2的整数次方, */static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // ak...原创 2020-05-08 00:01:10 · 180 阅读 · 0 评论 -
ConcurrentHashMap详解(1.8)
1.7和1.8的区别1.8取消了segment分段锁的设计增加了红黑树的实现链表的长度大于8 且数组的长度大于64时,此时链表会转为红黑树,当扩容时,假设链表长度小于8 此时红黑树会转换成链表初始化Tab-1 表示占位符,如果sizeCtl=-1 则表示已有线程抢到了初始化权限大于0 数字 sizeCtl=sc = n*0.75 下次扩容的大小负数(非-1) 代表有几个线程...原创 2020-04-14 14:03:12 · 945 阅读 · 0 评论 -
多线程原理(部分)
volatile解释volatile修饰的变量能够保证可见性,但不保证原子性,每个线程能够获取该变量的最新值。如何保持可见性对volatile修饰的词,程序在编译的时候,会多一个lock汇编指令如下图所示:该lock指令有两个主要作用:将当前缓存行的数据回写到内存中使其他cpu里缓存了该内存地址的数据无效(缓存一致性机制)JMM主要是通过设置内存屏障来禁止指令重排序,下图是...原创 2020-03-28 23:46:01 · 167 阅读 · 0 评论 -
23种设计模式之委派模式
基本介绍委派模式的基本作用就是负责任务的调度和分派任务,跟代理模式很像,可以看做是一种特殊情况下的静态代理的全权代理,但代理模式注重过程,委派模式注重结果。它不属于GOF 23种设计模式之一。是一种行为模式。源码中标志带Delegate结尾、Dispatcher 等一般都是委派模式适用场景一般可解决 多任务统筹调度的问题优点对内隐藏实现, 易于扩展; 简化调用;它仅将委派者角色暴露...原创 2020-03-18 08:04:11 · 141 阅读 · 0 评论 -
23种设计模式之工厂模式
简单工厂模式基本介绍简单工厂模式定义了一个工厂类,他可以根据参数的不同返回不同类的实例,被创建的实例通常都具有共同的父类,简单工厂模式中用于被创建实例的方法通常为静态(static)方法,因此简单工厂模式又被成为静态工厂方法特点需要什么,只需要传入一个正确的参数,就可以获取所需要的对象,而无需知道其实现过程工厂模式方法基本介绍工厂模式指定义一个创建对象的接口,但让实现此接口的类来决定...原创 2020-03-17 21:48:38 · 89 阅读 · 0 评论 -
23种设计模式之外观模式
基本介绍也叫过程模式:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需跟这个接口发生调用,而无需关心这个子系统的内部细节3.类图如下:1)外观类(Facade):为调用端提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给适当子...原创 2019-11-11 14:55:57 · 122 阅读 · 0 评论 -
23种设计模式之组合模式
基本介绍1.组合模式又叫部分整体模式,它创建了对象组的树形结构,将对象组合成树状结构以表示“部分-整体”的层次关系2.组合模式依据树形结构来组合对象,用来表示部分以及整体的层次关系3.组合模式属于结构型模式4.组合模式能让用户对单个对象和组合对象的访问具有一致性解决的问题1.当我们要处理的对象可以生成一颗树形结构,而我们要对树上的节点和叶子进行操作时,它能提供一致的方式,而不用考虑它是...原创 2019-11-09 16:14:42 · 152 阅读 · 0 评论 -
JDBC 批量插入数据并返回主键
JDBC 批量插入数据并返回主键 String sql = "INSERT INTO saas_init_bakeups (" + " delete_number, table_name, data, organ_sign,create_user)" + " VALUES(?,?,?,?,?...原创 2019-05-23 14:20:50 · 2509 阅读 · 0 评论 -
RabbitMq之集群
让RabbitMq变成高可用性有两种方式:一种是设施Rabbit集群,另一种为扩大程序规模。接下来讲述RabbitMq集群RabbitMq内建集群用于完成两个目标:允许生产者和消费者在Rabbit节点崩溃的情况下继续运行通过添加更多的节点来线性扩展消息通信吞吐量当你失去一个rabbitmq节点,同时客户端能重新连接到集群中,并继续生产和消费消息。当一个rabbit集群节点崩溃时,该节点...原创 2019-01-09 16:47:41 · 143 阅读 · 0 评论 -
垃圾收集器
垃圾收集器3.5.1 Serial 收集器3.5.2 Serial Old 收集器3.5.3 ParNew收集器3.5.4 Parallel Scavenge 收集器3.5.5 Parallel Old 收集器3.5.6 CMS 收集器垃圾收集器是内存回收的具体体现3.5.1 Serial 收集器Serial 收集器是最基本、发展历史最悠久的收集器,曾经是(JDK1.3之前)虚拟机新生代的唯...原创 2018-12-09 13:32:29 · 210 阅读 · 0 评论 -
Java map转list
map转数组的几种方式map转listpublic void mapToList(){ Map map = new HashMap(); map.put("a", "aa"); map.put("b", "bb"); map.put("c", "cc"); map.put("d", "dd"); //转list 方式一 Collect原创 2018-02-06 10:40:21 · 3922 阅读 · 0 评论