HCIP-OpenStack

1、OpenStack概述

OpenStack是一种云操作系统,OpenStack是虚拟机、裸金属和容器的云基础架构。可控制整个数据中心的大型计算、存储和网络资源池,所有资源都通过API或Web界面进行管理。
为什么称OpenStack是云操作系统?
云一般指云计算,聚焦于IT能力服务化,达到按需使用、按量计费;
操作系统的功能主要分为资源抽象(比如底层资源计算、存储、网络抽象为统一的接口提供给上层的应用,上层的应用基于此接口去调用)、资源分配与负载调度、应用生命周期管理、系统运维和人机交互,OpenStack具备以上能力,所以OpenStack可以称为云操作系统。
OpenStack既是一个社区,也是一个项目和一个开源软件,作为一个开源的云计算管理平台,OpenStack由几个主要的组件组合起来完成具体工作。OpenStack通过一组相互关联的服务提供基础设施即服务 (IaaS)解决方案,每个服务都提供了一个应用程序编程接口 (API)来促进这种集成。
OpenStack社区:https://www.openstack.org/
在这里插入图片描述
在这里插入图片描述
OpenStack优先考虑如何将计算、存储、网络领域的各类资源抽象为资源池。在此基础上,对资源池内的各类逻辑对象实施控制操作,并将控制操作包装成面向用户的服务。
在这里插入图片描述
OpenStack只是构建云计算的关键组件,为了构建云计算,还需要很多东西:
在这里插入图片描述
OpenStack是框架:以OpenStack为框架,将计算、存储、网络、管理、运营、运维等多个领域的软硬件产品组件整合在一起,共同组成面向业务场景的整体解决方案。
Cloud BSS:Cloud Business Support System,云业务支撑系统。
Cloud OSS:Cloud Operation Support System ,云运营支撑系统。
云计算与虚拟化的关键区别:
云计算的特点是IT能力的服务化,按需使用,按量计费,多租户隔离等。
虚拟化的特点是环境隔离,资源复用,降低隔离损耗,提升运行效率,提供高级虚拟化特性等。
在这里插入图片描述
AWS:Amazon Web Services,亚马逊云服务,AWS是由亚马逊公司提供的web服务,是一个让用户可以租用云电脑运行所需应用的系统。
API:Application Programming Interface,应用程序接口,又称应用编程接口,是指应用程序之间为了保证互相通讯所提供的一系列特殊规则和要求。
EC2:Elastic Computing Cloud,弹性计算云,是由亚马逊公司提供的Web服务,是一个让用户可以租用云电脑运行所需应用的系统。
IaaS:Infrastructure as a Service,基础设施即服务。指把IT基础设施作为一种服务通过网络对外提供,并根据用户对资源的实际使用量或占用量进行计费的一种服务模式。
OpenStack逻辑架构:
每个OpenStack服务内部是由多个进程组成。所有服务(Keystone除外)都至少有一个API进程,负责监听API请求,对请求进行预处理并将它们传递给服务的其他部分。
每个OpenStack服务的进程之间的通信,使用AMQP消息代理。服务的状态存储在数据库中。在部署和配置OpenStack云时,管理员可以在多种消息代理和数据库解决方案中进行选择,例如RabbitMQ、MySQL、MariaDB和SQLite。
用户可以通过Web用户界面、命令行客户端以及通过浏览器插件或curl等工具发出API请求来访问OpenStack。
在这里插入图片描述
生产环境中,一般会有专门的OpenStack部署服务节点、控制节点、计算节点、网络节点和存储服务节点等。生产环境的控制节点建议三台以上,其他节点按需求部署。
OpenStack核心服务简介:
1、界面管理服务Horizon
提供基于Web的控制界面,使云管理员和用户能够管理各种OpenStack资源和服务。首次出现在OpenStack的“Essex”版本中。依赖Keystone认证服务。
2、认证服务Keystone
提供身份验证,服务发现和分布式多租户授权。支持LDAP、OAuth、OpenID Connect、SAML和SQL。首次出现在OpenStack的“Essex”版本中。为其他OpenStack服务提供认证支持。
3、镜像服务Glance
提供发现、注册和检索虚拟机镜像功能。提供的虚拟机实例镜像可以存放在不同地方,例如本地文件系统、Swift对象存储、Cinder块存储等。首次出现在OpenStack的“Bexar”版本中。依赖Keystone认证服务。
4、计算服务Nova
提供大规模、可扩展、按需自助服务的计算资源。支持管理裸机,虚拟机和容器。首次出现在OpenStack的“Austin”版本中。依赖Keystone认证服务、Neutron网络服务和Glance镜像服务。
5、块存储服务Cinder
提供块存储服务,为虚拟机实例提供持久化存储。调用不同存储接口驱动,将存储设备转化成块存储池,用户无需了解存储实际部署位置或设备类型。首次出现在OpenStack的“Folsom”版本中。依赖Keystone认证服务。
6、对象存储服务Swift
提供高度可用、分布式、最终一致的对象存储服务。可以高效、安全且廉价地存储大量数据。非常适合存储需要弹性扩展的非结构化数据。首次出现在OpenStack的“Austin”版本中。为其他OpenStack服务提供对象存储服务。
7、网络服务Neutron
负责管理虚拟网络,专注于为OpenStack提供网络即服务。首次出现在OpenStack的“Folsom”版本中。依赖Keystone认证服务。
8、编排服务Heat
为云应用程序编排OpenStack基础架构资源。提供OpenStack原生REST API和CloudFormation兼容的查询API。首次出现在OpenStack的“Havana”版本中。依赖Keystone认证服务。
9、计量服务Ceilometer
Ceilometer项目是一项数据收集服务,提供跨当前OpenStack核心组件规范化和转换数据的能力。Ceilometer的数据可为所有OpenStack核心组件提供客户计费、资源跟踪和警报功能。首次出现在OpenStack的“Havana”版本中。
在OpenStack中创建虚拟机实例,资源需求和物理PC类似。
在这里插入图片描述
在这里插入图片描述

