自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 单片机裸机学习

数码管:共阳极,共阴极【所有的二极管阴极共用】【集成了大量的发光二极管】,段选【选择数码管中的某段亮灭】位选【选择不同位组的数码管】中断处理:程序运行时被更为紧迫的任务打断,可以更及时的去响应这个优先度更高的任务。CPU:中央处理器,包含运算逻辑部件,寄存器部件和控制部件,具有处理指令,执行操作,控制时间处理数据等功能。MCU:微控制单元,单片机,集合了CPU,ram,rom,定时计数器和多种I/O接口。释放总线:任何接收方都该释放总线,使发送方决定发送的高低电频,【释放总线的操作为自己调为高电频】。

2025-06-23 09:08:49 279

原创 HTML前端学习

网页开始和结束

2025-06-23 09:07:40 157

原创 IO多路复用

Fcntl(【对象】,【文件状态标志位】,【将标志位与按位或(|)进行连接】),应用层除了读写外对文件进行的操作。服务器多客户端模型,单进程或单线程中同时监测若干个文件描述符是否可以执行IO操作的能力。Sqlite命令 【.开头,仅在控制台使用】 sqlite语句【C语言编程中也可以使用】DB【数据库】DBMS【数据库管理系统】MIS【管理信息系统】OA【办公自动化】Dql 查询 data query language 查询 select。Sqlite3【嵌入式设备】mysql mssql【PC机】

2025-06-20 09:08:39 346

原创 TCP协议

B/S browser server B【通用客户端】【浏览器】协议http 功能简单 所有资源由服务端发送过来。C/S client server C【专用客户端】协议 自定义 功能复杂 只给服务端传输必要资源。telnet 远程登录工具,sudo ufw disable【关虚拟机防火墙】P2P peer to peer【对等的,在互相传输文件时使用】黏包问题:数据连续导致的 接收数据是相连在一起的。流式套接字:全双工,数据连续无边界且有顺序,Stat:函数结构体获取文件信息。TCP:传输控制协议。

2025-06-20 09:07:16 280

原创 UDP TCP模式

DNS 域名解析服务,DHCP:动态主机配制【分IP】HTTP【超文本传输协议】 TFTP【局域网内文本传输】FTP【互联网传输,断点续传功能】SNMP【网络管理】传输层:TCP传输控制协议【可靠的通信方式,可以报错延迟高】 UDP用户数据包协议【过程内可能导致丢包,不可靠传输】1,socket 套接字【文件描述符】【网络设备对接的文件描述符】【用于网络通信的一组接口函数】IP【互联网协议,互联网上寻炸主机】ICMP(PING)【互联网控制管理协议】表示层:加密解密,GZIP,应用层【a.out】

2025-06-05 17:50:06 575

原创 进程相关函数学习

子进程由exit结束,exit函数内参数存放于子进程的尸体中,由父进程的wait函数取出并存放在wait函数内参数中。当进程正常结束时WIFRXITED宏为真,可用配套宏WEXITSTATUS取出存放在status变量内的子进程exit函数结束时的参数。Waitpid(pid_t pid,int *status,int options)可指定想回收的子进程。Options:0表示回收过程为阻塞回收,父进程会进入阻塞态等待子进程回收。退出状态,终止的进程会通知父进程,自己如何终止。注册进程退出前执行的函数。

2025-05-26 17:42:15 136

原创 进程及相关函数

Heap【堆区,动态内存空间由程序员申请的可使用的空间】 map/share【共享】stack【栈区】,32位系统下 code区的首地址为0 栈区的尾地址为3G 操作系统给内核分的大小为1G。进程为动态,程序执行的过程,包括进程的创建,调度【CPU对所有进程的响应不是同时的,CPU会以很快的速度对所有的进程挨个响应,当进程未被CPU响应时的状态为就绪】与消亡。子进程复制父进程的0-3G空间和父进程内核中的PCB,但ID号不同一般子进程的ID更大。进程:程序执行的过程,进行内存资源分配,CPU的调度。

