ceph安装P版本

news2025/1/11 12:49:46

文章目录

    • 1、搭建的要求
      • 1、OSD约束
      • 2、ceph部署方式
        • 1、cephadm的部署原理
        • 红帽版本搭建(RHCS5.0部署)
    • 2、cephadm安装P版本
      • 1、环境要求
      • 2、配置主机名,关闭防火墙,时间同步
      • 3、检查python环境和容器运行时环境
      • 4、部署引导节点(下载cephadm脚本)
        • 1、获取脚本
        • 2、添加ceph仓库,安装cephadm命令,修改仓库镜像仓库地址,安装ceph客户端工具
        • 3、cephadm初始化
        • 4、cephadm容器操作
      • 5、添加主机
      • 6、ceph orch操作
        • 1、根据服务类型进行编排
        • 2、手动进行编排
        • 3、停止,删除,重启服务等操作
        • 4、查询服务进程
      • 7、添加OSD
        • 1、手动添加OSD
        • 2、自动方式添加OSD
      • 8、安装成功了
    • 3、cephadm脚本原理
      • 1、cephadm最小化安装
      • 2、ceph编排器
      • 3、各个容器作用
      • 4、各个服务端口

1、搭建的要求

1、OSD约束

  • 设备不得有分区,/dev/sdb1不会用这个盘的

  • 不能是逻辑卷的成员盘,不能是逻辑卷的PV,曾经是可以的,但是新版本不行了

  • 不能有文件系统(就是不能被格式化,ext4,xfs等),不能被挂载

  • 不能是其他ceph的osd,或者是本集群中已经移除的OSD的盘,重新加入集群,重新加入时,可以将数据擦除在加入集群,总而言之,就是磁盘必须是干净的

  • OSD的容量要大于5G

  • 常见的硬件选型错误

    • 不要使用旧的古老硬件

    • 不要再同一个存储池中使用不同的硬件(OSD的磁盘类型和容量要一致,否则,容量大的硬盘,PG就会非常多)

    • 使用1GB的网络而不是10GB的网络,建议OSD使用10GB网络,其他组件使用1GB网络

    • 没有使用集群网络和公共网络而是复用这2个网络(生产环境中这2个网络是隔离的)

    • 服务器不要使用raid来保护数据(如果操作系统不识别硬盘,可以做RAID0),因为ceph本身已经具备数据冗余机制,如果还使用raid将会容量浪费

    • 选中驱动器只考虑价格而没有考虑io性能

    • 硬盘无需开启日志属性,因为ceph有日志功能

2、ceph部署方式

  • 手动部署

  • ceph-deploy,早期部署方式

  • ceph-ansible rhcs3部署方式

  • cephadm podman部署

1、cephadm的部署原理
  • cephadm 本身是一个基于python脚本,利用该脚本在单节点上部署是一个最小化ceph集群(monitor+mgr),然后利用mgr的orch编排
红帽版本搭建(RHCS5.0部署)

2、cephadm安装P版本

1、环境要求

  • 三个节点,每个节点有一个系统盘,10G的硬盘三块作为osd的硬盘,每个节点配置2C4G,使用一张NAT网卡即可

  • centos8.4和rhel8.4和rockylinux8.4

2、配置主机名,关闭防火墙,时间同步


hostnamectl set-hostname node1.example.com

