自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Liunx:数据库的基础使用

1.数据的仓库,假设数据是海量。2.数据库可以储存数据,提供对数据的统计,数据的相关管理(增删改查)嵌入设备上使用数据数据库的分类1、分类: 大型 中型 小型大型:ORACLE中型:MYSQL/MSSQL小型:SQLITE DBII powdb关系型数据库DB数据库 select update databaseDBMS数据库管理系统MIS管理信息系统OA办公自动化sqlite数据库特点平时使用,sqlite的库很小,内存很低,使用方便,可移植性强1、开源 C语言开发。

2026-11-09 21:01:27 447

原创 Linux网络编程:TCP网络协议

tcp在通信过程中,数据之间没有边界,接收方不能还原数据。发送方可以发送多次,接收发 ,一次性接送,导致数据不能正常解析的现象。在整个过程中,自己及时下载者,也是上传者。刚开始下载数据的时候,自己的进度是0%, 会有其他的客户端,和服务器,给 咱们自己传递数据。随着时间的推移,自己的下载进度到了90%,这个时候会有其他的新到达客户端,开始下载数据。参数:domain 地址族,PF_INET == 》AF_INET ==>互联网程序。addrlen: 参数2的长度,如果参数2为NULL,则该值。

2026-11-05 21:05:06 307

原创 Linux网络编程:UDP网络协议

UDP(User Datagram Protocol,用户数据报协议)是传输层的一种无连接协议,定义在 RFC 768 中,全文只有三页,是 TCP/IP 协议族中最简单的协议之一。它的核心设计哲学是:只做最少的事,UDP 只负责把应用层交下来的数据封装成数据报,加上端口号后交给网络层发送,不保证送达、不保证顺序、不保证不重复,也不做流量控制和拥塞控制。所以需要注意udp是用户数据报协议数据报1.数据与数据之间有边界2.发送和接收的次数要对应3.没有写阻塞。发送太快,会导致数据丢失。

2026-11-05 20:42:33 386

原创 IPC进程间通信:信号通信与共享内存

Linux 提供了多种进程间通信(IPC)机制,其中**信号(Signal)和信号:轻量、异步、只传递"发生了什么",适合做事件通知。共享内存:零拷贝、高吞吐,适合传递大量数据,但需要自己解决同步问题。信号是内核向进程投递的一种异步事件通知,本质是一个整数编号。进程收到信号后执行默认动作(终止、忽略、暂停、继续);注册自定义处理函数;阻塞或解除阻塞某个信号。异步通信。通知机制。随机事件信号发送和接收的过程1,根据需要(随机事件)发生信号。

2026-11-02 09:04:49 486

原创 IPC 进程间通信:无名管道与有名管道详解

无名管道只能用于亲缘进程,一旦两个进程毫无关系(比如两个独立启动的程序),就无法共享同一个管道。有名管道 ===》fifo ==》可以给任意单机进程通信 .有文件名称的管道。编程步骤: 创建有名管道 》打开有名管道 ==》读写管道》关闭管道 ==》卸载有名管道。1,读端存在,一直向管道中去写,超过64k,写会阻塞, 写段写的太快。2,写端是存在的,读管道,如果管道为空的话,读会阻塞。编程顺序:创建管道 ==》fork–>读写管道 ==》关闭管道。3,管道破裂,读端关闭,写管道,会导致写段退出。

2026-11-01 15:22:31 242

原创 Linux系统编程学:互斥锁与信号量

1.

2026-10-30 16:38:37 411

原创 Linux系统:线程

1.线程是轻量级的进程,线程属于某个进程。2.作用: 并发和进程相同,可以处理相对比较耗时的任务。1.进程是系统中最小的资源分配单位.2.线程是系统中最小的执行单位。3.​进程中,线程与线程是平级关系4.在进程中,默认有一个线程,那个是主线程1.线程可以资源共享,进程资源对立。线程有各自的栈区,这个区域独立。2.进程相对稳定,线程不稳定(如果进程中多线程,其中一个崩溃,整个进程崩溃);3.创建的开销。

2026-10-28 20:00:07 340

原创 Linux系统:进程

如果父进程很快执行完、直接退出,子进程还没抢到时间片,就来不及打印输出,甚至输出混在 shell 提示符后面看不见。,子进程的用户空间和父进程是共享状态。当父进程或子进程对数据进行修改,这是子进程在必须开辟出对应的内存空间。, c库函数,会执行io库的清理工作,关闭所有 的流,以及所有打开的文件。我们可以在父进程里加 sleep(),主动让父进程暂缓,给子进程留出时间去执行、打印。1.子进程复制父进程的0到3g空间和父进程内核中的PCB,但id号不同。3.克隆的进程称为子进程,原有的进程称为 父进程。

2026-10-27 16:12:49 463

原创 系统编:目录IO

1.打开目录 或的DIR 指针,目录流指针 。表示整个目录的信息。opendir2.读取目录内容 (写入目录,新建文件,删除文件,新建目录,删除目录,有独立函数) 。3.dirent 指针,表示目录的一个内容项.readdir4.关闭目录 closediropendir DIR *opendir(const char *name);功能:打开一个目录获得一个目录流指针参数:name:目录名返回值:成功返回目录流指针失败返回NULL代码示例:readdir struct diren

