灌篮少年 发表于 2025-3-20 19:46:29

微服务即时通讯体系---(五)框架学习

目录
ODB
介绍
安装
build2安装
odb-compiler安装
ODB运行时库安装
mysql和客户端开发包安装
boost profile库安装
总体打包安装
总体卸载
总体升级
头文件包含和编译时指明库
ODB常见操作介绍
类型映射
ODB编程
类与接口介绍
mysql毗连池对象类
mysql客户端操作句柄类
mysql事务操作类
针对可能为空的字段封装的类似于智能指针的类型
针对查询结果所封装的容器类和条件类
mysql操作句柄获取封装
rabbitMQ C++
安装
服务器访问地址
简朴使用
添加用户
UI访问
安装rabbitMQ客户端库
安装rabbitMQ的C++客户端库(AMQP-CPP)
AMQP-CPP的使用介绍
介绍
头文件包含和链接库
使用(TCP模式)
常用类与接口
channel
ev
二次封装(rabbitMQClient.hpp)
短信验证码SDK
购买
安装
头文件和编译时链接库
注意
验证码发送代码封装(verificationCodeSend.hpp)
验证码天生代码封装(utils.hpp)
语音辨认SDK
介绍
安装
头文件包含
编译时指明库(注意)
代码样例
test.cc
Makefile
测试结果
语音辨认代码封装(speechRecognition.hpp)
封装结果测试




   本章主要是学习和使用本项目中所需使用到的一些框架。

ODB

介绍

   ODB(Object-Relational Mapping for C++)是一个用于C++的对象关系映射(ORM)工具,允许开发者将C++对象直接映射到数据库表,简化数据库操作。
特点:
      跨平台性   兼容多种数据库(MySQL、PostgreSQL、Oracle等)和操作体系(Windows、Linux、macOS等)。   自动天生代码   通过ODB编译器自动天生数据库操作的C++代码,减少手动编写SQL的工作量。   类型安全   提供编译时类型检查,减少运行时错误。   事务管理   支持事物,确保数据一致性。   查询语言   提供类似SQL的查询语言,支持复杂查询。 安装

ODB2.5安装,整个安装过程时间比较长,视网络环境而定。
build2安装

build2安装时,可能会版本更新,从16变成17等,因此须要特殊注意。
build2安装步骤:build2 | Installation
Create the build2 build directory, for example ~/build2-build in your home directory, then run:
$ cd ~/build2-build

$ curl -sSfO https://download.build2.org/0.17.0/build2-install-0.17.0.sh

$ shasum -a 256 -b build2-install-0.17.0.sh

b84e4114c61aa94c3f6278f010a0dc0536dda65ac39d3863152ec9b64510b86e

$ sh build2-install-0.17.0.sh Or, to upgrade from 0.16.0:
$ sh build2-install-0.17.0.sh --upgrade To uninstall:
$ sh build2-install-0.17.0.sh --uninstall 安装中假如因为网络问题,出现安装超时失败,解决办法是将超时时间设置得更长一些:
sh build2-install-0.17.0.sh --timeout 1800 odb-compiler安装

sudo apt-get install gcc-11-plugin-dev # gcc版本根据需求而定

mkdir odb-build && cd odb-build

bpkg create -d odb-gcc-N cc    \
config.cxx=g++                  \
config.cc.coptions=-O3          \
config.bin.rpath=/usr/lib \
config.install.root=/usr/\
config.install.sudo=sudo

cd odb-gcc-N

bpkg build odb@https://pkg.cppget.org/1/beta

bpkg test odb
test odb-2.5.0-b.25+1/tests/testscript{testscript}
tested odb/2.5.0-b.25+1

bpkg install odb

odb --version

# 如果报错了, 找不到ODB, 可能是没有对应的配置文件或者ODB路径, 解决方法:
sudo echo 'export PATH=${PATH}:/usr/local/bin' >> ~/.bashrc
export PATH=${PATH}:/usr/local/bin 查询ODB版本,出现以下环境表示安装成功:
$ odb --version
ODB object-relational mapping (ORM) compiler for C++ 2.5.0-b.27
Copyright (c) 2009-2024 Code Synthesis.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ODB运行时库安装

dev@dev-host:~/workspace/odb-build/odb-gcc-N$ cd ..

dev@dev-host:~/workspace/odb-build$ bpkg create -d libodb-gcc-N cc\
config.cxx=g++                  \
config.cc.coptions=-O3          \
config.install.root=/usr/\
config.install.sudo=sudo

dev@dev-host:~/workspace/odb-build$ cd libodb-gcc-N

dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg add https://pkg.cppget.org/1/beta

dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg fetch

dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg build libodb

dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg build libodb-mysql mysql和客户端开发包安装

