自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【网络】WebSocket协议详解

在这种情况下,除了最后一个帧外,其他所有帧的FIN字段都将被设置为0,以指示这些帧只是消息的一部分。而最后一个帧的FIN字段将被设置为1,以指示消息的结束。: 载荷数据,如果没有设置Mask字段,这里的数据可以直接使用,如果设置了Mask字段,这里的数据还需要解除掩码之后才可以直接使用。握手过程中使用的,这个字段包含一个随机生成的字符串,用于生成最终的握手密钥,验证客户端和服务器之间的连接安全。: 表示的是有效载荷的长度,这个字段的长度的可变的,最小占据7个bit位,或7+16或7+64bit。

2024-08-30 01:35:49 1007

原创 【Protobuf】Protobuf进阶

在protobuf禁止修改任何已有字段的字段编号。protobuf在编码字段的时候实际上是将字段值、字段类型、字段编号一起进行编码的,而在反序列化的时候就是根据反序列化中的字段编号将字段值反序列化到对应字段,如果我们更改了已存在的字段的编号,那么很有可能造成数据错位或者数据丢失;若是移除老字段,要保证不再使用移除字段的字段编号。正确的做法是保留字段编号(使用reserved的关键字),以确保该编号将不能被重复使用。不建议直接删除或注释掉字段!和bool是完全兼容的。

2024-08-22 08:00:00 930

原创 【Protobuf】Protobuf 语法介绍

在单个.proto文件中可以定义多个消息体,且支持定义嵌套类型的消息(任意多层),每个消息体中的字段编号可以重复。这里我们可以将phone提取出来,单独成为一个消息:编译这个文件,生成C++ 头/源文件,我们继续看其内部生成的方法,这里我们只关注「自定义对象」的操作方法。这里我们还可以将phone进行嵌套在People中:使用嵌套,生成的操作方法和在外面单独定义phone父作用域的名称和下划线。除了这两种方式以外我们还可以将这个phone。

2024-08-19 13:49:13 1063

原创 【Protobuf】初识 ProtoBuf

在。

2024-08-12 18:11:16 1037

原创 【Qt】Qt日志信息处理

Qt有五种级别的调试信息。Info: 提示信息qDebug:调试信息qWarning:警告信息qCritical:严重错误qFatal:致命错误Qt4提供了,Qt5提供了,对qInfo 、qDebug、qWarning、qCritical、qFatal等函数输出信息的重定向处理。,这里我们主要介绍Qt5提供的是一个回调函数,由qInfo 、qDebug、qWarnng、qCritical、qFatal 宏进行触发,这些函数处理的消息文本会被所指向的回调函数截获,允许用户自己来处理输出的消息文本。

2024-08-04 08:00:00 336

原创 【Fiddler】如何使用Fiddler模拟弱网环境

打开fiddler,默认情况下Rules->Performance->Simulate Modem Speeds是未勾选状态,此时网络正常。当选中此选项后,网速就会变慢,打开网页就会加载很久,这样就实现了弱网效果。而fiddler是一个非常好用弱网模拟工具,适合模拟弱网环境进行测试,问题复现,然后给到开发调优处理。注释的也很明白,Delay sends by 300ms per KB uploaded.上传1KB需要300ms,转化一下上传速度:1KB/0.3s = 10/3(KB/s)

2024-07-25 08:30:00 981

原创 【Qt】Qt属性动画

Qt动画框架提供了一种对 GUI 元素进行动画处理的简单方法,它使开发者能够对Widget或QObject的 Qt 属性值进行动画处理,该框架提供的大多数功能在Qt Quick中也可用,可以在其中以声明方式定义动画。在本概述中,我们将解释了其体系结构的基础, 并且提供一些的最常见动画处理技术的示例。

2024-07-14 08:00:00 1184

原创 【MySQL】MySQL 程序工具包

在我们正常安装MySQL时,MySQL会为我们安装一个MySQL工具包,这个工具包内包含了MySQL中所有的可执行程序。以下是常用的MySQL程序:程序名作用mysqldMySQL的守护进程即 MySQL 服务器,要使用MySQL 服务器 mysqld必须正在运行状态mysqlMySQL客户端程序,用于交互式输入 SQL 语句或以批处理模式从文件执行SQL的命令行工具mysqlcheck用于检查、修复、分析和优化表的表维护客户端mysqldump。

