自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 lua面向对象-----继承的实现

前言在lua里是没有类的概念的,但是可以利用表(table)和元表特性来实现面向对象和继承。lua的表类似于一个对象,每个对象都有自己的方法和属性。当访问一个表中不存在的属性时,系统不会直接返回错误,而是访问该表的元表中的 __index 元方法。 __index 元方法既可以是一个方法,也可以是一张表,当 __index 为表时,从 __index 指示的表中查询不存在的属性,当 __index 为方法时,访问不存在的属性会触发调用此方法。示例利用这一特性,继承可以如下来实现:local bas

2022-03-09 17:07:55 238

原创 在qmake中定义子项目的编译顺序(依赖关系)

背景当一个大项目中包含多个子项目时,往往子项目之间有依赖关系,这时需要在pro文件中指明子项目的编译顺序,否则编译整个项目的时候可能会失败。实现现有项目一名称为Porject1,包含三个子项目分别为SubProject1、SubProject2、SubProject3。依赖关系如下:SubProject2 ----> SubProject1SubProject3 ----> SubProject2//子项目2依赖子项目1,子项目3依赖子项目2 所以编译顺序依次为子项目1、子项目

2021-12-11 15:26:57 331

原创 Qt判断文件类型 QMimeType

前言通常来说我们判断一个文件的类型是根据后缀名称来的,例如:.txt是文本文件 .exe是二进制文件可执行程序。在程序中需要预设后缀名称,有些时候不太容易把属于某类文件的后缀名写全。比如说图片类型的文件,后缀名可以是.jpg .bmp .png等,甚至有些可能我们没接触过,但也属于图片文件,这个时候 QMimeType就派上用场了,它可以识别文件或者给定数据的类型。使用方法QMimeType要配合QMimeDatabase来使用,下面的代码实现了判断文本类型文件,使用了inherits来判断是因为,M

2021-09-15 13:54:35 445

原创 QFormLayout布局该什么时候使用

概述QFormLayout是一种支持两列的格子布局方式,左列是标签,右列是窗口部件。可以方便且快速的实现标签和输入组件的组合,如下图。示例像上面的例子,使用QGridLayout(栅格布局)也是可以实现的,但是远没有使用QFormLayout方便,对比如下:使用QGridLayout需要编写下面的代码 nameLabel = new QLabel(tr("&Name:")); nameLabel->setBuddy(nameLineEdit); emailLabel =

2021-09-04 11:06:35 34

原创 如何在程序中解析获取word文档(docx格式)的文本内容

原理docx格式的word文档其实是一个压缩包,文本内容、格式、图片等是分别存储在不同的文件中的,office通过这些文件还原出我们所看到的word文档。下面以一个简单的示例来说明docx格式。示例首先我们新建一个word文档,在里边写上“文档测试”,然后插入一张图片。然后我们把该文档的后缀改为“.zip”,使用压缩软件打开,可以看到里边的目录结构。word文件夹中存储的是文档内容,如下图:media文件夹的内容如下,正是我们插入的图片:document.xml的格式如下,可以看到我

2021-08-20 16:57:06 646

原创 如何在Qt中使用zlib

前言环境:qt5.9.9 、 zlib1.2.1、 windows10、QtCreator4.11.0本文介绍了在Qt中使用zlib的方式。使用的场景是在上位机软件中使用解压缩功能。点击此处下载本文完整的示例代码。问题比较麻烦的事情在于,截至目前最新的zlib支持到使用vs2015进行编译,而已有的上位机软件是使用minGW编译的,使用vs编译的dll库没办法在minGW中使用。现在摆在面前有两条路,一种是把上位机软件使用msvc重新编译,然后再使用vs2015编译的zlib库。另一种使用m

2021-08-19 15:53:09 638

原创 正则表达式的零宽断言

概念断言: 就是说正则可以指明在指定的内容的前面或后面会出现满足指定规则的内容。零宽: 代表断言是一个占位符,并不会在查找结果中输出。实例使用的测试原文如下:<w:t>测试1</w:t> <span>测试1</span>1. 正向先行断言语法:(?=pattern)作用: 返回pattern之前的内容。获取</w:t>标签之前的内容,正则表达式为:.*(?=</w:t>)匹配到的结果为:<w:t&gt

2021-08-12 17:07:58 36

原创 windows下如何找到占用文件或文件夹的程序

