自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 fasthttp

测试使用一个简单的例子测试fasthttp和原生net/http库,代码如下:fasthttp: 1 2 3 4 5 6 7 8 9 10 11 func FastHttpBench() { router := fasthttprouter.New() ro...

2021-11-08 21:37:24 384

原创 go语言性能分析

使用pprof做性能分析一、如果程序是一次性执行的,比如分析一段数据,完成了退出的程序,可以使用 runtime/pprof库来分析程序性能1、分析CPU性能 f, err := os.Create("cpuprofile") ... pprof.StartCPUProfile(f) //开始性能分析 … defer pprof.StopCPUProfile() 2、分析内存消耗 f,err :=os.Crea...

2021-11-08 21:35:05 765

原创 进程间通信

进程间通信因为不同的进程用户地址空间都是相互隔离的,但是内核空间是每一个进程共享的,所以进程间的通信必然通过内核(空间)。linux下查看IPC使用情况:ipcs一、管道1)匿名管道匿名管道存在于内存之中,不能在文件系统中找到匿名管道相关指令 |比如: ps -ef|grep docker相关函数int pipe2(int pipefd[2], int flags);创建一个匿名管道,返回两个描述符,一个用于读(fd[0]),一个用于写(fd[1])。创建的管道其实就是内核中的一段缓

2021-06-06 22:05:22 155

翻译 Linux Namespace

命名空间是什么命名空间提供了一套独立的系统资源,对这些系统资源的修改会影响同一个命名空间中的其他进程,但是不会影响到其他的命名空间中的进程。所以它的一个用途就是用来实现容器。Linux下有以下几种NamespaceFlag:在API中指定命名空间的标志位Page: manpageIsolates:Namespace所分离的资源内容 Namespace Flag Page Isolates ..

2021-03-28 15:31:04 216 1

原创 Reactor模式的网络框架

最近参考了Moduo的代码写了一个Reactor的网络框架,主要封装了如下几个部分:1、日志2、线程池3、Reactor(EventLoop、Handle、Poller)后续有空再记录几个模块的设计思路以及填坑。代码在这:https://github.com/Icc-o/Net.git...

2020-09-22 17:22:51 231

原创 TTCP测试网络带宽

测试网络带宽可以了解网络最大的传输速率并在实际的程序设计与测试过程中对自己的程序进行优化。1、传输协议1)客户端先发送如下结构体告知服务端接下来传输的数据长度以及次数struct Message{ int32_t length; //每个消息的长度 int32_t times; //发送次数}__attribute__((__packed__));2)服务端接受到上述的结构体之后开始计时,并在接下来的时间内接受times次length长的数据,并计算带宽。2、服务端代.

2020-05-27 21:15:11 591

原创 Net-Snmp多线程以及异步的使用

最近使用到了Net-Snmp来做一个设备信息查询的manager,因为在使用的时候查询的设备以及需要的oid比较多,使用同步的方式一个一个查询会使查询速度慢,所以在这里有两种解决方式。多线程因为刚开始使用Net-snmp不是很熟悉,所以立马想到的就是使用多个线程提高并发。关于多线程的API,可以在Net-SNMP的rREADME文档看到如下内容: Traditional...

2020-03-14 16:21:50 1890 4

原创 libevent中一些http相关的操作

更详细可以看这里https://monkey.org/~provos/libevent/doxygen/evhttp_8h.htmlstruct evhttp* evhttp_new(struct event_base* base)创建一个新的HTTP serverint evhttp_accept_socket(struct evhttp* http, int fd...

2019-10-22 20:47:51 1126

原创 Reactor模式

1、Reactor组成部分 1)描述符(套接字或者文件描述符),用于识别每一个事件 2)同步事件分离器,是一个函数,用来等待一个或者多个事件的发生(比如select、epoll) 3)事件处理接口,一个或者多个模板函数组成的接口 4)具体事件处理器, 事件处理接口的实现 5)Reactor管理器,定义了一些接口,用于应用程序控制事件调度,以及应用程序注册、删除事件处理...

