快速搭建测ceph

2023-11-12

一、cephadm介绍

Cephadm是一个由Ceph社区维护的工具,它用于在Ceph集群中管理和部署Ceph服务。它是一个基于容器化的工具,使用了容器技术来部署Ceph集群的不同组件。

使用Cephadm,管理员可以通过简单的命令行界面在整个Ceph集群中进行自动化部署、更新和维护。它提供了一种简单而灵活的方法来管理Ceph集群,而无需深入了解Ceph集群的内部工作原理。

Cephadm还提供了一些有用的功能,如在集群中添加新的节点、删除现有节点、进行配置更改等等。它还可以自动检测并修复一些常见的问题,例如节点故障、网络问题等等。

从ceph5开始使用cephadm代替之前的ceph-ansible作为管理整个集群生命周期的工具,包括部署,管理,监控。

cephadm引导过程在单个节点(bootstrap节点)上创建一个小型存储集群,包括一个Ceph Monitor和一个Ceph Manager,以及任何所需的依赖项。

cephadm可以登录到容器仓库来拉取ceph镜像和使用对应镜像来在对应ceph节点进行部署。ceph容器镜像对于部署ceph集群是必须的,因为被部署的ceph容器是基于那些镜像。

为了和ceph集群节点通信,cephadm使用ssh。通过使用ssh连接,cephadm可以向集群中添加主机,添加存储和监控那些主机。

该节点让集群up的软件包就是cepadm,podman或docker,python3和chrony。总之,Cephadm是一个非常强大和实用的工具,可以大大简化Ceph集群的管理和部署过程,为管理员提供了更高效和可靠的管理方式。

1、python3

yum -y install python3

 

2、使用docker来运行容器

安装步骤及docker学习资料可查看http://xingxingxiaowo.xyz:4000/
# 注: 自己搭建的网站,非商用
# 安装阿里云提供的docker-ce
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
systemctl enable --now docker

systemctl status docker #查看状态
# 配置镜像加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://bp1bh1ga.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

 

 

3、时间同步(比如chrony或者NTP)

# yum install chrony -y

vi /etc/chrony.conf
# cat /etc/chrony.conf |grep -v ^# |grep -v ^$
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server ntp1.aliyun.com iburst
server ntp2.aliyun.com iburst
server ntp3.aliyun.com iburst
#allow 192.168.0.0/16
allow all
local stratum 10


systemctl enable --now chronyd
systemctl status chronyd
设置时区Asia/ Shanghai
# timedatectl set-timezone Asia/Shanghai

# chronyc sources
# chronyc tracking  #同步服务状态
显示当前正在访问的时间源
# chronyc sources -v

客户端
cat /etc/chrony.conf
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
server node1 iburst


systemctl enable --now chronyd
systemctl status chronyd

二、部署ceph集群前准备

2.1、节点准备

系统

硬盘

node1

Centos7

192.168.116.10

mon,mgr,服务器端,管理节点

/dev/vdb,/dev/vdc/,dev/vdd

node2

Centos7

192.168.116.20

mon,mgr

/dev/vdb,/dev/vdc/,dev/vdd

node3

Centos7

192.168.116.30

mon,mgr

/dev/vdb,/dev/vdc/,dev/vdd

2.2、修改每个节点的/etc/host

192.168.116.10 node1
192.168.116.20 node2
192.168.116.30 node3

主机名
hostnamectl set-hostname node1
hostnamectl set-hostname node2
hostnamectl set-hostname node3

2.3、在node1节点上做免密登录

[root@node1 ~]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:49VjCBjpqw380VbX61UyvfIg/CBGz7CvD/emhrWgta0 root@node1
The key's randomart image is:
+---[RSA 2048]----+
|      ..         |
|      .o         |
|     .. .    . . |
|      .  +.o. + o|
|   .   oS.O.+  +o|
|    o o.oO O +...|
|     = o=.O.=.+. |
|    . o. oo=.o.. |
|         E=oo.   |
+----[SHA256]-----+
[root@node1 ~]# ssh-copy-id root@node2
[root@node1 ~]# ssh-copy-id root@node3
[root@node1 ~]# ssh-copy-id root@node1

 

三、node1节点安装cephadm

