- 博客(154)
- 收藏
- 关注
原创 【Linux】信号处理 --- 可重入函数、volatile、SIGCHLD信号(补充篇)
了解什么是可重入函数、volatile关键字和SIGCHLD信号
2024-07-24 00:18:01
841
原创 【Linux】System V消息队列 System V信号量
在System V通信标准中,还有一种通信方式:消息队列,以及一种实现互斥的工具:信号量;随着时代的发展,这些陈旧的标准都已经较少使用了,但作为IPC中的经典知识,我们可以对其做一个简单了解。尤其是 信号量,可以通过它,为以后多线程学习中POSIX信号量的学习做铺垫信号量本质是计数器,PV操作具有原子性。执行流申请资源,必须先申请信号量(计数器)资源,得到信号量之后,才能访问临界资源!信号量值10两态的。二元信号量,就是互斥功能。申请计数器(信号量)的本质,是对临界资源的预定机制!
2024-07-13 19:52:02
745
1
原创 【Linux】进程间通信之匿名管道
进程间通信IPC)就是两个或多个进程实现数据层面的交互。在Linux中,管道可以被视为一种特殊类型的文件,它是基于文件级别的通信方式。它使得一个进程的输出可以直接成为另一个进程的输入,从而实现了进程之间的数据传输和协作。在Linux中,你可以使用管道符号将一个进程的输出发送到另一个进程的输入。比方说你想要统计一个文件中包含的单词数量。其中,当cat命令和wc命令运行起来后就是两个进程,cat进程通过标准输出将数据传输到管道当中,wc进程再通过标准输入从管道当中读取数据,至此便完成了两个进程间通信。
2024-06-08 22:44:08
1129
原创 【Linux】动态库和静态库
我们平时写的C程序,一上来就写上,然后就可以使用诸如printfscanf等函数,可在stdio.h中只包含函数的声明而不包括函数的定义(实现),那么函数的定义在哪里呢?答案是在库文件中。库是一组已经编写好的代码或程序模块,通常包含了函数的实现,使用库可以帮助程序员节省时间和精力,使得程序员不需要花费精力造轮子,提高了代码的可维护性和可重用性。而库又分为动态库和静态库动态库(共享库):在程序运行时通过加载器被加载到物理内存中,使得多个程序可以同时共享同一份库的实例。。在Linux中,.so。
2024-06-04 09:55:52
975
1
原创 【Linux】文件系统和软硬链接
前面我们学习文件相关的知识,如文件操作等,文件都是被进程打开(内存文件),根据冯诺依曼体系结构,被打开的文件一定会被加载到内存,由操作系统管理。Linux学习目录但并不是所有的文件都会被进程打开,那么没有打开的文件就只能在磁盘上呆着(磁盘文件)。当然了,没有打开的文件也应当进行管理,我们把做这部分管理工作称之为文件系统。文件系统属于操作系统中的一部分,通常通过磁盘或其他存储介质来管理文件(路径问题,存储问题,获取问题内容+属性,删除修改等效率问题)。因此,在学习文件系统之前,我们首先需要认识磁盘。
2024-05-30 17:40:09
966
2
原创 【Linux】简单模拟C语言文件标准库FILE
在C语言中,FILE结构体一定封装了诸如文件描述符等字段,使得C语言文件操作的库函数可以很好的调用系统调用,因此程序员可以更加方便地使用高级接口来完成任务,而无需深入了解底层系统调用的实现细节。而这篇博客将带领大家深刻理解C语言文件操作函数底层是如何封装系统调用接口,以及C语言用户级缓冲区的现象。注:本篇博客不是为了造一个更好的轮子,而是重在理解!!!
2024-05-21 23:28:06
798
原创 【LInux】<基础IO> 文件操作 | 文件描述符 | 重定向
到目前为止,我们所知道的文件描述符就是open函数的返回值(非负整数),这个描述符可以在后续的读写操作中用作文件标识符,即找到对应的文件。那不知道大家有没有思考过一个问题:为什么操作系统可以单单通过一个整数(文件描述符)就能找到对应的文件?文件分为打开的文件和没打开的文件(这里先讨论打开的文件,等到文件系统再谈没打开的文件)。打开的文件是由进程使用函数(如fopen())打开的。根据冯诺依曼体系结构,被打开的文件一定会被加载到内存。而一个进程可以打开多个文件(1:n。
2024-05-15 19:48:29
1029
1
原创 【Linux】进程控制 之 进程创建 && 进程终止 && 进程等待 && 进程替换
本篇博客讲解了进程控制 之 进程创建 && 进程终止 && 进程等待 && 进程替换。码字结合,快来看看吧 ~
2024-05-05 11:16:11
714
原创 【Linux】软件包管理器yum
在Linux下安装软件,一个通常的办法是下载到程序的源代码,并进行编译,得到可执行程序。但是这样太麻烦了, 于是有些人把一些常用的软件提前编译好,做成软件包(可以理解成windows上的安装程序)放在一个服务器上,通过软件包管理器可以很方便的获取到这个编译好的软件包,直接进行安装。软件包和软件包管理器,就好比 “App” 和 “应用商店” 这样的关系。在Linux中,yum是Linux下非常常用的一种软件包管理器。主要应用在Centos等Linux发行版上。
2024-04-14 14:28:31
860
2
原创 【C++11】右值引用 + 移动语义 + 完美转发(重点)
在C++11中新增了以下几个容器(用橘色圈起来):实际上最有用的是哈希系列和。剩下的容器array和非常鸡肋,实际上很少使用。array容器点击跳转在C++11标准中,引入了一个容器array,它的底层使用了非类型模板参数,是一个真正意义上的泛型数组(定长数组),这个是用来对标C语言传统数组的。以下是array容器的基本用法:看完以上接口,array支持的,数组也都是支持的。那么它们有什么区别呢?相同点:array也并没有进行初始化。要说有区别的话:array对于越界读、写检查更为严格;
2024-04-07 22:40:58
657
原创 【C++11】统一的列表初始化 + 声明(auto + decltype)+ 范围for + 指针空值nullptr
【C++11】统一的列表初始化 + 声明(auto + decltype)+ 范围for + 指针空值nullptr
2024-04-06 14:14:49
990
原创 【MySQL】详谈约束
在数据类型篇章,我们证明了数据类型本身就是一种约束!通过约束,数据库可以保证数据的合法性和准确性,避免不合法或无效的数据进入数据库。但是数据类型约束很单一,需要有一些额外的约束,更好的保证数据的合法性,从业务逻辑角度保证数据的正确性。比如有一个字段是QQ号,要求是唯一的,那么就需要为这个字段设置【唯一约束】。表的约束很多,这里主要介绍如下八个:空属性默认值default列描述commentzerofill主键自增长唯一键unique key外键。
2024-03-27 14:48:31
850
2
原创 【MySQL】数据库的基础概念
我们在连接`MySQL`服务器的时候使用`mysql`命令;而启动`MySQL`服务时又使用`mysqld`,它们的区别是什么呢?
2024-03-20 19:16:22
2154
原创 【MySQL】工欲善其事必先利其器 --- Linux下安装MySQL(手把手保姆级)
以所有操作均在root环境下进行,一旦安装,普通用户也是可以使用的。本篇博客以Centos环境为例。
2024-03-20 01:46:00
888
原创 【C++11】来感受lambda表达式的魅力~
当涉及到C++的lambda匿名函数lambda表达式允许在需要函数对象的地方快速定义匿名函数,无需显式命名,可直接内联使用。捕获外部变量lambda表达式能够捕获其作用域内的变量,可以按值或按引用捕获,使得在算法和回调函数中处理外部变量更加方便。简洁性lambda表达式使代码更加紧凑和简洁,尤其在需要传递简单的函数对象时,可以省去冗余的代码。可读性: 使用lambda表达式可以将算法和行为直接嵌入到使用它们的地方,使代码更具可读性和易于理解。函数式编程: 引入lambda表达式后,C++
2024-03-13 09:25:03
692
原创 【C++进阶】哈希的应用 --- 布隆过滤器
优点:增加和查询元素的时间复杂度为:O(K), (K为哈希函数的个数,一般比较小),与数据量大小无关哈希函数相互之间没有关系,方便硬件并行运算布隆过滤器不需要存储元素本身,在某些对保密要求比较严格的场合有很大优势在能够承受一定的误判时,布隆过滤器比其他数据结构有这很大的空间优势数据量很大时,布隆过滤器可以表示全集,其他数据结构不能使用同一组散列函数的布隆过滤器可以进行交、并、差运算缺点:有误判率,不能准确判断元素是否在集合中(补救方法:再建立一个白名单,存储可能会误判的数据)
2024-03-09 22:09:57
1087
原创 【C++进阶】哈希的应用 --- 位图bitset
查找速度快O(1)节省空间 使用的是比特位只能映射整型对于浮点符、字符串等数据无法做到很好的映射快速查找某个数据是否在一个集合中排序 + 去重求两个集合的交集、并集等操作系统中磁盘块标记。
2024-03-08 15:21:56
671
原创 【C++进阶】用哈希表封装unordered_set和unordered_map
在模拟实现和时,我们知道是模型的红黑树,是模型的红黑树,而真正决定树里存储什么,是由第二个模板参数决定的,这也就是为什么和可以共用一颗树。系列容器也是如此,其中是模型的哈希表,是模型的哈希表【Unordered_set.h】【Unordered_map.h】由于系列的底层使用的也是同一个哈希表,因此,真正决定表里存储什么,也是依靠第二个模板参数决定。【OpenHashTable.h】首先我们来分析插入的模板参数应该是什么?对于就是;对于则是。那么参数类型应该用第二个模板参数接收。但这里就遇到了一个尴尬的问题
2024-03-06 10:25:17
614
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人