随笔分类 - Java
摘要:import com.baomidou.mybatisplus.extension.service.IService; import org.apache.commons.collections4.CollectionUtils; import org.springframework.beans.B
阅读全文
摘要:前言最近在做excel解析的编码,其中涉及到一个内存占用空间优化的问题。解决的方法是尽量少的创建对象,可以共用的对象信息不用创建多份。查阅资料后得到如下文章,作为学习记录使用。JAVA对象头由于Java面向对象的思想,在JVM中需要大量存储对象,存储时为了实现一些额外的功能,需要在对象中添加一些标记
阅读全文
摘要:如何判断一个对象占用多少字节?这是我之前遇到的一个面试题,在这里分享一下。 要判断一个对象占用多少字节,对象内存布局是必须要了解的。 对象内存布局 在HotSpot虚拟机里对象内存布局分为3个部分:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding) 对象头 对
阅读全文
摘要:上一篇文章中对ThreadLocal进行了详尽的介绍,另外还有一个类: InheritableThreadLocal 他是ThreadLocal的子类,那么这个类又有什么作用呢? 原文地址: InheritableThreadLocal类原理简介使用 父子线程传递数据详解 多线程中篇(十八) 测试代
阅读全文
摘要:子线程如何获取父线程ThreadLocal的值 最近微信群里一个网友分享了他京东一面的过程,我这里分享给大家其中一道面试题。 京东一面」子线程如何获取父线程ThreadLocal的值 子线程如何获取父线程ThreadLocal的值 图片 想要子线程获取父线程中 ThreadLocal 中的值,需要其
阅读全文
摘要:目录:java虚拟机汇总 class文件结构分析 1).class文件常量池中的常量项结构 2). 常用的属性表的集合 类加载过程 1).类加载器的原理以及实现 虚拟机结构分析 1).jdk1.7和1.8版本的方法区构造变化 2).常量池简单区分 对象结构分析<<== 现在位置 1).压缩指针详解
阅读全文
摘要:package TestAQS; import sun.misc.Unsafe; import java.lang.reflect.Field; import java.util.concurrent.locks.AbstractQueuedSynchronizer; public class Ot
阅读全文
摘要:public static Unsafe reflectGetUnsafe() { try { Field field = Unsafe.class.getDeclaredField("theUnsafe"); field.setAccessible(true); return (Unsafe) f
阅读全文
摘要:对于 Java 数组的初始化,有以下两种方式: 静态初始化:初始化时由程序员显式指定每个数组元素的初始值,由系统决定数组长度,如: 1 2 3 4 //只是指定初始值,并没有指定数组的长度,但是系统为自动决定该数组的长度为4 String[] computers = {"Dell", "Lenovo
阅读全文
摘要:ThreadPoolExecutor 除了execute 方法用来提交任务,还有submit 方法,他们的区别就是后者有返回值,其原理是在前者的基础上使用了Future 接口。因此,我之前的示例改用submit 方法来实现会更加简单。原因有二: 1、submit 方法提交的任务有返回值,方便判断每个
阅读全文
摘要:作者:阿甘链接:https://zhuanlan.zhihu.com/p/472592171来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 线程池基础知识 在Java语言中,虽然创建并启动一个线程非常方便,但是由于创建线程需要占用一定的操作系统资源,在高并发的情况下,
阅读全文
摘要:作者:EnjoyMoving链接:https://www.zhihu.com/question/53826114/answer/236363126来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 偏向所锁,轻量级锁都是乐观锁,重量级锁是悲观锁。 一个对象刚开始实例化的时
阅读全文
摘要:Java中的四种引用 Java中有四种引用类型:强引用、软引用、弱引用、虚引用。 Java为什么要设计这四种引用 Java的内存分配和内存回收,都不需要程序员负责,都是由伟大的JVM去负责,一个对象是否可以被回收,主要看是否有引用指向此对象,说的专业点,叫可达性分析。 Java设计这四种引用的主要目
阅读全文
摘要:今天主要通过多读单写的例子来说下读写锁的原理概念多读单写,简单说,就是对资源的访问分为两种状态,一种是读操作,另一种是写操作。由应用程序提示锁应该做哪种操作。当为读模式时,所有的写动作被悬挂,而读请求被允许通过,而写动作时,所有操作被悬挂。并且,读写切换时,有足够的状态等待,直到真正安全时,才会切换
阅读全文
摘要:由来和具体概念从JDK5开始,JSR-133使用 happens-before 来实现变量的内存可见性问题。在JMM中,如果一个操作执行的结果需要对另外一个操作可见,那么二者必定要存在 happens-before 关系。与开发人员密切相关的 happens-before 规则1、程序顺序规则:一个
阅读全文
摘要:今天无意中搜了一下Collections.reverse这个方法,结果发现有些人对它的误解蛮深的。下面是一个有百万访问量博主写的,reverse可以对指定列表进行降序排序,可是自己输出的结果都不是降序。这里写图片描述确实,使用Collections.reverse结合一定方法可以实现对list集合降
阅读全文
摘要:list与set方法的区别有:list可以允许重复对象和插入多个null值,而set不允许;list容器是有序的,而set容器是无序的等等
阅读全文
摘要:在工作中,经常会碰到CPU占用100%的情况,那如何找到是那个线程占用了cpu呢? 1. top命令,找到cpu占用最高的进程 2. 查看该进程的线程, top -p <pid> 3. ctrl+H 切换到线程模式,找到占用cpu最高的线程。并把线程号转化为十六进制,printf "%x\n" <线
阅读全文
摘要:1 static void test9() throws InterruptedException{ 2 Thread thread1=new Thread(()->{ 3 try { 4 System.out.println("111"); 5 Thread.sleep(1000); 6 }cat
阅读全文
摘要:顺序死锁:过度加锁,导致由于执行顺序的原因,互相持有对方正在等待的锁 资源死锁:多个线程在相同的资源上发生等待 由于调用顺序而产生的死锁 public class Test { Object leftLock = new Object(); Object rightLock = new Object
阅读全文

浙公网安备 33010602011771号