Linux
文章平均质量分 92
被泡洗的浓盐酸
这个作者很懒,什么都没留下…
展开
-
【Linux操作系统】-- 多线程(三)-- 线程池+单例模式+读写者模型
线程池场景 代码实现线程安全的单例模式懒汉实现方式和懒汉实现方式饿汉方式实现单例模式懒汉方式实现单例模式实战代码演练单例模式读者写者模型解释基本操作创建/销毁读写锁读者锁和写者锁解锁伪代码理解读写锁优先级挂起等待锁vs自旋锁自旋锁语法原创 2022-09-02 17:04:13 · 516 阅读 · 3 评论 -
浅谈linux下的jsoncpp
其中jsoncpp包含三个模块: Value -- 序列化和反序列化转换的类 Reader--序列化 Writer-反序列化:fastWriter styledWriter原创 2022-08-17 18:12:58 · 445 阅读 · 1 评论 -
Boost搜索引擎项目
目录1.项目相关背景2.搜索引擎的相关宏观原理3.搜索引擎技术栈和项目环境4.正排索引 && 倒排索引--搜索引擎原理5.编写数据去标签与数据清洗的模块 -- parser.hpp去标签编写parser(将文件去标签)编写EnumFile函数编写ParseFile函数解析三大部分:编写SaveFile函数6.建立索引--编写index.hpp模块构建正排索引构建倒排索引jieba分词编写倒排索引7.编写搜索searcher8.编写http_server模块测试引入cpp-httplib库利用scl源升级gc原创 2022-10-06 14:59:02 · 1344 阅读 · 0 评论 -
【Linux操作系统】--多线程(二)--条件变量
Linux线程同步条件变量条件变量的作用:条件变量的用法:条件变量简单案例:为什么pthread_cond_wait需要互斥量?生产者消费者模型为何要使用生产者消费者模型生产者消费者模型优点基于BlockingQueue的生产者消费者模型C++ queue模拟阻塞队列的生产消费模型复盘生产者消费者问题POSIX信号量1.回顾信号量的概念2.认识信号量对应的操作函数3.认识环形队列4.结合sem+环形队列编写生产消费模型...原创 2022-09-01 16:13:47 · 1276 阅读 · 0 评论 -
【Linux操作系统】--多线程(一)
笼统的讲线程是在进程内部运行的一个执行分支(执行流),属于进程的一部分,粒度要比进程更加细致和轻量化。在一个程序里的一个执行路线叫做线程,更准确的定义是线程是”一个进程内部的控制序列“一切进程至少都有一个执行线程线程在进程内部运行,本质是在进程地址空间内运行在Linux系统中,在CPU眼里,看到的PCB都要比传统的进程更加轻量化透过进程虚拟地址空间,可以看到进程大部分资源,将进程资源合理分配给每个执行流,就形成了线程执行流。...原创 2022-08-01 14:58:24 · 473 阅读 · 0 评论 -
【Linux操作系统】--进程信号--信号产生前的产生方式
信号入门生活角度的信号生活中有很多信号的场景,比如红绿灯,闹钟,信号枪,鸡叫声等等...,这些信号都是给人看的,如果这些信号脱离了人类,红绿灯给牛看,信号枪给鸟打,鸡给鸡叫,这些都是没有意义的。当这些场景触发的时候,我们人类立马就知道要做什么。那么是不是这些场景真正放在我们面前,我们才知道做什么呢?其实和场景触发没有直接关联。对于信号的处理动作,我们早就知道了,甚至远远早于信号产生。那么我们是怎么做到没有信号就知道该怎么做呢?我们对特定事件的反应,是被教育的结果,本质是我们记住了。结论1:所以信原创 2022-05-12 18:08:40 · 460 阅读 · 0 评论 -
【Linux操作系统】--System V的共享内存进程通信
System V起源共享内存原理共享内存应用原理共享内存接口创建共享内存shmgetshmget测试 创建和删除代码挂载接口shmat 去关联调用接口shmdt 第二个进程与共享内存挂载两个进程进行通信共享内存的特性补充知识【shmget的第二个参数size】 shmid每次运行的数量会增加问题system V信号量(非重点)原创 2022-05-06 19:30:28 · 785 阅读 · 0 评论 -
【Linux操作系统】--进程间通信--匿名管道和命名管道
进程间通信介绍进程间通信目的进程间通信发展匿名管道什么是管道站在文件描述符角度-深度理解管道匿名管道建立信道开始操作-管道基本特性 总结:命名管道命名管道创建一个命名管道编写一个命名管道创建管道服务器端读取客户端client写入 写端业务逻辑拓展功能总结原创 2022-05-04 12:48:37 · 1519 阅读 · 0 评论 -
【Linux操作系统】--动态库和静态库的制作和使用
动静态库的制作静态库的制作makefile文件生成静态库最后库制作代码运用静态库【自己写一可执行程序】:用gcc命令编译用makefile文件编译动态库的制作形成.o文件使用动态库两种库的混合使用原创 2022-05-02 18:19:02 · 1029 阅读 · 3 评论 -
【Linux操作系统】--理解文件系统inode
磁盘的理解文件=文件内容+文件属性如果一个文件没有被打开,它的内容和属性在哪放着呢?它们是在磁盘上放着的。磁盘是我们计算机中的一个机械设备(现在很多都是SSD,FLASH卡,USB,但是现在不考虑这些例外)。其实固态硬盘写入有固定次数,比如一万次或两万此,再写就击穿了,最后就坏掉了。比如说有两个盘片,有四面,所以有四个磁头盘片在寻址:我们所有的数据都在盘片上放着,都是一些硬件电路,这些硬件电路都在盘片上放好,具体在什么位置,磁头来回摆动,他在摆动的时候是在圆心和半径摆动,而盘片在不断转动,通原创 2022-05-02 00:31:58 · 3362 阅读 · 2 评论 -
【Linux操作系统】-- 基础IO
我们写的程序最终都是要访问硬件:显示器,键盘,文件(磁盘)这些东西的。那么OS(操作系统就是硬件的管理者)。但是用户/语言,程序,lib不能直接访问硬件,也不能直接访问驱动,也不能直接访问OS。所以,所有的语言上的对“文件”的操作,都必须贯穿OS!我们知道OS对外界是不公开的,操作系统不相信任何人,如果要访问操作系统,需要通过系统调用接口!几乎所有的语言fopen,fclose,fread,fwrite,fgets,fputs,fgetc,fputc等底层一定需要使用OS提供的接口调用。所有的语言要原创 2022-04-29 15:47:56 · 355 阅读 · 0 评论 -
【Linux操作系统】--攥写一个简易的shell工具
做一个简易的shell第一步:打印提示符,在同一行打印出提示符 第二步:获取标准输入,获取命令字符串第三步:将字符串分割,解析字符串 第四步:替换进程,执行第三方命令3.5、执行第三方命令:原创 2022-04-19 15:08:11 · 1306 阅读 · 0 评论 -
【Linux操作系统】--进程程序替换
用fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec并不创建新进程,所以调用exec前后该进程的id并未改变原创 2022-04-19 14:49:38 · 293 阅读 · 0 评论 -
【Linux操作系统】 -- 进程的控制--进程的等待
进程等待是什么?当一个进程fork之后创建了子进程,子进程就是为了帮助父进程完成某种任务,从而创建。那么为了让父进程知道子进程的完成进度,什么时候完成的,父进程需要通过wait/waitpid等待子进程退出,这种现象就叫进程等待。为什么要让如进程等待? 通过获取子进程退出的信息,能够得知子进程执行的结果。父进程派给子进程的任务完成的如何,我们需要知道。如,子进程运行完成,结果对还是不对,或者是否正常退出。 可以保证:时序问题,子进程先退出,父进程后退出的话。如果父进程没活过子进程,原创 2022-04-17 19:00:59 · 1428 阅读 · 0 评论 -
【Linux操作系统】-- 程序地址空间
为什么要有地址空间?1.通过添加一层软件层,完成有效的对进程操作内存进行风险管理(权限管理),本质目的是为了保护物理内存及各个进程的数据安全!(通过操作系统管理)2.将内存申请和内存使用的概念在时间上划分清楚,通过虚拟地址空间,来屏蔽底层申请内存过程,达到进程读写内存和OS内存管理操作,进行软件上面的分离。(物理空间滞后性开辟--写实拷贝是经典的之后开辟空间) 当我们申请1000字节,我们不一定能立马使用全部字节,在OS角度,如果空间立马给你,那么整个申请的空间,,本来可以给别人立原创 2022-04-10 21:45:36 · 1878 阅读 · 0 评论