部署Apache Doris

官方文档:https://doris.apache.org/zh-CN/installing/compilation.html

一、编译

使用 Docker 开发镜像编译(推荐)

1.拉取镜像
#下载 Docker 最新主干版本代码,会随主干版本不断更新。
$ docker pull apache/incubator-doris:build-env-ldb-toolchain-latest

#下载对应的镜像版本
$ docker pull apache/incubator-doris:build-env-for-0.15.0
2.检查镜像下载完成
$ docker images
REPOSITORY               TAG                    IMAGE ID       CREATED        SIZE
apache/incubator-doris   build-env-for-0.15.0   e568f7b2e1d8   3 months ago   3.54GB
3.运行镜像
$ mkdir -p /data/apps/apache-doris
$ docker run -it -v /data/apps/apache-doris/.m2:/root/.m2 -v /data/apps/apache-doris/incubator-doris-DORIS-0.15.0-release/:/root/incubator-doris-DORIS-0.15.0-release/ apache/incubator-doris:build-env-for-0.15.0

注:将镜像中 maven 的 .m2 目录挂载到宿主机目录,以防止每次启动镜像编译时,重复下载 maven 的依赖库。

4.下载源码

启动镜像后,你应该已经处于容器内。可以通过以下命令下载 Doris 源码(已挂载本地源码目录则不用)

[root@0fd6fc1093fd ~]# cd incubator-doris-DORIS-0.15.0-release/
[root@0fd6fc1093fd incubator-doris-DORIS-0.15.0-release]# wget https://dist.apache.org/repos/dist/dev/incubator/doris/xxx.tar.gz
or
[root@0fd6fc1093fd incubator-doris-DORIS-0.15.0-release]# git clone https://github.com/apache/incubator-doris.git
5.编译 Doris
$ cd /root/incubator-doris-DORIS-0.15.0-release/apache-doris-0.15.0-incubating-src/

$ sh build.sh

#如果你是第一次使用 build-env-for-0.15.0 或之后的版本,第一次编译的时候要使用如下命令:
$ sh build.sh --clean --be --fe --ui

编译完成后,产出文件在 output/ 目录中。

注意:
build-env-for-0.15.0 版本镜像升级了 thrift(0.9 -> 0.13),需要通过 --clean 命令强制使用新版本的 thrift 生成代码文件,否则会出现不兼容的代码。

二、软硬件需求

Doris 作为一款开源的 MPP 架构 OLAP 数据库,能够运行在绝大多数主流的商用服务器上。为了能够充分运用 MPP 架构的并发优势,以及 Doris 的高可用特性,我们建议 Doris 的部署遵循以下需求:

硬件需求

  • 开发测试环境
模块CPU内存磁盘网络实例数量
Frontend8核+8GB+SSD 或 SATA,10GB+ *千兆网卡1
Backend8核+16GB+SSD 或 SATA,50GB+ *千兆网卡1-3 *
  • 生产环境
模块CPU内存磁盘网络实例数量(最低要求)
Frontend16核+64GB+SSD 或 RAID 卡,100GB+ *万兆网卡1-5 *
Backend16核+64GB+SSD 或 SATA,100G+ *万兆网卡10-100 *

注1:
1.FE 的磁盘空间主要用于存储元数据,包括日志和 image。通常从几百 MB 到几个 GB 不等。
2.BE 的磁盘空间主要用于存放用户数据,总磁盘空间按用户总数据量 * 3(3副本)计算,然后再预留额外 40% 的空间用作后台 compaction 以及一些中间数据的存放。
3.一台机器上可以部署多个 BE 实例,但是只能部署一个 FE。如果需要 3 副本数据,那么至少需要 3 台机器各部署一个 BE 实例(而不是1台机器部署3个BE实例)。多个FE所在服务器的时钟必须保持一致(允许最多5秒的时钟偏差)
4.测试环境也可以仅适用一个 BE 进行测试。实际生产环境,BE 实例数量直接决定了整体查询延迟。
5.所有部署节点关闭 Swap。