2、OpenStack界面管理服务Horizon

界面管理服务Horizon:提供基于Web的控制界面,使云管理员和用户能够管理各种OpenStack资源和服务。首次出现在OpenStack的“Essex”版本中。依赖Keystone认证服务。
Horizon属于全局组件之一,提供一个Web管理界面,与OpenStack其他服务交互。管理员与用户可以通过Horizon实现资源的管理、实例的生命周期管理以及连接插件等。
Horizon是OpenStack的一个子项目,用于提供一个web前端控制台(称为Dashboard),以此来展示OpenStack的功能。通常情况下,我们都是从Horizon、Dashboard开始来了解OpenStack。实际上,Horizon并不会为OpenStack添加任何一个新的功能,它只是使用了OpenStack部分API功能,因此,我们可以扩展Horizon的功能,扩展Dashboard。
在这里插入图片描述
Horizon核心价值:
1、核心支持:对所有核心OpenStack项目提供开箱即用的支持。
2、可扩展性:每个开发者都能增加组件。
3、易于管理:架构和代码易于管理,浏览方便。
4、视图一致:始终保持视觉和交互范式一致性。
5、易于使用:用户界面友好,提供人们想要使用的强大界面。
6、可兼容性:API强调向后兼容性。
Horizon与其他服务的交互关系:
Horizon​唯一依赖的服务是Keystone认证服务。Horizon​可以与其他服务结合使用,例如镜像服务,计算服务和网络服务。Horizon​​还可以在有独立服务(如对象存储)的环境中使用。
用户可以通过浏览器使用Horizon提供的控制面板来访问云平台的计算、存储和网络资源,比如启动虚拟机实例、创建子网、分配IP地址、设置访问控制等。
在这里插入图片描述
基于Django的Horizon体系结构如图,底层API模块openstack_dashboard.api将OpenStack其他项目的API封装起来以供Horizon其他模块调用。
Horizon将页面上的所有元素模块化,并将表单、表格等一些网页中的常见元素全部封装成Python类,如上图所示的View模块。每个这样的组件都有自己对应的HTML模板,在渲染整个页面时,Horizon会先找到当前页面包含多少组件,并将各个组件分别渲染成一段HTML片段,最后将它们拼接成一个完整的HTML页面返回给浏览器。
Horizon采用了Django框架,简单来说Horizon是一个基于Django的网站,同时Horizon采用了许多流行的前端技术来扩展其功能。
Django的设计哲学中,业务逻辑与表现逻辑是分开的,Django视图是代表业务逻辑的,模板系统则被视为控制表现与表现逻辑相关的工具。
Horizon秉承了这种哲学,遵循DRY原则,专注于代码的高度可用,致力于支持可扩展的控制面板的框架,尽可能地重复利用已有的模板开发和管理OpenStack网站。
Horizon面板设计分为3层:Dashboard --> PanelGroup --> Panel
Django是一种流行的基于Python语言的开源Web应用程序框架。Django遵循DRY(Don’t Repeat Yourself)原则,专注于代码的高度可重用。web开发:网站程序基本有三部分组成,业务逻辑代码(Python),静态文件(js/css),模板(Python中的jinja,mako,nodejs中有jade),用户向webserver发起请求之后,server程序找到当前url对应的模板,填充模板变量(输出成字符串形式的html源码),返回给浏览器,浏览器渲染页面。
在这里插入图片描述
如图所示,整个页面主要由各个Dashboard、PanelGroup、Panel,以及单击Panel后渲染的页面组成。当前的Dashboard是“项目”,PanelGroup是“项目”下的“计算”,Panel是“计算”下的“概况”。右侧区域就是单击Panel“概况”渲染的页面部分。
项目是云中的组织单位,也称为租户。每个用户都是一个或多个项目的成员。在项目中,用户创建和管理实例。在项目界面,用户可以查看和管理选定项目中的资源,包括实例、镜像、密钥对和主机组。
在这里插入图片描述
管理员界面提供管理员可以管理的资源,例如计算、存储、网络和系统设置等。
在这里插入图片描述
身份管理界面提供认证管理功能。

