crylearner的专栏

about C/C++ , data structure and algorithm

一个简单RPC框架是如何炼成的(VI)——引入服务注册机制

开局篇我们说了,RPC框架的四个核心内容:RPC数据的传输, RPC消息协议, RPC服务注册, RPC消息处理。 接下来处理RPC服务的注册机制。所谓注册机制,就是Server需要声明支持哪些rpc方法,然后当客户端发送调用某个声明的rpc方法之后,服务端能自动找到执行该请求的具体方法。1. 引...

2015-07-20 22:52:08

阅读数 3405

评论数 0

一个简单RPC框架是如何炼成的(V)——引入传输层

开局篇我们说了,RPC框架的四个核心内容 RPC数据的传输。RPC消息 协议RPC服务注册RPC消息处理    接下来处理数据传输。实际应用场景一般都是基于socket。socket代码比较多,使用起来也比较麻烦。而且具体的传输通道使用socket或者其他的方式,如更上层的http,或者an...

2015-07-20 22:47:41

阅读数 1769

评论数 0

一个简单RPC框架是如何炼成的(IV)——实现RPC消息的编解码

之前我们制定了一个很简单的RPC消息 的格式,但没有实现相应的encode和decode方法,下面我们处理掉这个编解码问题。这里我还是简单原则,重点在于晓义嘛。利用python里的两个运算。 str 和eval,实现编解码。

2015-07-19 19:29:16

阅读数 2185

评论数 0

一个简单RPC框架是如何炼成的(III)——实现带参数的RPC调用

上一篇,我们制定了一个很简单的RPC消息 的格式,但是还遗留了两个问题 我们并没有实现相应的encode和decode方法,没有基于可以跨设备的字符串传输,而是直接的内存变量传递。现在的RPC request不支持带参数的请求命令。如add(a, b), 如何在RPC消息中描述参数a,b 。 ...

2015-07-19 08:39:23

阅读数 4449

评论数 0

一个简单RPC框架是如何炼成的(II)——制定RPC消息

开局篇我们说了,RPC框架的四个核心内容 RPC数据的传输。RPC消息 协议RPC服务注册RPC消息处理 下面,我们先看一个普通的过程调用 class Client(object): def __init__(self): self.remote = None...

2015-07-16 21:22:09

阅读数 2534

评论数 0

一个简单RPC框架是如何炼成的(I)——开局篇

开场白,这是一个关于RPC的相关概念的普及篇系列,主要是通过一步步的调整,提炼出一个相对完整的RPC框架。 RPC(Remote Procedure Call Protocol)——远程过程调用协议,基于C/S模型。有四个核心内容:RPC数据的传输,RPC消息的表示与编解码,RPC服务注册,RPC...

2015-07-16 21:20:04

阅读数 8685

评论数 1

读书报告之《修改代码的艺术》 (III)

《修改代码的艺术》,每次读来,都会相当重构,正如作者自己就说到的:从技术上讲,书中列到的解依赖技术,都是重构技术,因为他们都保持了代码的行为。这里庄稼人再多引用《大话重构》中的一句话:先重构我们的系统,使之可以应付那个需求,然后再添加代码,实现新需求。是的,正如读书报告(I)中所阐述的,引入单元测...

2015-07-06 22:11:56

阅读数 719

评论数 0

读书报告之《修改代码的艺术》 (II)续2

修改if else 最忌惮的是天马行空,自负自己对代码的理解,直接重新改写条件语句。但另一方面,相信各位看官也注意到了,理解又是必不可少的,完全死死的做逻辑变形是异常繁琐的(这个在第二个例子中尤为明显),具体如何操作,不好意思,这就是"修改代码的艺术"。口才不行,修行还靠个人。...

2014-09-08 22:27:52

阅读数 1089

评论数 0

读书报告之《修改代码的艺术》 (II)续

这里作为(II)的续篇,继续距离 复杂的嵌套if else 的处理。 为了保持篇幅不会太长,所以截断了,以一篇新的文章形式给出。 化简复杂的if else语句,基本的手段 针对头重脚轻的if else,使用return快速返回,从而减少嵌套层数。合并分支。有些分支的执行内容相同,往...

2014-09-06 09:50:10

阅读数 957

评论数 0

读书报告之《修改代码的艺术》 (II)

