当前位置: 首页 > news >正文

二:OpenStack环境准备-controller node

一:工具、环境准备-controller node
二:OpenStack环境准备-controller node
三:安装服务-controller node


四:工具、环境准备-compute node
五:OpenStack环境准备-compute node
六:安装服务-compute node


七:仪表盘安装


OpenStack 搭建官方指导手册:
OpenStack Installation Guide—Installation Guide documentation


文章目录

  • Security
  • Host networking
      • a. 配置网络接口
      • b. 验证连通性
  • Network Time Protocol (NTP)
      • a. 安装并配置组件
      • b. 验证操作
  • OpenStack packages
      • a. 下载 Victoria 云存储仓库
      • b. 安装示例
      • c. 安装客户端
  • SQL database
      • a. 安装并配置组件
      • b. 完成安装
  • Message queue
      • 安装并配置组件
  • Memcached
      • a. 安装并配置组件
      • b. 完成安装
  • Etcd
      • a. 安装并配置组件
      • b. 完成安装


Security

生成多位字符随机码的指令(可以用作密码但不建议,后续所有的密码都设置成123456就好):openssl rand -hex 10


Host networking

主机网络相关配置。

a. 配置网络接口

  • 1.切换至超级用户模式:

执行指令:

sudo su

提示:输入密码,输入的密码不会显示,确定输入正确,然后回车
后续的所有操作都建议在root模式下执行
若是断开 xshell 连接重新进入命令行,则重新执行该指令

    1. 将第二个接口配置为 provider interface

执行指令:

vim /etc/network/interfaces

进入的是一个新文件

添加以下内容:

# The provider network interface
auto ens34
iface ens34 inet manual
up ip link set dev $IFACE up
down ip link set dev $IFACE down

执行命令:ip addr 输出的第二个以 ens 开头的接口名,用于替换ens34(相同则不用)
请使用实际接口名称替换 ens34 ( 名为INTERFACE_NAME)

    1. 配置主机名解析:

执行指令:

vim /etc/hosts

添加或修改为以下内容:

127.0.0.1           locallhost
192.168.10.10       controller
192.168.10.20       compute

192.168.10.10 应该是 ens33 对应的 ip 地址
192.168.10.20 compute
是还没创建的 compute 节点的 ip 地址及其主机名

b. 验证连通性

执行指令:

ping -c 4 docs.openstack.org
ping -c 4 compute

报错:

root@controller:/home/cbz# ping -c 4 compute
ping: compute: Temporary failure in name resolution

这是因为还没创建 compute 节点,所以请无视报错

输出示例:

# ping -c 4 docs.openstack.org
PING files02.openstack.org (23.253.125.17) 56(84) bytes of data.
64 bytes from files02.openstack.org (23.253.125.17): icmp_seq=1 ttl=43 time=125 ms
64 bytes from files02.openstack.org (23.253.125.17): icmp_seq=2 ttl=43 time=125 ms
64 bytes from files02.openstack.org (23.253.125.17): icmp_seq=3 ttl=43 time=125 ms
64 bytes from files02.openstack.org (23.253.125.17): icmp_seq=4 ttl=43 time=125 ms--- files02.openstack.org ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 125.192/125.282/125.399/0.441 ms# ping -c 4 compute
PING compute (10.0.0.31) 56(84) bytes of data.
64 bytes from compute (10.0.0.31): icmp_seq=1 ttl=64 time=0.263 ms
64 bytes from compute (10.0.0.31): icmp_seq=2 ttl=64 time=0.202 ms
64 bytes from compute (10.0.0.31): icmp_seq=3 ttl=64 time=0.203 ms
64 bytes from compute (10.0.0.31): icmp_seq=4 ttl=64 time=0.202 ms--- compute1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.202/0.217/0.263/0.030 ms

Network Time Protocol (NTP)

安装 Chrony以在节点间正确同步服务。

a. 安装并配置组件

    1. 安装软件包:

执行指令:

apt install chrony -y

在 chrony.conf 文件中替换主机 ip 地址