2025-05-26 08:35:50 299

原创 目录相关函数操作

Perror:报错函数,程序定义一个errno变量储存函数错误时的返回值【错误标识】,函数输出根据错误标识所代表的错误信息。返回值为秒数与1970年1月1日0时0分0秒的差值。Opendir(),readdir()返回值为结构体dirent ,closedir。FILE *fpopen(int fd,权限选择(打开时的权限))Lseek:(fd,偏移量,宏)返回值为偏移量。Od -c 文本 查看不可见字符。

2025-05-22 18:32:41 179

原创 系统应用层次函数调用

标准IO【输入输出(以计算机的角度)】stdio.h(在/usr/include/stdio.h)r+ 可读可写 与w+产生的差异在r+要求文件一定存在,w+可以对文件进行创建。Man xxx 默认为man 1 xxx 查看当前xxx命令。<>系统库函数,默认路径为/usr/include/Man 2 xxx 查看XXX 对应的系统调用函数。Man 3 xxx 查看xxx对应的 标准库函数。文件,进程【多任务】,网络,数据库。Man man 所有关于man的帮助。文件操作:打开,读,写,关闭。

2025-05-20 17:46:35 98

原创 数据结构 树

3,完全二叉树,对于一颗有n个结点的二叉树按层序编号,如果编号i(1<=i<=n)的结点于同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这可树为完全二叉树。n个结点的有限集合,集合要么为空树,要么由一个根结点和两棵互不相交,分别称谓根结点的左子树和右子树的二叉树组成。3,任意一个二叉树T,如果其叶子结点的个数是n0,度数为2的结点数为n2, n0 = n2 +1;1,斜树,所有的结点都只有左子树,左斜树,所有结点都只有右子树,右树。树的度数是指,这棵树中,最大的结点的度数,称谓树的度数。

2025-05-19 18:11:01 187

原创 结构体 链表

为了表示每个数据元素,ai与其直接后继数据元素ai+1之间的逻辑关系,对ai来说,除了存储其本身的信息外,还需要存一个指示器直接后续的信息。把存储元素信息的域叫数据域,把存储直接后继位置的域叫指针域。这两部分信息组成数据元素ai的存储映像,叫结点(Node)。特点:线性表链式存储结构的特点是一组任意的存储单位存储线性表的数据元素,存储单元可以是连续的,也可以不连续。解决顺序存储的缺点,插入和删除,动态存储问题。在链式结构中需要一个元素存储下一个元素的地址。线性表顺序存储的优点,缺点。

2025-05-13 18:08:42 219

原创 C语言指针指向数组

Const int *p :前缀为const的指针变量 可以对其进行赋值更改指针所指向的地址,但无法通过指针访问修改指针所指向的目标的内容。Strncpy(目标,源【+ 参数n】,n)【向目标内拷贝源中的前n个字符】【源后加参数n从源的第n+1个元素开始拷贝】指针p指向字符串abced的首元素a的地址。Char *p = ‘A’【无法通过指针访问无法修改的数据空间】指向长度为10的一维数组的指针。指针数组:以指针组成的数组,定义为 int*p[10];数组指针:指向整个数组的指针。Void *:万能指针。

2025-05-07 17:13:43 165

原创 C语言指针学习

交换p和q所指位置的值。外圈while循环结束交换begin所在位置的值与p所在位置的值。调用函数本身新的实参为begin所在位置与p的前一个位置。当begin与end的所指位置相同时返回函数至主函数,定义整型t作为标准量,他的值为begin所指的位置的值,定义指针p从前往后,指针q从后往前。b-a 【数值为两地址间基类型的字节数的倍数,类型为int】使指针q的所指的值从后往前找到第一个比标准量t小的值,结束循环留在原地。使指针p的所指的值从前往后找到第一个比标准量t大的值,结束循环留在原地。

