自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Kleopatra的使用教程

选择之前生成的文件sha1sum.txt,为绿色代表加密验证成功。更改sha1sum.txt的绝对路径为相对路径。

2025-01-20 16:04:04 504

原创 第二十二章、Qt的网络编程

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。TCP 拥塞控制算法(也称 AIMD 算法)。该算法主要包括四个主要部分:慢启动、拥塞避免、快速重传和快速恢复。TCP 通信必须建立 TCP 连接(客户端和服务器端),Qt 提供QTcpSocket 类和 QTcpSer ver 类专门用于建立 TCP 通信程序。服务器端用 QTcpSer ver 监听端口及建立服务器;

2024-11-14 19:15:00 342

原创 第二十一章、Qt对XML文件进行读写操作详解

可扩展标记语言 (Extensible Markup Language, XML) ,标准通用标记语言的子集,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML 是标准通用标记语言可扩展性良好,内容与形式分离,遵循严格的语法要求,保值性良好等优点。QDomAttr 表示 QDomElement 的一个属性QDomCDATASection 表示一个 XML CDATA 片段QDomCharacterData 表示 DOM 中的通用字符串。

2024-11-13 19:00:00 189

原创 第二十章、Qt使用JSon进行文件操作

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。易于人阅读和编写,可以在多种语言之间进行数据交换。同时也易于机器解析和生成,并有效地提升网络传输效率。采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。JSon 文件扩展名是.json。JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名。JSON是一个序列化的对象或数组。

2024-11-12 18:00:00 149

原创 第十九章、Qt读写INI配置文件操作详解

ini 文件是 Initialization File 的缩写,即初始化文件,是Windows 的系统配置文件所采用的存储格式。文件扩展名:配置文件名称.ini。比如项目中的配置文件是整个项目共用的,假设:数据库配置.ini。除了windows现在很多其他操作系统下面的应用软件也有.ini文件,用来配置应用软件以实现不同用户的要求。一般不用直接编辑这些.ini文件,应用程序的图形界面即可操作以实现相同的功能。它可以用来存放软件信息,注册表信息等。

2024-11-11 20:52:22 179

原创 第二章 Qt自定义控件——标题栏升级版

在企业开发中,当做一款软件时,肯定会接触到标题栏的设计。在Qt中QWidget以及QMainWindow或者QDialog虽然有自带的标题栏,但是都不美观。如果想自定义美观的标题栏,我们需要自己重写标题栏,话不多说,上视频。以下就是我们自己定义的标题栏,现在我来教一下如何实现这个界面。这个标题栏可以用在自己的企业开发中。现在我们来看一看源码:public:protected:private://很重要= nullptr)*/= nullptr)

2024-07-25 08:19:28 648

原创 VS2019编译和使用gtest测试(C++)

下载下来解压到文件夹,再在文件夹里面新建一个build文件夹,如下:再安装cmake,可以先检查一下是否安装了cmake,打开命令窗口,输入cmake -version:然后双击就对了,我这里已经安装好了,无法提供截图,注意一点就是在让选择是否建立系统环境变量(path)的时候,记得勾上第二个建立系统环境变量!下载好之后,记得检验一下是否安装成功,如果在普通用户下显示没有,建议用管理员身份打开命令窗口,再次尝试。之后命令窗口进入创建的build文件夹路径里面执行cmake ../

2024-07-24 11:32:27 862

原创 解决VS2019+Qt联合开发双击Resource Files弹不出资源编辑器问题

目录一、右键Resource.qrc文件二、选择打开方式三、鼠标选择Qt Resource Editor,并设置为默认值四、最后点击确定,再次双击qrc文件,成功打开

2024-07-23 16:17:33 731

原创 第一章 Qt自定义控件——标题栏

在企业开发中,当做一款软件时,肯定会接触到标题栏的设计。在Qt中QWidget以及QMainWindow或者QDialog虽然有自带的标题栏,但是都不美观。如果想自定义美观的标题栏,我们需要自己重写标题栏,话不多说,上视频。以下就是我们自己定义的标题栏,现在我来教一下如何实现这个界面。这个标题栏可以用在自己的企业开发中。

