摘要:
Selector用于将一组Channel的事件发生聚合在一个(确切的说不是一个,但不妨先这样理解)线程中进行处理,还是先介绍它相关组件的抽象结构。 通道和选择器 通道和选择器的关系是,通道注册一部分事件到选择器中,然后用户可以通过选择器对其中所有的通道注册事件进行监听,事件发生,选择器就会接收到。 阅读全文
摘要:
原文Behind the scenes: How do lambda expressions really work in Java? 作者:Ben Evans 通过字节码查看Java如何处理lambda lambda在Java代码中和JVM中式什么样的?显然,它是某种类型的值,Java允许两种类型 阅读全文
摘要:
前置知识:NIO——Channel接口关系 AbstractInterruptibleChannel 从上一篇笔记上也可以看出,Java的NIO规定了一堆Channel的接口,它们有很多自己的约定,如果不创建一堆抽象类供后面的Channel实现类使用,那么所有Channel都要自己实现那些约定,所以 阅读全文
摘要:
Channel代表Java和一个IO设备之间交换数据的通道,而Buffer代表装载这些数据的器具。 Channel类有很复杂的接口关系,这篇文章主要介绍Channel类的接口关系。 AutoCloseable和Closeable 这两个接口和NIO没关系,它们只是代表可关闭的对象。 java.lan 阅读全文
摘要:
Buffer是Java NIO技术中的一个组件,简单来说它就是一个缓冲区,但它比我们自己编写的byte[] buf具有更多功能,甚至还支持堆外的直接内存分配,比较适用于大型数据的传输。 本笔记只记录Buffer中我觉得不太熟悉的API。 mark 调用mark时,当前Buffer的位置被记下,等调用 阅读全文
摘要:
想学Netty,所以先学下一直也没开始学的NIO。 传统的同步阻塞模型 下面是类似Java的伪代码编写的基于Java传统BIO的socket服务程序: while(true) { sock = serverSocket.accept(); // 请求到来前阻塞 ins = sock.getInput 阅读全文
摘要:
前置 不要把垃圾收集器的功能看的太单一,除了回收垃圾之外,内存的组织、分配、管理等操作也是垃圾收集器的工作。有的垃圾收集器选择分代设计,有的选择不分代。 垃圾收集器的性能主要从三方面考虑:停顿时间、吞吐量和内存占用 对于第二点,这三种目标无法同时满足,一个垃圾回收器基本只能满足其中的一到两点。比如这 阅读全文
摘要:
原书《大型分布式网站架构设计与实践》第四章——系统稳定性 本篇中的内容来自4.1 ~ 4.2,主要介绍了Linux下的用来监控系统性能和负载的一些常用命令和手段。 在线日志分析 常用Linux命令 介绍了一些Linux常用命令,其中有不少我之前不知道的。 cat cat命令 cat -n显示行号 分 阅读全文
摘要:
目的:将便于记录的域名转换成IP地址,该映射可以是一对一的或是多对一的 域名解析服务通过网络中的DNS服务器完成,DNS服务器中记录域名到IP的映射。当我们通过域名访问网络中的某台主机时,先通过查询DNS服务器得到域名对应的IP地址,然后再使用IP地址访问。 层次结构 下面是DNS服务器的层次结构, 阅读全文
摘要:
原书《大型分布式网站架构设计与实践》第二章——分布式系统基础设施 分布式缓存 绝大多数数据库存储在磁盘上,磁盘IO的性能远不如内存,当大量请求并发到来,在磁盘前面架设一道缓存系统非常必要。分布式缓存可以解决单体系统内存成本高,处理能力有限的缺点。 Memcache 是一个开源对象缓存系统,基于键值对 阅读全文