OceanBase4.2版本 Docker 体验

📢📢📢📣📣📣
哈喽!大家好,我是【IT邦德】,江湖人称jeames007,10余年DBA及大数据工作经验
一位上进心十足的【大数据领域博主】!😜😜😜
中国DBA联盟(ACDU)成员,目前服务于工业互联网
擅长主流Oracle、MySQL、PG、高斯及Greenplum运维开发,备份恢复,安装迁移,性能优化、故障应急处理等。
✨ 如果有对【数据库】感兴趣的【小可爱】,欢迎关注【IT邦德】💞💞💞
❤️❤️❤️感谢各位大可爱小可爱!❤️❤️❤️

文章目录

    • 1.OceanBase 发展历程
    • 📣 2.Docker安装
      • ✨ 2.1 安装依赖包
      • ✨ 2.2 在线安装
      • 2.3 启动 Docker
    • 📣 3.环境要求
    • 📣 4.部署OB
      • ✨ 4.1 下载镜像
      • ✨ 4.2 创建容器
      • ✨ 4.3 集群管理
    • 📣 5.使用OceanBase
      • ✨ 5.1 登陆OB
      • ✨ 5.2 创建资源规格
      • ✨ 5.3 创建资源池
      • ✨ 5.4 创建租户
      • ✨ 5.5 建库建表
    • 6.报错处理
    • 7.总结


本文通过OceanBase Docker容器,快速的体验 OceanBase4.2版本的自动化部署过程,以及了解 OceanBase集群安装成功后的目录特点和使用方法

1.OceanBase 发展历程

📣 2.Docker安装

✨ 2.1 安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2

sudo yum-config-manager
–add-repo
https://download.docker.com/linux/centos/docker-ce.repo

✨ 2.2 在线安装

[root@centos7 ~] yum -y install docker-ce docker-ce-cli containerd.io

2.3 启动 Docker

[root@centos7 ~]# systemctl enable docker
[root@centos7 ~]# systemctl start docker
[root@centos7 ~]# systemctl status docker

[root@centos7 ~]# docker ps --查看容器
[root@centos7 ~]# docker version --查看版本
[root@centos7 ~]# docker info --查看版本

📣 3.环境要求

1.有笔记本或服务器,内存至少12G 。
2.操作系统不限,能安装 Docker 环境即可。
Docker 官方镜像:
https://hub.docker.com/r/obpilot/oceanbase-ce

📣 4.部署OB

✨ 4.1 下载镜像

搜索 OceanBase 数据库相关镜像
[root@centos79 ~]# docker search oceanbase
拉取 OceanBase 数据库最新镜像
[root@centos79 ~]# docker pull oceanbase/oceanbase-ce

[root@centos79 ~]# docker images | grep oceanbase
oceanbase/oceanbase-ce latest 92e357628ff3 7 days ago 652MB

✨ 4.2 创建容器

1.新容器创建
根据当前容器部署最大规格实例
docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=0 -d oceanbase/oceanbase-ce
部署 mini 的独立实例
docker run -p 2881:2881 --name obstandalone -e MINI_MODE=1 -d oceanbase/oceanbase-ce

–以下命令执行后,需要等待3到5分钟
[root@centos79 ~]# docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE=0 -d oceanbase/oceanbase-ce
f21bf6621e1e6d404eb0dc8e945f6f9ab5a5b37e99b10a9058328ec1a44195ee

执行以下命令,如果返回 boot success!,则表示启动成功
[root@centos79 ~]# docker logs oceanbase-ce | tail -1
boot success!

2.进入容器
[root@centos79 ~]# docker exec -it oceanbase-ce bash
[root@f21bf6621e1e ~]# cat /etc/redhat-release
Anolis OS release 8.8
[root@f21bf6621e1e ~]# ls
boot dest ob obagent pkg store
[root@f21bf6621e1e ~]# obclient -uroot@sys -h127.1 -P2881

3.连接OceanBase数据库实例
–使用 root 用户登录集群的 sys 租户
docker exec -it oceanbase-ce ob-mysql sys
–使用 root 用户登录集群的 root 租户
docker exec -it oceanbase-ce ob-mysql root
–使用 root 用户登录集群的 test 租户
docker exec -it oceanbase-ce ob-mysql test

