Fork me on GitHub
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 35 下一页
摘要: 在日常的业务开发中,偶尔会遇到需要将 List 集合中的重复数据去除掉的场景。这个时候可能有同学会问:为什么不直接使用 Set 或者 LinkedHashSet 呢?这样不就没有重复数据的问题了嘛? ​ 不得不说,能提这个问题的同学很机智,一眼就看到了问题的本质。 ​ 但是,在实际的业务开发中遇到的 阅读全文
posted @ 2021-12-06 21:23 磊哥|www.javacn.site 阅读(2110) 评论(0) 推荐(3)
摘要: 重要说明:本篇为博主《面试题精选-基础篇》系列中的一篇,关注我,查看更多面试题。Gitee 面试题系列开源地址:https://gitee.com/mydb/interview 本题目难度:低 常见程度:高 equals 方法和 hashCode 方法是 Object 类中的两个基础方法,它们共同协 阅读全文
posted @ 2021-12-03 08:10 磊哥|www.javacn.site 阅读(1317) 评论(0) 推荐(0)
摘要: 重要说明:本篇为博主《面试题精选-基础篇》系列中的一篇,查看系列面试文章请关注我。 Gitee 开源地址:https://gitee.com/mydb/interview Java 是一种强数据类型的语言,因此所有的属性必须有一个数据类型。就像麦德龙超市一样,想要进去购物,先要有一个会员卡才行(刷卡 阅读全文
posted @ 2021-11-29 22:28 磊哥|www.javacn.site 阅读(1211) 评论(0) 推荐(0)
摘要: 重要说明:本篇为博主《面试题精选-基础篇》系列中的一篇,查看系列面试文章请关注我。 Gitee 开源地址:https://gitee.com/mydb/interview final 定义 final 翻译成中文是“最终”的意思,它是 Java 中一个常见关键字,使用 final 修饰的对象不允许修 阅读全文
posted @ 2021-11-29 22:27 磊哥|www.javacn.site 阅读(346) 评论(0) 推荐(0)
摘要: 重要说明:本篇为博主《面试题精选-基础篇》系列中的一篇,查看系列面试文章请关注我。 Gitee 开源地址:https://gitee.com/mydb/interview 本题目难度:低 常见程度:高 1.final 介绍 final 是 Java 语言中的一个关键字,使用 final 修饰的对象不 阅读全文
posted @ 2021-11-29 22:03 磊哥|www.javacn.site 阅读(1043) 评论(0) 推荐(0)
摘要: 干掉 where 1=1,更加简洁和优雅的 SQL 拼接方法,你值得拥有。 阅读全文
posted @ 2021-11-14 21:20 磊哥|www.javacn.site 阅读(2301) 评论(7) 推荐(3)
摘要: 最近公司新来了一个小伙伴,问了磊哥一个比较“奇怪”的问题,这个问题本身的难度并不大,但比较“隐蔽”,那究竟是什么问题呢?接下来我们一起来看。 ​ 起因 最近公司的系统要增加一个新的列表展示功能,功能本身难度并不大,但遇到了一个很“可怪”的问题。小伙伴在执行查询列表时,明明已经使用了 order by 阅读全文
posted @ 2021-11-04 20:59 磊哥|www.javacn.site 阅读(602) 评论(3) 推荐(0)
摘要: 前些天在实现 MyBatis 批量插入时遇到了一个问题,当批量插入的数据量比较大时,会导致程序执行报错,如下图所示: 原因是 MySQL 只能执行一定长度的 SQL 语句,但当插入的数据量较多时,会生成一条很长的 SQL,这样程序在执行时就会报错。 ​ 要解决这个问题,有两种方法:第一,设置 MyS 阅读全文
posted @ 2021-11-01 21:12 磊哥|www.javacn.site 阅读(2036) 评论(1) 推荐(0)
摘要: 前面的文章咱们讲了 MyBatis 批量插入的 3 种方法:循环单次插入、MyBatis Plus 批量插入、MyBatis 原生批量插入,详情请点击《MyBatis 批量插入数据的 3 种方法!》。 ​ 但之前的文章也有不完美之处,原因在于:使用 「循环单次插入」的性能太低,使用「MyBatis 阅读全文
posted @ 2021-10-18 21:39 磊哥|www.javacn.site 阅读(1399) 评论(1) 推荐(0)
摘要: 今天磊哥去公司上班,惊喜的发现 Windows 提示更新了,并且是 Windows 11 正式版,这太让人开心了,二话不说“先升为敬”。 ​ 下载更新 下载完咱就重启更新呗。 Windows 11 初体验 更新按照的时间有点长,大概 10 分钟左右,我是直接从 Windows 10 升级到 Wind 阅读全文
posted @ 2021-10-11 21:16 磊哥|www.javacn.site 阅读(1998) 评论(8) 推荐(3)
摘要: 批量插入功能是我们日常工作中比较常见的业务功能之一,之前我也写过一篇关于《MyBatis Plus 批量数据插入功能,yyds!》的文章,但评论区的反馈不是很好,主要有两个问题:第一,对 MyBatis Plus(下文简称 MP)的批量插入功能很多人都有误解,认为 MP 也是使用循环单次插入数据的, 阅读全文
posted @ 2021-10-08 21:48 磊哥|www.javacn.site 阅读(6865) 评论(0) 推荐(5)
摘要: 最近 Review 小伙伴代码的时候,发现了一个小小的问题,小伙伴竟然在 for 循环中进行了 insert (插入)数据库的操作,这就会导致每次循环时都会进行连接、插入、断开连接的操作,从而导致一定的性能问题,简化后代码如下: /** * 插入操作 */ @RequestMapping("/sav 阅读全文
posted @ 2021-09-26 19:53 磊哥|www.javacn.site 阅读(14582) 评论(0) 推荐(3)
摘要: 在 Java 中有两种锁,一种是内置锁 synchronized,一种是显示锁 Lock,其中 Lock 锁是可中断锁,而 synchronized 则为不可中断锁。 ​ 所谓的中断锁指的是锁在执行时可被中断,也就是在执行时可以接收 interrupt 的通知,从而中断锁执行。 ​ PS:默认情况下 阅读全文
posted @ 2021-09-10 08:33 磊哥|www.javacn.site 阅读(1655) 评论(1) 推荐(2)
摘要: 死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。 1.死锁演示 死锁的形成分为两个方面,一个是使用内置锁 synchronized 形成的死锁,另一种是使用显式锁 Lock 实现的死锁,接下来我们分 阅读全文
posted @ 2021-09-06 09:03 磊哥|www.javacn.site 阅读(1119) 评论(1) 推荐(1)
摘要: 当我们遇到死锁之后,除了可以手动重启程序解决之外,还可以考虑是使用顺序锁和轮询锁,这部分的内容可以参考我的上一篇文章,这里就不再赘述了。然而,轮询锁在使用的过程中,如果使用不当会带来新的严重问题,所以本篇我们就来了解一下这些问题,以及相应的解决方案。 问题演示 当我们没有使用轮询锁之前,可能会出现这 阅读全文
posted @ 2021-08-31 09:00 磊哥|www.javacn.site 阅读(472) 评论(0) 推荐(3)
摘要: 死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。 死锁示例代码如下: public class DeadLockExample { public static void main(String[] 阅读全文
posted @ 2021-08-28 09:55 磊哥|www.javacn.site 阅读(936) 评论(0) 推荐(0)
摘要: 死锁(Dead Lock)指的是两个或两个以上的运算单元(进程、线程或协程),都在等待对方停止执行,以取得系统资源,但是没有一方提前退出,就称为死锁。 死锁示例 接下来,我们先来演示一下 Java 中最简单的死锁,我们创建两个锁和两个线程,让线程 1 先拥有锁 A,然后在 1s 后尝试获取锁 B,同 阅读全文
posted @ 2021-08-24 08:47 磊哥|www.javacn.site 阅读(1504) 评论(2) 推荐(0)
摘要: 在 Java 中 synchronized 和 ReentrantLock 默认使用的都是非公平锁,而它们采用非公平锁的原因都是一致的,都是为了提升程序的性能。那为什么非公平锁就能提升性能呢?接下来我们一起来看。 非公平锁 非公平锁:每个线程获取锁的顺序是随机的,并不会遵循先来先得的规则,任何线程在 阅读全文
posted @ 2021-08-20 09:28 磊哥|www.javacn.site 阅读(342) 评论(0) 推荐(0)
摘要: JDK 1.5 之前 synchronized 的性能是比较低的,但在 JDK 1.5 中,官方推出一个重量级功能 Lock,一举改变了 Java 中锁的格局。JDK 1.5 之前当我们谈到锁时,只能使用内置锁 synchronized,但如今我们锁的实现又多了一种显式锁 Lock。 前面的文章我们 阅读全文
posted @ 2021-08-13 21:38 磊哥|www.javacn.site 阅读(1820) 评论(0) 推荐(1)
摘要: synchronized 在 JDK 1.5 时性能是比较低的,然而在后续的版本中经过各种优化迭代,它的性能也得到了前所未有的提升,上一篇中我们谈到了锁膨胀对 synchronized 性能的提升,然而它也只是“众多” synchronized 性能优化方案中的一种,那么我们本文就来盘点一下 syn 阅读全文
posted @ 2021-08-09 22:54 磊哥|www.javacn.site 阅读(1849) 评论(0) 推荐(1)
摘要: synchronized 在 JDK 1.5 之前性能是比较低的,在那时我们通常会选择使用 Lock 来替代 synchronized。然而这个情况在 JDK 1.6 时就发生了改变,JDK 1.6 中对 synchronized 进行了各种优化,性能也得到了大幅的提升,这也是目前版本中还能经常见到 阅读全文
posted @ 2021-08-03 09:15 磊哥|www.javacn.site 阅读(850) 评论(1) 推荐(2)
摘要: synchronized 是 Java 语言中处理并发问题的一种常用手段,它也被我们亲切的称之为“Java 内置锁”,由此可见其地位之高。然而 synchronized 却有着多种用法,当它修饰不同对象时,其意义也是不同的,下面我们一起来看。 ​ synchronized 用法 synchroniz 阅读全文
posted @ 2021-08-02 13:18 磊哥|www.javacn.site 阅读(979) 评论(1) 推荐(3)
摘要: 在我们日常工作中,时间格式化是一件经常遇到的事儿,所以本文我们就来盘点一下 Spring Boot 中时间格式化的几种方法。 ​ 时间问题演示 为了方便演示,我写了一个简单 Spring Boot 项目,其中数据库中包含了一张 userinfo 表,它的组成结构和数据信息如下: 项目目录是这样的: 阅读全文
posted @ 2021-07-26 14:12 磊哥|www.javacn.site 阅读(4107) 评论(2) 推荐(4)
摘要: 上图的报错信息相信大部分程序员都遇到过,奇怪的是虽然代码报错,但丝毫不影响程序的正常执行,也就是虽然编译器 IDEA 报错,但程序却能正常的执行,那这其中的原因又是为何? ​ 报错原因分析 报错的原因首先是因为 IDEA 强大的报警机制,@Autowired 为 Spring 的注解,含义是将某类动 阅读全文
posted @ 2021-07-05 08:29 磊哥|www.javacn.site 阅读(1930) 评论(0) 推荐(2)
摘要: 在 Java 中,生成随机数的场景有很多,所以本文我们就来盘点一下 4 种生成随机数的方式,以及它们之间的区别和每种生成方式所对应的场景。 阅读全文
posted @ 2021-06-15 08:53 磊哥|www.javacn.site 阅读(12533) 评论(1) 推荐(1)
上一页 1 ··· 14 15 16 17 18 19 20 21 22 ··· 35 下一页