2024-07-22 17:10:44 1136 1

原创 Qt制作动态库详细步骤(一看就会,超简单)

qt生成动态库详解

2024-07-18 14:58:23 3070 1

原创 网络编程——滑动窗口

在图中,我们可看出灰色1号2号3号包已经发送完毕,并且已经收到Ack。4、5、6、7号包是黄色的,表示已经发送了。要等4号-10号包有接下来的动作后,我们的包才会继续往下发送。接下来的操作就是一样的了,确认包后,窗口往后移继续将未发送的包读进缓存,把“待发送“状态的包变为”已发送“。维持发送方/接收方缓冲区,缓冲区是用来解决网络之间数据不可靠的问题,例如丢包,重复包,出错,乱序。通过商定包的重传机制等一系列操作,来解决不可靠的问题。如果一直等不到的话,我们也会把读进缓存的待发送的包也一起发过去。

2024-07-16 18:45:00 342

原创 Protobuf详解与使用

protobuf是一种比json和xml等序列化工具更加轻量和高效的结构化数据存储格式,性能比json和xml真的强很多,毕竟google出品。官网:所有的message必须定义到一个文件中,且文件的后缀名为.proto。例如我们定义的bike.proto文件//响应代号//验证码//失败原因// 手机号码// 验证码// 响应代号// 验证码// 手机号码// 充值金额// 响应代号// 验证码// 最新的余额// 响应代号// 验证码// 响应代号。

2024-07-16 17:00:49 2165

原创 LIBEVEN框架安装详解以及使用

从LAMP说起: 是一个缩写,它指一组通常一起使用来运行动态网站或者服务器的自由软件Linux - 操作系统Apache- 网页服务器MySQL- 数据库管理系统(或者数据库服务器)PHPPerl或Python- 脚本语言使用信号驱动I/O时,当网络套接字可读后,内核通过发送SIGIO信号通知应用进程,于是应用可以开 始读取数据。该方式并不是异步I/O,因为实际读取数据到应用进程缓存的工作仍然是由应用自己负责的。

2024-07-16 17:00:13 931

原创 TCP——分包和粘包

分包发送方发送字符串”helloworld”,接收方却分别接收到了两个数据包:字符串”hello”和”world”发送端发送了数量较多的数据,接收端读取数据时候数据分批到达,造成一次发送多次读取;

2024-07-16 16:45:00 819

原创 第八章——网络编程TCP/UDP详解

下层协议通过封装为上层协议提供服务。应用程序数据在发送到物理网络上之前,将沿着协议栈从上往下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时也包括尾部信息),以实现该层的功能。七层协议模型 (open system interconnection)服务器收发、客户方发送、接收。服务器接收、客户端发送。

2024-07-15 17:30:00 329

原创 同步IO、异步IO以及五种网络IO模式

当用户进程调用了select,那么整个进程就会被block,而同时,kernel会 “监视”所有select负责的socket,当任何一个socket中的数据准备好了,select就会返回。很显然,这种IO模型是同步的。有一天,学校里面优化了热水的供应,增加了很多水龙头,这个时候小明同学再去装水,舍管阿姨告诉他这些水龙头都还没有水,你可以去忙别的了,等有水了告诉他。: 小明去打开水,而开水塔此时没有水,开水塔的阿姨叫小明把水壶放到现场,来水后会帮他打好水,并打电话叫他来取,这是异步IO的一种案例。

2024-07-15 14:14:00 2213

原创 第七章——Linux线程的详细概念和通信方式详解

使用fork创建进程以执行新的任务,该方式的代价很高。多个进程间不会直接共享内存线程是进程的基本执行单元,一个进程的所有任务都在线程中执行,进程要想执行任务,必须得有线程,进程至少要有一条线程,程序启动会默认开启一条线程,这条线程被称为主线程或 UI 线程线程,是进程内部的一个控制序列。即使不使用线程,进程内部也有一个执行线程。类比:创建一个进程,类似于“克隆”一个家庭。该“家庭”与原来的家庭完全相同但是新“家庭”和原来的家庭完全独立。进程包含一个或多个线程。

