如果你已经能写 Java 业务代码,但一遇到「为什么 ArrayList 增删慢」「HashMap 扩容到底发生了什么」就只能背面试题答案,这套余老师 Java 全套 2024 值得花时间看。它不讲语法入门,而是把 Java 核心类库的源码逐行拆开,让你从「会用」走到「知道为什么这么用」。

这门课解决什么工作场景

日常开发里最容易被忽略、又最容易出问题的,往往就是集合类的选择和使用。比如一个列表频繁在中间插入删除,你顺手写了 ArrayList,数据量一上来性能就塌了;比如多线程环境往 HashMap 里塞数据,程序偶发卡死却找不到原因。这些问题的根子都在源码层。

这套课的内容围绕集合框架展开,从数组这种基础数据结构的复杂度讲起,再进入 ArrayList 的增删效率、扩容机制,一路把「为什么这样设计」讲透。学完之后,你在做技术方案、排查性能问题、参与代码评审时,能拿出底层依据说话,而不是凭感觉选容器。

学完能独立做什么

  • 能自己动手实现一个简化版的集合类,理解容量、扩容、元素搬移这些概念在代码里怎么落地。
  • 面对一个具体的读写场景,能判断该用哪种集合,并说清取舍理由。
  • 读其他 Java 核心类源码时不再发怵,知道从哪里切入、关注哪些关键方法。
  • 面试里被追问底层细节时,能按源码执行顺序讲出来,而不是背结论。

需要说明的是,这门课的重心在「读懂源码」和「建立底层直觉」,不是带你做完整项目。它更像是给你一把拆解 JDK 的工具,而不是一个成品应用模板。

资料适合什么基础

建议至少写过一段时间的 Java 代码,熟悉基本语法、类和对象、泛型的大致用法。如果连 ArrayList 和 LinkedList 都没用过,直接看源码解读会比较吃力,容易变成看视频点头、关掉就忘。

另外,课程里会涉及数据结构的基本概念,比如时间复杂度、数组与链表的差异。这些不需要你提前精通,但最好有个心理准备:讲到复杂度分析时,跟着推一遍比跳过更有价值。

怎么用这套资料效率更高

不要一次性刷完。源码类内容的特点是「看的时候懂,合上就模糊」,所以每看完一个集合的解读,建议对照 JDK 源码自己走一遍关键方法,哪怕只是加几行注释。手写简化版集合的环节尤其别跳过,那是把理解落地的过程。

可以按「先 ArrayList,再对照其他集合」的顺序推进,把扩容、查找、删除这几条主线吃透,再去看别的容器会顺很多。遇到卡住的地方,先回到数据结构层面想清楚,再回源码找对应实现,比死磕某一行代码更有效。

整体来说,这是一套偏底层、偏原理的 Java 资料,适合想补上「集合框架为什么这么设计」这一课的开发者。它不会让你立刻多会一个框架,但会让你在写 Java 的每一天里,少一些想当然,多一些底气。

课程目录

