编程相关

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

006_应用层:HTTP协议又是什么以及七层网络模型的总结

浏览 82 扫码 分享 2022-07-24 23:19:21

    若有收获,就点个赞吧

    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 ) 重置阅读进度

          思维导图备注