随笔分类 - Java
摘要: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
阅读全文
摘要:工欲善其事,必先利其器 简介 本篇整理两个排查问题的简单技巧,一个是java死锁排查,这个一般在面试的时会问到,如果没有写多线程的话,实际中遇到的机会不多;第二个是java cpu 100%排查,这个实际的开发中,线的应用出现这个问题可能性比较大,所以这里简单总结介绍一下,对自己学习知识的一个整理,
阅读全文
摘要:List<?>和List<Class<?>>区别及泛型相关 ?表示是任意类型,但是编译器不能确定他是什么类型,所以你add的时候什么参数也不能传给它Class<?>表示任意类型的Class对象,list里面可以添加任何类型的Class对象,其它的对象不能添加,也就是只能添加类似list.add(st
阅读全文
摘要:java通过反射的类扫描工具类,通过遍历类的字节码,找到目标文件,通过反射实例化,目标类,可以通过接口和注解两种方式进行扫描。 package com.csnt.scdp.bizmodules.modules.util; import java.io.File; import java.io.IOE
阅读全文
摘要:使用springboot的人基本都知道swagger,那么swagger是如何生成swagger-ui.html页面的呢?相信大家都能猜到,就是扫描程序中带有指定注解的类(带有@RestController和 @Controller)和方法(@RequestMapping等),然后又根据方法上的@A
阅读全文
摘要:package TestDaiLi; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; public class Main { pu
阅读全文
摘要:Maven项目中使用日志slf4j的步骤 1、在POM.XML中加入依赖(红色部分) <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <excl
阅读全文
摘要:package TestLogging; import java.util.logging.Level; import java.util.logging.Logger; public class Main { public static void main(String[] args) { Log
阅读全文