2019-10-22 20:41:22 246

原创 protobuf学习

Protobuf介绍参考资料:https://developers.google.cn/protocol-buffers/docs/cpptutorialhttps://www.ibm.com/developerworks/cn/linux/l-cn-gpb/protobuf是一种用来序列化和回复结构体的工具。以前的使用二进制直接进行保存、发送的方式会出现一些内存布局、大小端的问题,难以扩展...

2019-07-28 22:14:18 524

原创 Libevent学习2

Bufferevent使用bufferevent来实现客户端和服务器+bufferevent由一个底层的传输接口(套接字),一个读取缓冲区,一个写入缓冲区组成,bufferevent再读取/写入了足够的数据量之后调用用户提供的回调函数(一个读取回调,一个写入回调)bufferevent的缓冲区类型都是struct evbuffer1、fferevent的接口:struct bu...

2019-07-14 22:14:00 139

原创 Libevent学习1

一个简单的服务器示例1、event_base使用libevent函数之前,需要分配一个event_base,它有一个事件集合,可以检测那些事件是激活的。创建:struct event_base *event_base_new(void);2、服务器端代码流程:先创建socket套接字m_listenfd = socket(AF_INET,SOCK_STREAM,NULL);...

2019-07-11 22:49:37 124

原创 智能指针,shared_ptr和weak_ptr

智能指针shared_ptr在使用原始指针的时候,经常出现如下情形,A指针和B指针同时指向堆上的一个对象object,在运行的过程中,同过A指针使用delete把这个对象object释放了,而且也把A指向了null,但是这个时候B指针就成了空悬指针,如果对B进行操作,程序就会崩溃。针对这种情况的一个解决办法就是,在A、B指针和object对象之间再加一层代理指针proxy,A和B都指向pr...

2019-07-03 22:18:27 375

原创 Git学习

1、下载安装git,直接使用默认选项安装完成。2、配置用户名和邮箱: git config –global user.name “username” git consif –global user.email [email protected]、初始化仓库 mkdir prodir cd prodir git init这一步操作创建了一个本地的...

2019-07-02 22:03:22 109

原创 二分查找法(C++实现)

二分查找法的思想非常简单,在一组已经完成排序的数据(array[])中,如果需要查找某一特定数据(value)是否存在的时候,设置两个上下限(max, min)开始的时候在数组的最前和最后,把需要查找的值跟这两个位置的中间位置数据(array[(max+min)/2])进行对比,如果value >array[(min+max)/2] ,则缩小范围使得min=(min+max)/2,反之,如果...

2019-05-18 13:40:18 10071

原创 堆排序

最近面试被闻到了堆排序,一时没有想起来,记录一下。1、最大堆和最小堆最大堆要求节点的元素都要不小于其孩子,最小堆要求节点元素都不大于其左右孩子。也就是n[i] 和n[2*i+1]、n[2*i-1]的关系分别为大于和小于。2、堆排序的过程堆排序就是构建最大/最小堆然后把首元素和最后一个(没有排序的)元素交换的过程。最大堆/最小堆的构建:遍历从size/2到最开始的元素,如果发现这...

2019-03-29 22:43:12 134

原创 QTcpSocket和QTcpServer学习笔记

QtcpSocket使用笔记1、在Pro文件中添加 QT += network,此处表示添加network这个模块,不过不加的话会提示找不到QtcpSocket 和QtcpServer类的头文件。添加了之后qmake会在MakeFile中自动生成所需要包含的头文件以及库文件。QtcpSocket和QTcpServer都是QIODevice的子类。2、在服务器类中直接使用QtcpServer对象se...

2018-05-12 23:22:39 5909

原创 C++基础备忘录

一.指针函数以及函数指针

2017-09-17 09:42:53 303

鸟哥linux私房菜

鸟哥linux私房菜的PDF书籍,适合新手linux的入门。。。。

2017-11-07

空空如也

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

TA关注的人

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