2024-07-09 08:00:00 828

原创 【软件测试】测试用例的设计方法

最简单的测试用例是测试的纲要,仅仅指出要测试的内容,如探索性测试中的测试设计,仅会指出需要测试产品的哪些要素、需要达到的质量目标、需要使用的测试方法等。这里要说明的是对于每一个应用软件系统,非功能特性的质量需求都是存在的,但是不同的项目类型对各个非功能特性的要求是不一样的,这个需要根据具体的项目、具体需求和不同产品应用的特点进行分析。外部大型复杂网络应用系统,比如电子商务,网上银行,视频网站(腾讯,优酷)等,除了有复杂的系统的功能测试需求外,在系统的性能,安全性,兼容性,容错性,可靠性等都有很高的要求。

2024-07-04 08:00:00 931 1

原创 【软件测试】软件测试的基本概念

严谨的来说:当且仅当规格说明是存在的并且正确,程序运行结果与规格说明之间是不匹配的就称为一个bug。当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。bug的定义每个公司都不一致,在定义级别之前需要查看公司规范。Blocker(崩溃):出现了阻碍开发或测试工作的问题,造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据库连接错误,主要功能丧失,基本模块缺失等问题。

2024-06-30 08:00:00 985

原创 【软件测试】开发模型和测试模型

瀑布模型将软件生命周期划分:需求分析,计划、、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序。瀑布模型在软件工程中占有重要地位,是所有其他模型的基础框架。瀑布模型的每一个阶段都只执行一次,因此是线性顺序进行的软件开发模式。

2024-06-21 08:00:00 979

原创 【软件测试】软件测试入门

最常见的理解是:软件测试就是找BUG,发现软件的问题。考试考完以后对答案——测试我们的答案的正确性。下载完一个软件后打开运行——测试这个软件能否正确运行。软件测试就是验证软件产品特性是否满足用户的需求。早期,人们更多的将测试看成是对软件产品“检验”,检查软件的每个功能是否运行正常。1983年,将软件测试定义为:软件测试就是一系列活动,这些活动是为了评估一个程序或者软件系统的特性或能力,并确定是否达到了其预期的效果。测试试图验证软件是“工作的”,也就是验证软件功能执行的正确性。

2024-06-17 20:09:03 1242

原创 【C++】STL空间配置器

容器,算法,迭代器, 空间配置器,适配器,仿函数。为各个容器进行高效的内存管理(内存的申请与回收)的。

2024-06-12 08:00:00 1034

原创 【C++】深入理解decltype和decltype(auto)

decltype关键字是C++11新标准引入的关键字,它和关键字auto的功能类似,也可以自动推导出给定表达式的类型,但它和auto的语法有些不同,auto推导的表达式放在的右边,并作为auto所定义的变量的初始值,而decltype它的语法像是函数调用,但它不是函数调用而是运算符,和sizeof运算符类似,在编译期间获取他的类型,表达式expr不会被真正执行,因此不会产生汇编代码。decltype和auto用auto定义变量时必须提供初始值表达式,利用初始值表达式推导出类型并用它作为变量的初始值,使用。

2024-06-09 08:00:00 1263

原创 【C++】 使用CRT 库检测内存泄漏

内存泄漏的检测工具有很多,大多数的内存泄漏检测工具都要我们手动安装才能使用,但是CRT(C 运行时库)库,是自带的,所以我们可以开箱即用,无需安装其他的内存泄漏检测工具。CRT检测内存泄漏原理内存分配要通过CRT在运行时实现,只要在分配内存和释放内存时分别做好记录,程序结束时对比分配内存和释放内存的记录就可以确定是不是有内存泄漏。

2024-06-07 08:00:00 792

原创 【CMake】CMake入门(五)打包安装程序 使用CMake管理库 打包调试版和发行版

本篇文章不是新手入门教学文章,主要是记录笔者个人的学习笔记。

2024-06-03 08:00:00 1601

原创 【CMake】CMake入门(四)生成器表达式 安装与测试 系统特性检测 自定义命令以及输出文件