我们在操作一个文件或文件夹时,经常会遇到被占用的问题,如下图。绝大部分情况下我们知道是那些程序占用,可以直接关闭他,但是也有很多时候我们不知道是哪个程序占用的,可以用下面的方式来解决。第一步打开任务管理器,选择性能选项卡,点击下面的打开资源监视器按钮。第二步在资源监视器界面选择CPU选项卡,在其下方关联的句柄中输入被占用的文件或者文件夹的名称,然后点击搜索,搜索结果会显示在下方。第三步选择结果中的程序,点击右键结束任务即可。...

2021-08-04 14:20:08 1276

原创 解决windeployqt打包QML程序无法启动的问题

windeployqt.exe是qt自带的打包工具,在打包qml程序时需要带上–qmldir参数,指定qml导入符号的路径,否则会出现无法启动的问题。windeployqt xxx.exe --qmldir=D:\Qt\Qt5.9.9\5.9.9\mingw53_32\qml–qmldir后边的路径在qt的安装目录对应的编译器目录下名称为qml的目录。这里我构建程序使用的是mingw53_32所以打包的时候也要选择这个。...

2021-08-04 13:48:05 422 2

原创 linux下实时跟踪文件变化tail指令

很多时候我们程序进入后台之后,日志信息会写入到文件中。此时如果用一般的文件操作指令(例如cat),手动的一次一次的查看。tail命令在这个时候就非常有用。#使用-f参数指定要跟踪的文件tail -f 文件...

2021-07-31 19:31:46 456

原创 mysql_store_result和mysql_use_result的区别

An advantage of mysql_store_result() is that because the rows have all been fetched to the client, you not only can access rows sequentially, you can move back and forth in the result set using mysql_data_seek() or mysql_row_seek() to change the current ro

2021-07-30 12:02:09 233

原创 mysql_query()和myql_real_query()的区别

函数原型intmysql_query(MYSQL *mysql, const char *stmt_str)intmysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length)区别两者都是执行一条SQL语句,主要的区别在于mysql_query() 不能用于执行带二进制的语句,也就是参数stmt_str中不能有二进制

2021-07-29 10:52:46 182

原创 设置Mysql C API断线自动重连

Mysql的C API自带重连功能,执行语句时发现连接断开,mysql库会尝试重连,并重新执行语句。使用mysql_options函数设置MYSQL_OPT_RECONNECT选项可以开启自动重连功能。默认情况下自动重连功能是关闭的。示例如下:my_bool reconnect = 1; //设置为1是开启,设置为0是关闭mysql_options(&mysql, MYSQL_OPT_RECONNECT, &reconnect);注意自动重连会影响以下这些连接相关的状态:回滚

2021-07-29 10:18:54 128

原创 信息安全技术之数字签名

什么是数字签名?就类似于生活中公司发布一些文件(放假通知啥的),老板会在文件的后面签名或者会盖上公司的印章,目的就是标识这个文件是公司发布的。在计算机中我们没办法像真实世界那样签名,这时候我们就需要用到数字签名,数字签名就是一种可以唯一标识一个发送方的技术。数字签名的原理数字签名也是用到了非对称加密的技术,发送者有一对公私钥,公钥对外公布,私钥自己保留。发送数据时,使用私钥进行加密;接收方收到数据后使用发送方的公钥进行解密,这样就能唯一确定发送方了。#mermaid-svg-ERaW6thAUzIk

2021-07-28 11:47:10 216

原创 信息安全之信息摘要技术

什么是信息摘要?指一段数据的特征信息,当数据发生了改变,信息摘要也会发生改变。信息摘要是由哈希函数生成的。常见的摘要计算方法有MD5(128位输出)、SHA-1(160位输出)。信息摘要的特性输入不定,输出定长,即不管输入数据的长度是多少,都会产生固定长度的信息摘要不同的输入数据,产生的信息摘要一定是不同的单向性,即只能由输入数据产生摘要,而不能通过摘要反推出数据信息摘要的使用举例发送方A将原数据进行MD5摘要计算,并将计算的摘要附加到数据之后,发送给接收方B;B接收到数据后将数据部分取出

2021-07-28 10:18:28 188

原创 信息安全之数字信封原理

概述数字信封综合运用了对称加密和非对称加密的技术。原理信是对称加密的密钥,数字信封

2021-07-28 09:43:04 400 1

原创 信息安全之非对称加密技术

概念什么是非对称加密?数据的加密和解密的密钥是不同的,分为公钥和私钥,是公开密钥加密算法。公钥用于加密,私钥用于解密。任何人都可以获取数据接收方的公钥,但是密钥只有数据接收方自己知道。常见的非对称加密算法有RSA、Elgamal、ECC、背包算法、Rabin、D-H等。加密流程发送方A使用接收方B的公钥对明文进行加密,获得密文后进行传输;接收方用私钥对密文进行解密,获取明文数据。#mermaid-svg-fsUrVwJQQTssVUAS .label{font-family:'trebuche

