Qualcomm QCA206x EasyMesh For Ubuntu

1. 引言

关于EasyMesh概念我们这里就不再过多的赘述,此篇文档的目的是,让广大初学者,有一个很方便的平台进行EasyMesh的学习和测试。

2. X86 Ubuntu平台

2.1 硬件环境准备

备注:QCA206x WiFi module推荐使用移远的FC64E/FC66E。

2.2 软件环境准备

假设已经在X86 PC上完成了Ubuntu18.04系统的安装(如有问题,自行百度)。

2.2.1 必要组件安装

执行如下指令,在Ubuntu系统系统上安装相应的软件包。

$ sudo apt update

$ sudo apt install -y openssh-server x11vnc dos2unix iperf linux-crashdump wireless-tools exfat-utils exfat-fuse

$ sudo apt install build-essential libncurses5-dev flex bison libnl-3-dev

$ sudo apt install kernel-package openssl kexex-tools kdump-tools

$ sudo apt install libssl-dev

$ sudo apt install libelf-dev

$ sudo apt install -y libnl-genl-3-dev

$ sudo apt install libdbus-1-dev

$ sudo apt install lua5.1 liblua5.1-0-dev libjson-c-dev libbsd-dev libjansson-dev

$ sudo apt install net-tools dhcpcd5 bridge-utils

$ sudo apt install cmake git

$ git config --global user.email "user email address"

$ git config --global user.name "user name"

备注:

安装kexex-toolskdump-tools时的提示选项全部选择“Yes”。

2.3 内核编译和安装

本博主只基于X86 Ubuntu 4.9.11、5.4.05.10.0的Linux内核版本进行验证和测试,并且当前只有4.9、5.4和5.10的内核patch,如有其他版本请自行解决相关问题

2.3.1 编译内核版本(4.9)

Step1: 获取Linux内核版本

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git

$ cd linux-stable-rc

$ git checkout v4.9.11

Step 2: 下载Linux内核补丁

相关patch请联系博主。

Step 3:  应用Linux内核补丁

$ git am 0001-Changes-for-wireless-and-cfg80211-for-v4.9.11-support.patch
$ git am 0002-Sysctl-support-for-TCP-IP-parameters-for-performance.patch
$ git am 0003-cfg80211-Add-support-for-FILS-shared-key-authentication.patch
$ git am 0004-cfg80211-Add-macros-to-indicate-backport-support-for.patch
$ git am 0005-cfg80211-size-various-nl80211-messages-correctly.patch
$ git am 0006-cfg80211-Modifiying-__cfg80211_connect_result-API.patch
$ git am 0007-cfg80211-Match-4.9.11-kernel-cfg80211-nl80211_attrs-.patch
$ git am 0008-cfg80211-Use-a-structure-to-pass-connect-response-pa.patch
$ git am 0009-cfg80211-Define-macro-to-indicate-support-for-new-cf.patch
$ git am 0010-sae-owe-station.patch
$ git am 0011-sae-owe-sap.patch
$ git am 0012-x86-kernel-reserve-CMA-memory-space-under-4G.patch
$ git am 0013-nl80211-add-6GHz-band-definition-to-enum-nl80211_ban.patch
$ git am 0014-cfg80211-add-6GHz-UNII-band-definitions.patch
$ git am 0015-cfg80211-util-add-6GHz-channel-to-freq-conversion-an.patch
$ git am 0016-cfg80211-extend-ieee80211_operating_class_to_band-fo.patch
$ git am 0017-cfg80211-add-6GHz-in-code-handling-array-with-NUM_NL.patch
$ git am 0018-cfg80211-use-same-IR-permissive-rules-for-6GHz-band.patch
$ git am 0019-cfg80211-ibss-use-11a-mandatory-rates-for-6GHz-band-.patch
$ git am 0020-cfg80211-apply-same-mandatory-rate-flags-for-5GHz-an.patch
$ git am 0021-cfg80211-Indicate-support-6GHz-band-in-kernel.patch
$ git am 0022-cfg80211-Add-support-for-HE.patch
$ git am 0023-mac80211-add-ieee80211_get_he_iftype_cap-helper.patch
$ git am 0024-6GHz-Add-support-to-validate-6GHz-channels.patch
$ git am 0025-cfg80211-Adjust-6ghz-frequencies-per-channelization.patch
$ git am 0026-nl80211-fix-nlmsg-allocation-in-cfg80211_ft_event.patch
$ git am 0027-dsa-mv88e6xxx-Optimise-atu_get.patch
$ git am 0028-cfg80211-add-and-use-strongly-typed-element-iteratio.patch
$ git am 0029-cfg80211-Parsing-of-Multiple-BSSID-information-in-sc.patch
$ git am 0030-cfg80211-use-for_each_element-for-multi-bssid-parsin.patch
$ git am 0031-cfg80211-Properly-track-transmitting-and-non-transmi.patch
$ git am 0032-cfg80211-Move-Multiple-BSS-info-to-struct-cfg80211_b.patch
$ git am 0033-cfg80211-parse-multi-bssid-only-if-HW-supports-it.patch
$ git am 0034-cfg80211-make-BSSID-generation-function-inline.patch
$ git am 0035-cfg80211-add-various-struct-element-finding-helpers.patch
$ git am 0036-cfg80211-save-multi-bssid-properties.patch
$ git am 0037-cfg80211-fix-the-IE-inheritance-of-extension-IEs.patch
$ git am 0038-cfg80211-fix-memory-leak-of-new_ie.patch
$ git am 0039-ieee80211-fix-for_each_element_extid.patch
$ git am 0040-cfg80211-fix-and-clean-up-cfg80211_gen_new_bssid.patch
$ git am 0041-cfg80211-Define-macro-to-indicate-prev_bssid-connect.patch
$ git am 0042-nl80211-add-NL80211_CMD_UPDATE_FT_IES-to-supported-c.patch
$ git am 0043-cfg80211-Add-backport-flag-for-user-cellular-base-hi.patch

