- 博客(30)
- 收藏
- 关注
原创 framebuffer总结
1. **定义**:- Framebuffer 是一个内存区域,用于保存在计算机图形渲染中生成的图像。它通常包含像素的颜色信息(如 RGBA)以及可能的深度信息和模板信息。2. **组成**:- **颜色缓冲区**:存储每个像素的颜色信息。- **深度缓冲区**:存储每个像素的深度信息,用于处理3D场景的遮挡问题。- **模板缓冲区**:用于实现图形遮罩技术,控制哪些像素可以被绘制。- **多重采样缓冲区**(MSAA):用于减少锯齿状边缘的效果。
2024-08-14 21:35:04
548
原创 数据结构_排序算法的总结
但我们并不能确定待排元素中究竟哪一部分是有序的,所以我们一开始只能认为第一个元素是有序的,依次将其后面的元素插入到这个有序序列中来,直到整个序列有序为止。在待排序的元素中,假设前n-1个元素已有序,现将第n个元素插入到前面已经排好的序列中,使得前n个元素有序。在一个有序数组里面插入一个数据X,通过遍历比较找到位置,再把后面数据向后移动,把X插入到数组中,数组元素加一(插入单个数据)每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完.
2024-08-13 22:18:04
579
原创 数据结构1_单向链表
一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据)程序的设计:将现实中大量而复杂的问题以特定的数据类型和特定的存储结构存储在内存中,并在此基础上实现某个特定的功能的操作;程序 = 数据结构 + 算法。
2024-08-07 21:20:25
392
原创 基于tcp,html,数据库的在线信息查询系统项目总结
子进程使用 recv_http_req() 接收来自客户端的 HTTP 请求,并打印出来,然后调用 parse_http_req() 解析请求。服务端创建:并发服务器,使用多进程实现,接收网页发送的报文并解析,从解析出的内容中获取网页所需要的响应报文发送给客户端,实现网页相关内容打印。HTTP_R_t 结构体(假设在其他引入的头文件中定义),存储 HTTP 请求的信息,如请求方法、URL 和内容等。2). 接收请求报文,存放在定义的结构体内,包含请求方法,url,内容三主题中 recv_http_req。
2024-08-06 20:59:11
817
原创 Linux操作系统___数据库
数据库文件与普通文件区别:1.普通文件对数据管理(增删改查)效率低2.数据库对数据管理效率高,使用方便1.关系型数据库将复杂的数据结构简化为二维表格形式 大型:Oracle、DB2 中型:MySql、SQLServer 小型:Sqlite2.非关系型数据库以键值对存储,且结构不固定 //JSON Redis MongoDBsqlite3: stu.db 1.开源免费, c语言开发2.代码量少,1万行左右,总大小10M以内3.文件型数据库,可以移动4.数据容量最大2T。
2024-08-03 09:44:13
876
原创 Linux操作系统_服务器
服务器在同一时刻只能响应一个客户端的请求服务器在同一时刻可以响应多个客户端的请求多进程多线程IO多路复用为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用。优势: 系统开销小,系统不需要建立新的进程或者线程,也不必维护这些线程和进程。
2024-08-02 10:20:08
603
原创 linux操作系统_TCP
1)三次握手和四次挥手机制 2) 确认应答:TCP将每个字节的数据都进行了编号,即为序列号。每一个ACK都带有对应的确认序列号,保证数据不丢失的按序到达 3)超时重传:当发送端发送的数据在网络中丢失时,在一定时间内没有收到接收端的ACK,则发送端会重新发送丢失数据。2. ACK: 确认应答标志 3. PSH: 表示发送数据,提示接收端从TCP接收缓冲区中读走数据,为接收后续数据腾出空间 4. RST: 重置连接标志 5. SYN: 表示请求建立一个连接 6. FIN: finish标志, 表示释放连接。
2024-07-30 20:23:09
1132
原创 Linux操作系统 -socket网络通信
2.不安全不可靠的协议 //一般用在实时性比较高的广播,组播//vnc。数据链路层:封装成帧,点对点通信(局域网内通信),差错检测 交换机 ARP地址解析协议。HTTP:超文本传输协议(实现超文本集视频、图片、文字于一体的文件类型传输。物理层:定义物理设备标准,比如网线,光纤等传输介质 比特流 bit。数据链路层:封装成帧,点对点通信(局域网内通信),差错检测 交换机。应用层:HTTP、HTTPS、FTP、TFTP、MQTT。应用层:要传输的数据信息,如文件传输,电子邮件等。
2024-07-27 20:42:48
1054
原创 linux操作系统_进程间通信_1
创建并打开管道: int pipe(int *pipefd);读端与写端存在,如果管道中有数据,则读出,如果没有数据则阻塞等待,当管道满时, 发生写阻塞。没有写端,读端不再阻塞,如果有数据,则读出数据, 如果无数据,read直接返回0。没有读端,向管道中写入数据,发生管道破裂(异常)以O_RDONLR打开时 ,管道在open处阻塞。以O_WRONLY打开时 ,管道在open处阻塞。pipefd[0] ==>无名管道的固定读端。pipefd[1] ==>无名管道的固定写端。管道中没有读端,写入数据。
2024-07-22 22:16:05
476
原创 linux操作系统之线程
注意:一次pthread_create执行只能创建一个线程, 每个进程至少有一个线程称为主线程,主进程退出则所有创建的子线程都退出,主线程必须有子线程同时运行才算多线程程序,线程id是线程的唯一标识,是CPU维护的一组数字。参数:thread:存放线程ID空间首地址,attr:线程的属性(默认NULL),start_routine:线程入口函数地址(函数指针,指向线程任务函数),arg:给线程函数的参数。创建:线程空间位于进程空间,进程中的线程,栈区独立,并共享进程中的数据区,文本区,堆区。
2024-07-20 20:29:02
1195
原创 linux操作系统之进程相关_下
如何避免产生僵尸进程: 1.可以使用wait或waitpid回收子进程空间 2.让父进程先结束,子进程后结束,产生孤儿进程,由操作系统帮忙回收资源。功能:通过函数从当前进程克隆一个同名新进程,新进程执行过程是从forkhanshu之后执行 成功父进程返回子进程的pid,子进程返回0。孤儿进程(一般为后台进程):当前进程的父进程结束,当前进程称为孤儿进程,父进程变成systemd(进程组组长)父子进程运行顺序不确定,变量不共享 子进程会复制父进程的0~3g空间和父进程内核中的pcb,但id号不同。
2024-07-18 21:31:12
661
原创 Linux操作系统之多文件管理
功能:读软链功能:读软链接文件(获得软链接文件指向的文件名)功能:读软链接文件(获得软链接文件指向的文件名)功能:读软链接文件(获得软链接文件指向的文件名)文件(获得软链接文件指向的文件名)
2024-07-17 22:30:16
142
原创 Linux操作系统之文件操作-目录文件
1.opendirDIR *opendir(const char *name);功能: 打开一个目录获得一个目录流指针2.readdirstruct dirent *readdir(DIR *dirp);功能: 从目录流中读取文件信息并将保存信息的结构体地址返回3、closedir int closedir(DIR *dirp); 功能:关闭之前已经打开的目录流对象4.chdirint chdir(const char *path);功能: 改变当前程序的工作路径5.getcwdc
2024-07-17 22:28:20
399
原创 1.linux操作系统应用软件编程-文件操作
从stream流对象关联的文件中获取size大小字节的文本数据。要写的信息,一般是固定的字符串或者有数据的数组。3.注意:fopen操作完毕后使用fclose关闭,否则会产生内存泄漏。w+:以读写方式打开;3.返回值:成功 返回指向有效数据的首地址,一般等于s的地址。w:以写的方式打开;如果是普通文件fp 则指向文件第一行数据。2.参数: s 要存储数据的本地内存(栈,堆)size 要获取的数据长度,单位字节。stream 要获取的目标文件流对象,并存储到s对应的本地内存(栈区数组,堆区内存)
2024-02-21 21:43:10
1316
原创 15.C语言基础完结篇-2
由于频繁申请和释放,导致连续的空间分散成一些小的碎片空间,当malloc超过碎片空间时,则无法获得该空间(空间不连续),将这样的空间称为内存碎片。3.malloc需要和free搭配使用,如果只有malloc没有free会内存泄露。2.一个空间只能被free一次,多次free程序会崩溃。要求申请堆区空间,将"hello world"存放到堆区空间,完成打印。size:申请堆区空间的大小。1.free只能释放堆区空间。程序中malloc的空间没有被释放。返回获得的空间的首地址。内存溢出也称为内存越界。
2024-01-31 22:23:25
393
原创 14.C语言基础完结篇
3、找出平均分在90分以上或全部课程成绩在85分以上的学生。分别编写三个函数来实现以上三个要求。2、找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均分。有一个班的5个学生,有3门课程。1、求第一门课的平均分;
2024-01-30 19:58:43
338
1
原创 12.C语言基础
主要用来操作字符串数组,通过将指针数组的每个元素存放字符串的首地址实现对多个字符串的操作。封装函数实现对所有字符串的排序;封装函数实现对所有字符串的打印。封装函数实现对所有字符串的排序;封装函数实现对所有字符串的打印。主要用来存储字符串数组,通过每行存储一个字符串,多行存储多个字符串所组成的数组。
2024-01-28 16:49:43
941
1
原创 11.C语言基础
练习:封装一个函数MyStrcpy实现strcpy的功能;练习:封装一个函数,给定一个字符串,统计该字符串中大写字母、小写字母、数字和空格的个数。对数组指针*,值不变,类型降级成为指向数组第一个元素的指针。&a:获得数组的首地址,其类型为int (*)[5]对一维数组数组名&,值不变,类型升级为数组指针类型。,数组占40个字节空间,每个元素为int *型,共5个元素。,占8个字节空间,指针指向了一个int类型5个元素的数组。是数组,数组每个元素都是指针类型。是指针,指针指向一个数组。
2024-01-26 21:19:58
445
1
原创 10.C语言基础
使用指针变量等价于使用其内部存放的指针,所以我们有时也把指针变量简称为指针。3.指针变量:是一个变量, 变量里面存放了一个指针(地址), 称为指针变量,实参地址传递给形参,形参就是实参的指针,可以通过对形参取*改变实参的值。实参将值传递给形参,形参是实参的副本,形参改变不会影响实参。野指针:未经初始化的指针,指向已经被释放过空间的指针称为野指针。2.指针:指针就是地址,地址就是指针,指针多了指向的概念。间接访问:通过变量在内存中的地址访问变量空间。值:获得&Num指针对应空间中的值。
2024-01-25 20:12:26
466
1
原创 9.C语言基础
练习:主函数中定义一个数组,并对元素初始化,封装一个函数完成获得数组中所有元素的平均值。实参将值拷贝一份给形参,形参是实参的副本,形参的值发生改变不会影响实参。数组传递时,函数体内部形参操作的数组和实参操作的数组为同一数组。2.可以将变量的作用域限定到本文件中。函数体内部想使用函数体外部变量值的时候使用复制传递。3.执行到超过变量作用域范围回收变量空间。变量从空间被开辟到被回收的整个过程称为生存周期。变量作用域默认为离定义该变量最近的大括号内。2.执行到变量定义时开辟空间。声明一个变量为外部存储的变量。
2024-01-24 21:17:43
500
1
原创 8.C语言基础
其定义中的函数类型表示函数运行结果的类型,应该与返回值类型一致,不一致以函数类型为准;简单学习了字符串常见的操作函数和二维字符型数组的相关概念;重点学习了函数这一章的内容,包括其定义,调用和声明;
2024-01-23 21:57:34
397
1
原创 6.C语言基础
1.从终端接收若干个成绩,以-1结尾,计算所有输入有效成绩的平均分。练习:从终端接收5个数放入数组中,打印出所有数据的平均值。简单学习了几种辅助处理语句。练习:获得5个数中最小值。重点学习了一维数组相关概念。
2024-01-20 19:29:19
342
原创 5.C语言基础
重点学习了循环结构中的while循环(先判断再执行语句),do while 循环(先执行语句,再判断)和for循环。学习了switch语句,直接处理多分支选择。简单了解if语句的阶梯分支与嵌套分支。
2024-01-19 21:47:50
348
1
原创 3.C语言基础
接上文了解字符串常量,标识常量和变量的初始化,赋值等概念。简单了解C语言中常用的输入输出函数。学习了强制类型转换与隐式类型转换。了解了不同类型的运算符。
2024-01-17 18:50:45
549
原创 2.C语言基础
C语言中基本数据类型分为整形(int四字节 short两字节 long八字节),浮点型(float四字节 double八字节),字符型,逻辑型,缺省型。C语言中的常见常量有整形常量,字符型常量,浮点型变量。常见的变量有整形变量,浮点型变量,字符型变量。学习了gcc编译流程的步骤。
2024-01-16 21:06:29
417
原创 Linux基础1
使用vim打开一个新建的文件:vim filename.c。点击esc退回底行模式并输入:wq保存退出。编译上述文件gcc filename.c。点击i/a/o键后进行编辑。执行: ./a.out。
2024-01-15 18:29:57
571
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人