2021-07-27 17:23:35 128

原创 信息安全之对称加密技术

概念什么是对称加密?数据的加密和解密的密钥(密码)是相同的,属于不公开密钥的加密算法。可以简单的类比成百度网盘的资源分享和提取的过程,资源拥有者分享资源时可以设置提取码,资源的使用者需要用相同的提取码才可以获得资源。常见的对称加密算法有DES、3DES、AES、RC-5、IDEA等。加解密流程如下图,发送方和接收方使用同一密钥K,发送方将明文使用密钥K经加密算法加密,生成密文后传输给接收方;接收方收到密文后使用密钥K经解密算法解密,最终获取到明文。#mermaid-svg-MazLrQL7os

2021-07-27 17:05:00 172

原创 解决QMYSQL driver not loaded问题

前言操作环境windows server2012+vs2010+qt4.8.7使用QtSqlDatabase时出现如下的提示,代表当前使用的QSqlDatabase没有mysql的驱动。解决办法有两种,一种是网上下载别人编译好的库文件,放到指定的目录下;另一种是自己编译mysql的插件。如何编译mysql插件一、编译准备需要如下两部分文件:qt源代码(安装qt的时候选择了安装源代码选项那么在qt的安装路径下就会有)mysql的库文件及头文件(同样也是安装mysql时选装的),如果未安装可以

2021-07-22 17:40:55 177

原创 .gitignore文件---让git自动忽略指定文件

前言使用git做版本控制的时候,在源代码目录有些文件是不希望加到版本控制中的,例如工程文件、临时文件等。但是每次提交更改的时候这些文件又都会蹦出来让我们选择创建,这样就很招人烦了,在 .git 的同级目录下增加一个 .gitignore文件就可以解决这个问题了。实例这是一个.gitignore文件的内容示例Debug*.dsp lib/a.dlltest.pdb第一行代表忽略当前目录下的Debug文件夹及其子文件第二行代表忽略所有以 .dsp 为结尾的文件,子文件夹中的也会被忽略第三

2021-07-21 15:12:11 777

原创 Qt动态更改界面语言(在运行状态下改变界面语言)

本文使用的Qt版本为5.9.9概述通常来说翻译文件都是在页面创建之前加载的,但也可以在不重启程序的情况下更改界面的语言。具体实现步骤如下:将翻译文件的加载放在槽函数中进行,通过事件触发来改变。在更改了翻译文件后,需要将程序中所有用户可见的字符串重新设置一遍。实例下面以实例来进行说明,界面如下,通过按钮来切换语言。我们需要准备一个翻译文件,将英文页面翻译为中文。完整的实例可以点击此处下载。在按钮的槽函数中使用qApp->installTranslator来加载翻译文件,使用qApp-

2021-07-14 14:22:21 338 3

原创 git如何撤销未提交的更改

本文介绍了如何将未提交到暂存区的代码进行撤销撤销指令git restore <file>... 后面可以指定路径或者文件。例如:#撤销当前文件夹的修改,可以这样写:git restore ./#撤销main.cpp的修改git restore main.cpp#撤销a.cpp和b.cpp的修改git restore a.cpp b.cpp实例在需要撤销的代码仓库中输入git status指令,git会给出提交和撤销的方法,如下所示:$ git statusOn

2021-07-13 14:24:20 707

原创 linux脚本开头的#!/bin/bash有什么作用

概述linux脚本的开头都有一行注释,例如: #!/bin/bash或者#!/bin/sh,这行注释的作用就是声明解析当前文件要使用的解释器。通常我们写的脚本都是包含各种系统命令,来实现定制功能的,所以都是使用bash和sh解释器的。解释器其实就是一个可执行程序。例如可以在脚本中使用#!/usr/bin/python来声明,这样运行脚本时就会使用python来解析。添加脚本前面的声明行就就类似于执行了下面的命令<解释器> <脚本文件>例如:#!/bin/bash 就等

2021-07-12 11:31:28 1212

原创 微信小程序将组件中的文字放置在正中间的方法

正常组件使用默认的属性时,只需要设置text-align属性为center即可,如下:demo.wxml<view class="test">测试</view>demo.wxss.test{ background-color: aqua; text-align: center;}效果图:如果此时将view组件的高度加高(设置height属性为100rpx)会出现下面的情况,文字在水平方向上的正中心,而不在垂直方向的正中心。解决方法如下,把文字单独放在一

