- 博客(61)
- 收藏
- 关注
原创 day2网络编程项目的框架
使用链表记录保存这些信息。数据包接受端:接受到数据后,分成两次读取一个数据包,第一次读取首先读取一个数据包头长度,然后根据数据包头中的数据长度读取整个数据包。用户在加入聊天室前,需要先进行用户登录或注册操作,并将注册的用户信息:用户ID,用户账号,用户密码。如果源文件发生修改,Makefile会检查文件的时间戳,如果有文件时间戳更新(该文件就会重新生成),只需要重新编译发生修改的源文件即可,节省了编译时间。协议版本:发送端填充自己的该数据包的版本信息,服务端接受数据包后,查看该版本是否是自己能识别的版本。
2024-10-03 21:44:09 966
原创 C++day6作业
在这个场景中,我们可以将动物比作是不同的类,而每种动物表演则是类中的函数。而讲解员则是一个基类,他可以根据每种动物的特点和表演,进行相应的介绍。想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介绍。定义一个基类 Animal,其中有一个虛函数perform(),用于在子类中实现不同的表演行为。比喻:动物园的讲解员和动物表演。
2024-08-12 22:07:00 188
原创 C++作业day5
(5)另外, RMB 类还包含一个静态整型成员变量 count,用于记录当前已创建的 RMB 对象的数量。每当创建一个新的 RMB 对象时,count 应该自增 1;(1)重载算术运算符 + 和 -,使得可以对两个 RMB 对象进行加法和减法运算,并返回一个新的 RMB 对象作为结果。(2)重载关系运算符 >,判断一个 RMB 对象是否大于另一个 RMB 对象,并返回 true 或 false。(3)重载前置减减运算符 --,使得每次调用时 RMB 对象的 yuan、jiao 和 fen 分别减 1。
2024-08-11 21:22:57 270
原创 进程之间的通信
现在有2个.c 文件 1.c负责输入2个非0数,a 和 b 2.c负责找出 a 到 b 之间的所有质数 要求使用无名管道实现。创建一对父子 父进程负责输入一串字符串 子进程负责判断这串字符串是否为回文字符串。
2024-07-24 08:57:54 167
原创 线程的中互斥锁和条件变量的运用
第一题:使用互斥锁或者信号量,实现一个简单的生产者消费者模型 一个线程每秒生产3个苹果,另一个线程每秒消费8个苹果。2个消费者线程,1号消费者线程每秒消费2个苹果,2号消费者线程,每秒消费3个橘子。实现现象:将终端输入的字符转换为其对应的ASCII码值返回。2个生产者线程,一个每秒放1个苹果,另一个每秒2个橘子。有一个盘子,盘子里面最多放3个苹果,5个橘子。放了苹果就不能放橘子,放了橘子就不能放苹果。
2024-07-22 21:54:35 214
原创 五车道进隧道(五线程双互斥锁)
有2条隧道,一条快速隧道,一条普通隧道。有5列火车,3列复兴号,2列绿皮扭扭车 要求,复兴号2条隧道都能走,绿皮车只能走普通隧道 模拟火车过隧道的场景。
2024-07-20 14:46:58 160
原创 多进程编程
其实子进程并不是在fork函数结束后才进行的,而是在fork函数内部,fork返回之前就已经产生,故一个fork函数会有两个返回值,父进程返回一个,子进程返回一个。所有在后台运行的进程,都是批量处理进程,很明显后台运行的进程就无法用终端控制,故这些进程无法与用户进行交互,那么就可以找一个专门的时间节点,专门处理这些进程。idel进程:0号进程会反复循环运行来尝试启动一号进程,当一号进程运行时,0号进程就会停止运行,反之如果没有进程运行就会启动0号进程。此时传入的是一个进程会话组id的相反数。
2024-07-18 22:33:59 1653
原创 文件IO(Ubuntu)
注释说的很明确,文件类型和属性,都在st_mode里面放着。什么叫做掩码:和文件权限相关一个数据 顾名思义:就是需要遮掩掉某些值的一个码 其实,我们在创建文件时候,我们所指定的权限值,并不是这个文件的最终权限值,而是需要剔除掉掩码当中所设定的哪些权限后,才是文件的最终权限值。即fopen的第二个参数如果写“w”,那么打开文件为只写打开,如果文件不存在则创建文件,如果文件存在则清空文件后打开。filearr这个文件指针数组中,默认的存放了3个文件的地址,终端输入文件地址,终端输出文件地址,终端错误文件地址。
2024-07-18 22:14:43 808
原创 标准IO(Ubuntu)
r:以只读的形式打开文件,如果文件不存在,就会打开失败,fopen就会返回NULL,文件打开成功后,光标位于文件的最开头(即第一个数据的前面)从stream指向的文件中,读取最多size - 1个字节的数据,然后将其写入s所指向的字符数组中,所有数据写入完成后,会再次写入一个结束符。w:以只写的形式打开文件,若文件不存在,则创建后打开,若文件存在,则清空文件打开(清空操作),文件打开后,光标位于文件的开头。前面学习的fprintf,fputc,fputs无论什么数据,都会以字符串的形式传入文件。
2024-07-17 22:59:33 717
原创 单向链表的数据存储(申请堆空间)
0.排序 1.回显 2.头插 3.位插 4.尾插 5.尾删 6.头删。7.位删 8.查找 (按值或按位查找) 9.修改 (按值或按位修改) 10.退出。
2024-07-08 20:30:52 577
原创 学生管理系统(通过顺序表,获取连续堆区空间实现)
9】查找(按学生的学号查找)、4】往顺序表里增加学生信息、功能函数头文件stu.h。6】任意位置插入学生信息。7】任意位置删除学生信息。10】删除重复学生ID。
2024-07-07 19:49:17 540
原创 数据结构(一)C语言补
操作系统的对齐量:成员本身的大小 (操作系统的对齐量:32位默认4Byte对齐,64位默认8Byte对齐)将变量或者数据作为函数的实参传递给形参,形参的改变,一定不影响实参,因为只是将实参的数据复制一份给形参。结构体的每一个成员变量的存储位置(相对于结构体中第一个成员的偏移量),必须对齐在其整数倍上。若共用体中有构造类型的成员,那么共用体的大小需要满足,是共用体中最大基本类型成员的整数倍。将变量或者数据的地址作为函数的实参传递给形参,形参的改变,可能会影响实参,具体看代码。
2024-07-04 17:33:53 882
原创 学生管理系统
1.录入你要增加的几个学生,之后输出所有的学生信息。2.删除你要删除的第几个学生,并打印所有的学生信息。3.修改你要修改的第几个学生,并打印所有的学生信息。4.查找你要查找的第几个学生,并打印该的学生信息。find.c文件代码。find.h文件代码。
2024-07-02 20:03:27 602
原创 Makefile及gdb的使用方法介绍
在makefile中有些目标并不需要生成文件,也没有文件依赖,往往把这样的目标定义为伪目标,为了防止因为同名文件而不能执行目标的情况发生。%匹配相同的部分,有一个fun.o就能匹配到一个fun.c,有一个main.o就能匹配到一个main.c。%:是一种(字符串的)模式匹配,在Makefile中的作用是,有一个.o,就匹配一个同名的.c。从上一条规则中,获取到需要两个.o文件,fun.o和main.o,使用%进行模式匹配,Makefile会检查文件的时间戳,如果有文件时间戳更新(改文件就会重新生成。
2024-06-27 17:03:47 2104
原创 分文件编译
ifndef __文件名大写_H__ #define __文件名大写_H__ 功能函数的声明 全局函数的声明 全局宏的声明 #endif。由于头文件由if开始,故需要#endif结束。分文件编译代码需要将多个.c文件联合编译。防止主文件过大,不好修改,简化编译流程。#include "函数名.h" 函数。main函数,所有函数的调用。防止函数重复包含的机制。所有文件需要提前导入。
2024-06-26 21:19:37 216
原创 shell (三)shell脚本
expr中使用某些运算符时,需要转义|、>、<、.、······ (不需要记转义字符,简单的指令在运行前,去终端里运行一下指令,没结果就加上转义字符)······ 常量n) 语句;在select···in语句中,嵌套case···in语句, 可以根据用户的不同选择,使用case···in完成不同的处理。((表达式1,表达式2,表达式3,·······)) 每一个表达式都会执行,获取最右侧一个表达式的结果。变量名=$[表达式1,表达式2,表达式3,·······]只获取最右侧表达式的结果。
2024-06-26 21:12:00 527
原创 Shell (二)shell指令
因为Linunx下,万物皆文件,U盘连接进Linux后被识别为一个块设备文件,无法像window下一样打开并写入内容,需要将U盘挂载在具体的目录下,后续对目录的操作,即为对U盘的操作。拷贝目录文件的软链接可以直接拷贝,如果需要拷贝普通文件的软链接文件,需要加上-d保证链接。如果源文件被删除,软链接文件也会失效,再创建一个同名的源文件,软链接文件会重新生效。创建新用户时,会默认创建一个和新用户同名的组用户,并将新用户添加到该组中。前提:更改文件所属用户和文件所属组的前提,保证更改后的目标用户存在。
2024-06-25 20:21:50 752
原创 Shell (一)Ubuntu的网络配置及软件安装
清华源:https://mirror.tuna.tsinghua.edu.cn/help/ubuntu-ports/该指令自动读取/ect/apt/sources.list的内容,并更新到软件列表。在线安装会检查软件依赖,如果需要其他文件的支持,在联网状态下,可以自动下载并安装。下载并安装软件时会自动安装软件的man手册(软件安装包中包含软件的man手册)格式:sudo spt-get remove --purge 软件名。菜单栏->虚拟机->设置->网络适配器->桥接模式。
2024-06-25 20:20:15 783
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人