4. 修改时应当测试哪些方法 作者提出了影响结构图的概念。说穿了,就是CallRelation和ReferenceRelation,就是查看某个方法(变量)被哪些方法引用,以及自身又引用了哪些方法,依次类推。这个复杂的关系网实际就是一颗风险评估树(图)。通过这棵树,我们可以知道某个修改会影响到哪些...

2014-09-05 23:39:09

阅读数 1102

评论数 0

读书报告之《修改代码的艺术》 (I)

《修改代码的艺术》,英文名《Working Effectively with Legacy Code》,中文翻译的文笔上绝对谈不上“艺术”二字,愧对艺术二字(当然译者不是这个意思)。书中第三部分不论是例子还是解说都有点混乱,远不如《重构——改善既有代码设计》一书。此书精华在于第一、二部分。 如何学...

2014-09-05 00:20:38

阅读数 4001

评论数 2

python 计算校验和

校验和是经常使用的,这里简单的列了一个针对按字节计算累加和。其实,这种累加和,使用将字节翻译为无符号整数和带符号整数,结果是一样的。 使用python计算校验和时记住做截断就可以了。 这里仅仅是作为一个代码样本,权作标记,直接上代码 ''' Created on 2014年9月4日 @autho...

2014-09-04 22:05:28

阅读数 7619

评论数 0

python常用的十进制、16进制、字符串、字节串之间的转换(长期更新帖)

进行协议解析时,总是会遇到各种各样的数据转换的问题,这里详细列举了整数之间的进制转换,以及整数、字符串、字节串三者之间的相互转换。当然仅仅是抛砖引玉,有更好更简单的方法,欢迎欢迎

2014-08-27 00:19:41

阅读数 240497

评论数 13

doxygen + doxypypy + docstring 生成python文档

虽然doxygen声称可以同时支持两种风格的python注释,原生的docstring和类似java doc风格的##。但实际对原生的docstring支持并不好。这里介绍了一个开源的doxypypy工具,可以将原生的docstring转换为类java doc风格的##, 从而实现doxygen对...

2014-08-24 21:18:45

阅读数 5597

评论数 0

用python实现wireshark的follow tcp stream功能

长话短说,wireshark有一个follow tcp stream功能,这个功能很方便。美中不足的是提取出的stream 数据没有时间戳等其他信息,在分析数据的延时和丢包问题时就有些力不从心了。这里简单用python实现了一个简单follow tcp stream功能,同时保留了tcp信息。 ...

2014-08-20 22:09:12

阅读数 10891

评论数 2

repo sync 时自动切换当前分支的remote track分支的问题

使用repo sync时,如果当前仓库有检出本地分支,假设为dev, 对应的远程track分支为origin/dev。 而manifest.xml中指定的track分支为origin/master,那么在repo sync时会自动将当前的dev分支的远程track分支修改为origin/maste...

2014-07-23 23:34:44

阅读数 2940

评论数 3

Git图形用户工具介绍及比较

GITK简介   gitk - The git repository browser          Displays changes in a repository or a selected set of commits. This includes visual...

2014-07-23 22:01:16

阅读数 1349

评论数 0

命令行执行python模块时提示包找不到的问题

庄稼人不是专职python开发的道友,虽然与python相识已多年,可惜相识不相知,只是偶尔借助pydev写一些简单的小工具。 多年来,一直困惑于这样一个问题:同样的工程,同样的代码,使用pydev可以运行任意一个python脚本,而使用命令行运行却不行?命令行下(或者双击执行)总是提示“Impo...

2014-05-11 17:01:14

阅读数 47222

评论数 5

多分支开发策略

分支策略                                                                                                                                     author:cryl...

2014-01-25 23:32:33

阅读数 4825

评论数 0

通用makefile是如何炼成的(XI)--最后的完结篇,envsetup.sh

长话短说,没有envsetup.sh, 当你需要单独编译一个模块,或者做点其他工作时,你总是会感到为什么命令行总是那么麻烦!有了envsetup.sh, 对命令行人生有新的感悟,原来我也可以做一个简单的“菜鸟”。 这个envsetup.sh是从android的代码中考过来的,做了很大的简化。goo...

2014-01-14 22:39:31

阅读数 2060

评论数 18

提示
确定要删除当前文章?
取消 删除