自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (4)
  • 收藏
  • 关注

转载 tcpdump抓包分析

1 起因前段时间,一直在调线上的一个问题:线上应用接受POST请求,请求body中的参数获取不全,存在丢失的状况。这个问题是偶发性的,大概发生的几率为5%-10%左右,这个概率已经相当高了。在排查问题的过程中使用到了tcpdump和Wireshark进行抓包分析。感觉这两个工具搭配起来干活,非常完美。所有的网络传输在这两个工具搭配下,都无处遁形。为了更好、更顺手地能够用好这两个工具,特整理...

2018-12-29 10:01:05 836

转载 带你真正认识Linux 系统结构

导读 Linux系统一般有4个主要部分:内核、shell、文件系统和应用程序。内核、shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序、管理文件并使用系统。 1. linux内核内核是操作系统的核心,具有很多最基本功能,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。Linux 内核由如下几部分组成:内存管理、进程管...

2018-12-25 18:28:55 218

转载 Linux文件系统详解

 Linux上的文件系统一般来说就是EXT2或EXT3,但这篇文章并不准备一上来就直接讲它们,而希望结合Linux操作系统并从文件系统建立的基础——硬盘开始,一步步认识Linux的文件系统。1.机械硬盘的物理存储机制现代计算机大部分文件存储功能都是由机械硬盘这种设备提供的。(现在的SSD和闪存从概念和逻辑上都部分继承自机械硬盘,所以使用机械硬盘来进行理解也是没有问题的)机械硬盘能实...

2018-12-25 18:25:18 142

转载 mysql explain查看sql语句的执行计划

1、 概述:       执行计划的查看是进行数据库的sql语句调优时的一个重要依据,mysql的执行计划查看相对oracle简便很多,功能也相对简单很多。本文档整理了mysql执行计划的生成方法和查看。2.mysql执行计划的生成方法和查看2.1 执行计划的生成方法:explain select …………….      生成的方法很简单在相应的select前面加explain即可...

2018-12-21 17:48:43 1240

转载 C语言正则表达式详解 regcomp、regexec、regfree详解

标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。C语言处理正则表达式常用的函数有regcomp()、regexec()、regfree()和regerror(),一般分为三个步骤,如下所示: C语言...

2018-12-20 10:28:15 635

转载 Linux LVM逻辑卷配置过程详解(创建,增加,减少,删除,卸载)

Linux LVM逻辑卷配置过程详解许多Linux使用者安装操作系统时都会遇到这样的困境:如何精确评估和分配各个硬盘分区的容量,如果当初评估不准确,一旦系统分区不够用时可能不得不备份、删除相关数据,甚至被迫重新规划分区并重装操作系统,以满足应用系统的需要。LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。RH...

2018-12-20 10:24:57 264

转载 Linux nc命令-参数说明及用法示例

转自:https://www.cnblogs.com/jjzd/p/6306273.htmlps.ubuntu自带的nc是netcat-openbsd版,不带-c/-e参数。pss.在线Markdown编辑器的bug是怎么回事...“#”号依然显示着##参数想要连接到某处: nc [-options] hostname port[s] [ports] …绑定端口等待连接: nc -...

2018-12-14 15:30:08 8945

转载 Llinux nc命令详解

原文 https://www.oschina.net/translate/linux-netcat-command netcat是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中读写数据。通过与其他工具结合和重定向,你可以在脚本中以多种方式使用它。使用netcat命令所能完成的事情令人惊讶。 netcat所做的就是在两台电脑之间建立链接并返回两个数据流,在这之后所能做的...

2018-12-14 15:25:30 448

转载 十大经典排序算法(动图演示)

 0、算法概述0.1 算法分类十种常见排序算法可以分为两大类:非线性时间比较类排序:通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此称为非线性时间比较类排序。线性时间非比较类排序:不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此称为线性时间非比较类排序。 0.2 算法复杂度0.3 相关概念...

2018-12-12 18:04:33 152

转载 Linux值进程、进程组、会话的关系

进程是操作系统的一个核心概念。每个进程都有自己唯一的标识:进程ID,也有自己的生命周期。一个典型的进程的生命周期如图4-1所示。  进程都有父进程,父进程也有父进程,这就形成了一个以init进程为根的家族树。除此以外,进程还有其他层次关系:进程、进程组和会话。进程组和会话在进程之间形成了两级的层次:进程组是一组相关进程的集合,会话是一组相关进程组的集合。这样说来,一个进程会...

2018-12-11 18:29:22 175