[root@centos79 ~]# docker exec -it oceanbase-ce ob-mysql sys
login as root@sys
Command is: obclient -h127.1 -uroot@sys -A -Doceanbase -P2881
Welcome to the OceanBase. Commands end with ; or \g.
Your OceanBase connection id is 3221506698
Server version: OceanBase_CE 4.2.2.0 (r100010012024022719-c984fe7cb7a4cef85a40323a0d073f0c9b7b8235) (Built Feb 27 2024 19:20:54)
Copyright © 2000, 2018, OceanBase and/or its affiliates. All rights reserved.
Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.
obclient [oceanbase]>
–修改用户
ALTER USER root IDENTIFIED BY ‘123456’;

✨ 4.3 集群管理

--  查看集群列表
[root@centos79 ~]# docker exec -it oceanbase-ce bash
[root@f21bf6621e1e ~]# obd cluster list
+------------------------------------------------------------+
|                        Cluster List                        |
+-----------+------------------------------+-----------------+
| Name      | Configuration Path           | Status (Cached) |
+-----------+------------------------------+-----------------+
| obcluster | /root/.obd/cluster/obcluster | running         |
+-----------+------------------------------+-----------------+
Trace ID: 2703e982-e070-11ee-8e4b-0242ac110002
If you want to view detailed obd logs, please run: obd display-trace 2703e982-e070-11ee-8e4b-0242ac110002配置文件:/root/.obd/cluster/obcluster/config.yaml
[root@f21bf6621e1e ~]# ls /root/.obd/cluster/obcluster/config.yaml
/root/.obd/cluster/obcluster/config.yaml

📣 5.使用OceanBase

✨ 5.1 登陆OB