2025-05-06 17:34:36 165

原创 C语言自学 函数

变量的作用域为局部作用域的变量称为局部变量。函数的形参也是局部变量,生效的范围在这个函数内。全局作用域:在任何花括号外定义的变量作用域为全局作用域。静态局部变量:定义时前缀static,将变量的生存期改为静态生存期。Register:变量的存储空间在寄存器内,变量无法被取地址。变量的储存空间被开辟到空间被回收的时间,分为静态和动态。局部作用域:定义时的位置,从定义起至同一花括号结束。Auto变量:变量的存储空间的开辟和回收是自动的。Extern:函数前缀,声明其他文件的函数。动态生存期:所有的局部变量。

2025-04-29 20:17:10 212

原创 C语言学习 数组作为函数参数

数组作为参数传递时为指针传递,指针传递的方式被调函数内可以对主函数内定义的数组进行修改。需要传递两个参数【数组的数组名(数组的首元素地址)】【数组的大小】函数递归调用:函数直接或间接的调用自己本身。【效率低,消耗大量储存空间】间接递归调用,直接递归调用。

2025-04-28 17:59:49 125

原创 C语言学习 函数的定义和调用

计算机内部函数的调用的本质:程序的运行由主函数开始,给CPU中的PC(program counter)放入地址实现程序按所编写代码顺序执行,运行至调用函数给栈内存入当前所在地址再将所调用函数的地址放入PC跳至所调用函数继续运行程序,多次调用函数时每次调用都在栈内存入当前地址,函数运行结束返回时将栈内所存入的地址以后方先拿的方式放入PC,跳至地址所在程序继续运行。使用函数的主函数为主调函数,被调用的函数为被调函数,主调函数写在被调函数之后。【指针传参可以实现被调函数中修改主调函数中所定义的值】

2025-04-27 17:33:01 464

原创 C语言学习 二维数组与字符数组

同样具有连续性,有序性与单一性。本质为多个一维数组,在内存中的存储为线性存储。Char s[]={‘1’} 这种字符数组的定义末尾没有‘\0’没有结束标识。Char s[3][100]:3个长度为100的字符数组。二维数组的排序:套用选择排序法,冒泡排序法,插入排序法。Sizeof(a)/sizeof(a[0]):行数。在二维字符数组中查找所需字符串:套用二分查找法。二维数组定义一般形式。二维字符数组的逆序;

2025-04-25 17:48:21 163

原创 C语言学习字符数组

Strcmp:比较字符数组,返回值为整型,若大于0则S1大于S2,等于则两字符数组相等,小于则S1小于S2.Scanf(“%s”,s)空格,tab与回车会被理解为两个字符间的分隔符。Strlen(s):#include<string.h>,输出的返回值类型为lu。Fgets(数组名,sizeof(s)),stdin)只会存入所限制的字符数。Gets(s):数组不够大输入超过数组储存大小的数据会造成越界访问。Strcat(s1,s2):目标的空间要足够的大。Strcpy(s2,s1):字符数组的拷贝。

2025-04-24 17:37:16 178

原创 C语言学习数组

float s[10000]={1,2,3,4,5,6,7,8,9,0}数组初始化,【{}】初始化列表器,未初始化赋值的元素会自动清0。省略元素个数时,元素的个数为初始化列表器中所赋值的元素个数。选择排序:将合适的数放在合适的位置。算法复杂度O(n²)。冒泡排序:相邻两个元素两两比较,小的放前大的放后。[]下标运算符,定义数组时的[]为类型说明符。数组中存储空间具有连续性、有序性、单一性。数组的数组名为数组的首元素地址。二分查找法(折半查找法)。算法复杂度O(n²)。算法复杂度O(n²)。

2025-04-23 19:15:13 227

原创 嵌入式开发自学日志