执行指令:

vim /etc/chrony/chrony.conf

在 chrony.conf 文件中添加以下配置:

server NTP_SERVER iburst

提示:将 NTP_SERVER 替换成 ens33 对应的 ip 地址,如 192.168.10.10

让其他节点也能连接到 controller node 上的 chrony 守护进程:

在 chrony.conf 文件(跟上面同一个)中添加以下配置:

allow 192.168.10.0/24

提示:这个 192.168.10.0/24 ,替换成 VMnet1 对应的 子网地址/子网掩码,如 ***.***.***.0/24。

    1. 重启 NTP 服务

执行指令:

service chrony restart

b. 验证操作

执行指令:

chronyc sources

输出示例:

# chronyc sources210 Number of sources = 2MS Name/IP address         Stratum Poll Reach LastRx Last sample===============================================================================^- 192.0.2.11                    2   7    12   137  -2814us[-3000us] +/-   43ms^* 192.0.2.12                    2   6   177    46    +17us[  -23us] +/-   68ms

OpenStack packages

a. 下载 Victoria 云存储仓库

执行指令:

add-apt-repository cloud-archive:victoria

提示:
Press [ENTER] to continue or Ctrl-c to cancel adding it.
解答:
点击回车即可

b. 安装示例

执行指令:

apt install nova-compute -y

c. 安装客户端

执行指令:

apt install python3-openstackclient -y

SQL database

a. 安装并配置组件

    1. 安装软件包
apt install mariadb-server python3-pymysql -y
    1. 创建并编辑以下文件
vim /etc/mysql/mariadb.conf.d/99-openstack.cnf

进入的是一个新文件

99-openstack.cnf 文件中创建 [mysqld] 字段:

[mysqld]
bind-address = 192.168.10.10
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

提示:bind-address 的值(即192.168.10.10)修改为 ens33 对应的 ip 地址

b. 完成安装

    1. 重启数据库服务:
service mysql restart
    1. 运行以下脚本以确保数据库服务安全:
mysql_secure_installation

输出示例:

root@controller:/home/cbz# mysql_secure_installationNOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDBSERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.Enter current password for root (enter for none): 
OK, successfully used password, moving on...Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.You already have a root password set, so you can safely answer 'n'.Change the root password? [Y/n] n... skipping.By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.Remove anonymous users? [Y/n] y... Success!Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.Disallow root login remotely? [Y/n] y... Success!By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.Remove test database and access to it? [Y/n] y- Dropping test database...... Success!- Removing privileges on test database...... Success!Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.Reload privilege tables now? [Y/n] y... Success!Cleaning up...All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.Thanks for using MariaDB!

注意 Change the root password? [Y/n] ,请输入字符 n,其他的都输入字符 y


Message queue

安装并配置组件

    1. 安装软件包:
apt install rabbitmq-server -y
    1. 添加 openstack 用户:
rabbitmqctl add_user openstack 123456

提示:123456是用户 openstack 的密码,即 RABBIT_PASS
后面创建的所有的密码都是使用 123456

输出示例:

root@controller:/home/cbz# rabbitmqctl add_user openstack 123456
Adding user "openstack" ...
    1. 为 openstack 用户配置权限:
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

输出示例:

root@controller:/home/cbz# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ... 

Memcached

a. 安装并配置组件

    1. 安装软件包:
apt install memcached python3-memcache -y
    1. 打开并编辑以下文件:
vim /etc/memcached.conf

添加或修改为以下内容:

-l 192.168.10.10

提示:将-l 127.0.0.1修改为-l 192.168.10.10
192.168.10.10 应修改为接口 ens33 对应 ip 地址

b. 完成安装

  • 重启存储服务:
service memcached restart

Etcd

a. 安装并配置组件

    1. 安装软件包:
apt install etcd -y
    1. 编辑以下文件:
vim /etc/default/etcd

一定一定一定要填对
添加或修改为以下内容:

