当前位置: 首页 > news >正文

微服务即时通信系统---(五)框架学习

目录

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.shb84e4114c61aa94c3f6278f010a0dc0536dda65ac39d3863152ec9b64510b86e$ 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=sudocd odb-gcc-Nbpkg build odb@https://pkg.cppget.org/1/betabpkg test odb 
test odb-2.5.0-b.25+1/tests/testscript{testscript} 
tested odb/2.5.0-b.25+1bpkg install odbodb --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++ TypeMySQL TypeDefault NULL Semantics
boolTINYINT(1)NOT NULL
charchar (1)NOT NULL
signed charTINYINTNOT NULL
unsigned charTINYINT UNSIGNEDNOT NULL
shortSMALLINTNOT NULL
unsigned shortSMALLINT UNSIGNEDNOT NULL
intINTNOT NULL
unsigned intINT UNSIGNEDNOT NULL
longBIGINTNOT NULL
unsigned longBIGINT UNSIGNEDNOT NULL
long longBIGINTNOT NULL
unsigned long longBIGINT UNSIGNEDNOT NULL
floatFLOATNOT NULL
doubleDOUBLENOT NULL
std::stringTEST/VARCHAR(255)NOT NULL
char[N]VARCHAR(N-1)NOT NULL
gregorian::dateDATENULL
posix_time::ptimeDATETIMENULL
posix_time::time_durationTIMENULL

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,

相关文章:

微服务即时通信系统---(五)框架学习

目录 ODB 介绍 安装 build2安装 odb-compiler安装 ODB运行时库安装 mysql和客户端开发包安装 boost profile库安装 总体打包安装 总体卸载 总体升级 头文件包含和编译时指明库 ODB常见操作介绍 类型映射 ODB编程 类与接口介绍 mysql连接池对象类 mysql客户端…...

蓝桥杯练习day1:自除数

前言 自除数 是指可以被它包含的每一位数整除的数。 例如&#xff0c;128 是一个 自除数 &#xff0c;因为 128 % 1 0&#xff0c;128 % 2 0&#xff0c;128 % 8 0。 自除数 不允许包含 0 。 给定两个整数 left 和 right &#xff0c;返回一个列表&#xff0c;列表的元素…...

0基础 | 上下拉电阻典型应用场景

三极管典型运用&#xff1a; 上拉电阻 下拉电阻 限流电阻 此处开关为三极管 左侧电阻&#xff1a;驱动电阻【限流电阻】 &#xff08;控制mos管&#xff09; 下面电阻&#xff1a;下拉电阻【关断电阻】 %%作用1&#xff1a; &#xff08;因为IO口输出信号分为低电平&…...

MySQL数据高效同步到Elasticsearch的四大方案

目录 引言 一、为什么需要MySQL到ES的同步&#xff1f; 二、四大同步方案对比 三、方案详解与代码实战 1. 应用层双写&#xff1a;简单但强耦合 2. 定时任务同步&#xff1a;可控的准实时 3. Logstash JDBC&#xff1a;离线迁移利器 4. Binlog监听&#xff1a;生产级实…...

Docker详解

云是一种服务理念。在云里docker是业务的最小载体 doker是管理容器的引擎&#xff0c;为应用打包、部署平台、而非单纯的虚拟化技术 1.轻量级虚拟化 2.一致性 4.高效的资源利用 5.易于部署和扩展 docker和虚拟机的区别&#xff1a; 虚拟机&#xff1a;真机需要一个操作系…...

清晰易懂的Maven安装教程(含自定义依赖包位置)

初学者也能看懂的 Maven 安装教程&#xff08;含自定义依赖包位置&#xff09; Maven 是一个强大的项目管理和构建工具&#xff0c;广泛用于 Java 项目的依赖管理和构建自动化。本教程将手把手教你如何在 Windows 系统上安装 Maven&#xff0c;并配置环境变量&#xff0c;同时…...

王道数据结构6.3

