2017年4月1日

Linux 学习笔记之 --- epoll 事件模型详解

摘要: epoll 主要采用对已就绪的 fd 进行轮询操作 一、epoll 触发方式 epoll支持 ET 和 LT 两种触发方式 ET(边缘触发):Nginx 就是采用 ET 触发方式,只支持 no-block 方式,当一个 fd 缓冲区就绪的时候,只会发送一次事件触发, 而不会管缓冲区的数据是否已经被读 阅读全文

posted @ 2017-04-01 15:06 RobotZhu 阅读(4270) 评论(0) 推荐(1) 编辑

Linux 学习笔记之 --- select 与 poll 事件模型详解

摘要: select 与 poll 工作原理: 1、select 主要是采用轮询的方式来实现对就绪的 fd 处理: 2、poll 和 select 基本相同,主要不同在于 poll 没有对 fd 数量限制 工作模型: 工作流程: 1、用户态创建了网络 IO 连接,假设一个 socket 连接就是一个 fd 阅读全文

posted @ 2017-04-01 15:03 RobotZhu 阅读(556) 评论(0) 推荐(0) 编辑

Tornado 高并发源码分析之二---Tornado启动和请求处理流程

摘要: Tornado 服务器启动流程 因为Tornado 里使用了很多传类的方式,也就是delegate,之所以要这么做,其实和 iOS 开发那样,也很多的 delegate, 如此来实现高度解耦,但是比较绕,所以建议: 1、先浏览一遍启动流程,再看源码 2、在看一遍请求到来时的处理流程,再看源码 备注: 阅读全文

posted @ 2017-04-01 14:29 RobotZhu 阅读(1196) 评论(0) 推荐(0) 编辑

Tornado 高并发源码分析之五--- IOLoop 对象

摘要: IOLoop主要工作 1、将TCPServer 注册到 IOLoop 的事件记到 _handlers 字段,同时注册 READ 和 ERROR 事件到 epoll 2、IOLoop 启动一个大循环,负责轮询epoll中是否已经有就绪的事件,如果有就执行对应的回调 以下为源码分析,省略部分源码,只取主 阅读全文

posted @ 2017-04-01 14:20 RobotZhu 阅读(1345) 评论(0) 推荐(0) 编辑

Tornado 高并发源码分析之四--- HTTPServer 与 TCPServer 对象

摘要: 主要工作: 服务器启动的时候做的事: 1、把包含了各种配置信息的 application 对象封装到了 HttpServer 对象的 request_callback 字段中,等待被调用 2、TCPServer 通过 listen 方法启动端口监听, 封装_handle_connection回调函数 阅读全文

posted @ 2017-04-01 14:17 RobotZhu 阅读(1643) 评论(0) 推荐(0) 编辑

Tornado 高并发源码分析之六---异步编程的几种实现方式

摘要: 方式一:通过线程池或者进程池 导入库futures是python3自带的库,如果是python2,需要pip安装future这个库 备注:进程池和线程池写法相同 1 from concurrent.futures import ThreadPoolExecutor, ProcessPoolExecu 阅读全文

posted @ 2017-04-01 14:14 RobotZhu 阅读(2801) 评论(0) 推荐(0) 编辑

Tornado 高并发源码分析之三--- Application 对象

摘要: Application 对象主要工作: 服务器启动时: 1、在新建一个app的时候,根据设置好的 URL 和回调函数 Handler 封装成URLSpec 对象 服务器运行时: 2、在请求到来,将 HTTPServer 封装好的HTTPRequest 传入_RequestDispatcher对象,_ 阅读全文

posted @ 2017-04-01 13:57 RobotZhu 阅读(611) 评论(0) 推荐(0) 编辑

Tornado 高并发源码分析之一---启动一个web服务

摘要: 前言: 启动一个tornado 服务器基本代码 1 class HomeHandler(tornado.web.RequestHandler): #创建 RequesHandler 对象,处理接收到的 http 请求 2 def get(self): 3 entries = self.db.quer 阅读全文

posted @ 2017-04-01 13:50 RobotZhu 阅读(993) 评论(0) 推荐(0) 编辑

2016年11月27日

ubuntu12 安装redis和phpRedisAdmin详细流程

摘要: 一、Ubuntu安装redis(redis默认端口6379) 方式一、直接下载源码,编译(redis可以编译源码之后直接运行,不需要安装) 1.1执行命令,从官网下载源码编译: $ wget http://download.redis.io/releases/redis-3.2.5.tar.gz $ 阅读全文

posted @ 2016-11-27 22:56 RobotZhu 阅读(1266) 评论(0) 推荐(0) 编辑

2016年11月6日

ubuntu12上部署Django1.8.4+uwsgi+nginx超级详细流程配置到云服务器

摘要: 环境: 系统:ubuntu12,系统自带默认有python2.7 框架:Django1.8.4,需要python2.7以上才能支持 前言: 用户浏览器发送http请求->nginx(静态文件js,直接返回静态文件)->uWSGI(动态请求,nginx与uWSGI是通过socket传送交流的)->Dj 阅读全文

posted @ 2016-11-06 23:47 RobotZhu 阅读(873) 评论(0) 推荐(1) 编辑

导航