- 博客(6)
- 收藏
- 关注
转载 dcl单例模式
未考虑多线程 在实现单例模式时,如果未考虑多线程的情况,就容易写出下面的错误代码: public class Singleton { private static Singleton uniqueSingleton; <span class="token keywo...
2021-01-08 18:06:58
99
原创 ThreadLocal源码解析
threadlocal的核心是通过隔离的方式来解决共享变量的安全性问题,这一方式能得以实现的基础是每个线程都有一个threadlocalmap, 我们可以通过threadlocalmap来存储,即以threadlocal为key的entry存储在threadlocal中,从而保证这个线程都会存有变量的副本,互不干扰,使用threadlocal基于以下几个事实: 1.每个thread都有一个threadlocalmap; 2.thread可以有多个th...
2021-01-08 16:21:27
149
原创 拆箱和装箱
装箱:基本类型转变为包装器类型的过程。 拆箱:包装器类型转变为基本类型的过程。 以Integer为例分析自动装箱和拆箱的过程,先看一组代码 从源码来分析结果,Integer有value属性,类型为int,对于1处和4处会触发自动装箱,即执行valueof方法 由上源码可知装箱时当i>=-128,i<=IntegerCache.high(默认127)会自动从内部类IntegerCache的cache数组中拿取对象,超出这个范围则new对象,1处在返回内,会拿取同一缓...
2021-01-06 18:12:28
71
原创 java==和equals的区别
对于基本类型==和equals一致,封装类型则需要重写hashcode和equals方法,下面以代码为例 /* * 这种方式会把abc放到常量池中,后面如果再有引用abc则直接从常量池中查询,如果常量池中没有则在常量池中开辟空间存储abc * */ String a= "abc"; String b=a; String c="abc"; /* * 这种方式是直接在堆内存中存储 * */ String d=new String("abc"); St...
2021-01-06 15:10:16
82
原创 分布式主键
分布式数据库生成主键实践 利用redis生成:时间戳+redis自增 时间戳可到毫秒级,则有1000的并发量 redis自增取模,如按1000000取模,则支持1000*100000=100000000级的并发量 如果redis做了分片,则可以把redis的分片规则计算出的id放入主键中,从而保证主键的唯一性:时间戳+计算出的redis分片id+redis自增 ...
2020-10-17 11:26:13
128
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人