摘要: 在通信系统中,最基本的信息的传递都需要两步,发送方发送的消息和对方的回复确认:A->B Send, B->A Reply(ACK)。如果多接触一下其他行业的通信流程和规范,例如航空、铁路调度,就会明白这一点。 TCP 建联,本质上需要传递两条信息:A->B 的初始 SYN 号,B->A 的初始 SY 阅读全文
posted @ 2019-01-09 21:26 千岛寒流 阅读(383) 评论(0) 推荐(0) 编辑
摘要: 如果用过mercury(HG),那么理解Git的运作方式就轻松多了。两者是相同的分布式版本管理工具,只是某些功能有着细微的差别 - Git的管理粒度更加细腻,因此操作上也比HG复杂一点。例如,修改文件并提交,hg会自动跟踪到,并不需要你去手动add,但是在git里,无论新增还是修改,都必须add相应 阅读全文
posted @ 2017-09-15 21:52 千岛寒流 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 上一篇文章讲解了带位域的结构体,在从大端机(Big Endian)传输到小端机(Little Endian)后如何解析位域值。下面继续深入详解字节序,以及位域存储的方式。 (1) 我们知道,存储数字时,对小端机而言,数字的低位,存在低地址,高位存在高地址。大端机正相反。 (2) 读取的方式,也是一样 阅读全文
posted @ 2017-08-30 22:11 千岛寒流 阅读(2997) 评论(0) 推荐(2) 编辑
摘要: python并不刻意区分“按值传递”和“按引用传递”。 在底层,python将值分为不可变对象(比如int,str)和可变对象(比如列表)。所有的变量都是对某个对象的引用,赋值(=)和函数参数传递,都将改变变量所引用的对象。 对于不可变对象,赋值和传参将导致新创建对象,这和C++的引用行为是不同的。 阅读全文
posted @ 2016-06-26 18:48 千岛寒流 阅读(700) 评论(0) 推荐(0) 编辑
摘要: 最近又遇到了几年前遇到的问题,标记一下。 对于跨字节位域(bit field)而言,如果数据传输前后环境的字节序不同(LE->BE,BE->LE),简单地调用(ntohs/ntohl/htons/htonl)并不能正确读取位域的值。 例如: 其中,tag,field2,pad是字节内位域,field 阅读全文
posted @ 2016-05-29 16:35 千岛寒流 阅读(2053) 评论(0) 推荐(0) 编辑
摘要: 去年互联网地图行业开始引入众包模式,国内比较大的地图商,比如四维图新、高德地图、百度地图纷纷开始推出UGC应用,众包给用户采集门址、公交站等信息,并按照工作量给与采集者一定的回报。我曾经玩过某德推出的“道路寻宝”APP,应用内部集成了道路拍拍、门址采集、公交拍拍、POI任务等。该应用有如下限制:(1... 阅读全文
posted @ 2015-03-15 13:35 千岛寒流 阅读(11244) 评论(2) 推荐(5) 编辑
摘要: 阅读全文
posted @ 2015-03-02 19:44 千岛寒流 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 卫星定位系统 - GPS/GLONASS/北斗:关于GPS、GLONASS、北斗、伽利略系统的科普请自行谷歌。GPS是使用最广泛的全球定位网络,几乎是所有智能手机的标配。进几年,俄罗斯的GLONASS定位功能也逐步加入智能手机芯片,与GPS组成双定位系统,定位速度大幅提升。中国自主研发的北斗导航系统... 阅读全文
posted @ 2015-03-01 19:11 千岛寒流 阅读(20582) 评论(16) 推荐(32) 编辑
摘要: 语义耦合是隐性的,不易察觉的耦合类型 ,是导致代码重构、调试、修改复杂度急剧增加的主要原因。1,操作顺序耦合使用一个对象,需要先调用Init(),之后才能调用DoAnything()。这种顺序耦合,即使在文档中remark也是极为不优雅的做法。2,全局参数传递模块A修改了某个全局参数g_val,模块... 阅读全文
posted @ 2014-10-22 19:42 千岛寒流 阅读(1052) 评论(0) 推荐(1) 编辑
摘要: 对于静态类型语言,其本质目标在于恰当地操作数据,得到期望的值。具体而言,需要:(1)定义数据类型你定义的数据是什么,是整形还是浮点还是字符。该类型的数据可以包含的值的范围是什么。(2)定义操作的含义操作是严格数据类型相关的。操作表明了对了一个具有特定类型的数据,执行操作后产生什么样结果。======... 阅读全文
posted @ 2014-09-07 11:50 千岛寒流 阅读(1103) 评论(0) 推荐(0) 编辑