2026-10-23 09:06:03 384

原创 系统编程:文件IO(系统调用IO)

1:操作系统为了方便用户使用系统功能而对外提供的一组系统函数。称之为 系统调用(systemcall)2:c库是为了通用(跨平台,linux,win ),而设计的函数接口。3:systemcall 直接可以使用linux系统提供的功能。4: c库是对systemcall 的封装。c库的函数会调用systemcall中的函数。

2026-10-22 09:04:44 378

原创 系统编程:标准IO

1.I:键盘是标准输入设备,默认输入就是指键盘2.dev/inputO: 显示器是标准输出设备 ,默认输出就是指显示器Linux操作系统当中IO都是对文件的操作。3.输入输出是以计算机中的内存为参考点。4. 如果从内存中输出数据,被称为输出。如果写入内存的,被称为输入。5.c库中关于文件操作的一套函数,称为标准io注意:可以通过man手册查找函数的使用功能文件操作的步骤1,fopen。

2026-10-21 09:24:06 413

原创 数据结构:双向链表,队列,栈,树形结构,哈希表

操作:操作:双向链表头节点创建:代码示例双向链表头插与单向链表思路相近,但是需要同时维护next(前)和prev(后)两条指针。往前、往后两个方向箭头都要修改双向链表的整体操作都与单向链表的逻辑相近,只有增删节点时,需要修改相邻节点的next与prev两个方向指针1.定义—递归式的定义树是n(n≥0)个结点的有限集合:每个集合本身也是一棵树,称为根的子树2.结点的特点1.每个结点最多有两个子树;2.左、右子树有顺序,不可互换;3.即使某结点仅有一个子树,也必须明确是左子树还是右子树。访问节点

2026-10-20 17:29:07 236

原创 数据结构:单向链表

单向链表是一种线性数据结构,由一系列节点组成。数据域(data):存储实际的数据。指针域(next):存储下一个节点的地址。与数组不同,链表中的节点在内存中不要求连续存储,而是通过指针逐个串联起来。因此,链表的插入和删除操作不需要移动大量元素,效率较高;但随机访问某个节点则需要从头遍历,时间复杂度为 O(n)

2026-10-18 16:23:47 368

原创 Linux环境下C语言的位运算

int占 32bit,循环 i 从 0 到 31,依次取出第 i 位,逐个判断,如果是则用计数器统计是1的次数,直到i = 0。51单片机 — 8位单片机 — 寄存器 ,通过软件来控制 ---- 对应一个二进制位 ,硬件操作 — 本质在操作 寄存器的位。1.遍历全部 32 位,把所有偶数编号的 bit 全部置 0,奇数编号 bit 保留原来的 1。2.从 0 开始,把所有奇数编号的 bit 全部置 1,偶数位保持 0。通过n控制左移动多少位,把移出去的最高位,放到最右边最低位。(两段代码效果一致)

2026-10-11 22:14:00 453

原创 Linux环境下C语言的结构体,共用体,枚举类型

CPU 读取内存时,按固定块大小读取(1/2/4/8 字节)。结构体对齐,就是编译器自动在成员之间、末尾填充空白字节,让每个成员的起始地址满足对齐要求,加快 CPU 访问速度1.结构体成员变量的对齐自然边界对齐2.结构体整体对齐以最大的成员来对齐1.

2026-10-10 17:31:24 401

原创 Linux环境下c语言的指针4

如果在函数上面返回一个栈空间的值的第地址时,该空间会被回收,指针会变成野指针,主函数调用可能会造成段错误。函数也是一种类型 ,函数的地址,就是函数名 ,函数名叫做函数的入口地址 (函数名就是地址值)如果要在命令行参数输入数字1存的是字符串"1",不能直接当 int 使用,需要atoi转换。2.指针(的)函数 :返回值类型为指针的函数 称为 指针函数 ,本质是 个函数。1.函数(的)指针 :函数的指针,指向函数的指针变量 ,本质是 个指针。返回 申请到的堆区空间的 首地址。2. 通过指针的方式使用函数。

2026-10-08 21:05:42 519

原创 Linux环境下c语言的指针3

先移动 dest 指针找到 dest 末尾的\0,从这个位置开始拷贝 src 的每个字符(覆盖原来的\0),拷贝完 src 所有有效字符之后,再在末尾添加\0。由n控制比较多少个字符,注意判断条件n要提取-1,否则当n结束时,指针指向后一个,导致比较字符数出错。与strcpy作用一样,多了一个n控制拷贝多少个,如果n大于拷贝的数量,则直到拷贝完成即可。1.作为指针数组,如果需要传递参数需要二级指针例如char** p接收。4.如果要访问,需要将 void *类型指针强转为 具体类型的指针。

2026-10-07 21:30:42 333

原创 Linux环境下c语言的指针2

