求阙厅

春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。

IO 系列 AIO

AIO 异步套接字通道是真正的异步非阻塞I/O,对应于UNIX网络编程中的事件驱动I/O。它不需要通过多路复用器对注册的通道进行轮询操作即可实现异步读写,从而简化了NIO的编程模型。 JDK底层通过线程池 ThreadPoolExecutor来执行回调通知,异步回调通知类由AsynchronousChannelGroupImpl实现,它经过层层调用,最终调回completed方法,完成回调...

Netty 系列 解码器

将字节流转换成消息的解码器 Netty解码器有很多种,比如基于长度的、基于分割符的、私有协议的,但是总体的思路都是一致的。 拆包思路:当数据满足了解码条件时,将其拆开。放到数组,然后发送到业务 handler 处理。 半包思路:当读取的数据不够时,先存起来,直到满足解码条件后,放进数组,送到业务 handler 处理。 概念 frame 帧 解析器 一般情况下,通过...

Netty 系列 概览

概念 Netty是异步的、事件驱动的网络应用程序框架,它提供了对TCP、UDP和文件传输的支持,用以快速开发高性能、高可靠性的面向协议的服务器和客户端。高性能之处主要来自于其 I/O 模型和线程模型;Netty的所有IO操作都是异步非阻塞的,通过Future-Listener机制,用户可以方便的主动获取或者通过通知机制获得IO操作结果。 ByteBuf 是netty框架自有的底层字符串对...

算法 系列 数据结构

基础数据结构...

「队列」、「栈」这两种数据结构既可以使⽤链表也可以使⽤数组实现。⽤数组实现,就要处理扩容缩容的问题;⽤链表实现,没有这个问题,但需要更多的内存空间存储节点指针。 「图」的两种表⽰⽅法,邻接表就是链表,邻接矩阵就是⼆维数组。邻接矩阵判断连通性迅速,并可以进⾏矩阵运算解决⼀些问题,但是如果图⽐较稀疏的话很耗费空间。邻接表⽐较节省空间,但是很多操作的效率上肯定⽐不过邻接矩阵。 「散列表」就是通...

算法 系列 排序

十大排序算法

术语 稳定排序 稳定排序:如果 a 原本在 b 的前面,且 a == b,排序之后 a 仍然在 b 的前面,则为稳定排序 非稳定排序 如果 a 原本在 b 的前面,且 a == b,排序之后 a 可能不在 b 的前面,则为非稳定排序。 排序算法 快速排序 非稳定排序 平均时间复杂度O(n log n) 最坏时间复杂度:O(n2) 最好时间复杂度:O(n log n)...

算法 系列 动态规划

基础数据结构...

如何判断一个问题能否使用DP解决呢?能将大问题拆成几个小问题,且满足无后效性、最优子结构性质。 动态规划问题的⼀般形式就是求最值。动态规划其实是运筹学的⼀种最优化⽅法,只不过在计算机问题上应⽤⽐较多,⽐如说求最⻓递增⼦序列呀,最⼩编辑距离等等。既然是要求最值,核⼼问题是什么呢?求解动态规划的核⼼问题是穷举。因为要求最值,肯定要把所有可⾏的答案穷举出来,然后在其中找最值: ⾸...

算法 系列 分治

解析常见算法...

分治法是构建基于多项分支递归的一种很重要的算法范式。字面上的解释是「分而治之」,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。 这个技巧是很多高效算法的基础,如排序算法(快速排序、归并排序)。 另一方面,理解及设计分治法算法的能力需要一定时间去掌握。正如以归纳法去证明一个理论,为了使递归能够推行,很多时候需要用...

算法 系列 二叉树

基础数据结构...

⼆叉树算法的设计的总路线:明确⼀个节点要做的事情,然后剩下的事抛给框架。 完全二叉树 高度为 n 的二叉树,其前 n - 1 层必须被填满,第 n 层也要从左到右顺序填满。 二叉搜索树 二叉搜索或者是一棵空树,或者是具有下列性质的二叉树: 若左子树不空,则左子树上所有结点的值均小于它的根结点的值 若右子树不空,则右子树上所有结点的值均大于它的根结点的值 左、右...

算法 系列 二叉堆

基础数据结构...

概念 二叉堆是一种特殊的堆。具有如下的特性: 具有完全二叉树的特性。 堆中的任何一个父节点的值都大于等于它左右孩子节点的值,或者都小于等于它左右孩子节点的值。 其主要操作就两个, sink (下沉)和 swim (上浮),⽤以维护⼆叉堆的性质。其主要应⽤有两个,⾸先是⼀种排序⽅法「堆排序」,第⼆是⼀种很有⽤的数据结构「优先级队列」。 根据第二条特性,我们又可以把二叉堆分成两...

Netty 系列 粘包.半包

Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. 概念 TCP/IP协议 是一个协议簇. TCP TCP(Transmis...