自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(151)
  • 资源 (1)
  • 收藏
  • 关注

原创 RTMP协议解析

流媒体协议解析

2022-08-23 13:56:01 891 1

原创 C++虚函数表深度剖析

C++基础

2022-07-18 23:20:13 471

原创 muduo源码剖析 - Poller

muduo源码剖析

2022-07-15 17:58:21 315

原创 muduo源码剖析 - Buffer

muduo源码剖析

2022-07-15 13:52:23 269

原创 muduo源码剖析 - TcpServer

muduo源码剖析

2022-07-15 11:13:40 298

原创 muduo源码剖析 - TcpConnection

muduo源码剖析

2022-07-14 22:05:29 596 2

原创 muduo源码剖析 - Acceptor

muduo源码剖析

2022-07-14 12:58:27 177

原创 muduo源码剖析 - EventLoopThreadPool

muduo 源码剖析

2022-07-13 19:53:43 259

原创 muduo源码剖析 - EventLoopThread

mudo源码剖析

2022-07-13 13:31:52 187

原创 muduo源码剖析 - Channel

muduo源码剖析

2022-07-13 11:43:48 230

原创 muduo源码剖析 - EventLoop

muduo源码剖析

2022-07-07 12:03:30 369

原创 muduo源码剖析 - worker线程池剖析

1、ThreadPool的成员变量: /* 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。 但是,有些时候,我们需要在const的函数里面修改一些跟类状态无关的数据成员,那么这个数据成员就应该被mutalbe来修饰。 */ mutable MutexLock mutex_; Condition notEmpty_ GUARDED_BY(mutex_); //GUARDED_BY, 由...守护 Condition n

2022-05-23 11:15:34 273

原创 Muduo源码剖析

muduo源码剖析

2022-04-23 23:16:57 996 2

原创 C++ emplace_back

概述在C++11中,在引入右值的升级后,调用push_back变的更为高效,原本需要调用构造函数构造这个临时对象,然后调用拷贝构造函数将这个临时对象放入容器中。在C++11升级后,只需要调用构造函数,然后调用移动拷贝函数。就好比,现在手里有个面包,要把这个放到面包袋子里,原来的逻辑是,生产一个面包,然后在面包袋子里根据生产的面包再复制一个一摸一样的,在引入右值引用升级之后,现在的push_back的逻辑是,生产一个面包,然后把这个面包挪到袋子里(也就是移动拷贝)而不是再照着这个面包复制一个新的。

2021-11-15 16:07:12 5107

原创 std::enable_shared_from_this使用场景

在很多场合,经常会遇到一种情况,如何安全的获取对象的this指针,一般来说我们不建议直接返回this指针,可以想象下有这么一种情况,返回的this指针保存在外部一个局部/全局变量,当对象已经被析构了,但是外部变量并不知道指针指向的对象已经被析构了,如果此时外部使用了这个指针就会发生程序奔溃。既要像指针操作对象一样,又能安全的析构对象,很自然就想到,智能指针就很合适!那么智能指针如何使用呢?现在我们来看一段代码。#include <iostream>#include <memor

2021-11-01 10:39:33 417

转载 负载均衡解析

你管这破玩意儿叫负载均衡? (qq.com)20 张图让你彻底掌握负载均衡的秘密! (qq.com)

2021-10-03 19:32:52 90

转载 Linux环境变量解析

Linux环境变量配置全攻略 - 悠悠 (uusama.com)

2021-09-29 10:40:18 77

原创 验证当前机器是大端还是小端

方法一 int data = 0x12345678; char *cp = (char*)&data; //取4字节中的低地址字节 if(*cp == 0x78) cout << "little" << endl; if(*cp == 0x12) cout << "big" << endl;

2021-09-27 11:48:56 97

原创 QT客户端框架(http + websocket+QML)