CTest是CMake的测试工具,它可以自动化运行单元测试,收集测试结果并生成报告。使用方式根目录加。使用add_test添加测试。使用添加测试的属性# 用法 关键字 测试名称 关键字 执行的命令 参数# 示例# 用法 测试名称 关键字 属性 值# 示例这里PROPERTIES可以设置的参数有很多,这里设置的表示以正则表达式进行匹配结果。在Linux中,有许多的工具命令,例如lsmvmkdir等。

2024-05-31 08:00:00 1187

原创 【CMake】CMake入门(二)流程控制 if while foreach 数学表达式 函数定义

在cmake中我们也可以定义函数,cmake 提供了function()# 用法<commands>...name函数名arg参数# 示例func(1 2)# 结果-- 1-- 2在CMake中对于一个函数的参数,可以传递多于该函数要求的参数个数,但是不能少于。ARGC传入该函数的参数个数。ARGV传入该函数的参数形成的列表ARGN未命名的参数形成的列表访问ARGV列表中对应下标中的元素# 示例# 结果-- arg1=1-- arg2=2-- ARGC=5。

2024-05-28 08:00:00 993

原创 【CMake】CMake入门(三)常见的cmake脚本指令 日志输出 CMake内置的变量

如果一个项目里边的源文件很多,在编写CMakeLists.txt文件的时候不可能将项目目录的各个文件一一罗列出来,这样太麻烦也不现实。中的信息写入到头文件中,再编译到so库文件或者可执行程序中,这样,就可以通过提供库文件的接口或者可执行程序的打印中得到这些值了。文件复制为输出文件,并把其中的变量引用替换为CMakeLists.txt中定义的变量,如果变量未定义,则替换为空串。输入文件默认路径为CMakeLists.txt所在的路径,输出文件的路径默认为cmake生成文件所在的路径。为当前项目添加子目录。

2024-05-23 08:00:00 693

原创 【CMake】CMake入门(一)CMake介绍 常见的cmake命令行命令 变量的定义 预定义宏

CMake变量的底层原理CMake中的变量本质上都是字符串,即使存储的是数字或者布尔值,它们在内部都是以字符串的形式表示的。变量的作用域和生命周期,在CMake中,变量的作用域可以是全局的,也可以是局部的,这取决于你在哪里设置它们。全局变量:在CMakeLists.txt的顶层设置的变量。它们在整个项目的所有目录中都是可见的。局部变量:在函数或宏内部设置的变量。它们只在该函数或宏内部可见。变量解析和引用, 在CMake中,通过的语法来引用变量。

2024-05-20 08:00:00 1253

转载 【Qt】 Qt6 MySQL驱动手动编译

找到Qt安装文件夹走以下路径:Qt安装文件夹\Qt\6.5.0\msvc2019_64\bin。找到Qt安装文件夹走以下路径:Qt安装文件夹\Qt\6.5.0\mingw_64\bin。首先我们需要下载MySQL驱动的源码。首先第一步还是处理源码,不过我们下载的源码并不是Visual Studio项目,我们得把下载的源码转换成Visual Studio的项目。首先确定你用的编译器是哪个,是mingw还是msvc(Qt Creater用的是mingw编译器,Visual Studio用的是msvc编译器)。

2024-05-05 18:59:03 318

原创 【Qt】设置QT标准对话框为中文字体

所以我们需要使用Qt官方提供的翻译文件来将这些英文翻译为中文。在Qt中我们使用的标准对话框都是英文,例如下面的。最后再次执行程序弹出的就是中文对话框了!,但是实际中我们需要构建的是中文对话框。版本这个文件的存放路径也不一样。中进行管理,然后再次执行。如果还是不行的话,可以将。的安装目录中的,不同的。版本以上使用下面的代码。版本以下使用下面的代码。这个文件是存放在你的。

2024-04-19 17:57:54 1222

转载 【MySQL】事务的写写并发

行锁,就是针对数据表中行记录的锁。比如事务A更新了一行,而这时候事务B也要更新同一行,则必须等待事务A的操作完成之后才能进行更新行锁是锁住单个记录的锁,防止其他事务对其update、delete的操作,在RR和RC隔离级别中都支持。行锁是通过锁住索引来实现的在多个事务并发更新数据的时候,都是要在行级别加独占锁的,这就是行锁。

