摘要: 一、二分搜索模板 简单模板代码: 说明: (1) (start+end)/2 在start+end的值较大的时候有可能会超出范围, 因此这里使用start+(end-start)/2 (2) 为什么使用start+1<end? 为了防止死循环: 循环终止条件为:start+1>=end, 即相邻或者 阅读全文
posted @ 2017-02-06 20:44 carl_ysz 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 一、二叉树深度优先遍历 只介绍先序遍历: (1) 第一种方法是使用stack的结构 (2) 主要要理解后面的分治法 二、分治法 三个例子: 归并排序 快速排序 大多数的二叉树问题 归并排序和快速排队都是典型的分治法。 归并排序:强调先局部有序,再归并为整体有序. 最差时间复杂度和平均复杂度都是log 阅读全文
posted @ 2017-02-06 20:43 carl_ysz 阅读(317) 评论(0) 推荐(0) 编辑
摘要: 一、ByteBuf工作原理 1. ByteBuf是ByteBuffer的升级版: jdk中常用的是ByteBuffer,从功能角度上,ByteBuffer可以完全满足需要,但是有以下缺点: ByteBuffer一旦分配完成,长度固定,不能动态扩展和收缩,当需要编码的POJO对象大于分配容量时发生索引 阅读全文
posted @ 2016-12-21 18:06 carl_ysz 阅读(2964) 评论(0) 推荐(0) 编辑
摘要: 原生的NIO类图使用有诸多不便,Netty向用户屏蔽了细节,在与用户交界处做了封装。 一、服务端创建时序图 步骤一:创建ServerBootstrap实例 ServerBootstrap是Netty服务端的启动辅助类,它提供了一些列的方法用于设置参数,由于参数太多,使用builder模式。 步骤二: 阅读全文
posted @ 2016-12-20 21:11 carl_ysz 阅读(3124) 评论(0) 推荐(0) 编辑
摘要: 来源:《Netty权威指南》 作者:李林峰 一、私有协议介绍 由于现代软件的复杂性,一个大型软件系统往往会被人为地拆分称为多个模块,另外随着移动互联网的兴起,网站的规模越来越大,业务功能越来越多,往往需要集群和分布式部署。模块之间的通信就需要进行跨节点通信。传统的Java应用中节点通信的常用方式: 阅读全文
posted @ 2016-12-19 21:17 carl_ysz 阅读(8766) 评论(2) 推荐(1) 编辑
摘要: 一、HTTP协议的弊端 将HTTP协议的主要弊端总结如下: (1) 半双工协议:可以在客户端和服务端2个方向上传输,但是不能同时传输。同一时刻,只能在一个方向上传输。 (2) HTTP消息冗长:相比于其他二进制协议,有点繁琐。 (3) 针对服务器推送的黑客攻击,例如长时间轮询。 现在很多网站的消息推 阅读全文
posted @ 2016-12-16 23:24 carl_ysz 阅读(21359) 评论(2) 推荐(1) 编辑
摘要: 一、HTTP协议简介 应用层协议http,发展至今已经是http2.0了,拥有以下特点: (1) CS模式的协议 (2) 简单 - 只需要服务URL,携带必要的请求参数或者消息体 (3) 灵活 - 任意类型,传输内容类型由HTTP消息头中的Content-Type加以标记 (4) 无状态 - 必须借 阅读全文
posted @ 2016-12-16 22:10 carl_ysz 阅读(24203) 评论(4) 推荐(0) 编辑
摘要: 上一篇 netty入门篇(1) 一、编码解码技术 如何评价一个编解码技术: 是否支持跨语言,或者说支持的语言是否丰富 编码码流大小,影响传输速度 编码和解码的性能,即时间 类库是否精致,API是否方便 使用难度 1. Java序列化缺点 Java也提供了序列化技术,在工业化工程中有以下缺点: 无法跨 阅读全文
posted @ 2016-12-15 22:00 carl_ysz 阅读(1299) 评论(1) 推荐(0) 编辑
摘要: 上一篇 nio简介 下一篇 netty中级篇(2) 一、为什么选择Netty Netty是最流行的框架之一、健壮性、功能、性能、可定制性和可扩展性在同类框架中首屈一指,因此被大规模使用,例如ROCKETMQ的NameSRV,例如Hadoop的Avro,例如Dubbo中的RPC通信等等。。 为什么选择 阅读全文
posted @ 2016-12-15 16:12 carl_ysz 阅读(1656) 评论(2) 推荐(0) 编辑
摘要: 上一篇 Java I/O演进与Linux网络I/O模型 一、传统BIO java传统bio编程概念: http://www.cnblogs.com/carl10086/p/6034563.html#_label4 使用bio写一个简单的TimeServer 在这个TimeServer的基础上引入线程 阅读全文
posted @ 2016-12-15 12:46 carl_ysz 阅读(768) 评论(0) 推荐(0) 编辑