java
shuyi_123456
这个作者很懒,什么都没留下…
展开
-
偏向锁、轻量级锁、重量级锁
原文链接:https://www.jianshu.com/p/b422fc9cbba0?utm_source=desktop&utm_medium=timeline写的超级好。此处简单记录下:偏向锁,当有两个或多个线程竞争时,大概率会升级为轻量级锁。轻量级锁靠自旋等待,当自旋次数达到一定次数后还没获得锁,则升级为重量级锁。...原创 2020-03-07 15:57:55 · 112 阅读 · 0 评论 -
记录开发中常用的小代码
1、时间戳转LocalDateTimeInstant instant = Instant.ofEpochMilli(timestamp);ZoneId zone = ZoneId.systemDefault();return LocalDateTime.ofInstant(instant, zone);原创 2020-02-26 09:46:29 · 99 阅读 · 0 评论 -
记录开发时遇过的坑
1、sql中order by和limit一起使用时,若order by的值有重复,数据库会随机选取一条出来limit。所以当order by和limit一起使用时,一定要在order by中加上一个不会重复的字段,比如id。2、HashMap不保证有序,TreeMap按key排序,LinkedHashMap按插入顺序排序。...原创 2020-01-20 15:21:48 · 373 阅读 · 0 评论 -
垃圾收集器与内存分配策略
一、对象是否已死引用计数算法:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。它实现简单,判定效率高,但是很难解决对象间相互引用的问题。public class Test { public Object instance = null; private stati...原创 2020-01-07 18:26:35 · 97 阅读 · 0 评论 -
java内存区域与内存泄漏异常
一、java内存区域java内存区域主要包括方法区、堆、虚拟机栈、本地方法栈、程序计数器。程序计数器就是记录当前线程执行到哪儿用的,所以一个线程一个程序计数器。 同样的,虚拟机栈和本地方法栈也是线程私有的。其区别就是虚拟机栈执行的是java方法,本地方法栈执行的是其他语言的方法。虚拟机栈描述的是java方法执行的内存模型。每个方法执行时都会创建一个栈帧,用于存储局部变量表、操作数栈、动态...原创 2020-01-06 22:19:36 · 199 阅读 · 0 评论 -
AtomicBoolean锁
关于重入锁在网盘里有,主要是以下两种:ReentrantLock、synchronized。以下介绍AtomicBoolean的使用,这是一个原子变量。可以简单的理解为一种简单的锁。public class Test { public static void main(String[] args) { A a = new A(); ...原创 2020-01-02 14:58:41 · 603 阅读 · 0 评论 -
常量池。。。。
jdk1.7之前放在方法区,1.7之后放在堆中。常量池在java用于保存在编译器已确定的,已编译的class文件中的一份数据。它包括了关于类,方法,接口等中的常量,也包括字符串常量,如String s = "java" 这种申明方式;当然也可以扩充,故认为常量池是jvm的一块特殊的内存空间。在Java程序中,有很多东西是永恒的,不会在运行过程中变化。比如一个类的名字,一个类字段...原创 2019-12-30 21:29:59 · 251 阅读 · 2 评论 -
高效并发-先行发生原则
先行发生原则这个原则非常重要,它是判断数据是否存在竞争、线程是否安全的主要依据,依靠这个原则,我们可以通过几条规则一揽子地解决并发环境写两个操作之间是否可能存在冲突的所有问题。以下是java内存模型下一些“天然的”先行发生关系,这些先行发生关系无须任何同步器协助就已经存在,可以在编码中直接使用。如果两个操作之间的关系不在此列,并且无法从下列规则推导出来的话,它们就没有顺序性保障,虚拟机可以...原创 2019-12-20 10:42:18 · 161 阅读 · 0 评论 -
volatile的理解
java使用变量时,会先从主内存中将变量读取载入至工作内存,然后处理完以后,再存储写入工作内存。此时当多个内存读取并修改时就会发生并发。而volatile可以确保变量的可见性以及指令有序性。但是volatile不能保证原子性。为什么volatile不能保证原子性?它不是保证了每一时刻每个工作内存的被修饰变量一致吗?比如 a++;因为a++的执行等同于a = a + 1;...原创 2019-12-13 10:02:34 · 128 阅读 · 0 评论 -
2019-11-30面试题
1、redis分布式锁的缺陷√2、jvm如何回收对象3、myBatis有几种分页方式√4、什么是迭代器5、xss攻击是什么,怎么应对6、如何验证mysql索引是否有效√7、jvm堆栈的区别8、线程池9、Lock与synchronized 的区别√10、elasticsearch倒排索引√11、volatile有什么用√12、rocketmq消息丢失1...原创 2019-11-30 20:16:47 · 99 阅读 · 0 评论