自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 关于Nginx热部署的细节分析

Nginx由于其高并发、高性能、可扩展性好、高可靠性、热部署、BSD许可证等优势被广泛使用,本人主要针对热部署的部分展开说明热部署的具体步骤以及步骤背后发生的具体事情。本次热部署采用的Nginx版本号为,旧版本Nginx为1.24.0,新版本为1.26.0Nginx提供了非常便捷的热重载的升级方式,能有效保证服务不中断的情况下执行Nginx的升级任务,并且提供了快速的回退方法,这对业务容忍度很低的业务系统来说是非常好用的功能。

2024-05-27 10:14:07 862

原创 详解HTTP配置(一):http配置项的使用场景

本文大体介绍了下这一系列文章将要介绍的关于Nginx配置项的大致内容,并对http配置项的使用场景做了简单说明,结合一个具体例子说明Nginx配置项的逻辑。

2022-06-15 15:14:24 545 1

原创 Nginx开发HTTP模块(八):用C++语言编写HTTP模块

本文介绍了使用C++开发Nginx的HTTP模块的可行性以及实现的具体思路,并对开发过程中需要注意的细节进行了介绍。

2022-06-15 13:57:46 1109

原创 Nginx开发HTTP模块(七):将磁盘文件作为包体发送

本文中主要介绍了Nginx如何将磁盘上的文件作为包体发送,并说明了如何释放文件句柄及如何实现多线程下载和断点续传功能。

2022-06-14 21:41:10 689

原创 Nginx开发HTTP模块(六):发送响应

请求处理完毕后,需要向用户发送HTTP响应,告知客户端Nginx的执行结果。HTTP响应主要包括响应行、响应头部、包体三部分。发送HTTP响应时需要执行发送HTTP头部(发送HTTP头部时也会发送响应行)和发送HTTP包体两步操作。调用ngx_http_send_header时把ngx_http_request_t对象传给它即可,而ngx_http_send_header的返回值时多样的,在本文中,可以认为返回NGX_ERROR或返回值大于0就表示不正常。2. 设置响应中的HTTP头部的过程如同hea

2022-06-13 17:53:24 1387

原创 Nginx开发HTTP模块(五):处理用户请求

本文介绍如何处理一个实际的HTTP请求。

2022-06-10 17:14:25 1063

原创 Nginx开发HTTP模块(四):定义自己的HTTP模块

介绍如何定义自己的HTTP模块

2022-06-09 15:28:09 397

原创 Nginx开发HTTP模块(三):HTTP模块的数据结构

对HTTP模块的定义及其使用的数据结构进行简要介绍

2022-06-08 15:13:08 158

原创 Nginx开发HTTP模块(一):Nginx基本数据结构

Nginx常用数据结构整理整型的封装typedef intptr_t ngx_int_t;typedef uintptr_t ngx_uint_t;ngx_str_t数据结构typedef struct { size_t len; u_char *data;} ngx_str_t;data指针:指向字符串起始地址len:字符串的有效长度ngx_list_t数据结构typedef struct ngx_list_part_s ngx_list_part_t;struct

2022-06-02 15:16:43 212

原创 记一次go语言中“:=“与“=“错误使用导致的问题

