- 博客(27)
- 收藏
- 关注
原创 不要用Integer作为锁对象
超过-128到127缓存的数据都会涉及到装箱操作,这个时候每个线程来都会new Integer(XX)。从而导致拿到的都不是同一把锁无法形成互斥锁。
2022-02-21 10:35:27
736
原创 JIT即时编译器和解释器
首先解释一下概念,解释:输入程序代码–>得到结果。一步到位编译:输入程序代码–>得到可执行代码–>执行可执行的代码得到结果。解释器:程序启动时首先发挥作用,解释执行Class字节码;省去编译时间,加快启动速度;但执行效率较低;JIT编译器:程序解释运行后,JIT编译器逐渐发挥作用;编译成本地代码,提高执行效率;但占用程序运行时间、内存等资源;热点代码会被jit编译编译成本地代码,直接和操作系统cpu交互执行,不需要经过解释器去执行了。效率大大的提高。但是如果全部交给j
2021-06-02 22:45:20
861
原创 OSI网络七层模型
从上到下分为:第一层:应用层。定义了用于在网络中进行通信和传输数据的接口。第二层:表示层。定义不同的系统中数据的传输格式,编码和解码规范。第三层:会话层。管理用户的会话,控制用户间逻辑连接的建立和中断。第四层:传输层。管理网络中端到端的数据传输。第五层:网络层。定义网络设备间如何传输数据。第六层:数据链路层:将上面的网络层的数据包封装成数据帧,便于物理层传输。第七层:物理层。传输二进制数据。实际应用中,五层协议结构里面没有表示层和会话层。(和应用层合并了)...
2021-05-19 14:00:09
1022
原创 Mysql主从同步原理
MYSQL主从同步原理:1) MYSQL主从同步是异步复制的过程,整个同步需要开启3线程,master上开启bin-log日志(记录数据库增、删除、修改、更新操作);2) Slave开启I/O线程来请求master服务器,请求指定bin-log中position点之后的内容;3) Master端收到请求,Master端I/O线程响应请求,bin-log、position之后内容返给salve;4) Slave将收到的内容存入relay-log中继日志中,生成master.info(记录master
2021-03-16 19:10:07
153
1
原创 tableSizeFor
//返回比c大最靠近c的2的幂次方整数。例:10->16 private static final int tableSizeFor(int c) { int n = c - 1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>>
2021-01-15 13:52:27
254
原创 浮点型比较
在遇到浮点数的时候,千万不要使用“==”操作符来进行比较,因为有精度问题。要么使用阈值来忽略舍入的问题(Math.abs() ),要么使用 BigDecimal (compareto)来替代 double 或者 float。
2020-07-30 10:13:03
315
原创 取余和取模的区别
对于整数a,b来说,取余和取模都有着下面这个关系:1:求整数的商 c = a / b2:计算模或者余数 r = a - c * b取余和取模的不同之处就是在c这里的不同,取余运算我们是尽可能的向0方向舍去小数位,比如-1/3是-0.33333,我们就取c为0,然后计算r = -1 - 0 * 3,即r为-1;取模运算是尽可能向负无穷的方向舍去小数位,比如-1/3是-0.33333,我们就取c是-1,然后计算r = -1 - ( -1) * 3,及c是2。下面我们再举一个例子 -7 % 41.这里a是-7,
2020-07-30 08:30:55
189
原创 geo算法
简介Geohash是用于将二维经纬度映射成一个一维编码,可以排序,可以比较。方便计算机存储与索引。原理分别将经纬度进行二等分逐渐逼近真正的目标经纬度,以维度(39.92324)为例:将维度范围[-90,90]二等分成两个区间[-90,0][0,90],如果目标维度位于前一个区间,则编码为0,否则为1.维度(39.92324)在[0,90]区间内,所以第一个编码为1。再将[0,90]区间二等分成[0,45][45,90],维度(39.92324)在[[0,45]]区间内所以为0以此类推到自己想
2020-07-28 23:56:48
810
原创 线程停止
官方已经不推荐使用stop,destroy方法。会造成不可预知的影响。在线程内部创建一个对外的stop方法,将全局停止flag设置为flase。即用外部线程调用要停止的线程的stop方法改变要停止线程的flag从而停止目标线程。...
2020-07-22 18:28:55
98
原创 Java接口作为参数传递
1,声明一个接口。2,写个类写个方法将接口作为参数传一下,在该方法内调用接口的方法,用lamadar表达式或者匿名内部类直接写方法体。相当于 implements该接口。这种写法一般用于配置类。
2020-07-19 23:43:16
1105
原创 yml和properties
yml即yaml。yml配置是有序的,properties配置是无序的,加载顺序是随机的。yml传数组更方便。不支持用@PropertySource注入
2020-07-11 16:01:31
128
原创 事务的隔离级别
事务具有四大特性:原子性,一致性,隔离性,持久性单说隔离性:隔离是指多个事务之间的隔离。下面以mysql为例(不同的数据库有不同的隔离级别):1 读未提交最低隔离级别,允许事务a读取事务b未提交的数据。2 读已提交事务a只能读取事务b提交的数据。3 可重复读为了确保事务a可以多次从一个字段中读取相同的值,禁止其他事务在事务a还没有执行结束的时候对这个字段操作。4 串行化最高隔离级别,保证事务a可以多次在一张表中读取到相同的行,在事务a执行期间,禁止其他事务对该表增删改,可以避免任何并发问
2020-07-07 22:43:51
42
原创 父类异常和子类异常
方法重写时,子类声明异常能否超出父类的范围?子类声明异常不能超出父类的范围[1]父类没有声明异常,子类也不能[2]不可抛出原有方法抛出异常类的父类或上层类
2020-05-14 23:22:54
349
原创 重写权限问题
重写权限问题子类的权限要≥父类的权限权限:public>protected>default>private|public:其他包也能访问protected:只能自己包可以访问,可以被继承default:不可以被继承private:只能自己的类可以访问...
2020-05-14 22:16:13
336
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人