自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

程序员小潘

专注于Java后端技术分享!

  • 博客(3)
  • 资源 (1)
  • 收藏
  • 关注

原创 用了好几年的MyBatis还不知道其原理?来,带你手写MyBatis!

MyBatis是一款优秀的持久层框架,相信很多Java开发者都使用过它来操作数据库。如下代码是一个最简单的例子:编写一个接口,定义一个保存方法,写好需要执行的sql语句,MyBatis就能帮我们把数据保存到数据库。使用非常的简单,但是大家有没有想过这样一个问题:我们只写了接口,并没有实现类,MyBatis如何实现其中的逻辑呢?理解一个框架原理最好的方法,就是自己去实现一下。实现思路基本如下:执行sql?使用JDBC。只有接口没有实现类?JDK动态代理生成代理对象。依赖注入?扫描Mapp

2020-08-14 21:22:10 11546

原创 DCL单例需要加volatile关键字吗?

目录什么是DCL单例?对象初始化的过程解析Java代码的反汇编指令CPU指令重排序volatile关键字的语义最终结论什么是DCL单例?实现单例模式的方式有很多种,如:饿汉式、懒汉式、枚举等。DCL(Double Check Lock)双重检查加锁,就是懒汉式的一种实现方式,代码实现如下:开启多线程去获取对象,确实T的实例在堆中只会存在一个,单例是可行的,测试代码如下:DCL的方式确实可以实现单例,但它是有缺陷的:线程获取到的对象可能未被初始化。对象初始化的过程Person person

2020-08-09 21:39:51 3797 2

原创 使用大数组对JVM的影响

目录1、难以分配内存2、大对象直接分配在老年代3、容易触发Full GC1、难以分配内存数组可以通过下标快速访问元素,是因为它的内存地址是连续的。绝大多数JVM管理内存的方式,并不是指针碰撞,而是空闲列表。这就意味着,堆中可用内存空间相对比较分散,存在大量内存碎片,JVM要为大数组分配一块连续的内存空间是比较困难的。借用网友的两张图说明。2、大对象直接分配在老年代数组也是对象,且数组越大,对象占用的空间越大。如果大对象直接分配在新生代,首先会导致JVM为其他小对象难以分配内存,过早的

2020-08-04 19:56:59 3608

HashMap.java

JDK7的HashMap源码阅读,几乎给每个方法和属性都加上了中文注释。 可以帮助大家更好的阅读源码,可能有理解不对的地方,望指正。

2019-12-27

空空如也

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

TA关注的人

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