- 博客(263)
- 收藏
- 关注

原创 【数据结构】跳表SkipList代码解析(C++)
各个节点是如何相连接(关联)的?通过每个节点的forward`数组,forward数组存储当前节点,在每一层的下一个节点。
2022-09-01 10:09:46
565

原创 【C】高并发线程池设计
由一个任务队列和一组处理任务队列的线程组成。一旦工作进程需要处理某个可能"阻塞"的操作,不用自己操作,将其作为一个任务放到线程池的队列,接着会被某个空闲线程提取处理。
2022-08-29 12:12:06
362

原创 【C】高并发内存池设计
就是真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若剩余的内存块不够了,就再继续申请新的内存, 统一对程序所使用的内存进行分配和回收。这样做的一个显著优点是,使得内存分配的效率得到很大提升。个人理解:什么是内存池 & 内存池的用处。减少频繁的系统调用以减少时间开销,一次性申请一块大内存,然后给需要的程序进程分配,不够了就再要。.........
2022-08-26 21:08:02
550

原创 【Crow】一款开源C++Web框架的安装与构建
项目地址:官方网站及文档说明:缘由:相关安装参考文章:相关问题解决参考文章:从源码安装,详见官方说明文档。进入Crow目录,创建build目录,并进入。Hello world编译测试
2022-07-09 08:53:55
1079
7
原创 【Socket】两种高效事件处理模式&并发模式
本来想做个笔记的,但是发现这块内容书中很多都感觉是有用的,所以很大篇幅的搬了过来,其中加入了我的理解,并有重点标注。
2022-10-21 00:30:14
440
原创 【Socket】有限状态机
>- 在编程中`有限状态机(finite state)是服务器程序逻辑单元内部的一种高效编程方法。`> - 个人理解为控制程序执行的一个变量或是一段程序,根据这个变量或是程序的有限结果进行对应的操作。
2022-10-03 12:43:10
501
原创 【Linux】I/O多路复用-SELECT/POLL/EPOLL
- I/O多路复用核心思想为,使用一个线程,来处理多个客户端的请求。- 或者说,使用一个特殊的fd,监视多个fd。- 使得程序能同时监听多个文件描述符,这对提高程序的性能至关重要。
2022-09-25 18:51:18
559
1
原创 【操作系统】线程的使用
- 使用fork创建进程以执行新的任务,该方式的代价很高——子进程将父进程的所有资源都复制一遍。- 多个进程之间不会直接共享内存。- `进程是系统分配资源的基本单位`,`线程是进程的基本执行单元`,一个进程的所有任务都在线程中执行,进程想要执行任务,必须得有线程,进程至少要有一条线程,程序启动会默认开启一条线程,这条线程被称为`主线程或UI线程`。...
2022-08-28 10:02:22
243
原创 【操作系统】进程间的通信——共享内存
共享内存机制是允许两个或多个进程(不相关或有亲缘关系)访问同一逻辑内存的机制。它是共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。
2022-08-25 11:57:47
677
原创 【操作系统】进程间的通信——信号量
- 信号量就类似与马路上的红绿灯,来控制人们在各个路口朝各个方向上的行进,从而更好地有规划的使用这条道路。- 在程序中,信号则对进程们的执行进行控制。
2022-08-24 17:42:17
381
原创 【操作系统】进程间的通信——消息队列
- 消息队列,用于从一个进程向另一个进程发送数据。- 但仅仅把数据发送到一个"队列"中,而不指定由哪个进程来接收。- 消息队列独立于发送消息的进程和接收消息的进程。每个消息队列都有一个标识,只有持有这个标识的进程才可以去里面拿消息。
2022-08-24 14:39:14
1326
原创 【操作系统】进程间的通信——管道
- 进程间的通信(IPC-Inter-Process Communication)有多种方式,管道是其中最基本的方式。- 管道是`半双工`的,即是`单向`的。- 管道是FIFO(先进先出)的。- 在实际的多进程间通信时,可以理解为有一条管道,而每个进程都有两个可以使用管道的"端口",分别负责进行数据的读取与发送。
2022-08-23 20:52:13
1204
原创 【操作系统】进程间的通信——信号
什么是信号?信号是给程序提供一种可以处理异步事件的方法,它利用**软件中断**来实现。我们无法自定义信号,所有信号都是系统预定义的。
2022-08-22 12:25:08
222
原创 【操作系统】孤儿/僵尸/守护进程
一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被**init进程所收养**,并由init进程对它们完成状态收集工作。
2022-08-18 10:42:49
154
原创 【操作系统】进程的创建与销毁
程序就是一堆指令和数据的集合,这个集合反映在了一个静态可执行文件和相关的配置文件等。操作系统可以运行多个程序。实际上,CPU的执行是很快的,而待运行的程序很多,那么为了让操作系统运行多个程序,CPU会把它的执行时间划分成很多段,比如每一段是0.1秒,那么就可以这样A程序运行0.1秒,然后B程序运行0.1,然后C程序运行0.2秒,因为这个切换很快,所以我们感觉程序是同时运行的。......
2022-08-06 18:05:28
158
原创 【Linux】项目日志——输出重定向
在通常情况下,Linux/UNIX每个程序在开始运行的时候,都会自动打开三个标准stream(流),分别为标准输入流stdin(文件描述符0),标准输出流stdout(文件描述符1),标准错误输出流stderr(文件描述符2)。Linux的本质就是一切皆文件,输入输出设备也是以文件形式存在和管理的。......
2022-07-25 16:54:32
683
原创 【iniparser】项目配置工具iniparser的简单使用
对于很多程序中要用的参数如果是可变的,那么最好的处理方式就是通过main函数进行参数传递,或者从别的地方去获取,这其中之一的做法就是使用配置文件,在一个成熟和架构完善的系统中,一般都会做到自动配置,自动部署。所以有的系统里会有一个单独的配置服务存在,其它的每个服务配置都会从配置中心服务获取。运维人员会通过操作界面把配置信息下发到配置中心服务,其余服务从配置中心获取变更信息。。...
2022-07-24 22:56:37
235
原创 【GoogleTest】GoogleTest单元测试(1)快速上手
GoogleTest是Google的一套用于编写C++测试的框架,可以运行在多个平台上(包括Linux、MacOSX、Windows、Cygwin等)。基于xUnit架构,支持很多好用的特性,包括自动识别测试、丰富的断言、断言自定义、死亡测试、非终止的失败、生成XML报告等等。以下简称GTest。......
2022-07-19 19:24:31
705
原创 【Linux】内存检测工具Valgrind
Valgrind是运行在Linux上的一套基于仿真技术的程序调试和分析工具,作者是获得过Google-O’Reilly开源大奖的JulianSeward,它包含一个内核——一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务——调试,分析,测试等。内存检测,使用它的工具。...
2022-07-16 12:37:46
539
原创 【Linux】直接打印堆栈调试信息
输入最后第一个地址会显示?0暂时还未解决,还请知道的小伙伴评论区解答下。**找到错误代码行号**使用addr2line命令。
2022-07-15 22:51:39
801
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人