转载Bolg:恋恋风辰 视频:BiliBili学习视频
本项目为C++全栈聊天项目实战,包括PC端QT界面编程,asio异步服务器设计,beast网络库搭建http网关,nodejs搭建验证服务,各服务间用grpc通信,server和client用asio通信等,也包括用户信息的录入等。实现跨平台设计,先设计windows的server,之后再考虑移植到windows中。较为全面的展示C++ 在实际项目中的应用,可作为项目实践学习案例,也可写在简历中。
一个概要的结构设计如下图
转载GitHub: qt-learning-guide
推荐另一个博客文章:爱编程的大丙
熟练Qt特性,快速开发含GUI的应用程序。
为什么使用Qt开发应用程序
基本文件构成
Qt程序的实际运行流程
让对象关联起来——信号槽
简化信号槽传参——Lambda表达式
更宽泛的对象联动——事件
Qt 是一个著名的 C++ 应用程序框架。Qt的功能十分强大,即使你没有学过C++的STL库,或者没有接触过XML等也不用担心,因为Qt已经帮你内置好了各种技术,你只需要会调用即可。Qt 是一个跨平台的开发框架,在各个平台上都具有良好的兼容性。 选择Qt无论是从上手难度和后期维护难度来说,都是非常优秀的。
⭕ 即使Qt已经封装好了很多功能,但不可否认的是,学习Qt仍然需要一定的C++基础,以及面向对象编程的思想。还需要对指针的相关知识有非常清晰的理解。
原文转载:恋恋风辰
本文主要介绍线程的基本管控,包括线程的发起,等待,异常条件下如何等待以及后台运行等基础操作。
线程发起顾名思义就是启动一个线程,C++11标准统一了线程操作,可以在定义一个线程变量后,该变量启动线程执行回调逻辑。如下即可发起一个线程
cpp展开代码void thead_work1(std::string str) {
std::cout << "str is " << str << std::endl;
}
//1 通过()初始化并启动一个线程
std::thread t1(thead_work1, hellostr);
当我们启动一个线程后,线程可能没有立即执行,如果在局部作用域启动了一个线程,或者main函数中,很可能子线程没运行就被回收了,回收时会调用线程的析构函数,执行terminate操作。所以为了防止主线程退出或者局部作用域结束导致子线程被析构的情况,我们可以通过join,让主线程等待子线程启动运行,子线程运行结束后主线程再运行。
cpp展开代码std::string hellostr = "hello world!";
//1 通过()初始化并启动一个线程
std::thread t1(thead_work1, hellostr);
//2 主线程等待子线程退出
t1.join();
下载Mysql点击下载mysql.
下载完成后解压到某一个文件夹(记住这个路径,一会要用到)
在根目录下创建一个txt文件,名字叫my,文件后缀为ini
之后复制下面这个代码放在文件下
(新解压的文件没有my.ini文件,需自行创建)
以下代码除安装目录和数据的存放目录需修改,其余不用修改
jsx展开代码[mysqld]
# 设置3306端口
port=3306
# 设置mysql的安装目录 ----------是你的文件路径-------------
basedir=E:\Code\SoftWare\Dev\MySQL\mysql
# 设置mysql数据库的数据的存放目录 ---------是你的文件路径data文件夹自行创建
datadir=E:\Code\SoftWare\Dev\MySQL\mysql\data
# 允许最大连接数
max_connections=200
# 允许连接失败的次数。
max_connect_errors=10
# 服务端使用的字符集默认为utf8mb4
character-set-server=utf8mb4
# 创建新表时将使用的默认存储引擎
default-storage-engine=INNODB
# 默认使用“mysql_native_password”插件认证
#mysql_native_password
default_authentication_plugin=mysql_native_password
[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8mb4
[client]
# 设置mysql客户端连接服务端时默认使用的端口
port=3306
default-character-set=utf8mb4