记录真实开发问题、项目实践和两三句就能说明白的技术点
JMM(Java 内存模型)与 JVM 内存结构是两个易混淆的概念。本文讲清主内存与工作内存的抽象、并发三大特性(原子性/可见性/有序性),用代码演示 volatile 如何解决可见性与重排、为何不保证原子性,剖析双重检查锁单例必须加 volatile 的原因,对比 syn...
加了 @Transactional 却不生效,是 Spring 开发最常见的困惑。本文梳理 7 种传播行为(REQUIRED/REQUIRES_NEW/NESTED 等)、4 种隔离级别与脏读/不可重复读/幻读,并逐一拆解 9 大事务失效场景:非 public 方法、同类自...
线程池参数如何设置是 Java 面试与线上事故的高发点。本文详解 ThreadPoolExecutor 七大核心参数、先核心再队列后扩容的执行流程、四种拒绝策略、execute 与 submit 的区别、Executors 快捷方法的坑、CPU/IO 密集型线程数估算,以及...
HashMap 是 Java 面试必问的集合类。本文基于 JDK 1.8 源码,讲透数组+链表+红黑树结构、hash 扰动函数、put/get 全流程、高低位扩容迁移、为什么容量是 2 的幂、负载因子 0.75 与树化阈值 8 的设计依据,并对比 JDK 1.7 与 Con...
服务器变慢时如何快速定位瓶颈?按 CPU、内存、磁盘、网络四个维度整理 top/ps/free/vmstat/df/du/iostat/ss/netstat 等常用命令与排查思路。
前后端分离常遇 Access-Control-Allow-Origin 跨域报错。本文讲解同源策略与预检请求,给出 Spring Boot 全局 CORS 配置,并指出 credentials、自定义头、Spring Security 放行等坑点。
缓存穿透(查不存在数据)、击穿(热点 key 过期)、雪崩(大量 key 同时失效)是三类典型缓存故障。本文分别讲解成因与空值缓存、布隆过滤器、互斥锁、过期随机化等对策。
接口变慢多半是 SQL 没走索引。本文讲解如何开启慢查询日志定位慢 SQL,并用 EXPLAIN 分析 type/key/rows/Extra,给出联合索引、避免索引失效、延迟关联等优化手段。
用 @RestControllerAdvice + @ExceptionHandler 全局拦截异常,统一返回结构,避免每个接口手写 try-catch。本文给出统一返回体、全局处理器与常见异常分类处理示例。
Windows 下安装并部署 Redis 为服务:下载 Redis-x64 解压或 msi,redis-server 启动、redis-cli 连接,以及用 redis-server --service-install/start/stop/uninstall 注册为 Wi...
Spring Boot 打 war 包报 webxml attribute is required(或 pre-existing WEB-INF/web.xml) 的原因:maven-war-plugin 版本过低要求 web.xml。解决:配 failOnMissingW...
用 winget 更新安装 PowerShell 的步骤:检查当前版本($PSVersionTable.PSVersion)、winget search 查最新版、winget install 安装,并说明 5.1 与 7.x 可共存、需打开 pwsh.exe 使用新版。
Linux gz文件解压, Linux rar文件解压, Linux zip文件解压 tar.gz 压缩、tar.gz解压 语法: tar [主选项 + 辅选项] 文件或目录 示例: # 压缩文件 file1 和目录 dir2 到 test…
系统版本:centos7.3版本 java版本:1.8 一、准备工作 1、java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中。 2、下载tomcat包,下载地址:http://tomcat.apache.…
Linux安装配置java JDK 一键安装即可(yum安装); 手动安装,需要自己去Oracle官网下载需要的jdk版本,然后解压并配置环境,整个过程其实很简单。推荐手动安装 一、yum一键安装 这种办法简单粗暴,就像盖伦丢技能一样。废话…