ETCD_NAME="controller"
ETCD_DATA_DIR="/var/lib/etcd"
ETCD_LISTEN_PEER_URLS="http://0.0.0.0:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.10.10:2379"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.10.10:2380"
ETCD_INITIAL_CLUSTER="controller=http://192.168.10.10:2380"
ETCD_INITIAL_CLUSTER_STATE="new"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.10.10:2379"

有两种选择,一种是直接将上面的内容复制粘贴到文件里

另一种是逐个修改:

注意大小写敏感

提示:
在文件中查找对应的键,如 “ETCD_NAME” ,然后将他前面的 # 给删掉,
然后,其中,
ETCD_INITIAL_CLUSTER
ETCD_INITIAL_ADVERTISE_PEER_URLS
ETCD_ADVERTISE_CLIENT_URLS
ETCD_LISTEN_CLIENT_URLS
的值中的 192.168.10.10 修改为 ens33 中对应的 ip 地址

如何查找对应的键呢?
切换到vim的查找模式,即:在命令模式下输入/,在输入要查找的值,输入完成后点击回车,点击 n键可以 切换 符合条件要查找的值

输入错了怎么办?
可以 点击 esc 键,然后再点击 u键进行撤回

报错:

root@controller:/home/cbz# systemctl restart etcd
Job for etcd.service failed because the control process exited with error code.
See "systemctl status etcd.service" and "journalctl -xe" for details.

那就是内容没配置对!!!

b. 完成安装

  • 启用并重启 etcd 服务
systemctl enable etcd
systemctl restart etcd

相关文章:

二:OpenStack环境准备-controller node

一:工具、环境准备-controller node 二:OpenStack环境准备-controller node 三:安装服务-controller node 四:工具、环境准备-compute node 五:OpenStack环境准备-compute node 六:安装服务-compute node 七…...

解决stable-diffusion-webui时的问题:No module ‘xformers‘. Proceeding without it

p.s 被另一篇文章坑了,装个xformers把我原先的pytorch降智了&%$^# 注意:!!!xformers非强制安装;可优化显存,提高性能和出图速率,对于GPU能力有限的用户很有用;安装过…...

清理Linux/CentOS7根目录的思路

在使用Linux服务器过程中,经常会遇到磁盘空间不足的问题,好多应用默认安装在根目录下,记录一下如何找到问题所在,清理根目录(/) 1. 检查空间使用情况 1.1 查看分区占用: df -h输出&#xff1…...

人工智能-深度学习-BP算法

BP算法的核心思想是通过计算损失函数对网络参数的梯度,然后使用梯度下降法来更新网络参数,从而最小化损失函数。 误差反向传播算法(BP)的基本步骤: 前向传播:正向计算得到预测值。 计算损失:通过损失函数计算预测值和真实值的差…...

C++小问题

怎么分辨const修饰的是谁 是限定谁不能被改变的? 在C中,const关键字的用途和位置非常关键,它决定了谁不能被修改。const可以修饰变量、指针、引用等不同的对象,并且具体的作用取决于const的修饰位置。理解const的规则能够帮助我们…...

如何让控件始终处于父容器的居中位置(父容器可任意改变大小)

前言: 大家好,我是上位机马工,硕士毕业4年年入40万,目前在一家自动化公司担任软件经理,从事C#上位机软件开发8年以上!我们在C#开发winform程序的时候,有时候需要将一个控件居中显示&#xff0c…...

Python 调用 Umi-OCR API 批量识别图片/PDF文档数据

目录 一、需求分析 二、方案设计(概要/详细) 三、技术选型 四、OCR 测试 Demo 五、批量文件识别完整代码实现 六、总结 一、需求分析 市场部同事进行采购或给客户报价时,往往基于过往采购合同数据,给出现在采购或报价的金额…...

Java基础访问修饰符全解析

一、Java 访问修饰符概述 Java 中的访问修饰符用于控制类、方法、变量和构造函数的可见性和访问权限,主要有四种:public、protected、default(无修饰符)和 private。 Java 的访问修饰符在编程中起着至关重要的作用,它…...

朗迪锋亮相2024人因工程与智能系统交互国际会议