2024-04-08 19:12:33 109

原创 【Git】git status中文文件名编码问题解决

在默认配置下,查看文件状态,中文文件名在工作区状态输出,中文名不能正确显示,而是显示为八进制的字符编码。,就可以解决中文文件名称在这些Git命令输出中的显示问题。通过将git配置变量。

2024-03-29 09:00:00 260 1

原创 【C++】STL 标准模板库

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

2024-03-27 10:55:44 579 2

转载 【MySQL】解决visual studio 中使用mysql数据库出现乱码问题

在windows下使用读写mysql数据库时,会遇到碰到乱码的问题,这是因为mysql内部使用的编码是utf8,而中使用的是gbk。

2024-03-25 20:18:40 137

原创 【Qt】Qt代码格式化配置

【代码】【Qt】Qt代码格式化配置。

2024-03-19 21:57:52 506

原创 【项目】C++ 基于多设计模式下的同步&异步日志系统

前言一般而言,业务的服务都是周而复始的运行,当程序出现某些问题时,程序员要能够进行快速的修复,而修复的前提是要能够先定位问题。因此为了能够更快的定位问题,我们可以在程序运行过程中记录一些日志,通过这些日志我们便能够很容易地了解程序的运行状态,以及程序崩溃时的一些信息,有了这些信息我们便能够更好的定位问题以及分析问题了。本项目代码地址:日志系统C++ 基于多设计模式下的同步&异步日志系统前言日志系统的必要性项目相关介绍1、功能2、开发环境和工具3、核心技术4、环境搭建日志系统技

2024-03-13 02:13:18 1567 20

原创 【编程小记】在Windows下使用C/C++代码判断一个文件是否被其他进程占用

参数参数名描述lpFileName要创建或打开的文件的名称。以何种方式打开文件,读,写,读写文件的共享模式,0表示以独占模式打开文件。一个指针,与文件安全有关。一般情况下设置为NULL,表示此函数返回的句柄不能被子进程继承,并且返回的句柄关联的文件获得默认安全描述符。要对存在或不存在的文件执行的操作。一般设置为,表示只有存在文件才打开,文件不存在,则该函数将调用失败,记录错误。一般情况下直接设置为。当创建文件时以什么为模板进行创建文件。一般不使用,我们设置为NULL。返回值。

2024-03-06 21:19:54 913 2

原创 【MySQL】使用C语言连接数据

对象中保存着一行数据,这一行数据中可能包含多个字符串,对应就是这行数据中的多个列信息,因此MYSQL_ROW本质就是。建立好链接之后,获取英文字符是没有问题,但是如果是获取中文则是乱码,因为MySQL默认连接的编码格式采用。而对数据库中的数据进行查询操作时,除了需要知道有没有成功,还需要获取查询结果。编译运行我们的代码,发现确实向表中新插入了两条数据,并且数据没有乱码。当我们对数据库中的数据进行增删改操作时,我们只关心操作有没有成功。为了确保我们能够正常的将库引入进我们的代码中,我们可以先使用。

2024-02-20 08:30:00 1784 8

原创 【MySQL】用户管理

由于我们创建的这个用户可以从任意地方登录,因此如果你在Windows下也安装了MySQL,那么就可以在Windows的cmd窗口进行远程登录。上面的三个字段也是最重要的字段,所以以后我们进行查看用户相关的信息时,为了避免刷屏可以使用部分字段进行显示。需要注意的是,MySQL中可以存在同名的用户,只要这些同名用户对应的登录主机不同即可,因为。如果用户存在,赋予权限的同时修改密码,如果该用户不存在,就是创建用户。下的表,发现普通用户只能看到经过授权的表,或者数据库。表中存储的就是MySQL中用户相关的信息。

2024-02-16 08:30:00 1389 16

原创 【MySQL】视图

视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。下面用员工表和部门表作为测试表,员工表中的ename代表的是员工的姓名,deptno代表的是员工所在部门的部门号。如下:部门表中的dname代表的是部门名,deptno代表的是部门的部门号。

2024-02-07 08:30:00 997 4

原创 【MySQL】深入理解隔离性

