跳过正文

博客

Redis 分布式锁笔记

Redis 分布式锁踩坑记 分布式锁这个东西,面试必问,实际开发也经常用。我做课程项目的时候在这上面栽了好几个跟头,今天把踩过的坑总结一下。 最简单的实现:SETNX 分布式锁的核心思路很简单:大家抢同一个 key,谁抢到谁执行。

Continue reading

MyBatis SQL 执行流程

MyBatis 一条 SQL 的执行之旅 从 Mapper 接口说起 用 MyBatis 写代码,日常就是定义一个 Mapper 接口,写个 XML 或注解,然后调用方法就完事了。但你有没有想过,你调 userMapper.selectById(1) 的时候,MyBatis 背后到底干了啥?

Continue reading

Redis 五种数据结构

Redis 五种数据结构,各有各的妙用 Redis 谁都用过吧?但我发现很多人(包括之前的我)用 Redis 就只会 SET 和 GET,把它当个 key-value 缓存使。其实 Redis 有五种基本数据结构,每种都有自己的应用场景,选对了效率翻倍,选错了可能还不如不用。 String——最简 …

Continue reading

Java Stream API 使用笔记

Stream API 用起来真香,但别乱用 自从学了 Stream API,写 Java 的风格变了不少。以前过滤加转换要写十几行 for 循环,现在一行链式搞定,确实香。 但用了一段时间也踩了不少坑,特别是并行流和性能方面,今天来聊聊。 基本操作过一遍 Stream 操作分两种:中间操作(返回 …

Continue reading

Java 反射机制与性能

反射慢?慢多少你测过吗 “反射很慢,尽量别用。“这话你肯定听过。但到底慢多少?慢在哪?大部分人说不清楚,我之前也说不清楚,干脆自己测了一下。 怎么获取 Class 对象 反射的入口是 Class 对象,三种方式:

Continue reading

Spring Boot 自动配置原理

Spring Boot 自动配置,看完你就不慌了 用 Spring Boot 写项目的时候,你有没有想过:我就加了个 spring-boot-starter-web 依赖,Tomcat 怎么就自己跑起来了?数据源我就配了个 URL,连接池怎么就自动用上 HikariCP 了? 这背后全是自动配置在 …

Continue reading

Java 泛型常见问题

Java 泛型这几个坑你肯定踩过 Java 泛型这东西,看着简单用着顺手,直到踩坑才发现自己根本没搞懂。上周写作业一个泛型编译错误折腾了我一个多小时,气得把泛型重新学了一遍。 类型擦除到底擦了啥 Java 的泛型是假泛型。编译之后泛型信息就没了,全变成 Object(或上界类型),这叫类型擦除。

Continue reading

Spring AOP 原理

AOP 这东西,说难不难说简单不简单 AOP,面向切面编程。第一次听到这个词的时候我满脸问号——什么切面?切什么? 后来我换了个理解方式就通了:你有一堆业务方法,想在每个方法执行前后都打个日志,怎么办?一个个方法里加 log.info()?那要是有 200 个方法呢?改到吐。AOP 就是帮你把这种 …

Continue reading