2024-07-14 19:30:00 694

原创 Epoll——详解

如果这次没有把数据一次性全部读写完(如读写缓冲区太小),那么下次调用 epoll_wait()时,它还会通知你在上没读写完的文件描述符上继续读写,当然如果你一直不去读写,它会一直通知你!如果系统中有大量你不需要读写的就绪文件描述符,而它们每次都会返回,这样会大大降低处理程序检索自己关心的就绪文件描述符的效率!如果这次没有把数据全部读写完(如读写缓冲区太小),那么下次调用epoll_wait()时,它不会通知你,也就是它只会通知你一次,直到该文件描述符上出现第二次可读写事件才会通知你!如何解决事件与 连接。

2024-07-13 20:51:43 714

原创 第六章——Linux进程的详细概念和通信方式详解

消息队列,用于从一个进程向另一个进程发送数据。但仅把数据发送到一个“队列”中,而不指定由哪个进程来接受。消息队列,独立与发送消息的进程和接收消息的进程。(信号、管道、命名管道都不独立与发送和接收进程)消息队列,有最大长度限制:MSGMNB消息队列中的单条消息,也有最大长度限制:MSGMAX信号量,是一种特殊的变量。只能对信号量执行P操作和V操作P操作, 如果信号量的值 > 0, 则把该信号量减1如果信号量的值 ==0, 则挂起该进程。

2024-07-13 18:45:00 878

原创 iniparser开源库详解

INI(Initialization File)文件是一种简单直观的数据存储格式,常用于配置应用程序的初始化设置。这种文件通常包含若干个节(section)和键值对(key-value pairs)。INI文件的每一部分都是自描述性的,易于阅读和编辑,使得非程序员也能轻易理解并修改配置参数。INI文件因其简单易用性而在许多编程语言中广泛应用,尤其是在Windows操作系统中,很多应用程序都采用INI文件作为配置文件。

2024-07-12 17:15:00 1050

原创 C++——内存检测工具Visual Leak Detector的安装以及使用详解

【代码】C++——内存检测工具Visual Leak Detector的安装以及使用详解。

2024-07-12 10:11:53 2593 1

原创 Valgrind内存检测工具

Valgrind是运行在Linux上一套基于仿真技术的程序调试和分析工具,作者是获得过Google-O'Reilly开源大奖的Julian Seward,它包含一个内核──一个软件合成的CPU,和一系列的小工具,每个工具都可以完成一项任务──调试,分析,或测试等,内存检测,我们可以使用它的工具:Memcheck。用来检测c/c++程序中出现的内存问题,所有对内存的读写都会被检测到,一切对malloc()/free()/new/delete的调用都会被捕获。

2024-07-11 18:15:00 420

原创 Linux使用gtest单元测试详解

gtest是Google的一套用于编写C++测试的框架,可以运行在很多平台上(包括Linux、Mac OS X、Windows、Cygwin等等)。基于xUnit架构。支持很多好用的特性,包括自动识别测试、丰富的断言、断言自定义、死亡测试、非终止的失败、生成XML报告等等。

2024-07-11 16:30:00 656

原创 几种常见的项目日志使用方法

在通常情况下,Linux/UNIX每个程序在开始运行的时刻,都会打开3个已经打开的stream. 分别用来输入,输出,打印诊断和错误信息。可以被fprintf、fread等函数使用,他们在程序开始启动后,stdin, stdout, and stderr 的文件描述符是 0, 1和2,其它的文件描述符则排在其后。如果我们实在要用printf或者fprintf去生成日志的话,最好还是加上这些信息,__FILE__ __LINE__ __FUNCTION__, __DATE__, __TIME__。

2024-07-10 16:25:22 888

原创 gdb调试与Coredump

gdb是GNU 发布的一个强大的程序调试工具,也是Linux 程序员不可或缺的一大利器。本章我们将给出gdb 常用的命令的操作说明。

