Java 集合底层原理与并发实战精讲

很多 Java 开发者在处理高并发或数据量大的场景时,常因对集合底层机制理解不透而导致内存溢出或性能瓶颈。本课直击核心痛点,以 ArrayList 和 ConcurrentHashMap 为切入点,通过手写源码模拟,让你不再死记硬背 API,而是真正掌握扩容机制、线程安全原理及时间复杂度优化逻辑。适合已掌握基础语法,想从"会用"进阶到"懂原理"的开发者。建议按顺序学习:先理解数组与集合的时间复杂度关系,再深入 ArrayList 的 add、get、remove 源码与扩容逻辑,最后转入 ConcurrentHashMap 的分段锁原理与手写模拟。

前后端交互与异步数据处理

掌握理论后,如何将其应用到工程中?课程重点讲解 Servlet 过滤器链的使用、上下文获取,以及如何利用 Axios 与后端进行无刷新交互。通过 Fastjson 处理 JSON 数据、改造注册登录流程等实战案例,将后端接口与前端异步请求无缝串联,解决前后端数据传输中的编码与解析难题。学完本部分,你将能独立搭建包含登录注册、参数校验与响应处理的完整前后端交互流程,理解过滤器链如何拦截和转发请求,以及异步请求中数据格式的转换与校验逻辑。

学习路径与资料配套建议

建议先从 ArrayList 源码入手,理解数组增删查的底层开销,再深入 ConcurrentHashMap 的多线程并发控制。配合资料包中的视频进行跟读,遇到难点可反复回看手写集合模拟部分。学完后应能独立回答集合扩容触发条件、多线程环境下的线程安全方案以及 Ajax 请求的完整流程。资料包中的实战代码可直接作为练习模板进行修改和调试,巩固所学知识。动手重写集合模拟代码,是检验理解程度最有效的手段,不要只停留在观看层面。

课程目录

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记住密码.mp4 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
… 共 1226 条