注2:FE 节点的数量
1.FE 角色分为 Follower 和 Observer,(Leader 为 Follower 组中选举出来的一种角色,以下统称 Follower,具体含义见 元数据设计文档)。
2.FE 节点数据至少为1(1 个 Follower)。当部署 1 个 Follower 和 1 个 Observer 时,可以实现读高可用。当部署 3 个 Follower 时,可以实现读写高可用(HA)。
3.Follower 的数量必须为奇数,Observer 数量随意。
4.根据以往经验,当集群可用性要求很高时(比如提供在线业务),可以部署 3 个 Follower 和 1-3 个 Observer。如果是离线业务,建议部署 1 个 Follower 和 1-3 个 Observer。

  • 通常我们建议 10 ~ 100 台左右的机器,来充分发挥 Doris 的性能(其中 3 台部署 FE(HA),剩余的部署 BE)
  • 当然,Doris的性能与节点数量及配置正相关。在最少4台机器(一台 FE,三台 BE,其中一台 BE 混部一个 Observer FE 提供元数据备份),以及较低配置的情况下,依然可以平稳的运行 Doris。
  • 如果 FE 和 BE 混部,需注意资源竞争问题,并保证元数据目录和数据目录分属不同磁盘。

软件需求

1.版本要求
软件版本
JavaJava 11 及以上
GCC4.8.2 及以上
2.设置系统最大打开文件句柄数
$ vi /etc/security/limits.conf 
* soft nofile 65536
* hard nofile 65536
3.时钟同步
#修改时区
$ cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

#NTP域名同步
$ ntpdate cn.pool.ntp.org

#将系统时间写入到系统硬件当中
$ hwclock -w

#添加定时任务
$ echo '11 * * * root ntpdate cn.pool.ntp.org' >>/etc/crontab
4.关闭交换分区(swap)
#将/etc/fstab 文件中包含swap的行注释掉
$ sed -i '/swap/s/^/#/' /etc/fstab
$ swapoff -a
5.Liunx文件系统

这里我们推荐使用ext4文件系统,在安装操作系统的时候,请选择ext4文件系统。

三、集群部署

节点信息

节点IP
FE172.21.1.19
BE172.21.19.251
BE172.21.21.141

3-1、FE 部署

1.拷贝 FE 部署文件到指定节点
#将源码编译生成的 output 下的 fe 文件夹拷贝到 FE 的节点指定部署路径下
$ cd /data/apps/apache-doris
$ cp -rf incubator-doris-DORIS-0.15.0-release/apache-doris-0.15.0-incubating-src/output/fe /data/apps/apache-doris/
2.配置 FE

fe.conf 中 JAVA_OPTS 默认 java 最大堆内存为 4GB,建议生产环境调整至 8G 以上。

$ cd /data/apps/apache-doris/fe/

#修改FE元数据存放位置
$ mkdir -p /data/apache-doris/fe/doris-meta
$ sed -i 's#^.*meta_dir.*$#meta_dir = /data/apache-doris/fe/doris-meta#' conf/fe.conf

#脚本中指定JAVA_HOME路径,根据实际情况配置
$ sed -i '1a\export JAVA_HOME=/usr/java/jdk1.8' /data/apps/apache-doris/fe/bin/start_fe.sh

#priority_networks 配置进程绑定IP
$ sed -i 's#^.*priority_networks.*$#priority_networks =  172.21.0.0/16#' conf/fe.conf

#修改日志默认位置,如启动失败,可以通过查看 log/fe.log 或者 log/fe.out 查看错误信息。
$ mkdir -p /data/logs/apache-doris
$ sed -i 's#LOG_DIR.*$#LOG_DIR = /data/logs/apache-doris#g' conf/fe.conf

注意:生产环境强烈建议单独指定目录不要放在Doris安装目录下,最好是单独的磁盘(如果有SSD最好),测试开发环境可以使用默认配置

3.启动FE

编写启动脚本

#添加环境变量,否则启动报错
$ sed -i '/"$JAVA_HOME" = ""/iJAVA_HOME=/data/apps/jdk-11.0.2' /data/apps/apache-doris/fe/bin/start_fe.sh

$ cat << EOF >/usr/lib/systemd/system/doris-fe.service
	[Unit]
	Description=Apache Doris Fe Service
	After=network.target

	[Service]
	Type=forking
	KillMode=control-group
	ExecStart=/data/apps/apache-doris/fe/bin/start_fe.sh --daemon
	ExecStop=/data/apps/apache-doris/fe/bin/stop_fe.sh
	ExecReload=/bin/kill -s HUP \$MAINPID
	SuccessExitStatus=0 143
	PrivateTmp=true
	LimitNOFILE=1000000
	LimitNPROC=100000
	TimeoutStopSec=10s
	Restart=on-failure
	RestartSec=30

	[Install]
	WantedBy=multi-user.target
EOF

启动FE

$ systemctl daemon-reload
$ systemctl start doris-fe.service
$ systemctl enable doris-fe.service

