自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 boost库读写json格式文件

本文通过boost库,版本为1.84。对json格式文件创建和解析的一个简单的Demo。生成过程中可能会用到库,需要指定库路径。本文通过单个key字段进行值的获取。也有其它方式比如key1.key2.key3.xxx获取值,每一个key代表一个节点。

2024-01-17 17:13:09 578

原创 QTCreator 打开 CMake工程CMakeTestCCompiler.cmake模块报错

将QtCreator所在目录加入到环境变量PATH中,即可解决上述问题。

2023-05-04 14:41:45 801

原创 C++ 17/20/23可变参数模板类继承使用示例(低于c++17可参考)

C++ 17/20/23可变参数模板类继承使用示例(低于c++17可参考)

2022-06-16 17:28:30 542

原创 纯C++实现信号槽

前言通过纯C++代码编写类似QT的信号槽功能。其实就是观察者模式。#include <iostream>#include <vector>using namespace std;template <typename TParam>class SlotBase{public: virtual void slotFunction(TParam param) = 0; ~SlotBase() = default;};templa

2022-05-12 19:01:23 846

原创 解决VMware Tools安装后不工作不生效问题和共享目录挂载后失效问题

前言出现安装VMware Tools后不工作问题的环境: 1 虚拟机版本:VMware Workstation16 2 ubuntu版本:ubuntu-22.04-desktop-amd64解决步骤1 执行sudo apt-get autoremove open-vm-tools2 安装VMware Tools3 reboot重启4 安装open-vm-tool (此步骤最为重要,open-vm-tool 为官方推荐的开源版本,这里是安装其中...

2022-05-02 15:40:19 7532 1

原创 QT编译MySQL驱动

环境准备1 mysql开发包,C API 6.1.11 2Qt5.14.2 安装时勾选源码,本文使用的是这个版本,主要是勾选源码 mysql开发包获取及安装1 获取:MySQL :: Download MySQL Connector/C (Archived Versions)2 根据主机选择合适的版本,下载下来后双击进行安装3 安装时选择 custom,可以对安装路径修改,然后一路下一步即可。驱动编译配置1 使用qt打开mysql驱动源码路径: ......

2021-12-04 17:43:16 952

原创 Qt_线程同步_信号量_QSemaphore

#include <QCoreApplication>#include <thread>#include <QSemaphore>#include <iostream>const int DataSize = 50; // 要生产/消费的数据量const int BUFSIZE = 5; // 缓冲区/队列大小int buff[BUFSIZE] = {0}; // 缓冲区/队列QSemaphore freeBuffe.

2021-11-15 20:37:28 474

原创 Linux_addr2line命令,将程序地址转换为代码所在行

参考:addr2line

2021-11-03 14:01:42 33

原创 jsonCPP序列化,反序列化实例

前言 通过jsoncpp库,解析json文件转换为自定义的结构。在内存中操作完成后,将结构转换为json串。在某些场景可能存在一些问题,欢迎指正,共同进步。#include <iostream>#include <json/json.h>#include <map>#include <string>#include <list>#include <memory>#include <fstream...

2021-09-09 14:30:59 624

原创 Linux 解析命令行参数

前言 本章以代码形式提供命令行解析Demo,虽然解析形式有千万种,但我最中这一种啊。其实是在阅读源码时候看到的,我就给提出来了。代码#include <getopt.h> std::atomic<int> g_msgCount(1);class Args {public: Args() : body("msgbody for test"), thread_count(std::thread::ha...

2021-08-31 15:06:37 253

原创 Linux网络_高并发之epoll

前言 本章主要对多路复用IO接口epoll进行详细的使用说明和其它多路复用IO接口(poll,select)与epoll的主要区别。建议在linux内核版本2.6以上使用。区别 在linux中有三种多路复用模型分别是select、poll、epoll。select能监听的文件描述符最大1024,单纯的改变进程的打开文件描述符个数并不能改变select监听文件的个数,如果要进行更改需要修改内和文件并重新编译内核。解决1024以下的客户端时使用selec...

2021-08-29 13:44:17 48

原创 C++协程之Boost.Coroutine2使用

前言 线程处于进程之中,协程处于线程之中,线程有系统内核调度,而协程有程序员自己调度。一个线程可以有多个协程,而且只要内存足够,一个线程中可以有任意多个协程;但某一时刻只能有一个协程在运行,多个协程分享该线程分配到的计算机资源。协程是追求极限性能和优美的代码结构的产物。 使用过程中需要包含#include <boost/coroutine2/all.hpp>,链接动态库:-lboost_coroutine -lboost_context。关于使用boost库错误...

2021-08-24 17:00:34 2033

原创 Linux_strace_追踪进程使用到的系统调用

前言strace是个功能强大的Linux调试分析诊断工具,可用于跟踪程序执行时进程系统调用(system call)和所接收的信号,尤其是针对源码不可读或源码无法再编译的程序。在Linux系统中,用户进程不能直接访问计算机硬件设备。当进程需要访问硬件设备(如读取磁盘文件或接收网络数据等)时,必须由用户态模式切换至内核态模式,通过系统调用访问硬件设备。strace可跟踪进程产生的系统调用,包括参数、返回值和执行所消耗的时间。若strace没有任何输出,并不代表此时进程发生阻塞;也可能程序进...

2021-08-20 16:32:12 229

原创 C++智能指针std::shared_ptr循环引用坑

前言 本章对智能指针std::shared_ptr是如何形成循环引用做出说明。智能指针的循环引用会导致内存得不到正确的释放。示意图代码#include<memory>// 定义两个类class B;class A{ public: std::share_ptr<B> pointer; // 指向B类的智能指针对象};class B{ public: std::share_ptr&lt...

2021-08-18 16:40:29 239

原创 C/C++的可变参数函数之C风格

前言 可变参函数有C++版本通过模板实现和C风格通过函数和宏定义实现,本章对C风格的可变参函数做详细讲解,C++版本后面再上。函数和类型 实现可变参功能,需要引用头文件#include<stdarg.h>,还要熟悉类型va_list和一个宏va_arg两个函数va_start,va_end。va_list类型 其实va_list就是char* 的typedef。va_arg宏原型: type va_arg(va_list ap...

2021-08-18 14:55:52 264

原创 C++中获取代码块的执行时间

简介有一百种办法获取程序的执行时间,无非就是在目标代码块之前获取一次当前时间,在目标代码块之后获取一次,然后做一次时间差,然后再根据时间单位进行显示。虽然很多,但是总是忘,每次用的时候都要查下资料,所以这次记录下c++11标准实现的方法。废话不多说“野性”上代码.头文件#include <chrono>实现代码int main(){ ... auto t1 = std::chrono::steady_clock::now(); // 获取开始计算时

2021-08-06 16:22:04 690 2

原创 Linux中Qt环境编译链接依赖opencv库时报错

错误信息1: error: pictext.o: undefined reference to symbol '_ZN2cv6String10deallocateEv'2: libopencv_core.so.3.4:-1: error: error adding symbols: DSO missing from command line解决方法在pro工程文件中添加:LIBS += -Lopencv_PATH -lopencv_core...

2021-08-06 14:54:05 366

原创 QT与JavaScript交互

简介 本篇主要对QT与JavaScript的交互方法通过代码进行详细说明,实现的QT版本是 4.8.7,QT += webkit。完整代码中包含启动html调试窗口的方法。QT中调用JS函数// 调用js中的无参无返回值,名为QtCallNoParam的函数ui->qwebView ->page()->mainFrame()->evaluateJavaScript(QString("QtCallNoParam()"));// 调用js中的有两个参数...

2021-08-02 16:48:09 3872

原创 #pragma与_Pragma

C90为预处理指令家族带来一位新成员:#pragma。一般情况下,大家很少见到它。#pragma的作用是为特定的编译器提供特定的编译指示,这些指示是具体针对某一种(或某一些)编译器的,其他编译器可能不知道该指示的含义又或者对该指示有不同的理解,也即是说,#pragma的实现是与具体平台相关的。_Pragma是C99提供新的关键字,与#pragma功能类似。(在_MSC_VER平台是__pragma,两个下划线且p是小写。)#pragma为了让大家了解#prag...

2021-07-28 16:07:22 1013

原创 QJSON的使用介绍之读篇

上一页:QJSON的使用介绍之写篇简介读Json除会用到写时需要的类,还需要QJsonParseError用于在将文件数据转换为Json格式数据时的错误接收。本章例子,将前面写到文件中的json读取到QJson中。为了多次读方便,封装一个通用的读JSON函数,提供给下面的例子使用:/** * outDoc: 保存解析结果。 * fileName: 要解析的json文件名称 * return: 成功:true, 失败: false */bool readFile(QJson

2021-07-09 15:50:57 3163

原创 QJSON的使用介绍之写篇

简介QJson已经在QT5中集成到了QtCore模块中,在使用QJson时不需要额外引入其它模块。C++常用的Json库:JsonCpp,CJSON,QJson本文主要介绍QJSON,在将QJson数据写入到文件主要会用到有关QJSON的三个类:1 QJsonArray:json数组类,类似QVariantList2QJsonObject:json对象类,类似QVariantMap3QJsonDocument:json文档类,主要将用于转换json与ByteArray格式数据..

2021-07-09 11:01:25 1324

原创 SMTP协议的使用

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,尽管邮件服务器可以用SMTP发送、接收邮件,但是邮件客户端只能用SMTP发送邮件,接收邮件一般用IMAP或者POP3。邮件客户端使用TCP的25号端口与服务器通信。SMTP在1982年首次被定义在RFC 821,在2008它被更新为扩展的SMTP协议,补充在文件 RFC 5321,扩展的协议是目前使用最广泛的协议。

2021-06-23 16:19:30 1363

原创 POP3协议的使用

第1章 POP3概述POP3全称为Post Office Protocol version3,即邮局协议第3版。它被用户代理用来邮件服务器取得邮件。POP3采用的也是C/S通信模型,对应的RFC文档为RFC1939。该协议非常简单,所以我们只重点介绍其通信过程,而相关的一些概念和术语请参考RFC文档或另外一篇文章《SMTP协议分析》第2章.POP3详解2.1通信过程用户从邮件服务器上接收邮件的典型通信过程如下。1)用户运行用户代理(如Foxmail, OutlookExpr...

2021-06-21 10:38:55 2793

原创 OpenSSL使用说明

概念: 签名验签,是为了验证对方的身份。 加密解密,是对数据进行加密,明文变密文。----------签名,验签1 A -> B 发送文件,并对其签名1.1 生成私钥,对文件签名 a. 生成私钥:openssl genrsa -out rsa_key.private b. 签名:openssl dgst -md5 -out messages.sign -sign rsa_key.private messages (对message文件进行MD5摘...

2021-06-18 14:25:12 182

原创 IMAP协议的使用

关于imap协议的介绍,在网络中有很多资料。要是更好的掌握还是参考《RFC3501》协议文档。本文只做简单的使用介绍,分为在telnet中使用和在c++代码中调用。telnet 命令行zho

2021-06-13 17:13:35 827

转载 POP3、IMAP、SMTP协议介绍和区别

POP3是Post Office Protocol 3的简称,即邮局协议的第3个版本,它规定怎样将个人计算机连接到Internet的邮件服务器和下载电子邮件的电子协议。它是因特网电子邮件的第一个离线协议标准,POP3允许用户从服务器上把邮件存储到本地主机(即自己的计算机)上,同时删除保存在邮件服务器上的邮件,而POP3服务器则是遵循POP3协议的接收邮件服务器,用来接收电子邮件的。...

2021-06-13 13:16:02 1609

原创 linux-系统调用之umask()函数

函数原型:mode_t umask(mode_t mask)mask:八进制位掩码值return: 返回上一次的掩码值,没有失败只有成功。

2021-06-13 13:00:48 339

原创 解决VMware_Ubuntu虚拟机中鼠标滚轮不流畅问题

1 解决鼠标滚轮不流畅,要用到etc/x11/xorg.conf,要确认系统中是否存在这个配置文件,如果没有这个文件通过步骤2进行生成,有过有则跳过步骤2.2 Ubuntu自9.10开始没有自带的xorg.conf文件。如果用户的屏幕分辨率或刷新频率需要调整,X里面却没有相应的分辨率与频率 (比如说我装的是Ubuntu10.04,显示器不能识别,最高的适合分辨率也就800×600,而且刷新频率也很低,最多只有60Hz,看起来非常不习惯), 系统里又找不到xorg.conf文件,只能自己创建...

2021-06-09 22:06:02 12060 6

原创 Linux环境下Boost库编译配置

===> boost安装配置4.1 下载地址: http://www.boost.org4.2 yum -y install gcc-c++ python-devel bzip2-devel zlib-devel4.3 解压,tar xvf boost_1_75_0.tar.bz2 cd 进入解压后的文件夹4.4 执行脚本并设置安装目录:sudo ./bootstrap.sh --prefix=/usr/local/boost4.5 执行命令:sudo ./b2 install -j5 --

2021-06-06 14:27:53 118

原创 Linux环境libcurl编译安装及环境配置

获取libcurl网址:https://github.com/curl/curl/releases

2021-06-06 13:13:29 512

原创 Linux环境openssl v1.1.1编译及环境配置

获取OpenSSLhttps://www.openssl.org/source/

2021-06-06 12:09:25 820

空空如也

空空如也

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

TA关注的人

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