- 博客(68)
- 收藏
- 关注
原创 MCU、ARM体系结构,单片机基础,单片机操作
BL (Branch with Link):这个指令不仅跳转到指定的地址,还将当前指令的下一个指令的地址(即返回地址)保存到链接寄存器(LR,通常是R14)中。机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植。指令流水线机制的引入确实能够大大的提升指令执行的速度,但在实际执行程序的过程中很多情况下流水线时是无法形成的,比如芯片刚上电的前两个周期、执行跳转指令后的两个周期等。
2024-12-07 08:59:34
1526
原创 QT1.简介
在C语言与C++中,无论是printf还是cout输出的内容都不群分前后台,但是Qt中输出的内容是区分前台后台的,前台指的是图形用户界面,用户可以直接通过软件界面看到的内容。Qt是一个基于C++的图形用户界面(GUI)开发框架,但是Qt不仅仅能开发界面,还包含了很多的传统编程技术:多线程、数据库、图像处理、网络通信、文件IO。此文件是Qt根据当前计算机的开发环境自动生成的文件,每个计算机几乎不通用此文件,因此在提交代码的时候,先删除此文件。在项目管理界面,直接点击完成,可以看到项目中包含的文件。
2024-12-04 09:26:03
513
原创 c++ 异常以及其知识点
1. 异常的概念异常是程序在运行期间产生的问题,而非编译期间产生的问题,因此程序的语法没有问题,但是逻辑出现了问题。异常本质上提供的是一种程序控制权转移的方式,程序一旦出现异常没有经过正确的处理,就会造成程序运行的崩溃。处理异常的方式有两种:抛出异常 throw捕获异常 try-catch2. throw 抛出异常throw语句抛出的是通常是一个对象,对象的类型就是异常的类型,throw可以把这个对象抛出到调用的上一级。
2024-10-09 18:48:52
708
原创 继承与多态
在公有继承中,基类的所有成员均可以被派生类继承,但是基类的私有成员无法被派生类直接访问,基类的保护成员和公有成员继承到派生类中作为派生类的保护成员和公有成员(权限不变)。在保护继承中,基类的所有成员均可以被派生类继承,但是基类的私有成员无法被派生类直接访问,基类的保护成员和公有成员继承到派生类中作为派生类的保护成员。在私有继承中,基类的所有成员均可以被派生类继承,但是基类的私有成员无法被派生类直接访问,基类的保护成员和公有成员继承到派生类中作为派生类的私有成员。派生类是基类的具象化,基类是派生类的抽象化。
2024-10-08 18:35:07
877
原创 Day3 (作用域限定符,this关键字,static关键字,const关键字)
5. 作用域限定符 ::5.1 名字空间掌握)名字空间是一种代码的层级划分。52。
2024-09-27 17:04:58
920
原创 Day2,c++(函数,类和对象,封装,构造函数,析构函数)
5. 函数5.1 内联函数 inline(掌握)在C++中使用内联函数主要是为了取代C语言中宏定义的函数,内联函数在编译时,可以直接展开函数体到主函数中,因此提升了程序执行的效率,消除了普通的额外开销。建议把代码长度较小(1-5行且不能包含复杂的控制语句)且频繁使用的函数定义为内联函数,内联函数只是给编译器的建议,编译器并不一定采纳。只要在函数定义处使用inline关键字修饰函数,就可以把函数设置为内联函数。需要注意的是,后面要学习的成员函数默认都定义为内联函数。
2024-09-26 18:39:51
1038
原创 Day1 c++(发展历史,特点,面向对象核心术语,开发环境,新建项目,引用,窄化,输入,字符串,函数)
1. C++发展历史(了解)1983年,贝尔实验室(Bell Labs)的Bjarne Stroustrup发明了C++。C++在C语言的基础上进行了扩充和完善,是一种面向对象程序设计(OOP)语言。Stroustrup说:“这个名字象征着源自于C语言变化的自然演进”。还处于发展完善阶段时被称为“new C”,之后被称为“C with Class”。C++被视为C语言的上层结构,1983年Rick Mascitti建议使用C++这个名字,就是源于C语言中的“++”操作符(变量自增)。
2024-09-25 19:59:55
1372
原创 网络高级(modbus起源,modbusTCP的协议)
Modbus由Modicon公司于1979年开发,是一种工业现场总线协议标准。Modbus通信协议具有多个变种,其中有支持串口,以太网多个版本,其中最著名的是Modbus RTU、Modbus ASCII和Modbus TCP三种其中Modbus TCP是在施耐德收购Modicon后1997年发布的。2.分类运行在串口是上的协议,采用二进制表现形式以及紧凑的数据结构,通信效率较高,应用比较广泛。
2024-09-18 19:18:31
901
原创 Day7网络编程(网络协议头+UDP+SQL数据库)
思考:1.应用层调用send后,是如何把数据发送到另一台机器的某个进程的2.接收的设备收到数据包后,如何处理给应用层思考:在协议栈封装的过程中,这些头部信息具体有什么?
2024-09-13 20:22:59
1162
1
原创 Day6网络编程 setsockopt+超时检测+广播组播+本地套接字
set设置 sock:套接字 option:属性功能:获得/设置套接字属性参数:sockfd:套接字描述符level:协议层optname:选项名optval:选项值optlen:选项值大小返回值:成功0,失败-1;
2024-09-11 19:14:27
1198
原创 Day5网络编程:epoll+服务器模型+ftp
多进程;优点:服务器更加稳定,父子进程资源相互独立,安全性高缺点:需要开辟多个进程,大量的消耗资源,系统开销大多线程:优点:相对于多进程,资源开销小,多个线程共享同一个进程的资源缺点:需要开辟多个线程,安全性比较差io多路复用优点:节约资源,系统开销小,性能高缺点:代码复杂度高。
2024-09-10 18:50:38
1187
原创 网编Day4:select +poll linux io模型:io多路复用,网络编程
假设情景假设妈妈有三个孩子,分别不同的房间里睡觉,需要及时获知每个孩子是否醒了,如何做?一直在一个房间呆着:看不到其他两个孩子每个房间不停的看:可以但是超级无敌累听孩子哭不哭:不可行,因为只有一个信号,分辨不出来哪个孩子哭妈妈在客厅呆着睡觉,孩子醒了之后会自己出来告诉妈妈醒了:既可以休息,也可以及时的获取还是是否醒了应用程序中同时处理多路输入输出流,若采用阻塞模式,得不到预期的目的;●若采用非阻塞模式,对多个输入进行轮询,但又太浪费CPU时间;●。
2024-09-09 20:13:35
969
原创 1.使用poll实现client的收发功能 2.输入键盘事件,响应键盘事件,输入鼠标事件,响应鼠标事件(两路IO)poll
未注释版本加注释版本。
2024-09-09 19:37:11
615
原创 网络编程(服务器聊天程序)
实现一个简单的 RESTful API,支持基本的 CRUD 操作(创建、读取、更新、删除)。例如,实现一个简单的任务管理系统,能够添加、获取、更新和删除任务。Python(使用 Flask 或 Django)、JavaScript(使用 Express.js)、Java(使用 Spring Boot)。服务器应能够处理多个 WebSocket 连接,并将从一个客户端收到的消息广播到所有连接的客户端。服务器应该能够处理多个客户端的连接,并能够将从一个客户端收到的消息广播到所有连接的客户端。
2024-09-06 23:14:58
517
原创 TCP(传输控制协议)是一种面向连接的、可靠的传输层协议,它为网络中的应用程序提供了数据传输的保证。以下是关于TCP的详细信息,包括其工作原理、特性和用例。
【代码】TCP(传输控制协议)是一种面向连接的、可靠的传输层协议,它为网络中的应用程序提供了数据传输的保证。以下是关于TCP的详细信息,包括其工作原理、特性和用例。
2024-09-06 19:09:10
1347
原创 【无标题】
客户端连接成功后进入循环发送状态,从终端获取用户输入并发送,当用户输入“quit”字符后退出循环并关闭客户端。客户端输入quit退出后,服务器不退出,等待下一个客户端连接。循环服务器:一个服务器可以连接多个客户端,但是不能同时连接。增加来电显示功能:显示客户端连入的地址。自动获取本机地址0.0.0.0。地址和端口都通过参数传入。
2024-09-05 19:05:25
237
原创 网络模型详解
OSI模型: 理论性的七层网络模型,详细描述了网络通信的各个方面。TCP/IP模型: 实际使用的四层网络模型,更简化和实际。DOS攻击: 使目标系统或网络无法提供服务的攻击。TCP: 可靠的传输层协议,保证数据完整性。UDP: 非可靠的传输层协议,适用于需要速度而不要求完整性的场景。
2024-09-05 13:51:01
1915
原创 网络编程(1)
子网掩码是一个32位的整数,作用是将一个ip划分为网络地址和主机地址子网掩码长度是和ip地址长度完全一样网络号全为1,主机号全为0一个编程接口是一种特殊的文件描述符是一种通信机制,并不仅限于TCP/IP面向连接(Transmission Control Protocol - TCP/IP)无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX)
2024-09-05 09:22:38
564
原创 网络编程(NAT(NAT技术出现的背景,私有地址,NAT的基本原理,总结))
NAT技术缓解了IPv4地址不足的问题,使得多个内部设备可以共享公网IP,提升了网络的可扩展性和安全性。私有地址用于内部网络,NAT通过地址和端口的转换实现内外网络的通信。
2024-09-03 20:30:27
265
原创 网络编程(ip地址(基本概念,ip地址划分,特殊地址))
IP地址是网络通信的基础,涉及到地址的定义、分类及其特殊用途。IPv4和IPv6各有特点,IPv4的地址划分更为直观,而IPv6提供了更大的地址空间和灵活的地址管理方式。特殊地址则在特定情况下,如测试和自动配置中,发挥着重要作用。:为了解决IPv4地址枯竭问题,IPv6采用128位地址,表示为八组十六进制数,每组之间用冒号分隔,如。:最常用的IP地址格式,采用32位地址,表示为四个十进制数,每个数之间用点分隔,如。IPv6中,地址通常以前缀长度表示网络部分的位数(例如,IPv4地址空间约为42亿个地址。
2024-09-03 20:21:48
890
原创 网络编程(设备通信的要素)
定义数据传输规则和格式。例如,TCP/IP、HTTP、UDP等协议。:标识网络上的特定应用程序或服务。每个服务通常绑定到一个唯一的端口号。:用于实现网络通信的编程接口,通常由IP地址和端口号组成。:确定数据如何编码和解码,以便于通信双方能够正确解析数据。:标识网络上每个设备的唯一地址,分为IPv4和IPv6。:处理网络通信中的异常情况,如连接丢失、数据包丢失等。这些要素共同工作,确保网络设备之间能够可靠地交换数据。
2024-09-03 20:10:22
313
原创 网络编程(广域网和局域网)
*局域网(LAN)和广域网(WAN)**在网络编程中有着不同的应用场景和挑战。局域网适用于需要高速度和低延迟的小范围应用,而广域网则覆盖更广泛的区域,需要处理更高的延迟和带宽限制。了解这两种网络的特点,可以帮助设计和优化网络应用程序,确保它们在不同网络环境中的性能和可靠性。
2024-09-03 20:08:36
579
原创 网络编程(1.网编发展史)
网络编程语言的发展经历了从低级到高级、从静态到动态、从单线程到多线程的演变。每一代编程语言都带来了新的功能和改进,推动了网络技术的发展。随着技术的进步和需求的变化,我们可以期待未来会有更多创新的编程语言和工具出现。
2024-09-03 20:06:11
665
原创 进程 process 2.进程函数
1)子进程几乎拷贝了父进程的全部内容。包括代码,数据,系统数据段中的pc值,栈中的数据,父进程中打开的文件等,但他们的pid,ppid是不同的。(4)若子进程先结束,父进程如果没有及时回收资源,子进程变成僵尸进程(我们一定要避免僵尸进程的产生)(2)父子进程有独立的地址空间,互不影响;当在相应的进程中改变全局变量,静态变量,都互不影响。(3)若是父进程先结束,子进程就会变成孤儿进程,从而被init进程所收养,子进程变成后台进程。在子进程中,返回值为0。成功:在父进程中,返回子进程的进程号>0。
2024-08-31 17:32:55
277
原创 进程process
进程创建后,进程进入就绪态,当cpu调度到此进程时进入运行态,当时间片用完时,此进程会进入就绪态,如果此进程正在执行一些io操作(阻塞操作)会进入阻塞态,完成io操作(阻塞结束)后又可以进入就绪状态,等待cpu的调度,当进程运行结束后进入结束态。非剥夺式(非抢占式)优先级调度算法。(2)cpu调度进程时会给进程分配时间片(几毫秒--十几毫秒),当时间片用完之后,cpu再进行其他进程的调度,实现进程的轮转,从而实现多任务的操作。堆栈段:存放的是函数的返回地址,函数的参数以及程序中的局部变量(类比内存的栈区)
2024-08-31 16:01:15
543
原创 库Lib(库的定义,分类静态库动态库的制作,总结)
库:把一些常用的函数的目标文件打包在一起,提供相应的函数接口,便于程序员使用。头文件以.h结尾,包含: 其他头文件引用,结构体、共用体和枚举的定义,宏定义,重定义,函数的声明,外部引用,条件编译。优点:程序运行时不再需要该静态库,运行的时候不需要加载库,运行的速度更加快,可移植性比较好。头文件:函数声明,结构体等类型的定义,头文件,宏定义,其他头文件等等。动态库:运行阶段加载代码,体积小,移植性差,升级简单,以.so结尾。静态库:编译阶段,体积大,移植性好,升级麻烦,以.a结尾。
2024-08-31 14:46:21
885
原创 目录操作DIR*
返回值为结构体,该结构体成员为描述该目录下的文件信息。围绕目录流进行操作:DIR*参数:要打开的目录的路径。参数,dirp(目录流)返回值:成功:目录流。
2024-08-31 13:58:58
242
原创 获取文件属性
lstat函数类似于stat,但是当命名的文件是一个符号连接时,lstat返回该符号连接的有关信息,而不是由该符号连接引用的文件的信息。判断一个文件是不是普通文件,首先通过掩码S_IFMT把其他无关部分置零,再与表示普通文件的数值进行比较,从而判断这个是一个普通文件。fstat函数获得已在描述符filedes上打开的文件的有关信息,也就是参数是文件描述符,其他的和stat相同。0-8bit位每一位表示一个权限,所以只需要把这一位位与出来就可以判断是否有这个权限,1说明有,0说明没有。
2024-08-31 13:52:41
564
原创 文件io(函数接口)
练习,向文件中第10个位置后面写一个字符,往后移动20个位置,往后移动20个位置处,写一行字符串hello进去,求此时文件的长度。思路,循环读,读到就累加行数,并且打印到终端,判断是否达到最后一行,达到就退出。例:head -3 test.c -> ./a.out -3 test.c。思考:文件io和标准io的打开方式的对应关系。练习:实现head-n文件名命令的功能。argv[1]+1: "3" 的首地址。argv[1]: "-3" 的首地址。read -> 0末尾 -1失败。标准io和文件io的总结。
2024-08-31 11:56:46
360
原创 文件io(什么是文件io)
问题:一个进程的文件描述符最大到几?最多能打开多少个文件描述符?最多能打开多少个文件?文件io又被叫做系统io,是系统调用,是操作系统提供的接口函数。(3)文件io默认打开3个文件描述符,0,1,2。问题:打开三个文件, 描述符分别是:3 4 5。关闭4以后,重新打开这个文件,描述符是几?(4)除了目录以外的任意类型的文件。4关闭了,优先分配低的,所以还是4。答: 一个进程的文件描述符最大到。(2)围绕文件描述符进行操作。读写操作read和write。个文件描述符, 最多能打开。(5)可移植性比较差。
2024-08-31 11:20:54
292
原创 io进程,标准io(函数接口)
库函数的缓冲区对于库函数,如果标准输出连到终端设备(直接输出到屏幕),则它是行缓冲的(遇到回车换行符或者是缓冲区满了才输出);的方式打开文件时,写只能在末尾进行追加,定位操作是无法改变写的位置,但是可以改变读的位置。:读和追加,文件不存在创建,存在追加,读文件流定位到文件开头,写文件流定位到文件末尾。:可读可写,当文件不存在时报错,文件流定位到文件开头。r:只读,当文件不存在时报错,文件流定位到文件开头。文件不存在创建,存在追加,文件流定位到文件末尾。:可读可写,文件不存在创建,存在则清空。
2024-08-31 10:27:35
1283
原创 标准io(什么是标准io,缓存区)
综上:当我们打印数据时,在终端,并不是将数据直接发送到标准输出设备,也就是并直接发送给显示器,而是将要打印的数据先存放到缓存区,当缓存区满了的时候,或者遇到\n,或者程序结束的时候,或者我们手动刷新缓存区,缓存区才会把数据传输到标准输出设备中,也就是显示器中进行输出,但是全缓存不能用\n刷新缓存。(3)标准io默认打开3个流,stdin,stdout,stderr。例如:从硬盘中读取1kb文件,每次只能读1b,循环读取1024次。(3)不缓存,也就是没有缓存区,标准错误。(1)全缓存:和文件相关。
2024-08-31 09:21:08
802
1
原创 17.什么是孤儿进程? 什么是僵尸进程?
若子进程先结束,父进程如果没有及时回收资源,子进程变成。,被init进程收养,子进程变成后台进程。若父进程先结束,子进程成为。(要避免僵尸进程产生)
2024-08-28 19:28:25
113
原创 获取进程号,父子进程分别打印这两个进程的进程号
int main()pid_t pid;pid=fork();if(pid<0)return -1;elsewhile(1);return 0;
2024-08-28 19:26:56
187
原创 结束进程2
参数:status是一个整形的参数,可以利用这个参数传递进程结束时候的状态。其他数值表示出现了错误,进程非正常结束。功能:结束进程,不刷新缓存。
2024-08-28 19:13:02
131
原创 回收资源2
当使用选项WHOHANG并且没有子进程结束时:0。WNOHANG非阻塞。pid=-1任意子进程。参数:pid>0 指定子进程进程号。返回值:正常:结束的子进程的进程号。status:子进程退出的状态。options:0阻塞。功能:回收子进程资源。
2024-08-28 18:48:24
113
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人