Step 4: 编译Linux内核

配置内核

$ cp /boot/config-$(uname -r) .config

$ make menuconfig

然后在弹出的内核配置界面依次进行如下选择。

save > ok > exit

使能如下内核配置

CONFIG_CFG80211_INTERNAL_REGDB=y

CONFIG_CFG80211=m

CONFIG_NL80211_TESTMODE=y

CONFIG_FRAME_WARN=2048

CONFIG_DMA_CMA=y

CONFIG_CMA_SIZE_MBYTES=512

编译Linux内核

$ sudo make-kpkg -j4 --initrd kernel_image kernel_headers

编译生成的镜像文件自动保存于内核源码上层目录。

Step 5: 安装Linux内核到ubuntu

$ sudo dpkg -i linux-image-4.9.11+_4.9.11+-10.00.Custom_amd64.deb

$ sudo dpkg -i linux-headers-4.9.11+_4.9.11+-10.00.Custom_amd64.deb

Step 6: 应用相应的Linux内核

安装完成后更新GRUB配置(具体如何配置GRUB,请自行百度),再重启X86 PC。

2.3.2 编译内核版本(5.4)

Step1: 获取Linux内核版本

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git

$ cd linux-stable-rc

$ git checkout v5.4

Step 2: 下载Linux内核补丁

相关patch请联系博主。

Step 3:  应用Linux内核补丁

$ git am 0001-cfg80211-Use-new-wiphy-flag-WIPHY_FLAG_DFS_OFFLOAD.patch
$ git am 0002-cfg80211-Copying-db.tx-from-wireless-regdb-for-v5.4.patch
$ git am 0003-cfg80211-Miscellenous-changes-for-bringing-up-cld-2..patch
$ git am 0006-cfg80211-Add-macros-to-indicate-backport-support-for.patch
$ git am 0007-cfg80211-fixing-dfs-master-issue.patch
$ git am 0010-saeowe-station.patch
$ git am 0011-x86-kernel-reserve-CMA-memory-space-under-4G.patch
$ git am 0012-cfg80211-Adjust-6ghz-frequencies-per-channelization.patch
$ git am 0013-6GHz-Add-support-to-validate-6GHz-channels.patch

Step 4/5/6: Follow上一章节

2.3.3 编译内核版本(5.10)

Step1: 获取Linux内核版本

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable-rc.git

$ cd linux-stable-rc

$ git checkout v5.10

Step 2: 下载Linux内核补丁

相关patch请联系博主。

Step 3:  应用Linux内核补丁