顶点x的第一个邻接点以及下一个邻接点 int first_neighbor(Algraph G, int x){if(G.vertices[x].firstarc! nullptr){return G.vertices[x].firstarc->adjvex;}else return -1; }int next_neighbor(Algraph G,int x,int y){ArcNode *pG.vertices[x].firstarc;while(p! null…...

【Linux操作系统——学习笔记二】Linux简单导航命令操作

一、前言 学习Linux&#xff0c;本质上是学习在命令行下熟练使用Linux的各类命令。 命令行&#xff1a;是一种通过输入命令和参数与计算机系统进行交互的方式&#xff0c;可以使用各种字符化命令对系统发出操作指令&#xff0c;打开Linux终端&#xff0c;进入命令行界面。 …...

贪心算法——c#

贪心算法通俗解释 贪心算法是一种"每一步都选择当前最优解"的算法策略。它不关心全局是否最优&#xff0c;而是通过局部最优的累积来逼近最终解。优点是简单高效&#xff0c;缺点是可能无法得到全局最优解。 一句话秒懂 自动售货机找零钱&#xff1a;用最少数量的…...

SPI 总线协议

1、协议介绍 SPI&#xff0c;是英语 Serial Peripheral interface 的缩写&#xff0c;顾名思义就是串行外围设备接口。是 Motorola 首先在其 MC68HCXX 系列处理器上定义的。 SPI&#xff0c;是一种高速的&#xff0c;全双工&#xff0c;同步的通信总线。主节点或子节点的数据在…...

单片机开发资源分析的实战——以STM32G431RBT6为例子的单片机资源分析

目录 第一点&#xff1a;为什么叫STM32G431RBT6 从资源手册拿到我们的对STM32G431RBT6的资源描述 第二件事情&#xff0c;关心我们的GPIO引脚输出 第三件事情&#xff1a;去找对应外设的说明部分 第一点&#xff1a;为什么叫STM32G431RBT6 对于命名规则不太熟悉的朋友看这里…...

物联网(IoT)架构中,平台层的应用与技术

在物联网(IoT)架构中,平台层是连接物理设备(感知层)和应用服务(应用层)的核心部分。它负责数据的采集、处理、存储、分析以及设备管理等功能,是物联网系统的“大脑”。以下是平台层的主要功能及其技术实现手段: 平台层的主要功能 设备管理: 功能:管理物联网设备的注…...

大语言模型的压缩技术

尽管人们对越来越大的语言模型一直很感兴趣&#xff0c;但MistralAI 向我们表明&#xff0c;规模只是相对而言的&#xff0c;而对边缘计算日益增长的兴趣促使我们使用小型语言获得不错的结果。压缩技术提供了一种替代方法。在本文中&#xff0c;我将解释这些技术&#xff0c;并…...

JVM 2015/3/15

定义&#xff1a;Java Virtual Machine -java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写&#xff0c;到处运行 自动内存管理&#xff0c;垃圾回收 数组下标越界检测 多态 比较&#xff1a;jvm/jre/jdk 常见的JVM&…...

DeepSeek辅助学术写作中期能力及提示词分享

目录 确立三论 收集资料 选取论据 展开论证 大家好这里是AIWritePaper官方账号&#xff01;更多内容&#x1f449;AIWritePaper~在如今这个学术圈的“快车道”上&#xff0c;时间就像是一场永不停歇的赛跑&#xff0c;而论文质量则是那颗我们拼命追逐的“金苹果”。最近一款…...

Git 实战指南:本地客户端连接 Gitee 全流程

本文将以 Gitee(码云)、系统Windows 11 为例,详细介绍从本地仓库初始化到远程协作的全流程操作 目录 1. 前期准备1.1 注册与配置 Gitee1.2 下载、安装、配置客户端1.3 配置公钥到 Gitee2. 本地仓库操作(PowerShell/Git Bash)2.1 初始化本地仓库2.2 关联 Gitee 远程仓库3. …...

汇编基础知识

机器语言 1、机器语言是机器指令的集合&#xff0c;机器指令就是机器可以正确执行的命令&#xff0c;由二进制数组成 2、当今我们常用的是pc机&#xff0c;由一个芯片完成上述功能&#xff0c;即CPU是一种微处理器&#xff0c;每一种微处理器由于自身硬件设计和内部构造不同都…...

线程池的拒绝策略适用场景思考

ThreadPoolExecutor有四种拒绝策略。刚开始学习线程池的时候我就觉得&#xff0c;就是应该当任务饱和&#xff08;达到拒绝策略&#xff09;时&#xff0c;就应该拒绝任务&#xff0c;抛出异常。最近仔细思考了下&#xff0c;既然线程池这么设计&#xff0c;也应该有一定的道理…...

on-policy对比off-policy

目录 持续更新。。。 on-policy与off-policy的定义 Q-learning属于on-policy算法还是off-policy算法&#xff1f; 为什么off-policy适用于从离线经验或多种探索策略中学习&#xff0c;明明 On-policy 也可以基于探索学习的啊&#xff1f; 重要性权重方法 off-policy方法可…...

如何记录Matlab程序运行过程中所占用的最大内存(续)

在上一篇博客中&#xff0c;我们讨论了如何记录Matlab程序运行过程中所占用的最大内存。 博客原文&#xff1a;如何记录Matlab程序运行过程中所占用的最大内存-CSDN博客 但经过测试发现&#xff0c;这与实际有非常大的差异。运行如下例子&#xff1a; clear;clc; profile on…...

解决MySQL字符集冲突引发的“Illegal mix of collations”错误

引言 在开发过程中&#xff0c;我们常常会遇到数据库层面的字符集兼容性问题。本文将通过一个典型的案例&#xff0c;分析因字符集不匹配导致的 Illegal mix of collations 错误&#xff0c;并提供完整的解决方案&#xff0c;帮助开发者彻底规避此类问题。 问题现象 假设我们…...

Vue3:F12后,页面弹出runtime errors及提示的解决办法

解决&#xff1a; vue.config.jsdevServer: {client: {overlay: false}, },关闭提示 main.js // 定义特性标志 window.__VUE_PROD_DEVTOOLS__ false window.__VUE_PROD_HYDRATION_MISMATCH_DETAILS__ false...

学习笔记:黑马程序员JavaWeb开发教程(2025.3.17)

11.5 案例-文件上传-阿里云OSS-入门 出现报错&#xff1a;Process exited with an error: 1 (Exit value: 1)&#xff0c;点击exec那一行&#xff0c;出现错误原因&#xff1a;Command execution failed. 在CSDN上找到了解决方法&#xff1a; 之后出现新的报错&…...

EDAS:投稿经验-word版本-问题解决

1. 字体不对&#xff0c;字体未嵌入问题 问题&#xff1a;word转PDF后&#xff0c;总是显示有字体格式不对&#xff08;忘记截图了&#xff09;。 办法&#xff1a;1. EDAS投稿PDF格式问题-CSDN博客-PDF上修改 IEEE论文检测的字体未嵌入问题Times New Ro…...

【数据结构初阶第十九节】八大排序系列(下篇)—[详细动态图解+代码解析]

hello&#xff0c;好久不见&#xff01; 云边有个稻草人-CSDN博客 上篇内容&#xff0c;回顾一下吧【数据结构初阶第十八节】八大排序系列(上篇)—[详细动态图解代码解析]-CSDN博客 今天我们来学习下篇 目录 &#xff08;2&#xff09;快速排序 【挖坑法】 —思路 —思路…...

不可不知的分布式数据库-TiDB

不可不知的分布式数据库-TiDB 介绍TiDb架构TiDb与Mysql的区别功能特性性能表现数据可靠性运维管理成本 Docker部署TiDB1. 获取 TiDB 配置文件2. 启动 TiDB 集群3. 连接到 TiDB4. 停止和清理 TiDB 集群注意事项 实用案例TiDB实现分布式事务实现原理实现方式SQL 方式编程方式 注意…...

BUUCTF Pwn babyheap_0ctf_2017 Unsorted bin attack部分

checksec exeinfo 开启了全保护 64位 查看函数&#xff1a; 堆题 增删查改齐了 可以在编辑堆的时候重新设置大小 存在堆溢出 delete函数的指针清零了 无UAF 想法是通过unsorted bin泄露libc基址&#xff1a; from pwn import *p process(./babyheap) #p remote("node…...

AI绘画软件Stable Diffusion详解教程(11):图生图进阶篇(局部用上传蒙版重绘)

总的功能与上一篇相似&#xff0c;但是在Stable Diffusion网页上手工涂绘的方法&#xff0c;有可能会因不够精细&#xff0c;导致重绘的效果不佳&#xff0c;涂绘区与非涂绘区的衔接有可能会出问题。这个时候可以用photoshop来制作蒙版&#xff0c;精确的圈出需要重绘的地方&am…...

SAP的WPS导出找不到路径怎么办;上载报错怎么办

一.打开注册编辑器 二.输入以下地址 计算机\HKEY_CLASSES_ROOT\ExcelWorksheet\Protocol\StdFileEditing\Server 去除掉EXE后面的命令即可 二&#xff1a;WPS上载文件没反应怎么办 如何切换整合模式或多组件模式-WPS学堂 根据官方操作把整合模式改成多组件模式...

Go语言不定长参数使用详解

不定长参数&#xff08;Variadic Parameters&#xff09;使用详解 核心概念 语法特性&#xff1a;...T 表示函数可接受任意数量的T类型参数底层实现&#xff1a;不定长参数在函数内部实际存储为切片类型 []T展开操作符&#xff1a;调用时使用 slice... 可将切片展开为独立参数…...

django如何配置使用asgi

以下是 Django 配置使用 ASGI 的完整指南&#xff1a; 一、配置前提 Django 版本&#xff1a;确保使用 Django 3.0&#xff08;原生支持 ASGI&#xff09;必要依赖&#xff1a;pip install daphne channels二、基础配置步骤 1. 创建/修改 ASGI 入口文件 在 Django 项目根目录…...

在C语言基础上学Java【Java】【一】

众所周知&#xff0c;Java是C风格的语言&#xff0c;对于学过C语言的人学Java可以快速适应。 废话不多说&#xff0c;直接边看代码边学。 数据类型&#xff0c;输入和输出 public class a1 {//a1是类名&#xff0c;就是文件名&#xff0c;所有的可执行代码需要写在这个里面 /…...

使用 Promise 和 .then() 解决同异步问题

在购物车功能中&#xff0c;用户点击“加入购物车”或“删除购物车”时&#xff0c;可能会遇到数据同步问题。例如&#xff0c;当用户快速连续点击“删除”按钮时&#xff0c;可能会导致删除操作基于过时的数据&#xff0c;从而引发错误。为了解决这个问题&#xff0c;我们可以…...

defineExpose函数

在软件开发中&#xff0c;特别是在像 Vue.js 这样的框架中&#xff0c;defineExpose 是一个函数&#xff0c;用于显式地将组件的某些属性或方法暴露给其父组件或其他组件。这在你想控制组件的内部状态或功能对外部可见性时非常有用。 Vue.js 3 中的示例&#xff1a; <scri…...

LabVIEW烟气速度场实时监测

本项目针对燃煤电站烟气流速实时监测需求&#xff0c;探讨了静电传感器结构与速度场超分辨率重建方法&#xff0c;结合LabVIEW多板卡同步采集与实时处理技术&#xff0c;开发出一个高效的烟气速度场实时监测系统。该系统能够在高温、高尘的复杂工况下稳定运行&#xff0c;提供高…...

台式机电脑组装---电源

台式机电脑组装—电源 22 33 主板供电是聚集了12V&#xff0c;5V,3.3V的24pin CPU供电的话主要是12V的44pin供电 44pin合并之后&#xff0c;就是8pin 55 SATA硬盘会使用饼io口取电&#xff0c;从电源获取12v,5v,3.3v的电 33...

中小型企业大数据平台全栈搭建:Hive+HDFS+YARN+Hue+ZooKeeper+MySQL+Sqoop+Azkaban 保姆级配置指南

目录 背景‌一、环境规划与依赖准备‌1. 服务器规划(3节点集群)2. 系统与依赖‌3. Hadoop生态组件版本与下载路径4. 架构图二、Hadoop(HDFS+YARN)安装与配置‌1. 下载与解压(所有节点)2. HDFS高可用配置3. YARN资源配置‌4. 启动Hadoop集群三、MySQL安装与Hive元数据配置…...

2023年蓝桥杯 省赛 ————特殊日期

2.特殊日期 - 蓝桥云课 错误原因&#xff1a; 分不清大小月&#xff0c;将闰年的2月天数当成了28天&#xff0c;非闰年当成了27天&#xff0c;因此出错 错误代码如下&#xff1a; package Lanqiao;import java.util.Scanner;/*** author zb* date2025/3/16 13:22*/ public …...

电动车出入库管理软件,电动车维修保养售后服务管理系统,佳易王电动车店管理系统操作教程

一、概述 本实例以 佳易王电动车店管理系统 为例说明&#xff0c;其他版本可参考本实例。试用版软件资源可到文章最后了解&#xff0c;下载的文件为压缩包文件&#xff0c;请使用免费版的解压工具解压即可试用。 软件特点&#xff1a; 操作便捷性高 软件功能实用且…...

计算机网络-综合布线系统

工作区子系统&#xff1a;由信息插座、插座盒、连接跳线和适配器组成 水平子系统&#xff1a;由一个工作区的信息插座开始&#xff0c;经水平布置到管理区的内测配线架的线缆所组成 管理子系统&#xff1a;由交连、互连配线架组成。管理子系统为连接其它子系统提供连接手段 …...

【蓝桥杯】24省赛:数字串个数

思路 本质是组合数学问题&#xff1a; 9个数字组成10000位数字有9**10000可能 不包括3的可能8**10000 不包括7的可能8**10000 既不包括3也不包括77**10000 根据容斥原理&#xff1a;结果为 9 ∗ ∗ 10000 − 8 ∗ ∗ 10000 − 8 ∗ ∗ 10000 7 ∗ ∗ 10000 9**10000 - 8**10…...

手写一些常见算法

手写一些常见算法 快速排序归并排序Dijkstra自定义排序交替打印0和1冒泡排序插入排序堆排序欧几里得算法求最大公约数 快速排序 public class Main {public static void main(String[] args) {int nums[] {1,3,2,5,4,6,8,7,9};quickSort(nums,0,nums.length - 1);}private st…...

AI自动生成数据

文章目录 概要案例生成简单的文本数据 概要 合成数据是人工生成的数据而不是从现实世界事件中收集的数据。它用于模拟真实数据&#xff0c;而不会泄露隐私或遇到现实世界的限制 安装依赖&#xff1a;pip install langchain_experimental 合成数据的优势&#xff1a; 1.隐私…...

【STM32】从新建一个工程开始:STM32 新建工程的详细步骤

STM32 开发通常使用 Keil MDK、STM32CubeMX、IAR 等工具来创建和管理工程。此处是 使用 Keil MDK5 STM32CubeMX 创建 STM32 工程的详细步骤。 新建的标准库工程文件已上传至资源中&#xff0c;下载后即可直接使用。 标准库新建 STM32 工程的基本目录结构&#xff1a;STD_STM…...

【Go语言圣经3.6】

目标 概念 常量与变量的主要区别在于&#xff1a; 不可变性&#xff1a;常量在声明后其值就固定下来&#xff0c;不能再被修改。这保证了程序运行时不会因意外修改而导致错误。 使用不可变数据&#xff08;例如数学常数 π&#xff09;可以避免意外修改带来的问题 编译期计算…...

[IP]UART

UART 是一个简易串口ip&#xff0c;用户及配置接口简单。 波特率从9600至2000000。 该 IP 支持以下特性&#xff1a; 异步串行通信&#xff1a;标准 UART 协议&#xff08;1 起始位&#xff0c;8 数据位&#xff0c;1 停止位&#xff0c;无奇偶校验&#xff09;。 参数化配置…...

Windows主机、虚拟机Ubuntu、开发板,三者之间文件互传

以下内容源于日常学习的整理&#xff0c;欢迎交流。 下图是Windows主机、虚拟机Ubuntu、开发者三者之间文件互传的方式示意图&#xff1a; 注意&#xff0c;下面谈及的所有方式&#xff0c;都要求两者的IP地址处于同一网段&#xff0c;涉及到的软件资源见felm。 一、Windows主…...

4.好事多磨 1

前言 我们已经学习了创建套接字和向套接字分配地址&#xff0c;接下来正式讨论通过套接字收发数据。 之前介绍套接字时举例说明了面向连接的套接字和面向消息的套接字这2种数据传输方式&#xff0c;特别是重点讨论了面向连接的套接字。这次将具体讨论这种面向连接的服务器端/客…...

AI预测体彩排3新模型百十个定位预测+胆码预测+杀和尾+杀和值2025年3月18日第22弹

前面由于工作原因停更了很长时间&#xff0c;停更期间很多彩友一直私信我何时恢复发布每日预测&#xff0c;目前手头上的项目已经基本收尾&#xff0c;接下来恢复发布。当然&#xff0c;也有很多朋友一直咨询3D超级助手开发的进度&#xff0c;在这里统一回复下。 由于本人既精…...

相机标定之DLT算法学习

文章目录 1.针孔相机模型2.各个坐标系的定义1&#xff09;世界坐标系&#xff08;world coordinate&#xff09;2&#xff09;相机坐标系&#xff08;camera coordinate&#xff09;3&#xff09;图像坐标系&#xff08;film coordinate&#xff09;4&#xff09;像素坐标系&am…...