MyBatis 批量插入數據的 3 種方法!

  • 2021 年 10 月 8 日
  • 筆記

批量插入功能是我们日常工作中比较常见的业务功能之一,之前我也写过一篇关于《 MyBatis Plus 批量数据插入功能,yyds! 》的文章,但评论区的反馈不是很好,主要有两个问题:第一,对 MyBatis Plus(下文简称 MP)的批量插入功能很多人都有误解,认为 MP 也是使用循环单次插入数据 …

Continue Reading

死鎖終結者:順序鎖和輪詢鎖!

  • 2021 年 8 月 28 日
  • 筆記

死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。 死锁示例代码如下: public class DeadLockExample { public static void main(String[] …

Continue Reading

SpringBoot中時間格式化的5種方法!

  • 2021 年 8 月 16 日
  • 筆記

在我们日常工作中,时间格式化是一件经常遇到的事儿,所以本文我们就来盘点一下 Spring Boot 中时间格式化的几种方法。 ​ 时间问题演示 为了方便演示,我写了一个简单 Spring Boot 项目,其中数据库中包含了一张 userinfo 表,它的组成结构和数据信息如下: 项目目录是这样的: …

Continue Reading

ReentrantLock 中的 4 個坑!

  • 2021 年 8 月 13 日
  • 筆記

JDK 1.5 之前 synchronized 的性能是比较低的,但在 JDK 1.5 中,官方推出一个重量级功能 Lock,一举改变了 Java 中锁的格局。JDK 1.5 之前当我们谈到锁时,只能使用内置锁 synchronized,但如今我们锁的实现又多了一种显式锁 Lock。 前面的文章我们 …

Continue Reading

synchronized 優化手段之鎖膨脹機制!

synchronized 在 JDK 1.5 之前性能是比较低的,在那时我们通常会选择使用 Lock 来替代 synchronized。然而这个情况在 JDK 1.6 时就发生了改变,JDK 1.6 中对 synchronized 进行了各种优化,性能也得到了大幅的提升,这也是目前版本中还能经常见到 …

Continue Reading

synchronized 加鎖 this 和 class 的區別!

synchronized 是 Java 语言中处理并发问题的一种常用手段,它也被我们亲切的称之为“Java 内置锁”,由此可见其地位之高。然而 synchronized 却有着多种用法,当它修饰不同对象时,其意义也是不同的,下面我们一起来看。 ​ synchronized 用法 synchroniz …

Continue Reading

ThreadLocal記憶體溢出程式碼演示和原因分析!

  • 2021 年 5 月 26 日
  • 筆記

ThreadLocal 翻译成中文是线程本地变量的意思,也就是说它是线程中的私有变量,每个线程只能操作自己的私有变量,所以不会造成线程不安全的问题。 ​ 线程不安全是指,多个线程在同一时刻对同一个全局变量做写操作时(读操作不会涉及线程不安全问题),如果执行的结果和我们预期的结果不一致就称之为线程不安 …

Continue Reading

ThreadLocal不好用?那是你沒用對!

  • 2021 年 5 月 13 日
  • 筆記

在 Java 中,如果要问哪个类使用简单,但用好最不简单?我想你的脑海中一定会浮现出一次词——“ThreadLocal”。 ​ 确实如此, ThreadLocal 原本设计是为了解决并发时,线程共享变量的问题,但由于过度设计,如弱引用和哈希碰撞,从而导致它的理解难度大和使用成本高等问题。当然,如果稍 …

Continue Reading

額!Java中用戶執行緒和守護執行緒區別這麼大?

在 Java 语言中线程分为两类:用户线程和守护线程,而二者之间的区别却鲜有人知,所以本文磊哥带你来看二者之间的区别,以及守护线程需要注意的一些事项。 1.默认用户线程 Java 语言中无论是线程还是线程池,默认都是用户线程 ,因此用户线程也被成为普通线程。 以线程为例,想要查看线程是否为守护线程只 …

Continue Reading