随笔分类 - Python核心编程学习笔记
1
摘要:在每一个数据块之前再加一个用于表示长度的数据,叫做前缀长度封帧 note:多数上层应用自行封帧,所以本章不重要
阅读全文
摘要:framing:如何分割消息,使得接收方能够识别消息的开始,由于传递给sendall()的数据可能在实际网络传输的时候被分割成多个数据包,接收消息的程序可能需要进行多个recv()调用才能读取完整的消息。 关于framing需要考虑这样的问题:接收方合适最终停止调用recv()才是安全的,整个消息或
阅读全文
摘要:通过python的socket模块中的getaddrinfo进行给定主机/域名的80端口探测 演示: alben@Python:~/PycharmProjects/networking$ ./getaddr.py google.cnSuccess: host google.cn is listeni
阅读全文
摘要:TCP死锁: 两个程序共享有限的资源,由于糟糕的计划,A程序只能等待B程序资源占用结束后才能使用资源,这种情况就是死锁(deadlock) 代码的解释明天给出
阅读全文
摘要:P_MTU_D(Path MTU Discovery) socket的UDP功能,去发现端到端MTU
阅读全文
摘要:ThreadingTCPServer实现的Soket服务器内部会为每个client创建一个 “线程”,该线程用来和客户端进行交互。 1、ThreadingTCPServer基础 使用ThreadingTCPServer: 创建一个继承自 SocketServer.BaseRequestHandler
阅读全文
摘要:socketserver模块,在Python2.x中以SocketServer存在 SocketServer简化了网络服务器的编写。它有4个类:TCPServer,UDPServer,UnixStreamServer,UnixDatagramServer。这4个类是同步进行处理的,另外通过Forki
阅读全文
摘要:伪代码:ss = socket() #创建服务器套接字ss.bind() #把地址绑定到套接字上ss.listen() #监听连接(最大连接数)info_loop: #服务器无限循环 cs = ss.accept() #接受客户端连接comm_loop: #通信循环 cs.recv()/cs.sen
阅读全文
摘要:这个脚本只能处理小范围的数列,如果给定的数列非常大,运行该脚本会导致内存溢出, 如果通过生成器的方法来优化这个脚本,就可以避免内存问题,明天演示
阅读全文
摘要:如果在一个内部函数里,对在外部作用域(非全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。定义在外部函数内的,担忧内部函数引用或者使用的变量称为自由变量,闭包在函数式编程中是一个重要的概念。 闭包将内部函数自己的代码和作用域以及外部函数的作用域结合起来,闭包的词法变量不余数全
阅读全文
摘要:list comprehension(列表推倒) 列表推倒:从一个列表去产生另一个列表 案例:#产生一个0-20的列表nums = [n for n in range(0,21)] #对nums进行操作,中间的每一个元组*2,构成一个新的列表 new_nums = [] for i in nums:
阅读全文
摘要:Formal Arguments(形式参数) Python函数的形式参数集合由在调用时要传入函数的所有参数组成,这参数与函数声明中的参数列表精确的配对。子而写参数包括了所有必要参数:1,位置参数2,关键字参数3,默认参数4,可变长参数 位置参数 位置参数的传递必须与函数声明是定义的函数顺序匹配。 >
阅读全文
摘要:装饰器 装饰器本质上就是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外的功能,装饰器的返回值也是一个函数对象。装饰器的使用场景:1,日志插入2,性能测试3,事务处理(缓存、权限校验)4,等。。。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。 最简单的装饰器:
阅读全文
摘要:一个合格的脚本,至少含有如下部分: 1,文件名注释 2,doc字段 3,主函数 4,异常处理 5,main() 这个脚本要实现的功能: 练习1-10内数字的加减法 代码段: 使用到的模块: random operator
阅读全文
摘要:迭代器就是一个有.next()方法的对象,而不是通过索引来计数。迭代器的限制:不能回退! 使用迭代器:>>> develop = ('python','c#','ruby','php','java')>>> progarmme = iter(develop) #定义迭代器>>> progarmme.
阅读全文
摘要:*拷贝python对象(浅拷贝、深拷贝) 浅拷贝——对一个“对象”进行浅拷贝其实就是新创建了一个类型跟原对象一样,内容是原来对象元素的引用,换句话说:这个拷贝的对象本身是新的,但是内容不是。 什么情况下是浅拷贝:1、完全切片 [:]2、工厂函数 比如:list(),dict()3、使用copy模块的
阅读全文
摘要:#!/usr/bin/env python3#-*- coding:utf-8 -*-#!/usr/bin/env python3#-*- coding:utf-8 -*-'''通过列表,模拟排队'''#导入需要的模块import sys#定义空排队队列FIFO = []#声明需要的函数def pu
阅读全文
摘要:礼拜的LIFO特性: LIFO(Last In First Out) 其实就是堆栈功能,比如搭积木: 第一块在最下面,最后一块在最上面,拆的时候总是最后一块先拆,以此类推(stack) 代码实现: 允许用户创建文件与写入内容 代码:
阅读全文
摘要:用for和while循环,对数字列表/数字元组中的元素进行求和:用for实现>>> val = 0>>> l1 = [1,3,5,7,9]>>> for i in l1:... val +=i...>>> print(val)25 用whlie实现list1 = [1,3,5,7,9]val = 0
阅读全文
1

浙公网安备 33010602011771号