$ git am 0001-cfg80211-Use-new-wiphy-flag-WIPHY_FLAG_DFS_OFFLOAD.patch
$ git am 0002-cfg80211-Copying-db.tx-from-wireless-regdb-for-v5.10.patch
$ git am 0003-cfg80211-Miscellenous-changes-for-bringing-up-cld-2..patch
$ git am 0004-cfg80211-Add-macros-to-indicate-backport-support-for.patch
$ git am 0005-cfg80211-fixing-dfs-master-issue.patch
$ git am 0006-sae.patch
$ git am 0007-x86-kernel-reserve-CMA-memory-space-under-4G.patch
$ git am 0008-cfg80211-Add-support-to-configure-SAE-PWE-value-to-d.patch

Step 4/5/6: Follow上一章节

2.4 编译WiFi驱动

2.4.1 获取WiFi源代码

相关EasyMesh源代码,请联系博主。

2.4.2 Linux内核合入驱动头文件

执行如下命令拷贝AIO/drivers/core_tech_modules/目录下对应文件夹中的cnss2.hqcn_sdio_al.hcnss_utils.h文件至内核<kernel_path>/include/net/目录下。 

$ sudo cp -r AIO/drivers/core_tech_modules/cnss2/cnss2.h <kernel_path>/include/net/

$ sudo cp -r AIO/drivers/core_tech_modules/inc/qcn_sdio_al.h <kernel_path>/include/net/

$ sudo cp -r AIO/drivers/core_tech_modules/cnss_utils/cnss_utils.h <kernel_path>/include/net/

2.4.3 编译WiFi驱动和相关应用代码

执行如下命令进行编译:

$ cd WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/build

$ make CONFIG_ONE_MSI_BUILD=y CONFIG_PERF_BUILD=y

$ make mesh_daemon MAKECMDGOALS=all

$ make mesh_pack

2.5 加载EasyMesh

2.5.1 准备环境

Step 1: 检查PCIe是否枚举成功

$ lspci

若包含如下显示信息,则表示PCIe枚举成功。

02:00.0 Network controller: Qualcomm Device 1103 (rev 01)

Step 2: 编辑/etc/NetworkManager/NetworkManager.conf

[main]

plugins=ifupdown,keyfile,ofono

dns=dnsmasq

[ifupdown]

managed=false

[keyfile]

unmanaged-devices=interface-name:br-lan,interface-name:wlan*

Step 3: 拷贝Wi-Fi固件、配置文件和应用程序

$ sudo mkdir /lib/firmware/wlan

