自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Qt】常见控件 —— QWidget(下)

之前推荐使用堆上创建对象 是因为要确保当前控件的生命周期是足够的 以及 要通过 Qt对象树 来释放对象。Qt在编译项目时 就会根据qrc中描述的图片信息 找到图片内容 并且提取出图片的二进制数据。给定相对路径 ./th.jpg -> 在基准目录(D:/)直接找 th.jpg。(为了方便 Qt代码中访问到这个图片 Qt就自己抽象出了 虚拟的目录)如果对应的路径写错 就导致找不到该图片 从而继续使用系统自带的图片。这个目录没有在你的电脑上真实存在 是Qt自己抽象出来的。

2024-08-24 17:55:27 492

原创 【Qt】常见控件 —— QWidget(上)

Qt 中 的 各种控件 都继承自 QWidget类在 Qt designer 右侧 就显示出 QWidget的各种属性并且也可以直接进行编辑。

2024-08-23 21:22:06 429

原创 【Qt】信号和槽

connect的第四个参数 作为 自定义的槽函数即自己定义在Widget窗口下如何操作槽 就是一个 普通的成员函数即自定义槽函数 和 自定义 普通成员函数 相同所以 在widget.h中 添加 共有的成员函数在widget.cpp中 对 自定义槽函数进行定义在Widget窗口中 若按下按钮 显示 按钮已经按下运行程序 按下按钮后 由Widget变为按钮已经按下打开ui界面 拖动(普通按钮) 到右侧框中并修改 为 按钮。

2024-08-23 12:33:49 1621

原创 【Qt】 编辑框 | 按钮 | 坐标系 的 初步了解

this指向的父对象 是 widget 对象 (与前面QLabel用法类似)就可以访问到 form file (ui 文件) 中创建的控件pushButton。若当前按钮为 hello world 则切换为 hello qt。若当前按钮为 hello qt 则切换为 hello world。本这个属性的值 要求在界面上是唯一的 (不能和别人重复)中进行修改 则 对应的白色框中内容也会被修改。同时 点击运行后 生成的文本框 也是可以编辑的。指向父对象 即 widget对象的槽函数。

2024-08-20 20:28:26 616

原创 【Qt】 对象树 与 乱码问题

若字符串本身 是 utf8编码的 但是终端是按照 GBK的方来进行解析 显示 此时就会出现乱码。能自动处理编码方式 所以此时编码方式一致 就能输出正常的汉字了。同时 qDebug() 还可以对 打印的调试日志 统一进行关闭。若在Qt中 想通过打印日志的方式 输出一些调试信息 优先使用。能够在合适的时机(窗口关闭/销毁) 把这些对象统一进行释放。此时的 label 对象 随着 构造函数的结束 就销毁了。是 Qt中的一个类 但是又不会直接使用这个类。

2024-08-20 16:07:20 1131

原创 Qt —— 创建 hello world

在Qt中存在 对象数的概念 本质为 一个 n叉树 即有n个子节点 并且只有一个父节点。向的是 当前构造函数所对应的对象 即 main.cpp 中的 widget对象。QString对应的头文件 已经被很多 Qt内置的其他类间接包含了 因此。一般通过代码来构造界面的时候 通常会把构造界面的代码 放到。使用C++中的new 去创建一个 Qlabel类的对象。Qt中 每个类都有一个对应同名的头文件 所以在。搞了一系列的基础类 来支持 Qt的开发。

2024-08-19 15:47:28 731

原创 Qt环境搭建

Qt开发环境 需要安装3个部分1.C++编译器( gcc cl.exe 并不是 Visual studio 编译器只是IDE调用的一个程序)2.Qt SDK(SDK 为软件开发工具包)如: windows 版本 Qt SDK 里 已经内置 了 C++ 的编译器mingw表示 windows 版本的 gcc/g++具体安装的过程中 需要将对应的C++编译器 给一起勾选上虽然说用 VS内置的 cl.exe 作为编译器 也不是不行 但是需要配置很多额外的东西 容易出错3.

2024-08-19 10:19:22 788

原创 Qt 入门介绍

