摘要: 首先来说说要用到的知识点,第一个要说的是扩展包random,random模块一般用来生成一个随机数 今天要用到ramdom中unifrom的方法用于生成一个指定范围的随机浮点数通过下面的图简单看下: 这里就打印了一个值范围是在10~20之间的浮点数。 在来说说lambda表达式是匿名函数,是函数的另 阅读全文
posted @ 2018-08-14 15:43 Niuli'blog 阅读(6469) 评论(2) 推荐(0) 编辑
摘要: 两种情况下会发生粘包。 发送端需要等缓冲区满才发送出去,造成粘包(发送数据时间间隔很短,数据了很小,会合到一起,产生粘包) 接收方不及时接收缓冲区的包,造成多个包接收(客户端发送了一段数据,服务端只收了一小部分,服务端下次再收的时候还是从缓冲区拿上次遗留的数据,产生粘包) 只有tcp协议才会发送粘包 阅读全文
posted @ 2018-08-14 15:41 Niuli'blog 阅读(210) 评论(0) 推荐(0) 编辑
摘要: udp是无链接的,启动服务之后可以直接接受消息,不需要提前建立链接 UDP协议的通信优势: 允许一个服务器同时和多个客户端通信, TCP不行 服务端 客户端 阅读全文
posted @ 2018-08-13 18:24 Niuli'blog 阅读(264) 评论(0) 推荐(1) 编辑
摘要: TCP协议 面向连接 可靠的 面向字节流形式的 tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 TCP协议编码流程: 服务器端: 客户端 实例化对象 实例化对象 绑定IP地址和端口号 监听 接收客户端的连接 连接服务器 收发 收发 关闭 关闭 问题:有的同学在重启服务端时可能会遇 阅读全文
posted @ 2018-08-13 17:09 Niuli'blog 阅读(11159) 评论(0) 推荐(1) 编辑
摘要: 套接字工作流程 一个生活中的场景。你要打电话给一个朋友,先拨号,朋友听到电话铃声后提起电话,这时你和你的朋友就建立起了连接,就可以讲话了。等交流结束,挂断电话结束此次交谈。 生活中的场景就解释了这工作原理。 图3 先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行 阅读全文
posted @ 2018-08-13 15:14 Niuli'blog 阅读(148) 评论(0) 推荐(0) 编辑
摘要: import re bracket = re.compile(r'\([^()]+\)') # 寻找最内层括号规则 mul = re.compile(r'(\d+\.?\d*\*-\d+\.?\d*)|(\d+\.?\d*\*\d+\.?\d*)') # 寻找乘法运算规则 div = re.compile(r'(\d+\.?\d*/-\d+\.?\d*)|(\d+\.?\d*/\d+\.?... 阅读全文
posted @ 2018-08-11 19:00 Niuli'blog 阅读(672) 评论(0) 推荐(0) 编辑
摘要: 阅读全文
posted @ 2018-08-11 17:55 Niuli'blog 阅读(160) 评论(0) 推荐(0) 编辑
摘要: 数据类型的扩展模块 总结在insert remove的时候 deque的平均效率要高于列表列表根据索引查看某个值的效率要高于dequeappend 和pop对于列表的效率是没有影响 阅读全文
posted @ 2018-08-10 21:59 Niuli'blog 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 什么是异常? 异常发生之后 异常之后的代码就不执行了 什么是异常处理 python解释器检测到错误,触发异常(也允许程序员自己触发异常) 程序员编写特定的代码,专门用来捕捉这个异常(这段代码与程序逻辑无关,与异常处理有关) 如果捕捉成功则进入另外一个处理分支,执行你为其定制的逻辑,使程序不会崩溃,这 阅读全文
posted @ 2018-08-10 21:53 Niuli'blog 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 功能 1.日志格式的规范 2.简化操作 3.日志的分级管理logging不能做的事 自动生成你想要打印的内容 (需要程序猿自己在开发的时候定义好) 在哪些地方需要打印,要打印的内容是啥,内容的级别logging模块的使用: 普通配置型 简单的 可定制化差 对象配置型 复杂的 可定制化强 默认情况下P 阅读全文
posted @ 2018-08-10 21:19 Niuli'blog 阅读(114) 评论(0) 推荐(0) 编辑