- 博客(41)
- 收藏
- 关注
原创 Frame Buffer
Frame buffer 是显卡存储的视频数据,在 Linux 系统中通常被抽象为 /dev/fbX 文件(X 表示不同的设备编号)。应用程序可以通过这个设备文件直接与显卡进行交互,读写像素数据以显示内容。
2024-09-10 20:41:58
522
原创 哈希表与算法时间复杂度
(Hash Table),它通过哈希函数将键值映射到特定的数组索引,从而实现高效的查找、插入和删除操作。其核心思想是将数据直接存储到具有固定大小的数组中,通过哈希函数计算出每个数据的存储位置。
2024-09-09 19:12:09
2541
原创 数据结构:二叉树
二叉树(binary tree)是一种非线性数据结构,代表“祖先”与“后代”之间的派生关系,体现了“一分为二”的分治逻辑。与链表类似,二叉树的基本单元是节点,每个节点包含值、左子节点引用和右子节点引用。每个节点都有两个引用(指针),分别指向左子节点(left-child node)和右子节点(right-child node),该节点被称为这两个子节点的父节点(parent node)。
2024-09-09 17:36:54
1037
原创 数据结构:栈和队列(Stack & Queue)
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(First In First Out)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端称为队头。队头(Front):允许删除的一端,又称队首。队尾(Rear):允许插入的一端。空队列:不包含任何元素的空表。假性溢出:如图d,队列出现“上溢出”,然而却又不是真正的溢出,所以是一种“假溢出”。
2024-09-06 20:31:44
653
原创 数据结构—内核链表
内核链表是一种在操作系统内核中广泛使用的数据结构,特别是在Linux内核中。它主要用于高效地管理和遍历内核中的对象,如进程、设备、文件等。每个链表节点都包含指向前一个节点和后一个节点的指针,这使得从任何节点出发都可以方便地遍历整个链表。内核链表的设计使其能够通用于不同类型的内核对象。通过在结构体中包含一个指向链表节点的指针(如struct list_head类型),任何结构体都可以轻松地加入到链表中,而无需修改链表本身的结构。
2024-09-05 21:35:45
680
原创 数据结构—双向链表
主要结构是由,这三个结构组成,通过prev找到前一个节点,next指向下一个节点。结构:节点(Node):每个节点包含三部分:数据(Data):存储节点的值。前指针(Prev):指向链表中前一个节点的指针。后指针(Next):指向链表中下一个节点的指针。在双向链表中同样可以实现单向链表中的头插,尾插,头删等操作。此外,如用到结构体,结构体可以整体赋值。特点:单向遍历:单向链表只能从头节点开始,按顺序向下遍历,直到链表的末尾。无法逆向遍历。
2024-09-04 20:30:50
1139
原创 数据结构—单向链表
*链表存储的数据的数据类型*//*链表的结点类型*///数据域//指针域:指向下一个结点/*链表的对象类型*///链表头结点地址int clen;//链表当前结点个数}Link_t;#endif。
2024-09-03 21:16:26
376
原创 数据库—专业储存大量数据
1、内存存数据:当程序运行结束,掉电,数据丢失。(数组、链表、变量等)2、硬盘存数据:程序运行结束,掉电,数据不丢失(1)文件:对数据管理(增删改查)效率低.(2)数据库:专业存储数据,可存大量数据。对数据管理效率高,使用方便。
2024-08-29 21:20:55
1959
原创 IO多路复用
epoll是Linux特有的I/O事件通知机制,它是基于事件驱动的方式来处理多个文件描述符的I/O操作。相比于传统的select和poll方法,epoll能够更高效地处理大量的并发连接,因为它在内核中使用了更高效的数据结构和算法。exceptfds:指向异常文件描述符集合的指针,如果不关心异常文件描述符,则传入NULL。writefds:指向可写文件描述符集合的指针,如果不关心可写文件描述符,则传入NULL。readfds:指向可读文件描述符集合的指针,如果不关心可读文件描述符,则传入NULL。
2024-08-28 20:15:52
1015
原创 粘包,Telnet,SSH,Wireshark
原因:tcp为流式套接字,数据与数据间没有边界,导致多次数据粘到一起。解决:1.规定一些数据间的间隔符,"\aa","\r\n";2.可以指定要发送对象的数据长度。3.自己将数据打包。
2024-08-23 20:42:00
520
原创 udp recvfrom函数 tcp c/s模型
参数:ssize_t recvfrom(int sockfd, socket的fdvoid *buf, 保存数据的一块空间的地址size_t len, 这块空间的大小int flags, 0 默认的接收方式 --- 阻塞方式struct sockaddr *src_addr, 用来保存发送方的地址信息socklen_t *addrlen 表示发送方实际的地址信息大小返回值:成功 返回接收到的字节数失败 -1。
2024-08-22 22:13:33
731
原创 线程的结束 ,互斥锁,进程与线程
int count;int i = 0;++i;int i = 0;++i;if(ret!= 0)if(ret!未上锁。
2024-08-15 20:13:30
390
原创 进程的生命周期,kill,fork函数,父子进程
在Linux系统中,kill命令用于向运行中的进程发送信号,默认发送的信号是终止信号,会请求进程退出。kill(杀)可能会引起误解,实际上发送的信号可能与杀死进程无关。我们最常使用到的kill命令为:kill PID前者为请求目标进程退出,后者为强制杀死目标进程。
2024-08-12 20:30:51
795
原创 时间函数,文件操作函数,Makefile
字符串处理中的link函数(误解)在C语言中,对于字符串处理,并没有直接名为link的标准函数。如果你看到或听到关于link函数用于字符串处理的描述,这很可能是一个误解或特定上下文中的自定义函数。例如,在某些情况下,可能会编写一个自定义的link函数,用于将两个字符串数组合并到一个新的字符串数组中,但这并不是C语言标准库的一部分。
2024-08-08 19:52:45
963
原创 文件IO,缓冲区
定义:缓冲区是一块连续的计算机内存区域,用于存储输入或输出的数据。当数据从一个地方传输到另一个地方时,它首先被放置在缓冲区中,然后再从缓冲区中取出或发送到目标位置。作用:减少访问延迟:通过减少对物理设备的直接访问,缓冲区可以减少数据传输的延迟。提高数据传输效率:由于数据可以批量处理,缓冲区可以提高数据传输的吞吐量。保护数据完整性:在数据传输过程中,缓冲区可以作为数据的临时存储区域,防止数据丢失或损坏。
2024-08-06 20:28:54
838
2
原创 Linux系统下shell脚本的编写
C语言的学习告一段落了,今天开始了Linux系统编程Linux编程中主要要学习以下几点:1.shell脚本:做操作系统配置,要求能看懂并且写出一些简单的脚本2.文件:要对文件进行主要的读写操作3.进程:为了同时完成多个任务,运行起来的应用程序叫做进程4.网络:信息交换5.Html Db:数据库,查找文件学习方法:1.函数数量多,不用背,要会查man手册2.demo 要手敲几遍,自己查手册按照逻辑能够把代码敲出来3.不懂的及时问。
2024-08-03 18:45:25
736
原创 链表,typedef,位运算
一、什么是typedeftypedef是在C和C++编程语言中的一个关键字。作用是为现有的数据类型(int、float、char……)创建一个新的名字,目的是为了使代码方便阅读和理解。1、对于数据类型使用例如:以上就是给int起了一个新的名字NEW_INT,注意要加分号。当要定义int类型数据时就可以:此时NEW_INT num 等同于 int num。2、对于指针的使用例如以上就是给int *起了一个新的名字NEW_INT。可定义int类型指针变量如:PTRINT x;
2024-08-02 20:20:46
656
原创 标识符的作用域与可见性
一般在标识符前加g,比如:int g_i,若未初始化则一定为零。1.局部作用域:放在花括号以内,只作用于花括号内部,局部作用域内部的变量称为局部变量, 在栈区内,形参也在栈区内。b.static让变量只在本.c中有用,在全局变量和函数前加static代表只能在本.c中使用。用法:register int i:把变量放进CPU中是一种建议,而非命令,取地址i将会引发编译报错。3.在两个或两个具有包含关系的不同作用域中,外层标识符在内层不可见。2.在不同(没有包含关系)的作用域中,定义同名标识符互不影响。
2024-07-28 20:26:23
430
原创 字符串数组,puts , gets , fgets , strcpy , strcat , strcmp 二分法
今天主要学习了字符串数组,并且学习了puts , gets , fgets , strcpy , strcat , strcmp。并且新学了一个寻找元素的方法--二分法。
2024-07-23 19:32:48
429
原创 数组,三种排序方法
int a[10]int:类型名 a:数组名 [常量表达式]1.不能是void型。2.个数>=1,至少有一个3.定义出现的[ ]不是运算符4.不能写成 a = i (a为常量,不可做左值)5.数组的数组名代表数组中首元素的地址eg:printf("%d\n",a)时将数组的第一个值的地址以十进制的方式打印出来。6.数组的越界访问:int a[10];
2024-07-22 21:56:18
474
原创 整型数,浮点数,字符型
signed] long [int] 有符号长整型 32。[signed] short [int] 有符号短整型 16。[signed] long long [int] 有符号双长整型 32。指数形式:如123e3/123E3 代表123*10**3 e后面必须为整数。
2024-07-16 18:08:13
788
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人