sudo apt install mysql-server
sudo apt install -y libmysqlclient-dev 假如已经有mysql开发包就不消安装了,记得修改配置文件和用户密码等。
boost profile库安装

dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg build libodb-boost 总体打包安装

dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg install --all --recursive 总体卸载

dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg uninstall --all --recursive 总体升级

dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg fetch
dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg status
dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg uninstall --all --recursive
dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg build --upgrade --recursive
dev@dev-host:~/workspace/odb-build/libodb-gcc-N$ bpkg install --all --recursive 头文件包含和编译时指明库

头文件:
#include <odb/database.hxx>
#include <odb/mysql/database.hxx>

// 需要加上对应的hxx文件生成的odb.hxx文件
#include "student.hxx"
#include "student-odb.hxx" 毗连库:
-lodb-mysql -lodb -lodb-boost

ODB常见操作介绍

类型映射

ODB中的类型(MySQL的数据类型)和C++中的数据类型存在一一的映射关系。
      C++ Type   MySQL Type   Default NULL Semantics   bool   TINYINT(1)   NOT NULL   char   char (1)   NOT NULL   signed char   TINYINT   NOT NULL   unsigned char   TINYINT UNSIGNED   NOT NULL   short   SMALLINT   NOT NULL   unsigned short   SMALLINT UNSIGNED   NOT NULL   int   INT   NOT NULL   unsigned int   INT UNSIGNED   NOT NULL   long   BIGINT   NOT NULL   unsigned long   BIGINT UNSIGNED   NOT NULL   long long   BIGINT   NOT NULL   unsigned long long   BIGINT UNSIGNED   NOT NULL   float   FLOAT   NOT NULL   double   DOUBLE   NOT NULL   std::string   TEST/VARCHAR(255)   NOT NULL   char   VARCHAR(N-1)   NOT NULL   gregorian::date   DATE   NULL   posix_time::ptime   DATETIME   NULL   posix_time::time_duration   TIME   NULL ODB编程

    ODB在数据元结构定义时,使用预处理器指令(#pragma)来提供元数据,这些元数据指示如何将C++类型映射到数据库模式。
这些#pragma指令是在C++代码中使用的,但不是C++语言的一部分,而是特定于ODB编译器的扩展。
      #pragma db object   用于声明某一个类是数据库对象,这个类最终将映射到数据库中的一张表。类的各项成员,最终就是表的column。   #pragma db table("table_name")   指定该类映射到数据库中的表名。假如不指定,默以为类名。   #pragma db object table("table_name")   前两个合二为一。   #pragma db id   标明类中的某一个成员变量,作为数据库表中的主键。   #pragma db column("column_name")   指定类成员变量映射到数据库表中的column名。假如不指定,默以为变量名。   #pragma db view   用于声明某个类是一个数据库视图,而不是一个持久化表。   #pragma db session   用于声明一个全局或成员变量是数据库会话。   #pragma db query("query")   用于定义自定义的查询函数。   #pragma db index("index_name")   指定成员变量应该被索引。   #pragma db default("default_value")   指定成员变量的默认值。   #pragma db unique   指定成员变量或一组变量具有唯一性约束。   #pragma db not_null   指定成员变量不能为空。   #pragma db auto   指定成员变量的值在插入时自增(比如主键)。   #pragma db transient   指定成员变量不应该被持久化到数据库表中。   #pragma db type("type_name")   指定成员变量的数据库类型。   #pragma db convert("convert")   指定用于成员变量的自定义类型转换器。   #pragma db pool("pool_name")   指定用于数据库毗连的毗连池。   #pragma db trigger("trigger_name")   指定在插入、更新或删除操作时触发的触发器。 类与接口介绍

mysql毗连池对象类

/usr/include/odb/mysql/connection-factory.hxx:
namespace odb{
namespace mysql{
    class LIBODB_MYSQL_EXPORT connection_pool_factory:
      public connection_factory
    {
    public:
      connection_pool_factory (std::size_t max_connections = 0,
                               std::size_t min_connections = 0,
                               bool ping = true)

}
}   odb::mysql::connection_pool_factory 是 ODB 库中用于管理 MySQL 数据库毗连池的类。它的主要作用是创建和管理一个数据库毗连池,以提高数据库操作的性能和效率。
作用:
      毗连池管理   通过毗连池管理多个数据库毗连,避免频繁创建和销毁毗连的开销。   性能优化   在高并发场景下,毗连池可以显着提高数据库操作的性能。   资源复用   毗连池中的毗连可以被多个操作复用,减少资源浪费。 mysql客户端操作句柄类

/usr/include/odb/mysql/database.hxx:
namespace odb{
namespace mysql{

    class LIBODB_MYSQL_EXPORT database: public odb::database
    {
      database (const std::string& user,
                const std::string& passwd,
                const std::string& db,
            
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 微服务即时通讯体系---(五)框架学习