2024-07-10 15:48:26 1178

原创 Makefile的详细讲解

你或许听过好几种 Make 工具,例如GNU Make,QT 的qmake,微软的MS nmake,BSD Make(pmake),Makepp,等等。这些 Make 工具遵循着不同的规范和标准,所执行的 Makefile 格式也千差万别。这样就带来了一个严峻的问题:如果软件想跨平台,必须要保证能够在不同平台编译。而如果使用上面的 Make 工具,就得为每一种标准写一次 Makefile ,这将是一件让人抓狂的工作。

2024-07-10 15:34:58 965

原创 第五章 服务器——并发处理

通俗的并发通常是指同时能并行的处理多个任务。

2024-07-10 15:22:21 596

原创 第四章 Linux实现高并发http服务器

HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。

2024-07-10 15:09:41 658

原创 【Qt5】入门Qt开发教程,一篇文章就够了(详解含qt源码)

Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。Qt框架默认提供的标准信号和槽不足以完成我们日常应用开发的需求,比如说点击某个按钮让另一个按钮的文字改变,这时候标准信号和槽就没有提供这样的函数。但是Qt信号和槽机制提供了允许我们自己设计自己的信号和槽。声明在类的signals域下没有返回值,void类型的函数只有函数声明,没有定义可以有参数,可以重载。

2024-07-09 15:19:20 15687 4

原创 QT入门看这一篇就够(详解含qt源码)

Qt是一个跨平台的C++图形用户界面应用程序框架。它为应用程序开发者提供建立图形界面所需的所有功能。它是完全面向对象的,很容易扩展,并且允许真正的组件编程。Qt框架默认提供的标准信号和槽不足以完成我们日常应用开发的需求,比如说点击某个按钮让另一个按钮的文字改变,这时候标准信号和槽就没有提供这样的函数。但是Qt信号和槽机制提供了允许我们自己设计自己的信号和槽。声明在类的signals域下没有返回值,void类型的函数只有函数声明,没有定义可以有参数,可以重载。

2024-07-09 15:17:58 6218

原创 QMimeData的使用以及说明文档

1、可以使用setData()将自定义数据作为QByteArray直接存储在QMimeData对象中。2、将QMimeData子类化,然后重新实现hasFormat(),formats()和retrieveData()。3、如果拖放操作发生在单个应用程序中,则我们可以将QMimeData子类化,并在其中添加额外的数据,并在接收者的drop事件处理程序中使用qobject_cast()。//直接访问myData的数据(不通过QMimeData的API)

2024-07-08 17:14:02 2010

原创 QClipboard类的使用以及说明文档

QClipboard类提供了对窗口系统剪贴板的访问。继承了QObject。二、QClipboard的公有成员voidclear()bool() constbool() constbool() constvoidbool() constdata() constvoidsetDataQStringtext() constQStringtextvoidsetTextQImageimage() constQPixmappixmap() constvoidsetImagevoidsetPixmap。

2024-07-08 16:58:17 1388

原创 第十八章 Qt的补充知识

自定义菜单栏需继承自新建桌面应用程序testQMenuCustom,基类QMainWindow,勾选创建界面文件,其他选项默认。当前项目添加C++类MyAction,继承自QWidgetAction,编辑myaction.h文件。

2024-07-06 16:30:00 129

原创 第十六章 Qt的文件处理操作详解

QFile需要使用 / 作为文件分隔符,不过,它会自动将其转换成操作系统所需要的形式。例如 C:/windows 这样的路径在 Windows 平台下同样是可以的。QFile主要提供了有关文件的各种操作,比如打开文件、关闭文件、刷新文件等。我们可以使用QDataStream或QTextStream类来读写文件,也可以使用QIODevice类提供的read()、readLine()、readAll()以及write()这样的函数。

2024-07-05 19:15:00 120

原创 第十七章 Qt的文件读写以及Qt事件详解