3、OpenStack认证服务Keystone

认证服务Keystone:提供身份验证,服务发现和分布式多租户授权。支持LDAP、OAuth、OpenID Connect、SAML和SQL。首次出现在OpenStack的“Essex”版本中。为其他OpenStack服务提供认证支持。

1、linux模板制作

使用minimal最小化安装Stream-8,最小化安装用# ip a查看ip
在这里插入图片描述
制作Linux 虚拟机模板,后面克隆(完整克隆)出计算节点compute和控制节点controller,https://blog.51cto.com/cloudcs/5258769
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1、修改网卡信息 # cd /etc/sysconfig/network-scripts/  # cat ifcfg-ens160
TYPE=Ethernet
BOOTPROTO=dhcp
NAME=ens160
DEVICE=ens160
ONBOOT=yes
2、清除密钥信息 # cd /etc/ssh
# rm -rf ssh_host_*
3、清除 Machine ID # cat /etc/machine-id 
000fca8b6e184c94adbae8a120ce776a
# cat /dev/null > /etc/machine-id 
# cat /etc/machine-id 
4、最后关闭虚拟机,# init 0 关机(开机上述文件又会自动生成)
关机状态下进行克隆虚拟机,通过模板完整克隆出两台完整复制的虚拟机。

在这里插入图片描述
开启两台虚拟机(controller和compute),分别修改主机名和配置静态IP
在这里插入图片描述
在这里插入图片描述

# hostnamectl set-hostname controller
# cd /etc/sysconfig/network-scripts/
# vi ifcfg-ens160 
TYPE=Ethernet
BOOTPROTO=none
NAME=ens160
DEVICE=ens160
ONBOOT=yes
IPADDR=10.1.1.50      10.1.1.60
NETMASK=255.255.255.0
GATEWAY=10.1.1.2
DNS1=10.1.1.2
重启控制节点和计算节点(controller和compute)再拍摄快照

在这里插入图片描述

2、OpenStack环境搭建(在线yum源)

Openstack环境搭建有很多种方法:
1.手工搭建,一个组件一个组件去安装。
2.通过工具 packstack 生成一个应答文件,编写应答文件,packstack调用应答文件去安装openstack环境。
3.HCS huaweicloud stack deploy 工具,私有云部署工具,通过安装一个精简版的openstack(heat编排服务),通过该服务去一键式安装整个云环境。
https://blog.51cto.com/cloudcs/6267456 搭建 openstack 最麻烦的是 yum 源问题
8版本用NetworkManager替代了network,仍想用ntwork需安装network服务,# yum install network-scripts -y

