自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(8)
  • 收藏
  • 关注

原创 JMH探索

JMH探索一、JMH基本介绍 1.1 什么是JMH 1.2 JMH入门 二、JMH的基本概念和配置 2.1 例 2.2 基本标签介绍 2.3 控制台输出 2.4 常用模式(Mode) 2.5 迭代(Iteration) 2.6 预热(Warmup) 2.7 配置类(Options) 2.8 状态(State) 三、JMH注意事项 3.1 Dead-Code代码 3.2 黑洞 3.3 常量折叠 3.4 避免循环 3.5 分叉 四、可视化 JMH基本介绍什么是J

2021-10-07 18:42:05 240

原创 集合删除的陷阱

集合删除的陷阱一、基本原理二、删除的陷阱(一)  2.1 什么是结构性变化?如何解决  2.2 迭代器的原理三、删除的陷阱(二)基本原理说到集合,最典型的就属ArrayList了,这里来说说其原理。内部有一个数组elementData保存元素,一个整数size记录实际元素个数。private transient Object[] elementData;private int size;add方法如下:public boolean add(E e) { ensureC

2021-07-25 23:42:48 125

原创 当单例模式碰上序列化

当单例模式碰上序列化一、问题如下二、解决办法三、原理剖析  3.1 对象反序列化  3.2 枚举反序列化问题如下单例模式:public class MmSingleton implements Serializable { private MmSingleton() { if (INSTANCE != null) { //预防AccessibleObject.setAccessible通过反射机制调用私有构造器 t

2021-05-31 09:29:39 104

原创 IDEA中的并发调试

IDEA中的并发调试一、介绍二、进入非主线程的调试三、挂起整个虚拟机四、重现错误介绍    最近看葛一鸣了的"实战高并发程序设计"一书,里面有一章介绍了"并行程序调试",不过书中是基于Eclipse编辑器的,这里总结一下IDEA中的调试方法,大同小异。    实验样本如下:/** * 两个线程都过了数组大小检查,先后插入数据时 引起 java.lang.ArrayIndexOutOfBoundsException */public class UnsafeArrayList

2021-04-19 09:22:05 1815

原创 JDK动态代理使用及原理解析

JDK动态代理使用及原理解析一、动态代理的使用  1.1 动态代理简单示例  1.2 创建代理实例在代理类中  1.3 公用的代理类二、如何进入到代理类中的invoke的?  2.1 拿到$Proxy0这个类  2.2 $Proxy0的解析三、Proxy.newProxyInstance是如何生成一个代理对象然后返回的?一、动态代理的使用1.1 动态代理简单示例    动态代理类图如下:    主体和实际主体代码如下所示:/** * 主体 */public in

2021-03-29 09:15:11 206

原创 线程池探索之扩展篇

线程池探索之扩展篇一、线程工厂的使用二、拒绝策略的使用三、线程池中的线程数量四、线程池的扩展五、线程池的堆栈调试线程工厂的使用    我们先看看ThreadPoolExecutor类构造方法中,默认采用的线程工厂Executors.defaultThreadFactory(),其创建了默认的线程工厂,如下:public static ThreadFactory defaultThreadFactory() { return new DefaultThreadFactory()

2021-03-16 09:06:58 162

原创 线程池探索之基础篇

线程池探索之基础篇一、使用线程池的好处二、线程池的内部实现三、线程池的工厂类一、使用线程池的好处:    1)重用线程,避免系统频繁地创建和销毁线程    2)任务过多时,通过排队避免创建过多线程,减少系统资源的消耗阿里开发手册中规定:线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。二、线程池的内部实现:JDK中线程池的实现类是ThreadPoolExecutor,先来看看其最重要的构造方法:public ThreadPoolExecutor(int corePo

2021-03-07 22:06:25 67

原创 乱码产生的原因

乱码产生的原因一般有两种:    一种是解析错误;另一种是在错误解析的基础上加上了编码转换。(1)解析错误    比如一个GB2312编码的文件,使用UTF-8来打开,就会出现乱码。    这种情况下,只需要使用正确的编码方式即可解读。很多编辑器都有这个功能,如下图中的NotePad++:(2)错误的解析和编码转换    使用编辑器如何改变编码方式都不对时,很有可能是文本在错误解析的基础上,还进行了编码转换。如下例子:    发送方以GBK编码发送,而接收方以UTF-8解码时,

2021-02-28 21:15:01 9937

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除