一,netty+protocol buffers简要说明 Netty是业界最流行的NIO框架之一优点:1)API使用简单,开发门槛低:2)功能强大,预置了多种编解码功能,支持多种主流协议:3)定制能力强,可以通过ChannelHandler对通信框架进行灵活的扩展:4)性能高,通过与其它业界主流的NIO框架对比,Netty的综合性能最优:5)成熟.稳定,Netty修复了已经发现的所有JDK NIO BUG,业务开发人员不需要再为NIO的BUG而烦恼:6)社区活跃,版本迭代周期短,发现的BUG可以…
网络编程 -- RPC实现原理 -- 目录 啦啦啦 V2——Netty -- pipeline.addLast(io.netty.handler.codec.MessageToMessageCodec<INBOUND_IN, OUTBOUND_IN>) 覆写编码解码方法. pipeline相当于拦截器.在pipeline中添加MessageToMessageCodec接口的实现类,该接口的实现类中的encode()方法自动将发送的Object对象转换为ByteBuf,decode()方法自动将…
前言 最近在调研Netty的使用,在编写编码解码模块的时候遇到了一个中文字符串编码和解码异常的情况,后来发现是笔者犯了个低级错误.这里做一个小小的回顾. 错误重现 在设计Netty的自定义协议的时候,发现了字符串类型的属性,一旦出现中文就会出现解码异常的现象,这个异常并不是出现了Exception,而是出现了解码之后字符截断出现了人类不可读的字符.编码和解码器的实现如下: // 实体 @Data public class ChineseMessage implements Serializabl…
前言 早在去年 11 月底就已经看过<PHP 实现 Base64 编码/解码>这篇文章了,由于当时所掌握的位运算知识过于薄弱,所以就算是看过几遍也是囫囵吞枣一般,不出几日便忘记了其滋味. 只得其形,不知其意. 所以暗下决心写一篇阅读笔记,以此来较量是否掌握了其原理及位运算相关知识.但是作为一名拖延症患者,导致此事一再拖延,直至今日. 人总是趋利避害的. 记得刚出来实习的时候,室友大牛会截图问我一些代码是什么意思.我跟他说,你一行行的读,一边读一边写注释,等你读完就知道这些代码是什么意思. 对于…
1.Netty 是一款异步的事件驱动的网络应用程序框架,支持快速地开发可维护的高性能的面向协议的服务器和客户端. 2.早期Java API 使用的阻塞函数 // 创建一个新的ServerSocket,用以监听指定端口上的连接请求 ServerSocket serverSocket = new ServerSocket(portNumber); // 对 accept的调用将被阻塞,直到一个连接建立 SufferedReader in = serverSocket.accept(); -- 这种方…
引言 好久没有写博客了,近期准备把Netty源码啃一遍.在这之前本想直接看源码,但是看到后面发现其实效率不高, 有些概念还是有必要回头再细啃的,特别是其线程模型以及EventLoop的概念. 当然在开始之前还是有务必要对IO模型要有清晰准确的认识. 传送门 事件循环机制(EventLoop) Netty线程模型中一个非常重要的概念: 事件循环机制(EventLoop) 这个概念在JS上体现的也非常淋漓尽致,下面在开始介绍netty的线程模型之前,允许我简单的介绍下事件循环机 制在JS中的体现 J…
Solr In Action 笔记(2) 之评分机制(相似性计算) 1 简述 我们对搜索引擎进行查询时候,很少会有人进行翻页操作.这就要求我们对索引的内容提取具有高度的匹配性,这就搜索引擎文档的相似性计算,如何准确的选出最符合查询条件的文档. <这就是搜索引擎>里面对相似性计算进行了简单的介绍. 内容的相似性计算由搜索引擎的检索模型建模,它是搜索引擎的理论基础,为量化相关性提供了一种数学模型,否则没法计算.当然检索模型理论研究存在理想化的隐含假设,即假设用户需求已经通过查询非常清晰明确地表达出…
1.小数据池 代码块:  一个模块, 一个函数, 一个类, 甚至每一个command命令都是一个代码块. 一个文件也是一个代码块.而不需要创建一个新的数据. 这样会节省更多的内存区域. 在cmd命令行执行python时,每一条代码就是一个代码块;    在pycharm中执行文件时,每一个.py文件就是一个代码块. is:  判断的是两者的内存地址是否一致.   print(id(变量))  ----> 查内存地址 ==:  判断两者值是否一致. 小数据池:  一种缓存机制, 可以快速地创建字符…
BOM 浏览器对象模型 BOM(Browser Object Model) 是指浏览器对象模型,是用于描述这种对象与对象之间层次关系的模型,浏览器对象模型提供了独立于内容的.可以与浏览器窗口进行互动的对象结构.BOM由多个对象组成,其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象. window BOM 的核心是window对象,它表示浏览器的一个实例.在浏览器中,即是javascript访问浏览器窗口的一个接口,又是ECMAScript规定的Global对象,…
一.文件操作基本流程 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统.操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来. 有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的…