网络编程
Tangocc
@GitHub: tangocc.github.io
@baiduer
展开
-
Linux下select, poll和epoll IO模型的详解
转自 http://blog.csdn.net/tianmohust/article/details/6677985目录(?)[+]一).Epoll 介绍Epoll 可是当前在 Linux 下开发大规模并发网络程序的热门人选, Epoll 在 Linux2.6 内核中正式引入,和 select 相似,其实都 I/O 多路复用技术而已 ,并没有什么转载 2017-02-23 09:44:57 · 1149 阅读 · 0 评论 -
NGINX系列之HTTP阶段分析
读取完请求头后,nginx进入请求的处理阶段。简单的情况下,客户端发送过的统一资源定位符(url)对应服务器上某一路径上的资源,web服务器需要做的仅仅是将url映射到本地文件系统的路径,然后读取相应文件并返回给客户端。但这仅仅是最初的互联网的需求,而如今互联网出现了各种各样复杂的需求,要求web服务器能够处理诸如安全及权限控制,多媒体内容和动态网页等等问题。这些复杂的需求导致web服务器不再是一...原创 2018-07-28 13:37:31 · 691 阅读 · 0 评论 -
NGINX系列之配置文件
nginx是一款高性能的服务器,其核心配置可配置,存储在nginx.conf文件中,本文简要介绍各参数的含义。######Nginx配置文件nginx.conf######nginx运行的用户名和用户组user root root;#nginx工作进程数,建议设置为等于CPU总核心数。worker_processes 8;#全局错误日志定义类型,[ debug | info...原创 2018-07-28 13:36:34 · 246 阅读 · 0 评论 -
NGINX系列之进程模型
在上一节中分析了nginx主流程,在mian函数中完成服务器的配置文件解析以及模块初始化工作后,根据系统设置进入单进程或者多进程模式,本文将分析nginx进程模型。进程模型简介在web服务中,随着用户基数增长,技术演进的趋势是提高系统的并发性和稳定性,一种方式是通过扩展机器的个数实现负载均衡,通过多台机器的量变引起质变,提高系统的并发性,显然这种方式资源利用率较低,成本较高;第二种方式...原创 2018-07-28 13:35:36 · 2970 阅读 · 0 评论 -
NGINX系列之事件模型
nginx在完成进程的创建后,主进程进入信号处理的循环中,不参与事件处理;worker进程则进入事件处理过程。nginx任何操作,包括定时任务、连接、读写等都可以定义为事件,事件具有的特点是被动特性,即发生才处理,避免因为轮训状态而导致的时间消耗。本章将介绍nginx的事件处理模型。事件模型简介定时器任务上一章节中提到nginx如何实现定时任务?如何确保定时任务的准确性? ...原创 2018-07-28 13:33:35 · 1602 阅读 · 0 评论 -
NGINX系列之MAIN函数
近期在系统学习Nginx相关源码,针对nginx进程模型、事件处理模型、配置以及扩展开发等诸多方面希望能够沉淀一些东西,故针对上述方面整理一系列博客,既然是源码分析,那就首先从main函数开始吧。核心数据结构全局变量cycle数据结构 ngx_cycle_s变量是nginx中贯穿始终的全局变量,其存储在系统运行过程中的所有信息,包括配置文件信息、模块信息、客户端连接、读写事件处理函...原创 2018-07-28 13:32:20 · 784 阅读 · 0 评论 -
NGINX系列之ngx_connection
上文介绍nginx事件模型,当用户发起请求时候,为便于对连接进行管理,服务端将用户的请求封装为一种数据结构ngx_connection_t,从而方便维护客户端各种请求信息以及连接生命周期的管理。数据结构struct ngx_connection_s { void *data; ngx_event_t *read; n...原创 2018-07-28 13:30:33 · 1077 阅读 · 0 评论 -
NGINX系列之内存池
Nginx内存池 ngx_pool_tNginx作为高性能到web服务器,自然需要满足高效的内存使用率和分配效率。 内存池满足上述两个要求,主要优点:统一内存管理,避免内存碎片化,提高系统到使用率(Nginx做内存对齐处理,牺牲一定到使用率换来寻址速率)避免多次向系统申请内存(涉及内核态和用户态转换),提高内存到分配效率;内存统一分配和销毁,避免内存泄露。数据结构 n...原创 2018-07-28 13:29:18 · 264 阅读 · 0 评论 -
NGINX源码分析系列之内存池ngx_pool_t源码分析
Nginx内存池 ngx_pool_tNginx作为高性能到web服务器,自然需要满足高效的内存使用率和分配效率。 内存池满足上述两个要求,主要优点:统一内存管理,避免内存碎片化,提高系统到使用率(Nginx做内存对齐处理,牺牲一定到使用率换来寻址速率)避免多次向系统申请内存(涉及内核态和用户态转换),提高内存到分配效率;内存统一分配和销毁,避免内存泄露。数据结构 ngx...原创 2018-06-21 11:02:45 · 196 阅读 · 0 评论 -
卡尔曼算法精讲与C++实现
卡尔曼滤波器是一个“optimal recursive data processing algorithm(最优化自回归数据处理算法)”。对于解决很大部分的问题,他是最优,效率最高甚至是最有用的。他的广泛应用已经超过30年,包括机器人导航,控制,传感器数据融合甚至在军事方面的雷达系统以及导弹追踪等等。近年来更被应用于计算机图像处理,例如头脸识别,图像分割,图像边缘检测等等。原创 2017-12-05 17:07:32 · 3818 阅读 · 1 评论 -
linux网络编程基础
1.常用头文件介绍① #includeunistd.h是unix std的意思,是POSIX标准定义的unix类系统定义符号常量的头文件,包含了许多UNIX系统服务的函数原型,例如read函数、write函数和getpid函数。unistd.h在unix中类似于window中的windows.h!ssize_t read(int, void *, size_t)ssize原创 2017-04-17 21:59:25 · 833 阅读 · 0 评论 -
5种服务器网络编程模型讲解
1.同步阻塞迭代模型同步阻塞迭代模型是最简单的一种IO模型。其核心代码如下:bind(srvfd);listen(srvfd);for(;;){ clifd = accept(srvfd,...); //开始接受客户端来的连接 read(clifd,buf,...); //从客户端读取数据 dosomthingonbuf(buf); write(...转载 2017-03-11 20:56:00 · 1017 阅读 · 0 评论 -
Linux下网络编程5种实现(源代码)
学习整理Linux网络编程5种服务器模型多线程、多进程、Select、Poll、Epoll实现源代码,注释较为详细,方便初学者学习。1.简单阻塞式客户端服务器实现:(如若链接打不开,复制网址到浏览器打开)源代码:http://download.csdn.net/detail/u013291818/98225252.多线程模型客户端服务器实现:源代码:http://down...原创 2019-08-07 18:11:44 · 2963 阅读 · 0 评论 -
分布式缓存应用
本文大纲:缓存概述CDN缓存反向代理缓存分布式缓存本地缓存缓存架构示例缓存常见问题来源:ITFLY8架构师之家一、缓存概述缓存是分布式系统中的重要组件,主要解决高并发,大数据场景下,热点数据访问的性能问题。提供高性能的数据快速访问。1、缓存的原理转载 2017-03-11 21:04:51 · 2022 阅读 · 0 评论 -
NGINX系列之HTTP模块开发
上文介绍nginx请求11个阶段处理,本文将动手实操开发并注册一个HTTP模块,在实现ngx_http_hello_world_module模块的过程中,详细介绍其实现步骤。模块组成介绍模块定义模块名称 ngx_http_hello_world_module模块功能 功能相对简单,从Hello World开始,通过实现扩展HTTP模块ngx_http_hello_wor...原创 2018-07-28 13:38:32 · 1215 阅读 · 0 评论