摘要: 一、Java I/O 演进之路 1.1 Old I/O Java1.4之前的早期版本,Java对I/O的支持并不完善,在开发高性能的I/O程序的时候,会面临一些巨大的挑战和困难,主要问题如下: 没有数据缓冲区,I/O性能存在问题 数据缓冲区:Buffer, 如:ByteBuffer、CharBuff 阅读全文
posted @ 2018-09-10 01:08 17退而结网 阅读(641) 评论(0) 推荐(0) 编辑
摘要: MySQL逻辑架构 MySQL逻辑架构整体分为三层,最上层为客户端层,并非MySQL所独有,诸如:连接处理、授权认证、安全等功能均在这一层处理。 MySQL大多数核心服务均在中间这一层,包括查询解析、分析、优化、缓存、内置函数(比如:时间、数学、加密等函数)。所有的跨存储引擎的功能也在这一层实现:存 阅读全文
posted @ 2018-09-10 00:56 17退而结网 阅读(120) 评论(0) 推荐(0) 编辑
摘要: 1.netty如何处理以下问题: 客户端断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常码流处理 epoll bug:导致Selector空轮询,最终导致CPU 100% Netty的优点: API使用简单,开发门槛低 功能强大,预置了多种编解码功能,支持多种主流协议 定制能力强,可以通过Ch 阅读全文
posted @ 2018-09-10 00:51 17退而结网 阅读(83) 评论(0) 推荐(0) 编辑
摘要: 关键代码见:// *** 写半包判断处理 start ***​ 与 // *** 写半包判断处理 end ***​ 之间标注的内容 循环遍历发送缓冲区,对消息的发送结果进行判断,下面具体展开进行说明: 从ChannelOutboundBuffer弹出第一条发送的ByteBuf,然后获取该ByteBu 阅读全文
posted @ 2018-09-10 00:49 17退而结网 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 内存池采用了slab分配思路,内存被划分成多种不同大小的内存单元,在分配内存时根据使用者请求的内存大小进行计算,匹配最接近的内存单元。在计算时分下面几种情况: 请求的内存大小是否超过了chunkSize,如果已超出说明一个该内存已经超出了一个chunk能分配的范围,这种内存内存池无法分配应由JVM分 阅读全文
posted @ 2018-09-10 00:48 17退而结网 阅读(296) 评论(0) 推荐(0) 编辑
摘要: 1.NioServerSocketChannel DefaultServerSocketChannelConfig#setOption @Override public <T> boolean setOption(ChannelOption<T> option, T value) { validat 阅读全文
posted @ 2018-09-10 00:46 17退而结网 阅读(600) 评论(0) 推荐(0) 编辑
摘要: 待补充 1.入站、出站事件handler调用顺序 2.入站、出站事件的范围 阅读全文
posted @ 2018-09-10 00:45 17退而结网 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 1.请求创建Connection 2.创建Connection 3.发送请求 4.接收响应 阅读全文
posted @ 2018-09-10 00:26 17退而结网 阅读(378) 评论(0) 推荐(0) 编辑
摘要: 待补充: Deployment Architecture 阅读全文
posted @ 2018-09-10 00:24 17退而结网 阅读(90) 评论(0) 推荐(0) 编辑
摘要: 3.1 Jetty POJO配置 Jetty核心组件都是Plain Old Java Objects (POJOs) 。配置Jetty的过程大多是实例化、组装、配置Jetty POJO属性。可以通过: 编写Java代码完成Jetty对象的实例化、组装,即:Embedding Jetty 使用Jett 阅读全文
posted @ 2018-09-10 00:24 17退而结网 阅读(456) 评论(0) 推荐(0) 编辑
摘要: 一.运行Jetty 切换到Jetty安装目录(JETTY_HOME),运行: $ java -jar start.jar 2017-09-20 15:45:11.986:INFO::main: Logging initialized @683ms to org.eclipse.jetty.util. 阅读全文
posted @ 2018-09-10 00:22 17退而结网 阅读(815) 评论(0) 推荐(0) 编辑
摘要: 拓扑结构 消费者群组 Kafka的消费组从属于消费者群组。一个群组里面的消费者订阅的是同一个主题(topic),每个消费者接收主题一部分分区的消息。 Kafka消费者的横向伸缩: 为每一个需要获取一个或者多个主题全部消息的应用程序创建一个消费者群组,然后往群组里添加消费者来伸缩读取能力和处理能力,群 阅读全文
posted @ 2018-09-10 00:18 17退而结网 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 默认分区器 ProducerRecord对象包含了目标主题(topic)、键(key)和值(value)。Kafka的消息是一个个键值对,ProducerRecord对象可以只包含目标主题和值,键可以设置为默认的null,不过大多数应用程序会用到键。键有两个用途:可以作为消息的附加信息,也可以用来决 阅读全文
posted @ 2018-09-10 00:16 17退而结网 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 对于需要保证顺序的消息,在Producer发布消息时,需要保证分发到同一Partition,并且设置参数max.in.flight.requests.per.connection=1。同时,每个Partition只会被consumer group中的一个consumer消费。如此便可严格保证Kafk 阅读全文
posted @ 2018-09-10 00:14 17退而结网 阅读(144) 评论(0) 推荐(0) 编辑
摘要: HDFS(Hadoop Distributed FileSystem), 是一种被设计成适合运行在通用硬件上的分布式文件系统。HDFS是一个高度容错性的系统,适合部署在廉价的 机器上。它能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。 一、特点及限制 HDFS以流式数据访问模式来存储超大文件 阅读全文
posted @ 2018-09-10 00:08 17退而结网 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 以下的安装说明适用于Mac、Hadoop2.9.0 一、安装前提 支持的平台 GNU/Linux可以作为开发、生产运行环境,在GNU/Linux部署的集群可以支持2000+个节点。 也支持windows平台。 依赖的软件 Java,Hadoop2.7以上版本要求Java版本7以上; 安装了ssh,并 阅读全文
posted @ 2018-09-10 00:06 17退而结网 阅读(157) 评论(0) 推荐(0) 编辑