自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 资源 (33)
  • 收藏
  • 关注

原创 kubernetes架构及核心组件简介

kubernetes是谷歌开源的容器编排调度系统解决方案,已成为事实上的容器编排调度行业标准。标准的kubernetes以集群的方式部署,如下所示:k8s集群内有两种类型的节点,分别是control Plane(master)和node。mastermaster节点运行k8s的大部分核心组件,包括apiserver,scheduler,controller-manager,etcd等,k8s作为容器编排调度系统的大部分职责都在master节点实现。etcdetcd是k8.

2021-03-08 15:17:23 400 2

原创 nginx事件模块之ngx_epoll_module源码分析

ngx_epoll_module是nginx众多事件模块的其中一个,它利用linux的epoll模型实现nginx事件框架所定义的事件模块接口。运行在linux系统上的nginx默认使用该模块作为事件框架的底层实现。ngx_epoll_module主要是实现了ngx_event.h中规定的事件模块的接口,即实现了ngx_event_module_t中定义的那组回调函数,如下代码片段所示:stati...

2018-02-09 15:10:15 753

原创 nginx事件处理框架及源码解析

nginx的中的事件可以分为两类:系统事件和定时器事件。系统事件指的是由操作系统通知给nginx的事件,例如各种IO多路复用api(select,epoll_wait等)返回的事件,定时器事件是指由nginx的定时器模型产生的超时事件。由于事件处理机制与生俱来的复杂性,为了方便管理,降低开发难度,nginx的事件处理框架将事件的管理抽象成一系列的接口,这些接口屏蔽了事件处理的底层细节,外部只需要关...

2018-02-09 14:48:58 608

原创 nginx的内存池设计