$ sudo cp WiFi_EasyMesh/meta_build/load_meta/wlan_ firmware/* /lib/firmware/

$ sudo cp WiFi_EasyMesh/meta_build/load_meta/BDF&INI/FC64EABMD/bdwlan* /lib/firmware/

$ sudo cp WiFi_EasyMesh/meta_build/load_meta/BDF&INI/FC64EABMD/wlan/qcom_cfg.ini_ map /lib/firmware/wlan/qcom_cfg.ini

$ sudo cp WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/roofs-ve-f10c1.build/sbin/* /sbin

Step 4: 安装EasyMesh应用,修改WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh _pack/emesh_install.sh脚本中的EMESH_PATH变量为绝对路径后,执行脚本。

备注:配置文件qcom_cfg.ini_map适用于MAP Agent模式,而配置文件qcom_cfg.ini适用于默认的STA模式。

2.5.2 配置Agent角色

Step 1: 执行如下命令修改Agent角色配置

$ uci delete network.wan

$ uci delete network.wan6

$ uci commit network

$ uci set repacd.repacd.Role='NonCAP'

$ sudo uci commit repacd

Step 2: 执行如下命令使能Agent角色

## insert modules

$ sudo su

$ modprobe llc

$ modprobe stp

$ modprobe bridge

$ insmod WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/module/emesh-sp.ko

$ insmod WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/module/hyfi-bridging.ko

$ insmod WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/roofs-ve-f10c1.build/lib/ modules/ wlan_cnss_core_pcie.ko

$ modprobe cfg80211

$ insmod WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/roofs-ve-f10c1.build/lib/ modules/wlan.ko country_code=US

$ insmod WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/module/wlan_son _cld.ko

## process

$ ubusd &

$ procd -s /var/run/ubus/ubus.sock &

$ netifd -s /var/run/ubus/ubus.sock -c /etc/config -p /lib/netifd &

## config bridge

$ brctl addbr br-lan

$ ifconfig br-lan hw ether $(iw dev wlan1 info |grep addr|awk '{print $2}')

$ ip addr flush dev eth0

$ ip addr flush dev br-lan

## scripts

$ ./WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/cfg_hyctl.sh

$ . /WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/cfg_wireless_mac.sh

$ /etc/init.d/repacd start

Step 3: 执行如下命令检查EasyMesh功能是否加载成功

$ ps -x

若显示信息包含如下进程信息,则表示EasyMesh功能加载成功。

3228 ?  Ss  0:00 /sbin/hostapd /var/run/hostapd-wlan1.conf -ddd -f /tmp/hostapd-wlan1.log -t -B

3241 ?  Ss  0:00 /sbin/hostapd_cli -i wlan1 -p /var/run/hostapd-wlan1

3346 ?  Ss  0:00 /sbin/hostapd /var/run/hostapd-wlan2.conf -ddd -f /tmp/hostapd-wlan2.log -t -B

3354 ?  Ss  0:00 /sbin/hostapd_cli -i wlan2 -p /var/run/hostapd-wlan2

3437 ?  Ss  0:00 wpa_supplicant -i wlan0 -u -c /var/run/wpa_supplicant-wlan0.conf -ddd

3631 ?  S    0:00 /usr/sbin/wsplcd -c /tmp/wsplcd-lan.conf -a -M /etc/wsplcd/map/bss-policy.conf

3906 ?  Sl   0:01 /usr/sbin/ezmesh -d -C /tmp/ezmesh-lan.conf -P 7777 -cfg80211

2.5.3 配置Controller角色

Step 1: 执行如下命令修改Controller角色配置

$ uci set network.wan=interface

$ uci set network.wan.ifname=eth1

$ uci set network.wan.proto=dhcp

$ sudo uci commit network

$ uci set repacd.MAPConfig.FronthaulSSID='EasyMeshssid-MAP'

$ uci set repacd.MAPConfig.FronthaulKey='EasyMeshssid-MAP'

$ uci set repacd.repacd.Role='CAP'

$ sudo uci commit repacd

$ uci set wireless.wlan0.disabled='1'

$ uci set wireless.@wifi-iface[1].ssid=EasyMeshssid-MAP

$ uci set wireless.@wifi-iface[1].encryption='psk2+ccmp'

$ uci set wireless.@wifi-iface[1].key=EasyMeshssid-MAP

$ uci set wireless.@wifi-iface[2].ssid=EasyMeshssid-MAP

$ uci set wireless.@wifi-iface[2].encryption='psk2+ccmp'

$ uci set wireless.@wifi-iface[2].key=EasyMeshssid-MAP

$ sudo uci commit wireless

Step 2: 执行如下命令使能Controller角色

## insert modules

$ sudo su

$ modprobe llc

$ modprobe stp

$ modprobe bridge

$ insmod WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/module/emesh-sp.ko

$ insmod WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/module/hyfi-bridging.ko

$ insmod WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/roofs-ve-f10c1.build/lib/

modules/ wlan_cnss_core_pcie.ko

$ modprobe cfg80211

$ insmod WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/roofs-ve-f10c1.build/lib/ modules/wlan.ko country_code=US

$ insmod WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/module/wlan_son _cld.ko

## process

$ ubusd &

$ procd -s /var/run/ubus/ubus.sock &

$ netifd -s /var/run/ubus/ubus.sock -c /etc/config -p /lib/netifd &

## config bridge

$ brctl addbr br-lan

$ ifconfig br-lan hw ether $(iw dev wlan1 info |grep addr|awk '{print $2}')

$ ip addr flush dev eth0

$ ip addr flush dev br-lan

## scripts

$ ./WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/cap_cfg_hyctl.sh

$ . /WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/cfg_wireless_mac.sh

$ /etc/init.d/repacd start

$ ./WiFi_EasyMesh/chss_host_LEA/chss_proc/host/AIO/emesh_pack/dnsmasq.sh

Step 3: 执行如下命令检查EasyMesh功能是否加载成功

$ ps -x

若显示信息包含如下进程信息,则表示EasyMesh功能加载成功。

3228 ?  Ss  0:00 /sbin/hostapd /var/run/hostapd-wlan1.conf -ddd -f /tmp/hostapd-wlan1.log -t -B

3241 ?  Ss  0:00 /sbin/hostapd_cli -i wlan1 -p /var/run/hostapd-wlan1

3346 ?  Ss  0:00 /sbin/hostapd /var/run/hostapd-wlan2.conf -ddd -f /tmp/hostapd-wlan2.log -t -B

3354 ?  Ss  0:00 /sbin/hostapd_cli -i wlan2 -p /var/run/hostapd-wlan2

3437 ?  Ss  0:00 wpa_supplicant -i wlan0 -u -c /var/run/wpa_supplicant-wlan0.conf -ddd

3631 ?  S    0:00 /usr/sbin/wsplcd -c /tmp/wsplcd-lan.conf -a -M /etc/wsplcd/map/bss-policy.conf

3906 ?  Sl   0:01 /usr/sbin/ezmesh -d -C /tmp/ezmesh-lan.conf -P 7777 -cfg80211

4013 ?  S    0.00 dnsmasq --dhcp-range=192.168.39.10,192.168.39.100,12h -p 54

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

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

相关文章

代码随想录算法训练营第74天:路径总结[1]

代码随想录算法训练营第74天&#xff1a;路径总结 ‍ A * 算法精讲 &#xff08;A star算法&#xff09; 卡码网&#xff1a;126. 骑士的攻击(opens new window) 题目描述 在象棋中&#xff0c;马和象的移动规则分别是“马走日”和“象走田”。现给定骑士的起始坐标和目标…

细说MCU的ADC模块单通道连续采样的实现方法

目录 一、工程依赖的硬件及背景 二、设计目的 三、建立工程 1、配置GPIO 2、选择时钟源和Debug 3、配置ADC 4、配置系统时钟和ADC时钟 5、配置TIM3 6、配置串口 四、代码修改 1、重定义TIM3中断回调函数 2、启动ADC及重写其回调函数 3、定义用于存储转换结果的数…

【深度学习练习】心脏病预测

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 一、什么是RNN RNN与传统神经网络最大的区别在于&#xff0c;每次都会将前一次的输出结果&#xff0c;带到下一隐藏层中一起训练。如下图所示&#xff1a; …

macOS版ChatGPT更新:修复AI对话纯文本存储问题

猫头虎 &#x1f42f; 建联猫头虎&#xff0c;商务合作&#xff0c;产品评测&#xff0c;产品推广&#xff0c;个人自媒体创作&#xff0c;超级个体&#xff0c;涨粉秘籍&#xff0c;一起探索编程世界的无限可能&#xff01; macOS版ChatGPT更新&#xff1a;修复AI对话纯文本…

C++ 空间和时间高效的二项式系数(Space and time efficient Binomial Coefficient)

这里函数采用两个参数n和k&#xff0c;并返回二项式系数 C(n, k) 的值。 例子&#xff1a; 输入&#xff1a; n 4 和 k 2 输出&#xff1a; 6 解释&#xff1a; 4 C 2 等于 4!/(2!*2!) 6 输入&#xff1a; n 5 和 k 2 输出&#xff1a; 10 解释&#xff1a; 5 C …

maven项目、idea抽风问题解决

开发的时候遇到奇奇怪怪的非技术问题&#xff0c;解决起来会费时间&#xff0c;做无用功。   这里记录常见的情况和解决方法 1.未识别maven项目 文件的图标变成了这种橙色的&#xff0c;而且有主启动函数也不能run 右键pom文件&#xff0c;点击Add as Maven Project 如果…

揭开梵蒂冈秘密档案馆的神秘面纱

关注我们 - 数字罗塞塔计划 - PART 01 深邃的历史 梵蒂冈秘密档案馆起源于公元8世纪&#xff0c;负责保存官方文书和教皇书信。9世纪开始在圣彼得大教堂设立档案库&#xff0c;负责保管外交和法律文件&#xff0c;在帕拉蒂诺山塔内保存经济和行政方面的档案。11至13世纪&…

SpringBoot AOP面向切面编程 基础

介绍 在 Spring Boot 中&#xff0c;AOP&#xff08;面向切面编程&#xff09;是一种强大的技术&#xff0c;它允许你在应用程序中横切关注点&#xff0c;比如日志记录、事务管理、性能监控等&#xff0c;从而避免重复代码和混乱 可以记录操作日志 权限控制 。 依赖 <dep…

HTMLCSS(入门)

HTML <html> <head><title>第一个页面</title></head><body>键盘敲烂&#xff0c;工资过万</body> </html> <!DOCTYPE>文档类型声明&#xff0c;告诉浏览器使用哪种HTML版本显示网页 <!DOCTYPE html>当前页面采取…

go语言day08 泛型 自定义错误处理 go关键字:协程

泛型&#xff1a; 抛错误异常 实现error接口类型 用java语言解释的话&#xff0c;实现类需要重写error类型的抽象方法Error().这样就可以自定义异常处理。 回到go语言&#xff0c;在Error()方法中用*argError 这样一个指针类来充当error接口的实现类。 在f2()方法中定义返回值…

本地部署秘塔开源搜索引擎

秘塔AI搜索是由秘塔科技于2024年初推出的一款新型搜索引擎&#xff0c;被业界誉为“中国版的Perplexity”。秘塔科技成立于2018年4月&#xff0c;其核心团队包括CEO闵可锐、技术专家唐悦和首席运营官王益为等。秘塔AI搜索以其高效简洁的特点受到关注&#xff0c;其搜索结果直接…

累积分布函数的一些性质证明

性质1&#xff1a; E [ X ] ∫ 0 ∞ ( 1 − F ( x ) ) d x − ∫ − ∞ 0 F ( x ) d x ( 1 ) E[X]\int_0^{\infty}(1-F(x))dx - \int_{-\infty}^0F(x)dx\quad (1) E[X]∫0∞​(1−F(x))dx−∫−∞0​F(x)dx(1) 证明&#xff1a; E [ X ] ∫ − ∞ ∞ x p ( x ) d x E[X] …

ETCD 基本介绍与常见命令的使用

转载请标明出处&#xff1a;https://blog.csdn.net/donkor_/article/details/140171610 文章目录 一、基本介绍1.1 参考1.2 什么是ETCD1.3 ETCD的特点1.4 ETCD的主要功能1.5 ETCD的整体架构1.6 什么时候用ETCD&#xff0c;什么时候用redis 二、安装三、使用3.1 etcdctl3.2 常用…

审核平台前端新老仓库迁移

背景 审核平台接入50业务&#xff0c;提供在线审核及离线质检、新人培训等核心能力&#xff0c;同时提供数据报表、资源追踪、知识库等工具。随着平台的飞速发展&#xff0c;越来越多的新业务正在或即将接入审核平台&#xff0c;日均页面浏览量为百万级别。如今审核平台已是公司…

[Redis]哨兵机制

哨兵机制概念 在传统主从复制机制中&#xff0c;会存在一些问题&#xff1a; 1. 主节点发生故障时&#xff0c;进行主备切换的过程是复杂的&#xff0c;需要人工参与&#xff0c;导致故障恢复时间无法保障。 2. 主节点可以将读压力分散出去&#xff0c;但写压力/存储压力是无法…

直击园区消防管理现状,智慧消防相比传统消防管理的优势是什么

一、工业园区消防管理现状 1、消防信息智能化程度低 信息化手段落后&#xff0c;现场的数据信息无法即时传送至指挥中心&#xff0c;突发事件发生时&#xff0c;无法扁平化指挥到基层现场&#xff0c;应急处置能力不足。 2、防控体系不健全 存在监测盲点&#xff0c;火灾报警…

Mybatis实现RBAC权限模型查询

RBAC权限模型 Role-Based Access Control&#xff0c;中文意思是&#xff1a;基于角色&#xff08;Role&#xff09;的访问控制。这是一种广泛应用于计算机系统和网络安全领域的访问控制模型。 简单来说&#xff0c;就是通过将权限分配给➡角色&#xff0c;再将角色分配给➡用…

ABB机器人坐标系偏移指令

ABB机器人在坐标系中偏移用到的指令有&#xff1a;Offs和RelTool。Offs用在工件坐标系中偏移&#xff0c;而RelTool是在工具坐标系中偏移。 一、Offs用于在一个机械臂位置的工件坐标系中添加一个偏移量。 Offs (Point &#xff0c;XOffset&#xff0c; YOffset &#xff0c;Z…

【UE5.1】Chaos物理系统基础——05 蓝图绑定Chaos破裂或碰撞事件

步骤 1. 新建一个父类为Actor的蓝图&#xff0c;这里命名为“BP_ChaosExplosionEvent” 打开“BP_ChaosExplosionEvent”&#xff0c;添加一个变量&#xff0c;这里命名为“GC”&#xff0c;变量类型为“几何体集actor”&#xff0c;设置为可编辑实例 在事件图表中添加如下节点…

Unity休闲手机游戏开发课程

课程介绍 Unity休闲手机游戏开发课程将教您如何利用Unity游戏引擎创建令人愉快的休闲手机游戏。从基础的游戏开发知识到高级的游戏制作技巧&#xff0c;您将学习到创建各种类型的休闲游戏所需的关键技能和工具。无论您是初学者还是有一定经验的开发者&#xff0c;本课程都能帮助…