tcp分包一般在pipeline的前部使用DelimiterBasedFrameDecoder, FixedLengthFrameDecoder, LengthFieldBasedFrameDecoder, or LineBasedFrameDecoder,分别适用于固定分隔符、固定长度帧、长度字段、换行符分割四种情况。但是,这四种不能涵盖tcp分包的全部情况,举个栗子:http协议的解析就不是上面四种中的一种。解析http协议或者其他自定义协议时,就需要用到ByteToMessageDecoder创建自己的“流式”解析器。netty的http解析器(HttpObectDecoder)就是继承ByteToMessageDecoder并override decode方法实现的。
... ➦前一篇文章介绍了sogo
这个socks5代理的实现,在原始的sogo实现中,有一个重大的问题是:没有复用内存,导致频繁GC,导致cpu占用很高。对于socket通信这种io密集的应用,复用[]byte
还是很重要的,不然每次去make新的[]byte
,这些[]byte
迟早要被GC,这就导致了cpu占用高的问题。解决这个问题也很简单,就是引入内存池。
之前写了一个http代理,用起来也是十分地舒服,但是有几个点还是有些遗憾的:
所以,我又写了一个socks5代理,起名叫sogo。
sogo本身包含sogo(client)和sogo-server。如果把sogo和sogo-server看成一个整体,一个黑盒,这个整体就是一个socks5代理。sogo(client)与本地电脑交互;sogo-server与目标网站交互;sogo(client)和sogo-server之间的交互就是http协议包裹payload进行通信。
... ➦其实只是博客中想嵌入16:9的youtube视频,但youtube官方的嵌入代码是固定宽度1280,高度720,在手机上表现十分不好。因此有了这个偏前端的主题。
... ➦详情见github项目rabbitmqdemo
RabbitMQ是使用Erlang编写的消息中间件,因此首先需要安装Erlang,而且RabbitMQ与Erlang版本有着对应关系。
... ➦“网络舆情爬取系统”是针对在一定的社会空间内,围绕中介性社会事件的发生、发展和变化,民众对社会管理者产生和持有的社会政治态度于网络上表达出来意愿集合而进行的计算机监测的系统统称。
... ➦经过2个月的开发,我的http代理可以说没有遗憾了,当然还有可以改进的地方,比如多用户认证啥的,但是没有必要啦。
为了在安卓上也能愉快地使用自己开发的代理,研究了一下安卓Vpnservice,在此记录一下当前的进度,并确定以后的开发思路。
... ➦HttpProxy是一个轻量、稳定、高性能的http代理,仅仅依赖netty和日志框架,实现http中间人代理和https隧道代理。google、youtube视频、满带宽下载、作为git的代理、作为shell的代理、作为docker的代理等场景都运行完美。
这一篇博客记录一下如何部署和使用这个代理
... ➦这是上一篇java-AES128加密-代码与一些约定的后续。这一篇将会记录自己看到的在AES128之后所做的混淆。混淆原来为c语言实现,自己转成了java实现。感觉这一套比较好用,所以记下来变成自己的😁咳咳,最终发现这个混淆就是对Base64的一个实现,只是将64个可打印字符的顺序弄乱了。所以我有了自定义Base64来实现混淆的代码???黑人问号
... ➦