Break语句:打断当前循环跳出循环执行程序。对for循环当打断时跳出循环将不会执行表达式3。先执行循环体语句,判断表达式真则重复执行循环体,假则结束循环。While(逻辑或关系表达式)对表达式求值若为正则执行循环体并且重新判断表达式,无穷的循环称为死循环(Ctrl+c强制关闭程序)。Continue语句:终止此次循环,不会结束整个循环。循环变量:使用时必须要有循环变量的初始化语句。循环中重复操作的复杂语句为循环体。有使循环趋于结束的语句。While循环:当型循环。For()后不能加分号。

2025-04-22 17:11:01 141

原创 嵌入式开发自学日志

&逻辑与(两边都为真为真否则为假)、||逻辑或(有一边为真就为真,否则为假)、!逻辑非(真为假,假为真)。关系表达式的值为逻辑结果为int型。C语言中 非0即为真,仅有0为逻辑假。高内聚,低耦合:算法本身与需解决的问题高度联系,不相关的内容能不要就不要。表达式1为真输出表达式2,为假输出表达式3。If()else:真执行1,假执行2。表达式2:表达式3【条件】表达式截断:表达式判定后停止计算。Case 常量表达式1:语句1。Case 常量表达式2:语句2。C语言中0表假,非0表真。Switch(表达式。

2025-04-21 18:15:37 136

原创 嵌入式开发自学日志

Printf:格式化输出转换,【%xd】占位符,由下一个参数在程序运行时替换。X为字符宽度,当参数大于所给字符宽度时,按参数大小显示,小于所给宽度时可在字符宽度参量前选项【 】【0】,用空或0在前填补。【%#0】【%#X】添加前缀。i)】,输入双精度与单精度浮点型时,【%lf】双精度,【%f】单精度。【%m.nf】【m】表示总宽度【n】表示小数点后保留n位。o,u,x,X:以无符号的形式输出八进制,十进制,十六进制的大小写形式。P:输出地址【void*】:万能指针。【返回值】【函数的函数名】【形参表】

2025-04-18 18:08:20 318

原创 嵌入式开发自学日志

+i:先加后用,表达式为i。i++:先用后加:产生临时变量为i++,此时i本身发生改变。Locatiable:可以通过变量获取变量在内存上的地址的变量。其中1和2为操纵数,1为左操作数2为右操作数,按操作数分为双目运算符。%:求余运算符的操作数只能为整型或整型相兼容的数据类型,得出结果的符号与左操作数相同。所有变量称为左值【可以被取地址】,所有的常量都称为右值【不可以取地址】。定义变量但未对变量进行赋值时,定义的变量的值总是随机的。临时变量:匿名变量。变量被定义分配空间至回收的时间被称为变量的生存期。

2025-04-17 17:52:03 280

原创 嵌入式开发自学日志

整型变量:short(2字节), unsigned short, int(4字节), unsigned int, long(8字节), unsigned long, long long(8字节), unsigned long long,%d(有符号的十进制)、%u(无符号的十进制)、%f(有符号的浮点型)、%c(字符)、浮点型常量:十进制、指数形式(科学计数法)。小端存储:字节的最低位字节放于存储空间的最低位字节地址上。变量:程序运行过程中其值随时可以发生改变的量。浮点型变量:float、double。

2025-04-16 18:01:32 181

原创 嵌入式开发自学日志Day1

命令模式下光标选中所需复制的内容的第一行双击【y】完成复制(如需复制多行同时 按数字键),光标选择至所需粘贴的行数的上一行按【p】完成粘贴。命令模式下光标选中所需移动的内容的第一行双击【d】完成剪切(如需剪切多行同时 按数字键)、光标选择至所需移动的行数的上一行按【p】完成移动。进入vi程序后,完成命令模式与编辑模式(插入模式)切换,命令模式下i进入编辑模式, 编辑模式下【ESC】退出编辑模式进入命令模式。利用vi 命令(程序)完成代码的编写。

2025-04-15 18:32:10 158

空空如也

空空如也

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

TA关注的人

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