为了方便管理内存和文件等计算机资源,提高运行效率,nginx实现了自己的内存池。除了启动过程中在尚未创建内存池之前的阶段是直接使用系统的内存管理接口之外,nginx的内存管理都是通过内存池进行的。nginx的内存池源码位于ngx_palloc.c和ngx_palloc.h中。首先看内存池相关的数据结构的定义:struct ngx_pool_s { ngx_pool_data_t d

2018-02-07 11:10:47 446

原创 http框架核心之ngx_http_core_module.c

ngx_http_core_module.c是http框架代码中最重要的一部分。nginx中http协议的实现,http框架的大部分核心指令,http请求整个生命周期的处理流程(也可以说是http请求的处理框架)都在这里实现。...

2018-02-05 15:59:08 580

原创 http框架核心之ngx_http.c源码分析

ngx_http.c内主要实现了一个模块:ngx_http_module。ngx_http_module是nginx的http框架的一部分,它是所有http模块能够被加载的唯一入口,承担了http块配置解析,合并,以及http框架及其相关数据结构的初始化。它本身是NGX_CORE_MODULE类型,只有一个指令,就是http,如下所示:static ngx_command_t ngx_http_...

2018-02-05 15:27:18 499

原创 nginx的http模块配置接口以及http框架配置内存布局

http模块是nginx中数量最多,也是配置最复杂的模块。http模块的配置最多可以分为三级,分别是http级别,server级别和location级别。nginx为http模块定义了一组接口,用于模块创建,设置,合并各级别的配置项。在配置读取阶段一共有9个接口,在不同阶段,不同位置被调用。其中8个在ngx_http_module_t中定义,这8个回调是模块级别的,还有1个是指令级别的,由模块的指

2018-02-05 10:01:40 606

原创 nginx错误日志模块ngx_errlog_module

ngx_errlog_module模块是nginx中第二个被执行的模块,它是nginx用来为其它模块提供日志记录功能的基础模块,http,mail,stream等模块都会调用该模块的接口实现日志记录功能。该模块提供了一个指令:error_log,用于指定全局范围的日志配置,指令的定义如下:static ngx_command_t ngx_errlog_commands[] = {

2018-02-02 18:09:00 1833

原创 nginx核心模块ngx_core_module分析

ngx_core_module是nginx中最为核心的一个模块,也是第一个被加载的模块。为什么它是第一个被加载的呢?我们先看它的配置结构体定义:typedef struct { ngx_flag_t daemon;//是否守护进程模式 ngx_flag_t master;//是否以单master进程方式运行

2018-02-02 17:47:57 696

原创 nginx定时器分析

nginx的定时器用于向其它模块提供非操作系统事件的管理接口,源码位于ngx_event_timer.h和ngx_event_timer.c中。nginx的定时器管理是通过红黑树实现的。红黑树的每一个内节点都代表一个定时器事件,节点的值是定时器的超时时间戳,以毫秒为单位,树的最左边的节点的值最小,这意味着树的最左边的节点就是距离超时时间最近的事件,最右边的节点就是距离超时时间最远的事件。添加,

2018-02-02 17:18:05 376

原创 nginx字符串格式化函数

nginx自定义/重命名了很多数据类型,为了在打印日志时能够方便的打印这些数据类型,nginx实现了自己的字符串格式化函数,其中核心是ngx_vlsprintf,它支持多种自定义数据类型的格式化,如下所示: * supported formats: *    %[0][width][x][X]O        off_t *    %[0][width]T              t

2018-02-02 17:13:04 3340

原创 nginx配置的内存布局

nginx的配置系统很灵活,不但支持模块自定义配置项,而且支持多级配置以及合并多级配置项。这样的设计使得nginx的配置在内存中的布局也是分成多级的,比较复杂。因此,这里采用一种自顶向下的方式进行逐级剖析。这里需要先说明一下nginx指令的上下文环境以及有效上下文环境。nginx配置的上下文环境指的是指令在配置文件中的位置,比如配置文件全局,http块全局,http server块, mail

2018-02-02 16:49:00 3131

原创 nginx的模块加载顺序

nginx是按照模块类型的先后顺序来加载模块的,如下所示核心模块 > 事件模块 > 线程池模块 > http模块 > 邮件模块 > stream模块 > 其它模块核心模块加载顺序ngx_core_modulengx_errlog_modulengx_conf_modulengx_openssl_modulengx_

2018-02-02 15:20:22 1423

原创 nginx工作模式

nginx有两种工作模式:master-worker模式和单进程模式。在master-worker模式下,有一个master进程和至少一个的worker进程,单进程模式顾名思义只有一个进程。这两种模式有各自的特点和适用场景。master-worker该模式下,nginx启动成功后,会有一个master进程和至少一个的worker进程。master进程负责处理系统信号,加载配置,管理wo

2018-02-02 15:03:56 6506

原创 nginx配置解析过程分析

nginx在启动,reload和平滑升级时,都会重新加载配置。重新加载配置分成两步:1. 重新加载命令行参数(-g)中定义的全局配置2. 重新加载配置文件中的配置解析配置的核心函数是ngx_conf_parse,不论是解析命令行定义的全局配置还是解析配置文件内容,最终都会调用该函数。函数的原型如下:char *ngx_conf_parse(ngx_conf_t *cf, n

2018-02-02 14:39:46 1049

原创 nginx的配置文件及指令介绍

nginx的配置文件是由一系列的指令构成的。指令可以分为三种:注释,普通指令和块指令。nginx在解析配置文件时,只会解析普通指令和块指令,直接忽略注释,如下面的示例配置所示:#user nobody;worker_processes 1;#error_log logs/error.log;#error_log logs/error.log notice;#error_

2018-02-02 13:17:58 269

原创 nginx的模块化设计思想

nginx的代码中,除了部分底层的核心代码之外,基本上所有的功能都是通过模块化的方式实现的,这样的设计为nginx的功能拓展提供了极大的灵活性。nginx的模块贯穿了从启动,运行一直到结束的nginx进程的整个生命周期。实际上,在每个阶段,是由nginx核心以及模块自身的配置共同决定哪些模块可以参与,如何参与到当前阶段的运行中。目前,nginx支持多种类型的模块,它们功能定位各有不同,运行的上

2018-02-02 11:43:14 851

原创 nginx的基本数据结构

ngx_str_t源码文件:ngx_string.h|c定义:struct ngx_str_s { size_t len;//字符串长度 u_char *data;//字符串起始地址} ngx_str_t;说明:ngx_str_t是nginx使用的字符串类型,ngx_str_t用len成员来表示字符串的长度,c标准库中的

2018-02-01 19:16:17 430

原创 nginx的configure脚本分析

#!/bin/sh# Copyright (C) Igor Sysoev# Copyright (C) Nginx, Inc.LC_ALL=Cexport LC_ALL#options处理命令行选项,并根据选项值和默认值设置全局变量. auto/options#获取makefile,ngx_mo

2018-02-01 19:15:12 378

原创 ngx_cycle_t结构体及ngx_cycle_init函数分析

一  ngx_cycle_t结构体ngx_cycle_t对应于nginx的一次启动,配置重新加载,或者平滑升级。struct ngx_cycle_s { void ****conf_ctx;//配置上下文 ngx_pool_t *pool;//内存池 ngx_log_t

2018-02-01 18:57:41 441

原创 nginx启动流程分析

/* 以下只分析linux环境下的启动流程,非linux环境略过 */int ngx_cdeclmain(int argc, char *const *argv){    ngx_buf_t        *b;    ngx_log_t        *log;    ngx_uint_t        i;    ngx_cycle_t      *cycle, i

2018-02-01 17:08:53 314

原创 linux环境纯命令行俄罗斯方块C语言版

#include #include #include #include #include #include #include enum { S_VERTICAL, S_HORIZON, S_SQUARE, S_THUNDER_1, S_THUNDER_2, S_THUNDER_3, S_THUNDER_4, S_EL_1, S_EL_2,

2018-01-30 17:10:00 1450 2

原创 解数独算法,用C语言递归实现

前几天在看离散数学及其应用第七版的时候,看到了数独的相关章节,就自己写了一个数独的解法,先记下来。生成数独的方法以后再写#include // 寻找下一个未填充的单元int find_next_empty(int arr[9][9], int *row, int *col){ int i, j; for (i = 0; i < 9; i++) for (j = 0; j <

2014-12-22 10:28:04 6417 8

原创 构造螺旋矩阵

void fill_spiral_matrix(int row, int col, int **a){ int start, i, j, min, cnt; int totalnum = row * col; int currow, curcol; min = row < col ? row : col; cnt = min / 2; for (i = 0; i < cnt;

2013-04-24 15:36:53 558 1

原创 生成随机长度的字符串

#include #include #include #include #define STRSIZE 8#define LOOP 100char chrtbl[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_-";static int chrtbl_size = sizeof(chrtbl)

2013-03-07 22:53:09 662

原创 linux下sqlite3插入性能测试

今天上班的时候,突发奇想,不知道sqlite3的插入性能如何,于是做了如下测试。1. 创建空表userinfoCREATE TABLE userinfo (    "username" TEXT,    "address" TEXT,    "sex" TEXT,    "email" TEXT,    "tel" TEXT,    "other" TEXT

2012-02-15 16:31:24 1977

操作系统概念9th

经典操作系统教材《操作系统概念》第九版英文原版,pdf带书签

2018-03-06

linux programming interface 英文原版

经典linux开发数据,号称linux下的apue,pdf文字版,带完整书签

2018-01-29

算法导论完美pdf

这个是算法导论英文文字版,pdf格式,带书签,看起来很方便

2018-01-29

tcp/ip 详解卷1

经典网络书籍 《TCP/IP详解》卷1中文版,文字版带完整书签

2018-01-05

计算机组成与设计-硬件软件接口英文第五版答案

计算机组成与设计 硬件软件接口 英文第五版的课后练习答案

2016-06-22

高仿微信打飞机

高仿微信打飞机iOS源码,功能完整,亲测可用!

2015-12-30

解数独C源码

自己写的C语言版的解数独程序,该死的字数限制

2014-12-24

俄罗斯方框C语言版

linux下用C写的俄罗斯方块源码

2014-12-05

iptables指南

iptables1.1.1.19指南,老外写的,里面对iptables的原理,规则的建立和使用都有很详细的介绍

2012-02-10

算法导论英文版

算法导论英文版,完美pdf格式,带书签的 1

2012-02-06

tcp/ip socket指南

老外写的,tcp/ip socket编程指南,针对程序员写的,:-)

2012-01-13

tftp服务器源码

一个linux下简单的tftp服务器源码,仅供参考

2012-01-13

Understanding IPv6(Second Edition).pdf

Understanding IPv6第二版英文版,带书签,学习IPv6的经典书籍

2012-01-05

卓有成效的程序员英文原版pdf

高级程序员必备的经典书籍,英文原版pdf,带书签。

2011-04-13

C语言标准(C99)pdf英文原版

最新的C语言标准C99的英文全部内容,清晰非扫描版,有书签,阅读起来很方便哈。

2011-04-13

现代编译原理(C语言描述)

现代编译原理(C语言描述)pdf清晰版,经典的编译原理书籍。

2011-04-13

算法导论英文原版pdf格式

著名的算法导论英文原版pdf格式的,你懂的。。。

2011-04-12

InstallShield函数大全(PDF)

Installshield所有函数的详细说明和使用方法,奉献给想深入学习InstallShield的童鞋们

2011-04-12

C语言深度剖析pdf

深入学习C语言的经典书籍,C程序员必看啊,看完这本书C语言基本没啥问题了。

2011-04-12

C语言解析教程(原书第四版)

C语言解析教程第四版中文版,好书,值得收藏。

2011-04-12

C语言标准库函数(pdf)

pdf格式,C语言标准库函数------------

2011-03-18

C标准库源代码(很全的)

C语言标准库源代码,有1000多个文件。。。。。。。。。

2011-03-18

VB写的串口调试精灵源码

用VB6.0写的串口调试精灵的源码,希望对大家有用,特此分享!

2010-08-26

计算机组成原理第二版配套光盘

这是唐朔飞计算机组成原理第二版的配套光盘,里面是各章的课件

2008-10-21

空空如也

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

TA关注的人

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