以下内容控制节点和计算节点都要操作
关闭防火墙和selinux和NetworkManager
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# vi /etc/selinux/config  修改SELINUX=disabled
# systemctl stop NetworkManager
# systemctl disable NetworkManager
配置ip和主机名的映射,
# vi /etc/hosts
# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
10.1.1.50 controller
10.1.1.60 compute
安装基础软件包(用自带的在线yum源)
yum install -y vim net-tools bash-completion chrony.x86_64 centos-release-openstack-victoria.noarch
安装network服务,# yum install network-scripts -y
配置ntp时间同步
# vim  /etc/chrony.conf
pool ntp.aliyun.com iburst
# systemctl start chronyd
# systemctl enable chronyd
配置yum源(先把原有的备份后清空)
# cd /etc/yum.repos.d/      # rm -rf *
# cat cloud.repo 

[highavailability]
name=CentOS Stream 8 - HighAvailability
baseurl=https://mirrors.aliyun.com/centos/8-stream/HighAvailability/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[nfv]
name=CentOS Stream 8 - NFV
baseurl=https://mirrors.aliyun.com/centos/8-stream/NFV/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[rt]
name=CentOS Stream 8 - RT
baseurl=https://mirrors.aliyun.com/centos/8-stream/RT/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[resilientstorage]
name=CentOS Stream 8 - ResilientStorage
baseurl=https://mirrors.aliyun.com/centos/8-stream/ResilientStorage/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[extras-common]
name=CentOS Stream 8 - Extras packages
baseurl=https://mirrors.aliyun.com/centos/8-stream/extras/x86_64/extras-common/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[extras]
name=CentOS Stream  - Extras
mirrorlist=http://mirrorlist.centos.org/?release=&arch=&repo=extras&infra=
#baseurl=http://mirror.centos.org///extras//os/
baseurl=https://mirrors.aliyun.com/centos/8-stream/extras/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

[centos-ceph-pacific]
name=CentOS - Ceph Pacific
baseurl=https://mirrors.aliyun.com/centos/8-stream/storage/x86_64/ceph-pacific/
gpgcheck=0
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Storage

[centos-rabbitmq-38]
name=CentOS-8 - RabbitMQ 38
baseurl=https://mirrors.aliyun.com/centos/8-stream/messaging/x86_64/rabbitmq-38/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Messaging

[centos-nfv-openvswitch]
name=CentOS Stream 8 - NFV OpenvSwitch
baseurl=https://mirrors.aliyun.com/centos/8-stream/nfv/x86_64/openvswitch-2/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-NFV
module_hotfixes=1

[baseos]
name=CentOS Stream 8 - BaseOS
baseurl=https://mirrors.aliyun.com/centos/8-stream/BaseOS/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[appstream]
name=CentOS Stream 8 - AppStream
baseurl=https://mirrors.aliyun.com/centos/8-stream/AppStream/x86_64/os/
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial
gpgcheck=1
repo_gpgcheck=0
metadata_expire=6h
countme=1
enabled=1

[centos-openstack-victoria]
name=CentOS 8 - OpenStack victoria
baseurl=https://mirrors.aliyun.com/centos/8-stream/cloud/x86_64/openstack-victoria/
#baseurl=https://repo.huaweicloud.com/centos/8-stream/cloud/x86_64/openstack-yoga/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Cloud
module_hotfixes=1

[powertools]
name=CentOS Stream 8 - PowerTools
#mirrorlist=http://mirrorlist.centos.org/?release=&arch=&repo=PowerTools&infra=
baseurl=https://mirrors.aliyun.com/centos/8-stream/PowerTools/x86_64/os/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

# yum clean all  清理缓存
# yum makecache  重新建立缓存
# yum repolist all  列出yum仓库