2024年11月28日至30日,2024人因工程与智能系统交互国际会议在深圳隆重举办。此次大会以推动我国人因工程学科发展为目标,致力于加强国际学术交流,深入探讨人工智能时代的智能系统交互,旨在培育新质生产力,助力经济社会…...

OpenGL学习过程总结

1、矩阵 参考链接 第三课:矩阵变换...

webGL入门教程_06变换矩阵与绕轴旋转总结

变换矩阵与绕轴旋转总结 目录 1. 变换矩阵简介2. 平移矩阵3. 缩放矩阵4. 旋转矩阵 4.1 绕 Z 轴旋转4.2 绕 X 轴旋转4.3 绕 Y 轴旋转 5. 组合变换矩阵6. 结论 1. 变换矩阵简介 在计算机图形学中,变换矩阵用于在三维空间中对物体进行操作,包括&#xff…...

mysql 查询所有的触发器

SELECTTRIGGER_SCHEMA AS Database,TRIGGER_NAME AS Trigger,EVENT_OBJECT_TABLE AS Table,EVENT_MANIPULATION AS Event,ACTION_STATEMENT AS Statement FROMinformation_schema.TRIGGERS;创建触发器遇到报错: You do not have the SUPER privilege and binary lo…...

基于Java Springboot个人财务APP且微信小程序

一、作品包含 源码数据库设计文档万字PPT全套环境和工具资源部署教程 二、项目技术 前端技术:Html、Css、Js、Vue、Element-ui 数据库:MySQL 后端技术:Java、Spring Boot、MyBatis 三、运行环境 开发工具:IDEA/eclipse 微信…...

GateWay使用手册

好的&#xff0c;下面是优化后的版本。为了提高可读性和规范性&#xff0c;我对内容进行了结构化、简化了部分代码&#xff0c;同时增加了注释说明&#xff0c;便于理解。 1. 引入依赖 在 pom.xml 中添加以下依赖&#xff1a; <dependencies><!-- Spring Cloud Gate…...

go语言读取yaml配置文件内容

