- 博客(72)
- 收藏
- 关注
原创 muduo源码剖析--TcpConnection
并可以进行相应的写回调。需要说明的是调用handWrite()是在channel可写的状态下进行的(也即channel像poller注册了POLLOUT事件)
2023-04-12 18:15:00
596
原创 muduo源码剖析--Thread/EventLoopThread/EventLoopThreadPool
muduo源码剖析--Thread/EventLoopThread/EventLoopThreadPool
2023-04-11 17:15:00
544
原创 muduo源码剖析--Inetaddress/Socket/Acceptor
muduo源码剖析--Inetaddress/Socket/Acceptor
2023-04-10 11:30:00
405
原创 cgi程序初探
cgi概述 公共网关接口(Common Gateway Interface,CGI) 是Web 服务器运行时外部程序的规范,按CGI 编写的程序可以扩展服务器功能。CGI 应用程序能与浏览器进行交互,还可通过数据API与数据库服务器等外部数据源进行通信,从数据库服务器中获取数据。格式化为HTML文档后,发送给浏览器,也可以将从浏览器获得的数据放到数据库中。几乎所有服务器都支持CGI,可用任何语言编写CGI,包括流行的C、C ++、Java、VB 和D
2022-05-20 00:45:00
1029
原创 QxOrm-orm框架入门
概述:QxOrm 是一个 C++ 库,旨在为 C++ 用户提供对象关系映射 (ORM) 功能。基于每个类的简单 C++ 设置函数(如 Java 中的 Hibernate XML 映射文件),QxOrm 库提供以下功能:持久性: 支持最常见的数据库,如 SQLite、MySQL、PostgreSQL、Oracle、MS SQL Server、MongoDB(具有 1-1、1-n、n-1 和 n-n 关系);序列化: JSON、二进制和 XML 格式;反射(或自省): 动态访问类定义、检索属性和调用类
2022-05-20 00:45:00
5127
2
原创 Qt-ubuntu20.04下+gcc-64编译qt5.15.2的mysql驱动
导读qt5.15.2不管在哪个操作系统下都是不自带mysql驱动的,想在ubuntu的qt下使用mysql,必须手动编译,才能使用,不过相对于windows来说,linux 比较方便。编译下载mysql(已安装请忽略)下载链接:mysql下载,下载如下版本安装mysql输入如下命令, 为后面下载mysql配置一些版本,记得勾选8.0版本的,不然后面安装可能出现意外sudo dpkg -i mysql-apt-config_0.8.22-1_all.deb下面开始安装mysq
2022-04-17 22:45:26
1482
原创 Qt-QtConcurrent的使用
QtConcurren导读QtConcurrent提供了编写多线程程序的高级api,也即不使用低级线程原语,而其他实现多线程的方式,例如子类化QThread、QObject::moveToThread()、子类化QRunnable对于共享数据的保护都要使用低级线程原语,这无疑是要非常小心的。此外,根据Qt文档的描述:Programs written with QtConcurrent automatically adjust the number of threads used according to
2022-04-10 16:03:10
3997
1
原创 Windows下Qt5.15.2+MinGw64编译mysql驱动
导读目前qt5.15.2版本不提供编译好的mysql驱动,所以你无法在qt程序中使用mysql,要想使用必须手动编译mysql驱动,下面说说编译步骤。编译步骤下载mysql(已安装的请忽略)编译驱动需要用到mysql,下载链接:mysql下载,如下图:下载完之后,进行mysql 的安装程序,建议选择自定义安装,基本就是一直next即可。安装完之后如图,注意自定义安装这俩个建议选上!可以运行一下WorkBench登录测试一下,出现如下说明安装成功了。开始编译mysql驱动编译之前,
2022-04-10 16:01:16
1962
5
原创 Qt-Tcp编程(异步与同步解读)
QTcpSocket 支持两种通用的网络编程方法异步(非阻塞)方法:当控制返回到 Qt 的事件循环时,操作会被调度和执行。 当操作完成时,QTcpSocket 会发出一个信号。 例如,QTcpSocket::connectToHost() 立即返回,当连接建立后,QTcpSocket 发出 connected()。同步(阻塞)方法:在非 GUI 和多线程应用程序中,您可以调用 waitFor…() 函数(例如,QTcpSocket::waitForConnected())来暂停调用线程直到操作完成,而不
2022-04-10 15:59:45
4968
原创 qml组件学习-Loader
Loader 概述 Loader用来动态加载QML组件,可以看作是一个占位符,可以使用source属性加载QML文件,或使用sourceComponent加载Component组件。Loader主要用于延迟组件的创建:使一个组件的创建被延迟到真正需要的时候。如何访问loader加载的组件 使用item属性怎么销毁loader加载的组件 将souce属性置为""(空字符串),或者将sourceComponent置为undefinedloader的大小和行为注意:loader只对可视化组件(
2022-03-31 23:45:22
1038
原创 Qt-QQuickImageProvider的简单使用(图片提供者)
概述 在QML中,图片加载提供了三种方式,分别如下:加载资源的方式:qrc://图片路径加载本地问价的方式:file:///图片路径使用图片提供者:image://图片提供者本章说的是第三种方式,即使用图片提供者的方式在QML中加载图片。QQuickImageProvider简介:提供二进制加载图片或pixmap in qml实现话不多说,直接上代码(ps:自己做的小demo)// !!!!! ImageProvid
2022-03-31 23:44:33
2122
原创 Qt-自定义c++模型应用于qml中(详细解读)
概述 虽然QML已经提供了几种比较常见的模型,但是依然不足以应对应用中可能出现的情况。所以才需要自定义c++模型,然后可以在QML中使用,这有助于将c++数据模型或其他复杂的数据集暴露给QML。 C++模型类可以是QStringList、QObjectList或者QAbstractItemModel ,前面两个对于暴露简单数据集是非常有用的,而QAbstractIt
2022-03-31 23:43:25
1731
1
原创 qml-关于Flow布局不能拖动(滚动)的解决办法
概述最近在做一个小demo,想利用Flow流式布局的效果,即存在于布局中的每行的组件都会根据窗口大小的变化而数量自适应变化。问题问题来了,当组件很多的时候,也就是当组件数量超出窗口大小时,不能滚动或是拖动看到更多的组件,理论上Flow布局本身是不能够拖动的,也就不能设置滚动条。解决方案关于解决方案,我们先了解一下另一个组件Flickable。Flickable简介:Flickable 项将其子项放置在可以拖动和轻弹的表面上,从而使子项上的视图滚动。 此行为构成了旨在显示大量子项(如 ListV
2022-03-31 23:42:13
1633
转载 git的基本使用(Qt)
首先下载一个git,然后配置好。在Qt中创建一个项目来到项目所在的文件夹,右键/git bash here(Windows系统打开git的方法)在git bash中,输入git init,创建一个本地仓库。执行git remote add origin <仓库链接地址>。这样,origin就是仓库地址了。一般是https或ssh。执行git branch 分支名,在本地仓库创建一个分支并命名。如果要推到远程仓库的目标分支,则分支名因与目标相同。图中蓝绿色的括号为当前分支。执行git
2022-03-31 23:40:19
1201
原创 qt-文件操作
输入/输出设备QIODevice类是Qt中所有I/O设备的基础接口类,为诸如QFile、QBuffer和QTcpSocket等支持读/写数据块的设备提供了一个抽象接口。QIODevice类是抽象的,无法被实例化,一般是使用它所定义的接口来提供设备无关的I/O功能。访问一个设备之前,需要使用open() 函数打开设备,而且必须指定正确的打开模式。QIODevice所有的打开模式由QIODevice::OpenMode枚举类型定义,其中的一些值可以使用按位符号"|"来同时使用。打开设备后可以使用write
2022-03-24 13:04:08
1970
原创 qt-基本的网络操作
HttpHttp(HyperText Transfer Protocol,超文本传输协议) 是一个客户端和服务器端之间进行请求和应答的标准。通常由Http客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的Tcp连接;Http服务器在指定的端口监听客户端发送过来的请求,一旦收到请求,服务器端就会向客户端发回一个应答。几个常用类的介绍:QNetworkAccessManager:它用来发送网络请求和接收应答。发送请求的函数有get()、post()、put()等等。发送请求的函数都会返回一
2022-03-24 12:57:32
480
原创 qt-数据库操作
1. SQL数据库驱动Qt SQl模块使用数据库驱动插件来和不同的数据库接口进行通信。由于Qt SQL模块的接口是独立于数据库的,所以所有数据库特定的代码都包涵在这些驱动中。可以使用如下代码查看自己QT中所包含的数据库驱动。 //.pro QT += sql//main.cppint main(int argc,char* argv[]){ QApplication a(argc,argv); qDebug() << "Available drivers";
2022-03-20 00:04:55
1697
原创 qt-线程的事件循环和跨线程通信
线程的事件循环:每一个线程都可以有它自己的事件循环。初始化线程(GUI线程)使用QCoreApplication::exec()来开启它的事件循环(对于独立的对话框界面程序,也可以使用QDialog::exec()).其他的线程可以使用QThread::exec()来开启一个事件循环。与QCoreApplication相似,QThread提供了一个exit()函数和一个quit()槽。在一个线程中使用事件循环,使得该线程可以使用那些需要事件循环的非GUI类(例如,QTimer、QTcpSocket、QP
2022-03-20 00:03:37
1074
原创 qt-同步线程
同步线程概述:Qt中的QMutex、QReadWriteLock、QSemaphore和QWaitCondition类提供了同步线程的方法。虽然使用线程的思想是多个线程可以尽可能地并发执行,但是总有一些时刻,一些线程必须停止来等待其他线程。例如,如果两个线程尝试同时访问相同的全局变量,则结果通常是不确定的。QMutexQMutex提供了一个互斥锁(mutex),在任何时间至多有一个线程可以获得mutex。如果一个线程尝试获得mutex,而此时mutex已经被锁住了,则这个线程将会睡眠,直到现在获得m
2022-03-18 22:39:18
278
原创 qt-可重入和线程安全的理解
概述:线程安全: 一个线程安全的函数可以同时被多个线程调用,即便是它们使用来了共享数据。因为该共享数据的所有实例都被序列化了。(实例序列化是指这个实例已经被设置为顺序(串行)的访问)可重入: 一个可重入的函数也可以同时被多个线程调用,但是只能是在每个调用使用自己的数据的情况下。推广: 一个线程安全的函数总是可重入的,但是一个可重入的函数不总是线程安全的。推而广之,如果每个线程使用一个类的不同实例,则该类的成员函数可以被多个线程安全地调用,那么这个类被称为可重入的;如果即使所有的线程使用一个类的相同的实
2022-03-18 22:34:37
405
原创 qt-QThread的使用
QThread简介:Qt中的QThread类提供了与平台无关的线程。一个QThread代表了一个应用程序中可以独立控制的线程,它与进程中的其他线程分享数据,但是是独立执行的。相对于一般的程序都从main()函数开始执行,QThread从run()函数开始执行。默认的,run()通过调用exec()来开启事件循环,并在线程内运行一个Qt事件循环。创建线程的两种方式要创建一个线程,需要子类化QThread,并且重写run()函数,这种用法比较简单,而且不是很常用,就不赘述了。第二种方式是使用QObje
2022-03-18 22:32:16
776
原创 qt-QSharedMemory的使用
QSharedMemory简介:QSharedMemory时跨平台的共享内存类,提供了访问操作系统共享内存的实现。它允许多个线程和进程安全地访问共享内存段。演示代码://MainWindow.h#include <QMainWindow>#include <QSharedMemory>QT_BEGIN_NAMESPACEnamespace Ui { class MainWindow; }QT_END_NAMESPACEclass MainWindow : pub
2022-03-18 22:30:39
721
原创 qml组件学习-TabBar
TabBar(标签栏)一般结合StackLayout布局进行使用。演示代码:import QtQuick 2.15import QtQuick.Window 2.15import QtQuick.Controlsimport QtQuick.Controls.Material 2.12import QtQuick.LayoutsWindow { width: 640 height: 480 visible: true title: qsTr("Hello Wo
2022-03-17 12:12:14
1139
1
原创 qml组件学习-StackView
StackView:类似于栈的视图演示代码:import QtQuick 2.15import QtQuick.Window 2.15import QtQuick.Controls 2.2Window { width: 640 height: 480 visible: true title: qsTr("Hello World") StackView{ //类似于栈的结构,最后进栈的视图在最上面显示,下面的视图被上面的视图覆盖不显示
2022-03-17 12:11:20
864
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人