QT用于客户端开发主要是 前端开发中 的 桌面应用开发 (做电脑上的应用程序的)QT 无法开发网页前端 也不能开发移动应用 (官方支持移动应用开发 但是 基本上没有人用)QT 是一个 跨平台的C++用户界面应用程序框架客户端: 直接和用户打交道的这一端的程序如: QQ音乐 steam服务器: 在客户端背后如: 当想使用 滴滴 用来打车时 就会发送订单 将订单发送到服务器去 再通过服务器将订单 交由其他的司机手中。

2024-08-02 17:30:25 367 2

原创 【云备份】客户端实现 及 项目整体总结

项目名称:云备份系统项目功能:搭建云备份服务器与客户端,客户端程序运行在客户机上自动将指定目录下的文件备份到服务器,并且能够支持浏览器查看与下载,其中下载支持断点续传功能,并且服务器端对备份的文件进行热点管理,将长时间无访问文件进行压缩存储。

2023-12-05 18:02:19 2405 51

原创 【云备份】业务处理

所以在service.hpp中 使用 extern 修饰 在cloud命名空间中的DataManger类中的 全局变量 _data 就可以在其他.c 或者.cpp中使用。但是file文件中的filename 是包含路径的 ,所以通过调用FileUtil类的匿名对象 去调用FileName函数 获取文件名称即可。再通过 DataManger类中的 Insert函数 将info中的信息 添加到 _table哈希表中。客户端在下载文件的时候 要每次接收到数据 写入文件后记录自己当前下载的数据量。

2023-12-02 16:32:55 858 73

原创 【云备份】热点管理模块

在hot.hpp中 使用 extern 修饰 在cloud命名空间中的DataManger类中的 全局变量 _data 就可以在其他.c 或者.cpp中使用。调用 cloud命名空间中的DataManger类的 GetOneByRealPath函数 获取 路径文件 a中的备份信息。再调用FileUtil类中的LastATime函数 获取 文件的最后一次访问时间。遍历所有的文件,检测文件的最后一次访问时间,与当前时间进行相减得到差值。2. 遍历备份文件夹 获取所有的文件 进行属性获取 最终判断。

2023-11-29 16:40:32 354 15

原创 【云备份】数据管理模块

分别调用 FileUtil类 中的 Filesize(文件大小) 、 LastMtime( 文件最后一次修改时间)、 LastATime( 文件最后一次访问时间)实例化一个 Config类的对象,借助 Config类 的GetpackDir(压缩包存放路径)、GetPackFileSuffix(压缩包后缀名称)(使用hash表在内存中管理数据,以url的path作为key值,来查询内部存储的数据,查询速度快)哈希表的数据不会重复,所以当key值相同时,info会覆盖之前的数据。

2023-11-27 20:08:38 564 42

原创 【云备份】配置加载文件模块

当线程t1 new后解锁,线程t2获取锁,继续new,就会造成覆盖 丢失数据。使用文件配置加载一些程序运行的关键信息 可以让程序的运行更加灵活。表示 获取到 root_time 对应数据中的string数据。表示 获取到 server_port 对应数据中的int数据。函数实现反序列化 即将body中的数据 放入 root中。(当程序要运行在其他主机上,则不需要修改程序)(服务端所记录的备份文件信息的持久化存储处)(决定非热点文件压缩后存放的路径)表示 获取对应的string数据。

2023-11-27 18:22:10 667 43

原创 【云备份】文件操作实用工具类设计

同样使用stat函数,若返回值小于0则说明访问失败 返回 get fire size faied若访问成功,则 返回 stat结构体的st_mtime即可 表示 文件最后一次修改时间使用stat函数,若返回值小于0则说明访问失败 返回 get fire size faied若访问成功,则 返回 stat结构体的st_atime即可 表示 文件最后一次访问时间。

2023-11-25 18:33:55 774 74

原创 【云备份】第三方库的认识与使用

2.想要使用 json::StreamWriter 进行序列化 ,就需要先借助 json::StreamWriterBuilder 实例化一个 StreamWriter对象。string str= “{“姓名”:“小黑”,“年龄”:19,“成绩”:[58.5,66,35.5]}”;传递一个 json::value的数据对象,将这个对象中的所有的数据 按照 json格式 进行序列化。即 将json格式的字符串 反序列化 解析得到多个数据对象,放入 json::value 对象中。

