自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(9)
  • 收藏
  • 关注

原创 高性能服务器程序框架

最近在完成了个人的web服务器项目以及阅读过nginx的源码,结合《高性能服务器编程》以及《Linux多线程服务器编程》,对服务器的编程框架做一下总结,有些部分树于个人理解,有错误请指正。 1 单进程 1)单进程单线程 在进行网络编程时,大家最先接触的就是这一种模型。 bind(); listen(); while(1) { accept(); read(); write(); } 线程循环处理客户端发来的连接,但是在高并发的场景下,服务器是顺序处理的,使用阻塞式IO进行读写,响应速度会大大的降低。

2021-04-19 22:56:06 98

原创 项目中数据库连接池总结

在个人的项目中使用到了mysql连接池与redis连接池,记录一下编码的思路和调试过程中遇到的一些问题。 1 整体实现思想 mysql与redis均使用到了连接池,因此将其从一个公有抽象类中继承出来,每个连接池实现自己的类方法 template<typename T> class connection_pool { public: virtual void init() = 0; virtual T * GetConnection() = 0; //获取数据库连接

2021-04-05 23:10:19 353

原创 Mysql索引之B+树

1 索引的常见模型 索引是一种能够提升查找效率的数据结构,提到查找,作为一名合格程序员首先就应想到哈希表、有序数组和二叉查找树(AVL树、红黑树)。接下来从数据库的使用角度来对这三种数据结构进行分析。 1)哈希表 哈希表是一种利用键值对(key-value)访问数据的一种结构。哈希表是一块连续的存储空间,利用哈希函数计算出key在表中的具体地址,随后将value插入到这个地址中。在查找数据时,根据键值对应的地址去除数据即可。 选取哈希函数的原则: (1)计算简单 (2)计算出的地址在表中尽可能均匀分布 然而

2021-03-08 23:15:44 311

原创 nginx数据结构之红黑树(2)

1 红黑树简介 红黑树是一种自平衡的二叉查找树,不同于AVL树,它并不是绝对平衡的,它是在一定规则下维持的平衡。 红黑树的规则: (1)每个节点或者是黑色,或者是红色。 (2)根节点是黑色的。 (3)每个叶子结点为黑色(这里叶子结点指的是空结点,个人认为在操作红黑树时,可以忽略该条规则)。 (4)红色结点的孩子结点必须是黑色的,即两个红色结点不能相邻. (5)从一个结点开始到达每个叶子结点的路径黑色结点的数目都是相同的,又可将红黑树的平衡看为黑色平衡。 2 红黑树的操作 找到待插入的位置,将新插入的结点的颜

2021-02-22 23:46:10 81

原创 nginx数据结构之红黑树(1)

nginx中的定时器实际上就是一颗红黑树,本文主要对红黑树进行一下解读。 红黑树的由来 红黑树是一种自平衡的二叉查找树,提起二叉查找树,每个人都能快速反应过来是什么,下面简单的列出二叉查找树的结点插入与删除方法。 1) 二叉查找树 插入方法: tree_s * insert_node(tree_s * root, int n) { if(root == NULL) { root = new tree_s(n); return root; } if(root->value < n)

2021-02-20 18:01:31 198

原创 nginx源码解析(2)

nginx中的定时器 服务器中定时器是重要的组成部分,nginx也不例外,nginx将定时器作为一种事件类型来进行处理。在nginx中利用红黑树来存储定时器,至于为什么选择红黑树,个人认为主要是为了兼顾查找、插入、删除的效率而选取的折中方案。 1 定时器的初始化、添加、删除 初始化定时器,即创建一颗红黑树 ngx_int_t ngx_event_timer_init(ngx_log_t *log) { ngx_rbtree_init(&ngx_event_timer_rbtree, &amp

2021-02-09 18:58:02 99

原创 nginx源码解析(1)

目前阅读nginx源码已经一个多月了,写点东西记录一下,加深下自己的理解,如发现错误,欢迎与我进行沟通讨论。 1 nginx工作模式 nginx默认采用多进程的方式,即一个主进程master进程与多个子进程worker进程,master进程的主要作用是与用户进行交互并管理worker进程,真正的业务处理(如网络事件)是由worker进程来实现的,多个worker进程之间的关系是平等的,他们会通过竞争机制来获取处理客户端的请求。 进程模型图: (图片来源自网络,侵删) 如图所示,用户通过信号与master进

2021-01-30 14:09:24 728

转载 2021-01-24

  Nginx的配置文件nginx.conf配置详解如下:   user nginx nginx ; Nginx用户及组:用户 组。window下不指定   worker_processes 8; 工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。   error_log &nb...

2021-01-24 15:13:59 116

原创 Nginx配置文件

Nginx配置文件1 nginx基本概念:2 Nginx配置文件的内容欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 1 nginx基本概念: Nginx是一个高性能的HTTP与反向代理web

2021-01-24 15:02:53 99 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除