如果要对指针指向的变量(内存里的值)做修改的时候,最好加上const,可以在中途无意中修改时提醒,避免该值的修改, 提高参数的适用性。const char * p //限定通过*p方式访问基类型 为 只读,限定 *p方式 不能修改基类型。char const * p //限定通过 *p方式访问基类型 为 只读。char * const p //限定p本身为只读 表示p本身不能被修改。const char * const p //p不能被修改 *p也不能被修改。:把变量地址放进指针,用 &变量。

2026-10-04 14:56:57 401

原创 Linux环境下c语言的指针1

基类型 * 指针变量名(1)基类型 : 表示的是指针(地址) 所指向的空间的 数据类型(2) * : 定义指针变量时,只是用来说明该变量 是指针类型(3)指针变量名: 就是一个标识符 和 普通变量的命名规则一致注意(*)号属于运算符,是指针运算符,也叫解引用,通过解引用可以访问改指针指向的地址内的值。

2026-09-29 20:06:34 582

原创 Linux环境下c语言的预处理命令

要用加上\代表在同一行,\后面不得跟有其他符号,结果输出一致,将宏的部分替代成一串代码。1.宏本质还是一个标识符,宏名通常用字符常量表示(最好大写)将程序中的预处理命令,执行完,将代码处理成 纯的C语言代码。3.函数在程序运行后才可以用,宏在预处理阶段就处理完了。1.带参宏 ,可以给一些参数,形式特别像函数调用。将预处理完的文件,进行语法,词法分析,检查问题。3.用宏定义可以提高代码的可读性,方便后期调整。将 前面的汇编代码,最终翻译成机器代码。2.这些预处理命令都是带有#开头的。

2026-09-28 19:28:00 393

原创 Linux环境下c语言的函数2

字符型数组传参只需要传递数组名(数组首元素地址),字符型数组自带 ’\0‘ 作为结束标志,所以不需要长度来判断(如果需要长度,则用strlen获取)1.必须传递 除第一维以外所有维度的长度,第一维可以不写,例如列数不能省略(传递的时候必须固定列数),行数可以省略。想要在函数中传递数组,需要传递数组的长度,因为在编译器中只会把数组名当作一个指针类型的变量,不会算长度。数组传参需要传递数组名(数组首元素地址)以及数组的长度,用sizeof获取长度会更加灵活。用函数形式写字符型数组的函数。

2026-09-27 15:38:12 213

原创 Linux环境下c语言的函数

int类型的自定义函数需要有返回值,函数调用的时候需要有一个变量去接收返回值。

2026-09-23 21:22:52 90

原创 Linux环境下c语言数组3

函数原型:char *strcpy(char *dest, const char *src);2.二维数组正确语法形式: 数据类型 数组名[常量表达式][常量表达式];s 要传的是一个存放字符串的空间的首地址 、比如,字符型数组名。1.二维数组本质是两个一维数组,c语言中不存在真正的二维数组。拼接字符串 —将src中字符串拼接到dest中。//列数 表示 一条字符串 最多有多少个字符。将 src 中的字符串 拷贝到 dest中。//关注的是 存放多少个字符串。

2026-09-22 21:35:34 177

原创 Linux环境下c语言数组2

2.第一层循环控制轮数,第二个循环因为是两两相比,所以不用比较最后一次,所以第i轮单独时候再-1。1.定义三个变量,两个作为循环变量,一个用于存放临时变量,一个存放数组长度,定义一个数组。1.定义四个变量,两个作为循环变量,一个用于存放临时变量,一个存放数组长度,定义一个数组。1.定义四个变量,两个作为循环变量,一个用于存放临时变量,一个存放数组长度,定义一个数组。2.第一层循环控制轮数,并将需要插入的值存放入临时变量,准备插入的位置。在一个有序的数列中,找到合适位置,插入要排序的数。

2026-09-21 22:01:21 278

原创 Linux环境下c语言学习

流程控制2和一维数组

2026-09-20 21:14:12 49

原创 Liunx环境下c语言的流程控制1

流程控制的运用(1)

2026-09-19 15:07:27 176

原创 Linux环境下c语言的输入与输出

c语言的输入与输出函数

2026-09-17 20:33:10 352

原创 Linux环境下C语言运算符

1.优先级 —由不同优先级的运算符时,先看优先级,优先级高的,先结合 --方便分析表达式是什么样子的。(float) (5 % 3) (将 5%3 的值转换成 float 型)(2) 如果a++参与运算中则对该值进行先用后加(先用表达式的值)再自增。(3) 如果++a参与运算中则对该值进行先加后用(先对该值+1)(double)(a) (将 a转换成double类型)2.结合性 —都是同一优先级的运算符,要看结合性。(int)(x) (将 x的值转换成整型)//以a++ 和 ++a为例。

2026-09-16 20:53:35 175

原创 Linux环境下c语言基础 day2

计算机进制,指计算机内部采用的进位计数规则。计算机硬件电路只有两种稳定状态(通电 / 断电,高电平 / 低电平),所以底层统一使用【二进制】

2026-09-15 20:48:37 190

原创 Linux基础(从零开始)

linux基础(从零开始)

2026-09-14 20:14:08 211

空空如也

空空如也

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

TA关注的人

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