TCP的三次握手和四次挥手 三次握手: 为什么需要三次握手? 客户端:我可以发东西给你(确保客户端的发送能力) 服务器:我可以收到,你能收到么?(确保服务器的接受和发送) 客户端:我能收到!(确保能收到) 连接建立! 如果是四次握手? 没必要啊,第三次已经确认可以收到消息了 如果是两次握手? 当网络阻塞时,客户端会发送两次,第一次请求到达服务器的时间慢于第二次 如果当时通信结束,服务器又收到了第一次阻塞的消息,如果是两次握手,就会分配资源 然而客户端已经完成了通信,不需要再连接了,会造成资源的浪费和安全隐患 四次挥手: 客户端:我说完了,我想停止发送请求了 服务器:我知道你要停止发送了,我会停止接受消息 ( 服务器停止接受消息,但是 …
Flask 学习 入门: 最小的Flask 程序 from flask import Flask # 导入flask app = Flask(__name__)#使用单一的模块(如本例),你应该使用 __name__ @app.route('/hello') #route()装饰器 什么样子的URL能触发我们的函数 def hello_word(): return 'Hello Word!'#返回我们想在浏览器中显示的内容 if __name__ == '__main__': #确保服务器只会在该脚本被 Python 解释器直接执行的时候才会运行, …
Python构建开源软件 python的构建工具setup.py的应用场景 一般在安装python模块的时候,我们会使用pip install 模块名进行在线安装,会安装依赖包,或者python setup.py install通过源码在本地安装,不会安装依赖包 在做一个开源项目的时候遇到了一些问题: 我的程序需要用到python的Redis等模块,以及自己写的入口文件run.py,怎么实现可以在服务器上方便的发布,也就是说,可以让依赖和自己写的程序一起安装,同时将自己写的模块变成一个可执行文件 ### setup.py 示例以及注释: from setuptools import setup, find_packages …
RbbitMQ 学习笔记 AMQP协议组成部分 Module layer:协议最高层,定义了供客户端使用的命令 Session layer:中间层,负责将客户端的命令发送给服务端,再将服务端的命令返回给客户端,为客户端和服务端之间提供可靠的通信 Transport layer:最底层,包括二进制流的传输,帧处理,信道复用,错误检测 生产者使用AMQP的过程 Producter 建立连接 开启通道 发送消息 释放资源 消费者使用AMQP的过程 Consumer 建立连接 开启通道 准备接受消息 发送确认 释放资源 AMQP命令和javaAPI的对应 Connection.Start : factory.newConnection 新建 …
前记: 爬虫:使用任何技术手段,批量获取网站信息的一种方式。关键在于批量。 反爬虫:使用任何技术手段,阻止别人批量获取自己网站信息的一种方式。关键也在于批量。 误伤:在反爬虫的过程中,错误的将普通用户识别为爬虫。误伤率高的反爬虫策略,效果再好也不能用。 拦截:成功地阻止爬虫访问。这里会有拦截率的概念。通常来说,拦截率越高的反爬虫策略,误伤的可能性就越高。因此需要做个权衡。 资源:机器成本与人力成本的总和。 url 管理器:管理待抓取url集合和已抓取url集合 个人:set(),python的set()可以自动去重 大量带爬取url:关系数据库mysql 互联网公司:缓存数据库(高性能) 网页下载器: …