只在控制节点上安装并配置packstack
安装packstack工具,# yum install -y openstack-packstack
[root@controller ~]# packstack --help |grep ans 找到生成应答文件的参数,–gen-answer-file
[root@controller ~]# packstack --gen-answer-file=yingda.txt 生成应答文件
编辑应答文件,# vim yingda.txt
修改以下参数内容
CONFIG_COMPUTE_HOSTS=10.1.1.50,10.1.1.60
CONFIG_KEYSTONE_ADMIN_PW=redhat
CONFIG_PROVISION_DEMO=n
CONFIG_HEAT_INSTALL=y
CONFIG_NEUTRON_OVN_BRIDGE_IFACES=br-ex:ens160
需要注意的是 br-ex 后面对应的网卡名称,有的网卡是ens33,我这里是ens160
根据应答文件安装openstack,# packstack --answer-file=yingda.txt
在这里插入图片描述
8版本用NetworkManager替代了network,仍想用ntwork需安装network服务,# yum install network-scripts -y 前面把NetworkManager禁用了后面启用network服务。因关闭 NetworkManager 服务,会导致节点重启后网络无法自动启用,也会导致 openstack 组件异常,所以启用 network 来替代 NetworkManager 服务。
控制节点和计算节点都开启network服务,# systemctl start network # systemctl enable network
控制节点和计算节点都开启网络服务后分别拍摄快照
在这里插入图片描述
用户admin,密码忘记了去应答文件中找。
在这里插入图片描述

3、OpenStack环境搭建(本地yum源)

所有流程和在线yum源是一样的,唯独配置yum源不一样。
在这里插入图片描述
在计算节点上开启httpd服务[root@compute ~]# yum install -y httpd # systemctl start httpd # systemctl enable httpd
[root@compute ~]# mkdir /iso 后将镜像放置该目录下[root@compute ~]# ls /iso
CentOS-Stream-8-OPS-Victoria.iso CentOS-Stream-8-x86_64-20221222-dvd1.iso
[root@compute ~]# cd /var/www/html/ [root@compute html]# mkdir os vic
[root@compute html]# vim /etc/fstab 镜像文件系统类型为iso9660
/iso/CentOS-Stream-8-x86_64-20221222-dvd1.iso /var/www/html/os iso9660 defaults 0 0
/iso/CentOS-Stream-8-OPS-Victoria.iso /var/www/html/vic iso9660 defaults 0 0
[root@compute html]# mount -a 刷新
[root@compute html]# df -Th
在这里插入图片描述
控制节点和计算节点都要配置本地yum源

cat <<EOF > /etc/yum.repos.d/cloudcs.repo
[highavailability]
name=CentOS Stream 8 - HighAvailability
baseurl=http://192.168.100.152/vic/highavailability/
gpgcheck=0

[nfv]
name=CentOS Stream 8 - NFV
baseurl=http://192.168.100.152/vic/nfv/
gpgcheck=0

[rt]
name=CentOS Stream 8 - RT
baseurl=http://192.168.100.152/vic/rt/
gpgcheck=0

[resilientstorage]
name=CentOS Stream 8 - ResilientStorage
baseurl=http://192.168.100.152/vic/resilientstorage/
gpgcheck=0

[extras-common]
name=CentOS Stream 8 - Extras packages
baseurl=http://192.168.100.152/vic/extras-common/
gpgcheck=0

[extras]
name=CentOS Stream $releasever - Extras
baseurl=http://192.168.100.152/vic/extras/
gpgcheck=0

[centos-ceph-pacific]
name=CentOS - Ceph Pacific
baseurl=http://192.168.100.152/vic/centos-ceph-pacific/
gpgcheck=0

[centos-rabbitmq-38]
name=CentOS-8 - RabbitMQ 38
baseurl=http://192.168.100.152/vic/centos-rabbitmq-38/
gpgcheck=0

[centos-nfv-openvswitch]
name=CentOS Stream 8 - NFV OpenvSwitch
baseurl=http://192.168.100.152/vic/centos-nfv-openvswitch/
gpgcheck=0

[baseos]
name=CentOS Stream 8 - BaseOS
baseurl=http://192.168.100.152/os/BaseOS/
gpgcheck=0

[appstream]
name=CentOS Stream 8 - AppStream
baseurl=http://192.168.100.152/os/AppStream/
gpgcheck=0

[centos-openstack-victoria]
name=CentOS 8 - OpenStack victoria
baseurl=http://192.168.100.152/vic/centos-openstack-victoria/
gpgcheck=0

[powertools]
name=CentOS Stream 8 - PowerTools
baseurl=http://192.168.100.152/vic/powertools/
gpgcheck=0
EOF

