手把手带你部署OpenStack环境

2023-05-16

这里写目录标题

  • 1. OpenStack 环境部署
    • 1.1 部署准备
    • 1.2 部署思路
  • 2.配置OpenStack 基础环境
    • 2.1 配置网卡环境
    • 2.2 所有节点上的基本操作
      • 2.2.1 关闭防火墙、核心防护
      • 2.2.2 添加主机名映射
      • 2.2.3 免交互的配置
      • 2.2.4 安装基础环境依赖包
    • 2.3 设置时间同步
      • 2.3.1 控制节点上的配置
      • 2.3.2 计算节点上的配置
    • 2.4 设置任务计划
  • 3. OpenStack系统环境配置
    • 3.1 安装,配置MariaDB
      • 3.1.1 安装软件
      • 3.1.2 添加MySQL子配置文件
      • 3.1.3 开启服务并设置开机自启动
      • 3.1.4 执行MariaDB 安全配置脚本
      • 3.1.5 登录数据库并验证
    • 3.2 安装RabbitMQ(消息队列)
      • 3.2.1 RabbitMQ的相关配置
      • 3.2.2 访问验证
    • 3.3 安装memcached
      • 3.3.1 memcached概述
      • 3.3.2 配置memcached
    • 3.4 安装etcd
      • 3.4.1 etcd特点
      • 3.4.2 应用场景
      • 3.4.3 安装etcd的配置

1. OpenStack 环境部署

1.1 部署准备

  • 相关虚拟机资源
1、控制节点ct(controller)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:60G+300G(CEPH块存储)
双网卡:VM1-(局域网)192.168.70.10  NAT-192.168.140.50
操作系统:Centos 7.6(1810)-最小化安装
 
2、计算节点c1(computer01)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:60G+300G(CEPH块存储)
双网卡:VM1(局域网)-192.168.70.11  NAT-192.168.140.60
操作系统:Centos 7.6(1810)-最小化安装
 
3、计算节点c2(computer02)
CPU:双核双线程-CPU虚拟化开启
内存:8G 硬盘:60G+300G(CEPH块存储)
双网卡:VM1(局域网)-192.168.70.12  NAT-192.168.140.70
操作系统:Centos 7.6(1810)-最小化安装

在这里插入图片描述

  • 安装时网卡的选择
注意:在安装过程中设置,选择Install CentOS 7
按tab键,输入命令 net.ifnames=0 biosdevname=0 
创建时修改网卡为eth0

在这里插入图片描述

  • 软件选择最小化安装即可

在这里插入图片描述

  • 确认网卡为 eth0 和 eth1

在这里插入图片描述

注意:

  • 当多个用户同时提交创建虚拟机,只有一个节点压力大;
  • 有多个节点,控制节点接收请求,并将请求发送给计算节点,进行调度
    如存在多个计算节点,用户可以并行操作。

1.2 部署思路

  • 配置 操作系统+OpenStack运行环境
  • 配置 OpenStack平台基础服务(rabbitmq,mariadb,memcache,Apache)
    rabbitmq:各个组件之间传递信息,消息队列
    mariadb:数据库
    memcache:身份验证存储令牌,数据库

2.配置OpenStack 基础环境

2.1 配置网卡环境

  • 配置网卡信息并重启网卡

1)控制节点的网卡设置

vi /etc/sysconfig/network-scripts/ifcfg-eth0

在这里插入图片描述

vi /etc/sysconfig/network-scripts/ifcfg-eth1

在这里插入图片描述

systemctl restart network
ip addr

在这里插入图片描述

2)两个计算节点的设置如下

在这里插入图片描述
在这里插入图片描述

  • 查看网卡情况与网络联通性

2.2 所有节点上的基本操作

  • 注意:在同步运行时,需留意其他节点是否出现错误,以控制节点为例子

2.2.1 关闭防火墙、核心防护

