自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 哈希表 和 算法

1.哈希表的作用:将我们要存储的数据,通过关键字与位置的关系函数,来确定具体的位置。2.写哈希表时常出现的问题:哈希冲突/矛盾:当多个数据满足哈希函数的映射时出现解决的方法为:1)开放地址法 2)链地址法:通过链表的方法,将数据经过哈希函数映射后,链接在相应的链表 后。3.

2024-09-09 22:27:03 524

原创 双向链表--初步

总结一下:链表重点在于搞清指针的指向,保证指针不会为野指针,同时链表的下一节点指向上一节点,因为链表中节点在内存分配上不连续,所以一旦丢失,指向链表就会出问题。比单项链表多了一个指针 p->ppre,用来锚定上一个节点的指针地址,同时也是双向操作的关键。

2024-09-05 00:07:15 77

原创 嵌入式数据库

1.作用:存储大量数据,专业存储数据存储在内存(数组,变量,链表)上的特点:程序运行结束,或者掉电,数据会丢失。存储在硬盘(文件)上的特点:数据不容易丢失。2.数据库也存储在硬盘上。3.常用数据库:1)关系型数据库:将复杂的数据结构简化为二维表格形式大型:Oracle ,DB2中型:MySql,SQLServer小型:Sqlite2)非关系型数据库以键值对存储,且结构不固定例如:JSON,Redis,MongDB。

2024-08-29 23:22:40 390

原创 TCP网络编程

2.适用于:1)对传输质量要求高的,且有可能需要传输大量数据的通信 2)在需要传输可靠数据的场合,通常需要TCP协议 3)QQ等即时通信软件的用户登录账户管理相关的功能通常采用TCP协议。参数:sockfd 本地socket创建的套接子id, addr 远程目标主机的地址信息,addrlen: 参数2的长度。服务器端:有两个socket,一个起到listen(监听)的作用,一个起到通信作用的socket。1.tcp模型的特点:1)面向传输 2)可靠传输 3)面向字节流程。

2024-08-22 22:35:50 362

原创 进程间的信息传输和网络编程

函数功能的封装:从设计角度:对于大量重复的代码进行封装当代码出现问题时:a.printf() 局部找问题b.gdb 逐行调试。知识短时间内可以获取到能力的提升需要一定的练习IPC 进程间通信方式共享内存 // 最高效的进程间通信方式共享内存:1.是一块,内核预留的空间2.是不同进程之间最高效的通信方式(避免了)ipcs 显示内存的具体使用信息,可以用来查看是否在内核上申请到对应内存。使用较少的通信方式:1)消息队列,2)信号量集。

2024-08-21 21:36:52 277

原创 有名管道0817

管道 ---- 半双工通信方式单工 //广播 -- ----单一方向的数据通道半双工 //对讲机 ---- 同一时刻 只能有一个方向全双工 // 手机电话 ----- 同一时刻两个方向都可以通信。

2024-08-19 08:15:42 125

原创 控制线程间顺序的信号量 与进程间的通信

无名管道的创建:理解成单通道,只创建在fork之前,创建在fork之后的单通道双向通信,要解决一个时序的问题,因为父进程和子进程是同时进行的,通过一个通道互发信息的话,当双方同时发信息时会发生冲突。2)需要结束进程时,已经结束的信号量需要进行操作,(主要在循环中)使其他在等待的信号量获得一个它已经结束的信息。1.对于线程的信号量死锁的处理,在线程结束时记得给另外一个在等待的信号量一个,结束信号的量,对于线程来说,信号量的逻辑优先级是最高的。1.信号量 ----来描述 可使用的资源的个数。

2024-08-16 21:42:58 247

原创 多线程任务的顺序处理

1.1)线程可以被取消 2)return 也可以结束单个线程 3)exit退出(很危险,会直接退出进程)2.线程资源的回收1)pthread_join //需要自己回收 ---线程属性2)pthread_detach // 分离属性 -----子线程运行很久才结束程序运行操作所用时间用 time函数线程 缺点补充:带来资源竞争 //解决方法:专门的技术 解决资源竞争 ---互斥同步进程 缺点解决方法:进程间通信(管道,信号,共享内存)

2024-08-15 21:20:50 289

原创 进程的结束与线程

进程结束的方式:1)return 结束,main中的return 2) exit() 注册清理函数(atexit) //库函数调用 3)_exit系统调用 4)主线程退出 5)主线程调用(pthread_exit(NULL))异常终止:6)abort() 7)signal kill pid 8) 最后一个线程被pthread_cancle2.在exit函数中 ,调用atexit函数3.wait函数功能:1.获取子进程退出状态 2 .回收资源(主要起到解决子进程僵尸态的问题)