新的Stream-8的isoj镜像如CentOS-Stream-8-x86_64-latest-dvd1.iso更新了一些新特性,导致本地yum源安装openstack-packstack失败,本地yum源加module_hotfixes=1参数也不行,得用CentOS-Stream-8-OPS-Victoria.iso和CentOS-Stream-8-x86_64-20221222-dvd1.iso配套使用。
在这里插入图片描述

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

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

相关文章

七、dokcer-compose部署springboot的jar

1、准备 打包后包名为 ruoyi-admin.jar 增加接口 httpL//{ip}:{port}/common/test/han #环境变量预application.yml 中REDIS_HOSTt的值&#xff0c;去环境变量去找&#xff1b;如果找不到REDIS_HOST就用myredis 1、Dockerfile FROM hlw/java:8-jreRUN ln -sf /usr/share/z…

使用vscode进行远程调试

官方调试手册&#xff1a;vscode官方调试手册 1.安装python扩展 如果是远程连接的话&#xff0c;一定要在ssh上启用扩展。不然创建基于python的配置文件时就会提示&#xff0c;无python扩展。 2.新建配置文件&#xff0c;并修改参数 点击左侧第四个按钮&#xff0c;运行与调试…

【数据结构】二叉树篇|超清晰图解和详解:二叉树的最近公共祖先

博主简介&#xff1a;努力学习的22级计算机科学与技术本科生一枚&#x1f338;博主主页&#xff1a; 是瑶瑶子啦每日一言&#x1f33c;: 你不能要求一片海洋&#xff0c;没有风暴&#xff0c;那不是海洋&#xff0c;是泥塘——毕淑敏 目录 一、题目二、题解三、代码 一、题目 …

约数个数(质因子分解)

思路&#xff1a; &#xff08;1&#xff09;由数论基本定理&#xff0c;任何一个正整数x都能写作&#xff0c;其中p1,p2..pk为x的质因子。 &#xff08;2&#xff09;由此可以推断&#xff0c;要求一个数约数的个数&#xff0c;注意到约数就是p1,p2...pk的一种组合&#xff…

toB 业务分析

1、 如何透彻分析B端客户的需求&#xff1f; - 知乎我在讲《如何分析客户需求》这门课时&#xff0c;经常会问学员&#xff1a;“开发客户的最大困难是什么&#xff1f;”有人说价格高不好卖&#xff0c;有人说客户需求不好把握&#xff0c;有人说客户地处偏远&#xff0c;素养…

windows程序基础

一、windows程序基础 1. Windows程序的特点 1&#xff09;用户界面统一、友好 2&#xff09;支持多任务:允许用户同时运行多个应用程序(窗口) 3&#xff09;独立于设备的图形操作 使用图形设备接口( GDI, Graphics Device Interface )屏蔽了不同硬件设备的差异&#…

深入理解 go协程 调度机制

Thread VS Groutine 这里主要介绍一下Go的并发协程相比于传统的线程 的不同点&#xff1a; 创建时默认的stack大小 JDK5 以后Java thread stack默认大小为1MC 的thread stack 默认大小为8MGrountine 的 Stack初始化大小为2K 所以Grountine 大批量创建的时候速度会更快 和 …

一百五十四、Kettle——Linux上安装Kettle9.3(踩坑,亲测有效,附截图)

一、目的 由于kettle8.2在Linux上安装后&#xff0c;共享资源库创建遇到一系列问题&#xff0c;所以就换成kettle9.3 二、kettle版本以及安装包网盘链接 kettle9.3.0安装包网盘链接 链接&#xff1a;https://pan.baidu.com/s/1MS8QBhv9ukpqlVQKEMMHQA?pwddqm0 提取码&…

《封神第一部》票房已破21亿,商朝真有大象,苏妲己可能是周文王的恩人

随着《封神第一部&#xff1a;朝歌风云》的持续大火&#xff0c;我周六也去电影院贡献了一票&#xff0c;重温中国神话经典&#xff0c;感受历史史诗的震撼&#xff0c;改编的非常棒&#xff0c;我很喜欢。 针对影片中的一些故事和疑问&#xff0c;做些总结。 1、影片中有几处镜…

无需停服!PostgreSQL数据迁移工具-NineData

PostgreSQL 是一种备受开发者和企业青睐的关系型数据库&#xff0c;其丰富的数据类型、地理空间负载和强大的扩展能力等特性使其备受欢迎。然而&#xff0c;在企业使用 PostgreSQL 承载应用的过程中&#xff0c;由于业务需要上云、跨云、下云、跨机房迁移、跨地域迁移、数据库版…

