2025-08-31
StudyProjects
00

转载Bolg:恋恋风辰 视频:BiliBili学习视频

day01-项目结构概述

简介

本项目为C++全栈聊天项目实战,包括PC端QT界面编程,asio异步服务器设计,beast网络库搭建http网关,nodejs搭建验证服务,各服务间用grpc通信,server和client用asio通信等,也包括用户信息的录入等。实现跨平台设计,先设计windows的server,之后再考虑移植到windows中。较为全面的展示C++ 在实际项目中的应用,可作为项目实践学习案例,也可写在简历中。

架构设计

一个概要的结构设计如下图 https://cdn.llfc.club/1709009717000.jpg

  1. GateServer为网关服务,主要应对客户端的连接和注册请求,因为服务器是是分布式,所以GateServer收到用户连接请求后会查询状态服务选择一个负载较小的Server地址给客户端,客户端拿着这个地址直接和Server通信建立长连接。
  2. 当用户注册时会发送给GateServer, GateServer调用VarifyServer验证注册的合理性并发送验证码给客户端,客户端拿着这个验证码去GateServer注册即可。
  3. StatusServer, ServerA, ServerB都可以直接访问Redis和Mysql服务。
2025-08-31
C++
00

转载GitHub: qt-learning-guide

推荐另一个博客文章:爱编程的大丙

Qt指南

熟练Qt特性,快速开发含GUI的应用程序。

  • 为什么使用Qt开发应用程序

  • 基本文件构成

  • Qt程序的实际运行流程

  • 让对象关联起来——信号槽

  • 简化信号槽传参——Lambda表达式

  • 更宽泛的对象联动——事件

为什么使用Qt开发应用程序

Qt 是一个著名的 C++ 应用程序框架。Qt的功能十分强大,即使你没有学过C++的STL库,或者没有接触过XML等也不用担心,因为Qt已经帮你内置好了各种技术,你只需要会调用即可。Qt 是一个跨平台的开发框架,在各个平台上都具有良好的兼容性。 选择Qt无论是从上手难度和后期维护难度来说,都是非常优秀的。

⭕ 即使Qt已经封装好了很多功能,但不可否认的是,学习Qt仍然需要一定的C++基础,以及面向对象编程的思想。还需要对指针的相关知识有非常清晰的理解。

2025-08-27
C++
00

原文转载:恋恋风辰

简介

本文主要介绍线程的基本管控,包括线程的发起,等待,异常条件下如何等待以及后台运行等基础操作。

线程发起

线程发起顾名思义就是启动一个线程,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();
2025-08-07
EnvironmentConfiguration
00

Node.js配置

一、进入官网下载安装包

Node.js 中文网

选择对应你系统的Node.js版本,这里我选择的是Windows系统、64位

二、安装程序

(1)下载完成后,双击安装包,开始安装Node.js

(2)直接点【Next】按钮,此处可根据个人需求修改安装路径,修改完毕后继续点击【Next】按钮

2025-08-07
EnvironmentConfiguration
00

MySQL配置(Win)

1.官网下载MySQL

下载Mysql点击下载mysql.

下载完成后解压到某一个文件夹(记住这个路径,一会要用到)

2.配置初始化文件my.ini

根目录下创建一个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