摘要: @[toc] 1.说明 __a(私有):只能在类的内部使用,对象使用,但是子类不允许使用,不能导入到其他包 _a(protected):可以在子类使用,可以通过对象访问,不能导入其他包 a_:没有要求,就是自己定义的区别名字而已 2.代码 test.py main.py 关于作者 "个人博客网站" 阅读全文
posted @ 2019-08-23 22:04 BothSavage 阅读(179) 评论(0) 推荐(0)
摘要: @[toc] 1.说明 任何可变数据类型都牵扯到深浅拷贝 但是元组,常数等,不可变数据类型,无论浅拷贝,深拷贝都是指向 不管如何嵌套,一旦牵扯到可变数据类型,都会有深浅区别 特别注意,元组切片为浅拷贝,反正可变数据类型没使用deepcopy一律浅拷贝 浅拷贝: 一个变量名等于另一个东西就一定是指向, 阅读全文
posted @ 2019-08-23 21:52 BothSavage 阅读(166) 评论(0) 推荐(0)
摘要: @[toc] 1.结论 当一个py文件执行多进程的时候,是真的在并发 当一个文件在使用多线程的时候,伪并发,在同一时刻只有一个线程执行,因为GIL Guido都说了,不好除这个 因为GIL为历史原因,在Cpython虚拟机,难以移除 多进程是复制,多线程是共享全局变量 那么为啥编写一个爬虫的时候,多 阅读全文
posted @ 2019-08-23 15:23 BothSavage 阅读(158) 评论(0) 推荐(0)
摘要: @[toc] 1.介绍 epoll是一种解决方案,nginx就是用的这个 中心思想:不要再使用多进程,多线程了,使用单进程,单线程去实现并发 在上面博客实现的代码中使用过的轮询去查看套接字有没有数据,而epoll是主动通知 当使用多进程的时候,是复制一份资源去查看,epoll不用复制,直接来 优势: 阅读全文
posted @ 2019-08-23 14:38 BothSavage 阅读(179) 评论(0) 推荐(0)
摘要: @[toc] 1.说明 每次new_socket都被强制关闭,造成短连接 所提不要关闭套接字 但是不关闭的话,浏览器不知道发完没有啊 此时用到header的属性Content Length http_header += "Content Length:%d\r\n\r\n" % len(http_b 阅读全文
posted @ 2019-08-23 14:04 BothSavage 阅读(239) 评论(0) 推荐(0)
摘要: @[toc] 1.分析 当socket去监听的时候,是堵塞的状态 通过tcp_sever_socket.setblocking(False)去设置不堵塞 当socket发现没有用户的时候会出错,执行异常 当连接上用户的时候会马上把用户发到socket列表中 再遍历socket列表时候也设置,new的 阅读全文
posted @ 2019-08-23 13:51 BothSavage 阅读(170) 评论(0) 推荐(0)
摘要: @[toc] 1.分析 随着网站的用户量越来愈多,通过多进程多线程的会力不从心 使用协程可以缓解这一问题 只要使用gevent实现 2.代码 关于作者 "个人博客网站" "个人GitHub地址" 个人公众号: 阅读全文
posted @ 2019-08-23 13:31 BothSavage 阅读(189) 评论(0) 推荐(0)
摘要: @[toc] 1.优化分析 在单进程的时候,相当于 是来一个客户,派一个人去服务一下 效率低,现在使用多进程来服务 假设场景 100个人同时访问页面 单进程:一次处理,后面的会等待时间长 多进程:并发处理,一起处理 当然进程不能越多越好,硬件不支持 线程的开销比进程少,但最好使用协程 注意 用pro 阅读全文
posted @ 2019-08-23 13:16 BothSavage 阅读(346) 评论(0) 推荐(0)
摘要: @[toc] 1.说明 使用正则表达式,匹配客户端的请求头 获取到请求的路径 返回对应请求路径的文字 可以使用打开对应文件的方式去返回对应的文件 2.代码 关于作者 "个人博客网站" "个人GitHub地址" 个人公众号: 阅读全文
posted @ 2019-08-23 12:29 BothSavage 阅读(194) 评论(0) 推荐(0)
摘要: @[toc] 1.注意 浏览器解析的时候偶\r\n才算一个换行符 发送的str要编码,这里使用的是utf8 其他的都和上一篇没有什么区别 这里主要返回的是固定的网址 2.代码 关于作者 "个人博客网站" "个人GitHub地址" 个人公众号: 阅读全文
posted @ 2019-08-23 12:08 BothSavage 阅读(201) 评论(0) 推荐(0)
摘要: @[toc] 1.HTTP分析 当你去访问一个网址的时候,浏览器会发送而各种头信息给服务器 然后服务器根据信息,返回一定数据的格式 最简单的就是下面的代码 自己构造返回数据的时候,头信息一定放在前面 当出现空格的时候,下一行就是返回的超文本HTML 2.简单服务器 说明 创建一个socket对象,配 阅读全文
posted @ 2019-08-23 11:49 BothSavage 阅读(177) 评论(0) 推荐(0)
摘要: @[toc] 其他api说明 说明 常用的就是先定义一个pattern 然后写规则,注意要在字符串前写个r,防止转义 然后在pattern.findall(string) ,返回的是一个列表,就算只有一个匹配返回的也是列表 关于作者 "个人博客网站" "个人GitHub地址" 个人公众号: 阅读全文
posted @ 2019-08-23 10:57 BothSavage 阅读(196) 评论(0) 推荐(0)
摘要: @[toc] 1.邮箱 2.手机号码 关于作者 "个人博客网站" "个人GitHub地址" 个人公众号: 阅读全文
posted @ 2019-08-23 10:50 BothSavage 阅读(111) 评论(0) 推荐(0)
摘要: @[toc] "参考文章" 1.常用api pattern 匹配的正则表达式 string 要匹配的字符串。 flags 标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 可选标志 一个按照index返回匹配到的,一个返回所有 2.例子 3.正则表达式模 阅读全文
posted @ 2019-08-23 10:35 BothSavage 阅读(192) 评论(0) 推荐(0)
摘要: @[toc] 1.类比 一个生产玩具的工厂: 一个生产线成为一个进程,一个生产线有多个工人,所以工人为线程 单进程 多线程:一条生产线,多个工人 多进程 多线程:多条生产线,多个工人 协程:工人空闲的时候安排做其他事 2.总结 1.进程是资源分配的单位 2.线程为操作系统调度的单位 3.进程切换需要 阅读全文
posted @ 2019-08-23 10:22 BothSavage 阅读(146) 评论(0) 推荐(0)
摘要: @[toc] 1.说明 上个博文携程实现的多任务 依然是一个进程,一个线程,只不过执行了不同的代码部分 这里使用gevent,或者greenlet 当gevent执行的时候遇到gevent.sleep(time)就会切换执行 2.代码 关于作者 "个人博客网站" "个人GitHub地址" 个人公众号 阅读全文
posted @ 2019-08-23 10:14 BothSavage 阅读(156) 评论(0) 推荐(0)
摘要: @[toc] 1.注意 先定义函数,函数里面放一个yiled 主函数生成该对象 执行while循环 调用生成器对象的next 因为每次调用next,不会继续执行,从而 完成多进程 2. 代码 关于作者 "个人博客网站" "个人GitHub地址" 个人公众号: 阅读全文
posted @ 2019-08-23 09:58 BothSavage 阅读(240) 评论(0) 推荐(0)
摘要: @[toc] 1.主要技术:Flask,requests requirements.txt如下 requests =2.10.0 Flask =1.0.2 xmltodict =0.12.0 2.实现的主要功能 根据自定义消息回复关键字 调用机器人qingyunke的api,实现自动聊天 上传永久素 阅读全文
posted @ 2019-08-23 01:47 BothSavage 阅读(664) 评论(0) 推荐(0)
摘要: @[toc] 1.说明 个人微信公众号开发的功能有限,因为很多权限没有,但支持上传永久素材,具体查看微信公众号文档 这里的请求都要将本地IP地址放到微信公众号的白名单 2.上传素材 从配置文件读取用户个人资料,用于获得访问api的权限 使用的是官方演示的curl命令 3.获取素材列表 获取素材的目的 阅读全文
posted @ 2019-08-23 01:45 BothSavage 阅读(923) 评论(0) 推荐(0)
摘要: @[toc] 1.消息处理 现在只处理text文本消息 没有关键字的就交给qingyunke机器人去应付,这是一个免费的对话api 从配置文件中读取关键字信息,如果存在某个关键字就返回对应的 返回的时候要传之前用户的信息,所以这里就直接把微信服务器发送过来的xml文件转为dict传过来 返回给用户信 阅读全文
posted @ 2019-08-23 01:38 BothSavage 阅读(278) 评论(0) 推荐(0)