自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux信号——信号的处理(3)

信号是什么时候被处理?内核态和用户态信号是如何被处理?捕捉信号还有其他方式吗?关于sa_mask变量

2025-04-03 21:57:07 286

原创 Linux信号——信号的保存(2)

关于core和term两种终止方式core是什么?为什么要有core?core的使用如何打开Linux中的core功能?信号的保存关于三张位图匹配的操作信号集数据类型--sigset_t操作block表sigprocmask-sigpending--操作pending表signal--操作handler表一个场景

2025-04-03 15:29:17 547

原创 Linux信号——信号的产生(1)

信号是什么?为什么要有信号?信号的具体知识信号的产生常见信号信号的处理的方式--signal产生信号的第一种方式:kill命令1.默认行为--进程自己终止2.自定义处理信号--捕捉3.忽略信号产生信号的第二种方式:键盘产生信号产生信号的第三种方式:系统调用kill系统调用函数raise 系统调用函数abort系统调用函数产生信号的第四种方式:软件条件产生信号的第五种方式:异常关于信号产生的各种情况的理解对于异常问题的解释

2025-03-31 21:01:47 815

原创 Linux信号量

1.对于共享资源进行保护,是一个多执行流场景下,比较常见和重要的话题。2.:在访问一部分共享资源的时候,任何时刻只允许一个人访问,就叫互斥。:在安全的前提下,访问资源具有一定的顺序性,就叫同步。3.被保护起来的,任何时刻只允许一个执行访问的公共资源——临界资源4.访问临界资源的代码,叫做临界区。所谓的保护公共资源(临界资源)本质:是程序员保护临界区。5.:操作对象的时候,只有两种状态,要么还没开始,要么已经结束。

2025-03-30 15:01:00 709

原创 Linux进程间通信

两个进程之间,可以进行数据的直接传递吗?不能。进程具有独立性。为什么进程间要进行通信?:一个进程需要将它的数据发送给另一个进程。:多个进程之间共享同样的资源。:一个进程需要向另一个或一组进程发送消息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。:有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能够及时知道它的状态改变。进程间通信是什么?怎么进行进程间通信?a.要有交换数据的空间(内存)

2025-03-29 16:34:00 1002

原创 Linux消息队列

IPC_NOWAIT:如果队列中没有符合条件的消息,立即返回错误(ENOMSG)。:获取消息队列的信息,保存到 buf 指向的 msqid_ds 结构。:与 IPC_CREAT 一起使用时,若消息队列已存在,则返回错误。指向 msqid_ds 结构体的指针,用于传递或接收消息队列的信息。消息缓冲区的最大容量(以字节为单位),不包括 mtype 字段。0:默认行为,如果队列中没有符合条件的消息,则阻塞直到有消息。消息内容的长度(以字节为单位),不包括 mtype 字段。指向消息缓冲区的指针。

2025-03-01 21:22:59 766

原创 Linux共享内存

简而言之,就是两个进程指向了同一块物理空间。共享内存在内核中同时可以存在,OS要管理所有的共享内存。如何保证两个不同进程看到的是同一个共享内存呢???(后文提到的key)!!!使用共享内存通信,一定是一个进程创建新的shm,另一个直接获取共享内存即可。,如果进程结束,我们没有主动释放它,则共享内存一直存在。——(除非重启系统,否则共享内存一直存在)。,一个进程打开一个文件,进程退出时,这个被打开的文件就会被系统自动释放掉。——

2025-02-28 22:07:34 949

原创 C语言——指针(2)

1.字符指针这是一个简单的字符指针的用法int main() { char a = 'b'; char* p = &a; *p = 'c'; return 0;}那如果一个字符串赋给指针数组会怎么样呢?int main() { char* p = "abcdef"; return 0;}在32位机器下,指针大小为4个字节,那这个指针肯定无法将这个字符串的所有元素地址保存下来调试起来我们发现p指针实际上存了常量字符串的首元素‘a’的地

2025-02-27 20:08:48 386

原创 Linux文件系统----内存级文件

什么叫当前路径?   程序默认打开的文件流 系统调用接口——open,write,close,read   通过系统调用接口open模拟实现c语言中fopen的功能   FILE是c语言封装的结构体,里面封装了文件描述符(fd)   为什么C语言要封装?认识fd 文件描述符fd的分配规则 利用分配规则来实现重定向。另一种简单的重定向方法缓冲区问题 C语言的缓冲区具体在哪里?通过例子证明c语言存在缓冲区

2025-02-23 20:22:50 974

原创 Linux文件系统----磁盘级文件

1.磁盘的简单构成 2.磁盘的物理存储 3.磁盘的逻辑存储 以一个组为例 inode table inode Bitmap Date Block Block Bitmap文件属性inode与文件数据内容block是如何关联的?关于block数组 通过inode编号查找一个文件Group Descriptor Table Super Block关于文件名

