广东饮食文化

看了一期BBC美食纪录片,我也顺便介绍一下广东的饮食文化。

广东料理(Cantonese Cuisine)是我们俗称的粤菜,也包括了在潮汕那一带的客家菜。有句话说“四条腿除了板凳,带翅膀的除了飞机,广东人都敢吃”,虽是高级黑,但广东的饮食的确很丰富,这是因为很久以前这边很缺乏食物,所以吃的东西比较广。

READ MORE

TCP性能分析技术(7):socket的数据发送与接收

总流程图

process_of_socket

接收流程

TCP接收到数据之后会写入到TCP本身的Buffer里,然后会拷贝到应用层(亦即我们的应用程序)的接收Buffer中。在满足以下条件时,TCP接收Buffer的数据会被写入到到应用层的接收Buffer并且recv()返回:

  • TCP头部中的PSH被置为1
  • TCP接收Buffer溢出
  • 数据在TCP接收Buffer中存放的时间超过了0.5s

发送流程

应用层的发送Buffer把数据写入到TCP的Buffer中:
如果应用层的发送Buffer超过了TCP发送Buffer的大小,就会发生阻塞,直到把所有数据写入到TCP的Buffer中才会返回。

在TCP进行Nagle优化时,如果发送的Buffer太大并且满足了Nagle算法优化场合,TCP就会先发送部分数据,这时候对端就会出现我们平时所说的粘包或者残包,需要在业务上进行拼接和解析。

结语

这个系列到此结束了,主要讲述了TCP协议的一些比较底层的理论问题,也许大多数人甚至是从事网络通信(如写服务器)的程序员也不一定了解过,工作上也几乎很少用到。不过有必要建议还是花点时间了解一下,不一定要深究,但至少对得起自己的情怀和职业呀。。

参考书籍:《TCP/IP详解》

READ MORE

TCP性能分析技术(4):数据发送端行为分析

基本行为

(1) 发包的时机
每个ACK都有可能触发发包,是否发包取决于根据’(2)’中的公式所算结果是否大于零。

  • RTT测量的ACK会启动发包。(这一条是错的)
  • 重复ACK会启动发包。
  • 紧跟在重复ACK后回复的第一个新的ACK会启动发包。
  • 快速重传、超时重传也会启动发包。
    (2)发包的数量:
    发送端根据启动发包时刻的发送窗口、接收窗口、拥塞窗口大小来确定发包数量。计算公式如下:
    发包数量 = min(发送窗口大小, 接收窗口大小, 拥塞窗口大小) - 已发送未确认数据的字节数
READ MORE

TCP性能分析技术(3):数据接收端行为分析

基本行为

接收端的基本行为有:接收数据包、回复ACK,适当时将数据送往应用层缓冲区。

(1)一般情况下收到2个包回1个ACK,除非第二个数据包在200ms内没有收到(这种情况下所回复的ACK被成为Delayed-ACK, 200ms定时器则称为Delayed-ACK Timer)。
(2)如果出现丢包情况,对于后续收到的每一个数据包则重新回复ACK.
(3)重传的数据包收到之后,会和之前收到的所有数据包一起回复ACK.
(4)还有就是,满足以下任何一个条件时数据都会被送往应用层缓冲区:

  • 应用程序通过recv()方法准备接收数据
  • TCP头部中的PSH标识被置为1
  • TCP接收Buffer溢出了
  • 数据在TCP接收Buffer中存放的时间超过了500ms

TCP接收端处理流程图

ppud

READ MORE

FlatBuffers : 用于生成cxx的python脚本

Flatbuffers的编译器有个-c参数选项,这个选项需要一个个传入.fbs文件的路径,给维护带来很大的不便。昨晚改了下flatbuffers的编译器代码,把cpp代码生成器生成的部分变量名以及生成的cxx文件后缀改掉了,这样看起来违和感没那么强,符合Coeus的代码风格。本来也想把-c选项改成支持’‘通配符的,这样便可以肆无忌惮地给出一个目录让编译器自己去遍历.fbs文件。但回头一想这似乎不应该是编译器做的事情,所以就把这个想法搁掉了。于是写了个简单的python脚本(2.7.x),用来维护fbs文件并且把生成的cxx文件输出到指定目录。

READ MORE

女汉子叶采

叶采说我的工作很矫情,我也没办法反驳,只是用矫情来形容职业确实不是很合适。她一大早就在QQ上跟我打招呼,并且问我现在做什么了,我说在游戏公司上班,做程序员。于是就得到了她这样的评价。她说微博上都传程序员人傻钱多死的早,问我是不是真的。我说起码我不傻,至于会不会死的早我就不清楚了。

叶采是我一朋友的朋友,我们在一次聚会上认识,加起来只见过两次,最后一次见面到现在也有一年多了。她有个外号叫野菜,只有我敢这么叫她,她会给我一白眼或者敲我脑壳,要是其他人(包括那个介绍我们互相认识的朋友)敢叫她野菜,她马上要发飙:野菜是你叫的吗!

野菜是读行政管理的,这个专业和她的形象简直是量身定做。其实她的脾气和性格不坏,和男生很好相处,直率、不矫情、不做作,该矜持的地方她也没落下,有时候说话也会低声下气,很有主见但不强势,很尊重别人的意见,是个很聪明很懂人情世故的人。可以说是我比较欣赏的一类女性,所以认识不长的时间就和她很聊的来。

她说24岁的她已经算是个大龄女青年了,估计嫁不出去。我调侃道你这种野丫头怎么有人敢要,现在都流行贤妻良母,也就我这种脾气看上去温和的人才敢跟你打交道。这相当于变相承认我是个万年受。我觉得她要发飙,不过网上聊天她也没办法动我,她很不服气,反驳说她是拥有一颗玻璃心的真汉子。对她这句话,我也没反对。所以祝野菜姐工作顺利,找到好归宿。24岁还很年轻。

READ MORE

All is well

今天听逗啦对我们提起他的无名指没反应了,不能动,替他难过。前段时间他伤到了右手,划了一道很大的口子,手掌伤势接近被对半分开,甚至看到露在外面的骨头。当时是我送他去医院的,一路上流了很多血,伤口看着触目惊心。

READ MORE