安装openstack时碰到的错误

2023-05-16

文章目录

  • 目录
    • 安装keystone identity时遇到的错误信息
    • glance验证操作错误信息
    • 计算节点安装openstack-nova-compute找不到包
    • openstack-nova-compute安装后服务起不来
    • openstack-nova-compute安装后验证没有输出
    • dashboard安装后打不开
    • OpenStack云平台涉及到的相关服务进程的日志记录的默认存放地址
    • 总结

目录

安装keystone identity时遇到的错误信息

[gsl@controller ~]$ openstack service create  --name keystone --description "OpenStack Identity" identity
An unexpected error prevented the server from fulfilling your request. (HTTP 500) (Request-ID: req-6f8c5f03-4ee1-494e-9cd1-3d86db0c5df5)

日志信息

[root@controller ~]#  tail -f /var/log/keystone/keystone.log

2017-12-05 10:43:23.791 1176 ERROR keystone.common.wsgi ProgrammingError: (pymysql.err.ProgrammingError) (1146, u"Table 'keystone.service' doesn't exist") [SQL: u'INSERT INTO service (id, type, enabled, extra) VALUES (%(id)s, %(type)s, %(enabled)s, %(extra)s)'] [parameters: {'type': u'identity', 'enabled': 1, 'id': '8b12e86660644af092018fb301b3d3cc', 'extra': '{"description": "OpenStack Identity", "name": "keystone"}'}]
2017-12-05 10:43:23.791 1176 ERROR keystone.common.wsgi

处理

[root@controller ~]#  keystone-manage db_sync

再执行

[gsl@controller ~]$ openstack service create  --name keystone --description "OpenStack Identity" identity
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Identity               |
| enabled     | True                             |
| id          | 0a726b6de76547d7be6ea7716d6fdb6d |
| name        | keystone                         |
| type        | identity                         |
+-------------+----------------------------------+

glance验证操作错误信息

[gsl@controller ~]$ openstack image create "cirros" \
>   --file cirros-0.3.5-x86_64-disk.img \
>   --disk-format qcow2 --container-format bare \
>   --public
[root@controller glance]# tail api.log
2017-12-05 17:26:34.100 2139 INFO eventlet.wsgi.server [req-f13a0aa2-0814-4457-b173-391da738451f 73b048955ccf40f0b28dbd5f388b0901 a3f9b68bb68042abbe1b53131c31fe74 - 2806de7ce26d448d809b82cda6afdfac 2806de7ce26d448d809b82cda6afdfac] 10.0.0.11 - - [05/Dec/2017 17:26:34] "GET /v2/schemas/image HTTP/1.1" 200 4357 0.675650
2017-12-05 17:26:34.318 2139 WARNING oslo_db.sqlalchemy.engines [req-53e3d296-72f6-4665-94aa-27940689ccd6 73b048955ccf40f0b28dbd5f388b0901 a3f9b68bb68042abbe1b53131c31fe74 - 2806de7ce26d448d809b82cda6afdfac 2806de7ce26d448d809b82cda6afdfac] URL mysql://glance:***@localhost/glance does not contain a '+drivername' portion, and will make use of a default driver.  A full dbname+drivername:// protocol is recommended. For MySQL, it is strongly recommended that mysql+pymysql:// be specified for maximum service compatibility
2017-12-05 17:26:34.335 2139 ERROR glance.common.wsgi [req-53e3d296-72f6-4665-94aa-27940689ccd6 73b048955ccf40f0b28dbd5f388b0901 a3f9b68bb68042abbe1b53131c31fe74 - 2806de7ce26d448d809b82cda6afdfac 2806de7ce26d448d809b82cda6afdfac] Caught error: (_mysql_exceptions.OperationalError) (1045, "Access denied for user 'glance'@'localhost' (using password: YES)"): OperationalError: (_mysql_exceptions.OperationalError) (1045, "Access denied for user 'glance'@'localhost' (using password: YES)")


数据库拒绝访问,查看配置,编辑文件 /etc/glance/glance-api.conf

[database]
...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance

这一项漏加,添加后,重新执行