2024-08-14 21:02:06 605

原创 线程与进程(二)

当文件在创建子进程之前时(fork())文件被父进程和子进程同时公用,可以理解为两个进程打开了同一个文件,文件的写入难以控制,因为父子进程之间是宏观并行,微观串行的,当文件的打开在子进程被创建之后(fork())时,文件是被父子进程分别打开的。2.exec 函数 为了在一个程序里运行另外一个函数,这个函数必须是已经存在并且能够运行的。另外如何获取文件全部的字节数:1)通过lseek获取有效字符,2)通过stat获取有效字符。EXIT和_EXIT的区别,前者是系统调用,后者是库函数调用。

2024-08-13 21:18:51 204

原创 进程与线程

1.进程(process)定义:进行中的程序 - - 正在运行中的程序进程 --- 程序的一次执行的过程进程 是程序的一个实例。

2024-08-12 19:01:29 419

原创 DAY22

根据用户id到/etc/passwd文件下解析获得。根据用户名到/etc/passwd文件下解析获得。根据gid到/etc/group文件中解析组信息。成功返回id对应用户的信息。

2024-08-08 21:32:18 141

原创 DAY21

1.read的返回值,可以作为计算有效参数的变量。READ 和WRITE函数都是以二进制读取。

2024-08-08 20:23:17 88

原创 DAY20

1.feof 检测文件是否到结尾,是否读取完毕2.读取发生错误。

2024-08-06 23:46:26 284

原创 DAY19

stdin标准输入 stdout标准输出 stderr标准错误输出。在操作系统中,return 0表示成功,return 1表示未完成操作。当a.out开始运行的时候,系统就已经打开了这三个FILE*2)Linux 操作系统当中IO都是对文件操作。1)以计算机为中心对文件的操作。修改文件名称 mv 原,目标。图片Png文件不能直接进行cp。文本对照工具 vimdiff。fgets字符串一次读写一行。系统自带的三个流指针。

2024-08-06 09:04:59 102

原创 day18

echo后面跟双引号会将其中的变量变为变量值,后面跟单引号原样输出。1.shell(命令显示器)脚本(一般不干逻辑性较强的指令)第三步,chmod+x不能省略,用于提供权限,可执行权限。UTF-8类似与ASCII码,保存1-8个字节的所有命令。配置将多个命令加入汇聚在一起,做操作系统配置。脚本算是一种弱类型的语言,一般默认成字符串。linux命令行中“把0当真,把非零当假”这其中的(num)默认表示字符串。html数据库,对数据进行操作的。快捷查看,详细信息 “ll”$$显示终端,显示当前进程。

2024-08-05 09:13:23 129

原创 DAY17

1)在union共用体中,所有数据类型共用最大的一个内存空间。2)位运算的要求是 数据类型为整形或与整形相兼容。2)用法:能用共用体判断内存是大端还是小端存储。2.union共用体(联合)结合体的一种。4.typedef将函数起一个别的名字。1)将变量名变为类型名(省去关键字)3)共用体可以作为函数参数进行传递。1)按位“与”的作用是“定位清零”3.枚举类型(enum)1)注意:枚举中的枚举值。

2024-08-02 22:08:13 193

原创 DAY16

4、用预处理命令#pragma pack(n) 可以强制编译器按照指定的n来对齐,合法的n的数值分别是1、2、4、8、16。2、结构体成员按照结构体成员声明先后次序依次存放,并且每个成员的首字节放置的位置必须 能够整除成员的字节数;7)1、结构体按照其最长成员大小对齐,意味着最终的大小必须是最长成员大小的整数倍;3、如果结构体某个成员的字节数大于CPU的字节数,则最长按照CPU的字节数对齐;(1)结构体对齐问题,提高cpu的运行速率,同时占用4个字节。(1)无头链表,通常需要用到指针的指针。

2024-08-01 20:48:40 286

原创 DAY15

&a ” 取得了一个指向整个数组的指针。将后面的指针理解为地址。即理解为指向地址首元素的地址。表示定义了一个能够装10个容量的一维数组的指针。用函数指针的目的为了降低函数的耦合性。表示函数pfn指向add.指向指针的指针与数组的指针类似。1)函数的函数名代表首元素地址。数组指针:能够指向整个数组。

2024-07-31 20:35:04 160

原创 DAY14

