缺什么补什么:别让“会用”掩盖了“不懂原理”
很多做终端研发的同学,写业务代码时各种容器用得飞起,但真遇到性能卡顿或者内存泄漏,却连底层是用数组还是链表实现的都说不清。这门课就是用来填这个坑的。它不扯宏大架构,直接聚焦于日常高频使用的容器组件与新特性,把平时当成黑盒调用的类逐一拆开看源码。如果你当前的状态是“能熟练写增删改查,但一被问到底层机制就卡壳”,或者准备向更高阶的岗位转移却总觉得基础不牢,这正好是对症的。它要求你放下“反正能跑就行”的心态,老老实实去补齐数据结构实现与函数式编程的底层逻辑。
建议先啃透这几块:从源码到流式处理
看这份资料时,不要像看小说一样从头翻到尾,建议按逻辑断层来逐个击破。第一块死磕底层实现,重点看动态数组与双向链表的源码剖析,搞懂它们在扩容、插入和随机访问时的性能差异,以及为什么判定对象重复要依赖特定方法而不是直接用等号。第二块主攻新版本的流式编程与函数式接口,这是很多老代码库里严重缺失的技能。看的时候别光听讲解,必须同步打开本地环境,对着源码打断点跟一遍数据流转过程。尤其是四大核心函数式接口和流的链式调用部分,自己写几个集合过滤的例子,对比传统写法和流式写法的性能与代码量差异,才能真正把知识嚼碎咽下去。
看完能干什么:独立解决性能与重构问题
把这套东西补全之后,你的工程能力会有一个明显的质变。首先,在选型时你不再是抓到哪个用哪个,而是能根据具体的高频读写场景,独立做出最优选择,并能给出量化的性能依据。其次,面对屎山业务代码,你能独立运用流式接口和函数式编程进行重构,把几十行嵌套循环干掉,换成几行清晰且不易出错的链式调用。在配合资料练习时,建议采用“先盲写再核对”的模式:看完一节后,先合上资料,自己尝试把核心的扩容逻辑或迭代器实现手写一遍,跑通了再去和资料里的标准源码比对差异。查漏补缺不是看懂了就算数,能脱稿手写出来,才算真正把基础夯实了。
课程目录
1-1 [集合] 集合框架概述与ArrayList基本使用 (29:41) 1-2 [集合] ArrayList与Vector源码分析及比较 (26:49) 1-3 [集合] LinkedList实现类与源码分析 (14:00) 1-4 [集合] HashSet的特点及使用 (19:26) 1-5 [集合] HashSet判断重复值的原理 (29:30) 1-6 [集合] TreeSet与LinkedHashSet (22:49) 1-7 [集合] 集合迭代器 (17:20) 1-8 [集合] jdk8的foreach与Consumer接口 (10:41) 1-9 [集合] jdk8的四大核心函数式接口 (26:58) 1-10 [集合] jdk8之Stream接口(1) (28:14) 1-11 [集合] jdk8之Stream接口(2) (18:27) 1-12 [集合] Map接口与HashMap基本使用 (20:48) 1-13 [集合] HashMap源码分析与哈希表实现原理(1) (30:47) 1-14 [集合] HashMap源码分析与哈希表实现原理(2) (10:31) 1-15 [集合] Hashtable与LinkedHashMap (16:22) 1-16 [集合] TreeMap (15:02) 1-17 [集合] jdk8Map新特性介绍 (28:41) 1-18 [集合] Collections工具类的使用 (23:46) 1-19 [集合] jdk8之Optional类的使用 (21:45) 1-20 [集合] 队列与栈 (21:08) 1-21 [集合] 对象的一对多与多对多 (14:20) 1-22 [集合] 迭代器设计模式 (13:46) 1-23 [集合] Guava开源组件使用(1) (19:04) 1-24 [集合] Guava开源组件使用(2) (18:24) 1-25 [集合] Guava开源组件使用(3) (23:19) 1-26 [集合] Guava开源组件使用(4) (11:08) 2-1 [多线程与并发] IntellijIDEA开发工具介绍 (17:50) 2-2 [多线程与并发] 进程与线程的基本概念 (18:53) 2-3 [多线程与并发] 线程的两种实现方式 (14:13) 2-4 [多线程与并发] 线程的休眠 (14:52) 2-5 [多线程与并发] join与中断线程 (27:40) 2-6 [多线程与并发] 守护线程 优先级与其它方法 (17:26) 2-7 [多线程与并发] 线程同步(1) (25:09) 2-8 [多线程与并发] 线程同步(2) (21:23) 2-9 [多线程与并发] 线程死锁 (09:54) 2-10 [多线程与并发] 生产者与消费者案例(1) (23:59) 2-11 [多线程与并发] 生产者与消费者案例(2) (13:28) 2-12 [多线程与并发] 线程生命周期与线程池 小结 (31:55) 3-1 [网络编程] 网络编程基本概念介绍 (29:05) 3-2 [网络编程] TCP协议的原理分析与示例 (27:53) 3-3 [网络编程] 服务器同时处理多个客户端示例 (17:27) 3-4 [网络编程] 即时聊天案例简易版(1) (28:17) 3-5 [网络编程] 即时聊天案例简易版(2) (29:16) 3-6 [网络编程] UDP通讯协议示例 (16:49) 3-7 [网络编程] URL下载示例 (11:09) 3-8 [网络编程] MINA框架介绍与服务器端程序 (30:09) 3-9 [网络编程] MINA客户端程序与发送对象数据 小结 (27:00) 4-1 [反射与内省] 基本概念与三种获取Class对象的方式 (17:30) 4-2 [反射与内省] 获取构造器实例化对象与属性信息 (21:10) 4-3 [反射与内省] 包信息和方法 (17:58) 4-4 [反射与内省] 动态代理模式 (28:03) 4-5 [反射与内省] 动态代理模式补充和加载器分析 (12:42) 4-6 [反射与内省] JavaBean的概念与BeanUtils工具 (20:47) 4-7 [反射与内省] 内省(1) (26:27) 4-8 [反射与内省] 内省(2) (15:14) 4-9 [反射与内省] 理解可配置的AOP框架(1) (27:40) 4-10 [反射与内省] 理解可配置的AOP框架(2) (29:28) 4-11 [反射与内省] 单例设计模式优化与小结 (17:11) 5-1 [泛型] 泛型的作用与定义 (21:55) 5-2 [泛型] 通配符泛型方法和嵌套 (21:06) 6-1 [正则表达式] 正则介绍 (21:09) 6-2 [正则表达式] 正则示例 (09:43) 7-1 [枚举] 枚举的基本使用 (22:14) 7-2 [枚举] 构造器接口抽象类单例的使用 (14:17) 8-1 [注解] 什么是Annotation及系统定义的三个注解 (18:56) 8-2 [注解] 自定义Annotation (16:31) 8-3 [注解] 反射读取注解信息与定义注解的注解 (17:19) 9-1 [XML与JSON] XML介绍与SAX解析 (28:05) 9-2 [XML与JSON] SAX解析续 (26:20) 9-3 [XML与JSON] SAX解析小结 (09:35) 9-4 [XML与JSON] DOM解析 (25:20) 9-5 [XML与JSON] JDOM解析 (16:14) 9-6 [XML与JSON] DOM4J解析与四种解析的比较 (16:48) 9-7 [XML与JSON] XMLEncoder与XMLDecoder以及xStream (17:48) 9-8 [XML与JSON] JsonReader解析json数组 (24:14) 9-9 [XML与JSON] JsonReader解析复杂json (27:19) 9-10 [XML与JSON] 生成JSON数据与GSON工具的使用以及小结 (31:49) 10-1 [GUI事件处理] GUI介绍与简单示例 (18:00) 10-2 [GUI事件处理] 补充乱码显示问题与事件处理的接口回调 (28:46) 10-3 [GUI事件处理] 观察者设计模式 (31:27) 11-1 [项目实战] 准备工作 (23:15) 11-2 [项目实战] 资源文件配置_baseclass与welcomeclass (27:30) 11-3 [项目实战] 用户注册功能实现 (28:13) 11-4 [项目实战] 用户登录功能实现 (19:09) 11-5 [项目实战] uml时序图与git建立代码仓库 (29:25) 11-6 [项目实战] 产品列表功能显示实现 (25:39) 11-7 [项目实战] 用户功能显示与代码打包测试 (16:29) 11-8 [项目实战] 打包补充与产品列表uml时序图 (08:17) 11-9 [项目实战] 订单模块工具类与业务接口实现 (25:21) 11-10 [项目实战] 购买商品实现(1) (29:24) 11-11 [项目实战] 购买商品实现(2) (19:37) 11-12 [项目实战] 购买商品实现uml时序图 (07:08) 11-13 [项目实战] 查询订单实现及uml时序图 (15:32) 11-14 [项目实战] 视图层与业务层代码优化 (16:21) 11-15 [项目实战] 项目总结 (14:18)





