# 工程介绍
构建一个带路由功能的HTTP微服务架构,支持`JSON`序列化,支持`MySQL`关系型数据库,支持`JWT`安全认证,支持`Nacos`服务注册与配置管理,支持消息中间件`Kafka`、`RocketMQ`,支持`FastDFS`分布式文件存储,支持`Redis`缓存数据库,支持`Excel`报表导入导出。
## 1 目录说明
- `arch-demo`:架构演示模块
- `lib-dy`:动态库存放目录
- `lib-common`:公用组件静态库模块
- `lib-http`:http服务组件静态库模块
- `lib-mysql`:mysql数据库组件静态模块
- `.gitattributes`:git属性配置文件
- `.gitignore`:git忽略配置文件
- `build.sh`:Linux环境下构建和安装脚本
- `run-xxx.sh`:Linux环境下服务启动脚本
- `CMakeLists.txt`:`cmake`配置
- `CMakeSettings.json`:`cmake`项目配置文件
- `copy-resources.bat`:快速构建项目模块批处理脚本
- `exclude.txt`:批处理复制排除项配置
- `ProjCpp.sln`:解决方案配置
- `imgs`:自述文件图片资源目录
- `README.md`:工程自述文件
## 2 静态库目录规范
静态库项目包括如下几个主要的目录结构:
- `include`:存放第三方引入库的`h`或`hpp`文件,存放自己编写的`h`文件,方便使用静态库引用。
- `src`:存放`include`定义`h`的实现`cpp`资源文件。
- `lib / lib64`:用于存放第三方库编译的静态库。
- `pch.h / pch.cpp`:如果需要预编译标头,那么就需要定义。
## 3 动态库目录规范
动态库目录名称为`lib-dy`,里面主要包含程序执行需要的动态库文件,按照如下目录结构存放文件即可。
- `lib`
- debug
- release
- `lib64`
- debug
- release
- Linux系统下面用到的动态库
## 4 环境搭建参考
静态库:
https://docs.microsoft.com/zh-cn/cpp/build/walkthrough-creating-and-using-a-static-library-cpp?view=msvc-160
标头:
https://docs.microsoft.com/zh-cn/cpp/build/walkthrough-header-units?view=msvc-160
Linux:
- https://docs.microsoft.com/zh-cn/cpp/linux/download-install-and-setup-the-linux-development-workload?view=msvc-160
- ```sh
yum -y install openssh-server gcc-c++ gdb cmake make ninja-build rsync zip unzip
```
## 5 Windows平台项目搭建
克隆项目架构后,可以先使用`arch-demo`项目进行测试,用于确认项目架构能否正常工作。
**TIP:**
*如果在运行 `demo` 的时候出现找不到 `dll`文件错误,那么参考 **5.1.8.2** 对 `demo`的项目配置进行修改即可。*
接下来就需要在解决方案中,新增项目来完成你自己的业务功能。
创建完项目后可以使用`copy-resources.bat`工具复制`demo`中的架构骨架代码到你的项目中。
新建项目中需要引入`lib-http`、`lib-mysql`、`lib-common`静态库以及对项目属性进行相应的配置。
接下我们来看看如何配置你的项目属性和编写关键代码。
***TIP:后续如果要想导入其他静态库,也可以参考下面的流程来完成。***
*如果在项目完成设置后,依然不能正常工作,可以对比`arch-demo`的配置进行修正。*
### 5.1 项目属性设置
#### 5.1.1 引用模块
操作路径:项目右键->添加->引用,然后选择下图所示的模块。
![image-20221017113121265](imgs/image-20221017113121265.png)
#### 5.1.2 附加库目录
操作步骤示意图:
![image-20221017113406367](imgs/image-20221017113406367.png)
包含库目录内容如下:
```
.\
..\lib-mysql\include
..\lib-http\include
..\lib-common\include
```
#### 5.1.3 预编译头
设置使用预编译头,示意步骤如下图
![image-20221017113549259](imgs/image-20221017113549259.png)
下面是`stdafx.h`
```c++
// stdafx.h: 这是预编译标头文件。
// 下方列出的文件仅编译一次,提高了将来生成的生成性能。
// 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。
// 但是,如果此处列出的文件中的任何一个在生成之间有更新,它们全部都将被重新编译。
// 请勿在此处添加要频繁更新的文件,这将使得性能优势无效。
#ifndef STDAFX_H
#define STDAFX_H
#ifndef LINUX
// 添加要在此处预编译的标头
#include "HttpLibMacros.h"
#include "asio.hpp"
#include "cinatra.hpp"
#include "jwt/jwt.hpp"
#include "mysql/jdbc.h"
#include "SqlSession.h"
#include "yaml-cpp/yaml.h"
#include "sw/redis++/redis++.h"
#endif // !LINUX
#endif //STDAFX_H
```
下面是`stdafx.cpp`
```c++
// stdafx.cpp: 与预编译标头对应的源文件
#include "stdafx.h"
// 当使用预编译的头时,需要使用此源文件,编译才能成功。
```
***注意:`stdafx.cpp`文件属性需要重新设置***
![image-20221017113701767](imgs/image-20221017113701767.png)
***注意:后面实现的 `cpp` 文件都需要在开头引入 `stdafx.h`***
#### 5.1.4 链接器——常规
##### 5.1.4.1 `Win32`平台
`Win32-Debug`配置操作步骤如下图所示
![image-20221017113853329](imgs/image-20221017113853329.png)
附加库目录内容如下:
```
..\lib-http\lib\openssl
..\lib-common\lib\debug
..\lib-mysql\lib\vs14\debug
```
`Win32-Release`配置操作步骤如下图所示
![image-20221017114237480](imgs/image-20221017114237480.png)
附加库目录内容如下:
```
..\lib-http\lib\openssl
..\lib-common\lib
..\lib-mysql\lib\vs14
```
##### 5.1.4.2 `x64`平台
`x64-Debug`配置操作步骤如下图所示
![image-20221017114421803](imgs/image-20221017114421803.png)
附加库目录内容如下:
```
..\lib-http\lib64\openssl
..\lib-common\lib64\debug
..\lib-mysql\lib64\vs14\debug
```
`x64-Release`配置操作步骤如下图所示
![image-20221017114614209](imgs/image-20221017114614209.png)
附加库目录内容如下:
```
..\lib-http\lib64\openssl
..\lib-common\lib64
..\lib-mysql\lib64\vs14
```
#### 5.1.5 链接器——输入
##### 5.1.5.1 Debug模式
配置操作步骤如下图所示
![image-20221017114843271](imgs/image-20221017114843271.png)
静态库内容如下:
```sh
# 必选库
mysqlcppconn.lib
libcrypto.lib
libssl.lib
# 下面是可选库,如果需要对应功能再选择
# excel库
xlntd.lib
# yaml配置解析库
yaml-cppd.lib
# redis库
hiredis.lib
redis++.lib
# kafka消息中间件库
rdkafka++.lib
# rocket消息中间件库
rocketmq-client-cpp.lib
# mongodb库
mongocxx.lib
bsoncxx.lib
```
##### 5.1.5.2 Release模式
配置操作步骤如下图所示
![image-20221017115009058](imgs/image-20221017115009058.png)
静态库内容如下:
```sh
# 必选库
mysqlcppconn.lib
libcrypto.lib
libssl.lib
# 下面是可选库,如果需要对应功能再选择
# excel库
xlnt.lib
# yaml配置解析库
yaml-cpp.lib
# redis库
hiredis.lib
redis++.lib
# kafka消息中间件库
rdkafka++.lib
# rocket消息中间件库
rocketmq-client-cpp.lib
# mongodb库
mongocxx.lib
bsoncxx.lib
```
#### 5.1.6 链接器——优化
![image-20221017115044074](imgs/image-20221017115044074.png)
#### 5.1.7 设置语言版本
![image-20221017115127378](imgs/image-20221017115127378.png)
#### 5.1.8 设置动态链接库路径
##### 5.1.8.1 Release模式
Release模式下是进行`dll`文件复制,下面是复制指令:
```sh
# win32
xcopy "$(SolutionDir)lib-dy/lib/release" "$(OutDir)" /a /F /I /Y /C
# x64
xcopy "$(SolutionDir)lib-dy/lib64/release" "$(OutDir)" /a /F /I /Y /C
```
`Win32`平台
![image-20221017115258218](imgs/image-20221017115258218.png)
`x64`平台
![image-20221017115342096](imgs/image-20221017115342096.png)
##### 5.1.8.2==Debug模式==
Debug模式下为了加快启动效率,使用添加环境变量的方式。
***注意:***
***1.环境变量配置方式属于用户级配置,clone项目的每个客户端都需要再配置一次。***
***2.环境变量配置方式可能和系统中有的动态库冲突,如果冲突那么请手动复制 `dll` 到 `exe` 同级目录。***
下面是设置环境变量参考值:
```sh
# win32
path=%path%;../lib-dy/lib/debug
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
项目简介 **zero-one-psisys**是一款面向中小企业,高效、省心、高性价比的在线进销存(purchasing, sales, inventory)管理系统,系统满足不同行业需求,是促进企业发展的重要组成部分,是企业经营管理中的重要环节。 项目特点:操作简单、上网就能查库存、下销售单、采购管理、库存管理、库存管理/仓库管理等,一应俱全;库存集中管理,管理员可以给不同的人员分配不同的数据权限和功能权限;智能补货,保证库存充足,价格记忆,避免报价混乱,一键成本重算,解决多批次产品库存成本不同的问题;进销存单据自动生成记账凭证,实现进销存软件与财务软件无缝对接。 功能蓝图:采购管理、库存管理、销售管理、收付款管理、基础资料、业务监控等。 系统架构图 项目主体骨架基于Spring Cloud Alibaba生态体系,使用MySQL进行数据持久化管理,采用Vue3生态体系与Element Puls UI框架完成前端制作,同时项目提供C++微服务开发解决方案与集成、使用Jenkins实现CD/CI。
资源推荐
资源详情
资源评论
收起资源包目录
人工智能-项目实践-信息管理系统-C++ 进销存管理系统是一个典型的数据库应用程序 (2000个子文件)
applink.c 3KB
test_evp.c 1KB
PurOrderService.cpp 30KB
PurQuotService.cpp 26KB
PurCompareService.cpp 20KB
PurReqService.cpp 20KB
PurCompareDAO.cpp 16KB
PurQuotDAO.cpp 15KB
PurOrderDAO.cpp 14KB
PrePayService.cpp 14KB
PurInquiryService.cpp 13KB
PurOrderEntryDAO.cpp 12KB
PurInquiryDAO.cpp 11KB
PrepaymentDAO.cpp 9KB
Router.cpp 8KB
PurReqDAO.cpp 8KB
Router.cpp 7KB
FinPyamentReqService.cpp 7KB
PrePayController.cpp 6KB
FinPaymentReqDAO.cpp 6KB
PurInquiryController.cpp 6KB
PurComService.cpp 6KB
main.cpp 5KB
PurQuotController.cpp 5KB
ExecExport.cpp 5KB
main.cpp 5KB
PurReqController.cpp 5KB
PurCompareController.cpp 4KB
PurComDAO.cpp 4KB
PurOrderController.cpp 4KB
Aspect.cpp 4KB
Aspect.cpp 4KB
PurOrderDTO.cpp 4KB
PurReqService.cpp 3KB
PaymentController.cpp 3KB
PurQuotDAO.cpp 3KB
PaymentDAO.cpp 3KB
TestToken.cpp 3KB
PaymentService.cpp 2KB
TestToken.cpp 2KB
FinPaymentReqController.cpp 2KB
PurComController.cpp 2KB
PurOrderEntryDTO.cpp 2KB
PurReqController.cpp 2KB
ModifyPurReqDTO.cpp 2KB
TestFastDfs.cpp 1KB
AddPaymentDTO.cpp 1KB
AddPurReqDTO.cpp 1KB
PurReqEntryDTO.cpp 1KB
PurReqModBillStatusDTO.cpp 930B
ResultStatus.cpp 915B
ResultStatus.cpp 912B
PayModBillStatusDTO.cpp 908B
PaymentChangeDTO.cpp 904B
stdafx.cpp 795B
stdafx.cpp 795B
PurReqExportDTO.cpp 784B
DeletePurReqDTO.cpp 768B
PurReqIntoDTO.cpp 741B
PrepaymentDTO.cpp 690B
DePaymentDTO.cpp 167B
DePayDTO.cpp 159B
PurReqDAO.cpp 43B
base.css 2KB
main.css 207B
obj_mac.h 212KB
ssl.h 109KB
evp.h 75KB
tls1.h 71KB
ec.h 62KB
sslerr.h 46KB
x509.h 42KB
bio.h 34KB
engine.h 34KB
asn1.h 33KB
x509v3.h 33KB
asn1t.h 32KB
x509_vfy.h 32KB
uuid.h 30KB
picohttpparser.h 23KB
render.h 23KB
ts.h 22KB
rsa.h 22KB
bn.h 22KB
crypto.h 17KB
cms.h 16KB
ui.h 16KB
ct.h 16KB
ecerr.h 15KB
pem.h 15KB
ocsp.h 15KB
ssl3.h 14KB
asn1err.h 14KB
dh.h 13KB
pkcs7.h 11KB
evperr.h 11KB
err.h 11KB
store.h 11KB
cmserr.h 11KB
modes.h 10KB
共 2000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 20
资源评论
博士僧小星
- 粉丝: 2264
- 资源: 5991
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功