自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Openresty实现黑名单

首先先简要介绍下Openresty。Openresty可以让开发人员使用Lua编程语言对nginx核心以及现有的各种Nginx C模块进行脚本编程,构建出一个高性能的Web应用。Openresty分为4个大阶段,包括Initialization Phase,Rewrite/Access Phase,Content Phase以及Log Phase,每个阶段的功能见下表1,而这四个大阶段又可分为11个小阶段,如下表2所示。表1 Openrety的四个大阶段 阶段 功能 Initializati

2021-08-03 20:11:38 827

原创 2021年todo清单

1.tengine源码阅读2.linux主要功能阅读(1) 进程调度机制(2)内存管理机制(3)文件系统(4)网络协议栈3.Leetcode刷题300(使用golang)

2021-05-12 20:52:13 135

原创 c++中的static关键字

1. static全局变量与全局变量有什么区别?全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。两者在存储方式上并无差异。两者的区别是非静态全局变量的作用域是整个源程序,当一个源程序由多个源文件组成时,非静态的全局变量再各个源文件中都是有效的。而静态全局变量只在当前源文件中有效,在同一源程序的其他源文件不能使用它。这也是static关键字最重要的特性-----隐藏。2....

2019-05-08 17:20:09 160

原创 找出链表中符合条件的元素

/* 自定义函数类型function,用于在list_traversal中做回调函数 */typedef bool (function)(struct list_elem*, int arg);struct list_elem* list_traversal(struct list* plist, function func, int arg) { struct list_ele...

2019-05-05 10:37:41 572

原创 linux中查看进程资源的使用情况

常用的资源如下:内核文件的大小限制进程数据块的大小限制Shell进程创建文件大小限制可加锁内存大小限制常驻内存集的大小限制打开文件句柄数限制分配堆栈的最大大小限制CPU占用时间限制用户最大可用的进程数限制Shell进程所能使用的最大虚拟内存限制命令 ulimit -a 从上到下依次为:内核文件大小(Core文件其实就是内存的映像...

2019-04-10 14:15:44 3563

原创 vector容器详解

vector和数组类似,拥有一段连续的内存空间,并且起始地址不变。因此能高效的进行随机存取,时间复杂度为o(1);但因为内存空间是连续的,所以在进行插入和删除操作时,会造成内存块的拷贝,时间复杂度为o(n)。另外,当数组中内存空间不够时,会重新申请一块内存空间并进行内存拷贝。连续存储结构:vector是可以实现动态增长的对象数组,支持对数组高效率的访问和在数组尾端的删除和插入操作,在中间和头部...

2019-03-28 11:19:43 1748 1

原创 类的构造函数

类的数据成员的构造方式有赋值初始化和列表初始化。赋值初始化:在函数体内初始化,这种方法是在所有数据成员分配内存空间之后才进行的。列表初始化:在冒号后使用初始化列表进行初始化。列表初始化是在给数据成员分配内存空间时就进行初始化,就是说分配一个数据成员只要冒号后有此数据成员的赋值表达式(此表达式必须是括号赋值表达式),那么分配了内存空间后在进入函数体之前给数据成员赋值,而此时函数体还未执行。...

2019-03-27 10:11:08 326

原创 基于opencv的行人检测(支持图片,视频)

基于方向梯度直方图(HOG)/线性支持向量机(SVM)算法的行人检测方法中存在检测速度慢的问题,如下图所示,对一张400*490像素的图片进行检测要接近800毫秒,所以hog+svm的方法放在视频中进行行人检测时,每秒只能检测1帧图片,1帧/s根本不能达到视频播放的流畅性。本文采用先从视频每帧的图像中提取出物体的轮廓(也可以对前后两针图片做差,只对有变化的部分进行检测,其目的一样,都是减少...

2019-03-24 21:11:40 32268 10

原创 图的实现(c++)

图(graph)是用线连接在一起的顶点或节点的集合,即两个要素:边和顶点。每一条边连接个两个顶点,用(i,j)表示顶点为 i 和 j 的边。​ 如果用图示来表示一个图,一般用圆圈表示顶点,线段表示边。有方向的边称为有向边,对应的图成为有向图,没有方向的边称为无向边,对应的图叫无向图。对于无向图,边(i, j)和(j,i)是一样的,称顶点 i 和 j 是邻接的,边(i,j)关联于顶点 i 和 ...

2019-03-23 17:51:48 9583 2

转载 IP地址格式转换(htonl、ntohl;inet_addr、inet_ntoa)

1、htonl ()和ntohl( )u_long PASCAL FAR ntohl (u_long netlong);u_short PASCAL FAR ntohs (u_short netshort);ntohl( )-----网络顺序转换成主机顺序u_long PASCAL FAR htonl (u_long hostlong);u_short PASCAL FAR h...

2019-03-22 10:41:45 4915

原创 布隆过滤器的实现(c++)

简要介绍一下布隆过滤器:如果想要判断一个元素是不是在一个集合里,一般想到的是将所有元素保存起来,然后通过比较确定。链表,树等等数据结构都是这种思路. 但是随着集合中元素的增加,我们需要的存储空间越来越大,检索速度也越来越慢(O(n),O(logn))。不过世界上还有一种叫作散列表(又叫哈希表,Hash table)的数据结构。它可以通过一个Hash函数将一个元素映射成一个位阵列(Bit arr...

2019-03-21 14:53:20 2876 5

原创 前缀树的实现(c++)

前缀树(Trie),也叫单词查找树,典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。它的基本性质如下:根节点不包含字符,除根节点外每一个节点都只包含一个字符。 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。 每个节点的所有子节点包含的字符都不相同。前缀树...

2019-03-20 22:04:32 1401 4

原创 并查集的实现(c++,利用map)

并查集(Union-Find)是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。 并查集存在两个操作(1.Union 联合 2.finddeputy 查找代表结点) 和一个需要解答的问题( issameset 是否 在一个集合中,或者说是否有同一个代表结点)。利用map实现主要通过两个map的对象 ,一个map<data,data>类型的f...

2019-03-19 22:12:44 585

原创 c语言获取当前时间

首先介绍两个函数:(1) int gettimeofday(struct timeval*tv, struct timezone *tz)所属头文件: <sys/time.h>其参数tv是保存获取时间结果的结构体,参数tz用于保存时区结果: struct timezone{ int tz_minuteswest;/*格林威治时间往西方的时差*/...

2019-03-18 16:21:43 33771 2

原创 muduo的Tcpserver类源码分析

 TcpServer是创建一个服务器的开始。TcpServer class的功能是管理accept(2)获得的TcpConnection。TcpServer是供用户直接使用的,生命期由用户控制TcpServer新建连接的相关函数调用顺序如图下所示:其中Channel::handleEvent()的触发条件是listening socket可读,表明有新连接到达。TcpServe...

2019-02-15 16:04:45 460

空空如也

空空如也

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

TA关注的人

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