本框架是在个人在做项目中总结出来的一套Qt客户端框架,基于http调用接口和websocket接收服务器通知,前端使用qml。 其中业务请求逻辑使用的是C++逻辑。为了后期方便使用,特此记录下来方便以后客户端的搭建。框架简介:1.本框架采用Qml写前端页面,页面逻辑使用JS, 请求接收逻辑采用C++。2.事件中转单例,qml和C++可同时开发,通过事件中转隔离前端和逻辑。3. 基本配置文件类和全局变量类和调试类使得开发业务更加方便。4.C++多线程部分亲测没问题。业务请求和接收全部在自己

2021-09-13 10:37:29 3054

原创 智能指针详解

一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::shared_ptr、boost::scoped_array、boost::shared_array、boost::wea

2021-09-09 22:13:28 1581

原创 pro文件找不到自己编译的Qt模块和库

背景:编译完QTAV,并且拷贝了库、模块、头文件到Qt安装目录下。但是测试时出现了问题QT无法识别到这两个模块解决办法:

2021-06-15 15:27:18 515

原创 ffmpeg解封装解码

#define __STDC_CONSTANT_MACROS//Windowsextern "C"{ #include <libavutil/imgutils.h> #include <libavutil/samplefmt.h> #include <libavutil/timestamp.h> #include <libavformat/avformat.h>};#define __STDC_CONSTANT_MA.

2021-06-02 10:33:20 433

转载 ffmpeg音频的基本概念