Qt样式表是一个可以自定义部件外观的强大机制,样式表的概念、术语、语法均受到HTML的层叠样式表(Cascading Style Sheets,CSS)的启发。样式表可通过QApplication::setStyleSheet()函数将其设置到整个应用程序上,也可以使用QWidget::setStyleSheet()将其设置到指定的部件或子部件上,不同级别均可设置样式表,称为样式表的层叠。样式表也可通过设计模式编辑样式表。

2024-07-05 13:30:00 124

原创 第十五章 Qt的QGraphics View绘图框架详解

使用自定义视图,重载视图的鼠标事件(实现鼠标事件处理函数),在鼠标事件处理中,发送消息(同时把鼠标位置在视图坐标系中的坐标作为参数传递出去) 最后在主场景中,接受消息,做需要的处理。Q_OBJECTpublic:protected://重载鼠标事件signals://添加两个自定义信号//直接移动鼠标就会触发 mouseMoveEvent 事件// 判断是否是鼠标左键触发的事件//鼠标位置在这个视图的视图坐标系下的坐标。

2024-07-04 20:45:00 366

原创 第十四章 Qt绘图

QPainterDevice 绘图设备,被绘制的对象,也就是一个二维界面,比如:QWidget, QPixmap, QImage 绘图设备,给 QPainter 提供一个“画布”窗口坐标系,默认就是:painter.setWindow(0, 0, 绘图设备的宽度,绘图设备的高度)从而,使得绘图和绘图设备隔离开来(相互独立),使绘图功能,能够自动适用于不同类型、 不同大小的设备。绘图时,不需要关注实际绘图设备的大小,以及程序在使用过程中绘图设备大小的变化。使用指定的颜色,对多个路径所围成的区域,进行填充。

2024-07-03 16:30:00 184

原创 第十三章 Qt的多窗口开发

MDI 使用 QMdiArea 作为多个子窗体的容器。这些子窗体,可以同享使用主窗体的工具栏和菜单栏, 适合,需要进行多个文档编辑的场景,类似 VS 的编辑界面。因为对话框窗口,不显示标题栏的时候,就不能直接拖动窗口,需要结合鼠标的拖动事件, 实现窗口的拖动效果。注意: 项目中使用了上一节章节中使用多个文件,拷贝过来后,需要修改后才能导入到项目中。Qt 提供了 MDI(多文档界面),可以更方便的实现多个窗口的开发。实现以上相关函数即可。

2024-07-03 09:45:00 180

原创 可变数据打印VDP简介

传统印刷从古至今发展到现在,在印刷行业有着不可磨灭的作用和地位,但是随着数字印刷的普及和发展,为满足个性化印刷的需求,可单张起印,张张内容不同的可变数据打印()和数码印刷机应运而生,在目前具有高要求的防伪印刷中得到了广泛的应用。

2024-07-03 09:40:11 913

原创 Ngnix——线程池实现剖析

一旦工作进程需要处理某个可能“阻塞”的操作,不用自己操作,将其作为一个任务放到线程池的队列,接着会被某个空闲线程提取处理。活动的线程需要消耗系统资源,如果启动太多,会导致系统由于过度消耗内存或“切换过度”而导致系统资源不足。创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在处理实际的用户请求的时间和资源要多得多。单个进程或线程同时只能处理一个任务,如果有很多请求需要同时处理怎么办?- 按顺序保存待处理的任务序列,等待线程中的线程组处理。- 待处理的工作,通常由标识、上下文和处理函数组成。

2024-07-03 09:06:09 458

TFS淘宝分布式核心存储引擎

通过参考淘宝开源分布式架构内剥离的核心存储引擎,是非常好的开源学习资料,自写的。

2024-06-10

Android studio小游戏

欢迎大家下载,基础android studio开发的小游戏,使用的是java语言。

2023-06-14

Qt小程序系统驾校管理系统

Qt小程序系统驾校管理系统

2023-05-29

Android课设五子棋小游戏程序

Android课设五子棋小游戏程序

2023-05-29

Qt翻金币小游戏详细教程(内涵所有源码、图片资源)

翻金币小游戏

2023-05-29

空空如也

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

TA关注的人

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