2017年12月8日

套接字地址结构

摘要: 1. 通用套接字地址结构: 1. 通用套接字地址结构: 1.1 概念: 套接字有几种类别,都可以放进通用套接字的容器中. 意即,具体的套接字是在通用套接字的基础上细化. 1.1 概念: 1.2 结构体如下: struct sockaddr{ uint8_t sin_len; unsigned sho 阅读全文

posted @ 2017-12-08 18:49 willaty 阅读(604) 评论(0) 推荐(0)

初始化函数1

摘要: 1. 字节排序函数: 1. 字节排序函数: 1.1 大端小端: 参考其他笔记或资料,一句话:低地址低位为小端. 1.1 大端小端: 1.2 常用函数: #include <netinet.h/in.h> uint16_t htons(uint16_t va); uint32_t htonl(uint 阅读全文

posted @ 2017-12-08 18:46 willaty 阅读(295) 评论(0) 推荐(0)

初始化函数2

摘要: 1. socket函数: #include <sys/socket.h> int socket(int family, int type, int protocol); 1. socket函数: 1.1. 参数: 第一个参数指定协议族(我理解为ip族): AF_INET,AF_INET6 第二个参数 阅读全文

posted @ 2017-12-08 18:44 willaty 阅读(188) 评论(0) 推荐(0)

非阻塞IO

摘要: 非阻塞io 使用fcntl设置,先GETFL操作,取得后逻辑与,在SETFL 一般直接返回EWOULDBLOCK. 对已connect: 可能立即返回,比如在同一机器上时. 当连接成功时,描述符可写;当连接错误时,描述符既可读又可写.(tcpv2,530页) 管理缓冲区很复杂,比select+阻塞快 阅读全文

posted @ 2017-12-08 18:42 willaty 阅读(191) 评论(0) 推荐(0)

几种TCP连接终止

摘要: 在三次连接完成后,accept调用前,客户机发来RST. Berkeley实现将完全在内核中处理,不通知. 而SVR4实现将返回一个错误EPROTO,而POSIX指出应该是ECONNABORTED,后面将补充解决方法. 如果服务器进程终止,而如果客户端对于套接字和用户输入两个源,只监听其中一个,则会 阅读全文

posted @ 2017-12-08 18:01 willaty 阅读(594) 评论(0) 推荐(0)

tcp连接需要注意的问题

摘要: 当有子进程时,子进程终止时会返回SIGCHLD信号,默认忽略,此时会有僵尸进程. 处理方法: 捕获信号,并waitpid. 当慢系统调用被中断时(如信号中断),有些系统不会自动重启调用,此时系统调用可能返回一个EINTR错误.需要检测并重启系统调用.但connect函数不能重启,调用select. 阅读全文

posted @ 2017-12-08 18:00 willaty 阅读(162) 评论(0) 推荐(0)

IO模型与select,poll,epoll

摘要: 五种:阻塞,非阻塞,IO复印,信号驱动,异步. 五种:阻塞,非阻塞,IO复印,信号驱动,异步. select,poll,epoll select: 典型用32个32位的整数表示1024个描述符,并发的局限. poll:功能同上,但数据结构不一样(链表),描述符不限制,只支持水平触发. epoll:数 阅读全文

posted @ 2017-12-08 17:59 willaty 阅读(191) 评论(0) 推荐(0)

为什么需要三次握手

摘要: 三次握手基础: tcp三次握手是同步双方序列号和窗口大小的过程. 三次握手基础: 三次的原因: 一次肯定不行,C不知道是否连接成功,发送数据则错误. 两次的话存在一个问题: 已过期的连接包再现,S会回复确认并以为连接成功. 三次的话,过期的包,由于C并未发起连接,C就不会回复. `总结: 防止已失效 阅读全文

posted @ 2017-12-08 17:51 willaty 阅读(472) 评论(0) 推荐(0)

最小重组缓冲区和路径MTU发现

摘要: 概括: 主要来源于unp,可参考:http://blog.csdn.net/ysu108/article/details/7764461 概括: 主要来源于unp,可参考:http://blog.csdn.net/ysu108/article/details/7764461 疑惑: 疑惑: 1. 最 阅读全文

posted @ 2017-12-08 17:50 willaty 阅读(1502) 评论(0) 推荐(0)

TIME_WAIT状态的作用

摘要: TIME_WAIT状态: 主动关闭的那端最后经历的状态,一般为2MSL秒(1~4分钟). TIME_WAIT状态: 两个原因: 保证当最后一个ack丢失后,能收到对端重传的fin包. 保证ack包消失,不会影响下一个连接. 关于原因2: 重传时间一般为几百毫秒,而延时的数量级可能为几十秒(MSL数量 阅读全文

posted @ 2017-12-08 17:49 willaty 阅读(916) 评论(0) 推荐(0)

ftp指令集

摘要: 想进行ftp相关编程,得了解ftp的指令集. 可参考:http://blog.csdn.net/weiyuefei/article/details/51758288 ftp的命令和指令集不同: 命令是面向用户的,控制台输入的. 指令集是应用层的协议内容. ps: ftp使用ls,传输文件命令都会另开 阅读全文

posted @ 2017-12-08 17:47 willaty 阅读(239) 评论(0) 推荐(0)

git协议

摘要: 常用三种协议:ssh, git, http 常用三种协议:ssh, git, http ssh协议: 使用ssh传输,安全,可授权,需要用ssh登录,一般使用添加秘钥的方式。搭建方便。 ssh协议: 使用ssh传输,安全,可授权,需要用ssh登录,一般使用添加秘钥的方式。搭建方便。 git协议: 使 阅读全文

posted @ 2017-12-08 17:44 willaty 阅读(338) 评论(0) 推荐(0)

条款3:尽可能地使用const

摘要: 原因: 1. 利于编译器优化,比如QT中的隐式数据共享,也利于编译器检查约束。 2. 避免if a*b = c等意外行为。 阅读全文

posted @ 2017-12-08 17:10 willaty 阅读(134) 评论(0) 推荐(0)

条款4:确定对象使用前被初始化

摘要: 包括内置类型,对象。 但问题是不同编译单元之间的初始化。 指全局对象,如static等。 不可能确定其初始化顺序。 可以用单例,如在函数里返回函数static成员的引用。 只在第一次调用时初始化。 注意:多线程调用,最好在启动时一起初始化。调用时内部加锁,这是一种方案。 总结:手工初始内置类型。构造 阅读全文

posted @ 2017-12-08 17:10 willaty 阅读(165) 评论(0) 推荐(0)

条款2:尽量以const, enum, inline替换#define

摘要: 原因: 1. 追踪困难,由于在编译期已经替换,在记号表中没有。 2. 由于编译期多处替换,可能导致目标代码体积稍大。 3. define没有作用域,如在类中定义一个常量不行。 做法: 可以用const发挥常量的作用。 enum也可:取enum定义的变量地址不合法,取宏也是;而取const变量则合法。 阅读全文

posted @ 2017-12-08 17:06 willaty 阅读(182) 评论(0) 推荐(0)

条款1:视C++为一个语言联邦

摘要: C++是门多范式语言,至少包括面向过程,面向对象,泛型,函数式,元变成等。 但谨记,不要随意混合使用各种特性,为自己制定使用原则,针对不同项目、业务。 如: 类C风格编程:没有模板,没有异常,没有重载等。 面向对象:封装,继承,多态等。 模板编程:一般用于底层库的编写,大量使用模板。 STL:有自己 阅读全文

posted @ 2017-12-08 17:05 willaty 阅读(170) 评论(0) 推荐(0)

关于元表,self,元方法__index

摘要: 这是需要仔细分辨的几个概念. 这是需要仔细分辨的几个概念. 元表:相当于table的隐藏属性. 只有固定的一些方法,如__index,__tostring,__add等,称为元方法. 虽然是固定的,但是任何table都可以作为任何值的元表,实际只会赋值对应的值. 元表:相当于table的隐藏属性. 阅读全文

posted @ 2017-12-08 16:36 willaty 阅读(154) 评论(0) 推荐(0)

格式化异常

摘要: Fundamental 一切来源于:sys.exc_info 返回一个元组->三个对象,异常类型,异常值,tb对象->tb对象包含位置信息。 Fundamental 一切来源于:sys.exc_info 返回一个元组->三个对象,异常类型,异常值,tb对象->tb对象包含位置信息。 def func 阅读全文

posted @ 2017-12-08 16:26 willaty 阅读(243) 评论(0) 推荐(0)

Requests发送/上传多个文件

摘要: 第三方库,似乎在Ubuntu已经安装,centos未安装。 1、需要的环境 Python2.X Requests 库 2、单字段发送单个文件 在requests中发送文件的接口只有一种,那就是使用requests.post的files参数, 请求形式如下: 第三方库,似乎在Ubuntu已经安装,ce 阅读全文

posted @ 2017-12-08 16:23 willaty 阅读(2581) 评论(0) 推荐(0)

request模块

摘要: 高级用法,文件流发送:http://docs.python-requests.org/zh_CN/latest/user/advanced.html#advanced 高级用法,文件流发送:http://docs.python-requests.org/zh_CN/latest/user/advan 阅读全文

posted @ 2017-12-08 16:07 willaty 阅读(101) 评论(0) 推荐(0)

模块常用snippet

摘要: 压缩,文件操作,数据库,md5,json, 压缩,文件操作,数据库,md5,json, 压缩 压缩 import os, sys, time import zipfile # 解压 filename = 'callofdutyblackopszombies_1349649132343_my.zip' 阅读全文

posted @ 2017-12-08 16:06 willaty 阅读(180) 评论(0) 推荐(0)

time,datetime,时间戳 时间格式转换

摘要: 总结: 总结: time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f") 几个概念 时间戳:整型或float time对象,datetim 阅读全文

posted @ 2017-12-08 16:05 willaty 阅读(562) 评论(0) 推荐(0)

坑!!!

摘要: 文件读写:f.seek如果偏移超出文件大小,会报错:IOError: invalid argument。从提示...完全看不出问题在哪!:-) subprocess模块:p.poll(),查看进程是否结束,没有结束返回None,结束了返回0 阅读全文

posted @ 2017-12-08 15:45 willaty 阅读(131) 评论(0) 推荐(0)

PyQt5信号与槽

摘要: 简单使用 可以使用designer的一个模式定义,也可以自己定义,在__init__函数里,self.btn.clicked.connect(self.text.clear)。 注意:槽不用加括号,可是lambda对象等,connect最好在初始化函数里避免多次连接。 简单使用 可以使用design 阅读全文

posted @ 2017-12-08 15:32 willaty 阅读(1001) 评论(0) 推荐(0)

PyQt5安装

摘要: 在Windows安装,直接pip install python_qt5,针对Python2.7版本的。 测试,不报错即可。 在Windows安装,直接pip install python_qt5,针对Python2.7版本的。 测试,不报错即可。 import sys from PyQt5 impo 阅读全文

posted @ 2017-12-08 15:30 willaty 阅读(376) 评论(0) 推荐(0)

中文路径读取乱码,json乱码

摘要: strPath = 'E:\新建文件夹' #含有中文的路径,使用unicode函数转换. strPath = unicode(strPath , "utf8") 参考:http://blog.csdn.net/qingyuanluofeng/article/details/49021711 json 阅读全文

posted @ 2017-12-08 15:25 willaty 阅读(296) 评论(0) 推荐(0)

Python错误:close failed in file object destructor

摘要: 我遇到的情况: 二进制程序调shell再调Python后,shell退出,Python进程挂到init上(不是僵尸进程),但 此时二进制程序未退出,这时候中断而二进制程序出现此提示。 经查询: 应该是Python程序的stdout出错,最好输出到文件,不要输出到stdout。 其次,也可以忽略此信息 阅读全文

posted @ 2017-12-08 15:21 willaty 阅读(4777) 评论(0) 推荐(0)

Python调shell

摘要: os.system(cmd) 函数返回cmd的结束状态码,阻塞调用。 os.popen(cmd) 函数返回cmd的标准输出,阻塞调用。 (status, output) = commands.getstatusoutput(cmd) 函数返回cmd的结束状态码和标准输出,阻塞调用。 subproce 阅读全文

posted @ 2017-12-08 15:18 willaty 阅读(519) 评论(0) 推荐(0)

关于类和模块与导入的思考

摘要: 相似性 从某个角度来讲,类和模块些许相似性。 你可以在模块中封装私有方法,都是import一个对象后调用其中方法。 在写一组接口时是应该封装成类还是模块? ps:如果把两者看成对象来操作,模块可以实现类似类的很多功能,但不建议随意修改底层魔法方法。 区别 类的特性:继承特性,重载等 模块:类似类的单 阅读全文

posted @ 2017-12-08 15:14 willaty 阅读(135) 评论(0) 推荐(0)

全局变量

摘要: 如果在模块中定义了全局变量,注意: 如果别人用from *方式导入,则可能命名冲突。 在模块中使用时,如果是赋值,需要先global;如果直接使用,则可以不用。因为Python先从局部变量找(locals),找不到才找全局(globals)。 阅读全文

posted @ 2017-12-08 12:12 willaty 阅读(158) 评论(0) 推荐(0)

信号

摘要: 可用signal模块 用dir(signal)模块查看信号 其中kill信号是不能捕获的,其他程序结束符号可以捕获。 ps:所以平时kill的时候尽量不要kill 9,先给个机会处理后事。 Python中的对应信号是signal.SIGINT,signal.SIGTERM等。 ps:wing5.1中 阅读全文

posted @ 2017-12-08 12:09 willaty 阅读(243) 评论(0) 推荐(0)

导航