如果函数malloc申请成功,返回首字节字母,否则返回一个空指针。指针与指针之间求差表示不同指针之间的位置差。加CONST使指针无法通过地址去修改对应常数。1)void万能指针不能进行指针运算。2)降低函数耦合性,(提高通用性)将内存空间开辟到堆区上,2.快速排序算法(qsort)4)动态内存分配malloc。2)指针与指针之间不能求和。3)指针函数不能返回地址。3.void 万能指针。

2024-07-30 20:51:45 129

原创 DAY13

(3)指针*后面必须跟指针变量,意思是使用 “ * ”前要定义。2)定义指针的方法(基础类型+ *(表示后面为指针)+ 标识符)(1)指针变量在内存中占8个字节(64位)或4个字节(32位)(2)野指针:没有明确的指定对象,编译不报警不报错但是会崩溃。(3)将偏移好的那部分内存空间当作一个基类型变量来看。(2)从定位处开始向后偏移sizeof(基类型);(1)通过指针变量中的值到内存空间中定位;1)用来装地址的数据类型(变量)(5)对地址的加一操作。(6)在数组中的应用。

2024-07-29 18:02:36 200

原创 DAY12学习感悟

(1)静态生存期:与程序的运行周期相同 1)全局变量(return 时结束) 2)用static(将变量由动态生存区变为静态生存区)修饰的局部变量。(2)全局作用域:全局都能生效,未包含在任意函数(变量g,i)(3)在两个或两个具有包含关系的不同作用域中定义的 同名标识符 外层标识符在内层不可见。(3)前缀extern(外部的)声明某个函数在这个函数外,起到一个声明的作用。1)作用域:(1)局部作用域:只能生效在某一个区域变量 i)(2)在没有包含关系的作用域中定义的同名标识符互不干扰。

2024-07-27 20:46:13 307

原创 DAY 11学习感悟

1)定义的数组名仅代表其首元素的地址,所以在主调函数中定义的数组其所包含的数组容量,只能在主调函数中计算。不能通过传参 计算行数,因为传参传的是首元素地址,与一维数组不能在被调函数内计算元素个数原因相同。3)因为数组作为函数参数时,是直接引用的首元素地址,从而相当于在数组本身进行计算,这点有别于数据进行的 “值传递”。不能通过传参 计算行数,因为传参传的是首元素地址,故 行数需要在主函数内计算,再通过传参传到被调函数。2)数组中被调函数的数组名代表八位的地址,与主调函数的变量名所代表的整个数组不同。

2024-07-26 20:31:43 309

原创 DAY10 学习感悟

4)函数的形参相当于实参的复制品,两个参数拥有不同的空间值。并不是死循环,由于调用次数太多,栈区占用太多,直接崩溃。堆区:用来堆放数据,可以通过指针调用其中的数据。单片机使用时,慎用!栈区:一种内存空间,用来将数据保存到栈区空间。用于函数错误时或者不符合条件时终止函数。3)C语言中传参都是形参向实参 值传递。7)栈区:保护现场,恢复现场,恢复数据用。无法在被调函数内修改主调函数的参数。函数直接或间接的调用函数本身。1)定义的函数出现错误。传参的次序,自右向左。6)从机器角度理解函数。2)assert函数。

2024-07-25 20:24:33 168

原创 DAY 9学习感悟

2)函数命名(驼峰命名法)除开第一个后续单词首字母大写(c++常用)1)一般表达形式:数组名[数组名][数组名];4)符合数组的特性(单一性,有序性,连续性)5)返回值必须与定义的函数类型保持一致。1)不允许在一个函数内定义另一个函数。4)函数:提高代码的复用性,提高耦合性。3)每个形参的数据类型必须单独给出。6)必须保证封装的函数内有返回值。8)被调函数应该在调用函数之前。2)可以理解为两个一维数组;3)主要用于图像处理。7)return会终止。

2024-07-24 21:11:45 106

原创 7.23学习感悟

2)找到这组数的第一个值和最后一个值,取中间值。7)字符串的大小关系,比较strcmp(不能用关系运算符)strcmp(s1[],s2[])注意:mid必须在循环之内,随着mid和n的比较,mid的值会一直发生变化。至少为(strlen()+ 1)转用 fgets(首元素地址,字符型数据的容量,stdin(文件流))思路:找到一组数的中间值,与需要找的数值进行比较,优点效率更高。2.字符型数组:数组存放的单一性,有序性,连续性。3)puts()输出字符串。6)字符串的链接,strcat()

2024-07-23 20:17:27 153

原创 7.22学习感悟