如果修改一下SQL的执行顺序,在两个终端各自启动一个事务后,直接先让左终端中的事务对表中的信息进行修改并提交,然后再让右终端中的事务进行查看,这时右终端中的事务就直接看到了修改后的数据。查询时应该进行当前读还是快照读,则是由隔离级别决定的,在读未提交和串行化隔离级别下,进行的都是当前读,而在读提交和可重复读隔离级别下,既可能进行当前读也可能进行快照读。RR级别下快照读只会创建一次Read View,所以RR级别是可重复读的,而RC级别下每次快照读都会创建新的Read View,所以RC级别是不可重复读的。

2024-02-03 08:30:00 943 4

原创 【MySQL】事务管理

事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。事务主要用于处理操作量大,复杂度高的数据。比如转账就涉及多条SQL语句,包括查询余额(select)、在当前账户上减去指定金额(update)、在指定账户上加上对应金额(update)等,将这多条SQL语句打包便构成了一个事务。

2024-01-31 09:00:00 1383 14

原创 【MySQL】索引

数据库表中存储的数据都是以记录为单位的(也就是一行数据),如果在查询数据时直接一条条遍历表中的数据记录,那么查询的时间复杂度将会是ONO ( N )ON。索引的价值在于提高海量数据的检索速度,只要执行了正确的创建索引的操作,查询速度就可能提高成百上千倍。当一张表创建索引后,在数据库底层就会为表中的数据记录构建特定的数据结构,后续在查询表中数据时就能通过查询该数据结构快速定位到目标数据。索引虽然提高了数据的查询速度,但在一定程度上也会降低数据增删改的效率。

2024-01-28 08:30:00 1223 10

原创 【MySQL】内外连接

表的连接分为内连和外连。

2024-01-25 08:30:00 1779 12

原创 【MySQL】 复合查询

通过下面的练习能够评估你的SQL查询的基本功。雇员信息表数据库文件部门编号(deptno),部门名称(dname),部门所在地点(loc)。等级(grade),此等级最低工资(losal),此等级最高工资(hisal)。1.1 查询工资高于500或岗位为MANAGER的员工,同时要求员工姓名的首字母为大写的J1.2 查询员工信息,按部门号升序而员工工资降序显示1.3 使用年薪进行降序排序1.4 显示工资最高的员工的名字和工作岗位我们发现这样的SQL是能够满足我们的要求的,但是这样写法有一些散乱,我们其实

2024-01-20 08:00:00 1194 10

原创 【MySQL】内置函数

strcmp函数用于逐字符按照ASCII码比较两个字符串的大小,两个字符串大小相等返回0,前者大返回1,后者大返回-1。:例如现有如下成绩表,要求以“恭喜XXX,你的语文是XX分,数学是XX分,英语是XX分!”的格式显示成绩表中的信息。:当有些时候我们发现数据库中的字符,有的乱码有的正常显示我们就可以通过这种方式进行排查是否是字符集出了问题。该函数的使用很简单,我们只要将我们想要拼接的字符串放进该函数中就行了,此外。: 对于多字节字符来说,不同编码中一个字符所占的字节个数是不同的,比如。

2024-01-17 08:00:00 1257 12

原创 【MySQL】聚合函数与分组查询

注意本题目要求的是数学成绩的个数,不是数学成绩的值,这意味着我们需要对相同的数学成绩的值进行先去重,然后再进行聚合统计,对于去重我们可以使用。:聚合函数用来计算一组数据的集合并返回单个值,通常用这些函数完成:个数的统计,某列数据的求和,某列数据的最大值,最小值,或者是平均值。不知刚才你注意到没,前面我们进行聚合统计时都是在对整张表进行聚合统计,但是有时我们想要对不同的情况进行分别统计。函数是没有办法达到我们想要的目的的,但是如果我们先对班级中的男女生进行分组,然后又分别进行聚合统计,使用。

2024-01-12 09:00:00 2702 22

原创 【MySQL】表的增删改查

表的增删查改简称CRUD:Create(新增),Retrieve(查找),Update(修改),Delete(删除)。CRUD的操作对象是对表当中的数据,是典型的DML语句(Data Manipulation Language 数据操作语言)。

2024-01-08 09:00:00 1277 18

C++ STL库源代码(SGI版本)

C++ STL库源代码(SGI版本)

2024-06-04

空空如也

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

TA关注的人

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