1. 采样率 采样设备每秒抽取样本的次数2.音频格式及量化精度(位宽) 每种音频格式有不同的量化精度(位宽),位数越多,表示值就越精确,声音表现自然就越精准。FFMpeg中音频格式有以下几种,每种格式有其占用的字节数信息:正在上传…重新上传取消enum AVSampleFormat { AV_SAMPLE_FMT_NONE = -1, AV_SAMPLE_FMT_U8, ///< unsigned 8 bits AV_SAM...

2021-05-31 19:40:02 409

原创 OpenCV拉流显示和保存

#include <QCoreApplication>#include <opencv2\opencv.hpp>#include <iostream>#include <QDebug>using namespace std;using namespace cv;#define qdebug qDebug()<<"["<<__FILE__<<":"<<__LINE__<<"]"<&

2021-05-22 14:25:59 1072 1

转载 Qt右键菜单栏

https://blog.csdn.net/a1076464123/article/details/102622951

2021-05-21 11:05:04 100

转载 Mysql初始化密码错误 Ubuntu16.04 ERROR 1698 (28000): Access denied for user ‘root‘@‘localhost‘ 解决流程

https://www.cnblogs.com/py1612919884/p/9327015.html添加链接描述

2021-05-11 20:04:31 188

原创 C++17之for循环新能力

遍历map容器#include <map>#include <iostream>using namespace std;map<string, int> map;map["Apple"] = 10;/* key为string类型,value为int类型 */for (auto [key, value] : map) { cout << key << " " << value << endl;}.

2021-05-10 16:25:14 1341

原创 更换Ubuntu软件源

由于Ubuntu官方软件源太慢了,换回国内的软件源这样快很多。1. 备份源配置文件sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak2. 修改配置文件sudo gedit /etc/apt/sources.list覆盖sources.list配置文件的内容:#清华大学软件源deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe m

2021-05-10 15:58:19 150

原创 Qt连接MySql数据库(本地和远程数据库均可)

两种方法:一、自己编译Qt 的MySQL数据库驱动插件。二、使用QDBC设置mysql为数据源库(推荐)方法二1. 添加ODBC数据源,在控制面板中找到管理工具,其中有ODBC数据源 64位的,打开后添加2 . 如果数据源没有Mysql,需要安装mysql的ODBC驱动程序http://dev.mysql.com/downloads/connector/odbc/5.1.html3. 选择 unicode的编码格式.MYSQL Connector/ODBC 提供了两个版本,一个是 ANS

2021-05-09 17:34:14 8004 4

转载 QtHttpServer的使用

https://blog.csdn.net/MrTsai_cpp/article/details/116114884?spm=1001.2014.3001.5501

2021-04-26 13:52:24 793

原创 Qt服务器程序打包后TLS初始化失败

提示错误:qt.network.ssl: QSslSocket::startServerEncryption: TLS initialization failed出问题时的环境: 服务器部署在新windows10,什么环境都莫得。分析原因: 打眼一看就是openssl没安装出问题的。直接解决方法:新windows10安装Openssl即可[http://slproweb.com/products/Win32OpenSSL.html] (http://slproweb.com/products/Wi

2021-04-22 21:08:25 1211

转载 Qt项目通用类-----------常用控件Qss

qsshelper.h#ifndef QSSHELPER_H#define QSSHELPER_H#include <QObject>#include <QPushButton>#include <QLineEdit>#include <QProgressBar>#include <QSlider>#include <QRadioButton>class QssHelper : public QObject{

2021-04-20 19:54:27 270

原创 Qt项目通用类----------调试类

之前:qDebug()等调试信息。 缺点:没有行号和函数名等调试当项目调试输出特别多时,容易混乱 不知道是那里输出的调试信息。现在:将行号,文件名,函数名,组合一体之后再输出信息。一目了然就能知道此信息在哪里输出。debughelper.h#ifndef COMMONHELPER_H#define COMMONHELPER_H#include <QFile>#include <QDebug>//调试所用宏#define xdebug (QDebug(QtDebu

2021-04-20 13:06:36 160

原创 Qt项目通用类----------消息对话框类

messagedialoghelper.h#ifndef MESSAGEDIALOGHELPER_H#define MESSAGEDIALOGHELPER_H#include <QObject>#include <QTableView>#include <QInputDialog>#include <QDate>class MessageDialogHelper : public QObject{ Q_OBJECTpublic:

2021-04-20 12:53:19 210

原创 Qt项目通用类----------网络工具类

networkhelper.h#ifndef NETWORKHELPER_H#define NETWORKHELPER_H#include <QObject>class NetWorkHelper : public QObject{ Q_OBJECTpublic: explicit NetWorkHelper(QObject *parent = nullptr); //判断IP地址及端口是否在线 static bool ipLive(const Q

2021-04-16 12:13:07 220

转载 QEventLoop 的使用

QEventLoopQt介绍:At any time, you can create a QEventLoop object and call exec() on it to start a local event loop. From within the event loop, calling exit() will force exec() to return.在任何时候,你都可以创建一个QEventLoop的对象,然后调用它的exec() 来开始一个局部的事件循环。然而并看不懂什么意思和

2021-04-15 16:43:42 769

原创 Qt项目通用类----------文件Dialog操作

QFileHelper.h#ifndef QFileHelper_H#define QFileHelper_H#include <QObject>#include <QGuiApplication>class QFileHelper : public QObject{ Q_OBJECTpublic: explicit QFileHelper(QObject *parent = nullptr); //获取准备保存的文件 stati

2021-04-15 15:48:28 312

原创 推荐的Qt论坛+个人博客+网站

qtcn http://www.qtcn.org豆子的空间 https://www.devbean.netyafeilinux http://www.qter.org一去二三里 http://blog.csdn.net/liang19890820乌托邦2号 http://blog.csdn.net/taiyang1987912foruok http://blog.csdn.net/foruokjason http://blog.csdn.net/wsj18808050朝十晚八 http://w

2021-04-14 11:07:55 2995

转载 Qt项目架构经验总结

https://qtchina.blog.csdn.net/article/details/113985170

2021-04-13 20:45:43 344

转载 interpret_cast nconst_cast static_cast dynamic_cast四种强制转化的区别

文章目录1.interpret_cast2.const_cast3.static_cast4.dynamic_cast1.interpret_cast几乎什么类型都可以转换,对结果没有保证。-> 不推荐使用2.const_cast一般用于 去const 类型转换3.static_cast基础数据类型转换,隐式转换,void*转任意指针,多态向上转换,向下不保证4.dynamic_cast只用于虚函数,也就是继承之间的上下转换,向上转换安全向下转换失败:a.对于指针,返回

2021-03-12 20:06:14 280

test0908.rar

此客户端是自己在做Qt客户端项目中总结出来的通用框架,基于QML+http(https)+ websocket + 多线程。可自己继续添加其他功能,为了下次开发客户端直接开展业务,特此保存供下载使用。

2021-09-13

空空如也

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

TA关注的人

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