初识Redis

目录 认识Redis分布式系统Redis的特性Redis的应用场景Redis客户端Redis命令 认识Redis 上面一段话是官网给出的对Redis的介绍&#xff0c;in-memory data store表明Redis是在内存中存储数据的&#xff0c;这和我们接触的其他数据库就有很大的不同&#xff0c;比如MySQL&#xf…

书写自动智慧:探索Python文本分类器的开发与应用:支持二分类、多分类、多标签分类、多层级分类和Kmeans聚类

书写自动智慧&#xff1a;探索Python文本分类器的开发与应用&#xff1a;支持二分类、多分类、多标签分类、多层级分类和Kmeans聚类 文本分类器&#xff0c;提供多种文本分类和聚类算法&#xff0c;支持句子和文档级的文本分类任务&#xff0c;支持二分类、多分类、多标签分类…

Linux:Firewalld防火墙

目录 绪论 1、firewalld配置模式 2、预定义服务&#xff1a;系统自带 3端口管理 绪论 firewalld 防火墙&#xff0c;包过滤防火墙&#xff0c;工作在网络层&#xff0c;centos7自带的默认的防火墙 作用是为了取代iptables 1、firewalld配置模式 运行时配置 永久配置 i…

HTML详解连载(1)

HTML详解连载&#xff08;1&#xff09; HTML定义HTML 超文本标记语言标签语法注意拓展 HTML基本骨架解释VS Code 快速生成骨架&#xff1a;标签的关系父子关系&#xff08;嵌套关系&#xff09;兄弟关系&#xff08;并列关系&#xff09; 代码格式注释 标题标签标签名:h1-h6(双…

Jenkins 监控dist.zip文件内容发生变化 触发自动部署

为Jenkins添加plugin http://xx:xx/manage 创建一个任务 构建触发器 每3分钟扫描一次&#xff0c;发现指定文件build.zip文件的MD5发生变化后 触发任务

IntelliJ IDEA(简称Idea) 基本常用设置及Maven部署---详细介绍

一&#xff0c;Idea是什么&#xff1f; 前言&#xff1a; 众所周知&#xff0c;现在有许多编译工具&#xff0c;如eclipse&#xff0c;pathon, 今天所要学的Idea编译工具 Idea是JetBrains公司开发的一款强大的集成开发环境&#xff08;IDE&#xff09;&#xff0c;主要用于Java…

qemu简单使用

参考&#xff1a; 记一次全设备通杀未授权RCE的挖掘经历 claude1 安装使用 附件下载 下载后拖到虚拟机 解压 使用root用户 运行.sh脚本即可 运行脚本解读 #!/bin/bashsudo qemu-system-mipsel \-cpu 74Kf \-M malta \-kernel vmlinux-3.2.0-4-4kc-malta \ -hda debian…

【C语言】每日一题(寻找数组的中心下标)

寻找数组的中心下标&#xff0c;链接奉上 方法 暴力循环前缀和 暴力循环 ​​​​​​​思路&#xff1a; 依旧是我们的老朋友&#xff0c;暴力循环。 1.可以利用外层for循环&#xff0c;循环变量为数组下标&#xff0c;在循环内分别求出下标左边与右边的sum 2.在边界时讨论&…

【华为Datacom 综合拓扑案例—分享篇】

拓扑图 题目要求 实验要求&#xff1a; 1、PC1\PC2\PC3\PC4采用DHCP自动获取IP地址&#xff0c;SW5作为服务器&#xff0c;SW3和SW4作为中继 创建地址池ip pool huawei1和ip pool huawei2&#xff0c;租期都为2天 2、SW3与SW4做链路聚合&#xff0c;采用LACP模式。SW3作为主…

VScode如何设置中文教程

前言&#xff1a;打开VSCode软件&#xff0c;可以看到刚刚安装的VSCode软件默认使用的是英文语言环境&#xff0c;但网上都是vscode中文界面教你怎么设置中文&#xff0c;可能不利于小白阅读&#xff0c;所以重装vscode&#xff0c;手摸手从英文变成中文。 设置为中文 打开VS…