Java
-
SpringBoot 优雅参数校验
1、前言 在平时的开发工作中,我们通常需要对接口进行参数格式验证。当参数个数较少(个数小于 3)时,可以使用if … else …手动进行参数验证。当参数个数大于 3 个时…
-
深入理解MySQL COUNT函数:避免常见陷阱与性能优化
写本篇文章的最初原因是因为一个线上事故,分页统计结果少了几 K 的数据,吓死个人。 COUNT 函数在 MySQL 中是一种非常重要的聚合函数,用于计算满足特定条件的行数。它可以用…
-
你真的了解 ArrayList 吗?(上)
ArrayList 概述 ArrayList 是 Java 开发中广泛使用的集合之一,它是List 接口的一种实现方式。它采用可变数组作为底层数据结构,允许存储…
-
你真的了解 ArrayList 吗?(下)
引言 书接上文,在你真的了解 ArrayList 吗?(上)中,我们对ArrayList 的成员变量和关键方法的源码进行了分析。今天我们继续通过分析源码来看下ArrayL…
-
农银一面:Filter、Interceptor、Spring AOP 的执行顺序
引言 在我们的日常开发工作中,Filter(过滤器)、Interceptor(拦截器)和 AOP(面向切面编程)是非常常用的 3 种请求处理技术。在不同的应用场景中,使用…
-
面试官:说下 LinkedList 的实现原理
前边我们通过源码分析的方式介绍了 ArrayList,相信大家对 ArrayList 的底层实现机制应该是有了一定的了解。那么,本篇我们再通过源码分析…
-
一次线上慢 SQL 调优分享
一周前,客户反馈做题页面经常卡顿,加载慢;我们监控比较少,所以根据直觉去 MySQL 慢查询日志一看,果然是一条慢 SQL。废话不多,开整!!! 业务背景 一个在线做题…
-
Java for 循环嵌套,你需要懂的代码性能优化技巧
前言 本篇分析的技巧点其实是比较常见的,但是最近的几次的代码评审还是发现有不少兄弟没注意到。 所以还是想拿出来说下。 正文 是个什么场景呢? 就是 for …
-
CPU 飙升原因及处理方案
CPU 飙升 900%,该怎么处理? 可惜的是,这个问题没有回答理想。 最终,导致网易之路,终止在二面,非常可惜。 首先,说明一下问题:CPU 飙升 200% 以上是生产容易发生的…
-
JMH – Java 微基准测试工具
JMH – Java 微基准测试工具 前言 “If you cannot measure it, you cannot improve it&#…
-
只会put、get?快来学Map这几个“新”方法
引子 Map 的数据操作,你是不是还只会put、get?Map 是我们日常编程中十分常用的数据接口,的在 JDK8 中,Map 引入了几个新方法,可以简化我们对 Map 中数据的操…
-
基于 @Transactional 的声明式事务原理剖析
面试中经常会被问到:“为什么 Spring 通过一个注解就可以实现事务管理呢?”,一般大家听到这个问题都会回答:因为 Spring 是通过 AOP 实现的。当再被追问道“那你能详细…
-
使用规则引擎改造任务系统
前言 笔者在去年接手了公司的活动中台,其中【任务】,是活动当中必不可缺的玩法之一。相信大家都在各种各样的互联网活动中体验过【任务】。比如: 打车软件去完成一笔订单可以给…
-
探究 map 为什么不能遍历的同时进行增删操作
前段时间,同事在代码中 KW 扫描的时候出现这样一条: 上面出现这样的原因是在使用 foreach 对 HashMap 进行遍历时,同时进行 put 赋值操作会有问题,异常 Con…
-
竟然还有人不知道 Java 的内省机制
“见贤思齐焉,见不贤而内自省也”。新的一年,我们从内省开始。 在传统儒家思想中,人们应在日常生活中不断反思自己的行为,向优秀的人学习,同时审视自身的不足之处,才能实现个人的成长与进…
-
使用 SpringAOP 对 IN 查询进行多线程拆分效率提升巨大
前言 这个功能是我 2021 年写的,效果不错,然后在新公司又改良了,经过实践很有用!我们在项目中经常遇到 IN 查询,同时 IN 的参数太多甚至大几百上千,会导致 PG 性能下降…