
网络编程
away_lit
一年,诚心找工作……2019.6
展开
-
Netty
基本内容:链路有效性与心跳检测、内存池、主从reactor模型、直接内存与堆内存、源码分析(fastthreadlocal为什么快、对象池之recycle)1.心跳检测: (a)目的:链路的有效性检测一般采用心跳检测,确认通信对方是否还活着能够继续正常发送/接收消息。(b)两类基本心跳检测机制:1.ping-pong机制,若连续N个周期发送ping而没有收到对方的pong...原创 2018-06-05 19:55:36 · 251 阅读 · 0 评论 -
网络编程基础
基本内容:NIO,unix五种网络编程模型,大小端模式,读写缓冲区与死锁,future模式基本雏形1.NIO与BIOBIO:同步阻塞IO。接收一个客户端连接请求时,新建一个线程为该客户端服务;在客户端释放连接前,该线程将一直被该客户端占用;当客户端释放连接时,该线程被销毁。线程数与并发量呈1:1的关系。问题:1.存在高占用问题、2.大量创建/销毁线程的资源消耗、3.服务器响应缓慢,...原创 2019-06-16 17:45:51 · 209 阅读 · 0 评论 -
protobuf varint编解码实现
varint:int数字用变长字节数组表示。package com.ls.hfvj;import java.util.Arrays;/** * varint:把整数用变长字节数组表示,每个int用1-5个byte表示。一个字节内,低7位是有效数据位,第8位是标识位,1表示有后续字节,0则表示该整数的结束没有后续字节。 * 当整数是小正数时,得到的字节序列明显比较小一些。 * 编...原创 2019-06-16 20:52:00 · 1161 阅读 · 0 评论 -
base64编码实现
package com.ls.hfvj;/** * 思路:base64只有64个字符,因此只需要6个二进制位来表示 实现:每3个字节为一组凑4个base64字符。 * 多余一个字节补4个0bit位(共12位),凑成2个base64字符;多余两个字节补2个bit位(共18位),凑成3个base64字符。 * 为了知道添加了bit位,(便于解码),一个=表示添加了2个bit位,两个=表示添...原创 2019-06-16 20:54:59 · 349 阅读 · 0 评论 -
skiplist
package com.ls.hfvj;import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.List;/** * 跳表:实现对有序链表的类似二分查找 * 思路:<node,nodelevel>二元组共同确定了下一个候选结点c...原创 2019-07-05 20:59:03 · 302 阅读 · 0 评论