自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 ARM处理器,ARM汇编

嵌入式硬件 ARM汇编

2024-09-05 01:26:20 1136

原创 嵌入式硬件-ARM处理器架构,CPU,SOC片上系统处理器

ARM920T采用精简指令集,每条指令简单且执行时间短,这有助于提高指令的执行效率。ARM920T是ARM公司的32位RISC(精简指令集计算机)处理器内核。基于ARM920T架构的CPU:以下时哈佛结构。注意:创建线程实际使用兑取空间,栈区独立。

2024-09-02 22:45:44 3002

原创 数据结构(五)——哈希表,数据排序方法

交换次数少,交换的数据所占空间较大时,适用于选择排序(较少交换次数带来的时间开销)插入排序 O(n^2) 已经有序的数据使用插入排序时间复杂度为O(n)哈希冲突(哈希碰撞):多个数据通过哈希算法映射成同一个键值。哈希: 将数据通过哈希算法映射称为一个键值。取时通过键值对应的位置查找。存时在键值对应的位置存储。希尔排序 O(nlogn)冒泡排序 O(n^2)选择排序 O(n^2)

2024-09-02 01:30:36 568

原创 数据结构(四)——队列,树,二叉树

满二叉树:满二叉树是一种特殊的二叉树,其中每个层级的节点数都是最大值,即每个层级都是完全填充的。深度: 从根节点出发到达节点的分支节点个数称为该节点的深度。高度:从叶子节点出发到该节点最大的节点个数称为该节点的高度。树的高度:整个树形结构中高度最高的节点的高度称为树的高度。树的深度:整个树形结构中深度最深的节点的深度称为树的深度。层:根节点所在为第一层,每过一个分支节点,层数+1。树的层数 == 树的高度 == 树的深度。节点的度: 叶子节点度数为0。分支节点:有前驱也有后继。叶子节点:没有后继的节点。

2024-09-02 01:29:20 383

原创 数据结构(三)——双向链表,循环链表,内核链表,栈和队列

产生原因:单链表只有一个指向后继的指针,如果要访问某节点的前驱结点,只能从头遍历,也就是访问后继节点的时间复杂度为1,访问前驱结点的时间复杂度为n。采用链式存储的栈称为链式栈,链栈的优点是便于多个栈共享存储空间和提高其效率,且不存在栈满上溢的情况。通常采用单链表实现,并规定所有操作都是在单链表的表头进行的。所以它们的区别和线性表中讨论的一样,如果栈的使用过程中元素变化不可预料,有时很小,有时非常大,那么最好是用链栈,反之,如果它的变化在可控范围内,建议使用顺序栈会更好一些。满减栈(学的是空增栈)

2024-08-30 01:45:33 849

原创 数据结构(二)——单向有头链表基本操作和复杂操作

快慢指针法:使用两个指针,一个快指针每次移动两个节点,一个慢指针每次移动一个节点。当快指针到达链表末尾时,慢指针所指的位置即为链表的中间节点。选择排序:遍历链表,找到最小(或最大)的节点,将其与链表的第一个节点交换,然后重复此过程,但每次都是从剩余未排序的节点中找到最小(或最大)的节点。如何计算环入口位置:将一个指针从第一个节点向后走,将一个指针从相遇点向后走,两个指针相遇的位置即为环入口的位置。如何计算环长:标记相遇的位置,让指针继续向后走,没走一步计算器自加,走回到标记位置,则计算器值即为环长。

2024-08-29 09:12:05 248

原创 数据结构(一)——顺序表和单向链表(一对一)

数据量增长与程序运行时间的比例关系以函数描述称为时间渐进复杂度函数,简称时间复杂度。数据量增长与程序所占用空间的比例关系称为空间复杂度。3.链表空间不连续,使得理论上长度是无限的。2.链表需要更大的空间存放数据和节点地址。1.空间可以不连续,访问元素不方便。程序 = 数据结构 + 算法。4.链表的插入和删除效率很高。

2024-08-29 08:53:27 480

原创 数据库的事务机制,同步机制

事务机制:事务是一组操作,这些操作要么全部成功执行,要么全部失败,不会出现部分执行的情况。事务的ACID属性(原子性、一致性、隔离性、持久性)保证了数据库状态的正确性和可靠性。在 SQLite 中,可以通过设置 PRAGMA 命令来控制文件写入同步的行为。默认情况下,SQLite 会在每次提交事务时同步数据到磁盘,OFF:完全禁用同步,只在内存中进行缓存,直到操作系统决定何时同步到磁盘。NORMAL:在某些情况下不会同步到磁盘,以提高性能。FULL:每次提交都进行完整的同步,这是默认设置。

