INDEX · JAVA原理
JAVA 原理
文章索引
Java 语法、类型、集合与运行时
01-语法基础
02-类型系统
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | Integer 包装类 | 装箱与拆箱 / Integer 缓存 |
| 02 | String 字符串 | 创建与常量池 / 不可变性的意义 |
| 03 | Optional 可选值 | 创建 / 读取与兜底 |
03-面向对象与泛型
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 接口、泛型与函数式接口 | 接口语法 / 泛型通配符:PECS |
04-集合框架
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 集合遍历方式 | Iterator / 增强 for |
05-并发编程
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | synchronized 内置锁 | 三种写法与锁对象 / 原子性与可见性保证 |
| 02 | volatile 关键字 | 可见性 / 有序性 |
| 03 | AtomicInteger 原子整数 | 基本操作 / CAS 思想 |
06-JVM与运行时
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 类加载机制 | 加载、连接、初始化的过程拆解 |
| 02 | Java 反射 | 获取 Class 对象 / 检查与调用成员 |
| 03 | Handler 概念辨析 | Android Handler / Java Logging Handler |
07-工程实践
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | Java 简洁代码实践 | 覆盖当前控制台行 / 条件中赋值 |
JVM
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | JVM概述 | 字节码与 JIT / 可达性分析与四种引用 / class 文件结构 / arthas |
案例篇
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 1.内存泄漏/内存溢出 | 泄漏与溢出的分辨 / top、VisualVM、arthas、Prometheus 排查链 |
基础篇
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 3.垃圾回收算法 | 评价三标准 / 标记清除、复制、整理的取舍 / 分代 GC |
| 02 | 3.类的生命周期 | 加载到卸载五阶段 / 验证准备解析各干什么 / InstanceKlass |
| 03 | 4.垃圾回收器 | Serial、ParNew、CMS 的组合搭配 / 吞吐量与停顿时间取舍 |
| 04 | 4.类加载器 | Bootstrap、Extension、App 三层 / 双亲委派的动机与实现 |
| 05 | 6.运行时数据区-程序计数器 | 程序计数器的职责:记录下一条字节码指令地址 |
| 06 | 7.栈 | 栈帧:slot 复用 / 动态链接 / 方法出口与异常表 / Xss 设置 |
| 07 | 8.方法区 | 类元信息与运行时常量池 / 符号引用转直接引用的时机 |
| 08 | JVM 基础篇拾遗 | 方法区回收条件 / 堆与直接内存 / 图解补遗 |
| 09 | ShouldKnow | InstanceKlass 与 Class / JDBC 上下文类加载器打破双亲委派 |
JUC
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | AbstractQueuedSynchronizer (AQS) 概览 | state 队列骨架速览 / 核心方法 / 典型应用与注意事项 |
| 02 | fork join example | 分治框架与数组求和示例 / 适用场景与技巧 |
| 03 | lightweight lock explained | 低竞争下用户态完成加锁解锁 / 避免内核阻塞唤醒的设计 |
| 04 | tomcat threadpool detail | 以 Tomcat 为案例看线程池 / Connector 与请求分配 |
1. 多线程基础
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 1.进程与线程 | 进程线程分辨 / 并发与并行 / 同步与异步 |
| 02 | 2.创建线程的方法 | Thread、Runnable、FutureTask 三种方式 / target 字段的真相 |
| 03 | 3.关于线程的常见方法 | start 与 run / sleep 与 yield / join 限时等待 |
| 04 | 4.设计模式 | 两阶段终止优雅停线程 / interrupt 标志位 / 守护线程 |
| 05 | 5.线程状态 | OS 五态与 Java 六态对照 / 各状态的进入条件 |
| 06 | 6.小结 | 多线程基础一章的思维导图小结 |
2. 并发之共享模型
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 1. 不同线程读共享资源 | 临界区与竞态条件 / synchronized 保原子性 / 双锁错误示范 |
| 02 | 2. 局部变量线程安全分析 | 线程安全三条路:不共享、不可变、同步 / 局部变量为何安全 |
| 03 | 3. synchronized原理 | 对象头与 Monitor 结构 / Owner、EntryList、WaitSet 分工 |
| 04 | 4. Wait-notify | wait 释放锁而 sleep 不释放 / notifyAll 加 while 防虚假唤醒 |
| 05 | 5.park/unpark | park 暂停 unpark 恢复 / 先 unpark 不丢信号 / 对比 wait |
| 06 | 6.活跃度与ReentrantLock | 可重入 / 可打断 / 锁超时 tryLock / 公平锁 / 条件变量 |
| 07 | 模式 | 保护性暂停与生产者消费者 / join 原理 / 线程顺序控制 |
3. JMM
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 1.可见性 & Volatile | 工作内存导致的不可见 / volatile 保可见不保原子 / println 假象 |
4. 无锁并发
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 1. Cas & volatile | CAS 三操作数与原子指令 / 乐观锁思路 / 有锁无锁对比 |
| 02 | 2.原子类 | 原子整数、引用、数组一族 / 基于 CAS 的工具全景 |
| 03 | 3. LongAdder源码 | base 快路径与 Cell 分散 / longAccumulate 分支拆解 |
| 04 | 4. Unsafe对象 | 直接操作内存的后门 / 反射获取 / 手写 CAS 操作 |
| 05 | 总结 | 无锁并发一章的思维导图小结 |
5.不可变类
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 2. 数据库连接池 | 手写连接池:CAS 抢占连接 / wait notify 等待空闲 |
| 02 | 3.final原理 | 写屏障保证构造期安全发布 / final 变量与指令重排 |
| 03 | JUC 不可变类拾遗 | 常见不可变类清单与零散补遗 |
8.1 线程池
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 2.ThreadPoolExecutor | 线程池状态 / 七参构造方法 / 拒绝策略 |
| 02 | 3.常用线程池 及其API | Fixed、Cached、Single 三种预设 / execute 与 submit |
| 03 | 4.异步模式 | 线程池分工与饥饿问题 / CPU 密集与 IO 密集的线程数分配 |
| 04 | 6.tomcat线程池 | Connector 与 Executor 配置 / 队列工作流程 |
| 05 | 7.forkjoin | 分治任务的概念与使用示例 |
| 06 | JUC 线程池拾遗 | 自定义线程池 / 任务调度线程池 / 零散补遗 |
8.2 J.U.C 原理
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 1.AQS | state 加等待队列的骨架 / 模板方法 / 手写 MySync 最小锁 |
| 02 | 2.ReentrantLock原理 | state 计数实现重入 / 可打断与不可打断 / 公平非公平 |
| 03 | 3.ReentrantReadWriteLock | 读共享写互斥 / 只能降级不能升级 / 读锁不支持条件变量 |
| 04 | 4.StampedLock | 读写锁增强版 / 乐观读的工作机制 |
| 05 | 5.SemaPhore-信号量 | 许可数控并发 / 用法与原理 |
| 06 | 6. CountDownLatch-倒计时锁 | 等多个线程完工再汇总 / 比 join 好在哪 / 不能重置的坑 |
| 07 | 7. CycliBarrier | 可重用的计数栅栏 / 与 CountDownLatch 的差别 |
| 08 | 8.线程安全集合类 | 三代方案:synchronized 容器、Collections 装饰、JUC 家族 |
| 09 | 9.concurrnetHashMap原理 | JDK7 头插法扩容成环的现场还原 |
| 10 | JUC J.U.C 原理拾遗 | 原理章零散条目补遗 |
9.mysum
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 死锁 | 四个必要条件 / 顺序加锁、限时等待、CAS 三种解法 |
JavaWeb
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | JavaWeb | 请求链路 / 分层职责 |
后端案例
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | 1. JavaWeb 项目准备 | REST 接口约定 / 为什么使用 Apifox |
| 02 | 2. 部门管理 | 接口清单 / Controller |
| 03 | 3. Java 日志技术 | 常见体系 / 快速使用 |
| 04 | 4. 多表关系与多表查询 | 三类关系 / 笛卡尔积 |
| 05 | 5. 员工管理 | 分页契约 / 查询参数对象 |
| 06 | 6. Spring 事务管理 | ACID / @Transactional |
| 07 | 8. 批量删除员工 | 接口 / Service 事务 |
| 08 | 9. 修改员工 | 查询回显 / 提交修改 |
| 09 | 10. 全局异常处理 | 定义处理器 / 匹配顺序 |
| 10 | 11. 员工信息统计 | 职位统计 / 性别统计 |
| 11 | 12. 学员管理、登录与认证链路 | 参数绑定 / 班级与班主任回显 |
| 12 | JavaWeb 常见错误与排查清单 | Spring MVC 与分层 / 参数来源 |
后端高级
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | Spring AOP | 核心概念 / 通知类型 |
| 02 | Maven 多模块、继承、聚合与私服 | 模块拆分 / 继承 |
| 03 | Spring Boot 原理 | 配置来源与优先级 / Bean 与 IoC 容器 |
后端基础
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | JDBC 数据库连接池 | 为什么不能每次新建连接 / DataSource 标准接口 |
| 02 | JDBC 核心 API | DriverManager / Connection |
| 03 | JDBC 简介与快速入门 | 为什么需要 JDBC / 七个基本步骤 |
| 04 | Maven 项目构建与依赖基础 | Maven 解决的问题 / 依赖坐标 |
| 05 | MyBatis 持久层基础 | Spring Boot 快速接入 / MyBatis 与 JDBC |
| 06 | Spring Boot 配置文件 | YAML 语法 / properties 对照 |
| 07 | Web 开发与 Spring Boot 请求链路 | Web 服务器与 Tomcat / Spring Boot 最小接口 |
前端基础
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | Ajax 与 Axios 异步请求 | 同步与异步 / Axios 基本用法 |
| 02 | HTML 与 CSS 基础 | HTML 文档骨架 / 文本、链接与媒体 |
| 03 | JavaScript 浏览器编程基础 | 引入方式与输出 / 变量、类型与命名 |
| 04 | Vue 2 数据驱动页面基础 | 最小示例 / 常用指令 |
总结
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | JavaWeb 阶段复习总图 | 主链路 / 横切能力 |
Java 集合、JMM 与代码实践
| 序号 | 文章 | 内容 |
|---|---|---|
| 01 | Java 去样板代码 Cheatsheet | record 干掉 DTO 样板 / var 降噪 / 现代写法清单 |
| 02 | 知识盲区 | CAP 定理:一致性、可用性、分区容忍与 AP、CP 取舍 |
| 03 | Java 集合关系图 | 一眼看懂集合关系 / 接口关系速查 |
| 04 | JMM | Java 全栈思维导图:JUC、集合、IO、Spring、MyBatis 一图流 |