- 博客(56)
- 收藏
- 关注
原创 C++day6学习(继承、多态)
在这个场景中,我们可以将动物比作是不同的类,而每种动物表演则是类中的函数。而讲解员则是一个基类,他可以根据每种动物的特点和表演,进行相应的介绍。想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介绍。定义一个基类 Animal,其中有一个虛函数perform(),用于在子类中实现不同的表演行为。比喻:动物园的讲解员和动物表演。
2024-06-11 19:31:48
303
原创 2024.5.21面试题
组播只能对加入多播组的主机发送消息,会占用大量网络宽带,组播地址时D类网【224.0.0.0-239.255.255.255】广播播对网络中的每一台主机都发送消息 广播地址=网络号+255 不通过网络宽带。发送的数据包小且发送时间间隔短会把两个或者多个包合并成一个包进行发送。阻塞io:在未读到数据时进程会一直阻塞直到读到数据后才开始运行进程。6、TCP是同步还是异步,谈谈对同步异步的理解。异步:在一个进程未结束时还可以运行其他进程。7、什么是TCP的沾包现象?面向无连接(网络拥塞、缓冲区溢出),
2024-05-21 23:06:12
418
原创 Free day4
它允许任务等待多个事件的状态,并且可以在任何事件被设置时唤醒等待的任务。1.任务通知无需创建,可以直接使用,通过任务控制块来实现(TCB),队列、信号量、互斥量、事件组都需要创建后才能使用。信号量:用于实现任务之间的同步和互斥,二进制信号量:信号量的数值只能是0和1,用于共享资源的访问。3.队列、信号量、互斥量、事件组主要用于多对多之间的通信,任务通知是一对一之间的通信。二进制信号量:信号量的数值只能是0和1,用于共享资源的访问。任务通知:通知任务,用来实现任务之间的同步和互斥。队列:用于任务之间的通信。
2024-04-21 21:46:04
329
原创 Free day3
3、动态创建任务需要消耗的资源会比较多,因为他是在程序运行的时候创建,静态创建任务消耗资源较少,因为他已经提前被创建。2、动态创建任务适用于谁是需要创建任务和随时需要删除任务的场景,静态创建任务适用于任务数量确定的场景.区别:1、动态创建不需要自己提供栈,只需要指定栈的大小即可,静态创建任务需要自己提供栈的大小和栈的空间(数组)。5、阻塞态,运行态,就绪态都可以进入挂起态。4、阻塞态-》就绪态:当等到一件事情后,进入就绪态准备运行。1、进入就绪态:任务被创建的时候就已经进入就绪态。
2024-04-18 21:32:01
456
原创 Free day2
发送函数:HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, const uint8_t *pData, uint16_t Size, uint32_t Timeout)接收函数:HAL_StatusTypeDef HAL_UART_Receive_IT(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size)参数2:接收到数据后保存的地址。参数1:指定要使用的串口。
2024-04-17 21:13:56
222
原创 FreeRTOS day1
在生成的代码中找到并调用HAL_GPIO_Init()函数,将其放在main函数或初始化函数中,以初始化所配置的GPIO引脚。在Pinout配置选项卡中,可以看到STM32微控制器上的所有GPIO引脚,可以自由拖动和更改引脚功能。选择需要配置的GPIO引脚,然后在右侧的"Mode"下拉菜单中选择输入/输出/复用等功能。根据需要选择引脚的输出类型(推挽/开漏)、速度(低速/中等速度/高速)、上拉/下拉等设置。编译代码注意:选择正确的芯片型号和编译器设置,确保所有需要的头文件都正确包含,在左上角输入芯片型号;
2024-04-16 19:34:03
294
原创 QT学习day3
如果账号和密码不匹配,弹出错误对话框,给出信息”账号和密码不匹配,是否重新登录“,并提供两个按钮Yes|No,用户点击Yes后,清除密码框中的内容,继续让用户进行登录,如果用户点击No按钮,则直接关闭登录界面。“,并给出两个按钮Yes|No,用户点击Yes后,关闭登录界面,用户点击No后,关闭对话框,继续执行登录功能。完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面。要求:基于属性版实现对话框的弹出。
2024-04-09 21:29:51
221
原创 C++学习
2、写出下列类的,构造函数(有参、无参),析构函数,拷贝构造函数和拷贝赋值函数。1、对菱形继承给出的代码中每一个类,写一个有参构造函数。
2024-04-01 21:02:18
714
原创 C++学习
class testint a;int b;public:test temp;int main()test s1;test s3;s3=s1+s2;s3.show();test s4;return 0;
2024-03-28 20:58:23
168
原创 C++学习
cout << "myString的拷贝构造函数" << endl;cout << "准备释放空间:" << &str << endl;cout << "myString的无参构造" << endl;cout << "myString的有参构造" << endl;cout << "字符串为空" << endl;
2024-03-28 20:26:04
277
原创 C++引用学习day2
展示函数输出该矩形的周长和面积:void show()设置长度:void set_l(int l)设置宽度:void set_w(int w)获取长度:int get_l();获取宽度:int get_w();
2024-03-26 21:29:39
374
原创 C++学习day1
定义自己的命名空间,其中有string类型的变量,再定义两个函数,一个函数完成字符串的输入,一个函数完成求字符串长度,再定义一个全局函数完成对该字符串的反转。
2024-03-25 21:15:42
352
原创 UDP建立聊天群
if (strcmp(msg.txt, "退出群聊") == 0)char code;// 操作码 'L' 登录 'C' 群聊 'Q' 退出。// 操作码 'L' 登录 'C' 群聊 'Q' 退出。strcpy(msg.txt, "退出群聊");// 是自己就不发送并且将自己的客户端信息在链表内删除。strcpy(msg.txt, "加入群聊");// 判断链表客户端信息是否是自己。// 判断链表客户端信息是否是自己。// 将登录的客户端信息插入保存在链表。// 创建客户端网络信息结构体。
2024-03-24 21:52:58
957
原创 数据表练习
原理:将多个阻塞任务的文件描述符统一放到一个检查容器中,然后用一个阻塞函数进行管理,如果容器中有一个或这多个文件描述符对应的事件产生,就会接触阻塞,进而去执行相应的函数。目的:在有操作系统时,可以用多线程和进程完成任务并发执行,没有操作系统的情况下可以使用IO多路复用技术来进行任务并发。子进程没有退出,但父进程已经结束,孤儿进程会被一号进程收养。消息列队:有同步机制,一定是先写再读,如果是先读就会阻塞。文件IO由linux内核提供,标准 IO由C语言库提供。指针未初始化、指针释放后未置空、指针超出作用域。
2024-03-21 20:40:01
184
原创 【无标题】
1> 创建一个工人信息库,包含工号(主键)、姓名、年龄、薪资。4> 展示出工资在10000到20000之间的所有工人信息。2> 添加三条工人信息(可以完整信息,也可以非完整信息)3> 修改某一个工人的薪资(确定的一个)6> 工厂倒闭,删除整个工人信息库。5> 删除掉指定姓名工人的信息。
2024-03-20 20:37:06
354
原创 IO多路复用、域套接字
互斥:多个线程操作拥有临界资源的临界区的时候,一旦有一个线程正在操作的时候,其他线程都不能运行这段拥有临界资源的临界区,直到第一个线程运行结束, 剩下的其他线程再去抢夺运行权,保护临界资源。printf("[%s %d]:发来请求链接\n",inet_ntoa(cin.sin_addr),ntohs(cin.sin_port));将多个阻塞任务的文件描述符,统一放入到一个检测容器中,然后用一个阻塞函数进行管理,如果检测容器中有一个或多个文件描述符对应的事件产生,就会解除阻塞,进而去执行相应的函数。
2024-03-20 00:24:29
1034
原创 多点通信 、域套接字
printf("收到服务器消息为:%s\n",wbuf);printf("收到消息为:%s\n",rbuf);printf("收到消息为:%s\n",rbuf);//4.1定义地址信息结构体,用于接受客户地址信息结构体。printf("发送成功\n");printf("发送成功\n");printf("请输入>>>");printf("发送成功\n");printf("成功加入\n");printf("链接成功\n");//1、创建用于链接的套接字文件描述符。//2、绑定套接字文件。
2024-03-18 21:09:15
1079
原创 tcpudp面试题
3、在udp中可以多次使用connect函数与其他客户端建立连接,但是在TCP中只能进行一次连接当UDP中使用了connect与某个特定的客户端建立连接后,就可以正常使用read/write、send/recv函数完成通信。2.定义一个通信结构体,转换主机端口号和ip地址,然后使用bind函数绑定端口号、IP(这边是写要连服务器的端口号和ip地址,客户端的端口号和ip地址可以不写,系统会自动生存)5、tcp使用场景:对传输质量比较高的以及传输大量数据的通信,在需要可靠通信的场合使用tcp。
2024-03-17 21:51:16
610
原创 io 虚拟终端
虚拟终端while(1)if(ret>0)32;34;wait(0);int i=0;do{elsebreak;}while(1);elseelsereturn 0;
2024-03-07 09:00:24
725
原创 【无标题】
printf("申请失败\n");printf("申请失败\n");printf("入参为空\n");printf("为空\n");printf("为空\n");
2024-02-29 23:25:49
1107
原创 链队、树作业
1、链队的实现(可以只当作链表实现,或者一个链表一个包含指向队头和队尾的结构体)看上课画的图。printf("出队的值为:%d\n",Q->front->data);printf("空间申请失败\n");printf("空间申请失败\n");printf("空间申请失败\n");printf("入参为空\n");printf("队列为空\n");printf("入参为空\n");printf("队列为空\n");printf("入参为空\n");printf("为空\n");2、二叉树的中序和后序遍历。
2024-02-28 18:59:58
504
原创 shell脚本
终端输入学生成绩,判断等级100-90A,90-80B,80-70C,70-60D,60以下不及格。(把输入不合理也考虑进去)2、终端输入年月,需要考虑闰平年,判断该月有多少天(2月闰年29天,平年28天)5、使用循环求家目录下目录文件和普通文件的个数。3、使用循环求100-1000内的水仙花数。4、求稀疏数组中元素的和(下标不连续)6、用shell写冒泡排序。
2024-02-17 17:19:27
449
1
原创 寒假作业C高级指令
tar -cv(压缩参数)f 要生成的文件.tar.xz/gz/bz2 要打包的文件 (打包压缩)tar -c(v)f 要生成的文件.tar 要打包的文件····(多个文件中间以空格作为分隔)当压缩工具参数和生成的文件后缀不一致时,只会完成打包操作,不会压缩(可以直接使用-xf拆包)tail 文件名 默认回显文件的后10行 tail -n 文件名 回显文件的后n行。head 文件名 默认回显文件的前十行 head -n 文件名 回显文件的前n行。tar -x(v)f 要拆包的文件。
2024-02-15 12:43:33
272
1
原创 C高级chomd、chgrp、chown指令
sudo chown root:ubuntu 1 将文件1的所属用户改为root,所属组用户改为ubuntu。sudo chown root: 1 将文件1的所属用户和所属组用户都改为root。sudo chown :root 1 将文件1的所属组用户改为root。要求:修改的目标组已经存在, /etc/group中包含所有已经存在的组。chgrp :只能修改文件的所属组。用法:chgrp 新的组 文件名。chown 新的用户名 文件名。
2024-02-14 17:29:54
373
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人