(3)冒泡排序:相邻两个元素 核心)两两比较小的放前,大的放后。(4)插入法(:算法复杂度也为n^2)单组数列即可插入。1)一维数组,定义数据类型都能行除了(void)(2)选择排序:在合适的数组位置上放上合适的数。数组(单一性,有序性,连续性 基于内存空间)7)数组小的比数组大的位置靠前(有序性)5)数组的数组名代表数组的首元素地址。4)定义这一行只表示类型说明符。2)数组内[]元素至少有一个。计算数组中元素的个数。6)数组不能整体赋值。8)数组的越阶访问。

2024-07-22 21:53:35 175

原创 7.20学习感悟

(2)do.....while语句while语句后不能少分号 “;(1)while()括号内填写逻辑或循环条件,括号后不能加分号;(4)while语句后()括号内加整型变量表示数 “非零即为真“1.goto跳转语句;3)有使循环趋于结束的语句( ++i;注意这种情况:在while()语句中,会进入死循环。(3)while紧跟后分括号“ } ”(1)for语句后不能加分号“;“ 1 ” 代表循环变量的初始化。(2)while型后面跟紧{}“ 3 ”代表使循环结束的条件。“ 2 ”代表循环的执行条件。

2024-07-20 21:08:32 182

原创 7.19学习感悟

条件运算符:(1?2 : 3)唯一一个三目运算符,意思为若1成立则输出2,否则输出3;if ()后不能加分号;加分号会分隔if语句,if和它的分号之间不能空格和输入。注意:C语言中逻辑为假只有一种情况“0”,其余都可确定为逻辑为真。switch语句()括号内必须是整型或者与整型相兼容。最多五层后续需要函数封装,语句之间是逻辑与关系。(2)关系表达式:由关系运算符链接的表达式。%-3d,表示输出的数字后向右补空格。过程中只要有一个执行成功,则程序终止。逻辑与&&,逻辑或||(表达式截断)

2024-07-20 20:54:15 218

原创 7.18学习感悟

今天学习了c程序设计的基础,了解了putchar,getchar,scanf,printf这几个基础命令的作用和之间的区别。%ld l表示long 整型,主要用在scanf()中,printf一般不需要,因为存在不同数据之间的自动转化参考。scanf()从终端获取数据类型,根据占位符的不同,输出的结果也不近相同。%5d输出5位,数字不足时补空格 %05d数字不足时补零。%x打印以16进制格式(x小写X大写)%o打印无符号数,以八进制打印。%u打印无符号数,以整型打印。%p 专用来打印地址的。

2024-07-18 19:25:05 185

原创 7.17学习感悟

当int 向 unsigned 赋值时由于两个都是4字节,但是int表示整型参数有符号,unsigned表示整型参数无符号当二者相赋值时,%d表示有符号,%u表示无符号。有符号计算为:FF FF FF FF (识别为补码) 故计算为 补码-1再取反得原码00 00 00 01,又因为补码确定了数的符号1为负,故得-1.(1)++运算符是从右到左计算的 ,可以理解为++i---++.回顾:以int为例 有符号型 -2^31---+2^31-1。(1)能够被定位的(ip &)都是左值,不能被定位的是右值。

2024-07-17 20:47:23 427

原创 7.16学习总结

二进制,八进制,十二进制转十进制模式为:例如:0111=2^2+2^1+2^0=7,(123)O=1X8^2+2X8^1+3X8^0=83 , 其中二进制为Binary,八进制为Octal,十六进制为Hexadecimal.最后'0'和0的区别:'0'表示文本占一个字节是字符型数据,0是整型数据占四个字节表示的是一个数。标识符由字母,数字,下划线组成,开头不能是数字,以及关键字不能做标识符。今天学习了数组类型中的 整型数据,浮点型数据,字符型数据。0xx表示八进制数据 ,0x123表示十六进制数据。

2024-07-16 18:41:10 171

原创 7.15学习总结

文件夹与普通文本文档的区别在所包含的东西不一样,在进行操作的时候就需要进行区分,例如在进行拷贝和删除时需要加后缀 -r表示全循环,意思是将一整个文件夹全部删掉,包含里面所有的子文件夹。完成作业时发现自己最大问题是无法理解文件包含关系,体现在在使用相对路径时,总是将子文件放在总文件之前,基础逻辑有问题,好在后续将思路理清。mkdir创建文件夹(删除文件夹 rm 文件名-r)同理复制文件夹(cp 文件名 + -r)vi 编辑 (命令状态下) 数字+yy (复制) p。

2024-07-15 19:02:35 254

空空如也

空空如也

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

TA关注的人

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