2021-07-10 11:29:29 3767

原创 git本地仓库新建分支并推送到远端仓库

前提条件假设本地仓库主分支为master,新建的分支为develop,远端仓库只有mater分支。实现步骤1. 新建develop分支#指令语法 git checkout -b <分支> [源分支]#在当前分支的基础上新建并切换到一个分支,源分支是可选的,可以使用远端分支,不指定的话就是当前分支,建立分支的过程其实就是将原分支的内容复制一遍,注意这里只是建立一个本地分支,推送到远端需要使用下面的命令 #以本地的master为源分支新建分支git checkout -b devel

2021-07-09 09:47:45 436

原创 微信小程序无法找到组件的问题 [“usingComponents“][“component1“]:“xxx“未找到

一般是因为组件的路径不对导致的,引用组件的时候,要从根目录开始。

2021-07-08 15:07:58 5651

原创 微信小程序中text标签换行问题

在wxxml中加入text标签,当起始标签<text>和结束标签</text>都在一行的时候,文字不会换行<view class="zjkj" style="flex-direction:column;"> <text class="kjts">中国福利彩票双色球 {{expect}} 期开奖号码</text></view>效果如下:当起始标签<text>和结束标签</text>都不在一行的时候会

2021-07-08 13:07:18 1686

原创 微信小程序css之盒子(box)模型