# su -s /bin/sh -c "glance-manage db_sync" glance
/usr/lib/python2.7/site-packages/oslo_db/sqlalchemy/enginefacade.py:1328: OsloDBDeprecationWarning: EngineFacade is deprecated; please use oslo_db.sqlalchemy.enginefacade
  expire_on_commit=expire_on_commit, _conf=conf)
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.runtime.migration] Running upgrade  -> liberty, liberty initial
INFO  [alembic.runtime.migration] Running upgrade liberty -> mitaka01, add index on created_at and updated_at columns of 'images' table
INFO  [alembic.runtime.migration] Running upgrade mitaka01 -> mitaka02, update metadef os_nova_server
INFO  [alembic.runtime.migration] Running upgrade mitaka02 -> ocata01, add visibility to and remove is_public from images
INFO  [alembic.runtime.migration] Running upgrade ocata01 -> pike01, drop glare artifacts tables
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
Upgraded database to: pike01, current revision(s): pike01

重新验证操作

[gsl@controller ~]$ openstack image create "cirros" \
>   --file cirros-0.3.5-x86_64-disk.img \
>   --disk-format qcow2 --container-format bare \
>   --public
+------------------+------------------------------------------------------+
| Field            | Value                                                |
+------------------+------------------------------------------------------+
| checksum         | f8ab98ff5e73ebab884d80c9dc9c7290                     |
| container_format | bare                                                 |
| created_at       | 2017-12-05T10:58:58Z                                 |
| disk_format      | qcow2                                                |
| file             | /v2/images/9df2e55e-b7e8-46b0-89f6-01a97deed3a5/file |
| id               | 9df2e55e-b7e8-46b0-89f6-01a97deed3a5                 |
| min_disk         | 0                                                    |
| min_ram          | 0                                                    |
| name             | cirros                                               |
| owner            | a3f9b68bb68042abbe1b53131c31fe74                     |
| protected        | False                                                |
| schema           | /v2/schemas/image                                    |
| size             | 13267968                                             |
| status           | active                                               |
| tags             |                                                      |
| updated_at       | 2017-12-05T10:58:59Z                                 |
| virtual_size     | None                                                 |
| visibility       | public                                               |
+------------------+------------------------------------------------------+

计算节点安装openstack-nova-compute找不到包

按照官方文档的要求进行的安装,出现这个问题

[root@compute1 yum.repos.d]# yum install openstack-nova-compute
Loaded plugins: fastestmirror, langpacks
Repository base is listed more than once in the configuration
Repository updates is listed more than once in the configuration
Repository extras is listed more than once in the configuration
Repository centosplus is listed more than once in the configuration
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * extras: mirrors.aliyun.com
 * updates: mirrors.aliyun.com
No package openstack-nova-compute available.
Error: Nothing to do

解决办法:
先安装centos-release-openstack-pike,这个包应该是先决条件,其他节点安装也遇到同样问题,官方文档没有看到,后安装openstack-nova-compute

yum install centos-release-openstack-pike.x86_64
yum update
yum install openstack-nova-compute

openstack-nova-compute安装后服务起不来

日志信息

cat /var/log/nova/nova-compute.log
2017-12-06 19:11:12.267 32658 ERROR nova     (class_id, method_id), ConnectionError)
2017-12-06 19:11:12.267 32658 ERROR nova AccessRefused: (0, 0): (403) ACCESS_REFUSED - Login was refused using authentication mechanism AMQPLAIN. For details see the broker logfile.

broker logfile显示openstack用户没有认证信息,

[root@controller ~]cat /var/log/nova/nova-api.log

重新添加认证信息