2025-02-23 16:11:40 791

原创 Linux 软硬链接

建立硬链接 硬链接的原理 建立软链接 软链接原理 硬链接的应用场景

2025-02-23 15:34:03 145

原创 Linux动静态库

动静态库的制作和使用 静态库文件的制作 静态库文件的使用 动态库文件的制作 动态库文件的使用 解决运行时动态库找不到问题的四种方法 关于同时存在动静态库时链接问题 理解动态库加载1.系统角度理解动态库加载2.关于编址3.理解动态库动态链接和加载的问题a.一般程序加载b.动态库的加载

2025-02-23 15:31:31 846

原创 各种地址(绝对地址,相对地址,线性地址,虚拟地址,物理地址,逻辑地址)

└─── 虚拟地址(进程视角)───────┘ 绝对地址(硬件固定地址)采用平坦内存模型(段基址设为0),逻辑地址直接等于线性地址,再通过分页映射到物理地址。逻辑地址(段选择符:偏移量) → 分段机制 → 线性地址 → 分页机制 → 物理地址。如果没有分段,线性地址等于逻辑地址。中的地址空间,由操作系统通过内存管理机制(如分页、分段)映射到物理地址。可能通过分页动态映射,而绝对地址是物理地址的子集(静态映射部分)。芯片(如RAM)上的实际地址,CPU通过总线直接访问的物理位置。

2025-02-23 13:39:00 775

原创 生成正交表方法

在Excel表格中输入因素,和其对应的水平。注:推荐使用Microsoft Office的,其他版本可能会导致格式错误,这一步的目的是保持格式正确。使用命令行提示符,先进入allpairs.exe的目录,然后输入allpairs.exe test.txt > test01.txt。在allpairs.exe同级目录下创建一个txt文件,将Excel表格的内容复制到txt文件中,直接保存文件。使用allpairs.exe工具对txt文件生成正交表。需要软件allpairs.exe。

2025-02-19 13:45:56 160

原创 C++11右值引用

左值与左值引用,右值与右值引用,左值右值的对比,右值引用所解决的问题(移动语义),完美转发的使用,模版中的&&——万能引用

2024-04-07 21:35:12 732

原创 进程的终止

进程的退出(main函数的退出),关于错误描述,函数的退出(关于errno),进程退出的场景

2024-03-21 21:58:56 455

原创 哈希表及其实现

哈希表概念,哈希冲突常见的哈希函数,直接定值法,除留余数法,解决Hash冲突,闭散列的开放定值法,线性探测法,哈希表结构,开散列法,开散列法的哈希表结构,关于key值的不同类型进行转化

2024-03-21 20:05:06 1228

原创 程序地址空间

进程地址空间的概念,虚拟地址空间的本质,虚拟地址空间的分区,虚拟地址空间与物理地址空间的关系,页表,进程地址空间存在的意义

2024-03-07 20:39:44 972

原创 Linux中的环境变量

环境变量概念,环境变量相关的命令,命令行参数,main函数带参数,main第三个参数,getenv手动传入环境变量,常见环境变量举例,PATH环境变量

2024-03-03 18:00:12 832

原创 搜索二叉树

搜索二叉树的概念,搜索二叉树的功能介绍及实现,搜索二叉树的遍历,搜索二叉树的插入,搜索二叉树的删除中托孤法删除,替换法删除,以及搜索二叉树功能实现的递归非递归版本

2024-03-01 17:53:23 738

原创 C++继承

继承的概念,继承的定义,继承关系与访问限定符,基类和派生类对象赋值转换,继承中的作用域,派生类的默认成员函数,构造函数,默认的构造函数,显示的构造函数,析构函数,拷贝构造函数,赋值重载函数,继承与友元,继承与静态成员,菱形继承

2024-02-27 11:53:33 909

原创 string容器模拟实现

stl中string的模拟实现,类和对象(构造函数,析构函数,拷贝构造函数,操作符重载)的运用,迭代器的模拟实现

2024-02-22 22:51:21 782

原创 八大排序总结

直接插入排序,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,计数排序的实现改进与分析。

2023-10-06 13:28:03 392

原创 strstr函数——一个字符串是否是另一个字符串的子串

头文件:string.h函数的声明:char *strstr( const char *str1, const char *str2) 字符串 可能的子串返回值:如果str2在str1中出现,返回str2第一次出现在str1的位置的地址如果str2没有在str1中出现,返回NULL空指针用法:给两个字符串,第一个为字符串,第二个为要判断的子串实例:...

2022-04-04 00:00:34 1906 1

原创 strcmp函数与strncmp——比较字符串

头文件:string.h函数的声明:int strncmp( const char *str1, const char *str2) 字符串1 字符串2int strncmp( const char *str1, const char *str2, size_tn) 字符串1 字符串2 ...

