- 博客(263)
- 资源 (2)
- 收藏
- 关注
原创 考研计算机组成思维导图总结(408,833,834)
需要思维导图文件和图片的可以去我的Github上寻找,这份思维导图参考23年王道机组,同时添加了一部分833,834需要知识点。注意:最后的机组知识点仍要以学院进行对照,这里只是提供参考思维导图pdf和知识点图片
2023-06-15 07:32:02 885 2
转载 Linux VM虚拟机CentOS7 从下载到 远程访问 再到将web服务提供给外部访问(花生壳)
安装CentOS并切换yum源VMware+CentOS 7 静态IP设置方法(保姆级教程,建议收藏)注意:需要先固定好虚拟机内网IP后再进行远程访问,否则每次重启远程访问会失效Xshell连接虚拟机详细教程Linux下安装花生壳花生壳(内网穿透)服务+VMware搭建任意操作系统的服务器环境远程连接虚拟机............
2022-06-06 12:48:49 700 3
原创 C/C++ 后端开发学习知识点总结(思维导图C、C++与数据结构、Linux、网络、MySQL)
注意:这里只是简单的将知识点罗列了一下,可能有遗漏还请见谅思维图中没有标记 了解 的都很重要!1.C语言
2022-05-27 11:45:31 1288
原创 QT C++(QT控件 QLabel,QLCDNumber,QProgressBar,QCalendarWidget)
QT中封装了定时器QTimer,这个对象创建会发送timeout信号,可以设置start方法开启定时器,参数中可以设置timeout周期。结合connect就可以把timeout信号绑定到需要的槽函数中,修改LCDNumber上的数字。QLCDNumber是一个专门用来显示数字的控件,数字样式类似于计算器上的数字。在QT中,界面是有一个专门的线程去维护更新的(主线程)。槽函数默认在主线程调用,所以在槽函数中修改界面是可以的。Qt中表示用户操作有两类,一个是事件,另一个是信号。eg4:QLabel伙伴属性。
2024-07-05 20:41:22 1056
原创 QT C++(QT控件 QPushButton,QRadioButton,QCheckBox)
QRadioButton设置非排他方式,使用QButtonGroup对不同的RadioButton分组,不同组之间不排他。QCheckBox的相关属性和QRadioButton相同。checked,checkable用法和上文一致不在赘述。QKeySequece:按下的快捷键队列,因为快捷键不只是一个。QPushButton中的重要属性。QRadioButton特殊信号。不同的复选按钮不冲突。
2024-06-06 01:40:50 649
原创 QT C++(QWidget类及其常见的属性)
Window Frame对geometry属性的影响:QT关于位置尺寸提供很多API,有的API位置信息是Widget本体坐上角为原点的(不考虑Window Frame即窗口边框)上述的API都是不考虑Window Frame的。Qt通过自定义图片设定光标:和设置窗口图标方式一致,把图片导入项目中(.qrc管理),在代码处访问到这个图片,通过这个图片构造光标对象并设置。cursor():获取到当前窗口的光标属性,返回QCursor对象,当光标悬停到该窗口上时会显示对应的形状。
2024-05-11 00:17:11 1088
原创 QT C++(信号与槽函数,自定义信号和槽函数)
自定义槽函数:方式一:手动定义函数button->setText("按钮");delete ui;//按下按钮,设置窗口标题this->setWindowTitle("按钮按下");方法二:通过ui界面生成槽函数这个窗口就是QPushButton控件提供的所有信号此时这个函数自动会绑定这个按钮的信号(通过函数名称来绑定,函数名为on+按钮的objectname+信号名称)eg,当函数名符合上述规则,QT会对响应控件的信号自动进行绑定(connectSlotsByName函数)
2024-04-22 16:18:32 1332
原创 QT C++(QT对象树与内存泄漏管理,QT中文乱码问题)
使用自定义的TestLabel继承原来的QLabel,保持原有的QLabel功能不变的情况下给TestLabel扩展新析构函数,在自定义对象析构时打印一个自定义日志,方便观察程序运行状况。由上面可知,项目并没有释放指针,在窗口销毁后自动释放了堆的控件,避免内存泄漏。使用qDebug打印的调试日志,是可以统一关闭的,在发布时可以通过编译开关统一关闭打印日志。如果字符串本质是utf-8的编码,但是控制台是按照gbk的方式解析显示的,就会出现乱码。在QT上,字符串的编码格式是和文件的编码格式决定的。
2024-04-08 00:11:00 507
原创 QT C++(发展历史,简述,环境搭建QT5.14,构建Widget项目代码解释)
Widget(QWidget *parent = nullptr):在QT中引入了对象树机制,创建QT对象后,就可以向对象树(n叉树)上挂,在向对象树上挂时需要指定父对象。Linguist:允许单独创建一个语言配置文件,把界面上需要的文字保存到配置文件上,并且在文字使用前提前把各种语言的翻译都配置进去,可以起到一键切换语言的功能。元编译技术:QT框架会在编译的时候自动调用一系列的生成工具,基于你自己写的代码来生成一系列其他代码,最后编译的代码是最后生成的那些代码。创建一个控件对象,使用show方法显示。
2024-04-07 04:44:47 856
原创 Linux(CentOS)/Windows-C++ 云备份项目(结项,项目总结)
客户端程序运行在Windows下,将指定的目录下的文件备份到服务器上,并且支持浏览器下载,查看。技术特点:json序列化,反序列化,文件压缩,热点管理,断点续传,线程池,读写锁,单例模式。其中下载支持断点续传,服务器对备份文件进行热点管理,将长时间未访问的文件压缩存储。开发环境:CentOS7.* VS2022 VScode makefile 等。搭建云备份服务器和客户端。
2024-03-29 00:06:10 411
原创 Linux(CentOS)/Windows-C++ 云备份项目(客户端文件操作类,数据管理模块设计,文件客户端类设计)
客户端负责的功能指定目录的文件检测,获取文件夹里面的文件判断这个文件是否需要备份,服务器备份过的文件则不需要进行备份,已经备份的文件如果修改也需要重新备份若这个文件被用户打开,则不进行备份。需要每隔一段时间检测更新备份。将需要备份的文件上传备份文件客户端功能模块划分客户端的开发环境在Windows上,使用vs2022(支持C++17即可 vs2017以上)
2024-03-28 23:45:46 697
原创 中北大学信息对抗软件工程课程设计 - 企业公文管理系统 +网络安全课程设计 +答辩ppt
为了防止聊天信息数据库表项太多,这里在 Linux 下使用 crontab 命令设置定时任务,每天 0 点执行,清除数据库。前端登录对密码进行非对称数据加密,防止中间网络窃取。网路安全需求:对号为已完成需求叉号为未实现需求。上线环境:Linux CentOS7。现存账号:密码见数据库。
2024-03-28 18:06:13 1113
原创 Linux(CentOS)/Windows-C++ 云备份项目(服务器网络通信模块,业务处理模块设计,断点续传设计)
http的ETag头部字段:存储了一个资源的唯一标识客户端第一次请求文件时会收到响应信息。客户端第二次下载时,客户端会把这个信息发送给服务器,让这个服务器根据这个标识判断这个资源有没有被修改锅。如果没修改过。客户端直接使用缓存区的资源。如果改过则重新修改http对ETag字段没有定义,这里设定:ETags:文件名称-文件大小-最后修改时间 构成ETags字段也用于断点续传,断点续传也需要保证文件没有被修改http协议的Accept-Ranges:bytes字段用于表示支持断点续传。
2024-03-27 17:49:54 1148 1
原创 Linux(CentOS)/Windows-C++ 云备份项目(服务器热点管理模块设计)
遍历所有文件,检测文件最后一次访问时间与当前时间的差值,这个差值大于配置文件的时间,则认为是非热点文件,进行压缩后放入压缩路径。热点管理模块:对服务器上备份的文件进行检测,那些文件长时间没有被访问,则认为是非热点文件,进行压缩节省磁盘空间。遍历备份文件夹,获取所有文件属性信息来判断。这样比遍历内存的backuoMap更准确。注意删除源文件,修改数据管理模块的文件信息(压缩标志)
2024-03-26 17:05:59 374
原创 Linux(CentOS)/Windows-C++ 云备份项目(服务器数据管理模块设计)
数据管理模块被多个线程共享,使用读写锁更好(读共享,写互斥)。每次数据更新都要重新持久化存储,避免数据丢失。每次服务器重启都要加载以前的数据。后续项目需要使用的数据如下。
2024-03-26 00:30:55 433
原创 Linux(CentOS)/Windows-C++ 云备份项目(项目服务器配置信息模块,单例配置类设计)
本项目服务器的配置通过配置文件的形式来实现。配置文件格式为Json。使用配置文件加载一些程序运行关键信息可以让程序更加灵活。单例配置类设计:(紧跟前面的项目设计)
2024-03-24 23:32:11 345
原创 Linux(CentOS)/Windows-C++ 云备份项目(项目文件操作工具类设计,完成项目基本文件操作-读写-压缩-目录操作)
根据上图可知,项目文件属性获取,文件读写,文件压缩与解压缩基本功能没有问题。错误日志函数log.hpp。
2024-03-16 16:47:27 591
原创 Linux(CentOS)/Windows-C++ 云备份项目(jsoncpp库,bundle数据压缩库API测试,httplib库快速搭建Http服务器,客户端测试,华为云服务器开放端口)
httplib库是一个C++11的单文件跨平台HTTP/HTTPS库,httplib库实际上是用于搭建一个简单http服务器的库,可以让我们免去搭建客户端服务器的时间。当然这个库也可以使用我的另一个项目HttpSever的部分代码,这里为了提升开发效率所以使用第三方库。biundle库是一个嵌入代码式的压缩库,支持23种压缩算法和两种存档格式,使用时只需要加入bundle.h和bundle.cpp即可。解压后的文件大小相同,计算文件的md5值看这两个文件是否相同。做过这个项目这个库的学习就会十分轻松了。
2024-03-16 01:56:55 914
原创 Linux(CentOS)/Windows-C++ 云备份项目(项目介绍,客户端服务器功能分析,环境搭建(gcc升级7.3版本,安装jsoncpp库,bundle库,cpp-httplib库))
此项目完成的是自动将指定文件夹中的文件上传到备份服务器上,并且能够随时通过浏览器进行查看并且下载,其中下载过程支持断点续传,服务器也会对文件进行热点管理,将非热点文件进行压缩处理,节省存储空间。
2024-03-15 16:19:27 973
原创 Linux_网络项目_WEB服务器结项 设计CGI业务(表单提交注册用户并保存数据库功能测试,解决构建静态库/usr/bin/ld: cannot find -lstdc++报错,项目总结)
项目完成了HTTP GET,POST方法处理,并且对这两种方法大部分可能出错情况进行处理。模仿Java 的tomcat服务器搭建了CGI机制:设计创建管道,父子通信,重定向,环境变量导入,数据读写机制,CGI机制支持任何后端语言,Web开发就是开发的CGI程序,常见的CGI程序语言为java和python语言,C++并不适合开发项目扩展:技术方面:支持HTTP1.1长连接,浏览器可以一直使用这条连接进行通信。涉及连接管理,粘包问题改成epoll版本HTTP服务器,满足更大量的请求。
2024-03-14 22:56:46 918
原创 彻底解决Github提交代码缓慢问题(配置git为gitee仓库,配置gitee->github映射)
由于各种原因,Github提交代码速度太慢,这里最终选择gitee同步到gitub的方式进行提交。点击push Gitee->Github上的更新就可以吧Gitee代码同步到Github上。当您需要 Gitee 自动从 GitHub 同步仓库时,建议您勾选。「Note」字段可以随意填写;「Select scopes」字段请根据你的需求进行勾选;字段为可选字段,用于自动生成 webhook;这样以后push的代码就近了Gitee上了。然后将Github上的项目导入Gitee上。字段为必选字段,请您直接勾选;
2024-03-13 21:01:53 978
原创 Linux_网络项目_WEB服务器 处理服务器写入失败后sigpipe信号导致服务器崩溃退出问题,引入线程池缓解大量请求,服务器组件化重构,在线计算机业务测试
服务器在收到链接时不创建线程,而是构建线程任务,然后将线程任务放入到线程任务队列上,最后线程池从任务队列上拿去任务处理即可,线程拿到任务后,通过任务里的CallBack回调函数执行不同的任务。线程任务CallBack设计紧贴前面重构前的代码,将Entrance类更改成CallBack即可,这里设计仿函数,线程回调函数通过()直接访问解析请求函数。此外如果服务器使用CGI时,向管道写入数据失败时,服务器进程会收到sigpipe信号直接崩溃。测试运行结果如下:线程池创建6个线程,初始化线程池正确。
2024-03-13 20:29:06 672 1
原创 Linux(CentOS为例)环境下 Git提交代码加速,解决Git超时443问题,1使用FastGithub,2修改hosts文件,运行报错解决
当你的在服务器上使用Git进行推送时,时常会出现超时错误。这里使用FastGithub。这个软件作者不是为什么删除了GithUb的仓库,这个链接还有。下载Linux版本的。./fastgithub运行。不要关闭它,调到后台,设置手动http代理即可。首先下载FastGithub。实测可以解决超时问题。
2024-03-03 12:42:03 897
原创 考研/面试 数据结构大题必会代码(理解+记忆,实现使用C++,STL库)
这些算法主要面向数据结构代码填空,算法设计题,复试上机,复试面试其中这些代码是最基础需要掌握的部分。
2023-08-03 11:31:11 598
原创 中北大学 - 信息对抗大三下学习课程设计(爬取招标网站,进行招标分析,数据保存execl中)
统计下载数据,过滤数据。为了避免爬取到重复信息,这里再项目中创建了log.txt文件用来记录爬虫爬取的最新状态,如果今日的爬虫爬取到日志信息状态时,说明已经把最新的信息爬取完毕,直接退出爬虫并且更新信息即可。这里选择优先级不同的方式统计,扫描爬取到的信息,按照优先级统计地区出现的次数,最后根据次数最多的城市的省份划分区域。点击“确定”保存设置,任务计划程序会自动执行Python程序,可以在“历史记录”中查看执行情况。切换到“触发器”选项卡,点击“新建”,设置触发器的具体时间和频率,如每天、每周、每月等。
2023-06-17 21:53:58 1289 1
原创 LeetCode刷题测试辅助(更好的二叉树打印)
这个题的要求就是打印一个二叉树,我们在此基础上进行修改,日后的二叉树问题,debug时就可以直接使用了,下面附上我的代码。
2023-05-29 12:37:34 213
原创 数据结构-考研难点代码突破(外部排序 - C++实现败者树(三指针树结构实现))
因为我是先看了败者树的思想,然后实现的代码,所以我和网上的主流败者树实现方式不同,我并没有想到使用类似堆的方式,通过数组保存父子节点。我直接将其实现成了树状结构。我这个算法有很多可以优化的地方,但因为考研对这部分代码的要求并不高,所以这里就不改了。// 败者树节点结构,这里使用树状结构实现败者树 struct TreeNode {// 失败节点的归并段在数组的位置 int _win_val = INT_MIN;// 这层节点的胜利者的值 int _win_pos = - 1;
2023-03-17 19:41:56 1075
原创 数据结构-考研难点代码突破(查找算法 - 散列表(哈希表)C++实现除留余数法拉链法哈希)
(再哈希法)除了原始的散列函数H(key)之外,多准备几个散列函数,当散列函数冲突时,用下一个散列函数计算一个新地址,直到不冲突为止。最理想情况下,不会发生哈希冲突,此时查找效率为O(1)线性探测法很容易造成关键字、非关键字的“聚集(堆积)”现象,严重影响查找效率。如果不同的关键字通过哈希函数映射到相同的位置,此时这种情况称为哈希冲突。平方探测法:发生冲突时,每次向前/后探测的单元个数按照平方依次递增。线性探测法:发生冲突时,每次往后探测相邻的下一个单元是否为空。时,称为平方探测法,又称二次探测法。
2023-03-01 15:51:30 1166
原创 数据结构-考研难点代码突破(C++实现树型查找 - B树插入与遍历,B+树基本概念)
B树,又称多路平衡查找树,B树中所有结点的孩子个数的最大值称为B树的阶,通常用m表示。
2023-02-28 19:07:20 1541
原创 数据结构-考研难点代码突破(树型查找 - 红黑树(RBT)插入流程图,删除)
红黑树查找与删除的效率和AVL树相同。但是因为AVL树在插入或删除节点可能破坏AVL树结构,而重新调整树的开销大。所以引出了红黑树。红黑树的插入和删除一般无需调整树的结构,相比于AVL树的调整开销小。所以,在以查为核心的操作下,适合使用AVL树结构;如果要频繁的插入或删除元素,更适合使用红黑树红黑树首先是二叉排序树红黑树的每个节点有两种颜色(红,黑色)树的根节点是黑色的。树的空节点都是黑色的.不存在两个相连的红节点(红节点的父亲与孩子都是黑色的)
2023-02-23 14:57:01 600
原创 数据结构-考研难点代码突破(C++实现树型查找 - 平衡二叉树(AVL树)的基本操作(增删))
调整平衡因子a,b平衡因子都变为0,调整a,b节点父指针,调整树的根节点,处理子树的情况,细节和右单旋类似。观察上图,相当于把c节点拆开c做根节点,c的左子树给b右树,c的右子树给a的左树。如果新节点插入的位置在c的右子树上,经过旋转会到a的左子树上,b的平衡因子为-1,a的平衡因子为0(如上图).调整步骤:将a节点连接到b右节点,将原来b右子树连接到a左子树上,这样a,b节点的平衡因子又变回0。如果新节点插入的位置在c的左子树上,经过旋转会到b的右子树上,b的平衡因子为0,a的平衡因子为1.
2023-02-21 16:13:22 767
原创 数据结构-考研难点代码突破(C++实现树型查找-二叉搜索树(二叉排序树))
在二叉排序树中删除一个结点时,不能把以该结点为根的子树上的结点都删除,必须先把被删除结点从存储二叉排序树的链表上摘下,将因删除结点而断开的二叉链表重新链接起来,同时确保二叉排序树的性质不会丢失。若二叉排序树的左、右子树的高度之差的绝对值不超过1(这样的二叉排序树称为平衡二叉树)它的平均查找长度为O(logN)但二分查找的判定树唯一,而二叉排序树的查找不唯一,相同的关键字其插入顺序不同可能生成不同的二叉排序树。插入的结点一定是一个新添加的叶结点,且是查找失败时的查找路径上访问的最后一个结点的左孩子或右孩子.
2023-02-14 20:25:47 794
原创 JavaEE-Spring(Spring中的五大类注解,@Bean注解,对象装配(@Autowired,@Resource),Bean对象在Spring中的作用域)
Configuration配置层-> @Controller控制层(前端参数校验)-> @Sever服务(数据组装,接口调用)-> @Repoistory(数据库操作,数据持久)@Bean注解需要配合五大类方法使用才可以将方法返回的对象储存到Spring中。如果类中的构造方法只有一个是,@Autowired可以省略,多个构造函数不能省略。从Spring中获取对象称为对象装配,将对象取出放入某个类中,有时也叫对象注入。使用注解将对象注册到Spring中,这个对象在获取时的名称与类名有关;
2023-01-06 15:41:38 358
原创 数据结构-考研难点代码突破 (图关键路径完全解析(流程+代码) - C++代码)
我们用有向无环网描述某项工程时,数据结构中称这样的网结构为AOE(Activity OnEdge)网,网中的顶点称为“事件”,弧称为“活动”,弧对应的权值代表活动持续的时间。活动的时间余量:活动最迟开始时间-最早开始时间,表示在不增加完成整个工程所需总时间的情况下,活动a可以拖延的时间。,以边上的权值表示完成该活动的开销(如完成活动所需的时间),称之为用边表示活动的网络,简称AOE网。求所有活动的时间余量d(),d(i)=0的活动就是关键活动,由关键活动可得关键路径。
2023-01-06 04:29:40 1220
原创 操作系统-内存管理(快表的地址变换机构,两级页表,虚拟内存的基本概念,基本页式管理下的页表和页面置换算法)
与基本分页管理相比,请求分页管理中,为了实现“请求调页”,操作系统需要知道每个页面是否已经调入内存,如果还没调入,那么也需要知道该页面在外存中存放的位置。有的页面修改过,就需要将外存中的归数据覆盖,因此,操作系统也需要记录各个页面是否被修改的信息。事实上,在一个时间段内,只需要访问作业的一小部分数据即可正常运行,这就导致了内存中会驻留大量的、暂时用不到的数据,浪费了宝贵的内存资源。基于局部性原理,在程序装入时,可以将程序中很快会用到的部分装入内存,暂时用不到的部分留在外存,就可以让程序开始执行。
2023-01-03 21:33:12 2136
原创 数据结构-考研难点代码突破 (C++实现有向无环图的拓扑排序)
AOV网∶若用DAG 图(有向无环图)表示一个工程,其顶点表示活动,用有向边表示活动 Vi必须先于活动Vj进行的这样一种关系,则将这种有向图称为顶点表示活动的网络,记为 AOV网。在AOV网中,活动Vi是活动Vj的直接前驱,活动Vj是活动Vi的直接后继,这种前驱和后继关系具有传递性,且任何活动V不能以它自己作为自己的前驱或后继。由于输出每个顶点的同时还要删除以它为起点的边,故采用邻接表存储时拓扑排序的时间复杂度为O(V+E),采用邻接矩阵存储时拓扑排序的时间复杂度为 O(V。
2023-01-03 17:45:31 767
原创 数据结构-考研难点代码突破(C++实现有向图最短路径算法(Dijkstra,Floyd-Warshall算法)图解操作细节(引自C语言中文网))
在表 1 的基础上,将顶点 1 作为 “中间顶点”,计算从各个顶点出发途径顶点 1 再到达其它顶点的权值,如果比表 1 中记录的权值更小,证明两个顶点之间存在更短的路径,对表 1 进行更新。当图是带权图时,把从一个顶点a到图中其余任意一个顶点x的一条路径(可能不止一条)所经过边上的权值之和,定义为该路径的带权路径长度,把带权路径长度最短的那条路径称为最短路径.初始化默认值(无穷)3-2-1:权值为 1 + 2 = 3,表 1 中 3-1 的权值为 ∞,3 < ∞;
2023-01-03 03:25:13 2458 1
原创 JavaEE-Spring(IoC控制反转,DI依赖注入,Spring项目创建和基本使用,ApplicationContext和BeanFactory的区别)
BeanFactory是按需加载对象bean,ApplicationContext是饿汉模式,在创建时会将所有的Bean对象加载起来。在程序开发中,经常出现一个对象的创建依赖另一个对象的情况,如果采用在对象内new依赖对象,这样会导致代码的耦合性比较高。依赖注入:IoC运行器件,动态的将某种关系注入到对象中,通过引入Ioc容器,利用依赖关系注入的方式实现对象的解耦。这样依赖的对象发生改变,上层代码不需要改变。学习Spring的核心就是学习如何将对象存放到Spring中,再从Spring中取出对象的过程。
2022-12-28 05:12:03 825
原创 数据结构-考研难点代码突破(C++实现无向图图最小生成树算法(Prim,Kruskal)图解操作细节(引自C语言中文网))
克鲁斯卡尔算法查找最小生成树的方法是:将连通网中所有的边按照权值大小做升序排序,从权值最小的边开始选择,只要此边不和已选择的边一起构成环路,就可以选择它组成最小生成树。B-T 、A-B、S-A 三条边都会和已选 A-C、C-D、B-D、D-T 构成环路,都不能组成最小生成树。从 B-D 边开始挑选,由于尚未选择任何边组成最小生成树,且 B-D 自身不会构成环路,所以 B-D 边可以组成最小生成树。最小生成树的边的权值之和总是唯一的,虽然最小生成树不唯一,但其对应的边的权值之和总是唯一的,而且是最小的。
2022-12-28 03:55:27 2759
中北大学信息对抗软件工程课程设计 - 企业公文管理系统 +网络安全课程设计 +答辩ppt
2024-03-28
VsCode配置C++开发环境中的配置文件,c-cpp-properties,launch,settings,tasks
2024-01-03
C++树形查找(搜索树,AVL树插入删除,红黑树插入流程),参考书籍(王道考研书记结构2023版)
2023-02-27
C++树的三种表示法.zip
2022-11-23
数据结构王道考研2023年KMP串匹配算法C++/Java实现
2022-11-03
数据结构2023考研第三章第三节站和队列的应用代码+批注C++
2022-11-03
中北大学随机信号分析MatLab实验代码+实验报告
2022-10-22
Python_EasyGui图像化Github链接https://github.com/robertlugg/easygui
2022-02-03
C++ VisualStudio2022
2024-02-10
TA创建的收藏夹 TA关注的收藏夹
TA关注的人