[root@controller ~]# rabbitmqctl list_user_permissions
Error: list_user_permissions expects a username argument, but none provided.
[root@controller ~]# rabbitmqctl list_user_permissions openstack
Listing permissions for user "openstack" ...
Error: {error,{no_such_user,<<"openstack">>}}
[root@controller ~]# rabbitmqctl add_user openstack *****
Creating user "openstack" ...
[root@controller ~]# rabbitmqctl list_user_permissions openstack
Listing permissions for user "openstack" ...
[root@controller ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
[root@controller ~]# rabbitmqctl list_user_permissions openstack
Listing permissions for user "openstack" ...
/       .*      .*      .*

查看服务,正常启动

[root@compute1 ~]# systemctl status openstack-nova-compute.service
● openstack-nova-compute.service - OpenStack Nova Compute Server
   Loaded: loaded (/usr/lib/systemd/system/openstack-nova-compute.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2017-12-07 08:04:19 CST; 18min ago
 Main PID: 1069 (nova-compute)
   CGroup: /system.slice/openstack-nova-compute.service
           └─1069 /usr/bin/python2 /usr/bin/nova-compute

Dec 07 08:04:12 compute1.localdomain systemd[1]: Starting OpenStack Nova Compute Server...
Dec 07 08:04:19 compute1.localdomain nova-compute[1069]: Option "rpc_backend" from group "DEFAULT" is deprecate...re.
Dec 07 08:04:19 compute1.localdomain systemd[1]: Started OpenStack Nova Compute Server.
Hint: Some lines were ellipsized, use -l to show in full.
[root@compute1 ~]#

openstack-nova-compute安装后验证没有输出

错误信息

2017-12-06 19:29:30.155 6430 ERROR nova.compute.api [req-1e893fdc-97f1-45f1-a332-1083aeedd46a 73b048955ccf40f0b28dbd5f388b0901 a3f9b68bb68042abbe1b53131c31fe74 - 2806de7ce26d448d809b82cda6afdfac 2806de7ce26d448d809b82cda6afdfac] No cells are configured, unable to continue

没有cell

] No authentication information found for placement API. Placement is optional in Newton, but required in Ocata. Please enable the placement service before upgrading.

数据库查看

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| glance             |
| information_schema |
| keystone           |
| mysql              |
| nova               |
| nova_api           |
| performance_schema |
| test               |
+--------------------+
8 rows in set (0.00 sec)
MariaDB [(none)]> CREATE DATABASE nova_cell0;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| glance             |
| information_schema |
| keystone           |
| mysql              |
| nova               |
| nova_api           |
| nova_cell0         |
| performance_schema |
| test               |
+--------------------+

没有placement

[gsl@controller ~]$ openstack user create --domain default --password-prompt placement
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | 2806de7ce26d448d809b82cda6afdfac |
| enabled             | True                             |
| id                  | 6b090de2030049a885263321bb5f8ce6 |
| name                | placement                        |
| options             | {}                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[gsl@controller ~]$ openstack role add --project service --user placement admin
[gsl@controller ~]$ openstack service create --name placement --description "Placement API" placement
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Placement API                    |
| enabled     | True                             |
| id          | cee7287d012a4c8ebfdd9dff1bd06b20 |
| name        | placement                        |
| type        | placement                        |
+-------------+----------------------------------+

重新验证

[gsl@controller ~]$ openstack compute service list
+----+------------------+------------------------+----------+---------+-------+----------------------------+
| ID | Binary           | Host                   | Zone     | Status  | State | Updated At                 |
+----+------------------+------------------------+----------+---------+-------+----------------------------+
|  1 | nova-consoleauth | controller.localdomain | internal | enabled | up    | 2017-12-07T02:29:15.000000 |
|  2 | nova-conductor   | controller.localdomain | internal | enabled | up    | 2017-12-07T02:29:15.000000 |
|  4 | nova-scheduler   | controller.localdomain | internal | enabled | up    | 2017-12-07T02:29:10.000000 |
|  7 | nova-compute     | compute1.localdomain   | nova     | enabled | up    | 2017-12-07T02:29:10.000000 |
+----+------------------+------------------------+----------+---------+-------+----------------------------+

[root@controller ~]# su -s /bin/sh -c "nova-manage db sync" nova
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `block_device_mapping_instance_uuid_virtual_name_device_name_idx`. This is deprecated and will be disallowed in a future release.')
  result = self._query(query)
/usr/lib/python2.7/site-packages/pymysql/cursors.py:166: Warning: (1831, u'Duplicate index `uniq_instances0uuid`. This is deprecated and will be disallowed in a future release.')
  result = self._query(query)
[root@controller ~]# nova-manage cell_v2 list_cells
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+
|  Name |                 UUID                 |           Transport URL            |               Database Connection               |
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+
| cell0 | 00000000-0000-0000-0000-000000000000 |               none:/               | mysql+pymysql://nova:****@controller/nova_cell0 |
| cell1 | 0e936aa4-204d-494d-8cd9-b8915ff8f5b4 | rabbit://openstack:****@controller |    mysql+pymysql://nova:****@controller/nova    |
+-------+--------------------------------------+------------------------------------+-------------------------------------------------+

dashboard安装后打不开

解决办法:
编辑:/etc/httpd/conf.d/openstack-dashboard.conf
在WSGISocketPrefix run/wsgi下面加一行代码:
WSGIApplicationGroup %{GLOBAL}
保存,重启httpd服务。

OpenStack云平台涉及到的相关服务进程的日志记录的默认存放地址

服务进程路径或文件

nova 服务(nova-api, nova-scheduler, nova-objectstore,nova-network,nova- compute,nova-volume)/var/log/nova(每项服务有对应的日志文件,请对应日志文件的文件名进行日志观察)

glance服务(glance-api,glance-regisry)/var/log/glance(每项服务有对应的日志文件,请对应日志文件的文件名进行日志观察)

keystone服务 /var/log/keystone/keystone.log,/var/log/syslog

rabbitmq服务 /var/log/rabbitmq

mysql服务 /var/log/mysql

libvirt服务 /var/log/libvirt

swift服务 /var/log/syslog

memcached服务 /var/log/memcached.log

正常命令 keystone user-list
debug命令为:
keystone --debug user-list

总结

官方安装指导,变来变去,需要总结多个版本来发现问题。
修改配置一定要小心。

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

安装openstack时碰到的错误 的相关文章

  • Openstack常用命令

    目录 一 创建用户 二 创建删除模板和模板其他操作 三 创建更新删除镜像 四 创建网络 五 VPN的使用 六 创建容器swift模块 前言 在linux中使用openstakc命令前 需要source etc keystone admin
  • openstack装配置 Neutron( 控制节点

    在控制节点 controller 安装 Neutron 服务 同时配置支持 vxlan 1 登录数据库创建 neutron 数据库 MariaDB none gt CREATE DATABASE neutron default charac
  • OpenStack--部署块存储cinder

    通过 cinder 使用 lvm 卷提供后端存储 官方部署文档 https docs openstack org ocata zh CN install guide rdo cinder html 1 数据库准备 1 创建数据库并授权 ro
  • Pecemaker+Corosync+Haproxy高可用Openstack集群实战

    一 DRBD简介 DRBD的全称为 Distributed Replicated Block Device DRBD 分布式块设备复制 DRBD是由内核模块和相关脚本而构成 用以构建高可用性的集群 其实现方式是通过网络来镜像整个设备 它允许
  • 私有云平台管理

    更改主机名 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
  • kolla-ansible部署openstack+opendaylight

    1 环境准备 准备三台机器 分别作为OpenStack的controller和compute节点 OpenDayLight节点 另外把controller作为本次的部署节点 其中controller和compute节点各两张网卡 odl节点
  • openstack 安装并验证 Nova( 计算节点 + 控制节点)

    安装数据库 登录数据库创建 nova nova api nova cell0 数据库 root controller etcd mysql uroot pmaster Welcome to the MariaDB monitor Comma
  • OpenStack学习笔记(二)计算服务NOVA

    本篇记录OpenStack的计算服务NOVA一些内容 很多看不懂 汗 只捡一小部分记录 一 逻辑图 OpenStack 计算服务NOVA 是基础设施服务IAAS的主要部分 采用Python实现 1 因为认证 与OpenStack 身份认证k
  • openstack创建域、项目、用户、角色报错

    报错出现 An unexpected error prevented the server from fulfilling your request HTTP 500 1 创建项目service openstack project crea
  • OpenStack nova-compute 报TooOldComputeService版本过低问题

    项目场景 安装openstack的nova compute部分 问题描述 启动nova conductor时报错 查看nova conductor log 发现如下错误 Current Nova version does not suppo
  • Openstack CLI命令管理私有云主机实战(附OpenStack实验环境)

    1 Openstack CLI 命令行管理入门 查看nova云主机 nova list ERROR CommandError You must provide a username or user ID via os username os
  • openstack实战之使用sysprep工具封装windows7镜像

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

    1 创建项目 1 1 创建项目 需要确认集群环境是否初始化完毕 实验初始化需要几分钟时间 访问控制节点IP dashboard 如果正常弹出登录页面即初始化完毕 假设控制节点IP为172 20 6 22 则访问地址为 172 20 6 22
  • 用python画星空源代码

    from turtle import from random import random randint screen Screen width height 800 600 screen setup width height screen
  • openstack-nova-compute.service起不来

    1 启动服务 2 查看compute nova日志tail var log nova nova compute log 发现身份验证机制AMQPLAIN拒绝登录 3 关闭防火墙 root controller systemctl stop
  • 如何从外网访问MicroStack VM实例

    我已经安装了 MicroStack 并启动了一个 Cirros 实例 如中所述MicroStack 文档 一切都按预期进行 Cirros 实例位于10 20 20 202 22可以从安装了 MicroStack 的主机上获取 主机IP LA
  • 我可以在 Openstack Swift 中向现有对象追加或覆盖一些字节吗?

    我需要将一些字节附加到存储在 Openstack Swift 中的现有对象中 例如日志文件对象 并不断向其中附加新日志 这可能吗 此外 我可以将一些字节 指定偏移量和长度 更改 覆盖 到现有对象吗 我相信 ZeroVM zerovm org
  • 安装pbr时出错

    我想在运行 OSX 10 8 5 的计算机上安装 openstack 客户端 作为先决条件 我需要安装 pbr 所以 我做了以下事情 git clone git github com openstack dev pbr git cd pbr
  • 使用 python-boto 启动 Openstack 实例

    我正在尝试在 opensatck 设置上启动实例 并使用 python boto 配置多个网络 但我收到以下错误 EC2ResponseError EC2ResponseError 400 Bad Request

随机推荐

  • C++ share_ptr 循环引用问题浅析

    share ptr指针涉及到循环引用问题会因为share ptr指针对应的use count 无法清0 xff0c 导致内存泄露 xff0c 直接上例子 xff1a class S B class S A public shared ptr
  • 树莓派raspberry pi更换国内镜像

    有时候使用sudo apt get 和pip install 安装软件和一些库的时候下载速度简直是龟速如下图 xff1a xff0c 是因为在系统默认状态下 xff0c 安装软件会选择从国外的服务器上下载软件 默认地址是http raspb
  • 将SQL Server的任意记录转换为JSON格式(JQGRID) -- 支持SQL 2005

    从SQL 2008开始 xff0c SQL Sever已经支持JSON数据 xff0c SQL 2016已经对JSON数据的处理支持非常完善 对于SQL 2016以上版本的用户 xff0c 可以直接调用原生方法 xff0c 效率更高 因客户
  • gradle安装

    Gradle是一个主要用于Java项目的通用构建工具 它结合了Ant和Maven的最佳功能 与使用XML进行脚本编写的前辈不同 xff0c Gradle使用Groovy xff0c 这是一种动态的 xff0c 面向对象的Java平台编程语言
  • 树列表控件CTreeListCtrl类

    翻译来源 xff1a https www codeproject com Articles 2913 A Tree List Control 作者 xff1a TigerX 下载源文件 102 Kb 下载演示文件 54 6 Kb 介绍 这是
  • 2019xupt-acm校赛 题解(C.给你一个666)by出题组tongtong

    重现赛链接 2019 ACM ICPC Xi 39 an University of Posts amp Telecommunications School Contest 前面的话 有幸参与2019XUPT ACM校赛出题和裁判工作 过程
  • 【安装】在Windows下安装Debian(双系统)

    安装 一 前期准备二 Rufus制作启动盘三 修改BIOS四 以U盘启动安装Debian五 设置分区 一 前期准备 1 一个至少8G的U盘 2 U盘引导制作工具 我用的Rufus 链接 3 Debian的iso镜像 我用的清华镜像 点进链接
  • Swift 四种实现单例的方式

    单例模式 单例模式是设计模式中最简单的一种 xff0c 甚至有些模式大师都不称其为模式 xff0c 称其为一种实现技巧 xff0c 因为设计模式讲究对象之间的关系的抽象 xff0c 而单例模式只有自己一个对象 当你只需要一个实例的时候需要使
  • python之字符串切片为列表

    函数名说明A replace old new count 将字符串A里的old替换为new xff0c 替换次数为counta join A 将字符串序列A之间插入字符aA split sep xff0c count 将字符串A切片输出为列
  • 用python实现最简单简单的计算器

    直接上代码 xff1a 密码是123 过程 体验 收获及自我评价 xff0c 本人在活动的具体工作可以输入1000字 import os 让解释器停住 xff0c 引用os模块 print 34 欢迎使用计算程序 34 print 34 请
  • Android 一键分享功能

    之前在做项目时遇到这么个需求 xff0c 就是用户点击Menu或者一个按钮可以把文字分享到各大微博例如新浪微博 腾讯 人人 开心 校内等 现在我给大家演示一下 xff08 一 xff09 先建一个工程文件ShareDemo xff08 二
  • android listview单击事件

    今天我们来学习下listview 单击事件 xff0c 这在开发中是经常用的组件之一 1 新建一个项目 xff0c 名为ListViewDemo 2 布置布局文件main xml lt xml version 61 34 1 0 34 en
  • android 焦点事件

    今天介绍下android中的焦点事件 xff0c 之前在项目有用到过 这块不是很难 xff0c 大家跟着过一遍吧 xff0c 用到的时候直接把我下面这段代码拷贝过去就ok了 1 建一个工程 xff0c 名为TestFocus 2 在布局文件
  • android 绘图、自定义组件

    我们在开发当中很多时候都需要自定义组件 xff0c 通过自定义组件 xff0c 可以随心所欲定制酷炫的效果 下面将演示自定义绘图组件 我们要绘制一个红色的线条 1 建立工程文件 xff0c 名为TouchDemo 2 布局文件 lt xml
  • SVN常用命令详解

    命令的使用 1 检出 svn co http 路径 目录或文件的全路径 本地目录全路径 username 用户名 password 密码svn co svn 路径 目录或文件的全路径 本地目录全路径 username用户名 password
  • androidstudio 拆包时设置dex方法个数

    前言 Android应用程序 xff0c 最终发布成一个apk xff0c 安装到手机上 apk文件随便用一个解压缩文件打开 xff0c 可以看到里面有一个classes dex文件 xff0c 这就是之前工程中所有的代码 xff0c 以及
  • hash算法原理详解

    散列表 它是基于快速存取的角度设计的 xff0c 也是一种典型的 空间换时间 的做法 顾名思义 xff0c 该数据结构可以理解为一个线性表 xff0c 但是其中的元素不是紧密排列的 xff0c 而是可能存在空隙 散列表 xff08 Hash
  • Android Studio 打包时 Signature Version 选择 V1 V2 说明

    问题描述 v1和v2 Android 7 0中引入了APK Signature Scheme v2 xff0c v1是jar Signature来自JDK V1 xff1a 应该是通过ZIP条目进行验证 xff0c 这样APK 签署后可进行
  • Android 多Dex分包机制

    问题引入 随着项目工程越来越庞大 xff0c 代码的方法数不断增长到一定程度 xff0c 就出现Android 低版本系统应用无法安装的情况 那么这是哪里出错了 xff1f Android系统对安装包有哪些限制 xff1f 前一阵子 xff
  • 安装openstack时碰到的错误

    文章目录 目录安装keystone identity时遇到的错误信息glance验证操作错误信息计算节点安装openstack nova compute找不到包openstack nova compute安装后服务起不来openstack