1、config.yaml配置文件内容假设如下 name: "example" version: 1.0 settings:timeout: 30debug: truefeatures:- feature1- feature22、定义结构体 go语言定义结构体匹配yaml内容 package mainimport ("fmt""log""os""gopkg.…...

Proteus8.17下载安装教程

Proteus是一款嵌入式系统仿真开发软件&#xff0c;实现了从原理图设计、单片机编程、系统仿真到PCB设计&#xff0c;真正实现了从概念到产品的完整设计&#xff0c;其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等&#xff0c;能够帮助用…...

【AI】Sklearn

长期更新&#xff0c;建议关注、收藏、点赞。 友情链接&#xff1a; AI中的数学_线代微积分概率论最优化 Python numpy_pandas_matplotlib_spicy 建议路线&#xff1a;机器学习->深度学习->强化学习 目录 预处理模型选择分类实例&#xff1a; 二分类比赛 网格搜索实例&…...

图数据库 | 10、图数据库架构设计——高性能图存储架构(上)

老夫在之前的三大篇内容中&#xff0c;介绍了图数据库的三大组件—图计算、图存储以及图查询语言。&#xff08;都归拢在图数据库原理、架构与应用这个专栏中了&#xff0c;感兴趣的朋友可以在去找阅读。&#xff09; 接下来&#xff0c;老夫还将继续深化这三大组件&#xff0…...

el-table 组件二次封装(vue2)

PublicTable.vue <!-- 公共表格组件 --> <template><div class"table-common"><el-table v-loading"loading" :ref"tableid" border style"width: 100%" :data"tableDatas" :row-key"rowKey&quo…...

张量并行和流水线并行在Transformer中的具体部位

目录 张量并行和流水线并行在Transformer中的具体部位 一、张量并行 二、流水线并行 张量并行和流水线并行在Transformer中的具体部位 张量并行和流水线并行是Transformer模型中用于提高训练效率的两种并行策略。它们分别作用于模型的不同部位,以下是对这两种并行的具体说…...

详解Qt pdf 之QPdfSelection 选择文本类

文章目录 QPdfSelection 类详解前言 详细说明公共函数说明1. 构造函数2. text3. boundingRect4. isEmpty5. startPage6. endPage 使用场景示例代码代码说明总结 QPdfSelection 类详解 前言 QPdfSelection 是 Qt PDF 模块中的一个类&#xff0c;用于表示在 PDF 文档中被选中的…...

一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库

大家好&#xff0c;今天给大家分享一个基于PyTorch的OCR库EasyOCR&#xff0c;它允许开发者通过简单的API调用来读取图片中的文本&#xff0c;无需复杂的模型训练过程。 项目介绍 EasyOCR 是一个基于Python的开源项目&#xff0c;它提供了一个简单易用的光学字符识别&#xff…...

matlab 中的 bug

在matlab中绘图&#xff0c;设置 axe 的背景颜色 axes_in3.Color #00235B ;打印的时候 print(figure_handle1,-dpng,-r300,"merge_yt_ey") ;此时保存的图片无法识别背景颜色 原因在于 matlab 中的 InverseHardcopy 将 InvertHardcopy 设置成 off 则可以解决这个问…...

【算法刷题指南】优先级队列

&#x1f308;个人主页&#xff1a; 南桥几晴秋 &#x1f308;C专栏&#xff1a; 南桥谈C &#x1f308;C语言专栏&#xff1a; C语言学习系列 &#x1f308;Linux学习专栏&#xff1a; 南桥谈Linux &#x1f308;数据结构学习专栏&#xff1a; 数据结构杂谈 &#x1f308;数据…...

android user版本默认usb模式为充电模式

android插入usb时会切换至默认设置的模式&#xff0c;debug版本为adb&#xff0c;user版本为mtp protected long getChargingFunctions() {// if ADB is enabled, reset functions to ADB// else enable MTP as usual.if (isAdbEnabled()) {return UsbManager.FUNCTION_ADB;} e…...

[极客大挑战 2019]HardSQL--详细解析

信息搜集 登录系统&#xff0c;有两个可能的注入点&#xff1a; 随便输一下看看传参类型&#xff1a; 都是GET型。 SQL注入 传参 usernameadmin’&password123 传参 usernameadmin&password123’ username和password传参&#xff0c;四种闭合方式只有单引号报错&a…...

java基础概念46-数据结构1

一、引入 List集合的三种实现类使用了不同的数据结构&#xff01; 二、数据结构的定义 三、常见的数据结构 3-1、栈 特点&#xff1a;先进后出&#xff0c;后进先出。 java内存容器&#xff1a; 3-2、队列 特点&#xff1a;先进先出、后进后出。 栈VS队列-小结 3-3、数组 3-…...

数学建模选MATLAB还是Python?

在进行数学建模时&#xff0c;选择合适的编程语言和工具对于建模的效率和效果至关重要。目前&#xff0c;MATLAB和Python是两个常用的数学建模工具&#xff0c;它们各自有优缺点&#xff0c;适用于不同的场景。本文将从多个维度对MATLAB和Python进行比较&#xff0c;帮助大家做…...

【C++】多线程

目录 一 概念 1 多线程 2 多进程与多线程 3 多线程理解 二 创建线程 1 thread 2 join() 和 detach() 3 this_thread 三 std::mutex 1 lock 和 unlock 2 lock_guard 3 unique_lock 四 condition_variable 五 std::atomic 一 概念 1 多线程 在C11之前&#xff0…...

【计算机网络】实验2:总线型以太网的特性

实验 2&#xff1a;总线型以太网的特性 一、 实验目的 加深对MAC地址&#xff0c;IP地址&#xff0c;ARP协议的理解。 了解总线型以太网的特性&#xff08;广播&#xff0c;竞争总线&#xff0c;冲突&#xff09;。 二、 实验环境 • Cisco Packet Tracer 模拟器 三、 实…...

基于Matlab合成孔径雷达(SAR)回波信号建模与多指标质量评估

本研究基于合成孔径雷达&#xff08;SAR&#xff09;技术&#xff0c;建立了一个雷达回波信号的模拟模型&#xff0c;并通过多项评价指标对信号质量进行深入评估。首先&#xff0c;研究定义了与SAR系统相关的关键物理参数&#xff0c;如工作频率、平台速度、脉冲宽度、采样率等…...

spring boot3.3.5 logback-spring.xml 配置

新建 resources/logback-spring.xml 控制台输出颜色有点花 可以自己更改 <?xml version"1.0" encoding"UTF-8"?> <!--关闭文件扫描 scanfalse --> <configuration debug"false" scan"false"><springProperty …...

浅谈C#库之DevExpress

一、DevExpress库介绍 DevExpress是一个功能强大、界面美观的UI组件库&#xff0c;广泛应用于桌面应用程序和Web应用程序的开发中。它提供了丰富的控件和工具&#xff0c;帮助开发人员快速构建现代化的用户界面。DevExpress控件库以其功能丰富、应用简便、界面华丽以及方便定制…...

【webApp之h5端实战】项目基础结构搭建及欢迎页面的实现

这是一个实战项目的webapp,主要是使用原生js/css/html来实现我们的业务。预览下面的实战效果,我们将会从0到1实现这个系列的项目。包括大量的原生js知识,css3动画的开发,以及页面的交互实现。 效果预览 项目准备工作 封装的工具类,用于获取原生dom节点,处理原生dom事件的…...

生成树详解(STP、RSTP、MSTP)

目录 1、STP 1.概述 2.基本概念 3.端口角色及其作用 4.报文结构 5.STP的端口状态 6.三种定时器 7.STP选举步骤 8.配置BPDU的比较原则 9.TCN BPDU 10.临时环路的问题 11.传统STP的不足 拓扑变更处理过程 2、RSTP 1.端口角色 2.端口状态 3.P/A&#xff08;Propo…...

C++趣味编程:基于树莓派Pico的模拟沙漏-倾斜开关与LED的互动实现

沙漏,作为一种古老的计时工具,利用重力让沙子通过狭小通道,形成了计时效果。在现代,我们可以通过电子元件模拟沙漏的工作原理。本项目利用树莓派Pico、倾斜开关和LED,实现了一个电子沙漏。以下是项目的详细技术解析与C++代码实现。 一、项目概述 1. 项目目标 通过倾斜开关…...

Matlab Simulink 电力电子仿真-单相电压型半桥逆变电路分析

目录 一、单相电压型半桥逆变电路仿真模型 1.电路模型 2.电路模型参数 二、仿真分析 三、总结 1.优缺点 2.应用场景 一、单相电压型半桥逆变电路仿真模型 1.电路模型 单相电压型半桥逆变电路是一种常见的逆变电路&#xff0c;主要用于将直流电源转换为交流电源。 &…...

在超表面中琼斯矩阵的使用

琼斯矩阵&#xff08;Jones Matrix&#xff09; 是一种线性代数方法&#xff0c;用于描述光的偏振状态和偏振变化&#xff0c;是偏振光学中重要的数学工具。它在 超表面理论设计 中广泛应用&#xff0c;尤其是在设计和调控光与物质相互作用时&#xff0c;例如偏振控制、相位调制…...

threeJs学习 贴图 :地球

效果图&#xff1a; 贴图以后的效果&#xff1a; vue代码&#xff1a; <template><div class"scene_box"><p>创建纹理贴图TextureLoader</p><div class"canvas"></div></div> </template><script s…...

详解Rust多线程编程

文章目录 多线程模型创建和管理线程自定义线程行为线程传递数据线程间通信线程池错误处理与线程Condvar(条件变量)无锁并发高性能并发库 Rust的多线程编程提供了一种安全、高效的方式来进行并发操作。Rust的并发性设计原则之一是确保线程安全&#xff0c;同时避免运行时的开销&…...

Uniapp触底刷新

在你的代码中&#xff0c;使用了 scroll-view 来实现一个可滚动的评论区域&#xff0c;并且通过监听 scrolltolower 事件来触发 handleScrollToLower 函数&#xff0c;以实现“触底更新”或加载更多评论的功能。 关键部分分析&#xff1a; scroll-view 组件: scroll-view 是一…...

【前端】安装hadoop后,前端启动报错,yarn命令

新安装hadoop后&#xff0c;前端启动项目用yarn命令&#xff0c;报错。 报错&#xff1a;系统找不到指定的路径。 No HADOOP_CONF_DIR set. Please specify it either in yarn-env.cmd or in the environment. 解决&#xff1a;删掉hadoop目录下yarn的文件 检查&#xff1a;…...

T620存储安全方案SoC芯片技术手册

系统资源 集成32位国产CPU CK803S&#xff1b;最高工作频率260Mhz CK803S内置16KB I/D Cache&#xff0c;内置32KB DTCM 32KB ROM&#xff1b;256KB SRAM&#xff1b;8KB SRAM&#xff08;系统专用&#xff09; 512KB/1MB 片内Flash 安全算法 支持SM4数据加密&#xff0c;加密性…...

Rust循环引用与多线程并发

循环引用与自引用 循环引用的概念 循环引用指的是两个或多个对象之间相互持有对方的引用。在 Rust 中&#xff0c;由于所有权和生命周期的严格约束&#xff0c;直接创建循环引用通常会导致编译失败。例如&#xff1a; // 错误的循环引用示例 struct Node {next: Option<B…...

力扣 二叉树的锯齿形层序遍历-103

二叉树的锯齿形层序遍历-103 此题就是再二叉树层序遍历的基础上&#xff0c;加了反转当前层数组元素的函数reverse()&#xff0c;也可以不反转&#xff0c;直接在遍历当前层的所有节点的for循环里直接进行if判断&#xff0c;根据遍历方向&#xff0c;决定如何插入元素。 clas…...

PyCryptodome:Python中的密码学库

简介 PyCryptodome是一个功能强大的Python密码学库&#xff0c;提供了各种密码学算法的实现&#xff0c;包括对称加密、非对称加密、哈希函数、消息认证码等。它是对Python的Crypto库的一个现代化和增强版&#xff0c;提供了更好的性能和安全性。 Git地址 PyCryptodome的代码可…...

我眼中的“懂重构”(一)

初识重构 2017年的时候&#xff0c;领导让我看公司的一本书《重构——改善代码的既有设计》&#xff0c;这是一本JAVA版本的&#xff0c;前后看了2遍。那时候看书因为不懂看的格外仔细。我只是那时候不懂&#xff0c;然而多年后的今天我仍然发现很多人对重构充满误解。在刚进入…...

Excel中日期格式“年月日 时间”修改为“年月日”

需求&#xff1a; 将Excel中“yyyy-mm-dd hh:mm:ss”格式的时间转换为“yyyy-mm-dd”格式的时间&#xff0c;选中转换后的时间时编辑栏中依然会显示“yyyy-mm-dd hh:mm:ss”格式。 方法一、在原数据列进行转换&#xff1a; 1、选中需要转换的数据列&#xff0c;右键--【设置…...

CSS底层基础:小白速来

1. CSS简介 CSS (Cascading Style Sheets) 是一种用来描述HTML或XML文档样式的语言。它使得开发者能够控制网页的布局和外观&#xff0c;包括字体、颜色、间距等。CSS通过选择器来指定要应用样式的元素&#xff0c;并定义这些元素的具体样式属性。 基本结构示例&#xff1a; …...

【MySQL】库和表的基本操作

目录 库 库的增删查改 字符集与校验集 库的备份与恢复 表 表的创建和删除 用不同的存储引擎创建表的区别 查看表 修改表 添加删除属性 修改改变属性 上篇博客我们讲了数据库的基本理解&#xff0c;对数据库有了一个大致的概念&#xff0c;下面我们来介绍一下库和表的…...