检测 FE 是否启动成功
FE 进程启动后,会首先加载元数据,根据 FE 角色的不同,在日志中会看到 transfer from UNKNOWN to MASTER/FOLLOWER/OBSERVER。最终会看到 thrift server started 日志,并且可以通过 mysql 客户端连接到 FE,则表示 FE 启动成功。

也可以通过如下连接查看是否启动成功:

#http://fe_host:fe_http_port/api/bootstrap

curl http://172.21.1.19:8030/api/bootstrap

如果返回:

{"status":"OK","msg":"Success"}

则表示启动成功,其余情况,则可能存在问题。

启动报错:
./bin/start_fe.sh: 第 109 行:[: -gt: 期待一元表达式

解决方法:

#修改109行内容:
if [ $java_version -gt 8 ]; then
>>>>
if [[ $java_version -gt 8 ]]; then
4.FE实例端口信息
实例名称端口名称默认端口通讯方向说明
FEhttp_port *8030FE <–> FE,用户FE 上的 http server 端口
FErpc_port9020BE --> FE, FE <–> FEFE 上的 thrift server 端口,每个fe的配置需要保持一致
FEquery_port9030用户FE 上的 mysql server 端口
FEedit_log_port9010FE <–> FEFE 上的 bdbje 之间通信用的端口

注:
当部署多个 FE 实例时,要保证 FE 的 http_port 配置相同。

3-2、BE 部署

1.拷贝 BE 部署文件到所有要部署 BE 的节点
#将源码编译生成的 output 下的 be 文件夹拷贝到 BE 的节点的指定部署路径下。
$ rsync -avzP /data/apps/apache-doris/incubator-doris-DORIS-0.15.0-release/apache-doris-0.15.0-incubating-src/output/be root@<be_server>:/data/apps/apache-doris/
2.配置 BE

修改 be/conf/be.conf。主要是配置 storage_root_path:数据存放目录。默认在be/storage下,需要手动创建该目录。多个路径之间使用英文状态的分号 ; 分隔(最后一个目录后不要加 ;)。可以通过路径区别存储目录的介质,HDD或SSD。可以添加容量限制在每个路径的末尾,通过英文状态逗号,隔开。

示例1
注意:如果是SSD磁盘要在目录后面加上.SSD,HDD磁盘在目录后面加.HDD

storage_root_path=/home/disk1/doris.HDD,50;/home/disk2/doris.SSD,10;/home/disk2/doris
  • /home/disk1/doris.HDD,50,表示存储限制为50GB,HDD;
  • /home/disk2/doris.SSD,10,存储限制为10GB,SSD;
  • /home/disk2/doris,存储限制为磁盘最大容量,默认为HDD

示例2
注意:不论HDD磁盘目录还是SSD磁盘目录,都无需添加后缀,storage_root_path参数里指定medium即可

storage_root_path=/home/disk1/doris,medium:hdd,capacity:50;/home/disk2/doris,medium:ssd,capacity:50
  • /home/disk1/doris,medium:hdd,capacity:10,表示存储限制为10GB, HDD;
  • /home/disk2/doris,medium:ssd,capacity:50,表示存储限制为50GB, SSD;

登录BE服务器,修改BE数据存放目录

$ cd /data/apps/apache-doris/be

$ mkdir -p /data/apache-doris/be/doris-storage
$ sed -i 's#^.*storage_root_path.*$#storage_root_path = /data/apache-doris/be/doris-storage,medium:ssd#' conf/be.conf

#priority_networks 配置进程绑定IP
$ sed -i 's#^.*priority_networks.*$#priority_networks =  172.21.0.0/16#' conf/be.conf

#修改日志默认位置,如启动失败,可以通过查看 log/be.INFO 或者 log/be.out 查看错误信息。
$ mkdir -p /data/logs/apache-doris
$ sed -i 's#^.*sys_log_dir.*$#sys_log_dir = /data/logs/apache-doris#g' conf/be.conf

webserver_port端口配置
如果 be 部署在 hadoop 集群中,注意调整 be.conf 中的 webserver_port = 8040 ,以免造成端口冲突

3.在 FE 中添加所有 BE 节点
  • 安装mysql-client
    BE 节点需要先在 FE 中添加,才可加入集群。可以使用 mysql-client(下载MySQL 5.7)
#安装依赖
$ yum install libncurses* libtinfo*

#下载rpm包
$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-common-5.7.37-1.el7.x86_64.rpm
$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-libs-5.7.37-1.el7.x86_64.rpm
$ wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-community-client-5.7.37-1.el7.x86_64.rpm

#安装
$ rpm -ivh mysql-community-*

报错:mariadb-libs is obsoleted by mysql-community-libs-5.7.37-1.el7.x86_64,解决方法如下:

#查看系统中的mariadb
$ rpm -qa | grep mariadb
mariadb-libs-5.5.68-1.amzn2.x86_64

#强制删除旧版本mariadb-libs:
rpm -e --nodeps mariadb-libs-5.5.68-1.amzn2.x86_64
  • 连接到 FE
$ mysql -h 172.21.1.19 -P 9030 -uroot
  • host 为 FE 所在节点 ip;
  • port 为 fe/conf/fe.conf 中的 query_port;
  • 默认使用 root 账户,无passwd登录。
4.启动BE

编写启动脚本

cat << EOF >/usr/lib/systemd/system/doris-be.service
	[Unit]
	Description=Apache Doris BE Service
	After=network.target

	[Service]
	Type=forking
	KillMode=control-group
	ExecStart=/data/apps/apache-doris/be/bin/start_be.sh --daemon
	ExecStop=/data/apps/apache-doris/be/bin/stop_be.sh
	ExecReload=/bin/kill -s HUP \$MAINPID
	SuccessExitStatus=0 143
	PrivateTmp=true
	LimitNOFILE=1000000
	LimitNPROC=100000
	TimeoutStopSec=10s
	Restart=on-failure
	RestartSec=30

	[Install]
	WantedBy=multi-user.target
EOF

启动FE

$ systemctl daemon-reload
$ systemctl start doris-be.service
$ systemctl enable doris-be.service
5.BE实例端口信息
实例名称端口名称默认端口通讯方向说明
BEbe_port9060FE --> BEBE 上 thrift server 的端口,用于接收来自 FE 的请求
BEwebserver_port8040BE <–> BEBE 上的 http server 的端口
BEheartbeat_service_port9050FE --> BEBE 上心跳服务端口(thrift),用于接收来自 FE 的心跳
BEbrpc_port*8060FE<–>BE, BE <–> BEBE 上的 brpc 端口,用于 BE 之间通讯

3-3、FS_Broker 部署(可选)

Broker 以插件的形式,独立于 Doris 部署。如果需要从第三方存储系统导入数据,需要部署相应的 Broker,默认提供了读取 HDFS 、百度云 BOS 及 Amazon S3 的 fs_broker。fs_broker 是无状态的,建议每一个 FE 和 BE 节点都部署一个 Broker。

1.拷贝源码 fs_broker 的 output 目录下的相应 Broker 目录到需要部署的所有节点上。建议和 BE 或者 FE 目录保持同级。
#拷贝到FE节点目录
$ cd /data/apps/apache-doris/incubator-doris-DORIS-0.15.0-release/apache-doris-0.15.0-incubating-src
$ cp -rf fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker /data/apps/apache-doris/

#拷贝到BE节点目录
$ rsync -avzP fs_brokers/apache_hdfs_broker/output/apache_hdfs_broker root@<be_server>:/data/apps/apache-doris/
2.修改相应 Broker 配置

在相应 broker/conf/ 目录下对应的配置文件中,可以修改相应配置。

3.启动 Broker
#启动broker
$ /bin/sh /data/apps/apache-doris/apache_hdfs_broker/bin/start_broker.sh --daemon
#关闭broker
$ /bin/sh /data/apps/apache-doris/apache_hdfs_broker/bin/stop_broker.sh
4.添加 Broker

要让 Doris 的 FE 和 BE 知道 Broker 在哪些节点上,通过 sql 命令添加 Broker 节点列表。
使用 mysql-client 连接启动的 FE,执行以下命令:

# 添加broker
$ ALTER SYSTEM ADD BROKER doristestbroker  "172.21.1.19:8000","172.21.8.247:8000","172.21.12.227:8000";

ALTER SYSTEM ADD BROKER broker_name “host1:port1”,“host2:port2”,…;
其中 host 为 Broker 所在节点 ip;port 为 Broker 配置文件中的 broker_ipc_port。

5.查看 Broker 状态

使用 mysql-client 连接任一已启动的 FE,执行以下命令查看 Broker 状态:

SHOW PROC "/brokers";

注:在生产环境中,所有实例都应使用守护进程启动,以保证进程退出后,会被自动拉起,如 Supervisor (opens new window)。如需使用守护进程启动,在 0.9.0 及之前版本中,需要修改各个 start_xx.sh 脚本,去掉最后的 & 符号。从 0.10.0 版本开始,直接调用 sh start_xx.sh 启动即可。也可参考 这里(opens new window)

6.启动Broker

编写启动脚本

#添加环境变量,否则启动报错
$ sed -i '/"$JAVA_HOME" = ""/iJAVA_HOME=/data/apps/jdk-11.0.2' /data/apps/apache-doris/apache_hdfs_broker/bin/start_broker.sh

$ cat << EOF >/usr/lib/systemd/system/doris-broker.service
  [Unit]
  Description=Apache Doris Broker Service
  After=network.target

  [Service]
  Type=forking
  KillMode=control-group
  ExecStart=/data/apps/apache-doris/apache_hdfs_broker/bin/start_broker.sh --daemon
  ExecStop=/data/apps/apache-doris/apache_hdfs_broker/bin/stop_broker.sh
  ExecReload=/bin/kill -s HUP \$MAINPID
  SuccessExitStatus=0 143
  PrivateTmp=true
  LimitNOFILE=1000000
  LimitNPROC=100000
  TimeoutStopSec=10s
  Restart=on-failure
  RestartSec=30

  [Install]
  WantedBy=multi-user.target
EOF

**启动Broker **

$ systemctl daemon-reload
$ systemctl restart doris-broker.service
$ systemctl enable doris-broker.service

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

STM32 设计的较为复杂的物联网项目,包括智能家居控制系统,涵盖了硬件和软件的详细设计。

使用 STM32 设计的较为复杂的物联网项目&#xff0c;包括智能家居控制系统&#xff0c;涵盖了硬件和软件的详细设计。 一、硬件设计 微控制器&#xff1a;选择 STM32F4 系列微控制器&#xff0c;如 STM32F407ZGT6&#xff0c;具有高性能和丰富的外设资源。 传感器模块&#x…

1.7 JS性能优化

从输入url到页面加载完成都做了些什么 输入 URL - 资源定位符 http://www.zhaowa.com - http 协议 域名解析 https://www.zhaowa.com > ip 1. 切HOST&#xff1f; > 浏览器缓存映射、系统、路由、运营商、根服务器 2. 实际的静态文件存放&#xff1f; 大流量 > 多个…

LPDDR4芯片学习(四)——DDR Training

一、ZQ Calibration DDR 学习时间 (Part B - 6)&#xff1a;DRAM ZQ 校正 - 知乎 (zhihu.com) 从原理上解释什么是DDR的ZQ校准&#xff1f; - 知乎 (zhihu.com) LPDDR4的训练(training)和校准(calibration)--ZQ校准(Calibration)_wonder_coole-腾讯云开发者社区 01 ZQ校准的…

pycharm分支提交操作

一、Pycharm拉取Git远程仓库代码 1、点击VCS > Get from Version Control 2、输入git的url&#xff0c;选择自己的项目路径 3、点击Clone&#xff0c;就拉取成功了 默认签出分支为main 选择develop签出即可进行开发工作 二、创建分支&#xff08;非必要可以不使用&#xf…

鸿蒙实战:页面跳转

文章目录 1. 实战概述2. 实现步骤2.1 创建项目2.2 准备图片素材2.3 编写首页代码2.4 创建第二个页面 3. 测试效果4. 实战总结 1. 实战概述 实战概述&#xff1a;本实战通过ArkUI框架&#xff0c;在鸿蒙系统上开发了一个简单的两页面应用。首页显示问候语和“下一页”按钮&…

IDEA部署AI代写插件

前言 Hello大家好&#xff0c;当下是AI盛行的时代&#xff0c;好多好多东西在AI大模型的趋势下都变得非常的简单。 比如之前想画一幅风景画得先去采风&#xff0c;然后写实什么的&#xff0c;现在你只需描述出你想要的效果AI就能够根据你的描述在几分钟之内画出一幅你想要的风景…

深入理解 Spark 中的 Shuffle

Spark 的介绍与搭建&#xff1a;从理论到实践_spark环境搭建-CSDN博客 Spark 的Standalone集群环境安装与测试-CSDN博客 PySpark 本地开发环境搭建与实践-CSDN博客 Spark 程序开发与提交&#xff1a;本地与集群模式全解析-CSDN博客 Spark on YARN&#xff1a;Spark集群模式…

常用在汽车PKE无钥匙进入系统的高度集成SOC芯片:CSM2433

CSM2433是一款集成2.4GHz频段发射器、125KHz接收器和8位RISC&#xff08;精简指令集&#xff09;MCU的SOC芯片&#xff0c;用在汽车PKE无钥匙进入系统里。 什么是汽车PKE无钥匙进入系统&#xff1f; 无钥匙进入系统具有无钥匙进入并且启动的功能&#xff0c;英文名称是PKE&…

人力资源招聘系统-提升招聘效率与质量的关键工具

在当今这个竞争激烈的商业环境中&#xff0c;企业要想在市场中立于不败之地&#xff0c;关键在于拥有高素质的人才队伍。然而&#xff0c;传统的招聘方式往往效率低下&#xff0c;难以精准匹配企业需求与人才特质&#xff0c;这无疑给企业的发展带来了不小的挑战。 随着科技的飞…

R语言贝叶斯分析:INLA 、MCMC混合模型、生存分析肿瘤临床试验、间歇泉喷发时间数据应用|附数据代码...

全文链接&#xff1a;https://tecdat.cn/?p38273 多模态数据在统计学中并不罕见&#xff0c;常出现在观测数据来自两个或多个潜在群体或总体的情况。混合模型常用于分析这类数据&#xff0c;它利用不同的组件来对数据中的不同群体或总体进行建模。本质上&#xff0c;混合模型是…

算法--解决二叉树遍历问题

第一 实现树的结构 class Node(): # 构造函数&#xff0c;初始化节点对象&#xff0c;包含数据和左右子节点 def __init__(self, dataNone): self.data data # 节点存储的数据 self.left None # 左子节点&#xff0c;默认为None self.rig…

华为eNSP:MSTP

一、什么是MSTP&#xff1f; 1、MSTP是IEEE 802.1S中定义的生成树协议&#xff0c;MSTP兼容STP和RSTP&#xff0c;既可以快速收敛&#xff0c;也提供了数据转发的多个冗余路径&#xff0c;在数据转发过程中实现VLAN数据的负载均衡。 2、MSTP可以将一个或多个VLAN映射到一个Inst…

从零到一:利用 AI 开发 iOS App 《震感》的编程之旅

在网上看到一篇关于使用AI开发的编程经历&#xff0c;分享给大家 作者是如何在没有 iOS 开发经验的情况下&#xff0c;借助 AI&#xff08;如 Claude 3 模型&#xff09;成功开发并发布《震感》iOS 应用。 正文开始 2022 年 11 月&#xff0c;ChatGPT 诞生并迅速引发全球关注。…

C++__day1

1、思维导图 2、如果登录失败&#xff0c;提示用户登录失败信息&#xff0c;并且提示错误几次&#xff0c;且重新输入&#xff1b;如果输入错误三次&#xff0c;则退出系统 #include <iostream> using namespace std;int main() {string id , pswd;string user"admi…

MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?

文章目录 MySQL45讲 第二十讲 幻读是什么&#xff0c;幻读有什么问题&#xff1f;一、幻读的定义二、幻读带来的问题&#xff08;一&#xff09;语义问题&#xff08;二&#xff09;数据一致性问题 三、InnoDB 解决幻读的方法四、总结 MySQL45讲 第二十讲 幻读是什么&#xff0…

web与网络编程

使用HTTP协议访问Web 通过发送请求获取服务器资源的Web浏览器等&#xff0c;被成为客户端(client)。 Web使用一种名为HTTP(超文本传输协议)的协议作为规范&#xff0c;完成从客户端到服务器端等一系列运作流程。 可以说&#xff0c;Web时建立在HTTP协议上通信的。 网络基础T…

深入理解接口测试:实用指南与最佳实践5.0(五)

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

2024游戏陪玩app源码的功能介绍/线上陪玩交友上线即可运营软件平台源码搭建流程

一个完整的陪玩交友系统从概念到实现再到维护的全过程得以清晰展现。每一步都需要团队的紧密协作与细致规划&#xff0c;以确保系统既满足用户需求&#xff0c;又具备良好的稳定性和可扩展性。 基础框架 移动端开发框架&#xff1a;如uniapp&#xff0c;它支持多平台开发&…

预测AI如何提升销售绩效管理:五大方式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

修改数据库和表的字符集

1、修改数据库字符集 mysql> show CHARACTER SET; 查看所有字符集 mysql> show create database wordpress; 查看数据库wordpress当前字符集mysql> alter database wordpress character set gbk; 将数据库wordpress字符集改为gb…