1.安装epel源
[root@node1 ~]# yum -y install epel-release
2.安装ceph源
[root@node1 ~]# yum search release-ceph
上次元数据过期检查:0:57:14 前,执行于 2023年02月14日 星期二 14时22分00秒。
================= 名称 匹配:release-ceph ============================================
centos-release-ceph-nautilus.noarch : Ceph Nautilus packages from the CentOS Storage SIG repository
centos-release-ceph-octopus.noarch : Ceph Octopus packages from the CentOS Storage SIG repository
centos-release-ceph-pacific.noarch : Ceph Pacific packages from the CentOS Storage SIG repository
centos-release-ceph-quincy.noarch : Ceph Quincy packages from the CentOS Storage SIG repository
#[root@node1 ~]# yum -y install centos-release-ceph-pacific
#3.安装cephadm
#[root@node1 ~]# yum -y install cephadm 这是红帽系统花钱的订阅,cephadm还是去网上拉一下吧
#4.安装ceph-common
#[root@node1 ~]# yum -y install ceph-common


[root@node1 ~]# curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm
#多试几次
[root@node1 ~]# ls
anaconda-ks.cfg  cephadm
[root@node1 ~]# chmod +x cephadm

# 此命令将生成 ceph yum 源
[root@node1 ~]#  ./cephadm add-repo --release octopus
Writing repo to /etc/yum.repos.d/ceph.repo...
Enabling EPEL...

# 备份 ceph yum 源并将其替换使用 阿里云 yum 源
[root@node1 ~]# cp /etc/yum.repos.d/ceph.repo{,.back}
[root@node1 ~]# sed -i 's#download.ceph.com#mirrors.aliyun.com/ceph#' /etc/yum.repos.d/ceph.repo
[root@node1 ~]# yum list | grep ceph

# 安装 cephadm 到当前节点(其实就是将 cephadm 复制到环境变量)
[root@node1 ~]# ./cephadm install
Installing packages ['cephadm']...
[root@node1 ~]# which cephadm
/usr/sbin/cephadm

四、其它节点安装docker-ce,python3

具体过程看标题一。

五、部署ceph集群

5.1、部署ceph集群,顺便把dashboard(图形控制界面)安装上

[root@node1 ~]#  mkdir -p /etc/ceph
[root@node1 ~]# cephadm bootstrap --mon-ip 192.168.116.10 --allow-fqdn-hostname --initial-dashboard-user admin --initial-dashboard-password admin --dashboard-password-noupdate
Verifying podman|docker is present...
Verifying lvm2 is present...
Verifying time synchronization is in place...
Unit chronyd.service is enabled and running
Repeating the final host check...
podman|docker (/usr/bin/docker) is present
systemctl is present
lvcreate is present
Unit chronyd.service is enabled and running
Host looks OK
Cluster fsid: cbda57b6-f075-11ed-8063-000c29cf191a
Verifying IP 192.168.116.10 port 3300 ...
Verifying IP 192.168.116.10 port 6789 ...
Mon IP 192.168.116.10 is in CIDR network 192.168.116.0/24
Pulling container image quay.io/ceph/ceph:v15...
Extracting ceph user uid/gid from container image...
Creating initial keys...
Creating initial monmap...
Creating mon...
Waiting for mon to start...
Waiting for mon...
mon is available
Assimilating anything we can from ceph.conf...
Generating new minimal ceph.conf...
Restarting the monitor...
Setting mon public_network...
Creating mgr...
Verifying port 9283 ...
Wrote keyring to /etc/ceph/ceph.client.admin.keyring
Wrote config to /etc/ceph/ceph.conf
Waiting for mgr to start...
Waiting for mgr...
mgr not available, waiting (1/10)...
mgr not available, waiting (2/10)...
mgr not available, waiting (3/10)...
mgr not available, waiting (4/10)...
mgr is available
Enabling cephadm module...
Waiting for the mgr to restart...
Waiting for Mgr epoch 5...
Mgr epoch 5 is available
Setting orchestrator backend to cephadm...
Generating ssh key...
Wrote public SSH key to to /etc/ceph/ceph.pub
Adding key to root@localhost's authorized_keys...
Adding host node1...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Deploying crash service with default placement...
Enabling mgr prometheus module...
Deploying prometheus service with default placement...
Deploying grafana service with default placement...
Deploying node-exporter service with default placement...
Deploying alertmanager service with default placement...
Enabling the dashboard module...
Waiting for the mgr to restart...
Waiting for Mgr epoch 13...
Mgr epoch 13 is available
Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at:

             URL: https://node1:8443/
            User: admin
        Password: admin