2022-04-03 22:42:13 493

原创 strcat函数与strncat函数——追加字符串

头文件:string.h函数的声明:char *strncat( char *dest, const char *source, size_t count) 目标字符串 原始字符串 原始字符串追加的目标字符串的个数返回值:字符串首地址用法:给定目标字符串首地址,原始字符串首地址,原始字符串追加的目标字符串的个数,就可以将原始字符串追加的目标字符串实例:#include&...

2022-04-03 22:05:13 870

原创 结构体实现通讯录

通讯录功能:保存1000个联系人的信息 增加联系人 删除联系人 修改联系人 查找联系人 排序一个人的信息包含:名字 性别 年龄 电话 住址

2022-03-28 00:24:30 15236

原创 字符函数与内存操作函数

字符分类函数:函数 参数符合下列条件,就返回真 iscntrl 控制任何字符 isspace 空白字符:空格‘ ’,换页‘\f’,换行'\n',回车‘\r’,制表符‘\t’或垂直制表符‘\v’ isdigit 十进制数字0~9 isxdigit 十六进制数字包括所有十进制数字,小写字母a~f,大写字母A~F islower 小写字母a~z isupper 大写字母A~Z isalpha 字母a~z或...

2022-03-26 23:36:17 312

原创 memcmp函数

头文件:string.h函数的声明:int memcmp(const void *str1, const void *str2, size_t n)返回值:str1<str2 <0str1=str2 =0str1>str2 >0用法:通过输入字节数n,比较前后两个数组从首地址开始的n个字节例子:#include<stdio.h>...

2022-03-26 22:14:39 9193

原创 memmove函数

头文件:string.h函数声明:void* my_memmove(void* dest, const void* src, size_t count)返回值:目标指针dest用法:从src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中对于int形数据每个有4字节,所以如果要将5个元素复制应要输入20.对比memcpy , memmove函数可以实现内存重叠拷贝 例子:#include<stdio...

2022-03-26 21:35:52 144

原创 memcpy函数

头文件:string.h函数的声明:void* memcpy(void* dest,const void* src,size_t count)返回值 :返回指向dest的指针用法:从src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中注:void*有返回值,void无返回值函数的实现:#include<assert.h>void* my_memcpy(void* dest, const void* sr

2022-03-26 20:17:13 771

原创 strtok函数

头文件string.h函数声明char *strtok (char * str,const * sep)返回值分隔符之前字符串的首地址用法sep的参数是个字符串,定义了用作分隔符的字符集合 str指定一个字符串,它包含了一个或多个sep中分隔符分割的标记 strtok函数会找到str中的分隔符标记,并将其换成\0,返回该字符串的首地址(strtok会改变被操作的字符串) strtok函数的第一个参数不为NULL,函数将找到str中第一个被分割的字符串,同时st.

2022-03-26 11:36:21 13483 2

原创 strlen函数

strlen()函数,头文件,返回值,函数的声明,函数的实现,举例

2022-03-05 23:27:19 297

原创 数据类型在内存中的存储(整形,浮点型)

1.数据类型的详细介绍2.整形在内存中的存储:unsigned short[int]括号表示可省略signed short [int]unsigned intsigned intunsigned long[int] 括号表示可省略signed long [int]unsigned char浮点数的储存规则,将浮点数V存入内存,从内存中取出浮点数V时(按指数E)可以分成三种情况

2022-03-03 12:08:41 1839 9

原创 大小端字节序存储

大小端,大端字节序存储,小端字节序存储,设计一个程序来判断当前机器的大小端字节序存储

2022-03-02 23:45:10 146

原创 原码,反码,补码

原码,补码,反码概念,相互转化,举例

2022-03-02 20:36:38 367

原创 C语言数组

为什么需要数组?我们创建少量相同类型变量时,通常会逐个创建,但是当我们创建的相同类型变量越来越多时,逐个创建变量就不太实用了,我们最好一口气创建许多变量,这时引入数组,可以快速方便地创建多个相同类型的变量,大大提升了我们的效率。一.一维数组1.概念什么是数组?数组是一组相同类型的元素集合相同类型:全是整形,全是字符型,全是浮点型……2.创建数组创建的方式:type_t arr_name [const_n]//type_t 是指数组的元素类型//const_n

2022-02-26 02:29:51 343 1

原创 strcpy函数

strcpy函数,头文件,用法,返回值,例子,函数实现

2022-02-23 23:33:45 1315 1

原创 assert()断言函数

所在头文件,用法,例子

2022-02-23 21:49:20 246 1

原创 C语言结构体

1.结构体的声明1.1结构的基础知识结构是一些值的集合,这些值成为成员变量。1.2结构的声明1.3结构体变量的定义和初始化嵌套初始化2.结构体成员的访问

2022-02-21 12:41:38 2330 5

空空如也

空空如也

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

TA关注的人

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