2024-08-24 01:31:28 259

原创 数据库,SQL语句

select 列1,列2,... from 表名称 where 匹配条件 order by 列名称 asc/desc;insert into student values("李四", NULL, NULL, 99.99);update student set 性别="女", 成绩=86.3 where 姓名="王二";insert into student values("张三", "男", 19, 89.5);insert into student (姓名, 年龄) values ("王二", 18);

2024-08-24 01:19:41 333

原创 TCP并发服务器,poll模型,epoll模型

2.select监听的文件描述符集合在应用层,内核层监听事件后需要传递给用户层带来资源开销。4.select只能工作在水平触发模式(低速模式)而无法工作在边沿触发模式(高速模式)nfds:文件描述符集合的数组的长度 (监听事件的个数)3.epoll会获得产生事件的文件描述符,不需要用户查找。2.登录成功后,客户端可以发送给服务器一个单词,并获得单词的含义。2.poll需要用户手动查找产生事件的文件描述符。3.select需要用户手动查找产生事件的文件描述符。1.poll监听的文件描述符集合在。

2024-08-21 18:59:05 537

原创 IO模型,TCP并发服务器之select模型

select不再阻塞,同时select会将产生事件的文件描述符留在集合中,而把没有产生事件的文件描述符从 集合中踢出,所以留在集合中的文件描述即为产生事件的文件描述符,对其处理即可。将一个文件描述符设定为异步IO,当IO有事件发生时,内核会向用户层发送SIGIO信号提醒用户层处理事件。,将所有要监听的事件加入集合中,使用select监听所有事件,当集合中有事件发生,exceptfds:异常文件描述符集合。功能:判断fd是否仍在文件描述符集合中。功能:将fd加入文件描述符集合中。功能:将文件描述符集合清0。

2024-08-21 09:10:07 387

原创 TCP编程

利用8月15所学完成以下任务(UDP):1.利用套接字实现两台主机全双工通信bind发端:发一次数据(数据可以随便) 收端: 接收一次数据(目的:接收发送方的IP+Port)两个任务 两个任务从终端接 -> 发送 从终端接 -> 发送从网络接 -> 打印 从网络接 -> 打印send.crecv.cUDP特点:1.不安全不可靠的传输方式。

2024-08-17 00:47:58 1059

原创 网络编程,网络协议,UDP编程

在NAT网络中,内部网络中的设备使用私有IP地址,这些地址通常是从RFC 1918中定义的地址块中分配的,以避免与公共IP地址冲突。NAT转换器(NAT router)是一种网络设备,它包含NAT功能,可以接收来自内部网络的数据包,并将其源IP地址和端口号转换为公共IP地址和端口号。当外部网络中的设备尝试与内部网络中的设备通信时,NAT转换器会记录下原始的源IP地址和端口号,以便在返回的数据包中进行相应的转换。子网掩码展开成二进制,1对应的部分就是IP地址的网络位,0对应的部分就是IP地址的主机位。

2024-08-16 13:00:03 1948 1

原创 消息队列,共享内存,信号灯(进程通信)

2024-08-15 18:39:32 159

原创 学习嵌入式Day27天(信号通信)

2024-08-12 16:58:39 167

原创 学习嵌入式第二十二天

3.makefile维护文件时间戳,需要编译的重新编译,不需要重新的编译则省略编译的时间。1.Makefile是一个文件,工程代码编译规则写在makefile文件中。= 之前没被赋值则赋值,之前被赋值不再重复赋值。文件名:makefile Makefile。要生成的文件:所有依赖的文件。$< :第一个依赖文件。$^ :所有依赖文件。2.makefile语法规则。= 赋值。+= 追加。:= 覆盖。目录,并设置正确的权限。

2024-08-06 00:43:20 217

原创 学习嵌入式第二十天

删除链接文件名,并让硬链接个数-1 ,如果一个磁盘空间硬链接个数为0,需要回收磁盘空间。软连接文件名 -> inode -> 数据块 -> 链接向的文件名 -> inode -> 数据块。pathname:目录文件的路径。创建一个newpath的硬链接文件。ln 要链接的文件名 硬链接文件名。oldpath:要链接的文件名。pathname:文件路径。buf:存放软链接文件内容的缓冲区。newpath:硬链接文件名。pathname:链接文件名。statbuf:存放文件详细信息空间的首地址。

2024-08-03 01:26:42 556

原创 学习嵌入式第十九天

