摘要:
CyclicBarrier是循环栅栏的意思,循环的等待多个线程执行任务; <1> 示例代码如下: public class CyclicBarrierTest { public static CyclicBarrier cb = new CyclicBarrier(3, () -> System.o 阅读全文
摘要:
HashMap原码简析 <1> put方法简析,逻辑步骤如下 进入put()方法,对key进行hash,获取key的hashcode码 进入putVal() 判断当前table是否为null或者size==0,如果是则为该HashMap进行创建默认的table表。 判断根据hashCode获取在ta 阅读全文
摘要:
用在方法声明里,或者用在代码块上; 用在静态方法上,对象锁是当前的字节码Class对象; 用在普通方法上,对象锁是当前的实例对象; 同步代码块,对象锁是synchronized(x)为括号里面的对象; 一般和x.wait(), x.notify(),x.notifyAll()配合使用,进行线程间通讯 阅读全文
摘要:
Long 是long类型的包装类型。 Long默认零值为null, long的默认零值为 0. Long类中有个静态的内部缓存类,用来缓存 -128 ~ 127 之间的long包装对象实例,类加载的过程中会对LongCache的静态代码块进行初始化,后面自动装箱的 -128 ~ 127 之间的Lon 阅读全文
摘要:
String的内部实现,用一个value char[]数组来存放数据信息。 String类中包含的方法: substring(), 获取子串,返回一个新的字符串。 charAt(intindex), 获取字符串固定位置的字符。 concat(), 连接字符串,内部重新创建了一个新的字符串返回。 jo 阅读全文
摘要:
@EnableDiscoveryClient @SpringBootApplication public class ProducerApplication { public static void main(String[] args) { SpringApplication applicatio 阅读全文
摘要:
CopyOnWriteArrayList 类分析 1. CopyOnWriteArrayList 其中底层实现存放数据是一个Object数组: private volatile transient Object[] array; 2. CopyOnWriteArrayList 集合操作,当对集合中的 阅读全文
摘要:
JVM虚拟机内存组成: 如下图: (1)是一块较小的内存空间;可以看做当前程序执行子界面的行号指示器,字节码解析器执行的时候就是根据这个判断下一条指令该执行什么。 (2)因为cpu在执行代码的时候,会在多个线程之间进行切换执行,所以为了在cup切换后恢复到正确的执行位置,每条线程都有一个独立的程序计 阅读全文
摘要:
代理模式:代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问。代理类负责为委托类预处理消息,过滤消息并转发消息,以及进行消息被委托类执行后的后续处理。很多可以框架中都有用到,比如: spring的AOP的实现主要就是动态代理, mybatis的Mapper代理等。 如下 阅读全文
摘要:
mybatis源码分析(sqlSessionFactory生成过程) 1. mybatis框架在现在各个IT公司的使用不用多说,这几天看了mybatis的一些源码,赶紧做个笔记. 2. 看源码从一个demo引入如下: 如上代码获取SQLSessionFactory实例对象,下来进入SqlSessio 阅读全文