You can access the Ceph CLI with:

        sudo /usr/sbin/cephadm shell --fsid cbda57b6-f075-11ed-8063-000c29cf191a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Please consider enabling telemetry to help improve Ceph:

        ceph telemetry on

For more information see:

        https://docs.ceph.com/docs/master/mgr/telemetry/

Bootstrap complete.

  • bootstrap: 用于引导新的Ceph集群。在此命令中,它表示要创建一个新的管理节点。
  • --mon-ip: 指定新的管理节点的IP地址。
  • --allow-fqdn-hostname: 允许使用完全限定域名(FQDN)的主机名,而不是只使用短名称。例如,可以使用ceph-node1.example.com而不是只使用ceph-node1。
  • --initial-dashboard-user: 配置Ceph Dashboard的管理员用户名。在此命令中,用户名为admin。
  • --initial-dashboard-password: 配置Ceph Dashboard的管理员用户密码。在此命令中,密码为admin。
  • --dashboard-password-noupdate: 禁止要求管理员在首次登录Ceph Dashboard时更新其密码。这可以在测试环境中使用,但不建议在生产环境中使用。

访问 https://192.168.116.10:8443/

 

 

 

5.2、把集群公钥复制到将成为集群成员的节点

[root@node1 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@node2
[root@node1 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@node3

 

5.3、添加节点node2.node3(各节点要先安装docker-ce,python3)

[root@node1 ~]# cephadm install ceph-common
Installing packages ['ceph-common']...
[root@node1 ~]# ceph orch host add node2 192.168.116.20
Added host 'node2'
[root@node1 ~]# ceph orch host add node3 192.168.116.30
Added host 'node3'

5.4、给node1打上管理员标签

[root@node1 ~]# ceph orch host ls
HOST   ADDR            LABELS  STATUS 
node1  node1                          
node2  192.168.116.20                 
node3  192.168.116.30
[root@node1 ~]# ceph orch host label add node1 _admin
Added label _admin to host node1
[root@node1 ~]# ceph orch host ls
HOST   ADDR            LABELS  STATUS 
node1  node1           _admin         
node2  192.168.116.20                 
node3  192.168.116.30                 
[root@node1 ~]# ceph orch ps
NAME                 HOST   STATUS        REFRESHED  AGE  VERSION  IMAGE NAME                                IMAGE ID      CONTAINER ID 
alertmanager.node1   node1  running (2h)  8m ago     2h   0.20.0   quay.io/prometheus/alertmanager:v0.20.0   0881eb8f169f  ff86284a8d94 
crash.node1          node1  running (2h)  8m ago     2h   15.2.17  quay.io/ceph/ceph:v15                     93146564743f  102c7293eda9 
grafana.node1        node1  running (2h)  8m ago     2h   6.7.4    quay.io/ceph/ceph-grafana:6.7.4           557c83e11646  88d4c152784f 
mgr.node1.midtux     node1  running (2h)  8m ago     2h   15.2.17  quay.io/ceph/ceph:v15                     93146564743f  2771be47f8c2 
mon.node1            node1  running (2h)  8m ago     2h   15.2.17  quay.io/ceph/ceph:v15                     93146564743f  c45baaccf058 
node-exporter.node1  node1  running (2h)  8m ago     2h   0.18.1   quay.io/prometheus/node-exporter:v0.18.1  e5a616e4b9cf  e6632f1f0851 
prometheus.node1     node1  running (2h)  8m ago     2h   2.18.1   quay.io/prometheus/prometheus:v2.18.1     de242295e225  a898f8ceaae4 

 

5.5、添加mon

[root@node1 ~]# ceph orch apply mon "node1,node2,node3"
Scheduled mon update...

5.6、添加mgr

[root@node1 ~]# ceph orch apply mgr --placement="node1,node2,node3"
Scheduled mgr update...

5.7、添加osd

[root@node1 ~]# ceph orch daemon add osd node1:/dev/sdb
Created osd(s) 0 on host 'node1'
[root@node1 ~]# ceph orch daemon add osd node2:/dev/sdb
Created osd(s) 1 on host 'node2'
[root@node1 ~]# ceph orch daemon add osd node3:/dev/sdb
Created osd(s) 2 on host 'node3'


[root@node1 ~]# ceph orch device ls
Hostname  Path      Type  Serial  Size   Health   Ident  Fault  Available 
node1     /dev/sdb  hdd            107G  Unknown  N/A    N/A    No        
node2     /dev/sdb  hdd            107G  Unknown  N/A    N/A    No        
node3     /dev/sdb  hdd            107G  Unknown  N/A    N/A    No 

5.8、至此,ceph集群基础部署完毕!

[root@node1 ~]# ceph -s
  cluster:
    id:     3e635ab8-f08e-11ed-af2f-000c29cf191a
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node3,node2 (age 85s)
    mgr: node1.fcxhll(active, since 7m), standbys: node2.fugwlk
    osd: 3 osds: 3 up (since 19s), 3 in (since 19s)
 
  task status:
 
  data:
    pools:   1 pools, 1 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 297 GiB / 300 GiB avail
    pgs:     1 active+clean

5.9、客户端节点管理ceph

# 在目录5.4已经将ceph配置文件和keyring拷贝到node4节点
[root@node4 ~]# ceph -s
-bash: ceph: 未找到命令,需要安装ceph-common
# 安装ceph源
[root@node4 ~]# cephadm install ceph-common
# 安装ceph-common
[root@node4 ~]# yum -y install ceph-common
[root@node4 ~]# ceph -s
  cluster:
    id:     0b565668-ace4-11ed-960c-5254000de7a0
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum node1,node2,node3 (age 7m)
    mgr: node1.cxtokn(active, since 14m), standbys: node2.heebcb, node3.fsrlxu
    osd: 9 osds: 9 up (since 59s), 9 in (since 81s)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 0 objects, 0 B
    usage:   53 MiB used, 90 GiB / 90 GiB avail
    pgs:     1 active+clean

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

快速搭建测ceph 的相关文章

  • 如何指定配置脚本的包含目录

    我的工作场所有一个 Linux 系统 其中包含相当旧的软件包 并且没有 root 访问权限 我正在从源代码编译我需要的包 prefix somewhere in homedir 我的问题是我只是不知道如何说服配置在特定目录中查找头文件 源码
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • 如果输入被重定向则执行操作

    我想知道如果我的输入被重定向 我应该如何在 C 程序中执行操作 例如 假设我有已编译的程序 prog 并且我将输入 input txt 重定向到它 我这样做 prog lt input txt 我如何在代码中检测到这一点 一般来说 您无法判
  • 在 vimrc 中切换匹配

    我的 vimrc 文件中有以下几行 hi ExtraWhitespace cterm NONE ctermbg green ctermfg green guibg green guifg green match ExtraWhitespac
  • 当在 python linux 中执行命令 os.system() 时,在 python 中给出响应 yes/no

    考虑一个像这样的命令 yum install boto 当我在终端中执行时 要继续 会询问我是 否 我可以像这样用 python 回应它吗 os system yum install boto Next Yes 将通过相同的 python
  • C++ Linux GCC 应用程序中的 GUID

    我有很多服务器运行这个 Linux 应用程序 我希望他们能够生成一个碰撞概率较低的 GUID 我确信我可以从 dev urandom 中提取 128 个字节 这可能没问题 但是有没有一种简单易用的方法来生成与 Win32 更等效的 GUID
  • BeagleBone Black 如何用作大容量存储设备?

    是否可以使用 BB 作为大容量存储设备 我希望将其连接到可以从 USB 连接 例如 USB 闪存驱动器 读取文件的音频播放器并充当包含一个特定文件夹的数据存储设备 及其子文件夹 从文件系统 如果可能 在连接到开发板的闪存驱动器上 正如设备规
  • 我可以在 Ubuntu 上使用 Homebrew 吗?

    我只是尝试使用 Homebrew 和 Linuxbrew 在我的 Ubuntu 服务器上安装软件包 但都失败了 这就是我尝试安装它们的方法 sudo apt get install build essential curl git m4 r
  • 虚拟内存澄清——大连续内存的分配

    我有一个应用程序 我必须在 Windows 上分配 使用运算符 new 相当大的内存空间 数百 MB 该应用程序是 32 位 我们现在不使用 64 位 即使在 64 位系统上也是如此 我启用了 LARGEADDRESSAWARE 链接器选项
  • EULA 接受 Bash 脚本

    我有一个尝试安装垃圾箱的脚本 除了 bin 在 more 中打开 EULA 之外 一切正常 在脚本再次开始并自行完成安装之前 您必须手动 ctrl c 退出此 more 实例 因为这更多的是逃离 shell 所以脚本在打开后不知道要运行什么
  • 在 Windows / Linux 中创建 Mac 包

    我自己努力制作一个 r 包 我按照 stackoverflow 中上一个问题的说明进行操作如何为外行开发软件包 http cran r project org bin windows Rtools 以下是我根据上一个问题采取的步骤 在新的
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • Flex 的远程版本误解了我的规则

    我使用 flex 和 bison 编写了一个小汇编程序 可以在我的机器 ubuntu 10 10 上构建并运行正常 现在其他人正在尝试在 arch linux 上构建它 并且他们安装的 flex 产生了不同的 lex yy c 这是不匹配的
  • sudo pip install python-Levenshtein 失败,错误代码 1

    我正在尝试在 Linux 上安装 python Levenshtein 库 但每当我尝试通过以下方式安装它时 sudo pip install python Levenshtein 我收到此错误 命令 usr bin python c 导入
  • “./somescript.sh”和“. ./somescript.sh”有什么区别

    今天我按照一些说明在 Linux 中安装软件 有一个需要首先运行的脚本 它设置一些环境变量 指令告诉我执行 setup sh 但是我执行时犯了一个错误 setup sh 所以环境没有设置 最后我注意到了这一点并继续进行 我想知道这两种调用脚
  • 如何避免应用程序停止后 docker 容器停止

    有一个带有 Postgres 服务器的 docker 容器 postgres 停止或崩溃 无关紧要 我需要检查一些环境变量和一些文件的状态 默认情况下 容器在应用程序完成后停止 我知道有一个选项可以更改 dockerfile 中的默认行为
  • 在Linux中创建可执行文件

    我计划做的一件事是编写 非常简单的 Perl 脚本 并且我希望能够在不从终端显式调用 Perl 的情况下运行它们 我明白 要做到这一点 我需要授予他们执行权限 使用 chmod 执行此操作非常简单 但它似乎也是一个稍微费力的额外步骤 我想要
  • 导入错误:没有名为 google.auth 的模块

    当我尝试导入时firebase admin in python 2 7我收到错误 导入错误 没有名为 google auth 的模块 这是Docker文件 https github com ammaratef45 Attendance bl
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015

随机推荐

  • Ted 带你学习数据结构 之 二叉堆(Binary Heap)

    二叉堆 Binary Heap 1 structure property Heap 堆 是一个除了底层节点外的完全填满的二叉树 底层可以不完全 左到右填充节点 a heap is a binary tree that completely
  • vue3中全局引入less

    1 安装less less loader yarn add less less loader 2 安装style resources loader yarn add style resources loader 3 安装vue cli pl
  • Spring中对Hibernate 的简单封装原理

    开篇提示 本文以spring2 5 6为基准展开 如文中有误欢迎指出 开篇大家可以思考一些问题 1 spring中对于hibernate的整合是怎样的 2 spring为什么要对hibernate做进一步的封装 这样做的好处是什么 我的讲解
  • springboot配置跨mapper.xml的全局变量

    springboot配置跨mapper xml的全局变量 有这样的需求 mybatis框架的mapper xml 即映射文件里 如果需要配置一个全局变量 然后 在所有的mapper xml里都能拿到使用 这需求也不苛刻吧 后来查了下 发现对
  • java8新特性 ---译

    Java并没有没落 人们很快就会发现这一点 欢迎阅读我编写的Java 8介绍 本教程将带领你一步一步地认识这门语言的新特性 通过简单明了的代码示例 你将会学习到如何使用默认接口方法 Lambda表达式 方法引用和重复注解 看完这篇教程后 你
  • QT从入门到实战x篇_31_QFile文件读写操作&QFileInfo实现基本文件信息读取(QFile进行基本文件操作;二进制文件读写;文本文件读写)

    上篇QT从入门到实战x篇 30 绘图设备 QPixmap QBitmap QImage和 QPicture QPixmap QBitmap绘制及保存 QImage像素操作 QPicture记录和重现 及之前的博文介绍了绘图事件及设备的相关内
  • 黑苹果键盘对应的相应按键

    更多精彩内容 请见 http www 16boke com Command键 PS2键盘对应Alt键 USB键盘对应Win键 Option键 PS2键盘对应Win键 USB键盘对应Alt键 更多精彩内容 请见 http www 16boke
  • 现代控制理论-工程数学基础(5)-欧拉公式证明

    Introduction 这一部分内容主要以学习截图为主 方便自己回顾 给大家推荐一个非常优秀的B站uper 所有内容均出自他的课程 网站链接分享在此DR CAN Ph D in Dynamics and Control 机器人工程师 致敬
  • [游戏开发]Unity Profiler真机调试

    网上教程有很多 我这先记录遇到的问题 问题 adb搜索设备不到设备 手机要开启USB调试 不然会出现搜索空列表的情况 下面是列表空与不空的对比 问题 adb检测到了设备 但显示unauthorized 例如上图 1 找到你的电脑用户文件下的
  • 你该了解的自动化测试工具:Selenium控制浏览器的常用方法!

    Selenium怎么来的 Selenium这个词 是化学元素硒 Se 的意思 在软件测试领域 它是绝对的自动化测试开源项目的标杆 取这个名字也是有讲究的 在当时乃至如今的软件测试领域 QTP UFT 占有率非常高 Quick Test Pr
  • 【unity】error CS0246: The type or namespace name ‘xxx‘ could not be found

    可能性一 VScode中各项目的目标框架不一致 通过菜单栏 项目 属性 应用程序 目标框架 可以检查各目标框架是否一致 是否有效 并没有 补充 如果无法打开这个窗口 可能是由于vs将访问项目属性默认设置为了false 可以通过菜单栏的 工具
  • 【快速实现List转Map,stream去重、过滤、筛选、拼接方法的使用】

    一 List转List List对象转List单字段 List
  • 基于SSM的遂川特产销售管理系统

    项目背景 随着科学技术的飞速发展 社会的方方面面 各行各业都在努力与现代的先进技术接轨 通过科技手段来提高自身的优势 遂川特产销售系统当然也不能排除在外 遂川特产销售系统是以实际运用为开发背景 运用软件工程开发方法 采用SSM技术构建的一个
  • QT界面美化与添加多个界面

    一 在QT界面中添加图片 首先在工程中添加源文件 右键选择class1 选择Add new 如下图 添加完成之后会出现源文件夹目录 然后右键选择 qrc文件 然后选择Open in Edit 5 再点击鼠标位置 创建目录 只留下 表示根目录
  • VS Code 源码分析 - 多语言实现

    NO 1 前言 传统前端 App 多语言最简单的实现可以由一套响应式数据流管理系统来托管多语言文案 切换语言时通过数据流的变化使得界面根据文案重新渲染 但由于 VS Code 架构的复杂性 需要有一套能兼容 Electron 渲染窗口 Ch
  • Jedis介绍及配置(Java操作Redis)

    Jedis介绍及配置 Java操作Redis 一 Jedis是什么 jedis就是基于java语言的redis客户端 集成了redis的命令操作 提供了连接池管理 redis cli是redis官方提供的客户端 可以看作一个shell程序
  • [ctfshow]web入门——命令执行(web54-web71)

    文章目录 system过滤 web54 web55 web56 web57 disabled function绕过 web58 web59 web60 web61 web62 web63 web64 web65 wbe66 web67 we
  • SpringMVC的数据响应(页面跳转、回写数据)

    SpringMVC的数据响应 一 SpringMVC的数据响应 01 SpringMVC的数据响应 数据响应方式 02 SpringMVC的数据响应 页面跳转 返回字符串形式 03 SpringMVC的数据响应 页面跳转 返回ModelAn
  • 找不到MSVCP140_1.dll、VCRUNTIME140_1.dll,打不开designer解决方法

    在使用designer的时候报了两个缺少运行库的错误 查了很多方法 最后看到需要下载这两个库 在这里下载 https cn dll files com vcruntime140 1 dll html 我是win10系统 下载完之后把它俩丢进
  • 快速搭建测ceph

    一 cephadm介绍 Cephadm是一个由Ceph社区维护的工具 它用于在Ceph集群中管理和部署Ceph服务 它是一个基于容器化的工具 使用了容器技术来部署Ceph集群的不同组件 使用Cephadm 管理员可以通过简单的命令行界面在整