- 博客(80)
- 收藏
- 关注
原创 Qt模仿人工智能聊天助手
这份代码是参照网上的一个开源项目写的,主要实现了简易人工智能的聊天功能。原项目通过C++调用后台python进程来获取聊天的内容。我通过修改部分逻辑后,使用了基于纯C++来调用后台结果来返回聊天的数据。效果如下:源代码如下:......
2022-06-26 00:27:30
798
原创 学生管理系统(C++语言_顺序表)
该程序是基于C++语言实现的学生管理系统。其中运用到了STL里的容容器,算法和迭代器,以及C++11的仿函数等。主要实现了学生信息的增删改查等。有不足之处还请各路朋友们指正。测试环境为Windows下的 VS 2017。...
2022-06-20 22:11:12
737
原创 2021-09-05
Qt 对QTreeView的遍历及搜索#pragma once#include <QtWidgets/QWidget>#include "ui_TestQtreeView.h"#include <QStandardItemModel>class TestQtreeView : public QWidget{ Q_OBJECTpublic: TestQtreeView(QWidget *parent = Q_NULLPTR);public slot
2021-09-05 21:09:05
100
原创 Qt多线程实例
以下是单线程的程序,每次程序进到循环里,会出现睡眠假死的操作。//MyClass.h#ifndef MYCLASS_H#define MYCLASS_H#include <QtWidgets/QWidget>#include <Windows.h>#include "ui_myclass.h"class MyClass : public QWidget{ Q_OBJECTpublic: MyClass(QWidget *parent = 0); ~MyC
2021-05-16 10:33:24
862
原创 2021-03-28
#include “qstandmodel.h”#include <QtWidgets/QApplication>#include #include #include #include int main(int argc, char *argv[]){QApplication a(argc, argv);QStandardItemModel *model = new QStandardItemModel();model->setHorizontalHeaderLabel
2021-03-28 20:28:49
107
原创 Qt 使用QPainter 绘图
简单粗暴 直接上代码//头文件#ifndef PAINTRECT_H#define PAINTRECT_H#include <QtWidgets/QWidget>#include "ui_paintrect.h"class PaintRect : public QWidget{ Q_OBJECTpublic: PaintRect(QWidget *parent = 0); ~PaintRect(); void myDraw(QLabel* label);prot
2020-12-11 00:17:13
366
原创 关于VS2013【断点“变白”失效的解决方法】【已解决】
网上有很多的解决方法,但试了后基本上都不奏效。可能是与我本地的配置有关吧。最后请教了有经验的同事,做出了以下的修改,断点即可使用。在此分享出来,希望能帮助到其他奋斗者。1.点击项目属性—>C/C+±–>常规---->调试信息格式---->选择“程序数据库/Zi)”2.点击项目属性—>C/C+±–>优化---->选择“优化(已禁用(/od))”3.点击项目属性—>链接器—>调试---->生成调试信息---->选择“优化以便于调试(/DEB
2020-09-15 21:59:45
2886
原创 Linux常用命令(九)
网络命令1.ping功能:测试网络的连通性解释:ping百度ip,在结果中我们一般最关心的是packet loss(丢包率)。2. ifconfig查看和设置网卡信息解释:会列出所有的网卡信息。其实我们平时最关心的就是inet addr,代表我们的ip地址。3.last功能:列出目前与过去登入系统的用户信息4. setup功能:配置网络,永久生效(需要root权限)...
2020-03-19 10:38:31
147
原创 Linux常用命令(八)
用户管理命令1. 用户管理命令: useradd功能:添加用户语法:useradd 用户名2.设置用户密码:passwd语法:passwd 用户名压缩解压命令1.压缩命令:gzip英文助记:GNU zip语法:gzip 【文件名】解释:touch一个新文件file1,gzip压缩后,ls查看只有file1.gz,原文件不存在。因此,gzip不保留源文件;解释:mkdir...
2020-03-18 15:46:36
178
原创 Qt Creator 5.9.4连接MySQL 8.0.19的方法(已解决)
由于要在Qt上做数据库的相关开发,需要连接MySQL,但是遇到了【driver not load】的错误,查阅相关资料后,解决了错误。以下是我总结的步骤,有需要的朋友们可以参考(避免走弯路):起初,我是写好代码后,会报错:driver not load,是因为Qt本身缺少一个文件。1.首先明确自己装的MySQL的版本与Qt版本:step1.以管理员身份运行:输入【mysql -V】查看到...
2020-03-09 12:55:47
3896
23
原创 Linux常用命令(七)
帮助命令1. man英文助记:manual语法:man 命令/配置文件功能:可以查看命令或配置文件的帮助信息示例:man ls解释:可以查看ls命令的描述以及选项等。按q退出。示例:man services,查看配置文件信息:但是,这样看到的都比较繁琐。如果我们需要只查看简短的信息,可以用下面的命令:2. whatis apropos语法:whatis 命令名称:查看命令...
2020-03-07 10:34:10
158
原创 Linux常用命令(六)
本文主要介绍Linux其他的文件搜索命令1. 文件搜索命令: locate(类似于Win下的Everything这个搜索工具)语法:locate文件名功能:在文件资料库中查找文件,能达到秒搜。示例:解释:利用locate搜索文件资料库中的文件。示例:touch一个新文件,再利用locate解释:我们touch一个新文件LOCATE,用locate搜索并没有结果,因为这时文件资料库...
2020-03-05 10:41:56
193
原创 Linux常用命令(五)
本文主要介绍find命令以及常用选项文件搜索命令:find语法:find 【范围】 【匹配条件】功能:文件搜索示例1:匹配文件名称:[-name]区分大小写解释:通过find命令,来查询文件名为newFile 与 test的文件,是精准搜索但是,在windows下的文件搜索,搜索是进行模糊匹配的,即包含匹配条件的文件都会被罗列出来。那么,在Linux下怎么进行模糊匹配呢?请看:解...
2020-03-04 20:45:33
280
原创 Linux常用命令(四)
1. 权限管理命令:chown英文助记:change file ownership功能:改变文件或目录的所有者语法:chown 【用户】 【文件/目录】示例:解释:root用户创建文件abc,切换到zhangsan用户,查看到abc的文件所有者为root,这时,zhangsan想将该文件的所有者改为romeo,但是操作不被允许。再切换回root用户,再将abc文件的所有者从root改为...
2020-03-03 20:04:23
181
原创 Linux常用命令(三)
本笔记主要介绍权限管理命令chmod1. 权限管理命令:chmod英文助记:change the permission mode of a file语法:chmod [{ugoa} {±=} {rwx} 文件/目录] (u,g,o分别表示所有者,所属组,其他用户)-R 递归修改1.1 chmod示例:解释:先用ls -l列出该目录下的详细信息,发现文件abc的权限为 rw-r–r--...
2020-03-01 21:43:59
268
原创 Linux常用命令(二)
1.文件处理命令:touch功能:创建新文件1.1 touch示例:解释:在/test目录里,使用touch命令创建新的文件file.txt。1.2 touch示例:(touch后边的文件名加空格)解释:本意想使用touch命令创建一个文件,该文件名中间包含一个空格。但是实验之后发现这样并不能成功,而是创建了两个文件。1.3 touch示例:(touch创建的文件名必须包含一个空格...
2020-02-28 18:59:38
318
原创 Linux常用命令(一)
1.目录处理命令:ls英文助记:list功能:显示目录文件1.1 ls 示例:(不加任何选项的)1.2 ls -l 示例:(这个l可以理解为long,“长”显示,显示详细信息)详细解释:例如上图中的第二行信息:drwxr-xr-x. 2 root root 4096 12月 3 20:10 11111111111111第一个字母为d,代表的是目录(direct...
2020-02-27 20:50:39
4407
2
原创 Codes
server.cpp#include "httplib.h"#include <boost/filesystem.hpp>#include <iostream>#include <sstream>#include <fstream>#if 0void HelloWorld(const httplib::Request &req...
2019-08-22 15:05:10
365
原创 TCP三次握手、四次挥手
TCP三次握手建立连接,四次挥手断开连接1.三次握手建立连接:先来解释一下上图中的几个大写字母代表什么含义:SYN:同步序列编号(Synchronize Sequence Numbers),代表请求创建连接,所以在三次握手中前两次要SYN = 1,表示这两次用于建立连接。FIN: Finish,表示请求关闭连接。在下述的四次挥手时,FIN发了两遍,是因为TCP连接是双向的,所以一次FIN...
2019-06-15 22:13:34
129
原创 腾讯模拟面试题一
1. 野指针是什么?会引发什么问题?该如何避免?野指针是指向一个“垃圾内存”的指针,它的指向是随机的。而且它并不是空指针。引发的最大问题就是**内存泄漏。**内存泄漏不是物理上的内存的消失不见,而是由于操作失误对该段内存失去了控制权,从而造成内存的浪费。那我们该如何避免呢?首先,我们必须养成良好的编程习惯,尤其是在对指针进行操作时更应该注意。其次,我们在定义一个指针时,可以直接初始化让其...
2019-06-14 22:58:07
268
原创 C++之进阶模板
模板进阶1. 非类型模板参数模板参数分为:类型形参 与 非类型形参。类型形参:出现在模板参数列表中,跟在class或者typename之后的参数类型名称。非类型形参:就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。//定义一个模板类型的静态数组template<class T, size_t N = 10>class Array{...
2019-06-12 22:40:20
141
原创 C++之初阶模板
初阶模板1. 泛型编程引入:如何实现一个通用的交换函数呢?void Swap(int& left, int& right){ int temp = left; left = right; right = temp;}void Swap(double& left, double& right){ double temp = left; lef...
2019-06-12 18:20:49
194
原创 C++之关联式容器
注: 以下使用的接口均为部分接口。1. 序列式容器回顾:vector,list,dequeue,等都被称为序列式容器,因为其底层都是线性序列的数据结构,里面存储的是元素本身。2.关联式容器关联式容器也是用来存储数据的,它与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高。3. 键值对用来表示具有一一对应关系的一种结构,...
2019-06-09 18:29:29
698
原创 Linux之进程信号
1. 信号概述在Linux这个多用户多进程的系统中,信号的存在是必然的。信号可以理解为一个软中断,在某个条件下,系统会发出某个信号给正在运行的进程,通知进程需要执行某一特定的事件。1.1 在终端中查看常见的信号在终端输入命令"kill -l",可以看出Linux系统中的所有信号。(每个信号类型前面都有一个正整数,这个正整数与信号代表相同的含义,称之为信号编号)。信号的宏定义和编号都定义在s...
2019-06-08 22:21:08
226
原创 C++之多态性
1.初探多态性在面向对象方法中,所谓多态性就是不同对象收到相同消息,产生不同的行为。在C++程序设计中,多态性是指用一个名字定义不同的函数,这些函数执行不同但又类似的操作,这样就可以用同一个函数名调用不同内容的函数。换言之,可以用同样的接口访问功能不同的函数,从而实现“一个接口,多种方法”。事实上,在程序设计中经常会使用到多态性。最简单的例子就是运算符了,例如我们使用运算符+,就可以实现整型数...
2019-06-05 00:25:31
49830
15
原创 C++中的继承
1.为什么要使用继承继承性是一个非常自然的概念,现实世界中的许多事物都是具有继承性的。人们一般用层次分类的方法来描述他们的关系。例如,下图就是一个简单的汽车分类图:在这个分类树中建立了一个层次结构,最高一层是最普遍、最一般的,每一层都比它的前一层更具体,低层具有高层的特性,同时也有与高层的细微不同。例如,确定了一辆车是客车以后,没有必要再指出它可以进行运输,因为客车本身就是从运输汽车类中派生...
2019-06-02 22:41:24
41677
3
原创 C++ 实现二叉搜索树—BSTree
二叉搜索树的概念以及特性想必大家都有所了解,在这里主要讨论它的实现。具体算法思路见代码注释。//测试环境为VS2013#include <iostream>#include <stdlib.h>using namespace std;template <class T>struct BSTNode{ BSTNode(const T&...
2019-05-31 17:18:28
329
原创 Linux之线程小议
1.线程与进程的关系说到线程概念,必须先说明进程。进程是一个运行中的程序,在操作系统中,一个程序运行起来后就会被加载到内存中。操作系统创建了一个进程描述符(PCB)对程序的运行进行描述控制。因此进程就是PCB,在Linux下用task_struct结构体来描述。Linux系统下,用进程PCB来模拟线程,因此Linux下一个线程就是一个轻量级进程。如果说PCB称为了线程,那么进程就是线程组。一个进...
2019-05-14 10:40:28
110
原创 C语言——文件
1.文件概述“文件”是指一组相关数据的有序集合。这个数据集有一个名称,叫做文件名。通常情况下,使用计算机也就是在使用文件。在之前我们学习了输入和输出,即从标准输入设备(键盘)输入,由标准输出设备(显示器或打印机)输出。不仅如此,我们也常把磁盘作为信息载体,用于保存中间结果或最终数据。在使用一些文字处理工具时,会打开一个文件将磁盘的信息输入到内存,通过关闭一个文件来实现将内存数据输出到磁盘。这时的...
2019-05-11 17:35:16
418
2
原创 文件的输入/输出操作
1.文件I/O操作概述在Linux下,文件I/O操作可分为两类,一类是基于文件描述符的I/O操作,另一类是基于数据流的I/O操作。我们可以先来了解文件描述符和数据流这些基本概念。1.1 文件描述符简介所谓的文件描述符,就是进程与打开的文件的一个桥梁。通过这个桥梁,才可以在进程中对这个桥梁进行操作。在Linux环境下,每打开一个磁盘文件,都会在内核中建立一个文件表项,文件表项里存储着文件的状...
2019-05-09 10:27:02
1122
原创 Linux进程间通信——消息队列
1.概述消息队列是一种通过链表结构组织的一组消息。与其他两种进程间通信(共享内存、信号量)相同,都存放在内核中。多个进程通过消息队列的标识符对消息数据进行传送,实现进程间通信。2.消息队列的相关操作使用消息队列实现进程间通信,需要首先用msgget()函数创建一个消息队列,然后调用msgsnd()函数向该消息队列中发送指定的消息,通过msgrcv()函数接收该消息,最后调用msgctl()函...
2019-05-07 16:33:06
442
原创 Linux进程间通信——共享内存
1. 概述共享内存,顾名思义就是多个进程共享一块内存区域,在这一块内存区域上进行进程间通信。共享内存更加快速、更加方便,但效率高的同时,也带来了不便。当多个进程使用共享内存进行通信时,由于同时读写了一块共享内存,内存中的数据就会造成混乱,所以同步这个问题就需要特别注意。2. 共享内存相关操作共享内存就是通过两个或者多个进程共享同一块内存区域来实现进程间的通信。存放在共享内存中的数据是任何进程...
2019-05-07 09:06:50
405
1
原创 Linux进程间通信——管道通信
1. 进程间通信概述进程间通信(Inter-Process Communication, IPC)是指在两个或者多个不同得劲进程间传递或者交换信息,通过信息的传递建立几个进程间的联系,协调一个系统中的多个进程之间的行为。1.1 进程间通信的工作原理进程与进程之间是相互独立的,各自运行在自己的虚拟内存中。要想在进程与进程间建立联系,需要通过内核,在内核中开辟一块缓冲区,两个进程的信息在缓冲区中...
2019-05-05 18:36:48
15107
6
Qt-基于QTreeView实现最简单的拖放操作
2022-10-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人