[root@ct ~]#systemctl stop firewalld
[root@ct ~]#setenforce 0
[root@ct ~]#systemctl disable firewalld
[root@ct ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2.2.2 添加主机名映射

[root@ct ~]#vi /etc/hosts
...//添加以下映射
192.168.70.10  ct
192.168.70.11  c1
192.168.70.12  c2

2.2.3 免交互的配置

  • 生成密钥对,并发送给其他节点(三台设备同步进行)
[root@ct ~]# ssh-keygen -t rsa		//出现提示信息,按回车即可
[root@ct ~]# ssh-copy-id ct
[root@ct ~]# ssh-copy-id c1
[root@ct ~]# ssh-copy-id c2

在这里插入图片描述

  • 控制节点上,验证免交互是否配置完成
[root@ct ~]# ssh root@c1
Last login: Fri Jan 29 18:39:25 2021 from 192.168.70.1
[root@c1 ~]# exit
登出
Connection to c1 closed.
[root@ct ~]# ssh root@c2
Last login: Thu Jan 28 23:49:05 2021 from 192.168.70.1
[root@c2 ~]# exit
登出
Connection to c2 closed.

在这里插入图片描述

  • 计算节点上验证
    在这里插入图片描述
    在这里插入图片描述

2.2.4 安装基础环境依赖包

  • 也是面向所有设备进行安装
[root@controller ~]# yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre  pcre-devel expat-devel cmake  bzip2 

##net-tools: 可以使用ifconfig命令
##bash-completion: 表示自动补全
##pcre和pcre-devel:  表示支持正则和devel库
##expat-devel: 表示Apache依赖包,C语言开发,解析XML文档的开发库

[root@controller ~]# yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils

//centos-release-openstack-train:保证安装更新openstack版本为最新版本t版

##python-openstackclient:openstack的python客户端
##因为openstack中的API大多数是python编写的,并且连接数据库,也需要python
##openstack-selinux:openstack核心安全防护
##openstack-utils:openstack其它util工具

注意:以上安装均需安装两次以上,避免漏装

2.3 设置时间同步

2.3.1 控制节点上的配置

  • 控制节点上安装同步软件
[root@ct ~]# yum -y install chrony
  • 在控制节点上设置为同步源
[root@ct ~]# vi /etc/chrony.conf 		//默认指向centos时间同步服务器
...//添加修改
#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 ntp.aliyun.com iburst   //设置为时间同步源

allow 192.168.70.0/24         //第26行下,添加为192.168.70网段提供时间同步
  • 重启服务,更新时间同步源
[root@ct ~]# systemctl restart chronyd 	 //重启服务
[root@ct ~]# systemctl enable chronyd    //设置开机自启动
[root@ct ~]# chronyc sources             //更新时间同步源
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* 203.107.6.88                  2   6    17    37   +336us[+1188us] +/-   25ms
  • 注意:iburst可以直接同步一个大的时间跨度

2.3.2 计算节点上的配置

  • 计算节点上的配置几乎一样,这里以c1节点为例
安装软件
[root@c1 ~]# yum -y install chrony

修改配置文件
[root@c2 ~]# vi /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 ct iburst		//注释在线时间源,并添加ct为时间同步源

重启服务
[root@c1 ~]# systemctl restart chronyd
[root@c1 ~]# systemctl enable chronyd

时间同步
[root@c1 ~]# chronyc sources
210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^* ct                            3   6     7     2  +1030ns[+67838s] +/-   25ms
  • 确认计算节点c2是否配置完成
    在这里插入图片描述

2.4 设置任务计划

  • 面向所有节点
[root@ct ~]# which chronyc
/usr/bin/chronyc
[root@ct ~]# crontab -e
*/30  *  *  *  *  /usr/bin/chronyc sources >> /var/log/chronyc.log

注意:时间间隔设置不要太小,尽量拉长,因为频次太快,导致日志量越来越大,存储空间受影响

3. OpenStack系统环境配置

3.1 安装,配置MariaDB

3.1.1 安装软件

[root@controller ~]# yum -y install mariadb mariadb-server python2-PyMySQL

//此包用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;且此包只安装在控制端

[root@controller ~]# yum -y install libibverbs  //安装支持底层库文件

3.1.2 添加MySQL子配置文件

[root@ct ~]# vi /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address=192.168.70.10           //控制节点局域网地址
default-storage-engine=innodb        //默认存储引擎
innodb_file_per_table=on             //每张表独立表空间文件
max_connections=4096                 //最大连接数
collation-server=utf8_general_ci      //字符集
character-set-server=utf8
  • 扩展
mysql 5.6(大版本)和mysql 5.7(小版本)区别:
大版本更新内容更为复杂
小版本更多是修复bug,打补丁
mysql 5.7把mysql 5.6 收购

在读写分离操作时 5.6与5.7,对应的默认库文件是 test mysql

客户端无法远程连接到数据库,由于5.7把 5.6 收购,故在5.7中进行调整:
底层库文件 test mysql 库文件
表空间(类似名称空间)
名称文件:是一种相互独立的隔离环境

3.1.3 开启服务并设置开机自启动

[root@ct ~]# systemctl start mariadb
[root@ct ~]# systemctl enable mariadb

3.1.4 执行MariaDB 安全配置脚本

[root@controller ~]# mysql_secure_installation

Enter current password for root (enter for none):     //当前密码,没有回车

Set root password? [Y/n] y                   //是否设置密码,设置密码为 abc123
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

Remove anonymous users? [Y/n] y       //是否移除匿名账户,移除
 ... skipping.
 
Disallow root login remotely? [Y/n] n     //不允许root账户远程登录

Remove test database and access to it? [Y/n] y     //是否移除test数据库,空数据库
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reload privilege tables now? [Y/n] y         //是否重置权限的表,重置
 ... Success!

3.1.5 登录数据库并验证

[root@ct ~]# mysql -uroot -pabc123		//登录数据库

在这里插入图片描述

3.2 安装RabbitMQ(消息队列)

  • 所有创建虚拟机的指令,控制端都会发送到rabbitmq,node节点监听rabbitmq

3.2.1 RabbitMQ的相关配置

(1)安装软件

[root@ct ~]# yum -y install rabbitmq-server

(2)启动RabbitMQ服务,并设置其开机启动

[root@ct ~]# systemctl enable rabbitmq-server
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
[root@ct ~]# systemctl start rabbitmq-server

(3)创建消息队列用户,用于controler和node节点连接rabbitmq的认证

[root@ct ~]# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack"

(4)配置openstack用户的操作权限(正则,配置读写权限)

[root@ct ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/"

为什么需要配置读写权限:
Nova与Keystone进行通讯
1.rabbidb,把nova请求读取写入到本地内部
2.Nova把请求相关写入到Rabbitmq的内部
3.把消息传递过程中,也会进行读写操作
故授予独立的用户身份,读写权限

(5)查询端口

[root@ct ~]# netstat -anptu | grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      16125/beam.smp      
tcp6       0      0 :::5672                 :::*                    LISTEN      16125/beam.smp

//5672是Rabbitmq默认端口,25672是Rabbit的测试工具CLI的端口

在这里插入图片描述
(6)查看rabbitmq插件列表

[root@ct ~]# rabbitmq-plugins list

(7)开启rabbitmq的web管理界面的插件,端口为15672

[root@ct ~]# rabbitmq-plugins enable rabbitmq_management
[root@ct ~]# netstat -anptu | grep 5672
tcp        0      0 0.0.0.0:25672           0.0.0.0:*               LISTEN      16125/beam.smp      
tcp        0      0 0.0.0.0:15672           0.0.0.0:*               LISTEN      16125/beam.smp      
tcp        0      0 192.168.70.10:37068     192.168.70.10:25672     TIME_WAIT   -                   
tcp6       0      0 :::5672                 :::*                    LISTEN      16125/beam.smp

3.2.2 访问验证

  • 在浏览器上访问
    http://192.168.70.10:15672
    默认账号和密码都为guest
    在这里插入图片描述
    在这里插入图片描述

3.3 安装memcached

3.3.1 memcached概述

作用:

  • 安装memcached是用于存储session信息;服务身份验证机制使用Memcached来缓存令牌 在登录openstack的dashboard时,会产生一些session信息,这些session信息会存放到memcached中

memcached介绍:

1.Memcached是一个自由开源的, 高性能,分布式内存对象缓存系统。

2.Memcached是以LiveJourmal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为
mixi、hatena、 Facebook. Vox、 LiveJournal等众多服务中提高Web应用扩展性的重要因素

3.Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、
API调用或者是页面渲染的结果

4.Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容
大部分流行的开发语言。

本质上,它是一个简洁的key-value存储系统。
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
并且在BAT里,redis已经逐渐取代了memcached,成为分布式场景广泛使用的缓存方案

3.3.2 配置memcached

  • 安装软件
[root@ct ~]# yum install -y memcached python-memcached
//python-*模块在OpenStack中起到连接数据库的作用
  • 修改memcached配置文件
[root@ct ~]# vi /etc/sysconfig/memcached
PORT="11211"      //默认端口号
USER="memcached"  //默认账户名
MAXCONN="1024"    //最大连接数
CACHESIZE="64"    //缓存大小
OPTIONS="-l 127.0.0.1,::1,ct"		//修改,添加主机名ct
  • 重启服务,查看端口
[root@ct ~]# vi /etc/sysconfig/memcached
[root@ct ~]# systemctl enable memcached
Created symlink from /etc/systemd/system/multi-user.target.wants/memcached.service to /usr/lib/systemd/system/memcached.service.
[root@ct ~]# systemctl start memcached
[root@ct ~]# netstat -anptu | grep 11211
tcp        0      0 192.168.70.10:11211     0.0.0.0:*               LISTEN      17659/memcached     
tcp        0      0 127.0.0.1:11211         0.0.0.0:*               LISTEN      17659/memcached     
tcp6       0      0 ::1:11211               :::*                    LISTEN      17659/memcached

在这里插入图片描述

3.4 安装etcd

3.4.1 etcd特点

简单: 基于HTTP+JSON的API让你可以用CURL命令就可以轻松使用。
安全: 可以选择SSL客户认证机制。
快速: 每个实例每秒支持一千次写操作。
可信: 使用Ralf算法充分实现了分布式。

3.4.2 应用场景

  • 服务发现
  • 消息发布和订阅
  • 负载均衡
  • 分布式通知与协调
  • 分布式锁
  • 分布式队列
  • 集群监控与Leader竞选

扩展:

为什么使用etcd而不用Zookeeper?

相比较之下,Zookeeper有如下缺点:
1.复杂。 Zookeeper的部署维护复杂,管理员必须掌握一系列的知识和技能;而Paxos强一致性算法也是素来以复杂难懂
而闻名于世;另外,Zookeeper的使用也比较复杂,需要安装客户端,官方只提供Java和C的两种语言的接口。

2.Java编写。这里不是对Java有偏见,而是Java本身就偏向重型应用,它会引入大量的依赖。而运维人员则普遍希望机器
集群能尽可能的简单,维护起来也不容易出错

3.发展缓慢。 Apache基金会项目特有的“Apache Way”在开源界也饱受争议,其中一大原因就是由于基金会庞大的结构
和松散的管理导致项目发展缓慢。

etcd作为一个后起之秀,其优点也很明显:
1.简单。 使用Go编写部署简单;使用HTTP作为接口使用简单;使用Raft算法保证强一致性让用户易于理解。

2.数据持久化。 etcd默认数据一更新就进行持久化。

3.安全。 etcd支持SSL客户端安全认证。

3.4.3 安装etcd的配置

  • 安装软件
[root@ct ~]# yum -y install etcd
  • 修改etcd配置文件
[root@ct ~]# vi /etc/etcd/etcd.conf
...//修改以下配置
5	ETCD_LISTEN_PEER_URLS="http://192.168.100.11:2380"
6	ETCD_LISTEN_CLIENT_URLS="http://192.168.100.11:2379"
9	ETCD_NAME="controller"
20	ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.11:2380" 
21	ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.11:2379" 
26	ETCD_INITIAL_CLUSTER="controller=http://192.168.100.11:2380"
27	ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
28	ETCD_INITIAL_CLUSTER_STATE="new" 
  • 启动服务并设置开机自启
[root@ct ~]# systemctl enable etcd
Created symlink from /etc/systemd/system/multi-user.target.wants/etcd.service to /usr/lib/systemd/system/etcd.service.
[root@ct ~]# systemctl start etcd
[root@ct ~]# systemctl status etcd

在这里插入图片描述

  • 检测端口
[root@ct ~]# netstat -anpt | grep 2379

在这里插入图片描述

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

手把手带你部署OpenStack环境 的相关文章

  • 先电Openstack云平台搭建【超级详细】【附带镜像】

    前言 大二上学期学习Openstack 苦于百度与CSDN上没有对应版本的教程 学的十分艰难 在此 将我的Openstack云平台搭建过程写出 留给新手学习 准备工作 VMware Workstation Pro 虚拟机 我使用版本 15
  • Openstack云平台脚本部署之Aodh告警服务配置(十三)

    目录 一 简介 二 部署脚本 三 参考文档 四 源码 五 系列文章 一 简介 Openstack告警服务Aodh负责当收集的数据度量或事件超过所设定的阈值时 会出发报警 从Liberty 版本后从Ceilometer 中拆分出来 独立为单独
  • 私有云平台管理

    更改主机名 controller hostnamectl set hostname controller compute hostnamectl set hostname compute 更改hosts文件 vi etc hosts 插入以
  • 云计算实验——OpenStack的安装与使用

    实验目的 1 掌握Linux虚拟机的安装方法 2 掌握OpenStack的单机安装方法 3 熟悉OpenStack的核心组件 实验环境 Windows10 20H2 VirtualBox 6 1 18 r142142 Ubuntu 18 0
  • OpenStack的部署(六)------Neutron项目

    目录 一 CT控制节点 1 创建数据库neutron 并进行授权 2 创建用户 服务并赋权 3 注册API 4 安装提供者网络 桥接 并修改相关配置文件 5 重启相关服务 二 C1 C2计算节点操作 1 部署neutron服务 2 配置Li
  • ceph安装记录总结

    1 环境准备 准备三台虚机 每个虚机配合三块数据盘 2块网卡 一个网卡设置外网 一个网卡设置成内网 配置文件设置 根据实际情况配置每一个节点 编辑 letc sysconfig network scripts ifcfg ethO 文件 外
  • openstack排错

    创建云主机失败 neutron agent list 计算节点服务没起来 实际是起来的 观察时间有问题 同步时间 root compute ntpdate controller 再看控制节点 起来了 也能创建云主机了
  • 2000+Docker镜像,Kolla是如何管理的

    根据 DockerHub 上的数据 整个 Kolla 项目管理的 镜像有 2000 多个 这么多的镜像 是怎么定义 又是如何构建的呢 简介 我们一直在说的 Kolla 通常情况下泛指 包括了 Kolla 和 Kolla Ansible 两个
  • openstack实战之使用sysprep工具封装windows7镜像

    openstack实战之使用sysprep工具封装windows7镜像 在openstack云平台环境下 使用sysprep封装windows7系统主要目的是清理虚拟机的SID 避免使用同一windows7镜像克隆出的虚拟机出现相同的SID
  • openstack镜像的管理与使用

    1 创建项目和用户 1 1 创建项目和用户 用SSH工具连接控制节点 这里是10 10 83 3 使用admin用户权限 执行如下命令 root admin openrc 1 2创建一个test项目 openstack project cr
  • Python运维开发:基于openstack RestfulAPI上传镜像和创建云主机

    基础环境 python 脚本文件头建议加入 encoding utf 8 避免编码错误 测试脚本代码用python3命令执行与测试 在linux系统中安装Python3 并安装request等依赖包 配置 有一台搭建好的open stack
  • openstack开发实践(一):devstack搭建all-in-one的openstack开发环境

    Devstack简介 devstack是面向开发者的一个openstack部署工具 用户可以指定不同的版本分支进行安装 devstack借助于Shell脚本实现openstack自动化部署 devstack源码中的stack sh即为安装脚
  • IPVS direct routing on top of openstack (by quqi99)

    作者 张华 发表于 2023 07 12 版权声明 可以任意转载 转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 IPVS是Linux内核态的一个L4 LB KTCPVS Kernel TCP Virtual Server则
  • CentOS7安装OpenStack(Liberty)

    1 安装yum源 yum install https buildlogs centos org centos 7 cloud x86 64 openstack liberty centos release openstack liberty
  • OpenStack--创建虚拟机

    启动虚拟机之前需要先做一些前期准备 比如网络和 IP 地址分配 虚拟机 类型创建等等 具体如下 1 网络规划及 IP 划分 官网安装文档 https docs openstack org ocata zh CN install guide
  • openstack平台搭建笔记(容器云)

    openstack平台搭建笔记 容器云 一 根据要求准备好配置环境 节点IP 角色 备注 192 168 100 30 Master Kubernetes 集群 master 节点 Harbor 仓库节点 192 168 100 31 Wo
  • 如何设置docker容器的ip?

    有人可以告诉我如何将容器的 ip 设置为特定的 ip 吗 我不想将网桥设置为 IP 集 我在网络中得到的所有结果都是将 ips 范围设置为 docker 桥 您可以使用主机的现有 IP 如下所示 docker run p 127 0 0 1
  • OpenStack 中的通知

    我感兴趣的是如何向其他应用程序通知 openstack 中的事件 例如 我不想在我的应用程序中知道 nova 中的实例何时被挂起或恢复 是否有任何网络钩子或类似的东西我可以在哪里获得该信息 我正在查看有关通知的官方文档 但我无法从中得出任何
  • 创建新的 docker-machine 实例始终无法使用 openstack 驱动程序验证证书

    每次我尝试通过创建一个新实例docker machine在开放堆栈上 我总是在验证证书时收到此错误 我必须在创建实例后立即重新生成证书才能使用这些实例 docker machine create driver openstack opens
  • 安装 openstack 时发生错误:./stack.sh:137:die

    我尝试使用以下命令通过 devstack 安装 openstack git 克隆https github com openstack dev devstack git https github com openstack dev devst

随机推荐

  • 关于安卓唯一标识的汇总及最佳做法

    前言 识别用户唯一性 xff0c 是每个做应用所遇到的问题之一 通常我们会希望有一个唯一的字符 xff0c 去识别关联我们的用户 标识符特性 Android 操作系统提供了多种具有不同行为特性的 ID 我们应该使用何种 ID 取决于以下特性
  • java字符串数组排序_在Java中对字符串数组进行排序

    允许用户使用字符串数组进行演奏 他们可以将字符串添加到数组中 xff0c 从数组中删除字符串 xff0c 在数组中搜索字符串 xff0c 最终他们将能够对数组进行排序 排序使我很困惑 我尝试了几种不同的方法 第一种方法是将数组转换为Arra
  • Arch Linux 新手安装教程

    前言 安装环境 虚拟机软件 xff1a vmware workstations pro 15 5 1安装的arch linux版本 xff1a arch linux 2020 02 01 本文的目的旨在降低新手安装arch linux的难度
  • vm虚拟机摄像头调试_双机调试

    文章来源 xff1a 华盟论坛 条件 xff1a 已经安装好Visual Studio 2015 VM Win7 x64 wdk10 为什么要搭建双机调试 xff0c 普通的应用程序可以直接在本机进行调试 xff1b 但内核程序出错 xff
  • django无法生成迁移文件_Django初始化项目环境精讲

    上一节中 xff0c 我们完成了对 settings py 文件的基本配置 xff0c 本节我们还需要对新建的项目进一步的操作 xff0c 从而完成项目的初始化工作 在 settings py配置文件详解 一文中 xff0c 我们介绍了 I
  • mysql多少g_mysql表能有多大?

    MySQL 3 22 had a 4GB 4 gigabyte limit on table size With the MyISAM storage engine in MySQL 3 23 the maximum table size
  • gentoo 上安装 xrdp (1)

    第一次在 ubuntu 上安装 xrdp 用的是 https c nergy be blog p 61 14888 后来重装了ubuntu 就对照上面脚本和 https github com neutrinolabs xrdp wiki B
  • mysql怎么进行组内排序_MySQL 组内排序

    在开发中经常遇到这样一类需求 xff1a 取每种类型排名前几的数据 在此我简称它为组内排序 以下 xff0c 我借鉴了别人的方法并添加自己的想法 xff0c 就这类问题做一下理解 xff1a 数据准备 CREATE TABLE 96 tes
  • C/C++ 找出输入的10个数的最大值和最小值

    C C 43 43 找出输入的10个数的最大值和最小值 此代码最大特色是不用数组 include span class token operator lt span iostream span class token operator gt
  • python输入abcd输出对应的1234_python学习日记——练习题整理及解答

    1 执行python脚本的两种方式 2 简述位 字节的关系 1字节 61 8位 3 简述ASCII Unicode utf 8 gbk的关系 4 写出 李杰 分别用utf 8和gbk编码所占位数 utf8中文3字节 xff1b gbk中文4
  • python爬虫爬取代理ip构建代理ip池,并自动测试是否可用

    python多线程非阻塞爬取代理ip并自动测试是否可用 推荐一个网站西刺代理 xff0c 其中每天都会更新一些高匿代理ip供使用 https www xicidaili com 一页有99个ip xff0c 但是经我测试 xff0c 一般只
  • tomcat常用的配置

    这里我们使用tomcat版本 xff1a apache tomcat 7 0 77 windows x64 zip 为例 xff1a 下载链接地址为 xff1a https archive apache org dist tomcat to
  • c语言60秒倒计时编程,单片机60秒倒计时protues仿真及程序源码

    include define uint unsigned int define uchar unsigned char uchar code table 61 0xc0 0xf9 0xa4 0xb0 0x99 p 0x92 0x82 0xf
  • 怎么查看linux下mysql位置,linux服务器上怎么查看mysql的my.cnf的位置

    Debug5出品 xff0c 零基础 xff0c 小白高效入手python后端视频教程 xff1a xfeff linux服务器上 xff0c 运行着mysql xff0c 这时候想看my cnf的位置 xff0c 怎么来看呢 xff1f
  • TCP连接

    TCP连接管理 一 TCP三次握手二 TCP四次挥手三 为什么建立连接是三次握手 xff0c 释放连接是四次挥手 一 TCP三次握手 第一步 xff1a 客户端向服务器发送 连接请求报文 SYN 61 1 第二步 xff1a 服务器收到 连
  • ios上传音频文件到服务器,怎么把第三方音频文件添加到Apple Music

    当然是可以的啦 xff0c 目前呢 xff0c Apple Music在中国大陆提供上传自己的音乐到 iCloud音乐资料库 xff0c 不占用iCloud存储空间哦 xff5e 具体方法很简单 xff0c 最简单的是在Mac或者Windo
  • python3 实现公众号自动发消息

    python3 实现公众号自动发消息 前言微信公众号测试号申请申请测试公众号测试号信息测试号二维码模板消息接口新增流程 python 脚本配置access token pysend message pyinformation message
  • sublime的注册方法 非常好用

    一 前言 Sublime是一款很好用的编辑器 xff0c 虽然是免费使用 xff0c 但是经常会弹出吆喝着让你购买 xff08 purchase xff09 的弹窗 xff0c 对一名优秀的强迫症来说看久了还是很烦人的 而且现在网上很多注册
  • python脚本gui_为Python脚本创建GUI

    丹尼尔 我也建议你试试 如果您决定使用wxPython xff0c 这里有一个关于如何使选项卡工作的概要 它需要你填写一些空白 xff0c 但是一旦你掌握了wxPython的基本知识 xff0c 这将向你展示如何用标签构建一个 笔记本 基本
  • 手把手带你部署OpenStack环境

    这里写目录标题 1 OpenStack 环境部署1 1 部署准备1 2 部署思路 2 配置OpenStack 基础环境2 1 配置网卡环境2 2 所有节点上的基本操作2 2 1 关闭防火墙 核心防护2 2 2 添加主机名映射2 2 3 免交