- 博客(11)
- 收藏
- 关注
原创 数据结构之---栈和队列
3. 队列:也是线性表,允许在一端插入,另一端删除,在队尾进行插入,在队头进行删除,也就是先入先出。栈和队列是STL(c++的标准库函数)的数据结构,c++标准库具有多个版本,需要确定STL版本,才能知道对应的栈和队列的实现原理。因为队列分别在头部和尾部进行删除和插入,采用链表时,需要记录头指针 head 和尾指针 tail,以便记录和删除。SGI STL,基于HP STL,被Linux的C++编译器GCC所采用,开放源代码,以这个为例介绍。④ 入栈,需要判断栈是不是满了,是否需要扩容;
2025-10-28 16:36:15
346
原创 TCP通信补充---在socket通信条件下,利用“wireshark”可视化工具,监控查看“三次握手、四次挥手”过程。
① 终端输入“sudo apt install wireshark",等待系统安装即可。如果安装失败,可能由于网络问题,继续重新安装即可。③分别打卡客户机终端、服务器终端、分别启动客户端、服务器(之前已经写好的代码);先启动服务器、再启动客户端。通过查看握手、挥手过程,可以更加直观的体会客户端、服务器连接过程。⑥最上面输入TCP进入,如下所示,此时没有建立连接,所以空白。首先,需要安装“wareshark”软件,⑦客户端先发送、服务器再发送,最后停止。②安装成果,可以看到下面软件标志。
2025-10-16 21:46:04
193
原创 你了解ARM架构与X86架构吗?
A32架构的ARM的地址总线为32位,故CPU可寻址范围为0x00000000~0xffffffff寻址空间为4GB,所有的内部和外部存储或者外设单元都需要通过对应的地址来操作,不同芯片外设的种类数量寻址空间都不一样,为了能让内核更方便的管理不同的芯片设计,ARM内核会先给出预定义的存储映射。② 位带操作:在使用单片机操作P1.0为低电平时,实际上就是往某个寄存器某个比特位中写1或0的过程,但在CPU操作的过程中每一个地址所对应的都是一个8位字节,怎么实现对其中某一位的直接操作,这就需要位带操作。
2025-10-08 17:56:27
541
2
原创 通信校验方式详述
利用串口传输数据时,近距离传输还好,远距离传输由于线路长度影响,可能会使信号在传输过程中出现不可预知的错误,为了达到通信的稳定性,在远距离通信时一般要引入一种校验方式来去除干扰。是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。:也是最简单的校验方式,让传输的数据(包含校验位)中1的个数是奇数或偶数来进行校验。将传输的数据当做一个位数很长的数。验证实现:二进制相加原理,奇数个“1”相加的结果是1,偶数个“1”相加的结果是0。
2025-10-08 16:25:10
411
原创 linux通信之--协议篇
CAN使用差分信号数据传输【差分信号即差模信号,基于两根传输信号线的电压差判断总线电平】,包括显性电平(逻辑0)和隐性电平(逻辑1),显性电平具有优先权。在CAN协议中,当总线出现连续11位隐性电平,表示空闲,由于CAN显性电平具有高优先级特性,所以必须所有CAN主机都连续发送11个隐性电平或者不发送,才会出现。①物理层:定义电信号、引脚、传输介质(如 UART 的 TX/RX 引脚、CAN 的差分信号线),用来实现0/1数据如何转化为物理信号。包括数据帧、遥控帧、错误帧、过载帧、间隔帧。
2025-10-05 11:27:17
1636
1
原创 客户端、服务器--socket网络通信
本文介绍了基于TCP协议的客户端-服务器实时通信实现。首先解释了TCP协议和socket的基本概念,然后详细展示了客户端和服务器端的C语言实现代码。客户端通过socket创建连接,使用pthread创建读写线程分别处理接收和发送消息;服务器端同样建立socket连接并监听客户端请求,采用类似的多线程机制处理通信。最后,通过两个终端分别启动服务器和客户端程序进行通信测试,使用control+d终止连接。
2025-09-27 09:35:14
664
原创 linux操作系统之:进程线程
进程是资源分配的基本单位,是程序执行的实例,在程序运行时创建。线程是程序执行的最小单位,是进程的一个执行流,一个进程包含多个线程,也是处理器调度的基本单位。进程线程地址空间自身独立的地址,每启动进程,就会分配地址空间,并且建立数据表维护代码段、堆栈段和数据段,,操作昂贵。共享进程的数据,使用相同地址空间,创建线程开销小。通信方式通信的方式(IPC)进行,需要处理好同步与互斥的关系。1个进程出问题对其他进程无影响。通信更方便,同一进程下的线程共享全局变量、静态变量等数据;
2025-09-01 17:22:59
1644
原创 linux网络传输之一→→→三次握手、四次挥手?
其中,有几个需要注意的点:客户端的seq和服务端的ack是一对,SYN代表报文。④ SYN_RECEIVED:服务端收到客户端的SYN报文之后,同时进入此状态,表示服务端已经响应了连接请求。总的来说:客户端先发送建立连接的请求,服务端收到请求做出回应,客户端收到回应,确立连接,开始传输。总的来说:任意一端发起挥手请求,另一端进行挥手回应同时发送FIN挥手,最后另一端对FIN进行回应挥手。第三次挥手:服务端继续发送数据,FIN=1,ACK=1,,服务端进入SYN_SENT状态,等待服务端确认。
2025-08-20 11:09:01
987
原创 GPIO核心问题:上拉下拉输入、推挽浮空输出本质
摘要:单片机GPIO端口功能主要分为输入、输出和输入输出三大类。输入模式包括高电平(上拉)、低电平(下拉)和高阻态(浮空);输出模式分为推挽输出(可输出高低电平)和开漏输出(仅能输出低电平)。上拉/下拉电阻用于稳定引脚电平,推挽输出通过晶体管控制提供驱动能力,而开漏输出则适用于总线连接等特殊应用场景。这些模式选择需根据具体电路需求进行配置。
2025-08-18 15:34:08
607
1
原创 代码核心问题之一→→→内存泄漏排查
内存泄漏是指程序未正确释放动态分配的内存(如使用malloc),导致系统资源浪费。C语言中常见于指针变量通过堆内存获取方法(直接赋值或参数传递)获得内存后未调用free()释放。内存泄漏三要素包括局部指针变量、动态内存分配和未在函数返回前释放。排查方法推荐使用Valgrind工具检测泄漏信息,或通过top命令查看高内存占用进程。正确做法是在使用malloc后必须配合free释放内存,避免资源耗尽。
2025-08-15 10:52:42
607
原创 最简单的传输方式:虚拟机ubuntu与宿主window通过共享文件实现文件传输
在Linux开发实践过程中,有时一些文件无法直接在ubuntu系统下获得,这时候要借助“文件共享”功能实现文件互传。
2025-07-27 20:38:23
2229
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