概念在css的使用中,所有的元素都被理解成为一个盒子模型,这和QT中的盒子模型相同,如下图所示:Content: 这个区域是用来显示内容,大小可以通过设置 width 和 height.Padding: 包围在内容区域外部的空白区域,即内边距,大小通过 padding 相关属性设置。Border: 边框盒包裹内容和内边距。大小通过 border 相关属性设置。Margin: 这是最外面的区域,是盒子和其他元素之间的空白区域,即外边距,大小通过 margin 相关属性设置。分类(块级盒子和内

2021-07-07 17:29:01 1384

转载 语义化版本 2.0.0 -- 如何使用软件版本号

语义化版本 2.0.0摘要版本格式:主版本号.次版本号.修订号,版本号递增规则如下:主版本号:当你做了不兼容的 API 修改,次版本号:当你做了向下兼容的功能性新增,修订号:当你做了向下兼容的问题修正。先行版本号及版本编译信息可以加到“主版本号.次版本号.修订号”的后面,作为延伸。简介在软件管理的领域里存在着被称作“依赖地狱”的死亡之谷,系统规模越大,加入的包越多,你就越有可能在未来的某一天发现自己已深陷绝望之中。在依赖高的系统中发布新版本包可能很快会成为噩梦。如果依赖关系过高,可能.

2021-07-07 10:16:03 23

原创 微信小程序CSS Flexbox(弹性盒子)布局模块

容器中使用flexbox实例<div class="flex-container"> <div>1</div> <div>2</div> <div>3</div></div>含有三个项目的flex容器,其实就是一个普通的容器标签,在样式表中通过将他的display属性值设置为flex,就可以作为伸缩容器用了。.flex-container { display: flex;}fle

2021-07-06 23:13:13 437

原创 微信小程序学习之rich-text的嵌入静态HTML

最近开始学习制作小程序,微信的rich-text是支持table的,我测试着将福彩双色球的奖金对照表给搬了过来。下面是小程序实现的静态页面效果图。实现步骤首先打开福彩双色求的网站,找到要复制的部分,这里我们选中奖金对照表进行复制。在标签上点击右键选择“复制元素”,将html片段复制下来,放入rich-text的nodes属性中,这里要注意原来的片段中图片使用的是相对路径,需要复制其绝对路径,然后覆盖到img的src属性中。完整的代码如下:demo.js// pages/demo1/dem

2021-07-05 15:03:57 168

原创 C++的Lambda表达式的用法

语法结构[ 捕获列表 ](参数列表)->返回值{ 函数体 }[ capture list ] (parameters) -> return-type { method definition}组成元素说明捕获列表[ ]是lambda的引出符,捕捉列表能够捕捉父作用域的变量,来给lambda函数使用,可以取以下几种形式:[var] 表示以值传递方式捕捉变量var[=] 表示值传递捕捉所有父作用域变量[&var] 表示以引用传递方式捕捉变量var[&] 表示引用

2021-07-03 13:40:41 39

原创 结构型模式--Proxy代理模式

代理模式简介:客户端通过代理对象来访问实际的服务对象。代理控制着客户端对服务对象的访问,可以在发送请求给服务对象的前后进行自定义处理。代理类和服务类应都实现自同一个接口,这样既可以在不改变客户端和服务器端代码的情况下增加新的代理类,同时对客户端来说不必关心访问的到底是服务器还是代理。代理模式适合的应用场景(即代理模式的类型):1. 保护代理实现访问控制功能,如果希望只有拥有权限的客户对象才可以使用服务对象,就可以使用此模式。比如访问系统的操作日志,客户对象为普通用户,通过代理对象进行操作,.

2021-07-03 11:08:46 30

原创 StartUML4.0.1的使用方法

关于StartUMLStarUML是一款开放源码的UML开发工具,是由韩国公司主导开发出来的产品,可以直接到StarUML网站下载。StarUML是一个开源项目之一发展快、灵活、可扩展性强。便捷下载连接(v4.0.1版软件+破解工具):传送门破解过程首先安装StartUML,安装完毕后打卡会提示没有许可,如下图:打开破解工具asar文件管理工具.exe(杀毒软件可能报危险,选择信任就行),将安装路径(默认路径为C:\Program Files\StarUML\resources)下的

2021-07-02 12:44:52 485

原创 Qt实现关闭主/父窗口后同时关闭其他窗口的方法&&事件过滤器(eventFilter)的使用

实现的方式是使用Qt的事件过滤器,捕捉到主窗口关闭事件,调用系统退出函数(quit())停止程序运行。使用事件过滤器的步骤如下:1. 在需要用到的类中实现下面的函数。bool QObject::eventFilter(QObject *watched, QEvent *event)watched表示被监控的对象,event中存储了本次发生的事件。2. 在被监控的对象上调用installfilter函数注册过滤器#monitorObj为被监控的对象,filterObj是实现了过..

2021-07-01 14:15:39 376

原创 Qt样式表的使用setStyleSheet

样式表的示例如下面这段代码,这里是指定了QWidget类的背景颜色、字体大小和名称、前景色。这个样式表会应用的QWidget类以及其子类。QWidget{ background-color: rgb(255,255,0); color: rgb(255,0,0); font: 12pt "宋体";}样式表的语法样式法则由一个选择器(selector)和一些声明(declaration)组成,上例中,QWidget就是选择器,表明后面花括号中的样式声明应用于QWid

2021-06-30 17:32:14 825

原创 解决linux下程序运行时无法找到动态库的问题error while loading shared libraries

当编译完成的程序依赖某些第三方库时,没配置之前运行程序会报error while loading shared libraries的错误。实验环境为redhat6.9,假设第三方库存在/home/test/mylib下。解决此问题的方法主要有三种:1. 直接将库文件放入系统默认搜索路径下系统在进行链接的时候分别从默认路径和用户指定的路径搜索依赖库,默认的搜索路径有"/lib/","/lib64/","/usr/lib"和"/usr/lib64",前面两个是系统用的,最好不要向其中添加别的库文

2021-06-25 18:28:54 228

原创 ceph-deploy常见问题处理

1. ceph-deploy install节点异常使用purge指令删除节点,或者未进行任何操作,执行了安装节点命令后,出现大量的包无法安装的情况,此时考虑是ceph软件源的问题,如果更换源仍然无法解决,最好还是重装吧!!2. 无法实现节点的仲裁查看前面有没有出现问题,如果此问题单独出现,需要检查hosts文件与主机名是否一致。3. CEPH集群无法初始化OSD问题安装ceph的osd时.运行清空磁盘命令ceph-deploy disk zap node3-ceph /dev/s

2021-06-25 14:02:31 501

原创 ceph基本环境搭建 使用cephadm

cephadm的安装cephadm工具是官方推荐使用的工具,这个工具是V15版本octopus之后新增的工具,可以用来安装和管理ceph工具,这个工具不支持之前的版本的配置。下载脚本cephadmcurl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm使用这个命令有可能会无法下载,采用网上的方式在/etc/hosts下将IP地址和网址名进行写入,这样

2021-06-25 13:49:43 622

原创 CRC循环冗余校验原理

原理解释原理是找出一个能整除多项式的编码(即校验码),最终发送的数据由两部分组成,原始数据+校验码。校验码越长检验错误的能力越强,只能校验错误,无法纠正错误。生成多项式的概念类型为无系数的一元多次方程,例如,将其转换为二级制编码才能进行计算,转换的规则是:依次从低位到高位依次写出方程中未知数的n次幂的有无情况,有的记为'1',没有的记为'0',上面的多项式就可以转换为1011,如表格所示。 3次幂 2次幂 1次幂 0次幂 多项式 ...

2021-06-24 13:14:31 109

空空如也

空空如也

空空如也

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

TA关注的人

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