[root@node1 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.10 node1
192.168.200.11 node2
192.168.200.12 node3


[root@node1 ~]# systemctl stop firewalld.service 
[root@node1 ~]# systemctl disable firewalld.service 
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

# 配置免密登录

[root@node1 ~]# ssh-keygen 
[root@node1 ~]# ssh-copy-id root@node1
[root@node1 ~]# ssh-copy-id root@node2
[root@node1 ~]# ssh-copy-id root@node3

# 配置时间同步
[root@node1 ~]# vim /etc/chrony.conf 
server ntp.aliyun.com iburst

# 重启即可

3、检查python环境和容器运行时环境

# 由于是最小化安装,没有装python3
# 配置阿里云8的源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

yum -y install python36-3.6.8-38.module_el8.5.0+895+a459eca8.x86_64

[root@node1 ~]# python3 --version
Python 3.6.8

# 配置docker或者podman
# 以容器的方式启动服务
[root@node1 ~]# podman  --version
podman version 3.3.1

4、部署引导节点(下载cephadm脚本)

  • 可以随便找一台机器作为引导节点,然后扩展节点即可,就是加入节点即可

  • 文档 https://docs.ceph.com/en/reef/

  • https://docs.ceph.com/en/pacific/cephadm/install/#cephadm-deploying-new-cluster

  • gitlab地址 https://github.com/ceph/ceph,选择版本,然后src/cephadm/下面有个cephadm.py文件即可

1、获取脚本
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/pacific/src/cephadm/cephadm


# 添加权限
chmod +x cephadm

# 可以查看版本号,非常的慢,因为拉取镜像,红帽仓库地址的镜像
[root@node1 opt]# ./cephadm version
ceph version 16.2.15 (618f440892089921c3e944a991122ddc44e60516) pacific (stable)

[root@node1 opt]# podman images
REPOSITORY         TAG         IMAGE ID      CREATED       SIZE
quay.io/ceph/ceph  v16         3c4eff6082ae  6 months ago  1.22 GB
2、添加ceph仓库,安装cephadm命令,修改仓库镜像仓库地址,安装ceph客户端工具
[root@node1 opt]# ./cephadm add-repo --release 16.2.11
Writing repo to /etc/yum.repos.d/ceph.repo...
Enabling EPEL...
Completed adding repo.
[root@node1 opt]# ls /etc/yum.repos.d/
CentOS-Base.repo  epel-modular.repo     epel.repo                  epel-testing.repo
ceph.repo         epel-playground.repo  epel-testing-modular.repo
[root@node1 opt]# 

# 如果要删除cephadm文件的话,就需要安装这个命令
[root@node1 opt]# ./cephadm install
Installing packages ['cephadm']...

[root@node1 opt]# which cephadm 
/usr/sbin/cephadm

# 安装ceph客户端工具(下载非常的慢)
[root@node1 opt]# cephadm install ceph-common  # 或者 yum -y install ceph-common

# 修改/usr/sbin/cephadm文件

DEFAULT_IMAGE = 'uhub.service.ucloud.cn/ceph260/ceph:v16'
DEFAULT_IMAGE_IS_MASTER = False
DEFAULT_IMAGE_RELEASE = 'pacific'
DEFAULT_PROMETHEUS_IMAGE = 'uhub.service.ucloud.cn/ceph260/prometheus:v2.33.4'
DEFAULT_NODE_EXPORTER_IMAGE = 'uhub.service.ucloud.cn/ceph260/node-exporter:v1.3.1'
DEFAULT_ALERT_MANAGER_IMAGE = 'uhub.service.ucloud.cn/ceph260/alertmanager:v0.23.0'
DEFAULT_GRAFANA_IMAGE = 'uhub.service.ucloud.cn/ceph260/ceph-grafana:8.3.5'
DEFAULT_HAPROXY_IMAGE = 'uhub.service.ucloud.cn/ceph260/haproxy:2.3'
DEFAULT_KEEPALIVED_IMAGE = 'uhub.service.ucloud.cn/ceph260/keepalived'
DEFAULT_SNMP_GATEWAY_IMAGE = 'uhub.service.ucloud.cn/ceph260/snmp-notifier:v1.2.1'
DEFAULT_REGISTRY = 'uhub.service.ucloud.cn'   # normalize unqualified digests to this

3、cephadm初始化
# 这个命令的作用是通过 cephadm 工具引导(bootstrap)Ceph 集群的初始设置和部署
[root@node1 ~]# cephadm bootstrap --mon-ip 192.168.200.10 --initial-dashboard-user admin --initial-dashboard-password admin --allow-fqdn-hostname 

# --mon-ip 指定第一个monitor节点ip地址,是ceph的核心组件,负责维护集群的状态和元数据

# --initial-dashboard-user admin 指定dashboard初始管理员用户

# --initial-dashboard-password admin 登录的凭证

# --allow-fqdn-hostname 允许使用FQDN作为的主机名,而不是短主机名,这个非常的有用,对于域名解析而不是ip地址管理节点时非常有用

# 因为osd数量
[root@node1 opt]# ceph -s 
  cluster:
    id:     8eeb54b6-b24a-11ef-89b8-000c29679dd7
    health: HEALTH_WARN  # 因为OSD数量小于默认的数量3个,所以警告
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum node1.example.com (age 2m)
    mgr: node1.example.com.yfrzbt(active, since 116s)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
 
  progress:
    Updating alertmanager deployment (+1 -> 1) (0s)
      [............................] 



# 生成的ceph相关文件
# 生成了admin的密钥
[root@node1 ceph]# pwd
/etc/ceph
[root@node1 ceph]# ls
ceph.client.admin.keyring  ceph.conf  ceph.pub  rbdmap
[root@node1 ceph]# 

4、cephadm容器操作
[root@node1 opt]# cephadm shell
Inferring fsid 8eeb54b6-b24a-11ef-89b8-000c29679dd7
Using recent ceph image quay.io/ceph/ceph@sha256:f15b41add2c01a65229b0db515d2dd57925636ea39678ccc682a49e2e9713d98
[ceph: root@node1 /]# ceph -s 
  cluster:
    id:     8eeb54b6-b24a-11ef-89b8-000c29679dd7
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum node1.example.com (age 11m)
    mgr: node1.example.com.yfrzbt(active, since 11m)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
 
  progress:
    Updating grafana deployment (+1 -> 1) (0s)
      [............................] 

5、添加主机

[root@node1 ~]# ceph orch host ls
HOST               ADDR            LABELS  STATUS  
node1.example.com  192.168.200.10  _admin          
1 hosts in cluster

# 会报错,因为ceph需要免密,有ceph集群的公私钥进行免密,管理集群靠的就是这个公私钥
[root@node1 ~]# ceph orch host add node2.example.com
Error EINVAL: Cannot resolve ip for host node2.example.com: [Errno -2] Name or service not known
You may need to supply an address for node2.example.com

Please make sure that the host is reachable and accepts connections using the cephadm SSH key
To add the cephadm SSH key to the host:
> ceph cephadm get-pub-key > ~/ceph.pub
> ssh-copy-id -f -i ~/ceph.pub root@node2.example.com

To check that the host is reachable open a new shell with the --no-hosts flag:
> cephadm shell --no-hosts

Then run the following:  # 获取到私钥,然后使用私钥进行登录(测试用的,测试上面公钥拷贝成功没有)
> ceph cephadm get-ssh-config > ssh_config
> ceph config-key get mgr/cephadm/ssh_identity_key > ~/cephadm_private_key
> chmod 0600 ~/cephadm_private_key
> ssh -F ssh_config -i ~/cephadm_private_key root@node2.example.com

# 公钥放在目录下
ceph cephadm get-pub-key > ~/ceph.pub

# 拷贝到其他节点
ssh-copy-id -f -i ~/ceph.pub root@node2.example.com
ssh-copy-id -f -i ~/ceph.pub root@node3.example.com

# 添加节点
ceph orch host add node2
ceph orch host add node3

[root@node1 ~]# ceph orch host ls 
HOST   ADDR            LABELS  STATUS  
node1  192.168.200.10  _admin          
node2  192.168.200.11                  
node3  192.168.200.12                  
3 hosts in cluster


# 查看节点组件信息
[root@node1 ~]# ceph orch ls
# 服务的名字    ip+端口      服务状态/数量    运行时间   部署方式
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT  
alertmanager   ?:9093,9094      1/1  9m ago     11m  count:1    
crash                           2/3  9m ago     11m  *          
grafana        ?:3000           1/1  9m ago     11m  count:1    
mgr                             2/2  9m ago     11m  count:2    
mon                             2/5  9m ago     11m  count:5    
node-exporter  ?:9100           2/3  9m ago     11m  *          
prometheus     ?:9095           1/1  9m ago     11m  count:1  


# placement
# count=1,表示该服务组件只在某一个节点上进行部署
# * 表示在所有节点上面进行部署
# 主机名,仅在特定主机上进行部署
# 标签名,仅在标签上进行部署

# 随着时间的推移,mon的数量会增加,因为ceph的组件会自动部署在主机上面,ceph集群具有节点自扩展性

[root@node1 ~]# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT  
alertmanager   ?:9093,9094      1/1  2m ago     17m  count:1    
crash                           3/3  2m ago     17m  *          
grafana        ?:3000           1/1  2m ago     17m  count:1    
mgr                             2/2  2m ago     17m  count:2    
mon                             3/5  2m ago     17m  count:5    
node-exporter  ?:9100           3/3  2m ago     17m  *          
prometheus     ?:9095           1/1  2m ago     17m  count:1  

6、ceph orch操作

  • 管理容器化服务的命令

  • ceph orch 是 Ceph 集群的 Orchestrator 工具,主要用于管理和监控通过容器化方式部署的 Ceph 服务

ceph orch  apply mon --unmanaged

# 设置节点为2个
ceph orch  apply mon --placement=2 

1、根据服务类型进行编排
# 根据数量进行编排,也就是部署在哪个节点
ceph orch apply mon --placement=3

# 指定调度在node2,node3节点上面
ceph orch apply mon --placement=node2,node3

# 可以支持通配符
ceph orch apply mon --placement=*

# 根据标签进行编排
# 打上标签
ceph orch host label add node2 标签
ceph orch apply mon --placement=label:标签
2、手动进行编排
# 先关掉自我扩展
ceph orch apply mgr --unmanaged

# 手动部署在node3上面
[root@node1 ~]# ceph orch daemon add mgr node3


# 手动停止
[root@node1 ~]# ceph orch daemon stop node-exporter.node1
Scheduled to stop node-exporter.node1 on host 'node1'

# 手动启动
ceph orch daemon start node-exporter.node1

# 删掉一个进程
ceph orch daemon rm node-exporter.node1
3、停止,删除,重启服务等操作
# ceph orch 动作 服务名
ceph orch  stop node-exporter

# 自动启动服务
ceph orch  start node-exporter

# 重启进程
ceph orch restart node-exporter

# 删掉这个服务的所有进程
ceph orch rm grafana

# 添加进程
ceph orch add mgr

4、查询服务进程
- 这个时候就跟刚开始的allow对应,调度在这些主机名上面了
[root@node1 ~]# ceph orch ps 
NAME                 HOST   PORTS        STATUS         REFRESHED  AGE  MEM USE  MEM LIM  VERSION  IMAGE ID      CONTAINER ID  
alertmanager.node1   node1  *:9093,9094  running (6m)      5m ago  39m    23.7M        -  0.23.0   ba2b418f427c  0f1f02a684a6  
crash.node1          node1               running (39m)     5m ago  39m    7222k        -  16.2.15  3c4eff6082ae  53fc2e3840fc  
crash.node2          node2               running (30m)     4m ago  30m    7386k        -  16.2.15  3c4eff6082ae  6ac4db1141e7  
crash.node3          node3               running (26m)     6m ago  26m    7402k        -  16.2.15  3c4eff6082ae  4df3e7b84e90  
grafana.node1        node1  *:3000       running (39m)     5m ago  39m    57.7M        -  8.3.5    dad864ee21e9  a29b536c7d57  
mgr.node1.bhqezd     node1  *:9283       running (40m)     5m ago  40m     452M        -  16.2.15  3c4eff6082ae  02cc7d8b42df  
mgr.node2.zdxuiu     node2  *:8443,9283  running (30m)     4m ago  30m     401M        -  16.2.15  3c4eff6082ae  2aeddd75b9cc  
mon.node1            node1               running (40m)     5m ago  40m     124M    2048M  16.2.15  3c4eff6082ae  1d67f509959b  
mon.node2            node2               running (30m)     4m ago  30m     134M    2048M  16.2.15  3c4eff6082ae  a444a91c307a  
mon.node3            node3               running (26m)     6m ago  26m     128M    2048M  16.2.15  3c4eff6082ae  550929acbd32  
node-exporter.node1  node1  *:9100       running (39m)     5m ago  39m    21.2M        -  1.3.1    1dbe0e931976  acd154d21b9c  
node-exporter.node2  node2  *:9100       running (30m)     4m ago  30m    26.7M        -  1.3.1    1dbe0e931976  17d2fd2dae0a  
node-exporter.node3  node3  *:9100       running (26m)     6m ago  26m    23.8M        -  1.3.1    1dbe0e931976  b425326bd080  
prometheus.node1     node1  *:9095       running (6m)      5m ago  39m    47.7M        -  2.33.4   514e6a882f6e  ca756cd5a9a4  

7、添加OSD

1、手动添加OSD
ceph orch daemon add osd node1:/dev/sda
ceph orch daemon add osd node1:/dev/sdb
ceph orch daemon add osd node1:/dev/sdc
2、自动方式添加OSD
# 将所有空闲磁盘变成OSD
[root@node1 ~]# ceph orch apply  osd 
--all-available-devices is required
Error EINVAL: 
[root@node1 ~]# ceph orch apply  osd --all-available-devices
Scheduled osd.all-available-devices update...

# 搭建好了
[root@node1 ~]# ceph -s 
  cluster:
    id:     07726f64-b2aa-11ef-a070-000c29679dd7
    health: HEALTH_WARN
            Reduced data availability: 1 pg inactive, 1 pg peering
 
  services:
    mon: 3 daemons, quorum node1,node2,node3 (age 44m)
    mgr: node1.bhqezd(active, since 57m), standbys: node2.zdxuiu
    osd: 9 osds: 9 up (since 1.08911s), 9 in (since 23s)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 0 objects, 0 B
    usage:   2.3 GiB used, 78 GiB / 80 GiB avail
    pgs:     100.000% pgs not active
             1 remapped+peering

8、安装成功了

  • 这样上面的步骤就安装成功了

  • 必要条件,cephadm,

3、cephadm脚本原理

1、cephadm最小化安装

  • 就是现在一个引导节点上面部署最小化的ceph集群(利用容器仓库)
    img

  • 搭建了一个ceph最小化后,利用mgr的扩展进行扩展节点

  • 通过ceph密钥进行管理其他节点

2、ceph编排器

img

  • 通过这些接口实现这些功能

3、各个容器作用

# 这个id就是集群的id
[root@node1 mon.node1]# pwd
/var/lib/ceph/47a615ea-b2dc-11ef-a364-000c29679dd7/mon.node1

# 所以每一个节点都会在/var/lib/id/里面产生一些文件

# 如果mon异常的话,可以执行
[root@node1 mon.node1]# file unit.run 
unit.run: ASCII text, with very long lines

4、各个服务端口

img

img

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

git 使用配置

新拿到机器想配置git 获取代码权限&#xff0c;需要的配置方法 1. git 配置用户名和邮箱 git config --global user.name xxxgit config --global user.email xxemail.com 2. 生成ssh key ssh-keygen -t rsa -C "xxemail.com" 3. 获取ssh key cat ~/.ssh/id_rsa.…

Python使用Selenium自动实现表单填写之蛇年纪念币蛇钞预约(附源码,源码有注释解析,已测试可用

Python实现纪念币预约自动填写表单 声明:本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站…

Hyper-V创建虚拟机配置IP等网络配置原理(Linux、Windows为例)

Hyper-V创建虚拟机配置IP等网络配置原理&#xff08;Linux、Windows为例&#xff09; 大家知道Windows系统里面内置了Hyper-V管理器&#xff0c;用来创建和管理本地虚拟机环境。今天我创建了两台虚拟机&#xff0c;一台是CentOS7.9&#xff08;Linux&#xff09;&#xff0c;另…

Angular由一个bug说起之十一:排序之后无法展开 Row

问题现象 在使用 Material Table 时&#xff0c;排序功能触发了一个奇怪的 Bug&#xff1a;表格的 Row 无法展开。最终排查发现&#xff0c;问题的根源在于 trackBy 的错误使用。trackBy 方法接受两个参数&#xff1a;index&#xff08;数据索引&#xff09;和 row&#xff08;…

Miller-Rabin 米勒拉宾素性检测

1、什么是Miller-Rabin Miller - Rabin 算法是一种用于判断一个数是否为素数的概率性算法。在密码学等领域&#xff0c;经常需要快速判断一个大整数是否为素数。传统的试除法对于大整数效率极低&#xff0c;而 Miller - Rabin 算法能够在较短时间内以较高的概率判断一个数是否…

【MySQL系列】MySQL 中的 SQL_MODE 设置:ANSI_QUOTES 选项解析与应用

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

HarmonyOS 5.0应用开发——Ability与Page数据传递

【高心星出品】 文章目录 Ability与Page数据传递Page向Ability传递数据Ability向Page传递数据 Ability与Page数据传递 基于当前的应用模型&#xff0c;可以通过以下几种方式来实现UIAbility组件与UI之间的数据同步。 使用EventHub进行数据通信&#xff1a;在基类Context中提供…

MFC扩展库BCGControlBar Pro v36.0新版亮点:黑色主题中的自动反转图标

BCGControlBar库拥有500多个经过全面设计、测试和充分记录的MFC扩展类。 我们的组件可以轻松地集成到您的应用程序中&#xff0c;并为您节省数百个开发和调试时间。 BCGControlBar专业版 v36.0已全新发布了&#xff0c;这个版本在黑暗主题中添加自动图标反转、新增一个全新的S…

查找 排序算法(系列)

复习一下排序算法吧&#xff0c;数据结构有点难&#xff0c;虽然我已经看过一遍了&#xff0c;重温一遍还是很有收获&#xff01; 本文会出一系列&#xff08;主讲算法排序&#xff09;&#xff0c;欢迎订阅&#xff01;&#xff01;&#xff01; Python中常用的排序算法有以…

Y20030053 JSP+SSM+MYSQL+LW+旅游系统的设计与实现 源码 配置 文档 全套资料

旅游系统的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 摘 要 随着旅游业的蓬勃发展和人们对休闲度假需求的不断增加&#xff0c;旅游业管理面临着越来越多的挑战。为了提高管理效率、优化客户体验并增强市场竞争力&#xff0c;本文介绍…

3D 生成重建016-SA3D从nerf中分割一切

3D 生成重建016-SA3D从nerf中分割一切 文章目录 0 论文工作1 方法介绍2 实验结果 0 论文工作 1 SAM的背景和目标&#xff1a; SAM 是一种强大的二维视觉基础模型&#xff0c;能够在 2D 图像中进行任意物体的分割。传统上&#xff0c;SAM 在二维空间表现出色&#xff0c;但其无…

Leetcode—374. 猜数字大小【简单】

2024每日刷题&#xff08;202&#xff09; Leetcode—374. 猜数字大小 C实现代码 /** * Forward declaration of guess API.* param num your guess* return -1 if num is higher than the picked number* 1 if num is lower than the picked number* …

数字孪生与大型模型强强联合,共塑工业制造崭新前景

随着新一代信息技术与实体经济的加速融合&#xff0c;工业领域的数字化、智能化转型趋势愈发显著&#xff0c;孕育出一系列制造业数字化转型的新模式与新业态。在此背景下&#xff0c;数字孪生技术作为关键支撑力量&#xff0c;正在全球范围内迅速崛起并得到广泛应用&#xff0…

vue+mars3d点击图层展示炫酷的popup弹窗

展示效果 目录 一&#xff1a;叠加数据图层到地图上&#xff0c;此时需要使用bindPopup绑定popup 二、封装自定义的popup&#xff0c;样式可以自行调整 一&#xff1a;叠加数据图层到地图上&#xff0c;此时需要使用bindPopup绑定popup 这里我根据数据不同&#xff0c;展示的…

springboot利用easypoi实现简单导出Excel

vue springboot利用easypoi实现简单导出 前言一、easypoi是什么&#xff1f;二、使用步骤 1.传送门2.前端vue3.后端springboot 3.1编写实体类&#xff08;我这里是dto,也一样&#xff09;3.2控制层结尾 前言 今天玩了一下springboot利用easypoi实现excel的导出&#xff0c;以前…

Milvus attu - docker 使用 及 版本兼容

文章目录 版本查看attu 和 milvus 的兼容性Docker 加载attu docker 合并到 Milvus文件管理使用 docker compose 挂在 Milvus,登录 attu 出现报错: Error: Failed to connect to Milvus: Error: 1 CANCELLED: Call cancelled 于是检查兼容问题 版本查看 Milvus 版本发布: htt…

洛谷 P1957 口算练习题 C语言

题目&#xff1a; https://www.luogu.com.cn/problem/P1957 题目描述 王老师正在教简单算术运算。细心的王老师收集了 ii 道学生经常做错的口算题&#xff0c;并且想整理编写成一份练习。 编排这些题目是一件繁琐的事情&#xff0c;为此他想用计算机程序来提高工作效率。王老…

el-select 修改样式

这样漂亮的页面&#xff0c;搭配的却是一个白色风格的下拉框 &#xff0c;这也过于刺眼。。。 调整后样式为&#xff1a; 灯红酒绿总有人看着眼杂&#xff0c;但将风格统一终究是上上选择。下面来处理这个问题。 分为两部分。 第一部分&#xff1a;是修改触发框的样式 第二部…

Proteus中添加新元件库

手上村&#xff1a;本来打算在Proteus中设计充电电路&#xff0c;发现软件自带的元器件库中没有我想要充电芯片。因此&#xff0c;看了其他大神的导入新的元器件步骤&#xff0c;建立自己的元器件库&#xff01;自己也来记录一波&#xff01;话不多说&#xff0c;赶紧上菜&…

数字IC前端学习笔记:脉动阵列的设计方法学(以串行FIR滤波器为例)

相关阅读数字IC前端_日晨难再的博客-CSDN博客https://blog.csdn.net/weixin_45791458/category_12173698.html?spm1001.2014.3001.5482 引言 脉动结构&#xff08;也称为脉动阵列&#xff09;表示一种有节奏地计算并通过系统传输数据的处理单元(PEs)网络。这些处理单元有规律地…