2023-11-23 20:12:21 409 15

原创 云备份——初步认识及环境搭建

自动将本地计算机上指定文件夹中需要备份的文件上传备份到服务器中并且能够通过浏览器进行查看并且下载,其中下载过程支持断点续传功能而服务器也会对上传文件进行热点管理,将非热点文件进行压缩存储,节省磁盘空间。

2023-11-21 20:04:23 407 86

原创 【MySQL】事务(下)

(如在终端1中查询数据,数据A是属于 50-100 范围内的,并且已经检测到数据A存在于50-100范围内, 但终端2在检测后修改数据A的范围 在100 -200 ,就会导致 终端1中继续检测时,发现。( 以插入举例,最近一次 插入记录的事务 是谁插入的,对应的事务ID是谁,把对应的事务ID放入表中)在终端1 启动事务后,插入 田七的数据到表中 ,此时在终端2启动事务的表中 是查询不到田七的数据。当一个事务,并未commit,就造成 同一个事务内,同样的读取,在不同的时间段,读取到不同的值。

2023-11-14 19:28:34 428 50

原创 【MySQL】事务(中)

说明 任何一个人 不一定 要看到 最新的世界,也不一定 要 看到比较老的世界,只要看到在自己生命周期之内的事情即可。事务1 将表的数据删除 或 提交,事务2 都是看不到的表的变化 ,直到事务2也提交,才可以看到表的变化。所有事务都要有执行过程 ,那么在 多个事务 各自执行多个SQL的时候,就有有可能出现相互影响的情况。当一个事务 在运行 ,另一个 事务 也在运行,这两个事务 在执行过程之中 就可以看作是 并发在运行。比如:你妈妈跟你说 ,那么就别学,要学就学到最好,至于你的学习过程,你妈妈是不关心。

2023-11-13 19:22:28 1553 83

原创 【MySQL】事务(上)

编写sql语句时,有可能一条sql语句是解决不掉问题的,需要一批sql语句共同组合才能完成如:从银行卡A中提钱,向银行卡B转账,将银行卡A中的钱减100,再将银行卡B中的钱加100使用两条sql 语句 才能完成,单独一条语句是完不成操作的事务 是由 一条或者多条事务 构成的集合体,这个集合体 需要共同完成某种任务构成这个集合体的语句,要么全部失败,要么全部成功同样事务规定不同的客户端 看到的数据是不同的事务主要处理 操作量大、复杂度高的数据。

2023-11-13 18:02:49 494 44

原创 【MySQL】索引(下)

创建一张表 articles ,内部包含 约束为 主键 并且 是自增长 的id 、200个字符 的title 、大文本的body。MySQL除了会默认建立主键索引,也可能会按照其他列信息建立的索引,一般这种索引称为 普通索引。key_name表示索引名称为primary ,column_name 表示打在 id这一列上。以第三种方式为例,刚开始test1表中的name只是不为空,再对name添加唯一索引后。此时叶子节点 存储的数据为 构建索引的键值 对应的主键值。

2023-11-04 09:19:18 770 108

原创 【MySQL】 索引(上)

(如:查找 20 -30 区间内的数据,只需找到20 和30 ,以20为起点 ,30作为终点,因为是有序的,所以只需遍历即可)在终端1中的index_db库中,创建test2表,其中包含 约束为主键的 id、不为空的name,存储引擎为。在终端1中的index_db库中,创建test1表,其中包含 约束为主键的 id、不为空的name,存储引擎为。( 拥有的目录项的数量是相同的,每个路上节点保存的目录项变少了, 经过的节点就会变多,整颗树就会变高)

2023-11-02 20:46:16 336 72

原创 【MySQL】 复合查询 | 内外连接

通过第一张表emp中的 员工FORD, 找到对应的领导编号,正好对应第二张emp表的员工编号。对stu表和exam表联合查询,把所有的成绩都显示出来,即使这个成绩没有学生与它对应,也要。查询和10号部门的工作岗位相同雇员的名字、岗位、工资、部门号 ,但是不包含10号自己的。寻找到emp表的部门号 与 tmp表的部门号 相同的 数据 才是合适的,所以加上。左侧的表按条件拼接(条件满足拼接,条件不满足拼NULL) 右侧表完全显示。左侧表完全显示 右侧的表按条件拼接(条件满足拼接,条件不满足拼NULL)

2023-10-30 13:06:04 2743 98

原创 【MySQL】内置函数

date_add(date,interval d_value_type) (interval后的数值单位 可以是 year minute second day)截取emp表中ename字段的第二个到第三个字符。判断bc在abc中的位置,abc字符串的起始位置为1,由于第二个字符b处 就检测到bc存在,所以返回b所在位置 2。输入 select date_add(‘2023-02-25’,interval 10 day);是因为 每个函数 都是带有 对应的日期的,但是在使用函数时 只会显示对应的功能。

2023-10-29 19:05:21 2107 68

原创 【MySQL】表的增删查改

insert into students values(1,112,‘李四’,‘7777’) on duplicate key update sn=112,qq=‘7777’;insert into students values(14,1,‘赵六’,‘8888’),(15,2,‘田七’,‘9999’);创建一张表 exam_result ,其中包含 主键自增长的id、不为空的姓名、默认值为0.0 的语文成绩。由于插入的数据 sn值 qq值 与表中数据相同,则删除原来表中的数据,再添加新插入的数据。

2023-10-27 17:16:34 2203 100

原创 【MySQL】表的约束

当对应的字段 不给值,会自动的被系统触发,系统会从当前字段中已经有的最大值+1操作,得到一个新的不同的值,通常和主键搭配使用,作为逻辑主键。重新创建 表student,内部包含 主键的id、不为空的名字、唯一键的电话号、唯一键的qq号。创建一张学生表student,包含 主键且自增长的id 、不为空的名字、不为空的电话号、班级号。创建一张表 t12,内部包含 不能为空的名字、 默认为18的年龄、 不能为空且默认为男的性别。

2023-10-23 18:26:24 1965 110

原创 【MySQL】数据库数据类型

创建一张表t6,内部包含 一个bigint类型的id 以及 无符号的浮点数类型的salary,并且salary共有4位,其中2位是小数。创建一张表t5,包含 int类型的id 以及 float类型的salary,并且salary共有4位,其中2位是小数。创建一张表 t10 ,内部包含 date类型的t1 ,datetime类型的t2,timestamp类型的 t3。可当插入 (123,5)时 ,由于 online 的类型为1个比特位,所以只能插入0或者1,所以会报错。

2023-10-21 19:10:48 1741 102

原创 【MySQL】数据库——表操作

在终端2中,进入 var/lib/mysql路径,此时存在一个user_db目录。在终端2中,进入 user_db目录中,发现user1表有三张,而user2表有两张。内部包含成员 int类型的id 、 20字节的名字 、32字节 的用户密码 等。内部包含成员 int类型的id 、 20字节的名字 、32字节 的用户密码 等。charset set字符集 ,若没有指定字符集,则以所在数据库的字符集为准。collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准。指定查看user1表结构。

2023-10-18 18:24:32 712 35

原创 【MySQL】数据库——库操作

指令,以此查看数据库的对应内容是否变化创建终端2,并输入 cd /var/lib/mysql 指令,以此查看数据库的对应内容是否变化。( 查找或匹配数据库,就需要进行比较字段,想要被比较,两者就需要先被读出来,此时两者的校验规则应该相同)在test1数据库中,创建 一张表 person ,内部成员为 name,类型为 20个字节。如果备份一个数据库时,没有带上-B参数, 在恢复数据库时,需要先创建空数据库,然后使用数据。支持数据库,进行字段比较使用的编码,本质是读取数据库中数据的采用的编码格式。

2023-10-17 19:28:09 1978 97

原创 【MySQL】数据库基础

mysql 称之为数据库的客户端mysqld 称之为数据库的服务端mysql本质是一种基于C(mysql) S(myqld)模式的网络服务mysql 是一套提供数据存取的服务的网络程序数据库一般指的是,在磁盘或者内存中存储的特定结构组织的数据,即在磁盘中存储的一套数据库方案数据库服务 指的是 mysqld。

2023-10-15 19:19:22 1052 87

原创 【计算机网络】poll | epoll

第三种 小于0等待失败 返回-1如:想要等待下标为1 和2的文件描述符,但是下标为2的文件描述符根本不存在,就会等待失败。作为就绪队列的节点,需要包含文件描述符fd 以及 revent (操作系统告诉用户 关心的文件描述符的那些事件就绪)等待失败 返回-1如:想要等待下标为1 和2的文件描述符,但是下标为2的文件描述符根本不存在,就会等待失败。当特定的文件描述符上有对应的事件发生了,就可以将对应已经发生事件的节点 链入就绪队列中。(每次都需要内核需要告诉用户,关心的文件文件描述符上的那些事件就绪)

2023-10-09 18:58:26 2711 104

原创 【计算机网络】高级IO——select

read/recv 等 文件接口只有一个文件描述符想要 让一个接口等待多个文件描述符,而read等接口是不具备这个能力的操作系统就设计一个接口select,用于多路复用select 作用1.等待多个文件描述符2.只负责等(没有数据拷贝的能力)用户把数据交给操作系统,同样操作系统也要 通过这些输出型参数 把结果 交给用户为了让 用户 和 操作系统之间进行信息传递,就把参数设置为 输入 输出型参数timeout 是一个输入 输出型参数timeout的数据类型 为。

2023-10-05 09:50:20 1094 102

原创 【计算机网络】高级IO初步理解

IO:表示 输入 输出当对方把连接建立好,但是不发数据而我是一个线程,正在调用 read 来读,就会阻塞,一直等数据发送过来即读取条件不满足的情况下,read或recv 只会等待无论是有数据时的拷贝 ,还是没有数据时的等待两者的时间成本,全都算到了用户头上在用户的角度,IO= 等+数据拷贝单位时间内,等的比重越低,IO效率越高当IO条件满足时,称为IO事件就绪用户把数据交给操作系统,同样操作系统也要 通过这些输出型参数 把结果 交给用户。

2023-10-03 18:03:57 1098 67

原创 【计算机网络】数据链路层

局域网是一份公享的资源,当主机A给主机B发送消息时,可同时存在 主机C 给主机D发送消息。在进行报文和有效载荷分离时,发现数据帧是要去macA,而只有主机A的mac地址为macA。从学号转成姓名,先在教室中询问,所有同学收到,只有一名同学处理,其他同学丢弃,从主机B到路由器F,源mac地址 是 主机B 目的mac地址是路由器F。首先 获取F的mac地址,再根据对方的mac地址 封装 mac帧,发送数据。主机A发现自己的mac地址 与 报头的目的mac地址相同,就由主机A接收到。

2023-09-26 11:52:51 1754 114

原创 【计算机网络】IP协议(下)

1. 当一个报文到了某个路由器内部,询问路由器时,首先要告诉路由器自己要去哪里,所以IP报头中包含目的IP。若有两种客户端发送报文,第一种客户端的报文可能进行分片,第二种客户端的报文也可能进行分片,两者可能糅在一起。使用的是 DHCP 技术(子网是由路由器划分好的,局域网的所有主机的IP地址,都是从路由器中申请的)通过偏移量 进行排序,每一个偏移量之间的差值应该是相同的,若差值不同,则中间报文丢失了。发现目的IP122…到了附近,你又不认识路了,又问了一个大爷,询问同济大学怎么走,最后到达同济大学。

2023-09-24 14:57:47 683 93

原创 【计算机网络】IP协议(上)

IP是给TCP提供服务的,当TCP要IP把数据发送时,IP询问TCP 是向尽快把数据交付,还是发送数据时,挑一条不会丢包的路径。C类网络的第一个比特位为1,证明不是A类,第二个比特位为1,证明不是B类,第三个比特位为0,证明是C类。(因为要在学校里快速的能够进行消息的通知,就需要把每个院都有自己的群,为了更好管理,就要带上学号)张三属于计算机学院的学生,计算机学院的编号为10,他属于该学院的210,他的学号为10210。考了几次,其中有一次考了99,不是满分,张三就去找他老爹,他老爹不满意张三没有考满分。

2023-09-22 15:24:33 1633 94

原创 【计算机网络】传输层协议——TCP(下)

当打开画图板时,若不关闭画图板,而直接将电脑关机,此时操作系统就会提示,当前系统中还有正在运行的进程,是否要终止。当前判定网络拥塞了,主机A向主机B发送一个报文,先进行询问,若收到应答,则主机A再发送两个报文向主机B。底层网络出现问题,对应的链接在客户端上,操作系统能识别到网络无法正常通信,所以链接维护就没有意义,此时再有客人来询问,你就可以告诉他,里面已经满了,但是再过几分钟就有位置了,可以排队等待下。若海底捞的老板,在外面安排非常多的座位,用于客户排队,但排很长的队,客户是不愿意的。

2023-09-19 09:04:06 3370 111

原创 【计算机网络】传输层协议——TCP(中)

操作系统内会存在多个已经建立好的链接,操作系统是需要把这些建立好的链接 管理起来的而管理的本质是 先描述 在组织操作系统内为了管理连接维护的数据结构先使用 struct tcp_link结构体,内部包含链接的各种字段再使用链表 将其组织起来创建并维护链接是有成本的1.内存空间的消耗(想要创建链接,就需要创建链接对象,所以就要new/nalloc链接对象)2.CPU资源的消耗(维护定时器,来保证超时重传等)

2023-09-15 20:34:07 2897 103

原创 【计算机网络】传输层协议——TCP(上)

如:你回家 你妈给你做了一桌子菜,当你吃饭时,你妈一直给你加菜,直到你吃不动时,就跟你妈说,吃饱了,但如果你妈依旧给你加菜,你肯定受不了。TCP本身包含了序号,就可以将TCP报文按序号排序,就可以按序号由小到大入队列,这样就保证上层拿到的数据是有序的。客户端给服务器发送消息时,服务器要给客户端做出响应,响应中携带对应的TCP报文,TCP报文中包含TCP报头。如:你是一家餐厅的老板,在餐厅中有各种各样的人,有的人是来吃饭的,有的人是来找人的,有的人是来拿外卖的。

2023-09-13 21:06:39 4030 106

原创 传输层协议——UDP

再将指针p,指向最开始位置,并将p强转成 struct udp_header类型 ,指向结构体中的源端口号、目的端口号 、udp长度、校验和。如:在淘宝上买了五件商品,编号为1-5,先买的是1号商品,时间是不确定的,所以1-5号 谁先谁后到 是不确定的。UDP报头中包含16位目的端口号,将一个报文发送到主机上,根据目的端口号向上交付给应用层,绑定该端口号的进程。操作系统动态分配的端口号,客户端程序的端口号,就由操作系统从这个分为分配的。不用自己处理,只要发的是完整的,收的就是完整的,对方发几次,收几次。

2023-09-12 21:07:01 2112 58

原创 【计算机网络】HTTPS

如:你是一个餐厅的老板,餐厅做的菜是否符合食品安全,你是不知道,就算你说好的,别人凭什么相信你。当使用公钥 加密, 使用私钥解密时,就算让黑客将数据截获,也没有关系,因为只有私钥才能解密。在这个加密和解密的过程中,需要一个或者多个中间的数据,辅助进行这个过程,这样的数据称为。将新的报文转发给客户端,因为客户端请求的服务器端,所以就默认是服务器端发送的报文。获取到客户端的对称秘钥X后,在与服务器的公钥S结合,重新形成 新的加密报文。通过验证,将内容和签名 分开,用相同的hash算法,形成对应的散列值。

2023-09-09 16:21:18 2718 114

就业资料——测试开发笔试题汇总(2).zip

就业资料——测试开发笔试题汇总(2).zip

2023-10-11

c++笔试题.zip

c++笔试题.zip

2023-10-09

空空如也

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

TA关注的人

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