# java_cs_record **Repository Path**: daxuesi/java_cs_record ## Basic Information - **Project Name**: java_cs_record - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-25 - **Last Updated**: 2024-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Java-CS-Record 这是一个**频繁更新**的项目,沉下心来一步一步打好技术基础,争取知其所以然。 文章说明 * 这个仓库的文章,都是**关于计算机基础,还有 Java 后台相关原理源码,几乎不涉及怎么调用 api**。 * 每次会把一个技术点整理完才进行更新,很多技术体系太庞大,比如某些框架源码,我会只挑选关键部分整理。 CSDN 博客同步更新,现放到 Github 有如下原因 * 博客是平铺式结构,无法按照目录式结构保存,并且博客内容较杂,这里只存放相关的内容。 * 也为了更好帮助想要使用或者进行改动的同学,所以把所有 markdown 文稿也在这里开源。 最后,**欢迎 star 该项目,也欢迎使用、修改、与提出意见**,希望多多支持!

目录

# 基础 ## 1、Java 核心 ### 常见特性源码 类型相关 * 基本类型及包装类源码解析 * String 套餐及编译后实现 * Object 类与相关实现 * 异常设计原则与继承体系 * final 套餐及常见问题 * 序列化原理及技术实现 特性相关 * 反射相关问题与源码解析 * 注解底层源码解析 * Stream 执行流程源码解析 * Stream 并行流源码解析 * 函数式编程与 Lamda 底层 * SPI 机制源码解析 ### Java 集合源码 list * ArrayList 源码解析 * LinkedList 源码解析 map * HashMap 核心方法源码详解 * HashMap 次要方法源码详解 * HashMap 知识扩充 * LinkedHashMap 源码解析 * TreeMap 核心方法源码详解 * TreeMap 次要方法源码详解 * TreeMap 中子Map源码详解 * HashTable 源码解析 set * HashSet 源码解析 * TreeSet 源码解析 ### Java 并发源码 基础 * 基础知识与概念 底层 * JMM 全解 * Sychnorized 底层详解 JUC * CAS 与原子类源码解析 * ThreadLocal 源码解析 * Fork-Join 框架源码解析 * AQS * AQS 源码详解 * AQS 之 Condition 源码解析 * AQS 之 ReentrantLock 源码解析 * AQS 之 ReentrantReadWriteLock 源码详解 * 并发工具 * Semaphore 源码解析 * CountDownLatch 源码解析 * CyclicBarrier 源码解析 * Exchanger 源码解析 * 并发容器 * CopyOnWriteArrayList 源码解析 * ConcurrentLinkedQueue源码解析 * ConcurrentHashMap 源码详解 * JDK 1.7 Concurrenthashmap 源码对比 * 阻塞队列 * ArrayBlockingQueue 源码解析 * LinkedBlockingDeque 源码解析 * PriorityBlockingQueue 源码解析 * DelayQueue 源码解析 * SynchronousQueue 源码解析 * LinkedTransferQueue 源码解析 * 线程池 * Executor体系 * ThreadPoolExecutor 源码详解 * ScheduledThreadPoolExecutor 源码解析 ### Java 虚拟机 内存管理 * 1、运行时数据区域详解 * 2、对象详解 * 3、垃圾回收判定与算法 * 4、HotSpot回收算法细节 * 5、经典垃圾回收器 * 6、Region 内存布局回收器 G1 * 7、低延迟回收器 Shenandoah * 8、低延迟回收器 ZGC * 9、无操作回收器 Epsilon * 10、回收器常用参数 * 11、故障处理工具与六种 OOM 执行子系统 * 1、类加载时机 * 2、类加载过程 * 3、类加载器详解(JDK9+) * 4、方法执行指令详解 编译与优化 * 1、前端编译与语法糖 * 2、后端编译优化 ## 2、数据库 ### Redis 底层实现 数据结构与对象 * 1、SDS、整数集合、压缩列表 * 2、双端链表、字典、跳表 * 3、RedisObject 实现 * 4、五种基本类型对象实现 核心实现 * 1、事件驱动模型实现 * 2、RedisServer 实现 * 3、初始化服务器 * 4、RedisClient 实现 * 5、RedisDB 实现 * 6、过期键处理 持久化实现 * 1、RDB 实现 * 2、AOF 实现 多机实现 * 1、主从复制实现 * 2、主从复制步骤 * 3、哨兵 Sentinel 实现 * 4、Sentinel 自动故障转移 * 5、集群实现 * 6、集群 MOVED 错误与 ASK 错误 * 7、集群内部消息 功能实现 * 通知功能实现 * 发布订阅实现 * 慢查询日志实现 * 监视器实现 * 事务功能实现 ### 数据库原理 总体概述 关系模型 * 1、结构与模型 * 2、关系模型 * 3、关系代数 * 4、关系演算 标准 SQL * 1、基本SQL语言 * 2、复杂查询与视图 * 3、完整性和安全性 * 4、嵌入式SQL 建模设计 * 1、数据库E-R模型 * 2、IDEF1x工程化方法 * 3、关系函数依赖 * 4、五大关系范式 * 5、关系模式分解 实现技术 * 1、存储体系与组织 * 2、索引存储及分类 * 3、B+树索引结构 * 4、散列索引结构 * 5、关系查询实现 * 6、两趟扫描算法 * 7、内部查询优化 * 8、事务调度与封锁 * 9、基于回滚事务调度 * 10、故障恢复实现 ## 3、计算机 ### 计算机组成原理 计算机总体概述 硬件结构 * 1、系统总线 * 2、存储器 * 3、主存储器 * 4、IO系统 * 5、IO控制方式 CPU * 1、数的表示 * 2、数的运算 * 3、指令系统 * 4、寻址与设计 * 5、CPU 结构 * 6、指令流水 * 7、中断系统 CU * 1、微操作与 CU * 2、组合逻辑设计 * 3、微程序设计 ### 计算机体系结构 体系结构概述 规则与公式 指令系统 * 1、指令集与MIPS * 2、流水线性能 * 3、非线性流水调度 * 4、相关与冲突 * 5、流水线实现 * 6、指令并行 * 7、指令调度 硬件系统 * 1、Cache映像及变换 * 2、提高Cache命中率 * 3、降低Cache开销 * 4、并行主存 * 5、虚拟存储器 多处理器 * 1、互连网络 * 2、动态互连网络 * 3、多处理器 * 4、一致性问题 * 5、同步实现 * 6、并发保证 ### 操作系统(Linux) 启动与接口 * 1、Linux 系统启动:bootsect.s、setup.s * 2、Linux 系统启动:head.s、main.c * 3、内核接口与实现原理 进程管理 * 1、进程视图与基本问题 * 2、用户级线程与内核级线程实现 * 3、多进程起点 0 号和 1 号进程 * 4、CPU 调度算法与实现 * 5、临界区算法与信号量实现 * 6、死锁问题及多种处理策略 内存管理 * 1、程序重定位与内存分区 * 2、虚拟内存及 Linux 实现 * 3、页面换入换出实现 外设管理 * 1、设备驱动 printf 与 scanf 实现 * 2、磁盘基本原理与盘块编号 * 3、磁盘请求队列调度与内核高速缓存 * 4、基于文件的磁盘使用 * 5、Linux 完整文件系统实现 Linux IO 特性 * 1、Linux 网络 IO 模型 * 2、IO 多路复用 epoll 详解 * 3、Linux 零拷贝技术 ### 计算机网络 网络概述与分层结构 五层模型 * 1、物理层核心基础 * 2.1、链路层的差错控制与流量控 * 2.2、广播链路MAC协议 * 2.3、多种局域网协议及技术 * 3.1、网络层概述 * 3.2、Internet 路由协议 * 3.3、IP 协议 * 3.4、网络层其他协议与技术 * 4.1、传输层与 UDP 协议 * 4.2、TCP 协议 * 4.3、TCP 可靠传输原理 * 4.4、TCP 实现可靠传输的方式 * 4.5、TCP 流量控制与拥塞控制实现 * 5.1、HTTP、SMTP、POP3 * 5.2、FTP、DNS、DHCP 网络安全 * 1、网络安全基础 * 2、SSL 协议 * 3、IPSec 协议 ### 编译原理 流程 * 编译及其流程 前端 * 1、词法及分析与有限自动机 * 2、词法 DFA 及分析器构造 * 3、语法分析与上下文无关文法 * 4、自上而下分析法与 LL(1) 文法 * 5、自下而上分析法与 LR(1) 文法 中间代码 * 1、语义分析与中间代码、符号表 * 2、变量与过程翻译 * 3、算术表达式与数组元素翻译 * 4、布尔表达式及控制语句翻译 后端 * 目标代码生成与优化 ## 4、软件与算法 ### 软件工程 概述 * 1、软件工程概述 * 2、软件过程模型 工程流程 * 1、结构化需求分析 * 2、结构化总体设计 * 3、结构化详细设计 * 4、系统实现与软件测试 * 5、维护、评估、改进 面向对象 * 1、面向对象方法学 * 2、面向对象分析 * 3、面向对象设计 * 4、面向对象实现风格 管理 * 软件项目管理 ### Leetcode 典例 数组 * 1、快慢指针 * 2、对撞指针 * 3、滑动窗口 链表 * 1、典型操作 * 2、虚拟头节点 * 3、双指针或回溯 查找表 * 1、Set 与滑动窗口 * 2、Map 常见典例 * 3、几数和系列问题 * 4、特殊键值选择 栈、队列 * 1、栈常见题型 * 2、用栈代替递归 * 3、队列与 BFS * 4、优先队列 二叉树 * 1、典型操作 * 2、稍复杂递归问题 * 3、二分搜索树 回溯 * 1、常见典例 * 2、排列与组合 * 3、二维平面类型 * 4、N 皇后问题 动态规划 * 1、常见题型(上) * 2、常见题型(下) * 3、背包问题系列 * 4、LCS 与 LIS 问题 贪心 * 常见典例 **算法补充** 排序算法:所有常见方法 树相关算法:AVL 树、红黑树、B\B+ 树 图论算法:最短路径与最小生成树 # 开发 ## 1、常用技术 ### Spring 整体架构及模块依赖关系 IOC * 实体Bean构建方式(xml、JavaConfig)及相关配置 * 1、核心组件及继承关系类图 * 2、初始化源码流程(上)定位 Resource * 3、初始化源码流程(中)加载 BeanDefinition * 4、初始化源码流程(下)注册 BeanDefinition * 5、AnnotationConfigApplicationContext 初始化源码 * 6、源码流程的核心类时序图 DI * 四种依赖注入方式(xml、注解) * 1、源码流程(上)实例化Bean * 2、源码流程(下)依赖注入 * 3、源码流程的核心类时序图 * 4、懒加载与 finishBeanFactoryInitialization * 5、FactoryBean 与解析 * 6、自动装配 autowire * 7、循环依赖 singleton 三层缓存 Bean * 生命周期与拓展点 * 不同作用域原理 AOP * 切面编程及 AOP 示例(注解、xml配置) * 1、源码流程(上)创建代理 AopProxy * 2、源码流程(中)方法调用 * 3、源码流程(下)AdviceInterceptor 与回调 Transation * 事务(三大接口、隔离级别、传播属性)及示例 * 1、源码流程核心对象 * 2、源码执行流程(上)准备阶段 * 3、源码执行流程(下)提交与回滚 MVC * SpringMVC 整合示例与优化建议 * 1、MVC:九大核心组件分析 * 2、源码流程(上)从监听器启动 * 3、源码流程(中)Servlet 初始化阶段 * 4、源码流程(下)运行阶段 * 5、HandlerMapping 初始化及 handler 获取 * 6、HandlerInterceptor 注册与时序原理 * 7、HandlerAdapter 适配与执行的过程 ### Mybatis 正在进行... ### SpringBoot 正在进行... ### Tomcat 待续... ## 2、微服务技术 ### Dubbo 待续... ### Zookeeper 待续... ### SpringCloud 待续... ## 3、其余技术 ### Netty 待续... ### Shiro 待续... ### ... 待续... # 分布式 ## 消息队列 待续... ## 分布式相关 待续... # 附录 ## 书籍记录与推荐 仅代表我读完后的个人观点(只有力荐里的与豆瓣评分无冲突,几乎都是高分) * 万分力荐:代表我认为特别好的,如果想读些 Java 相关的书,建议一定读我里面罗列的,绝对物超所值。 * 比较推荐:代表我认为的好书,看完确实可以学到东西那种,但算不上特别好,不过还是很值得一读。 * 可以看看:代表我认为还是有一定缺陷的书,不是讲的不特别清楚,就是有点泛或者浅。 * 比较一般:代表我读完后收获较小的书,或者主观上不是很喜欢的书,并不代表里面的书一定不好。 **链接是豆瓣中该书的所有短评,避免只被我读完时的感受影响!** ### 万分力荐 * 深入理解Java虚拟机(第3版):无需多言,刷了两次。 * Redis设计与实现:也是刷了两次,我看过最深入浅出的书,一点没有门槛,看完觉得 Redis 非常明了。 * 操作系统原理、实现与实践:哈工大老师出品,除实践部分看了两次,围绕 Linux 作为原理的现实,注重抠细节,特别厉害。 * 代码整洁之道:绝大部分观点都认可,很多观点都让人佩服,比如代码要短小精悍,还要可以自解释等等。 * Mybatis技术内幕:好书,从模块讲起,再讲处理流程,主干清晰明了,源码也讲的清楚。 * 深入刨析Tomcat:读过最好的源码书,没有之一,从假设自己要设计一个服务器出发,然后分析 Tomcat 完善自己的服务器。 * MySQL技术内幕:看这本书之前最好懂操作系统,不然很难受,而且第一章提的很多东西后面才讲,但确实是好书。 * 从Paxos到Zookeeper :豆瓣7.7,但是我认为是好书,不过 Paxos 那块讲的不是很清楚,还需要配合博客看看。 * 微服务架构设计模式 :好书,改变了我对微服务的看法,微服务根本不是用个 Dubbo 或者 SpringCloud 的事。 ### 比较推荐 * Effective Java中文版(第3版):列了 90 条,核心感觉还是讲怎么用 Java 写更健壮和灵活的程序,写得还算不错 * Java并发编程艺术:这本书讲述顺序就是按照内存模型->synchronized->源码,总体觉得还不错,但是开头两章有点劝退。 * Spring Boot编程思想(核心篇):豆瓣评分较低 6.5,但是我觉得把 SpringBoot 比较核心的部分都讲了,就是确实凑字数太明显,啥都贴。 * RocketMQ技术内幕:豆瓣评分较低 6.9,不过我觉得主要原因可能把 Client 还有 Server 串着讲,阅读体验确实差,但内容尚可吧。 * RabbitMQ实战指南:远超我的期望,冲着如何实现去的,实战书里少有的既有实战又有深度。 * 计算机网络(原书第7版) :不用多说,比教材易懂,也比教材讲的内容多,总体自顶向下,更容易理解点。 ### 可以看看 * Spring源码深度解析(第二版):当时读的时候豆瓣 5.9 分,倒不是说不好,只是对第一次看源码的新手不太友好,而且确实绝大部分照搬第一版。 * 深入理解Apache Dubbo与实战:是我读过的源码书里不算好的,讲的不透彻,但拓展点还有 RPC 策略那讲的确实还行。 * 深入分析Java Web技术内幕(修订版):如果看了我说的其他书,这本书完全没必要看,各个模块讲的很浅,但要想快速了解一下可以看看。 * Netty实战 :我一般不看实战书的,但是 Netty 的书太少了,以为有源码,结果一点没提,不过 Netty 用法讲的确实比网课好。 * 图解HTTP:比较浅,看这个是因为 HTTP 权威指南太厚,不过比一般大学教材 HTTP 部分讲的多。 * 图解TCP/IP:当时看的入门书,如果想深入学一下,还是推荐计网的教材或者其他书籍。 * 分布式服务架构:原理、设计与实战:架构没讲什么,说了点分布式的问题,分布式事务、性能估算还有日志框架啥的还行,最后几章完全凑数。 ### 比较一般 * 大型网站技术结构:扫盲书,三天就看完了,建立个概念而已。 * 分布式服务框架:原理与实践:讲咋设计微服务框架的,比较一般,就讲了下微服务框架的几个关键点,总体比较宏观一些。 * 大规模分布式存储系统:分布式入门书,讲的分布式存储系统的宏观架构,并没有一些具体的细节,还讲了一些 OceanBase 基本原理。 * Elasticsearch源码解析与优化实战:叫源码解析,冲着核心源码去看的,结果没啥源码,讲的都是模块,而且也不够深入浅出。 * 代码简洁之道:程序员的职业素养:总体还行,存在部分观点很不认可,有点教条主义与理想化,尤其程序员对抗加班,还有什么必须完全 TDD。