Fade Temple
@小差小差- Posts
- Categories
- Galleries
- Dixit
-
Nov 14, 2017
浅析TCP协议
谈到TCP连接,三次握手这个名词都会在大多数人的脑海里浮现。 那么三次握手的过程是什么样的?每个阶段的包都有什么样特征? 最近把《计算机网络》这本教材的”运输层”这一章重新复习一遍,整理成本文。 TCP连接的特点 面向连接 在使用TCP传输数据之前,必须先建立TCP连接,每一条连接只能连接两个端点,一般我们使用以下四元组来标识一条连接 {(端点1IP, 端点1Port), (端点2IP, 端点2Port)} TCP连接只是一条虚拟的连接,他并不是固定的一条物理链路 可靠交付 TCP提供可靠的交付服务,数据无差错,不丢失,不重复,并且按序到达(对于应用层来说) 与之相对,UDP提供尽最大努力交付 全双工通信 所谓全双工,是指在同一时间,两个端点皆可发送数据和接收数据。 TCP在两端都设置有接收和发送缓冲区: 对于接收缓冲区,它是用来缓存接收到的数据,应用层可以在合适的时候读取缓冲区的内容; 对于发送缓冲区,应用层在发送数据时,只是将数据先放入到发送缓冲区,TCP会在合适的时间将这些数据发送出去。 面向字节流 TCP将应用层交下来的数据看成一连串无结构的字节流,应用层不必关心这些字节流被拆成多少个包来发送,接收方在应用层看到的是和发送端一样大小,一样顺序的字节流 TCP报文段的格式 虽然TCP是面向字节流的,但传输单元实际上是报文段,报文段可分为首部和数据两部分 以下是TCP报文段首部格式 TCP首部的前20个字节是固定的,后续可以跟4N个可选的选项数据 源端口和目的端口: 各占用2字节,所以端口号的范围是0~65535 序号:占用4字节;TCP传输的数据每一个字节都是编号的,此序号表示本次发送的第一个字节编号;当序号增加到2的32次方减1(4G数据)后,又会从0开始 确认号:占用4个字节,表示期望收到的下一个数据的编号,例如B正确收到了A发送过来的一个报文段,编号为501,数据长度为200,则B收到A的最后一个字节编码是700,期望收到的下一个数序序号为701,所以确认号为701 数据偏移:占用4位,表示TCP数据部分距离起整个报文起始位置的偏移,此值的单位为4字节,所以选项的最大长度为...
Read More -
Nov 5, 2017
住顺义
家搬顺义已经两月有余,屋内大大小小的细节修整了不少,家具家电也陆续置办齐全,总算看起来像一个温馨的家了。 今年算是经历丰富的一年,从年初购房,新房装修,再到后来的拍婚纱照,办婚礼。人生大事了结了一多半了。 年终如果有总结的话,今年的说头格外多。若是时间富足,定要聊聊这一年经历中的感悟,个中体会,定会娓娓道来。 今年国庆回福州,由于身上肩负着办婚礼的使命,略有期待,也略有压力和紧张。还算一切顺利,其中的一段不完美的插曲算是与不完美的生活相互呼应。 只是福州还是如此美丽,乌山,三坊,七巷与榕城。 毕竟工作北京,生活顺义,节后生活缓解许多。 虽不似在家里那样闲适安逸,与世无争,日出晒着太阳,日落冥想夕阳。 也可以说工作还算得心,新家略有温馨,朋友还是一见如故,同事也玩得开心。 这里也有满天云彩,这里还有飞机滑行!
Read More -
Sep 20, 2017
PHPUnit
单元测试在日常的编程中占有十分重要的地位,但大部分公司为了敏捷开发的效率要求,往往都忽略了测试用例的编写,而把这部分工作丢到了QA的身上。 但做为一个开发者,测试代码先行会带来可观的收益,不仅提高了代码的质量,而且还提供了外部使用者如何使用对应接口的例子乃至文档。 而且在需要重构一个项目或者修改添加新功能时,有单元测试的项目会更加地得心应手。 作为php测试的重要组件,以下介绍PHPUnit的基本用法。 下载安装 PHPUnit的可执行文件为phar,直接下载并移动到PATH目录即可: cd ~/bin wget https://phar.phpunit.de/phpunit.phar chmod +x phpunit.phar phpuni.phar --version 使用phpunit.phar --version测试是否已经成功安装(以6.4.4版本做为测试)。 对于使用composer管理项目依赖时,使用 composer.phar require --dev phpunit/phpunit 来声明对PHPUnit的依赖关系,执行composer.phar install 之后即可在vendor/bin目录下找到可执行的phpunit。 另外的一些可选组件: composer.phar require --dev phpunit/php-invoker:...
Read More -
Aug 17, 2017
PHP Composer的基本使用
为了更加系统地了解Composer,完整地阅读了官方文档,并记录在此,供后续参考。 Composer是一个php的包依赖管理工具,类似于nodejs的npm和ruby的bundler。 Composer安装 参考此链接 cd ~/bin php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" php -r "if (hash_file('SHA384', 'composer-setup.php') === '669656bab3166a7aff8a7506b8cb2d1c292f042046c5a994c43155c0be6190fa0355160742ab2e1c88d40d5be660b410') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo...
Read More -
Jul 14, 2017
机器学习(Week11)-应用: 图片OCR(Photo OCR)
Lecture1: Applica’on example: Photo OCR 问题描述 图片OCR(Optical Character Recognition,光学字符识别),让计算机读取图片中的字符信息 Photo OCR Pineline 文字检测,找出有文字的区域 字符切分,将之前找到的矩形文字区域,切分成单个字符 字符识别,识别之前划分的单个字符 后续可能还会附加的其它处理,比如拼写校正等 滑动窗口 行人检测例子 首先选定输入特征为82x36的灰度图片,找到两组数据样本,一组有行人(y=1),一组没有行人(y=0),使用神经网络或者其它的学习算法训练出模型 对需要检测行人的原始照片,从左上角起,依次使用82x36的矩形裁剪,将得到的区域输入之前训练好的模型,判断此区域是否有行人 将矩形框往右滑动一点,取出另外一个矩形,执行行人判断 滑动的大小参数叫做步长(step size),有时也称之为步幅参数(stride parameter)。 步长越小,表现越好,但计算量会比较大;一般使用步长为4或者8像素 如此重复执行,直到滑动完整张照片 等比例放大矩形框,再执行相同的动作 注意,此时得到的矩形,需要缩放到82x36大小后输入模型 文字检测 与之前的行人检测类似,使用一堆有文字和没有文字的小矩形图片样本训练出模型...
Read More