自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 路由器相关知识

该公式考虑了信号频率和传播距离对信号衰减的影响,不考虑障碍物,多径效应(指无线信号在传播过程中,由于环境中存在反射、折射、散射等现象,信号沿多个路径到达接收端)等。` (2.4)服务器确认:DHCP服务器接收到客户端的请求后,会发送一个DHCP Acknowledge消息,正式确认IP地址的分配,并提供其他网络配置参数(如子网掩码、默认网关、DNS服务器地址等)。其中LOS:信号衰减量(单位:dB)、F:信号频率(单位:MHz)、R:传播距离(km)。

2025-03-06 09:49:05 829

原创 路由基础学习

在这个过程中,数据包会经过多个网络设备(如路由器、交换机等),每个设备根据路由表中的信息决定数据包的下一跳路径,最终将数据包送达目的地。管理距离(Administrative Distance):主要用于不同路由协议之间的可信度(0-255之间,0最信任),用于区分不同路由协议的优先级。步骤 4:转发数据包,一旦选择了最优路径,路由器会将数据包封装到适当的链路层协议(如以太网帧)中,并通过指定的出接口发送到下一跳地址。(2)路由表:路由表是路由器的核心数据结构,用于存储到达不同网络或主机的最佳路径信息。

2025-03-04 16:33:35 1040

原创 WLAN无线局域网

那么在发送方周围的主机,收到了这个RTS之后,就知道他周围有人要发送消息了,那么它会保持静默,不发送任何消息,直到接收到B给A发送消息确认,那么直到A给B发送消息这个过程完全结束了,这些周围的主机就可以发送了,周围主机这个沉默状态叫做NAV状态。A在向B传输数据,如果C想向B传输数据,那么C首先监听,他发现在他的传输范围内有B,可以发送,但是它的侦听范围内没有A,也就是他不知道A在给B发送消息,于是他发送了。B正在向A发送数据。但是实际上D在B的干扰范围之外,C给D发送数据是完全可以的,这就是暴露节点。

2025-03-04 15:09:26 626

原创 【无标题】

编译器通常会进行各种优化,以提高程序的执行效率。当编译器在优化代码时,可能会假设某些变量不会被外部因素改变。检查主中断是否被屏蔽(CPU是否响应中断CPSR中的I、F位);,编译器会知道这个变量的值可能在程序的其他地方被改变,因此会对其假设放宽,不会进行不当的优化。可以确保每次读取该变量时,都直接从内存读取最新值,而不是使用寄存器中可能已经缓存的过期值。:在多线程程序中,一个线程可能会修改一个变量,而另一个线程则会读取这个变量。通常用于访问硬件寄存器,因为寄存器的值可能随时由硬件设备改变。

2024-09-22 20:33:45 217 1

原创 汇编(实现C语言程序的调用)

通过指定的寄存器地址跳转,并且可以根据寄存器的最低位设置处理器的状态(如进入 ARM 或 Thumb 状态)。: 带链接的跳转,除了跳转到指定地址外,还将返回地址(下一条指令的地址)保存到链接寄存器(LR 或 r14)中。: 执行减法操作,从一个寄存器的值中减去另一个寄存器的值,并将结果存储在目标寄存器中。: 对两个操作数执行按位清除运算,保留第一个操作数中的位,而将第二个操作数中的位清零。: 比较两个寄存器中的值,设置相应的标志位(如零标志、负标志等),但不存储结果。: 设置 CPSR 的某些位。

2024-09-19 20:47:02 1225

原创 硬件(驱动开发)

OSC(On-chip System Control,片上系统控制)基本架构通常涉及片上系统中的各个组件如何进行协调与控制,以实现高效的处理、通信和管理。以下是对CPU内核的基本介绍,包括其结构、功能、类型和演变。nand flash:不支持随机存取,它是块级(block-level)存储,数据的读取和写入是通过块而不是单个字节进行的,这意味着在进行写入时需要擦除整个块。外设控制器: 外设控制器用于管理与各种外部设备(如GPIO、UART、SPI、I2C等)的通信,使得处理器可以与外部世界进行交互。

2024-09-18 20:42:40 2393 2

原创 校验(网络传输)

定义:校验和是一种简单的错误检测机制,通过对数据块中的所有字节进行求和来生成一个固定大小的值。在数据传输中,发送方会计算数据中1的数量,如果1的数量是偶数,则在数据末尾添加一个校验位,使得总的1的数量变为奇数。(1)定义:校验和是一种通过对数据块中的所有字节进行求和来生成一个固定大小的值。在数据传输中,发送方会计算数据中1的数量,如果1的数量是奇数,则在数据末尾添加一个校验位,使得总的1的数量变为偶数。取模:为了限制校验和的大小,通常会对总和进行取模运算(例如,取256的模),得到一个固定大小的校验和。

2024-09-14 20:50:34 676

原创 framebuffer

函数映射:在数学中,函数是一种特殊的映射,它将每个输入(自变量)映射到一个唯一的输出(因变量)。映射(Mapping)是指将一个集合中的每个元素与另一个集合中的元素进行关联的过程。它是图形处理单元(GPU)和显示设备之间的一个重要组成部分;双射映射(Bijective):既是一对一映射又是满射映射,意味着每个输入都有唯一的输出,且每个输出都有唯一的输入。映射函数:在编程中,映射函数是将一个集合中的元素转换为另一个集合中的元素的函数。二、映射:通常指的是将一个集合中的元素与另一个集合中的元素进行关联或转换。

2024-09-10 20:42:40 877

原创 哈 希 表

(4)快速排序:平均时间复杂度:O(nlog⁡n) 最坏时间复杂度O(n^2)(1)冒泡排序:相邻两个数之间两两比较,算法稳定;(2)选择排序:依次比较,算法不稳定;(3)健壮性:输入非法数据,能进行相应的处理,而不是产生异常;(2)可读性:便于交流,阅读,理解(高内聚,低耦合)2.算法的时间复杂度:执行这个算法所花时间的度量;一、哈希表(哈希函数/散列函数):可以快速查找。(5)二分查找:算法时间复杂度:O(logn)(4)高效率(时间复杂度)(5)低存储(空间复杂度)

2024-09-10 14:55:12 186

原创 数据 结构

(1)栈区中保存的数据先进后出(first in last out);2.栈区 : 局部变量、函数调用关系,函数的形参和返回值;2.允许从一端插入数据,从另一端删除数据的线性的存储结构;2.只允许从一端进行数据的插入和删除的线性的存储结构;3.顺序栈:满增栈,满减栈,空增栈,空减栈;(1)可能会出现假溢出,一般用循环顺序队列;(1)满栈,空栈:栈顶位置是否存有元素;二、数据结构中的栈区(顺序栈,链式栈)1.先进后出,后进先出(FILO)(2)增栈、减栈:栈的增长方向;三、队列(队尾入队,队头出队)

2024-09-06 21:04:08 271

原创 数据 结构(内核链表)

(1) offsetof : 获取结构体成员到结构体开头的偏移量;(2) contianer_of : 通过偏移量获取结构体首地址;一、内核链表(是一个有头双向循环链表)1.内核提供的两个宏。

2024-09-05 20:25:59 274

原创 数据 结构

插入和删除操作 在头部或尾部插入/删除较快,但在中间插入/删除需要遍历 在任意位置插入/删除都较快,尤其是在已知节点的情况下。定义:内存碎片是指在动态内存分配过程中,由于频繁的分配和释放操作,导致内存中出现许多小的、不可用的空闲块,从而降低了内存的使用效率。(2)内部碎片:指分配的内存块大于实际需要的内存,导致未使用的内存浪费。类型:(1)外部碎片:指在内存中存在多个小的空闲块,无法满足大块内存的分配请求。单向链表:适用于只需要单向遍历的场景,如栈的实现、简单的队列等。

2024-09-04 19:46:35 456

原创 数据 结构

链表:大小动态可变,可以根据需要添加或删除节点。不需要预先定义大小。一组用来保存一种或者多种特定关系的数据的集合(组织和存储数据)数组:大小在创建时固定,无法动态调整。需要预先定义数组的大小。程序 = 数据结构 + 算法。(1)单向链表:有头链表、无头链表。a.结点: 数据域、指针域。4. 插入和删除操作。

2024-09-03 19:58:02 413

原创 数据库(专业存储数据)

功能:是 SQLite 的 C 接口中的一个函数,用于打开一个 SQLite 数据库。如果指定的数据库文件不存在,该函数会创建一个新的数据库文件。create table 表名(列名1 数据类型 ,列名2 数据类型, 类名3 数据类型);insert into 表名 values(值1, 值2, 值3);select 列名1,列名2 from 表名;数据库:专业存储数据,大量数据----------->硬盘。数组、链表、变量----->内存:程序运行结束,数据丢失。

2024-08-29 20:16:46 2270

原创 IO多路复用

一、IO多路复用(多个IO共用一个进程)(但一般只能处理耗时少的IO)步骤:创建集合->添加文件描述符到集合中->通知内核开始监测->根据返回的结果做对应的操作函数原型nfdsreadfdswritefdsexceptfdstimeoutNULL0:成功时,返回活动文件描述符数量;失败时,返回 -1。等待时间到达没有活动文件描述符,返回0;缺点:1.select监听文件描述符最大个数为1024(数组) 时间复杂度O(n)

2024-08-28 20:01:41 1022

原创 并发服务器

1.阻塞IO:fgets、scanf、read、recv、getchar。实现步骤:获取原文件描述符的属性->增加非阻塞属性->设置新属性。1.单循环服务器:同一时刻,只能处理一个客户端的任务;2.并发服务器:同一时刻,可以处理多个客户端的任务;:文件描述符,指向要进行操作的打开文件的描述符。(1)异步通知的IO方式,节省CPU;(1)实现多个IO同步的效果。,则它是要设置的值;(1)多个IO复用一个进程;(1)使用轮询的方法实现。(2)只能监测少量IO;(2)cpu占有率低。(2)cpu占有率高。

2024-08-27 19:40:49 537

原创 TCP粘包和抓包

发送缓冲区用于存储待发送的数据。应用程序将数据写入发送缓冲区,TCP 协议会将这些数据逐渐发送到网络中。

2024-08-23 19:16:22 1056

原创 网络 通信

一、客户端接收。

2024-08-22 19:46:50 756

原创 IPC 进程间通信方式

一、共享内存(最高效的进程间通信方式)1.是一块内核预留的空间,避免了用户空间到内核空间的数据拷贝。2.IPC对象操作通用框架:0x ftokkey值 == >申请 == 》读写 == 》关闭 == 》卸载ftok函数用于生成一个唯一的IPC键(key),通常用于创建共享内存、消息队列或信号量等。

2024-08-21 19:48:19 2064

原创 有名管道和信号

一、有名管道1.是一种特殊的文件,存在与内存中,在系统中有一个对应的名称,看文件大小0;2.mkfifo函数原型参数pathnamemode返回值errno二、信号(软中断:软件层面上实现一个类似中断的过程)1.信号本身并不能传递大量数据,信号是一种异步的通信方式;2.signal()

2024-08-17 19:42:54 470

原创 线程共享资源和进程之间的通信

一、线程共享资源的有序访问1.信号量(有锁的作用)(1)机制:描述可使用资源的个数;(2)p操作:表示使用这个资源的个数,资源数减一;尝试获取资源,如果有资源可用,直接使用,资源个数减一,无资源可用,等待;(3)v操作:表示产生这个资源的个数,资源数加一;:V 操作会将信号量的值加1,表示可以使用的资源数量增加了。:如果有其他进程在等待该信号量(即其值为0时试图获取资源),V 操作 可能会唤醒其中一个等待的进程,让其继续执行。2.信号量的使用。

2024-08-16 19:16:34 820

原创 线程的资源回收和互斥锁

一、线程结束方式。

2024-08-15 20:02:59 529

原创 进程状态和线程

一、wait(阻塞调用) pid_t wait(int *status);1.功能:(1)获取子进程退出状态 (2).回收资源 //会让僵尸态的子进程销毁。

2024-08-14 18:58:06 954

原创 高编(进程)

/ EXIT_SUCCESS ---退出状态值。3)_exit,_Exit 会关闭所有的已经打开的文件,不执行清理函数。任何情况下,父进程都能使用wait,waitpid获得这个状态,以及资源的回收。exit -> 刷新缓存区 -> atexit注册的退出函数 -> _exit。c库函数,会执行io库的清理工作,关闭所有 的流,以及所有打开的文件。退出状态,终止的进程会通知父进程,自己使如何终止的。如果是正常结束(终止),则由exit传入的参数。a. 是exit函数调用时,会调atexit函数。

2024-08-13 20:41:16 673

原创 多任务编程

3.程序的构成:代码 + 数据(数据区:栈、堆、字符串常量区、静态区)(代码区)进程------动态------内存(为了描述和管理程序运行的动态过程)(1)进程的状态:就绪-执行-阻塞态(等待,睡眠)基本操作系统。(3)进程的调度(内核的主要功能之一):宏观并行,微观串行。三态 模型 ------操作系统理论。R------运行或可运行(就绪态)程序-----静态------硬盘。D------不可中断的睡眠态。S------可中断的睡眠态。(1)进程是跑起来的程序。Z------僵尸态。

2024-08-12 19:56:22 282

原创 linux编程

参数: status:程序退出的状态 errnum:错误码 format: 类似printf打印。参数: oldpath:要链接向的文件 newpath:创建的新硬链接文件。二、链接文件(软链接文件、符号链接文件、硬链接文件)命令级函数。功能: 创建一个链接向target文件的新符号链接文件。参数: oldpath:老路径名,newpath:新路径名。返回值:成功返回id对应用户的信息,失败返回NULL。参数: 被链接向的文件的路径 ,新符号链接文件。

2024-08-08 18:52:44 628

原创 高编(目录)

(1)字符设备:字符设备文件按字符流的方式进行数据传输。(2)块设备:块设备文件按块的方式进行数据传输。参数: path: 文件的路径 buf: 属性存放空间的首地址。参数: buf:保存工作路径空间的首地址,size:保存路径空间的长度。返回值:成功返回包含路径空间的字符串首地址 ,失败返回NULL。参数: pathname:目录文件的名字。参数: path:改变到的路径;返回值: 成功返回0,失败返回-1;返回值:成功返回0,失败返回-1;

2024-08-07 19:31:08 350

原创 高级编程文件IO

是计算机存储系统中的一种设备,能够以块的形式进行数据存储和访问。它们通常以固定大小的块(例如512字节、4KB等)读写数据,这使得它们非常适合随机访问。:(在内核中)是计算机系统中用来临时存储数据的区域,主要用于在不同速度或不同类型的设备之间传递数据。(3)文件描述符: (1)很小的非负的整数。(2) 内核每打开一个文件就会获得一个文件描述符。3.lseek返回值为(新的文件偏移量);(2)操作对象不在是流,而是文件描述符(int)。2.ftell()返回值为文件的大小;二、标准IO的文件定位。

2024-08-06 19:44:38 380

原创 标准IO文件

4.当a.out开始运行的时候,系统就已经打开了3个FILE*(流指针)(2)fgets(返回值为行数)和fputs只能处理文本文件;是一个字符串,指定了文件打开的模式(如读取、写入、追加等)。(1)fgetc(返回值为字符的ascall值)和fputc。(3)c库 : stdio , string, Math。(3)stderr 标准错误输出(区别在于缓冲区)(3)fread和fwrite(二进制结构体);(1)所有的系统头文件都在include中;(1)stdio 标准输入。(2)so 动态库文件。

2024-08-05 19:49:11 445

原创 linux系统编程

一、Shell脚本配置二、文件(对文件的内容进行读写)三、进程(多任务)四、网络(数据共享)五、HtmlDb(网页和数据库)一、shell与c语言的区别(1)shell编程: 解释型语言 边翻译边执行 擅长文件处理,操作系统管理 开发效率高 cp 1 2 执行效率低 移植性好 (2).c 编译型语言 先编译再执行 擅长数据计算和数据处理 开发效率低

2024-08-03 19:04:19 674

原创 链表和共用体、位运算

一、尾插2.头删3.尾删二、共用体(union 会共同占用相同的内存空间):共用体的大小是其最大成员的大小。可以使用sizeof来获取共用体的大小。:在任何时候,只有最后写入的成员是有效的。因此,读取其他成员时应该小心,以免得到未定义行为。:共用体可以在声明时初始化。:共用体可以嵌套在结构体中,或在其他共用体内部。三、枚举类型(enum)用于定义一组命名整型常量。枚举使得代码更具可读性和可维护性,通常用于表示一组相关的状态或选项。四、typedef(给已有的数据类型起个别名)typedef。

2024-08-02 20:01:03 439

原创 结构体与单向链表

2.(1)无头链表:是一种链表实现方式,它并不使用一个头节点(或哨兵节点)来标识链表的开始,而是直接使用第一个有效节点作为链表的头部。与用一个额外的头节点的链表不同,无头链表的头开始时是一个空指针,指向链表的第一个节点。-----------结构体成员初始化,只初始化一部分成员(.成员名),其他成员自动为0;1. struct (结构体名字)------- 一般标识符第一个字母大写;------------ 结构体成员赋值,“-----------分号不可少;--------- 只能用s1 ,s2。

2024-08-01 18:55:34 363

原创 指向数组、函数、指针的指针

(2) *(a+0) <=> a[0] <=> &a[0][0] -------int * 型。2.二维数组中 int a[][4] = {1,2,3,4,5,6,7,8,9,10,11,12}数组指针 :int (*p)[10] :定义了一个指向数组的指针;三、指向指针的指针(指的是一个指针变量,该变量的值是另一个指针的地址。2.当一个指针数组作为实参传递的时候对应的形参为指针的指针;(1) &a得到一个指向长度为10的一位整形数组的指针。

2024-07-31 18:32:50 392

原创 字符型指针

它的全称是 "memory allocation",用于在程序运行时请求一定数量的内存,并返回一个指向这块内存的指针。用于重新分配已分配的内存块的大小。它可以增加或减少原有内存的大小,并返回一个新的指针。(2)与指针一起使用,可以指定指针指向的内容是常量或指针本身是常量(即无法通过该指针修改它所指向的变量)。的功能,通常用于扩展一个已经分配的数组,通过重新分配内存来实现,同时确保总分配的大小不会溢出。2.返回指针值的函数可以用于管理动态内存、传递数据结构等。3(1).指针可以进行比较(地址值比较);

2024-07-30 19:51:01 292

原创 指针(间接访问)

6.对int *p中的指针p进行p = p+n操作,则P的值会增加n sizeof(基类型);(2)使用指针时要明确此指针指向的目标,否则指针会变成野指针;(3)将偏移好的那部分内存空间当作是一个基类型变量来看;(1)指针的基类型决定了指针所指向的内存区域的类型;(2)从定位初开始向后偏移sizeof(基类型);(1)通过指针变量(p)中的值到内存空间中定位;8.在数组中啊a【i】<=> *(a + i);(1)指针作为参数传递的是变量的地址;1.指针是用来装地址的数据类型;

2024-07-29 17:59:05 255

原创 标识符和预处理命令

(1)静态生存期:是指在程序执行过程中分配内存的区域,其中的变量在程序的整个生命周期内存在,变量的生存期与程序运行周期相同。2.全局作用域(在静态区,可用于函数传参。(3)文件包含:(#include<文件名> #include"文件名")文件包含(Include)是一种通过引入外部文件的方式来组织代码和复用功能的机制。(2)局部变量的生命周期从它们被创建时(当代码块被调用时)开始,到代码块结束时自动销毁。(3)register:用于请求编译器将变量存储在 CPU 的寄存器中, 在cpu中没有地址。

2024-07-27 20:05:46 342

原创 数组作为函数的参数传递

为了提高代码的复用性,把数组封装为函数进行调用,数组名也可以当作形参或实参,传递的是数组首元素地址。(2)数组名作为参数传递时传递的是数组的首元素地址。因此在传参时还应该传递数组的长度。由于实参可以是表达式,而数组元素可以是表达式的组成部分,因此数组元素当然可。以作为函数的实参,与用变量作实参一样,是单向传递,即“值传送”方式。1.字符串数组传参时,不需要传递数组的长度,到(\0)自动结束。二维数组作为参数传递时,要传递数组名和行数rows。(3)数组名作为参数传递可以在被调函数中修改主调函数。

2024-07-26 20:18:31 857

原创 函数的调用

在程序执行时,每当一个函数被调用,系统就会在栈区为该函数分配一定的空间;与栈区不同,堆区的内存管理是由程序员控制的,需要手动分配和释放内存。是计算机内存中的一个区域,用于存放程序中的字符串字面量(即以双引号括起来的字符串)。是计算机内存中的一个区域,用于存放程序中静态分配的变量。当一个函数被调用时,系统为该函数创建一个新的栈帧,用于存储该函数的局部变量、参数、返回地址以及其他相关信息。4.函数的递归调用(循环):在调用一个函数时间接或直接的调用该函数本身,称为函数的递归调用。assert函数是一个宏。

2024-07-25 20:27:34 952

原创 二维 数组(是特殊的一维数组的数组)

被调函数一定是在主调函数之前被声明的 ,另外主函数是main,只要看到main() 就可见主函数了。在调用函数时,主调函数在调用被调用函数时,通过参数向被调用函数传递数据,一般情况下,执行被调用函数时会得到一个函数值,供主调函数使用。(4)所有函数都是平行的,即在定义函数时是分别进行的,是互相独立的。无参函数一般不带回函数值。(3)C程序的执行是从main函数开始的,如是在main函数中调用其他函数,在调用。1. 在定义两个函数时指定函数的类型为void,意为函数无类型,即无函数值,也。

2024-07-24 20:14:45 871

原创 字符型数组

因为二分查找每次查找都可以剔除一半的查找范围,所以相比顺序查找每次一个一个元素查找,查找效率提高了很多。1.字符串:’\0‘字符串结束标志,字符串的存放满足数组存放的三要素(单一性,有序性,连续性)二、字符型数组(用来存放字符数据的数组是字符数组,字符数组中一个元素存放一个字符)确定了该元素所在范围那么范围外的元素就不需要查找了,不断重复上诉过程,直至找到。如果给中间值与给定值相等,则查找成功,返回该元素的下标/索引;11.strcmp(比较两个字符串(比较时不能用关系运算符))

2024-07-23 19:14:11 300

空空如也

空空如也

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

TA关注的人

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