1.使用 root 用户登录到集群的 sys 租户[root@f21bf6621e1e ~]# obclient -uroot@sys -h127.1 -P2881 -p123456 -A
Welcome to the OceanBase.  Commands end with ; or \g.
Your OceanBase connection id is 3221545291
Server version: OceanBase_CE 4.2.2.0 (r100010012024022719-c984fe7cb7a4cef85a40323a0d073f0c9b7b8235) (Built Feb 27 2024 19:20:54)Copyright (c) 2000, 2018, OceanBase and/or its affiliates. All rights reserved.Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.obclient [(none)]> 2.进入 oceanbase 数据库。
obclient [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| LBACSYS            |
| mysql              |
| oceanbase          |
| ocs                |
| ORAAUDITOR         |
| SYS                |
| test               |
+--------------------+
8 rows in set (0.006 sec)obclient [(none)]> USE oceanbase;
Database changed

✨ 5.2 创建资源规格

资源规格是对 CPU、内存、磁盘空间、IOPS 等资源项进行的定义。1.通过 DBA_OB_UNIT_CONFIGS 视图,获取已有的资源规格信息。
obclient [oceanbase]>  SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS\G
*************************** 1. row ***************************
UNIT_CONFIG_ID: 1NAME: sys_unit_configCREATE_TIME: 2024-03-12 20:51:45.967417MODIFY_TIME: 2024-03-12 20:51:45.967417MAX_CPU: 3MIN_CPU: 3MEMORY_SIZE: 2147483648LOG_DISK_SIZE: 2147483648MAX_IOPS: 9223372036854775807MIN_IOPS: 9223372036854775807IOPS_WEIGHT: 3
*************************** 2. row ***************************
UNIT_CONFIG_ID: 1001NAME: test_unitCREATE_TIME: 2024-03-12 20:52:12.652689MODIFY_TIME: 2024-03-12 20:52:12.652689MAX_CPU: 13MIN_CPU: 13MEMORY_SIZE: 3221225472LOG_DISK_SIZE: 3221225472MAX_IOPS: 9223372036854775807MIN_IOPS: 9223372036854775807IOPS_WEIGHT: 13
2 rows in set (0.000 sec)2.创建一个名称为 S1_unit_config 的资源规格,其资源配置为 CPU 为 1 核,内存 4G,日志盘空间 6G。
obclient [oceanbase]> CREATE RESOURCE UNIT S1_unit_configMEMORY_SIZE = '4G',MAX_CPU = 1, MIN_CPU = 1,LOG_DISK_SIZE = '6G',MAX_IOPS = 10000, MIN_IOPS = 10000, IOPS_WEIGHT=1;3.查询 DBA_OB_UNIT_CONFIGS 视图,确认资源规格创建成功。
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_UNIT_CONFIGS WHERE NAME = 'S1_unit_config'\G

在这里插入图片描述

✨ 5.3 创建资源池

创建资源规格后,可以在创建资源池时指定资源规格,从而使用相应大小的资源单元,并最终分配给相应的租户。
1.使用 root 用户登录到集群的 sys 租户。
[root@f21bf6621e1e ~]# obclient -uroot@sys -h127.1 -P2881 -p123456 -A
obclient [oceanbase]> USE oceanbase;2.通过 DBA_OB_RESOURCE_POOLS 视图,获取资源池的配置信息。
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_RESOURCE_POOLS\G
*************************** 1. row ***************************
RESOURCE_POOL_ID: 1NAME: sys_poolTENANT_ID: 1CREATE_TIME: 2024-03-12 20:51:45.971544MODIFY_TIME: 2024-03-12 20:51:45.982456UNIT_COUNT: 1UNIT_CONFIG_ID: 1ZONE_LIST: zone1REPLICA_TYPE: FULL
*************************** 2. row ***************************
RESOURCE_POOL_ID: 1001NAME: test_poolTENANT_ID: 1002CREATE_TIME: 2024-03-12 20:52:12.661303MODIFY_TIME: 2024-03-12 20:52:12.687355UNIT_COUNT: 1UNIT_CONFIG_ID: 1001ZONE_LIST: zone1REPLICA_TYPE: FULL
2 rows in set (0.002 sec)DROP TENANT test_pool;3.创建一个名为 mq_pool_01 的资源池,在 zone1、zone2 里各创建 1 个 Unit,每个 Unit 的资源规格为 S1_unit_config。
可以查询 oceanbase.DBA_OB_ZONES 视图进行确认Zone
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_ZONES;
+-------+----------------------------+----------------------------+--------+-----+------------+-----------+
| ZONE  | CREATE_TIME                | MODIFY_TIME                | STATUS | IDC | REGION     | TYPE      |
+-------+----------------------------+----------------------------+--------+-----+------------+-----------+
| zone1 | 2024-03-12 16:59:12.856024 | 2024-03-12 16:59:12.856024 | ACTIVE |     | sys_region | ReadWrite |
+-------+----------------------------+----------------------------+--------+-----+------------+-----------+
1 row in set (0.023 sec)obclient [(none)]> ALTER SYSTEM ADD ZONE zone2 REGION 'hefei',ZONE_TYPE='ReadWrite';obclient [oceanbase]> CREATE RESOURCE POOL mq_pool_01 UNIT='S1_unit_config', UNIT_NUM=1, ZONE_LIST=('zone2'); 

✨ 5.4 创建租户

资源池创建后,您可以根据业务需要,将资源池分配给租户。OceanBase 数据库支持两种类型的租户,MySQL 兼容模式和 Oracle 兼容模式。创建租户时,您需要指定租户的类型。租户创建后,租户类型无法修改,因此创建租户前请规划好您的租户类型。1.使用 root 用户登录到集群的 sys 租户。
[root@f21bf6621e1e ~]# obclient -uroot@sys -h127.1 -P2881 -A -p1234562.进入 oceanbase 数据库。
obclient [(none)]> USE oceanbase;3.通过 DBA_OB_TENANTS 视图,查看所有的租户信息
obclient [oceanbase]> SELECT * FROM oceanbase.DBA_OB_TENANTS\G
*************************** 1. row ***************************TENANT_ID: 1TENANT_NAME: sysTENANT_TYPE: SYSCREATE_TIME: 2024-03-12 22:36:36.751973MODIFY_TIME: 2024-03-12 22:36:36.751973PRIMARY_ZONE: RANDOMLOCALITY: FULL{1}@zone1PREVIOUS_LOCALITY: NULLCOMPATIBILITY_MODE: MYSQLSTATUS: NORMALIN_RECYCLEBIN: NOLOCKED: NOTENANT_ROLE: PRIMARYSWITCHOVER_STATUS: NORMALSWITCHOVER_EPOCH: 0SYNC_SCN: NULLREPLAYABLE_SCN: NULLREADABLE_SCN: NULLRECOVERY_UNTIL_SCN: NULLLOG_MODE: NOARCHIVELOG
ARBITRATION_SERVICE_STATUS: DISABLEDUNIT_NUM: 1COMPATIBLE: 4.2.2.0MAX_LS_ID: 1
*************************** 2. row ***************************TENANT_ID: 1001TENANT_NAME: META$1002TENANT_TYPE: METACREATE_TIME: 2024-03-12 22:37:04.034661MODIFY_TIME: 2024-03-12 22:37:41.629058PRIMARY_ZONE: RANDOMLOCALITY: FULL{1}@zone1PREVIOUS_LOCALITY: NULLCOMPATIBILITY_MODE: MYSQLSTATUS: NORMALIN_RECYCLEBIN: NOLOCKED: NOTENANT_ROLE: PRIMARYSWITCHOVER_STATUS: NORMALSWITCHOVER_EPOCH: 0SYNC_SCN: NULLREPLAYABLE_SCN: NULLREADABLE_SCN: NULLRECOVERY_UNTIL_SCN: NULLLOG_MODE: NOARCHIVELOG
ARBITRATION_SERVICE_STATUS: DISABLEDUNIT_NUM: 1COMPATIBLE: 4.2.2.0MAX_LS_ID: 1
*************************** 3. row ***************************TENANT_ID: 1002TENANT_NAME: testTENANT_TYPE: USERCREATE_TIME: 2024-03-12 22:37:04.033335MODIFY_TIME: 2024-03-12 22:37:41.783779PRIMARY_ZONE: RANDOMLOCALITY: FULL{1}@zone1PREVIOUS_LOCALITY: NULLCOMPATIBILITY_MODE: MYSQLSTATUS: NORMALIN_RECYCLEBIN: NOLOCKED: NOTENANT_ROLE: PRIMARYSWITCHOVER_STATUS: NORMALSWITCHOVER_EPOCH: 0SYNC_SCN: 1710254307122913004REPLAYABLE_SCN: 1710254307122913004READABLE_SCN: 1710254307122913004RECOVERY_UNTIL_SCN: 4611686018427387903LOG_MODE: NOARCHIVELOG
ARBITRATION_SERVICE_STATUS: DISABLEDUNIT_NUM: 1COMPATIBLE: 4.2.2.0MAX_LS_ID: 1001
3 rows in set (0.026 sec)4.通过 CREATE TENANT 语句,创建租户
obclient [oceanbase]> drop TENANT META$1002;obclient [oceanbase]> 
CREATE TENANT IF NOT EXISTS mq_t1 
PRIMARY_ZONE='zone1', 
RESOURCE_POOL_LIST=('test_pool')
set OB_TCP_INVITED_NODES='%';

在这里插入图片描述

✨ 5.5 建库建表

默认管理员用户(MySQL 模式为 root,Oracle 模式为 sys)的密码为空,您需要及时修改管理员用户的密码。
MySQL 兼容模式--登录 mq_t1 租户的 root 用户。
obclient -uroot@mq_t1 -h127.1 -P2881--执行以下语句修改 root 用户的密码
obclient [(none)]> ALTER USER root IDENTIFIED BY '123456';--退出后重新登陆
obclient -uroot@mq_t1 -h127.1 -P2881 -p123456--创建数据库并指定字符集
CREATE DATABASE testdb DEFAULT CHARACTER SET UTF8;
obclient [(none)]> use testdb--建表
CREATE TABLE course_tb(
course_id int(10) NOT NULL, 
course_name char(10) NOT NULL,
course_datetime char(30) NOT NULL);INSERT INTO course_tb VALUES(1, 'Python', '2021-12-1 19:00-21:00');
INSERT INTO course_tb VALUES(2, 'SQL', '2021-12-2 19:00-21:00');
INSERT INTO course_tb VALUES(3, 'R', '2021-12-3 19:00-21:00');obclient [testdb]> desc course_tb-> ;
+-----------------+----------+------+-----+---------+-------+
| Field           | Type     | Null | Key | Default | Extra |
+-----------------+----------+------+-----+---------+-------+
| course_id       | int(10)  | NO   |     | NULL    |       |
| course_name     | char(10) | NO   |     | NULL    |       |
| course_datetime | char(30) | NO   |     | NULL    |       |
+-----------------+----------+------+-----+---------+-------+obclient [testdb]> select * from course_tb;
+-----------+-------------+-----------------------+
| course_id | course_name | course_datetime       |
+-----------+-------------+-----------------------+
|         1 | Python      | 2021-12-1 19:00-21:00 |
|         2 | SQL         | 2021-12-2 19:00-21:00 |
|         3 | R           | 2021-12-3 19:00-21:00 |
+-----------+-------------+-----------------------+

6.报错处理

1.创建资源池的报错
ERROR 4656 (HY000): resource pool unit num is bigger than zone server count
//说明:集群只有一个zone,且zone中只有一台observer ,所以无法创建 unit_num大于1的资源池;

向集群新增 OBServer xxx.xx.xxx.xx1。
obclient> ALTER SYSTEM ADD SERVER ‘127.0.0.1:2883’ ZONE ‘zone2’;
obclient [oceanbase]> select * from GV$OB_SERVERS

2.ERROR 4012 (HY000): Timeout报错
sql响应超时时间设置太短了,所以当sql执行需要一定时间时就会报错4012
obclient [oceanbase]> show variables like '%timeout%';
+---------------------+------------------+
| Variable_name       | Value            |
+---------------------+------------------+
| connect_timeout     | 10               |
| interactive_timeout | 28800            |
| lock_wait_timeout   | 31536000         |
| net_read_timeout    | 30               |
| net_write_timeout   | 60               |
| ob_pl_block_timeout | 3216672000000000 |
| ob_query_timeout    | 10000000         |
| ob_trx_idle_timeout | 86400000000      |
| ob_trx_lock_timeout | -1               |
| ob_trx_timeout      | 86400000000      |
| wait_timeout        | 28800            |
+---------------------+------------------+
11 rows in set (0.015 sec)# 租户下设置,防止超时
obclient> set global ob_query_timeout=86400000000000000;
obclient> set global ob_trx_timeout=86400000000000000;

ob_query_timeout用于设置查询超时时间,单位是微秒;
ob_trx_timeout用于设置事务超时时间,单位为微秒。
两个参数有GLOBAL和SESSION两种级别:
global参数的话是对全局session生效,但是不包括本次链接,重新登录生效;
如果不加global,就是仅对本次session生效,退出登录还是原来的值。

3.登陆OB如果遇到以下报错,重启容器即可
ERROR 2014 (HY000): Commands out of sync; you can’t run this command now

7.总结

通过 OceanBase Docker 容器,快速的体验 OceanBase 的 自动化部署过程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/274774.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

闲聊电脑(7)常见故障排查

闲聊电脑(7)常见故障排查 夜深人静,万籁俱寂,老郭趴在电脑桌上打盹,桌子上的小黄鸭和桌子旁的冰箱又开始窃窃私语…… 小黄鸭:冰箱大哥,平时遇到电脑故障该咋处理呢? 冰箱&#xf…

linux 查看打开使用了哪些端口

你可以使用 netstat 命令来查看Linux系统中正在使用的端口。例如,要查看所有正在使用的TCP和UDP端口,你可以运行: sudo netstat -tulpn如果你只想查看所有正在使用的TCP端口,你可以运行: sudo netstat -tpln 如果你只…

C#,红黑树(Red-Black Tree)的构造,插入、删除及修复、查找的算法与源代码

1 红黑树(Red-Black Tree) 如果二叉搜索树满足以下红黑属性,则它是红黑树: 每个节点不是红色就是黑色。根是黑色的。每片叶子(无)都是黑色的。如果一个节点是红色的,那么它的两个子节点都是黑色的。对于每个节点,从节点到后代叶的所有路径都包含相同数量的黑色节点。红…

使用yarn创建vite+vue3electron多端运行

文章目录 第一步 使用yarn创建vitevue3项目遇到创建报错看 第二步 引入electron第三步 创建main.js在electron下面的main.js写入下面代码 第四步 安装同时运行多条命令npm包&&修改package.json文件npm包增加一条electron运行脚本命令 效果图 第一步 使用yarn创建vitevu…

关于- bounding box reparameterization

因为detr以及大部分detr的变体都是将box的x,y,w,h映射到[0~1]之间; 这样对于小目标的检测的话就会比较困难,因为损失被大目标主导了, 所以将box的坐标编码为跟长宽占比的数值,具体如图图中描述所示:

SA3D:基于 NeRF 的三维场景分割方法

Paper: Cen J, Zhou Z, Fang J, et al. Segment anything in 3d with nerfs[J]. Advances in Neural Information Processing Systems, 2024, 36. Introduction: https://jumpat.github.io/SA3D/ Code: https://github.com/Jumpat/SegmentAnythingin3D SA3D 是一种用于 NeRF 表…

JAVA实战开源项目:生活废品回收系统(Vue+SpringBoot)

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容三、界面展示3.1 登录注册3.2 资源类型&资源品类模块3.3 回收机构模块3.4 资源求购/出售/交易单模块3.5 客服咨询模块 四、免责说明 一、摘要 1.1 项目介绍 生活废品回收系统是可持续发展的解决方案,旨在鼓…

Linux中文件的权限

我们首先需要明白,权限 用户角色 文件的权限属性 一、拥有者、所属组和other(用户角色) 以文件file1为例 第一个箭头所指处即是文件的拥有者,拥有者为zz 第二个箭头所指处即使文件的所属组,所属组为zz 除去拥有者…

Docker 搭建 PaddleOCR

转自PaddleOCR docker模式 - 简书 目的: 公司要放弃第三方的ocr工具(日语),需要自己搭建训练一套,这篇是搭建 图片要标出文字的选取框 因为是日文所以ocr有专门的工具,只需要文字坐标就好如图 日文的账票需要加密一下 我得环境是 Ubuntu 22.04.1 LTS 1,下载代码 cd /hom…

10、Redis分布式系统之数据分区算法

Redis分布式系统之数据分区算法 1、什么是Redis分布式系统 ​ Redis分布式系统,官方称为Redis Cluster, Redis集群(这个集群和前面的主从复制集群不同,这个集群可以理解为是多个主从复制集群所组成的集群),其实是Red…

js手写实现迭代器生成器函数包括【ES5】和【ES6】

/*** JS原生的集合类型数据结构,只有Array(数组)和Object(对象);而ES6中,又新增了Map和Set。* 四种数据结构各自有着自己特别的内部实现,但我们仍期待以同样的一套规则去遍历它们&am…

垃圾清理软件大全免费 磁盘空间不足?注册表不敢乱动怎么办?ccleaner官方下载

在日常的工作中,面对重要文件时往往都会备份一份;在下载文件时,有时也会不小心把一份文件下载好多次。这些情况会导致电脑中出现重复的文件,删除这些重复文件,可以节省电脑空间,帮助提高电脑运行速度。那么…

【C语言】人生重开模拟器

前言: 人生重开模拟器是前段时间非常火的一个小游戏,接下来我们将一起学习使用c语言写一个简易版的人生重开模拟器。 网页版游戏: 人生重开模拟器 (ytecn.com) 1.实现一个简化版的人生重开模拟器 (1) 游戏开始的时…

openAI key 与ChatGPTPlus的关系,如何升级ChatGPTPLus

一、前言 先详细介绍一下Plus会员和Open API之间的区别: 实际上,这两者是相互独立的。举例来说,虽然您开通了Plus会员,并不意味着您就可以使用4.0版本的API。尽管这两个账户可以是同一个,但它们是完全独立的平台。 …

C++的一些基础语法

前言: 本篇将结束c的一些基础的语法,方便在以后的博客中出现,后续的一些语法将在涉及到其它的内容需要用到的时候具体展开介绍;其次,我们需要知道c是建立在c的基础上的,所以c的大部分语法都能用在c上。 目…

Matplotlib中的子图:规划绘图的指南和工具

导 读 我最近从事一个项目,需要在 matplotlib 中进行一些微调的子图和叠加。虽然我对制作基本的可视化感到很舒服,但我很快发现我对子图系统的理解没有达到标准。于是回到基础知识,并花了一些时间阅读文档并在 Stack Overflow 上搜索相关示例…

uniapp—day02

个人名片: 😊作者简介:一名大二在校生 🤡 个人主页:坠入暮云间x 🐼座右铭:给自己一个梦想,给世界一个惊喜。 🎅**学习目标: 坚持每一次的学习打卡 文章目录 WXML 和HTML区…

C语言——简易版扫雷

目录 前言 ​编辑 游戏规则 游戏结构的分析 游戏的设计 使用多文件的好处有以下几点: 游戏代码实现 框架(test.c) game函数(test.c) InitBoard初始化(game.c) Print打印棋盘(g…

掘根宝典之C++迭代器简介

在C中,容器是一种用于存储和管理数据的数据结构。C标准库提供了多种容器,每种容器都有其独特的特点和适用场景。 我们知道啊,我们可以通过下标运算符来对容器内的元素进行访问,但是只有少数几种容器才同时支持下标运算符&#xf…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的商品识别系统(深度学习+UI界面+训练数据集+Python代码)

摘要:在零售行业的技术进步中,开发商品识别系统扮演着关键角色。本博文详细阐述了如何利用深度学习技术搭建一个高效的商品识别系统,并分享了一套完整的代码实现。系统采用了性能强劲的YOLOv8算法,同时对YOLOv7、YOLOv6、YOLOv5等…