7.文件IO可以操作设备文件、进程间通信的文件、普通文件(Linux系统下的一切文件均可以使用文件IO)写出标准IO中"r"、"r+"、"w"、"w+"、"a"、"a+"对应的文件IO的打开形式。O_CREAT 文件不存在创建。O_TRUNC 文件存在清0。O_EXCL 文件存在报错。SEEK_SET 文件开头。SEEK_END 文件结尾。SEEK_SET:从文件开头开始偏移。SEEK_CUR:从当前位置开始偏移。

2024-08-02 00:58:11 1004

原创 day16(链表知识相关补充)

嵌入式 c语言

2024-07-29 23:28:14 117

原创 学习嵌入式第十五天

由于频繁地申请和释放,导致连续的空间分散成一些小的碎片空间,当malloc超过碎片空间时,则无法获得该空间(空间不连续),将这样的空间称为内存碎片。对链表的申明文件,注意:typedef为重定义的意思,将struct node(node自定义名字)改为LinkNode(自定义名字)。图二,为地址传递传指针变量的地址(&p),可以修改p的值(p=hello world)。(2)地址传递,传递p的地址(即&p),改变p的值。(1)值传递,传递a的地址(即p),改变的值即(*p),但p的值不变;

2024-07-29 00:46:15 486

原创 学习嵌入式第十四天

结构体的接收,getchar()用来接受\n;例如第三个图第一个字符串用scanf接收的话,后边的第二行%c之前需要有一个空格,保证不会接收到\n。注:传参传的是结构体指针类型(&d)注:传参传的是结构体类型;占4个字节,空4个字节。2.枚举类型对应的变量的值应该为枚举常量中的值之一。后者若是double类型,前者必须为8的倍数才可以。传参传的是结构体数组的数组名(s)和 len。面的长度为成员变量所占空间大小的整数倍。

2024-07-27 00:09:33 474

原创 学习嵌入式第十三天

使用函数指针p调用函数:先声明一个函数指针,将函数名赋值给函数指针(eg:p=Div;就是让p这个函数指针指向Div这个函数,p(num1,num2)是取p这个函数指针所指向的值,也就是函数本身。pstr是一个局部变量,函数体结束,局部变量会被回收,地址被返回,但其没有值,相当于返回了一个野指针。1.char *、int *、double * 转换为void *时需要强制类型转换。2.void *转换为char *、int *、double *时不需要强制类型转换。指针函数是函数,函数的返回值是指针。

2024-07-25 23:46:06 669

原创 学习嵌入式第十二天

定义一个指针变量p,占8个字节空间, 指向一个int类型5个元素的数组的指针,指向20个字节空间。本程序中传的是&p,即传指针变量p的地址,即二级指针;2.数组指针取*操作:值不变,类型降级成为指向数组第一个元素的指针。定义数组a,占40个字节空间,共有5个元素,每个元素为int*型指针。2.指针数组的数组名是指向数组第一个元素的指针,即指向指针的指针也就是。一维数组中数组的数组名是指向数组第一个元素的指针。指针数组是数组,数组的每个元素是指针。数组指针是指针,指针指向一个数组。主要用于存放字符串数组。

2024-07-24 23:52:47 698

原创 学习嵌入式第十一天

const修饰p和*p, 指针变量p的值不能变,也不能利用*p改变指向空间中的值, 一定要对指针初始化。, 指针变量p的值不能变, 但可以利用指针修改指向空间中的值, 一定要对指针初始化(p不变,*p变)练习:从终端接收一个字符串,编写一个函数统计该字符串中大写、小写、数字和空格的个数。注:数组名str 是指向数组第一个元素的指针常量,常量不能被修改;const修饰*p, 指针变量p可以修改指向的空间,但。数组的数组名是永远指向数组第一个元素的指针。练习:封装一个函数,传入一个字符串,对字符串实现倒置。

2024-07-23 22:50:51 942

原创 学习嵌入式第十天

1.地址:用来区分内存中不同字节的编号(地址是一个整数,但在C语言中通常以十六进制的形式表示)*p:取0x2000开始向下8字节空间中的数据,并按照双精度浮点数来理解。*p:取0x2000开始向下4字节空间中的数据,并按照整形来理解。*p:取0x2000开始向下1字节空间中的数据,并按照字符来理解。实参将值传递给形参,形参是实参的副本,对形参改变不会影响实参的值。值:获得指针指向空间中的值(根据指针的类型来读取)可能指向内存中的任何地方,使用野指针可能会导致不可预测的行为。所有类型的指针变量均占8个字节。

2024-07-22 22:59:53 917

原创 Linux基础操作

嵌入式Linux操作基础

2024-07-11 22:52:32 140

无标题嵌入式Linux操作基础.xmind

无标题嵌入式Linux操作基础.xmind

2024-07-11

空空如也

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

TA关注的人

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