├──ArrayList集合源码解读 | ├──01.数据结构数组的时间复杂度.mp4
 48.27M | ├──02.为什么arraylist集合增加删除效率非.mp4
 20.20M | ├──03.简单纯手写arraylist集合.mp4
 16.29M | ├──04.arraylist集合add方法源码解读.mp4
 38.10M | ├──05.arraylist集合扩容源码解读源码解读.mp4
 17.48M | ├──06.arraylist集合get方法源码解读.mp4
 4.10M | ├──07.arraylist集合remove方法源码解读.mp4
 26.36M | ├──08.arraylist 与vector 区别.mp4
 18.24M | └──09.总结arraylist集合源码.mp4
 7.86M ├──axios(ajax) | ├──01.过滤器基本使用常见场景.mp4
 48.55M | ├──02.过滤器拦截配置.mp4
 32.64M | ├──03.过滤器链.mp4
 32.11M | ├──04.登录注册加上过滤器.mp4
 89.00M | ├──05.获取当前上下文.mp4
 6.27M | ├──06.axios(ajax)发送请求.mp4
 64.25M | ├──07.axios验证用户名称是否存在.mp4
 80.79M | ├──08.js解析json数据.mp4
 34.71M | ├──09.fastjson用法.mp4
 50.26M | └──10.ajax json改造注册代码.mp4
 98.76M ├──ConcurrentHashMap原理低层 | ├──01.第一节-concurrenthashmap1.7源码解读课程.mp4
 16.68M | ├──03.第三节-为什么多线程情况下不推荐使用hashta.mp4
 20.28M | ├──04.第四节-concurrenthashmap1.7实现原理_.mp4
 30.85M | ├──05.第五节-简单模拟手写concurrenthashmap_bat.mp4
 34.91M | ├──06.第六节-concurrenthashmap扩容原理_batch.mp4
 5.64M | ├──07.第七节-concurrenthashmap无参构造函数原理.mp4
 13.88M | ├──08.第八节-concurrenthashmap无参构造函.mp4
 69.61M | ├──09.第九节-concurrenthashmapput方法原理0.mp4
 36.13M | ├──10.第十节-concurrenthashmapput方法原理02.mp4
 47.69M | ├──11.第十一节-concurrenthashmapput方法原理.mp4
 28.61M | ├──12.第十二节-concurrenthashmapput方法原理0.mp4
 29.10M | ├──13.第十三节-concurrenthashmapput方法原理05_ba.mp4
 37.01M | ├──14.第十四节-concurrenthashmapput方法原理06.mp4
 18.55M | └──15.第十五节-concurrenthashmapput1.7源码总结_.mp4
 18.98M ├──cookie与session | ├──01.什么是会话技术?.mp4
 26.06M | ├──02.cookie基本用法.mp4
 41.55M | ├──03.cookie原理细节.mp4
 30.51M | ├──04.session的用法.mp4
 30.05M | ├──05.session的原理.mp4
 53.07M | ├──06.session的细节分析.mp4
 62.92M | ├──07.使用session用户登录.mp4
 98.17M | ├──08.使用cookie记住 39.67M | ├──09.编写注册代码.mp4
 78.39M | └──10.注册图形验证码.mp4
 73.93M ├──HashMap7与8之间的区别 | ├──01.第一节-hashmap扩容源码解读课程安排.mp4
 27.11M | ├──02.第二节-hashmap核心参数有那些_b.mp4
 79.78M | ├──03.第三节-hashmap初始容量扩容原理01_batc.mp4
 35.83M | ├──04.第四节-hashmap初始容量扩容原理02_batch.mp4
 26.94M | ├──05.第五节-hashmapput方法源码解读01.mp4
 25.35M | ├──06.第六节-hashmapput方法源码解读02.mp4
 55.85M | ├──07.第七节-hashmap的modcount的作用_.mp4
 24.79M | ├──08.第八节-hashmap提前阈值扩容原理_batch.mp4
 35.56M | ├──09.第九节-hashmap8与hashmap7扩.mp4
 26.44M | ├──10.第十节-误区hashmap扩容的是否会重新计.mp4
 36.34M | ├──11.第十一节-hashmap1.7扩容底层实现原理01_ba.mp4
 66.70M | ├──12.第十二节-hashmap1.7扩容底层实现原理02_.mp4
 37.07M | ├──13.第十三节-hashmap1.7扩容如何实.mp4
 58.31M | ├──14.第十四节-模拟hashmap1.7扩容死循环.mp4
 21.01M | ├──15.第十五节-为什么jdk官方不承认1.7扩容死.mp4
 11.61M | ├──16.第十六节-hashmap1.8如何避免多线.mp4
 43.89M | ├──17.第十七节-hashmap8扩容与运算高位与.mp4
 47.20M | ├──18.第十八节-hashmap8扩容与运算高位与低位.mp4
 34.05M | ├──19.第十九节-为什么加载因子是0.75而不是1.mp4
 14.43M | ├──20.第二十节-hashmap如何存放1万条key效率最高.mp4
 14.63M | └──21.第二十一节-hashmap1.7与1.8有那些区别_batch.mp4
 25.59M ├──HashMap基于Lru实现缓存淘汰算法 | ├──01.第一节-为什么hashmap是无序集合_batc.mp4
 26.76M | ├──02.第二节-linkedhashmap有序集合原理 batc.mp4
 32.22M | ├──03.第三节-缓存淘汰算法底层实现的.mp4
 26.72M | ├──04.第四节-linkedhashmap的使用_batch.mp4
 34.08M | ├──05.第五节-手写lru缓存淘汰算法_batch.mp4
 23.04M | ├──06.第六节-为什么hashmap不使用取模运算_batc.mp4
 22.81M | ├──07.第七节-java右移2底层实现原理_batch.mp4
 26.67M | ├──09.第九节-hashcode无符号右移16位原理_batch.mp4
 24.52M | ├──10.第十节-^异或运算的原理_batch.mp4
 12.04M | ├──11.第十一节-hashmap计算hash值的原理_batch.mp4
 17.74M | ├──12.第十二节-hashmap与运算的实现原理_b.mp4
 14.33M | ├──13.第十三节-为什么n-1变成一个奇数01_batc.mp4
 20.82M | ├──14.第十四节-为什么n-1变成一个奇数02_b.mp4
 25.13M | ├──15.第十五节-hashmap如何实现降低hash冲突概.mp4
 8.33M | └── 08.第八节-java左移2底层实现原理_bat.mp4
 7.53M ├──HashMap集合 | ├──01.hashmap集合基本特点.mp4
 36.20M | ├──02.map集合中的常用方法.mp4
 38.00M | ├──03.hashset集合用法.mp4
 18.35M | ├──04.手写hashset集合.mp4
 13.05M | ├──05.hashset集合没有get方法.mp4
 7.43M | ├──06.hashset存入学生对象不允许重复.mp4
 48.57M | ├──07.hashmap集合常用get方法.mp4
 31.17M | ├──08.hashmap集合遍历方式一.mp4
 10.96M | ├──09.hashmap集合遍历方式二.mp4
 10.77M | ├──10.hashmap集合遍历方式三.mp4
 5.85M | ├──11.hashmap集合存入学生对象.mp4
 16.03M | ├──12.hashcode方法重写注意事项.mp4
 78.89M | ├──13.hashmap常见的面试题.mp4
 17.00M | ├──14.基于arraylist手写hashmap集合.mp4
 50.99M | ├──15.key的hash算法原理.mp4
 31.57M | ├──16.什么是hash冲突问题.mp4
 14.68M | ├──17.如何解决hash冲突问题.mp4
 12.29M | ├──18.手写hashmap集合put方法.mp4
 15.47M | ├──19.手写hashmap集合get方法.mp4
 26.45M | ├──20.hashmapkey存放自定义对象.mp4
 61.39M | ├──21.arraylist存放hashmap.mp4
 11.81M | ├──22.hashmap 集合存放arraylist集合.mp4
 17.44M | ├──23.hashmap统计每个字符出现的次数.mp4
 40.99M | ├──24.collections单列集合操作工具类.mp4
 27.88M | ├──25.hashmap集合散列概念.mp4
 26.49M | ├──26.linkedhashmap有序.mp4
 20.63M | ├──27.linkedhashset.mp4
 21.71M | ├──28.手写linkedhashset.mp4
 17.76M | └──29.生成10个不允许重复随机数.mp4
 12.40M ├──HashMap原理之手get和put方法 | ├──01.第一节-hashmap8源码解读课程安排_b.mp4
 37.97M | ├──02.第二节-为什么重写equals还要重写hashc.mp4
 58.86M | ├──03.第三节-hashmap如何避免内存泄露问题.mp4
 34.04M | ├──04.第四节-基于arraylist集合实现hashmap_ba.mp4
 35.79M | ├──05.第五节-三种不同时间复杂度区别_batc.mp4
 20.68M | ├──06.第六节-基于数组下标方式实现hashmap_batc.mp4
 40.74M | ├──07.第七节-基于链表方式解决hash碰撞问题.mp4
 41.52M | ├──08.第八节-hashmap如何遍历链表数据_batch.mp4
 19.13M | ├──09.第九节-hashmap如何存放key为null_bat.mp4
 23.26M | └──10.第十节-第一次课hashmap源码解读总结.mp4
 36.01M ├──ideaDeubg工具 | ├──01.debug如何调试程序.mp4
 33.61M | ├──02.debug调试偶数和.mp4
 20.24M | ├──03.idea分析栈帧链.mp4
 48.79M | ├──04.idea断点调试如何设置条件.mp4
 18.24M | ├──05.idea在debug模式下改变变量的值.mp4
 18.39M | ├──06.idea如何清除断点.mp4
 10.18M | ├──07.idea断点如何回退.mp4
 10.77M | ├──08.逢七过.mp4
 35.95M | ├──10.比较数组是否相同.mp4
 20.37M | ├──11.数组中查找元素.mp4
 38.82M | ├──12.评委打分.mp4
 73.06M | ├──13.如何反转一个数组.mp4
 37.93M | └── 09.数组元素求和.mp4
 28.40M ├──idea开发工具使用 | ├──01.如何安装idea开发工具.mp4
 32.64M | ├──02.idea如何创建项目.mp4
 30.23M | ├──03.idea工程模块的划分.mp4
 23.64M | ├──04.idea常用辅助快捷键.mp4
 19.09M | └──05.idea操作模块.mp4
 8.22M ├──javaAPI和工具类 | ├──01.什么是api.mp4
 39.23M | ├──02.如何使用帮助文档.mp4
 24.44M | ├──03.object类.mp4
 46.57M | ├──04.控制输出对象原理.mp4
 30.56M | ├──05.重写object父类中tostring方法.mp4
 26.25M | ├──06.string字符串.mp4
 15.04M | ├──07.string类中的equals方法.mp4
 15.57M | ├──08.三种不同方式实现用户登录.mp4
 46.79M | ├──09.登录加上三次登录重试机会.mp4
 30.92M | ├──10.object父类中的equals方法.mp4
 35.31M | ├──11.重写object父类中的equals方法.mp4
 51.92M | ├──12.instanceof 关键字的用法.mp4
 77.01M | ├──13.tring类中equals方法源码解读.mp4
 35.85M | ├──14.string类中equals方法如何比较两个字符.mp4
 65.37M | ├──15.遍历遍历字符串的原理.mp4
 33.74M | ├──16.replace替换方法.mp4
 20.79M | ├──17.split分割方法.mp4
 13.60M | ├──18.ascii码字符对照表.mp4
 24.98M | ├──19.统计大小写字符个数代码分析.mp4
 32.34M | ├──20.代码实现统计大小写字符出现的次数.mp4
 29.79M | ├──21.ndexof.mp4
 33.32M | ├──22.stringapi帮助文档.mp4
 13.70M | ├──23.jdk9为何要将string的底层实现由char数组.mp4
 8.73M | ├──24.java元空间的概念.mp4
 68.29M | ├──25.math类.mp4
 65.02M | ├──26.sytem.mp4
 31.94M | ├──27.arrays类中常用方法.mp4
 29.58M | ├──28.工具类的设计.mp4
 28.90M | ├──29.包装类概念.mp4
 34.11M | ├──30.integer的用法.mp4
 20.65M | ├──31.string类中valueof方法.mp4
 22.94M | ├──32.string如何转化成int类型.mp4
 22.44M | ├──33.包装类的基本规则.mp4
 29.51M | ├──34.integer包装类底层设计原理.mp4
 63.90M | ├──35.java中基本数据类型和包装类型的区别.mp4
 18.61M | ├──36.装箱和拆箱设计原理.mp4
 32.99M | ├──37.字符串中的数据排序.mp4
 33.86M | ├──38.date日期.mp4
 41.93M | ├──39.date常用方法.mp4
 20.39M | ├──40.simpledateformat格式化日期.mp4
 26.07M | ├──41.simpledateformat将字符串转化成d.mp4
 14.19M | ├──42.dateutils工具类设计.mp4
 35.05M | ├──43.calendarapi使用.mp4
 36.22M | ├──44.calendar修改日期.mp4
 17.18M | └──45.二月份有多少天.mp4
 26.43M ├──javaio流文件操作 | ├──01.什么是io.mp4
 28.50M | ├──02.file类创建文件.mp4
 37.37M | ├──03.file类常见判断方法.mp4
 20.88M | ├──04.file类常见获取方法.mp4
 22.36M | ├──05.相对路径与绝对路径区别.mp4
 28.68M | ├──06.file类删除操作.mp4
 18.93M | ├──07.循环删除多个文件.mp4
 25.49M | ├──08.递归算法求阶乘.mp4
 22.53M | ├──09.画图演示递归算法.mp4
 25.32M | ├──10.debug调试递归算法.mp4
 9.89M | ├──11.递归算法注意事项.mp4
 19.84M | ├──12.递归算法遍历目录.mp4
 23.11M | ├──13.递归算法删除目录.mp4
 8.22M | ├──14.io流概念.mp4
 13.31M | ├──15.io流的分类.mp4
 11.29M | ├──16.字节输出流.mp4
 19.30M | ├──17.字节写入数据常用三种方式.mp4
 31.80M | ├──18.字节流写入数据换行和追加写.mp4
 22.69M | ├──19.正确方式关闭io资源.mp4
 15.72M | ├──20.fileinputstream单个字节读取文件.mp4
 23.48M | ├──21.read方法循环优化.mp4
 17.58M | ├──22.read方法读取数据优化.mp4
 8.16M | ├──23.字节流文件内容拷贝.mp4
 21.35M | ├──24.字节流读取字节数组数据.mp4
 20.28M | ├──25.字节流以字节数组读取数据原理.mp4
 67.68M | ├──26.字节流以1024字节数组读取方式.mp4
 30.84M | ├──27.字节流复制图片.mp4
 16.69M | ├──28.什么是缓冲流.mp4
 20.43M | ├──29.字节缓冲区流-写入数据.mp4
 28.65M | ├──30.字节缓冲流-读取数据.mp4
 17.28M | ├──31.字节缓冲区复制视频.mp4
 17.03M | ├──32.字节流与缓存流复制视频效率对比.mp4
 36.33M | ├──33.一个汉字存储占用多少字节.mp4
 21.85M | ├──34.编码和解码乱码问题.mp4
 40.60M | ├──35.字符流写入文本数据.mp4
 25.70M | ├──36.字符流读取文本数据.mp4
 14.47M | ├──37.字符流写入数据五种方式.mp4
 26.06M | ├──38.字符输入流读取数据.mp4
 29.15M | ├──39.字符流拷贝文本文件.mp4
 14.25M | ├──40.filewriterfilereader.mp4
 35.49M | ├──41.字符缓冲流.mp4
 44.04M | ├──42.字符缓冲流写入数据换行操作.mp4
 19.88M | ├──43.字符缓冲流读取数据换行操作.mp4
 22.14M | └──44.字符缓冲流拷贝java代码.mp4
 18.60M ├──javase基础 | └──javaSe零基础之基础语法 | | ├──02.第二节-学会了java就业方向有哪些.mp4
 7.32M | | ├──03.第三节-计算机编程语言发展的历史.mp4
 8.58M | | ├──04.第四节-Java跨平台的原理.mp4
 12.28M | | ├──05.第五节-JRE、JDK、JVM之间的区别.mp4
 4.23M | | ├──06.第六节-如何下载JDK11安装包.mp4
 8.37M | | ├──07.第七节-JavaSE&JavaEE&JavaME之间的区.mp4
 16.68M | | ├──08.第八节-如何安装JDK11演示.mp4
 9.85M | | ├──09.第九节-如何打开命令提示符窗口.mp4
 4.69M | | ├──1.第一节-java语言的发展历史.mp4
 9.55M | | ├──10.第十节-在dos命令提示符窗口常用命.mp4
 19.43M | | ├──11.第十一节-为什么需要配置JDK环境.mp4
 9.91M | | ├──12.第十二节-如何配置JDK的环境变量.mp4
 24.30M | | ├──13.第十三节-编写第一个HelloWorld程序.mp4
 18.12M | | ├──14.第十四节-HelloWorld案例常见错误演示.mp4
 9.08M | | ├──15.第十五节-如何安装notepad.mp4
 8.73M | | ├──16.第十六节-notepad编写第一个java程序.mp4
 10.00M | | ├──17.第十七节-Java中的注释使用说明.mp4
 13.56M | | ├──18.第十八节-什么是关键字.mp4
 7.19M | | ├──19.第十九-什么是常量.mp4
 17.00M | | ├──20.输出常量值.mp4
 18.00M | | ├──21.数据类型.mp4
 25.24M | | ├──22。如何定义变量.mp4
 31.15M | | ├──23、定义变量常见的问题.mp4
 34.07M | | ├──24.标识符.mp4
 37.87M | | ├──25.自动与强制类型互换.mp4
 31.58M | | ├──26.算数运算符.mp4
 26.40M | | ├──27。字符的操作.mp4
 32.94M | | ├──28.字符串的操作.mp4
 16.91M | | ├──29.i的用法.mp4
 34.75M | | ├──30.i的用法.mp4
 8.47M | | ├──31.i的练习题.mp4
 20.36M | | ├──32.i的用法.mp4
 23.21M | | ├──33.关系运算符.mp4
 29.52M | | ├──34. 35.第三十五节-逻辑运算符.mp4
 0.21kb | | ├──35.逻辑运算.mp4
 13.50M | | ├──36.短路运算符.mp4
 24.98M | | ├──37.第三十八节-短路运算符之双或者.mp4
 13.38M | | ├──38三元表达式用法.mp4
 17.52M | | ├──39.三元运算符案例01.mp4
 12.15M | | ├──40.三元运算符案例01.mp4
 12.15M | | ├──41.三元运算代码优化.mp4
 8.70M | | ├──42.第四十三节-三元运算符案例02.mp4
 24.96M | | ├──44.scanner打印机用法.mp4
 21.90M | | ├──45,scabber类实现求.mp4
 10.94M | | ├──46.第四十六节-流程控制语句.mp4
 5.64M | | ├──47.第四十七节-if判断语句的写法.mp4
 14.98M | | ├──48.第四十八节-if和else的用法.mp4
 12.24M | | ├──49.第四十九节-if判断语句案例奇偶数.mp4
 14.41M | | ├──50.第五十节-多重if判断语句.mp4
 18.44M | | ├──51.第五十一节-多重if判断语句案例.mp4
 16.75M | | ├──52.第五十二节-switch语句的用法.mp4
 43.37M | | ├──53.switch语句春夏秋.mp4
 47.12M | | ├──54.第五十四节-for循环语句用法.mp4
 48.44M | | ├──55.第五十五节-for循环输出5-1.mp4
 26.68M | | ├──56.第五十六-求和案例.mp4
 29.27M | | ├──57.第五十七-求偶数和.mp4
 14.31M | | ├──58.第五十八节-水仙花数.mp4
 36.52M | | ├──59.第五十九-水仙花总数.mp4
 4.85M | | ├──60.第六十节-while循环.mp4
 24.53M | | ├──61.第六十一节-珠穆拉玛峰.mp4
 21.50M | | ├──62.第六十二节-do.while循环语句.mp4
 25.49M | | ├──63.第六十三节-死循环.mp4
 24.22M | | ├──64.第六十四-三种不同循环语句区别.mp4
 20.99M | | ├──65.第六十五节-break和continue区别.mp4
 20.93M | | ├──66.第六十六节-嵌套for循环语句.mp4
 53.62M | | ├── 67.第六十七节-random随机数.mp4
 23.63M | | └── 68.第六十八节-猜数字游戏.mp4
 26.15M ├──javase面向对象 | ├──01.面向对象概述.mp4
 33.28M | ├──02.类如何定义.mp4
 38.35M | ├──03.对象的使用.mp4
 47.42M | ├──04.学生类.mp4
 18.69M | ├──05.单个对象内存图.mp4
 41.75M | ├──06.new多个对象内存地址.mp4
 17.50M | ├──07.new多个对象存放指向同一个内.mp4
 20.54M | ├──08.成员变量与局部变量的区别.mp4
 33.57M | ├──09.private.mp4
 43.03M | ├──10.this关键字使用01.mp4
 47.01M | ├──11.this的原理.mp4
 18.60M | ├──12.什么是构造方法.mp4
 14.37M | ├──13.使用构造方法注意事项.mp4
 30.12M | ├──14.构造方法的作业题.mp4
 40.84M | ├──15.idea自动生成模板类.mp4
 14.26M | ├──16.this使用细节问题.mp4
 32.55M | ├──17.什么是封装.mp4
 12.11M | ├──18.什么是继承.mp4
 32.13M | ├──19.画图分析继承模式.mp4
 24.73M | ├──20.idea如何生成继承类图.mp4
 19.50M | ├──21.继承模式的优缺点.mp4
 15.52M | ├──22.如何判断使用继承模式.mp4
 6.71M | ├──23.继承中的变量访问特点.mp4
 27.96M | ├──24.super关键字用法.mp4
 14.88M | ├──25.super访问父类中的构造方法.mp4
 35.04M | ├──26.访问父类中的成员方法.mp4
 13.55M | ├──27.什么是方法重写.mp4
 21.90M | ├──28.权限修饰符.mp4
 52.01M | ├──29.方法重写注意事项.mp4
 24.66M | ├──30.画图分析java中的继承注意事项.mp4
 28.89M | ├──31.继承作业题构造方法给成员属性赋值.mp4
 32.52M | ├──32.继承作业题set方法给成员属性赋值.mp4
 12.28M | ├──33.package的作用.mp4
 29.10M | ├──34.package细节问题.mp4
 29.16M | ├──35.import导入包.mp4
 26.13M | ├──36.import导入包细节问题.mp4
 11.75M | ├──37.final关键字最终态.mp4
 11.23M | ├──38.fina关键字修饰局部变量.mp4
 22.88M | ├──39.static关键字.mp4
 23.28M | ├──40.画图分析静态变量访问特征.mp4
 28.34M | ├──42.静态关键字应用场景.mp4
 19.40M | ├──43.static修饰常量.mp4
 24.02M | ├──44.main方法细节问题.mp4
 40.82M | ├──45…main访问特点.mp4
 21.48M | ├──46.idea如何设置main注入参数.mp4
 16.07M | ├──47.多态概念基本概念.mp4
 28.82M | ├──48.多态的访问特点.mp4
 32.35M | ├──49.多态机制的优缺点-上.mp4
 31.69M | ├──50.多态机制的优缺点-下.mp4
 28.94M | ├──51.多态的转型.mp4
 27.59M | ├──52.画图分析多态的转型.mp4
 26.85M | ├──53.抽象类的概念.mp4
 33.84M | ├──54.抽象的特点.mp4
 33.04M | ├──55.抽象类定义有参构造方法.mp4
 43.18M | ├──56.画图分析抽象类的案例.mp4
 18.51M | ├──57.抽象的类案例代码编写.mp4
 51.48M | ├──58.abstract关键字不能和哪些关键字共.mp4
 14.89M | ├──59.接口的定义特点.mp4
 32.31M | ├──60.接口中成员变量访问特点.mp4
 23.12M | ├──61.接口中成员方法访问特点.mp4
 13.34M | ├──62.接口中是没有构造方法.mp4
 20.44M | ├──63.猫和狗接口版本思路分析.mp4
 12.47M | ├──64.猫和狗接口版本代码演示.mp4
 49.17M | ├──65.类和接口的关系.mp4
 42.68M | ├──66.抽象类和接口的区别.mp4
 25.17M | ├──67.门与报警(抽象类和接口组合).mp4
 24.25M | └── 41.静态关键字访问特点.mp4
 31.38M ├──java多线程快速入门 | ├──01.第一节-多线程第一次课程内容安排.mp4
 30.64M | ├──02.第二节-什么是线程、进程.mp4
 32.02M | ├──03.第三节-为什么在进程中还需要线.mp4
 8.97M | ├──04.第四节-为什么需要使用多线程与.mp4
 33.34M | ├──05.第五节-使用多线程一定提高效率吗.mp4
 51.88M | ├──06.第六节-多线程的应用场景有哪些呢.mp4
 14.78M | ├──07.第七节-同步与异步之间的区别.mp4
 8.66M | ├──08.第八节-继承thread类创建线程.mp4
 28.28M | ├──09.第九节-实现runnable接口创建线程.mp4
 16.05M | ├──10.第十节-使用callable和future创建线.mp4
 54.21M | └──11.第十一节-使用线程池的方式创建线程.mp4
 8.86M ├──java多线程如何通讯 | ├──01.第一节-什么是线程安全问题.mp4
 47.38M | ├──02.第二节-如何解决线程安全问题.mp4
 48.45M | ├──03.第三节-synchronized锁基本的用.mp4
 28.35M | ├──04.第四节-synchronized锁基本的用法02.mp4
 27.28M | ├──05.第五节-synchronized死锁问题.mp4
 32.58M | ├──06.第六节-如何诊断synchronized死锁问题.mp4
 11.04M | ├──07.第七节-如何保证线程同步问题.mp4
 11.26M | ├──08.第八节-springmvc接口中使用sync.mp4
 29.77M | ├──09.第九节-使用wait、notify注意事项.mp4
 32.42M | ├──10.第十节-wait、notify生产者与消.mp4
 39.71M | └──11.第十一节-wait、notify生产者与消费者.mp4
 45.82M ├──java多线程锁使用 | ├──01.第一节-画图分析wait与notify实现原.mp4
 52.41M 适合人群 Java开发者 后端工程师 编程爱好者 学习收获 掌握Java核心集合类源码 提升代码质量 深入理解Java编程思想 祝您学习愉快! 学有所成,前程似锦!