摘要:
如下是《极客时间》的分布式算法的学习笔记整理的思维导图,待继续补充完善细节,但是这个图可以让开发人员对分布式基础理论有个体系化的认识。 阅读全文
摘要:
上一篇我们完成了对Channel的学习,这一篇让我们来学习一下ChannelFuture。 ChannelFuture的简介 ChannelFuture是Channel异步IO操作的结果。 Netty中的所有IO操作都是异步的。这意味着任何IO调用都将立即返回,而不能保证所请求的IO操作在调用结束时 阅读全文
摘要:
上一篇我们通过一个简单的Netty代码了解到了Netty中的核心组件,这一篇我们将围绕核心组件中的Channel来展开学习。 Channel的简介 Channel代表着与网络套接字或者能够进行IO操作(read、write、connect或者bind)的组件的联系,一个Channel向用户提供了如下 阅读全文
摘要:
前文总结了NIO的内容,有了NIO的一些基础之后,我们就可以来看下Netty。Netty是Java领域的高性能网络传输框架,RPC的技术核心就是网络传输和序列化,所以Netty给予了RPC在网络传输领域巨大的支持。 一个简单的Netty代码实现 网络传输基于的是TCP协议,所以会有服务端和客户端之分 阅读全文
摘要:
前文提到网络IO可以使用多路复用技术,而文件IO无法使用多路复用,但是文件IO可以通过减少底层数据拷贝的次数来提升性能,而这个减少底层数据拷贝次数的技术,就叫做ZeroCopy。 操作系统层面的ZeroCopy 这一节,从《Zero Copy I: User-Mode Perspective》而来, 阅读全文
摘要:
前文开了高并发学习的头,文末说了将会选择NIO、RPC相关资料做进一步学习,所以本文开始学习NIO知识。 IO知识回顾 在学习NIO前,有必要先回顾一下IO的一些知识。 IO中的流 Java程序通过流(Stream)来完成输入输出。流是生产或者消费信息的抽象,流通过Java的输入输出与物理设备连接, 阅读全文
摘要:
故事起源于书籍《深入理解Java虚拟机》,案例如下: 这段代码在JDK1.6中执行会得到两个false,在JDK1.7中会得到一个true和一个false。笔者未在JDK1.7执行,选择的是在JDK1.8中执行,结果是和1.7是一样的。书中是这样解释产生差异的原因:在JDK1.6中,intern() 阅读全文
摘要:
基于AQS的前世今生,来学习并发工具类CountDownLatch。本文将从CountDownLatch的应用场景、源码原理解析来学习这个并发工具类。 1、 应用场景 CountDownLatch是并发包中用来控制一个或者多个线程等待其他线程完成操作的并发工具类。现以工作中的一个场景来描述下Coun 阅读全文
摘要:
近期开始学习JVM,看的是周老师的《深入理解Java虚拟机》,打算先自己编译个JDK来提升对JVM的兴趣。本文分三部分来描述编译OpenJDK的过程,分别是编译前准备工作、构建编译环境、进行编译,在这三部分内容中顺带把趟的坑一起说明下。 一、编译前准备工作 1.1 安装Linux环境 编译OpenJ 阅读全文