问题:使用gin框架查询mysql中一行数据报错报错内容:panic: runtime error: invalid memory address or nil pointer dereference代码如下:package mainimport ( "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" // init "time")var db *sql.DBfunc initMySQL() (err error) {

2021-12-16 17:30:48 791 1

原创 Nginx开发HTTP模块(二):如何将自己的HTTP模块编译进Nginx

如何将自己的HTTP模块编译进NginxNginx提供了一种简单的方式将第三方的模块编译进Nginx中:首先把源代码文件全部放到一个目录下同时在该目录中编写一个文件用于通知Nginx如何编译本模块,这个文件名必须为config只要在configure脚本执行时加入参数–add-module=PATH(PATH就是上面我们给定的源代码、config文件的保存目录),就可以在执行正常编译安装流程时完成Nginx编译工作执行完configure脚本后Nginx会生成objs/Makefile和objs

2021-11-10 20:40:48 3258

原创 netfilter.org项目介绍

什么是netfilter.org项目netfilter项目是一个社区驱动的协作的FOSS(自由开放源码软件)项目,该项目为2.4.x及后期内核系列Linux内核提供了包过滤功能。netfilter项目通常与iptables和它的接班人nftables配合使用。netfilter 项目支持数据包过滤、网络地址 [和端口] 转换 (NA[P]T)、数据包日志记录、用户空间数据包排队和其他数据包处理。netfilter hooks 是 Linux 内核中的一个框架,它允许内核模块在 Linux 网络堆栈的

2021-11-09 11:28:29 753

原创 Linux学习笔记:RAID工作原理详细介绍

RAID工作原理为什么要用RAID RAID(Redundant Arrays of Independent Disks,磁盘阵列):把相同的数据存储在多个硬盘的不同的地方的方法 通过RAID可以提高磁盘I/O能力(磁盘并行读写)以及提高耐用性(磁盘冗余)。RAID级别:多种磁盘组织在一起的工作方式有所不同实现方式: 外接式磁盘阵列:通过扩展卡提供适配能力内接式磁盘阵列:主板集成

2017-09-25 17:20:22 564

原创 Linux学习笔记:bash脚本编程之用户交互

bash脚本编程之用户交互read命令解析 从键盘读取变量的值,通常用在shell脚本中与用户进行交互的场合。常用选项: -p ‘PROMPT’:指定读取时的提示符-t TIMEOUT:指定读取时的等待时间bash -n /path/to/some_scripts:检测脚本中的语法错误bash -x /path/to/some_scripts:调试执行示例: #!/bin/bas

2017-09-11 17:14:48 922

原创 Linux学习笔记:Linux磁盘管理

相关硬件基础知识块设备:clock,存取单位为“块”,磁盘即为块设备字符设备:char,存取单位为“字符”,键盘即为字符设备设备文件:用于关联至一个设备驱动程序,今儿能够和与之对应的精简设备进行通信 设备号码: 主设备号:major number,表示设备类型次设备号:minor number,表示同一类型下的不同设备查看方式: 在/etc下使用ls -l命令即可查看对应设备的

2017-08-18 17:20:38 438

原创 Linux学习笔记:Linux文件系统上的特殊权限

Linux文件系统上的特殊权限权限 r:可读w:可写x:可执行user:属主权限group:属组权限other:其他安全上下文 前提:进程由属主和属组,文件有属主和属组任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否拥有执行权限启动为进程之后,其进程的属主为发起者;进程的属组为发起者所属的组进程访问文件时的权限,取决于进程的发起者 进程的发起者,同文件的属

2017-08-18 15:49:12 469

原创 Linux学习笔记:文件查找命令(find)

文件查找命令在文件系统上查找符合条件的文件文件查找:locate,find 非实时查找(数据库查找):locate实时查找:findlocate 依赖于事先构建的索引:索引的构建实在系统较为空闲时自动进行(周期性任务):手动更新数据库(updatedb)索引构建过程需要遍历整个根文件系统,极消耗资源工作特点: 查找速度快模糊查找非实时查找locate KEYWORDfind

2017-08-15 16:37:32 617

原创 Linux学习笔记:vim编辑器

简介vi:Visual Interface,文本编辑器文本:ASCII,Unicode文本编辑种类: 行编辑器:sed全屏编辑器:nanoVIM:Vi IMproved使用vim:模式化的编辑,模式种类如下: 编辑模式:命令模式输入模式末行模式:提供内置的命令行接口打开文件: vim [OPTION…] FILE… +#:打开文件后,直接让光标处于第#行的行首+\PAT

2017-08-14 16:59:59 635

原创 Linux学习笔记:bash的算术运算及条件测试

bash中的算术运算+,-,*,/,%,**实现算术运算: let var=arithmetic expression(算术运算表达式)var=$[ 算术表达式 ]var=$(( 算术表达式 ))var=$(expr arg1 arg2 arg3 …) Note:乘法符号在有些场景需要转义符 bash有内建的随机数生成器:$RANDOM增强型赋值符号: +=,-=,*=,/=,

2017-08-14 11:47:19 708

原创 Linux学习笔记:bash的配置文件

bash的配置文件 按生效范围划分,存在两类: 全局配置: /etc/profile /etc/prfile.d/*.sh/etc/bashrc个人配置: ~/.bash_profile~/.bashrc按功能划分,存在两类: profile类:为交互式登录的shell提供配置bashrc类:为非交互式登录的shell提供配置shell登陆: 交互式登录:/etc/prof

2017-08-09 17:32:53 596 1

原创 Linux学习笔记:bash的基础特性之变量

变量类型变量类型决定数据存储格式、存储空间大小和参与运算种类字符型:数值型: 整型浮点型强类型:定义变量时必须指定类型,参与运算必须符合类型要求,调用未声明变量会产生错误弱类型:无需指定类型,默认均为字符型,参与运算会自动进行隐式类型转换,变量无须实现定义可直接调用bash中的变量的种类:根据变量的生效范围等标准: 本地变量:生效范围为当前shell进程:对当前shell之外的其

2017-08-09 17:02:57 592

原创 Linux学习笔记:egrep及扩展的正则表达式

egrep及扩展的正则表达式egrep = grep -Eegrep [OPTION]… PATTERN [FILE]…扩展正则表达式的元字符 字符匹配: .:匹配任意单个字符[]:匹配指定范围内的任意单个字符[^]:匹配指定范围外的任意单个字符次数匹配: *:匹配前面的字符任意次(贪婪模式)?:匹配前面的字符0或1次,即前面的字符可有可无+:匹配前面的字符至少一次{m}:匹

2017-08-09 14:45:14 555

原创 Linux学习笔记:grep及正则表达式

grepLinux上文本处理三剑客grep:文本过滤(模式:pattern)工具 家族:grep,egrep,fgrep sed: stream editor,文本编辑工具awk:Linux上实现gawk,文本报告生成器grep:Global search REgular expression and Print out the line作用:文本搜索工具,根据用户指定的“模式”对目标文本

2017-08-04 17:31:42 399

原创 Linux学习笔记:bash的基础特性之二(shell编程)

bash的基础特性提供了编程环境(程序:指令+数据) 程序编程风格: 过程式:以指令为中心,数据服务于指令对象式:以数据为中心,指令服务与数据shell程序:提供了编程能力,解释执行程序的执行方式: 计算机:运行二进制指令编程语言: 低级:汇编语言高级: 编译:高级语言–>编译器–>目标代码,例如:c,c++,java解释:高级语言–>解释器–>机器代码,例如shell,pe

2017-08-04 16:41:20 476

原创 Linux学习笔记:权限管理

权限管理文件的权限管理主要针对三类对象进行定义: owner:属主,ugroup:属组,gother:其他,o每个文件针对每类访问者都定义了三种权限 r:Readablew:Writblex:eXcutable文件: r:可使用文件查看类工具获取其内容w:可修改其内容x:可以把文件提请为内核启动为一个进程目录: r:可以使用ls查看此目录中文件列表w:可再次目录中创建文

2017-08-03 15:12:49 520

原创 Linux学习笔记:用户和组管理

用户和组管理认证:token,identify(username/password)资源分配(派) Authentication:认证Authorization:授权Accounting(Audition):审计 Linux用户: 管理员:root普通用户:1-65535 系统用户:1-499(CentOS7.0开始为1-999),守护进程获取资源进行权限分配登陆用户:交互

2017-08-02 18:06:45 507

原创 Linux学习笔记:Linux基础命令之五

关机或重启命令halt,poweroffreboot -f:强制,不调用shutdown-p:切断电源shutdown 格式:shutdown [OPTION]… TIME [MESSAGE]-r:–reboot 重启-H:–halt 关机-c:取消关机或重启TIME now:立刻+m:相对时间表示法:从命令提交开始多久以后hh:mm:绝对时间表示,指明具体时间

2017-08-02 17:15:07 578

原创 Linux学习笔记:bash的基础特性

bash的基础特性历史命令 history 环境变量: HISTSIZE:命令历史记录的条数HISTFILE:~/.bash_historyISTFILESIZE:命令历史文件里路的条数history -d OFFSET:在指定位置删除历史命令history -c:清空历史命令history #:显示历史中最近的#条命令history -a:手动追加当前绘画缓冲区的命令历史至历史

2017-07-31 11:35:24 473

原创 Linux学习笔记:Linux基础命令之四(系统管理类命令)

系统管理类命令关机:halt,poweroff,shutdown,init 0重启:reboot,shutdown,init 6跟用户登陆相关:who,whoami Linux的文件系统根文件系统(rootfs) root filesystemLSB,FHS:Filesystem Hierarchy Standard /etc,/usr,/var,/root,/home,/

2017-07-31 10:45:24 505

原创 Linux学习笔记:Linux基础命令之三

基础命令date: date [OPTION]… [+FORMAT]:显示 FORMAT:格式符号%D%F%Tdate [MMDDhhmm[cc]YY][.ss] 设置时间 MM:月份DD:几号hh:小时mm:分钟YY:两位年份ccYY: 四位年份.ss:秒钟Linux的两种时钟: 系统时钟:由Linux内核通过CPU的工作频率进行的及时硬件时钟hwclock

2017-07-28 18:03:12 572

原创 Linux学习笔记:Linux基础命令之二(Linux命令帮助的获取)

Linux命令帮助的获取- 格式:COMMAND [OPTION]... [ARGUMENTS]... - 外部命令:都有一个可执行程序,位于文件系统某目录下,shell程序搜寻可执行程序文件的路径定义在$PATH变量中 - #COMMAND --help或#COMMAND -h - 使用手册(manual) - # man COMMAND - 信息页 - #

2017-07-28 11:55:01 428

原创 Linux学习笔记:Linux基础命令之一

Linux的哲学思想一切皆文件:把几乎所有的资源,包括硬件设备都组织为文件格式;由众多单一目的的小程序组成,一个程序只实现一个功能,而且要做好 (组合小程序完成复杂任务);尽量避免和用户交互: 目标:实现脚本编程,已自动完成某些功能使用纯文本文件保存配置信息 目的:一款适用的文本编辑器即能完成系统配置工作如何获取CentOS的发行版http://mirrors.aliyun.co

2017-07-28 11:18:39 487

空空如也

空空如也

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

TA关注的人

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