转载 为什么ssh一关闭,程序就不再运行了?

问题描述当SSH远程连接到服务器上,然后运行一个程序,eg: ./test.sh, 然后把终端开闭(切断SSH连接)之后,发现该程序中断.原因主要元凶: 挂断信号(SIGHUP) 信号概念介绍在Linux/Unix中,有这样几个概念: 进程组(process group): 一个或多个进程的集合,每一个进程组有唯一一个进程组ID,即进程组长进程的ID. 会话期(session)...

2018-12-11 17:24:01 3801

原创 Lua学习笔记-day10:错误处理、调试、垃圾回收、面向对象、数据库访问

一、Lua错误处理 错误类型:语法错误、运行错误。 错误处理: assert()函数: 功能:检查第一个参数是否为true,如果不为true则将第二个参数作为错误信息抛出。 示例: function add(a, b) assert(type(a) == 'number', 'a is not a...

2018-12-10 16:12:25 165

原创 Lua学习笔记-day9: 文件I/O

一、Lua文件I/O Lua读取和处理文件分为:简单模式和完全模式。 简单模式:仅指针一个输入文件和一个输出文件进行操作。 完全模式:可以同时处理多个文件。 打开文件: file = io.open(filename [, mode]) 参数mode说明: 'r' : 以只读方式打开文件,文件不存在时返回nil...

2018-12-10 16:12:02 207

原创 Lua学习笔记-day5: 数组、迭代器

[]Lua数组 特点: 数组中的元素的数据类型是相同的。 索引以整数表示,索引起始值为1. 数组大小是不固定的。(不同于C中的数组,与python中的list类似。) 一维数组: 示例1: arr = {"one", "two"} for index = 0,2 do p...

2018-12-07 16:36:10 135

原创 Lua学习笔记-day8: 协同程序(coroutine)

[]Lua协同程序(coroutine) 特点: 拥有独立的堆栈、独立的局部变量和独立的指令指针。 与其他协同程序共享全局变量和其他大部分东西。 线程和协同程序的区别: 具有多个线程的程序,多个线程可以同时运行;但是具有多个协程的程序,同一时刻只能有一个协程运行。 基本语法: coroutine.create()...

2018-12-07 16:32:33 184

原创 Lua学习笔记-day7: 元表

[]Lua元表(Metatable) 定义: 元表(metatable)允许我们改变表(table)的行为,每个行为关联了对应的元方法。 处理元表的两个函数: setmetatable(table, metatable) 为指定table设置元表metatable; 如果metatable中存在__meta...

2018-12-07 16:32:06 173

原创 Lua学习笔记-day6: 表、模块与包

一、Lua table(表) 特点: table是Lua的一种数据结构,可以用来创建不同的数据类型,如:数组(索引默认从1开始的简单的线性表),字典等。 table使用关联型数组,可以使用任何类型的值作为数组的索引,nil除外。 大小不固定。 table(表)的构造 构造器是创建和初始化表的表达式。最简单的构造函数是{},创...

2018-12-06 18:42:39 188

原创 Lua学习笔记-day4: 字符串

一、字符串 字符串的表示形式: 单引号"'",双引号""",两对中括号"[[]]"。 转义字符: \ddd: 1到3位八进制数所代表的的任意字符。 \xhh: 1到2位十六进制数所代表的的任意字符。 字符串操作: string.upper('Hello') 功能:字符串全部转换为大写字母。 结果...

2018-12-05 19:02:19 230 2

原创 Lua学习笔记-day3:函数、运算符

一、Lua函数 1. 函数定义: optional_functoin_scope function function_name(arg1, arg2, arg3,...,argn) function_body return ret1,ret2,...,retn end  1.1 说明: ...

2018-12-05 16:06:27 159

原创 Lua学习笔记-day2:Lua循环、流程控制

一、Lua循环 Lua提供以下几种循环方式: while: 首先判断终止条件为true时,然后再执行循环体语句; for: 循环体执行的次数在for中指定; repeat...until: 首先执行循环体,然后判断终止条件,终止条件为true时,循环退出; 循环嵌套 循环控制语句; break: 退出当前循环...

2018-12-05 16:01:03 229

原创 Lua学习笔记-day1:Lua特性、安装、基本语法、数据类型、变量

一、Lua教程 设计目的:嵌入应用程序,从而为应用程序提供灵活的扩展和定制功能。 特性: 轻量级:标准C实现;开放源码;源码2万多行;编译后仅100多Kb。 可扩展: 其他特性: 支持面向过程编程和函数式编程; 自动内存管理; 语言内置模式匹配;闭包等; 通过闭...

2018-12-05 16:00:24 160

原创 Nginx源码分析:ngx_align_ptr(p, a)

Nginx源码:#define ngx_align_ptr(p, a) (u_char *) (((uintptr_t) (p) + ((uintptr_t) a - 1)) & ~((uintptr_t) a - 1)) 作用:返回一个值,该值大于等于p,并且是a的最小倍数。即几字节对其的问题。 分析: uintptr_t数据类型有ISO C99定义, ...

2018-12-03 16:33:30 226

原创 十四、Nginx的内存管理

内存池的逻辑结构: 链表1:多个分配模块,通过ngx_pool_data_t结构中的next成员,构成链表,形成内存池。 链表2:ngx_pool_large_t结构中的next成员,形成大数据内存块分配的链表。挂接在第一个分配模块上。 链表3:ngx_pool_cleanup_t结构中的next成员,形成内存回收链表。同样挂接第一个...

2018-12-03 16:32:58 234

原创 十一、Nginx基本数据结构

Nginx命令结构 的惯例:struct定义结构时,以-s作为后缀;typedef定义的别名,以-t作为后缀。 ngx_module_s结构: 作用: 每个模块对应一个该结构体变量。 该结构描述了模块的基本属性。 组织: objs/ngx_module.c文件中的ngx_modules结构数组中,包含...

2018-12-03 16:32:31 235

原创 十、Nginx源码结构

本章内容: Nginx服务器源码目录结构。 从源码结构看Nginx的模块化结构。 疑问点: misc/ngx_cpp_test_module.cpp:测试程序中引用的头文件是否与c++兼容。 extern "C"的作用? 参考:https://blog.csdn.net/liufuchun111/article...

2018-12-03 16:32:08 146

原创 三、Nginx服务器架构初探(3.3 设计架构概览)

Nginx服务器架构 主进程:Nginx配置文件解析、数据结构初始化、模块配置和注册、信号处理、网络监听生成、工作进程生成和管理等。 工作进程:进程初始化、模块调用和请求处理等。 代理转发 在本地缓存历史应答数据 Nginx服务器架构示意图如下: Nginx服务器的进程: ...

2018-12-03 16:31:38 168

原创 三、Nginx服务器架构初探(3.2 Nginx服务器的web请求处理机制)

Nginx的与众不同之处体现在: 模块化设计; 对客户端请求的并行处理: 多进程; 多线程; 异步; 多进程方式: 处理方式:服务器主进程每接收到一个客户端时就建立一个子进程,与该客户端建立连接、处理交互,直接连接断开,子进程结束。 优点: 实现简...

2018-12-03 16:31:09 174

原创 三、Nginx服务器架构初探(3.1 模块化结构)

本章要点: 模块化结构的相关知识。 Nginx如何处理web请求。 Nginx的事件驱动模型。 Nginx的设计架构概览。 Nginx模块化结构: 模块类别划分: 核心模块; 包含两类功能: 主体功能:进程管理,权限控制,错误日志记录,配置解析等。 ...

2018-12-03 16:30:21 172

grpc-c++ v1.60.0源码,包含各个子模块

grpc-c++ v1.60.0源码,包含各个子模块

2024-02-04

gperftools-unwind-graphviz.20200119.tar.gz

gperftools安装包和依赖包; 安装使用说明; 示例代码: #include <google/profiler.h> #include <stdio.h> void func1(void) { int i = 0; while (i < 1000000) { ++i; } return; } void func2(void) { int i = 0; while (i < 2000000) { ++i; } return; } void func3(void) { for (int i = 0; i < 1000; ++i) { func1(); func2(); } return; } int main(int argc, char *argv[]) { ProfilerStart("my.prof"); // 指定所生成的profile文件名 func3(); ProfilerStop(); // 结束profiling return 0; }

2020-01-19

《图解http》

详细的介绍了http协议; 特色是穿插了大量插图,图文并茂,有助于加深理解及记忆。

2018-11-14

Nginx高性能Web服务器详解

面向: Web服务器使用者; Nginx学习开发者; Linux研发工作者; 网络编程爱好者。

2018-11-14

vim插件:omnicppcomplete-0.41.zip、taglist_46_vim.zip、vim-autocomplpop.zip三合一

vim常用插件: 1. omnicppcomplete-0.41.zip 2. taglist_46_vim.zip 3. vim-autocomplpop.zip

2018-05-25

空空如也

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

TA关注的人

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