编程相关

白天 夜间 首页 下载 阅读记录
  我的书签   添加书签   移除书签

Java并发

浏览 98 扫码 分享 2022-07-24 23:19:31
  • 第一周
  • 第二周
  • 第三周
  • 第四周
  • 第五周
  • 第六周
  • 第七周
  • 第八周
  • 第九周
  • 第十周
  • 第十一周

若有收获,就点个赞吧

0 人点赞

上一篇:
下一篇:
  • 书签
  • 添加书签 移除书签
  • 编程技巧
    • 第二章:工具编程
      • 00\
      • 00、
      • 00、翻译插件
        • 无标题
      • 00、智能编码
    • 第一章:代码编程
      • 00、String占位符
  • 网络知识
    • 001_Java工程师:你为什么必须要了解一些网络知识?
    • 002_数据链路层:以太网协议、mac地址、网卡以及路由器
    • 003_网络层:IP协议、子网划分以及子网掩码是什么(上)
    • 004_网络层:IP协议、子网划分以及子网掩码是什么(下)
    • 005_传输层:TCP协议、Socket编程以及端口号是什么
    • 006_应用层:HTTP协议又是什么以及七层网络模型的总结
    • 007_一道经典的面试题:通过浏览器请求谷歌的时候会发生哪些事情?
    • 008_一道经典的面试题:你能聊聊TCP三次握手建立连接的过程吗?
    • 009_一道经典的面试题:如果TCP建立连接就两次握手有什么问题吗?
    • 010_一道经典的面试题:我再追问你一下TCP断开连接四次挥手的过程
    • 011_一道经典的面试题:Socket网络编程跟TCP IP协议的关系是什么
    • 012_一道经典的面试题:HTTP 1.0与HTTP 1.1版本间的区别是什么
    • 013_一道经典的面试题:HTTPS协议加密通信的实现原理是什么
    • 014_一道经典的面试题:HTTP实现长连接的底层工作原理到底是啥?
    • 015_从Java网络编程的角度来看看HTTP、TCP、以太网的关系
    • 016_深入细节:如何使用操作系统的Socket库中的DNS解析器查询IP
    • 017_深入细节:全世界几万台DNS服务器如何大接力完成IP地址的查询
    • 018_深入细节:无线局域网和以太网之间又是什么关系?
    • 019_深入细节:ARP广播获取路由器mac地址以及ARP缓存机制
    • 020_研究中间件源码不得不会的网络知识:全双工与半双工指的是什么?
    • 021_研究中间件源码不得不回的网络知识:粘包和拆包是什么意思?
    • 022_深入细节:为什么说交换机工作在以太网层而路由器工作在IP层?
    • 023_深入细节:家里的调制解调器(Modem)是怎么接入运营商网络的?
    • 024_课外有兴趣可以拓展的知识:极客时间《趣谈网络协议》专栏推荐
  • NIO源码
    • 第一周
      • 001_同学,BIO、NIO以及AIO分别是什么?
      • 002_学习NIO编程应该从哪个点开始切入?
      • 003_Buffer缓冲区的核心技术点实验以及图解剖析
      • 004_使用Direct模式创建的缓冲区有什么作用?
      • 005_如何分配一个Buffer缓冲区以及读写其中数据?
      • 006_在编程中通常是如何调用Buffer API操作缓冲区的?
      • 007_NIO编程中Buffer和Channel之间的关系是什么
      • 008_基于FileChannel将数据写入磁盘文件
      • 009_如何利用FileChannel实现磁盘文件的随机写
      • 010_利用多线程并发写测试FileChannel是线程安全的?
      • 011_从磁盘文件中读取数据到Buffer缓冲区里
      • 012_利用FileChannel对文件上共享锁限制文件只读
      • 013_如果使用FileChannel对文件上独占锁有什么作用
      • 014_用FileChannel真可以立即写入数据到磁盘吗?
      • 015_基于FileChannel强制force数据从os cache刷入磁盘
      • 016_NIO核心原理剖析之FileChannel的初始化
      • 017_NIO核心原理剖析之FileChannel写入数据到磁盘
      • 018_NIO核心原理剖析之FileChannel从磁盘读取数据到内存
      • 019_NIO核心原理剖析之多线程读写磁盘文件如何同步
      • 020_NIO核心原理剖析之文件锁是如何实现的
      • 021_NIO核心原理剖析之force强制刷磁盘的实现
      • 022_NIO技术这么学就够了吗:不!必须在项目中实战才行!
    • 第二周
      • 023_基于底层网络知识来透彻理解Socket网络编程
      • 024_将Server端改造为多线程模式应对大量客户端连接
      • 025_再次改造Socket网络通信程序支持长连接模式
      • 026_传统的Socket网络通信为何无法应对百万并发请求?
      • 027_NIO是如何基于多路复用技术支持海量客户端的?
      • 028_基于NIO多路复用技术彻底重构服务端程序
      • 029_逐行代码分析NIO服务端代码以及图解背后的原理
      • 030_如何限制客户端的连接数来避免服务器负载过高
      • 031_基于NIO技术来彻底重构客户端程序
      • 032_分析一下基于NIO重构的客户端程代码
      • 033_把基于NIO开发的网络通信程序运行起来看看
      • 034_NIO核心原理剖析之服务端初始化过程
      • 035_NIO核心原理剖析之Selector如何注册Channel
      • 036_NIO核心原理剖析之操作系统select反向通知机制
      • 037_NIO核心原理剖析之如何通过Channel三次握手建立连接
      • 038_NIO核心原理剖析之如何通过Channel读取数据
      • 039_NIO核心原理剖析之如何通过Channel发送数据
      • 040_NIO核心原理剖析之服务端与客户端程序底层梳理
      • 041_课程预告:分布式存储系统项目实战NIO技术
  • Java并发
    • 第一周
      • 01_5分钟告诉你线程是什么以及并发编程又是什么
      • 02_案例引入:微服务注册中心系列案例背景引入
      • 03_案例实战:以工作线程模式开启微服务的注册和心跳线程
      • 04_案例实战:微服务注册中心的服务注册功能实现
      • 05_案例实战:微服务注册中心的心跳续约功能实现
      • 06_案例实战:微服务存活状态监控线程的实现
      • 07_案例实战:以daemon模式运行微服务存活状态监控线程
      • 08_一般不常用到的ThreadGroup是个什么东西?
      • 09_几乎从来不会动手设置的线程优先级又是个啥东西?
      • 10_探索Thread源码(一):初始化过程
      • 11_探索Thread源码(二):线程启动过程
      • 12_回头看看:sleep原来可以让线程暂停一段时间
      • 13_搜遍开源项目几乎都找不到的冷门yield又是什么东西?
      • 14_解释一下从0开始手写微服务注册中心项目的计划
      • 15_案例实战:基于join实现服务注册线程的阻塞式运行
      • 16_对一个线程执行interrupt到底会发生些什么事情?
      • 17_案例实战:基于interrupt实现微服务优雅关闭心跳线程
    • 第二周
      • 18_手写一个小程序来体验一下volatile关键字的作用
      • 19_图解主内存以及cpu的多级缓存模型的实现原理
      • 20_多线程并发运行时可能引发的数据不一致问题
      • 21_总线加锁机制和MESI缓存一致性协议的工作原理
      • 22_图解Java内存模型以及多线程并发问题的发生
      • 23_并发编程中的三大特性:可见性、原子性、有序性
      • 24_现场手绘图讲解volatile是如何保证可见性的?
      • 25_几乎没人解释的清楚:volatile为什么无法保证原子性?
      • 26_基于happens-before原则来看volatile如何保证有序性
      • 27_volatile的底层实现原理:lock指令以及内存屏障
      • 28_double check单例模式的实现缺陷以及volatile的优化
      • 29_案例实战:基于volatile优化微服务的优雅关闭机制
      • 30_案例实战:基于volatile优化微服务存活状态检查机制
    • 第三周
      • 31_写一个多线程i 的小程序体验一下线程安全问题
      • 32_结合java内存模型来说说多线程安全问题的产生原因
      • 33_体验一下synchronized加锁如何解决多线程并发安全问题
      • 34_synchronized在代码中的各种常见使用方法详解
      • 35_图解synchronized底层原理(jvm指令以及monitor锁)
      • 36_案例实战:微服务的定时注册表拉取机制实现
      • 37_案例实战:基于synchronized解决注册表的并发读写问题
      • 38_案例实战:微服务注册中心的自我保护机制的思想
      • 39_案例实战:基于synchronized实现服务的心跳计数器
      • 40_案例实战:微服务关闭时的服务下线机制的实现
      • 41_案例实战:基于synchronized实现自我保护触发阈值的修改
      • 42_案例实战:基于synchronized实现自我保护机制的开启
      • 43_手写一个简易内存队列来体验一下wait与notify的作用
      • 44_wait与notify的底层原理:monitor以及wait set
      • 45_wait与notify在代码中使用时的注意事项总结
      • 46_案例实战:分布式存储系统案例背景引入
      • 47_案例实战:分布式存储系统的edits log机制介绍
      • 48_案例实战:分布式存储系统NameNode代码框架实现
      • 49_案例实战:分布式存储系统的创建目录功能实现
      • 50_案例实战:edits log的全局txid机制以及双缓冲机制实现
      • 51_案例实战:基于synchronized实现edits log的分段加锁机制
      • 52_案例实战:基于wait与notify实现edits log批量刷磁盘
    • 第四周
      • 54_结合java内存模型了解synchronized对可见性的保证
      • 55_double check布下小坑的说明以及volatile的真实作用
      • 56_i 和AtomicInteger之间的差别分析以及使用介绍
      • 57_AtomicInteger中的CAS无锁化原理和思路介绍
      • 58_AtomicInteger源码剖析:仅限JDK内部使用的Unsafe类
      • 59_AtomicInteger源码剖析:无限重复循环以及CAS操作
      • 60_AtomicInteger源码剖析:底层CPU指令是如何实现CAS语义的
      • 61_Atomic原子类体系的CAS语义存在的三大缺点分析
      • 62_案例实战:基于AtomicLong优化服务注册中心的心跳计数器
      • 63_Java 8的LongAdder是如何通过分段CAS机制优化多线程自旋问题的
      • 64_案例实战:基于LongAdder的分段CAS机制优化心跳计数器的效率
      • 65_案例实战:服务注册中心的最近更新服务实例队列实现
      • 66_案例实战:服务注册中心提供全量和增量拉取注册表的接口
      • 67_案例实战:客户端实现启动时拉取全量注册表
      • 68_案例实战:客户端实现定时拉取增量注册表到本地合并
      • 69_案例实战:增量合并注册表后进行校验与全量纠正
      • 70_案例实战:基于AtomicReference优化客户端缓存注册表
      • 71_案例实战:基于AtomicStampedReference解决注册表缓存ABA问题
      • 72_案例实战:基于AtomicLong确保多线程拉取注册表版本不错乱
      • 73_Atomic原子类其他API的介绍以及自己学习的建议
    • 第五周
      • 74_尝试一下另一种锁:ReentractLock的demo例子
      • 75_面试的时候容易被问懵的问题:谈谈你对AQS的理解?
      • 76_ReentractLock底层原来是基于AQS来实现锁的!
      • 77_AQS如何基于无锁化的CAS机制实现高性能的加锁
      • 78_如何巧妙的借助AQS中的state变量实现可重入式加锁?
      • 79_AQS的本质:为啥叫做异步队列同步器?真相大白!
      • 80_加锁失败的时候如何借助AQS异步入队阻塞等待?
      • 81_用第三个线程尝试加锁失败彻底图解AQS队列等待机制
      • 82_AQS默认的非公平加锁策略的运作原理图解
      • 83_ReentractLock如何设置公平锁策略以及原理图解
      • 84_tryLock如何实现加锁等待一段时间过后放弃?
      • 85_基于AQS实现的可重入锁释放过程的源码剖析
      • 86_锁释放过后如何对AQS队列中唤醒阻塞线程尝试抢占锁?
      • 87_一种新奇的加锁玩法:读锁和写锁分开是怎么玩的?
      • 88_读写锁中的写锁是如何基于AQS的state变量完成加锁的?
      • 89_基于AQS的state二进制高低16位判断实现写锁的可重入加锁
      • 90_写锁加锁失败时如何基于AQS队列完成入队阻塞等待?
      • 91_读写锁互斥:基于AQS的state二进制高低16位完成互斥判断
      • 92_释放写锁的源码剖析以及对AQS队列唤醒阻塞线程的过程
      • 93_基于CAS实现多线程并发同时只有一个可以加读锁
      • 94_多线程加读锁时的重复循环自旋尝试完成加锁
      • 95_再次回头看看读锁占用时加写锁失败如何入队阻塞等待
      • 96_读锁释放过程分析以及如何基于AQS唤醒阻塞加写锁的线程
      • 97_居然还可以用Condition实现wait和notify的效果?
      • 98_基于AQS实现的Condition阻塞过程源码分析
      • 99_基于AQS实现的Condition唤醒阻塞线程的源码分析
    • 第六周
      • 100_学员问题答疑:AtomicReference用的好像有点问题?
      • 101_学员问题答疑:分布式存储系统案例中有一个bug
      • 102_案例实战:服务注册表的多线程并发读写场景分析
      • 103_案例实战:基于读写锁优化服务注册表的读写加锁操作
      • 104_ThreadLocal:让每个线程都有一个副本
      • 105_ThreadLocal源码剖析:线程本地副本的实现原理
      • 106_ThreadLocal在分布式存储系统edits log案例中的实践
      • 107_多线程并发运行的环境中大量的锁争用对性能的影响
      • 108_锁优化策略:标志位修改等可见性场景优先使用volatile
      • 109_锁优化案例:服务优雅停机机制中的volatile标志位修改实践
      • 110_锁优化策略:数值递增场景优先使用Atomic原子类
      • 111_锁优化案例:服务心跳计数器中的Atomic原子类落地使用
      • 112_锁优化策略:数据允许多副本场景优先使用ThreadLocal
      • 113_锁优化案例:分布式存储系统edits log机制中的ThreadLocal实践
      • 114_锁优化策略:读多写少需要加锁的场景优先使用读写锁
      • 115_锁优化案例:服务注册表的并发读写场景采用读写锁分离策略
      • 116_锁优化策略:尽可能减少线程对锁占用的时间
      • 117_锁优化案例:分布式存储系统edits log的分段加锁机制
      • 118_锁优化策略:尽可能减少线程对数据加锁的粒度
      • 119_锁优化案例:每秒上千订单场景的分布式锁高并发优化实战
      • 120_锁优化策略:尽可能对不同功能分离锁的使用
      • 121_锁优化策略:避免在循环中频繁的加锁以及释放锁
      • 122_锁优化策略:尽量减少高并发场景中线程对锁的争用
      • 123_锁优化案例:采用多级缓存机制降低对服务注册表的锁争用
      • 124_生产环境的锁故障:注册表缓存机制中潜在的死锁问题
      • 125_生产环境的锁故障:死锁现象演示以及jstack分析死锁问题
      • 126_生产环境的锁故障:优化注册表缓存机制中的死锁隐患的代码
      • 127_生产环境的锁故障:锁死问题的产生原因以及解决思路
      • 128_生产环境的锁故障:线程饥饿、活锁以及公平锁策略解决思路
    • 第七周
      • 129_再谈原子性:Java规范规定所有变量写操作都是原子的
      • 130_32位Java虚拟机中的long和double变量写操作为何不是原子的?
      • 131_volatile原来还可以保证long和double变量写操作的原子性
      • 132_到底有哪些操作在Java规范中是不保证原子性的呢?
      • 133_可见性涉及的底层硬件概念:寄存器、高速缓存、写缓冲器
      • 134_深入探秘有序性:Java程序运行过程中发生指令重排的几个地方
      • 135_JIT编译器对创建对象的指令重排以及double check单例实践
      • 136_现代处理器为了提升性能的指令乱序和猜测执行的机制
      • 137_高速缓存和写缓冲器的内存重排序造成的视觉假象
      • 138_synchronized锁同时对原子性、可见性以及有序性的保证
      • 139_深入分析synchronized是如何通过加锁保证原子性的
      • 140_synchronized是如何使用内存屏障保证可见性和有序性的
      • 141_再看volatile关键字对原子性、可见性以及有序性的保证
      • 142_高速缓存的数据结构:拉链散列表、缓存条目以及地址解码
      • 143_结合硬件级别的缓存数据结构深入分析缓存一致性协议
      • 144_采用写缓冲器和无效队列优化MESI协议的实现性能
      • 145_硬件层面的MESI协议为何会引发有序性和可见性的问题?
      • 146_内存屏障在硬件层面的实现原理以及如何解决各种问题
      • 147_在复杂的硬件模型之上的Java内存模型是如何大幅简化的
      • 148_面试的时候如何从内存屏障、硬件层面的原理来震慑面试官
      • 149_Java虚拟机对锁的优化:锁消除、锁粗化、偏向锁、自旋锁
      • 150_再来看看CAS是如何基于MESI协议在底层硬件层面实现加锁的
    • 第八周
      • 151_CountDownLatch:同步等待多个线程完成任务的并发组件
      • 152_CountDownLatch源码剖析之如何基于AQS实现同步阻塞等待(一)
      • 153_CountDownLatch源码剖析之如何基于AQS实现同步阻塞等待(二)
      • 154_案例实战:分布式存储系统的HA高可用架构原理介绍
      • 155_案例实战:slave节点向主备两个master节点注册的机制介绍
      • 156_案例实战:slave节点注册时同步阻塞等待多个master注册完毕
      • 157_CyclicBarrier:将工作任务给多线程分而治之的并发组件
      • 158_CyclicBarrier源码剖析之如何基于AQS实现任务分而治之(
      • 159_CyclicBarrier源码剖析之如何基于AQS实现任务分而治之(二)
      • 160_CyclicBarrier源码剖析之如何基于AQS实现任务分而治之(三)
      • 161_案例实战:API服务中对多个接口并发调用后统一合并数据再返回
      • 162_Semaphore:等待指定数量的线程完成任务的并发组件
      • 163_Semaphore源码剖析之如何基于AQS等待指定数量的线程(一)
      • 164_Semaphore源码剖析之如何基于AQS等待指定数量的线程(二)
      • 165_案例实战:数据分布式存储场景下的分布式计算架构介绍
      • 166_案例实战:基于Semaphore实现分布式计算系统的推测执行机制
      • 167_Exchange:支持两个线程之间进行数据交换的并发组件
      • 168_最近很流行的面试题:HashMap为什么在高并发下会死循环?
      • 169_JDK 1.7的HashMap工作原理:hash、链表以及扩容
      • 170_图解剖析JDK 1.7 HashMap并发环境下死循环之环形链表
      • 171_图解剖析JDK 1.7 HashMap并发环境下死循环之死循环与丢数据
      • 172_ConcurrentHashMap:分段加锁提升并发性能的思想实践
      • 173_ConcurrentHashMap源码剖析之初始化流程介绍
      • 174_ConcurrentHashMap源码剖析之未分段数组的CAS加锁
      • 175_ConcurrentHashMap源码剖析之hash冲突导致的CAS加锁失败
      • 176_ConcurrentHashMap源码剖析之synchronized分段加锁机制
      • 177_ConcurrentHashMap源码剖析之链表和红黑树解决hash冲突问题
      • 178_ConcurrentHashMap源码剖析之数组扩容迁移机制
      • 179_ConcurrentHashMap源码剖析之查询操作是否涉及锁?
      • 180_JDK 1.8对ConcurrentHashMap做出的锁细粒度优化介绍
      • 181_案例实战:基于ConcurrentHashMap重构微服务注册中心的注
    • 第九周
      • 182_CopyOnWriteArrayList:线程安全的List数据结构
      • 183_采用ReentrantLock保证修改元素时的线程并发安全性
      • 184_基于写时复制机制实现在list中加入一个元素
      • 185_基于写时复制机制实现拷贝相同大小数组更新list元素
      • 186_基于写时复制机制实现多次拷贝数组删除list元素
      • 187_List读操作不需要加锁的秘密:写时复制多副本机制
      • 188_对List进行元素迭代时采用的副本快照机制分析
      • 189_CopyOnWriteArrayList核心思想:弱一致性提升读并发
      • 190_案例实战:重构分布式存储系统的集群注册机制
      • 191_ConcurrentLinkedQueue:线程安全的链表结构无界队列
      • 192_如何基于复杂的指针移动完成单向链表的入队?
      • 193_多线程并发入队的时候如何基于CAS保证线程安全性?
      • 194_再来看看基于复杂指针移动实现的单向链表的出队操作实现
      • 195_那么多线程并发出队的时候如何基于CAS保证顺序出队?
      • 196_如何在peek获取队头元素的时候基于CAS安全更新head指针?
      • 197_统统CAS保证线程安全性:多线程安全的并发删除队列元素
      • 198_从读写并发的角度分析一下size获取队列大小的局限性
      • 199_同理分析一下contains如何基于volatile不受队列变化的影响
      • 200_单单基于CAS就能保证队列迭代遍历的过程没任何问题吗?
      • 201_案例实战:基于线程安全的无界队列重构最近变更服务队列机制
    • 第十周
      • 202_线程安全的有界队列:LinkedBlockingQueue
      • 203_基于链表结构的有界队列以及两把独占锁提升并发性能
      • 204_基于独占锁保证入队线程安全性的实现原理
      • 205_如何使用另外一把独占锁实现出队的线程安全性呢?
      • 206_队列满时入队线程是如何阻塞以及被唤醒的呢?
      • 207_那么如果队列是空的又如何阻塞出队线程以及唤醒呢?
      • 208_如何对线程安全的链表结构有界队列进行查询?
      • 209_案例实战:微服务注册中心的集群机制、高并发以及高可用
      • 210_案例实战:服务注册中心集群的三层队列异步同步机制
      • 211_案例实战:集群间的异步同步机制以及数据最终一致性的分析
      • 212_案例实战:心跳过期下线服务为什么不需要进行集群同步?
      • 213_案例实战:对服务注册、服务下线以及发送心跳接入集群同步
      • 214_案例实战:基于无界CAS无锁化队列实现第一层队列
      • 215_案例实战:使用第二层队列基于时间间隔和数量生成同步batc
      • 216_案例实战:实现第三层队列用于存放以及发送同步batch
      • 217_案例实战:完成微服务注册中心集群之间的异步内存数据同步
      • 218_基于数组实现的有界队列:ArrayBlockingQueue
      • 219_如何基于一把独占锁实现基于数组的有界队列入队与出队?
      • 220_基于数组的队列又是如何实现线程的阻塞以及唤醒?
      • 221_那么如何对基于数组的线程安全队列进行查询操作呢?
      • 222_关于优先级队列和延迟队列的API使用自学提示
    • 第十一周
      • 223_上手用一把线程池以及他到底有什么作用和好处?
      • 224_通过最常见的fixed线程池来一窥线程池构造源码
      • 225_线程池的内部构造过程分析:找找核心成员变量有哪些
      • 226_看看提交任务到线程池的源码执行流程是什么样子的
      • 227_如何通过非阻塞的高性能CAS实现安全的线程创建
      • 228_如何基于独占锁安全的将线程放入池子中以及启动任务
      • 229_提交到线程池的任务是如何完成执行以及指标统计的
      • 230_核心线程满了之后如何将任务压入近乎无界的队列等待
      • 231_线程池中的工作线程如何从队列获取任务来执行
      • 232_面试题:无界队列线程池在远程服务异常时内存飙升怎么办
      • 233_maximumPoolSize和reject策略在fixed线程池中会用吗?
      • 234_最后来看看线程池关闭的过程中会涉及到什么?
      • 235_不限制线程数量的线程池:cached线程池
      • 236_提交任务到cached线程池时会先触发线程的创建吗?
      • 237_第一个任务到cached线程池的入队失败以及非core线程执行
      • 238_线程池已有线程在执行任务时再次提交任务会如何执行呢?
      • 239_非core线程执行完之后如何尝试从队列获取下一个任务
      • 240_cached线程池有线程的时候提交任务到队列又如何被执行
      • 241_不停往cached线程池提交任务时会导致CPU负载过高吗?
      • 242_cached线程池又会不会触发拒绝任务提交的机制呢?
      • 243_single线程池和scheduled线程池自己研究的一点提示
      • 244_如何根据系统的业务场景需求定制自己的线程池
      • 245_案例实战:服务注册中心集群同步机制基于线程池重构优化
  • Java源码
    • 01、LinkedList
    • 00、ArrayList
    • 02、Vector和Stack:栈数据结构的源码剖析
    • 03、HashMap
    • 04、LinkedHashMap
    • 05、TreeMap源码剖析:自定义排序规则的红黑树map数据结构
    • 06、HashSet、LinkedHashSet、TreeSet的源码剖析
    • 07、Iterator迭代器应对多线程并发修改的fail fast机制
  • JAVA数据结构
    • 09、图
    • 08、二叉树
    • 07、2-3-4树
    • 06、AVL树
    • 05、红黑树
    • 04、树
    • 03、堆
    • 02、栈
    • 01、链表
    • 00、数据结构
  • JAVA基础
    • 第零章:其他知识
      • 00、java相关方法代码
      • 00、锁
      • 00、java线程
      • 01、常用DOS命令
    • 第一章:JAVA简介
      • 01、java简介
      • 02、JRE和JDK
      • 03、Java语言特性
      • 04、搭建Java开发环境
      • 05、HelloWorld案例
    • 第二章:JAVA语言基础
      • 01、数据类型
      • 02、常量
      • 03、变量
      • 04、运算符和表达式
      • 05、类型转换
      • 06、注释
      • 07、关键字
      • 08、标识符
    • 第三章:流程控制
      • 01、条件语句
      • 02、循环语句
    • 第四章:字符串
      • 01、String类
      • 02、时间与字符串
      • 03、正则表达式
    • 第五章:数组
      • 01、数组
      • 02、数组排序
    • 第六章:类和对象
      • 01、类和对象
      • 02、对象内存图
      • 03、成员变量和局部变量
      • 04、封装
      • 05、方法
      • 06、形参和返回值
      • 07、构造方法
      • 08、多态
      • 09、继承
      • 10、抽象类
      • 11、修饰符
      • 12、接口
      • 13、内部类
      • 14、异常
      • 15、Debug
    • 第七章:字符串
      • 01、常用API
      • 03、数据输入
      • 04、Random
    • 第七章:包装类
      • 01、包装类
    • 第八章:数字处理类
    • 第九章:接口、继承与多态
    • 第十章:类的高级特性
    • 第十一章:异常处理
    • 第十二章:集合类
      • 01、集合基础
      • 02、数据结构
      • 03、泛型
      • 04、Conllection
      • 05、Map
      • 06、Collections
    • 第十三章:I/O
      • 01、File
      • 02、字节流
      • 03、字符流
      • 04、特殊操作流
    • 第十四章:反射
      • 01、类加载器
      • 02、反射
    • 第十五章:枚举类型与泛型
    • 第十六章:多线程
      • 01、多线程
      • 02、线程同步
      • 03、生产者消费者
    • 第十七章:网络编程
      • 03、TCP通信程序
      • 02、UDP通信程序
      • 01、网络编程入门
    • 第十八章:数据库操作
    • 第十九章:Lambda表达式
      • 01、Lambda表达式
      • 02、接口组成更新
      • 03、方法引用
      • 04、函数式接口
    • 第二十章:Stream流
      • 01、Stream流
  • Java多线程
    • 第一章:JAVA多线程技能
      • 01、进行和多线程的概念及线程的优点
      • 02、使用多线程
      • 03、Thread方法
      • 04、停止线程
    • 第二章:对象及变量的并发访问
      • 03、SimpleDateFormat线程不安全原因及解决方案
      • 02、volatile关键字
      • 01、synchronized关键字
    • 第三章:线程间通信
      • 01、等待/通知机制
      • 02、通过管道进行线程间通信
      • 03、join方法的使用
      • 04、ThreadLocal的使用
      • 05、InheritableThreadLocal
      • 06、ThreadLocalRandom
    • 第五章:定时器Timer
    • 第六章:单例模式与多线程
      • 01、单列模式与多线程
    • 第七章:线程组与线程异常
      • 01、线程的生命周期
      • 02、线程组
      • 03、线程中异常的处理
  • Java并发编程
    • 第一章:并发背景知识
      • 01、摩尔定律失效“带来”并行编程
      • 02、Java对并发编程的支持历史
      • 03、并发编程中你需要知道的基础概念
      • 04、上下文切换的确切含义了解下
    • 第二章:JMM相关
      • 01、JMM模型
      • 02、Java内存模型的原子性、可见性、有序性
      • 03、先行发生原则(Happens-Before)
    • 第三章:并发基础知识
      • 01、CAS机制
      • 02、Unsafe类
    • 第四章:Atomic类
      • 01、Atomic系列类整体介绍
      • 02、AtomicXXX系列类使用分析
      • 03、LongAdder
    • 第五章:Locks
      • 02.1、WriteLock上锁过程
      • 01、互斥锁Lock&ReentrantLock
      • 02、读写锁ReadWriteLock&ReentrantReadWriteLock
      • 03、Condition
      • 04、StampedLock
      • 05、LockSupport
    • 第六章:并发包工具类
      • 01、CountDownLatch工具
      • 02、CyclicBarrier工具
      • 03、Exchanger工具
      • 04、Semaphore工具
      • 05、Phaser工具
    • 第七章:并发容器
      • 01、复习链表
      • 02、BlockingQueue(阻塞队列)
      • 03、ConcurrentQueue(并发队列)
      • 04、ConcurrentMap(并发映射)
      • 05、写时拷贝算法(Copy On Write)
    • 第八章:并发包之ExecutorService
      • 01、Executor&ExecutorService详解
      • 02、Future和Callback详解
      • 03、ForkJoinPool详解
      • 04、CompletionService详解
      • 05、CompletableFuture详解
  • JavaWeb
    • 00、参考资料
    • 01、Web发展历程
    • 02、Tomcat
    • 03、Servlet
    • 04、过滤器
    • 05、监听器
  • WebSocket
    • 00、参考资料
  • WebService
  • NIO
    • 00、参考资料
    • 01、Java NIO 简介
    • 02、通道(Channel)与缓冲区(Buffer)
    • 03、分散(Scatter)和聚集(Gather)
    • 04、NIO 的非阻塞式网络通信
  • Netty源码
    • 第一周
      • 001_课程计划说明、未来年薪展望以及职业发展规划
      • 002_未来课程计划:Netty核心功能精讲以及核心源码剖析
      • 003_未来课程计划:三个基于Netty的真实大用户量项目实战
      • 004_未来课程计划:从Dubbo源码剖析到Netty在RPC框架中的实战
      • 005_未来课程计划:完成两个工业级的中间件项目的架构重构
      • 006_使用Java原生NIO进行网络编程有哪些缺陷?
      • 007_大名鼎鼎的Netty到底有哪些优点让我们去使用它?
      • 008_搭建一个Netty入门程序的工程以及配置好其Maven依赖
      • 009_一步一步动手开发Netty入门程序的服务端
      • 010_一步一步动手开发Netty入门程序的服务端(2)
      • 011_一步一步动手开发Netty入门程序的客户端
      • 012_一步一步动手开发Netty入门程序的客户端(2)
      • 013_运行我们的Netty第一个入门程序调试一下看看效果
      • 014_把Netty的源码包下载追加到Eclipse中方便我们调试源码
      • 015_先来看看让人懵逼的EventLoopGroup是什么?
      • 016_Netty的EventLoopGroup线程池是如何进行初始化的?
      • 017_那么ServerBootstrap又是个什么东西呢?
      • 018_作业:对比NIO程序自己去探索Netty Server的启动过程
    • 第二周
      • 019_将Netty版本调整回4.x,避免使用废弃的5.x版本
      • 020_对照原生NIO代码看看Netty如何创建ServerSocketChannel
      • 021_Netty是如何对ServerSocketChannel进行初始化的?
      • 022_如何将ServerSocketChannel注册到Selector由独立线程轮询?
      • 023_用一张图来展示出ServerSocketChannel初始化的过程
      • 024_补充一个细节:ServierSocketChannel如何绑定监听端口?
      • 025_Netty的线程是如何轮询ServerSocketChannel的网络连接事件的?
      • 026_如果发现了客户端发起的连接事件是如何进行处理的?
      • 027_Server端对建立好的客户端连接是交给谁来轮询网络请求的?
      • 028_对于客户端发送过来的消息是如何读取以及处理的?
      • 029_系统处理完请求后又是如何将响应消息发送客户端的?
      • 030_作业:大家根据Server端源码分析思路,自行分析Client端源码
      • 031_Netty Client是如何尝试跟Server建立连接的?
      • 032_具体看看Netty Client对Server发起connect请求的源码
      • 033_Netty Client的线程是如何轮询建立好连接的网络事件的?
      • 034_Netty Client是如何将我们准备好的请求发送出去的?
      • 035_从Netty Server端返回的响应是如何接收的?
      • 036_再看Netty线程模型:如果Server端单线程会有什么问题?
      • 037_线程模型的进化:单个Acceptor线程 多个Processor线程
      • 038_支撑百万连接的线程模型:Acceptor线程池
      • 039_Netty中的两个线程池就足够了吗?不,还不够!
      • 040_再看Netty Server端读取请求的网络IO核心源码流程
      • 041_仔细阅读Unsafe内部网络IO的数据缓冲机制源码
      • 042_细看一次网络请求数据到底是如何读取出来的?
      • 044_Netty为请求处理提供的良好扩展:自定义业务逻辑链条
      • 043_原生Java NIO中的ByteBuffer使用时有哪些缺陷?
    • 第三周
      • 045_先回顾一下传统BIO网络通信为什么性能那么差
      • 046_Netty底层基于NIO的非阻塞模型为什么可以支撑高并发
      • 047_JDK 1.4采用select、poll模式实现的NIO是什么原理
      • 048_JDK 1.5之后对NIO优化为采用epoll模式为何提高了性能
      • 049_如何优化Netty的线程模型支撑百万连接接入?
      • 050_Netty的无锁串行化设计思想是如何保证高性能的
      • 051_Netty是如何尽一切可能去优化内部的多线程并发的
      • 052_网络通信中的序列化环节应该如何优化性能?
      • 053_通过Direct Buffer如何大幅度提升网络读写性能?
      • 054_如何通过内存池实现ByteBuf分配与回收的性能优化
      • 055_对核心的网络参数如何优化可以保证高性能?
      • 056_Netty的高可靠性:自动识别连接断开和释放资源
      • 057_链路不可用的自动监测:Netty的空闲检测机制
      • 058_在NioEventLoop线程中处理IO异常避免线程中断
      • 059_NIO epoll空轮询bug:Netty自动识别与处理
      • 060_自动对缓冲池中的缓冲块进行释放避免内存泄露
      • 061_Netty架构设计总结:高并发、高性能、高可靠、易于扩展
      • 062_作业:对于提到的架构设计的细节自己在源码里找出来
    • 第一章:核心组件
      • 00、netty Protobuf 整合实战
      • 00、netty 基于 protobuf 协议 实现 websocket 版本的简易客服系统
      • 00、Netty如何实现同一个端口接收TCP和HTTP请求
      • 00、SpringBoot整合Netty与websocket客户端进行对话
      • 00、Netty与Websocket使用protobuf实现聊天系统
      • 00、开源的H5即时聊天系统 spring-boot netty protobuf vue
      • 00、中文文档
      • 00、如何在前端中使用protobuf(node篇)
      • 00、Netty(一):server启动流程解析
      • 00、浅析 Netty 实现心跳机制与断线重连
      • 00、一款spring zookeeper netty整合的rpc框架使用说明
      • 00、spring boot redis和netty5.0.2冲突
      • 00、Bootstrap & ServerBootstrap
    • 01、Spring Netty实战整合
    • 01、资料
  • JVM虚拟机
    • 00、
    • 01、JVM大纲
  • 设计模式
    • 第一章:从面向对象到函数式编程
      • 01、参考资料
      • 00、反射机制
      • 00、
      • 01、设计模式和原则
      • 00、总结
    • 第二章:创建型模式
      • 01、单例模式
      • 02、工厂模式
      • 03、建造者模式
      • 04、原型模式
      • 05、对象池模式
    • 第三章:行为型模型
      • 01、责任链模式
      • 02、命令模式
      • 03、解释器模式
      • 04、迭代器模式
      • 05、观察者模式
      • 06、中间者模式
      • 07、备忘录模式
      • 08、状态模式
      • 09、策略模式
      • 10、模板方法模式
      • 11、空对象模式
      • 12、访问者模式
    • 第四章:结构型模式
      • 01、适配器模式
      • 02、代理模式
      • 03、装饰器模式
      • 04、桥接模式
      • 05、组合模式
      • 06、外观模式
      • 07、享元模式
    • 第五章:函数式编程
    • 第六章:响应式编程
    • 第七章:响应式设计模式
    • 第八章:应用架构的发展趋势
  • 爬虫与自动化
    • 01、json
    • 00、websocket
    • 01、selenum
暂无相关搜索结果!

    让时间为你证明

    展开/收起文章目录

    分享,让知识传承更久远

    文章二维码

    手机扫一扫,轻松掌上读

    文档下载

    请下载您需要的格式的文档,随时随地,享受汲取知识的乐趣!
    PDF文档 EPUB文档 MOBI文档

    书签列表

      阅读记录

      阅读进度: 0.00% ( 0/0 ) 重置阅读进度

        思维导图备注