openstack 官方文档安装

系统版本 centos7 (最小化安装即可)

2台机器 内存2g(控制节点建议可以给到4-6g,因为2g我试验起来感觉比较卡顿,dashboard感觉反应有些缓慢),cpu2个 硬盘100g,每台机器需要2个网卡,具体可以查看

说明:

下面是官方截图:

control节点安装mysql rabbitmq keystone glance nova dashboard neutron

compute节点安装 nova neutron

openstack官网 配置说明

openstack安装步骤:

1.[ntp安装]

ntp主要为同步时间所用,时间不同步,可能造成你不能创建云主机

yum install chrony

vi /etc/chrony.conf增加

server NTP_SERVER iburst

allow 你的ip地址网段(允许你的ip地址网段可以访问ntp)

systemctl enable chronyd.service(加入系统自启动)

systemctl start chronyd.service(启动ntp服务)

注意:在centos7以前的版本安装ntp

yum install ntp

ntpdate time.nist.gov(同步时钟)

hwclock -w (写入bios)

2.[openstack packages]

安装openstack最新的源:

yum install centos-release-openstack-mitaka

yum install https://rdoproject.org/repos/rdo-release.rpm

yum upgrade (更新源)

yum install python-openstackclient(安装opentack必须的插件)

yum install openstack-selinux(可选则安装这个插件,我直接关闭了selinux,因为不熟,对后续不会有影响)

3.[database]

openstack支持很多的数据库,MySQL or PostgreSQL等

这里我们使用mysql。

yum install mariadb mariadb-server python2-PyMySQL(mariadb是mysql的新版本而已,无需惊讶)

vi  /etc/my.cnf

加入:

[mysqld]

bind-address = 192.168.1.48(安装mysql的机器的IP地址)

default-storage-engine = innodb

innodb_file_per_table

collation-server = utf8_general_ci

character-set-server = utf8

将mysql加入自启动

systemctl enable mariadb.service

启动mysql

systemctl start mariadb.service

设置mysql属性:

直接输入脚本命令:

mysql_secure_installation

按照相关设置即可

注意:注意检查mysqld是否运行。3306端口是否起来

3.[rabbitmq]

安装openstack的消息使者rabbitmq,如果rabbitmq没有运行起来,你的整openstack平台将无法使用。rabbitmq使用5672端口。

yum install rabbitmq-server

systemctl enable rabbitmq-server.service(加入自启动)

systemctl start rabbitmq-server.service(启动)

rabbitmqctl add_user openstack RABBIT_PASS(增加用户openstack,密码自己设置替换掉RABBIT_PASS)

rabbitmqctl set_permissions openstack ".*" ".*" ".*"(给新增的用户授权,没有授权的用户将不能接受和传递消息)

4.[memcached]

memcache为选择安装项目。使用端口11211

yum install memcached python-memcached

systemctl enable memcached.service

systemctl start memcached.service

5.[keystone认证服务]

注意:在之前需要设置好hosts解析,控制节点和计算节点都要做。我的为:

192.168.1.48 control

192.168.1.49 compute

登录数据库创建keystone数据库。

mysql -u root -p

CREATE DATABASE keystone;

设置授权用户和密码:

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \

IDENTIFIED BY '密码';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \

IDENTIFIED BY '密码';

生成admin_token的随机值:

openssl rand -hex 10

安装keystone

yum install openstack-keystone httpd mod_wsgi

vi /etc/keystone/keystone.conf

使用刚刚生成的随机值替换掉:

admin_token = 随机值(主要为安全,也可以不用替换)

配置数据库连接:

connection = mysql+pymysql://keystone:密码@数据库ip地址/keystone

设置:provider = fernet、

同步keystone数据库:keystone-manage db_sync(一点要查看数据库是否生成表成功)

初始化keys:

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

配置apache:

vi  /etc/httpd/conf/httpd.conf

将ServerName 后面改成主机名,防止启动报错

ServerName control

生成wsgi配置文件:

vi /etc/httpd/conf.d/wsgi-keystone.conf加入:

Listen 5000

Listen 35357

<VirtualHost *:5000>

WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

WSGIProcessGroup keystone-public

WSGIScriptAlias / /usr/bin/keystone-wsgi-public

WSGIApplicationGroup %{GLOBAL}

WSGIPassAuthorization On

ErrorLogFormat "%{cu}t %M"

ErrorLog /var/log/httpd/keystone-error.log

CustomLog /var/log/httpd/keystone-access.log combined

<Directory /usr/bin>

Require all granted

</Directory>

</VirtualHost>

<VirtualHost *:35357>

WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}

WSGIProcessGroup keystone-admin

WSGIScriptAlias / /usr/bin/keystone-wsgi-admin

WSGIApplicationGroup %{GLOBAL}

WSGIPassAuthorization On

ErrorLogFormat "%{cu}t %M"

ErrorLog /var/log/httpd/keystone-error.log

CustomLog /var/log/httpd/keystone-access.log combined

<Directory /usr/bin>

Require all granted

</Directory>

</VirtualHost>

启动httpd:

systemctl enable httpd.service

systemctl start httpd.service

6.[创建keystone的service目录和endpoint]

export OS_TOKEN=上面生成的随机值

export OS_URL=http://control:35357/v3

export OS_IDENTITY_API_VERSION=3

创建keystone的service:

openstack service create --name keystone --description "OpenStack Identity" identity (identity这个认证类型一定不可以错)

创建keystone的endpoint:

openstack endpoint create --region RegionOne \

identity public http://control:5000/v3

openstack endpoint create --region RegionOne \

identity internel  http://control:5000/v3

openstack endpoint create --region RegionOne \

identity admin  http://control:35357/v3

7.[创建域,用户,租户,角色]

创建默认域default:

openstack domain create --description "Default Domain" default

创建admin的租户:

openstack project create --domain default \

--description "Admin Project" admin

创建admin用户:

openstack user create --domain default \

--password-prompt admin(会提示输入密码为登录dashboard的密码)

创建admin角色:

openstack role create admin

将用户租户角色连接起来:

openstack role add --project admin --user admin admin

创建服务目录:

openstack project create --domain default \

--description "Service Project" service

创建demo信息类似admin:

openstack project create --domain default \

--description "Demo Project" demo

openstack user create --domain default \

--password-prompt demo

openstack role create user

openstack role add --project demo --user demo user

创建完成之后可以使用命令验证:

openstack --os-auth-url http://control:35357/v3 \

--os-project-domain-name default --os-user-domain-name default \

--os-project-name admin --os-username admin token issue

输入密码之后,有正确的输出即为配置正确。

可将环境变量设置为脚本:

vi admin-openrc 加入:

export OS_PROJECT_DOMAIN_NAME=default

export OS_USER_DOMAIN_NAME=default

export OS_PROJECT_NAME=admin

export OS_USERNAME=admin

export OS_PASSWORD=xxxx

export OS_AUTH_URL=http://control:35357/v3

export OS_IDENTITY_API_VERSION=3

export OS_IMAGE_API_VERSION=2

demo的变量类似即可。

运行使用 . admin-openrc或者使用source admin-openrc

验证输入命令:

openstack token issue

有正确的输出即为配置正确。

8.[glance镜像服务]

建立glance数据

登录mysql

mysql -u root -p

CREATE DATABASE glance;

授权

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \

IDENTIFIED BY '密码';

GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \

IDENTIFIED BY '密码';

运行环境变量:

. admin-openrc

创建glance用户信息:

openstack user create --domain default --password-prompt glance

openstack role add --project service --user glance admin

创建镜像服务目录:

openstack service create --name glance \

--description "OpenStack Image" image

创建镜像endpoint:

penstack endpoint create --region RegionOne \

image public http://control:9292

penstack endpoint create --region RegionOne \

image internal http://control:9292

penstack endpoint create --region RegionOne \

image admin http://control:9292

安装:

yum install openstack-glance

vi  /etc/glance/glance-api.conf

配置数据库连接:

connection = mysql+pymysql://glance:密码@数据库ip/glance

找到[keystone_authtoken](配置认证)

加入:

auth_uri = http://control:5000

auth_url = http://control:35357

memcached_servers = control:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = xxxx

找到:[paste_deploy]

flavor = keystone

找到[glance_store]

stores = file,http

default_store = file

filesystem_store_datadir = /var/lib/glance/images/

编辑/etc/glance/glance-registry.conf

找到[database]

connection = mysql+pymysql://glance:密码@数据库ip/glance

找到[keystone_authtoken](配置认证)

加入:

auth_uri = http://control:5000

auth_url = http://control:35357

memcached_servers = control:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = glance

password = xxxx

找到:[paste_deploy]

flavor = keystone

同步数据库:

glance-manage db_sync

启动glance:

systemctl enable openstack-glance-api.service \

openstack-glance-registry.service

systemctl start openstack-glance-api.service \

openstack-glance-registry.service

验证:

运行环境变量:

. admin-openrc

下载一个比较小的镜像:

wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

上传镜像:

openstack image create "cirros" \

--file cirros-0.3.4-x86_64-disk.img \

--disk-format qcow2 --container-format bare \

--public

查看:

openstack image list

有输出 证明glance配置正确

9.[nova 控制节点]

建立nova的数据库:、

mysql -u root -p

CREATE DATABASE nova_api;

CREATE DATABASE nova;

授权:

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \

IDENTIFIED BY '密码';

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \

IDENTIFIED BY '密码';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \

IDENTIFIED BY '密码';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \

IDENTIFIED BY '密码';

运行环境变量:

. admin-openrc

创建nova用户:

openstack user create --domain default \

--password-prompt nova

openstack role add --project service --user nova admin

创建计算服务:

openstack service create --name nova \

--description "OpenStack Compute" compute

创建endpoint:

openstack endpoint create --region RegionOne \

compute public http://control:8774/v2.1/%\(tenant_id\)s

openstack endpoint create --region RegionOne \

compute internal http://control:8774/v2.1/%\(tenant_id\)s

openstack endpoint create --region RegionOne \

compute admin http://control:8774/v2.1/%\(tenant_id\)s

安装:

yum install openstack-nova-api openstack-nova-conductor \

openstack-nova-console openstack-nova-novncproxy \

openstack-nova-scheduler

编辑/etc/nova/nova.conf

找到:[DEFAULT]

enabled_apis = osapi_compute,metadata

找到:

[api_database]

connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

[database]

connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

[DEFAULT]

rpc_backend = rabbit

[oslo_messaging_rabbit]

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = RABBIT_PASS

[DEFAULT]

auth_strategy = keystone

[keystone_authtoken]

auth_uri = http://controller:5000

auth_url = http://controller:35357

memcached_servers = controller:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = xxx

[DEFAULT]

my_ip = ip地址

[DEFAULT]

use_neutron = True

firewall_driver = nova.virt.firewall.NoopFirewallDriver

[vnc]

vncserver_listen = $my_ip

vncserver_proxyclient_address = $my_ip

[glance]

api_servers = http://control:9292

[oslo_concurrency]

lock_path = /var/lib/nova/tmp

同步数据库:

nova-manage api_db sync

nova-manage db sync

启动服务:

systemctl enable openstack-nova-api.service \

openstack-nova-consoleauth.service openstack-nova-scheduler.service \

openstack-nova-conductor.service openstack-nova-novncproxy.service

systemctl start openstack-nova-api.service \

openstack-nova-consoleauth.service openstack-nova-scheduler.service \

openstack-nova-conductor.service openstack-nova-novncproxy.service

10.[nova计算节点]

yum install openstack-nova-compute

编辑/etc/nova/nova.conf

[DEFAULT]

rpc_backend = rabbit

[oslo_messaging_rabbit]

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = xxx

[DEFAULT]

auth_strategy = keystone

[keystone_authtoken]

auth_uri = http://control:5000

auth_url = http://control:35357

memcached_servers = control:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = nova

password = xxx

[DEFAULT]

...

my_ip =计算节点ip地址

[DEFAULT]

...

use_neutron = True

firewall_driver = nova.virt.firewall.NoopFirewallDriver

[vnc]

...

enabled = True

vncserver_listen = 0.0.0.0

vncserver_proxyclient_address = $my_ip

novncproxy_base_url = http://control:6080/vnc_auto.html

[glance]

...

api_servers = http://controller:9292

[oslo_concurrency]

...

lock_path = /var/lib/nova/tmp

注意:

egrep -c '(vmx|svm)' /proc/cpuinfo

如果为0则需要修改/etc/nova/nova.conf

[libvirt]

...

virt_type = qemu

为大于0则不需要

启动:

systemctl enable libvirtd.service openstack-nova-compute.service

systemctl start libvirtd.service openstack-nova-compute.service

在控制节点验证:

运行环境变量:

. admin-openrc

openstack compute service list

输出正常即为配置正确

11.[neutron 控制节点]

创建neutron数据库

mysql -u root -p

CREATE DATABASE neutron;

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \

IDENTIFIED BY 'NEUTRON_DBPASS';

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \

IDENTIFIED BY 'NEUTRON_DBPASS';

运行环境变量:

. admin-openrc

创建用户:

openstack user create --domain default --password-prompt neutron

openstack role add --project service --user neutron admin

创建网络服务:

openstack service create --name neutron \

--description "OpenStack Networking" network

创建neutron endpoint

openstack endpoint create --region RegionOne \

network public http://control:9696

openstack endpoint create --region RegionOne \

network internal http://control:9696

openstack endpoint create --region RegionOne \

network admin http://control:9696

创建vxlan网络:

yum install openstack-neutron openstack-neutron-ml2 \

openstack-neutron-linuxbridge ebtables

编辑:/etc/neutron/neutron.conf

[database]

...

connection = mysql+pymysql://neutron:密码@control/neutron

[DEFAULT]

...

core_plugin = ml2

service_plugins = router

allow_overlapping_ips = True

[DEFAULT]

...

rpc_backend = rabbit

[oslo_messaging_rabbit]

...

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = RABBIT_PASS

[DEFAULT]

...

auth_strategy = keystone

[keystone_authtoken]

...

auth_uri = http://control:5000

auth_url = http://control:35357

memcached_servers = control:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = xxxx

[DEFAULT]

...

notify_nova_on_port_status_changes = True

notify_nova_on_port_data_changes = True

[nova]

...

auth_url = http://control:35357

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = nova

password = xxxx

[oslo_concurrency]

...

lock_path = /var/lib/neutron/tmp

配置ml2扩展:

编辑:/etc/neutron/plugins/ml2/ml2_conf.ini

[ml2]

...

type_drivers = flat,vlan,vxlan

tenant_network_types = vxlan

mechanism_drivers = linuxbridge,l2population

extension_drivers = port_security

[ml2_type_flat]

...

flat_networks = provider

[ml2_type_vxlan]

...

vni_ranges = 1:1000

[securitygroup]

...

enable_ipset = True

配置网桥:

编辑:/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]

physical_interface_mappings = provider:使用的网卡名称

[vxlan]

enable_vxlan = True

local_ip = OVERLAY_INTERFACE_IP_ADDRESS

l2_population = True

[securitygroup]

...

enable_security_group = True

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

配置3层网络:

编辑:/etc/neutron/l3_agent.ini

[DEFAULT]

...

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

配置dhcp:

编辑:/etc/neutron/dhcp_agent.ini

[DEFAULT]

...

interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver

dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq

enable_isolated_metadata = True

配置metadata agent

编辑:/etc/neutron/metadata_agent.ini

[DEFAULT]

...

nova_metadata_ip = controller

metadata_proxy_shared_secret = METADATA_SECRET

编辑/etc/nova/nova.conf

[neutron]

...

url = http://control:9696

auth_url = http://control:35357

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = neutron

password = xxxx

service_metadata_proxy = True

metadata_proxy_shared_secret = METADATA_SECRET

创建扩展连接:

ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

启动:

systemctl restart openstack-nova-api.service

systemctl enable neutron-server.service \

neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

neutron-metadata-agent.service

systemctl start neutron-server.service \

neutron-linuxbridge-agent.service neutron-dhcp-agent.service \

neutron-metadata-agent.service

systemctl enable neutron-l3-agent.service

systemctl start neutron-l3-agent.service

12.[neutron计算节点]

yum install openstack-neutron-linuxbridge ebtables ipset

编辑: /etc/neutron/neutron.conf

[DEFAULT]

...

rpc_backend = rabbit

auth_strategy = keystone

[oslo_messaging_rabbit]

...

rabbit_host = controller

rabbit_userid = openstack

rabbit_password = RABBIT_PASS

[keystone_authtoken]

...

auth_uri = http://control:5000

auth_url = http://control:35357

memcached_servers = control:11211

auth_type = password

project_domain_name = default

user_domain_name = default

project_name = service

username = neutron

password = xxxx

[oslo_concurrency]

...

lock_path = /var/lib/neutron/tmp

配置vxlan

编辑:/etc/neutron/plugins/ml2/linuxbridge_agent.ini

[linux_bridge]

physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME

[vxlan]

enable_vxlan = True

local_ip = OVERLAY_INTERFACE_IP_ADDRESS

l2_population = True

[securitygroup]

...

enable_security_group = True

firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

编辑/etc/nova/nova.conf

[neutron]

...

url = http://controller:9696

auth_url = http://controller:35357

auth_type = password

project_domain_name = default

user_domain_name = default

region_name = RegionOne

project_name = service

username = neutron

password = xxxx

启动:

systemctl restart openstack-nova-compute.service

systemctl enable neutron-linuxbridge-agent.service

systemctl enable neutron-linuxbridge-agent.service

验证:

运行环境变量:

. admin-openrc

neutron ext-list

输出正常即可

13.[dashboard]

yum install openstack-dashboard

编辑:/etc/openstack-dashboard/local_settings

OPENSTACK_HOST = "control"

ALLOWED_HOSTS = ['*', ]

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

CACHES = {

'default': {

'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',

'LOCATION': 'controller:11211',

}

}

OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

OPENSTACK_API_VERSIONS = {

"identity": 3,

"image": 2,

"volume": 2,

}

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "default"

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

启动:

systemctl restart httpd.service memcached.service

到此openstack安装完,你可以去dashboard上面去创建云主机了。

参考文献:http://docs.openstack.org/mitaka/install-guide-rdo/common/conventions.html

本文转自  674591788  51CTO博客,原文链接:http://blog.51cto.com/mrdeng/1773377

openstack mitaka 完整安装详细文档(亲测,花了3天时间)相关推荐

  1. 在Linux 安装Python3.5.6详细文档!!!!

    在Linux 安装Python3.5.6详细文档!!!! 1.安装相关依赖库(工具包) yum install gcc patch libffi-devel python-devel  zlib-de ...

  2. 完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档

    完整企业官网源码,前端基于Vue+ElementUI,后台基于基于core3 webapi,含数据库文件,含详情安装部署文档 完整代码下载地址:完整企业官网源码 某工程管理有限公司企业官网 前端 新版 ...

  3. docsify 安装配置文档

    docsify 安装配置文档 安装运行环境npm 用sudo执行以下命令即可完成安装 node安装命令 $ sudo curl -sL -o /etc/yum.repos.d/khara-nodejs ...

  4. SpringCloud从入门到精通(超详细文档二)

    上一篇文档(SpringCloud从入门到精通之超详细文档一)已经对Springboot/SpringCloud做了简单的介绍以及应用讲解,下面将继续为大家介绍SpringCloud后续应用. 第12 ...

  5. Bitnami Redmine安装程序 --文档

    2019独角兽企业重金招聘Python工程师标准>>> 注意:在运行此页面上显示的命令之前,您应该通过执行installdir/use_APPNAME脚本(Linux和Mac OS ...

  6. linux上搭载was应用上传中文文件,受支持的Linux操作系统和WAS ND 9.0安装部署文档的资料说明...

    本文档的主要内容详细介绍的是受支持的Linux操作系统和WAS ND 9.0安装部署文档的资料说明. 从was9.0开始支持的最低版本的red hat Linux系统为6.6且仅支持64位操作系统 计 ...

  7. 完整的PRD文档包含哪些内容?

    完整的PRD文档包含哪些内容? 千万,千万,千万别再套模板写需求文档了,要想写好需求文档重要的不是包含哪些内容,而是为什么包含这些内容! 话不多说,直接上干货. 要想写好需求文档,先了解需求文档是什么 ...

  8. 如何在 Windows 上安装 ONLYOFFICE 文档 v7.2

    通过阅读本文,了解如何在Windows上安装ONLYOFFICE文档v7.2. 引言 使用社区版,您可以在本地服务器上安装 ONLYOFFICE 文档,并将在线编辑器与 ONLYOFFICE 协作平台 ...

  9. 不写代码建博客!在浏览器完成博客搭建,有超详细文档,小白轻松搞定

    文档地址:Daymd. 仓库地址:inannan423/Daymd: 个人站点生成器,可以在浏览器完成全部操作!从搭建到部署都可以在浏览器中完成,不需要本地环境.附详细文档. (github.com) ...

最新文章

  1. 直接在sublime中运行php
  2. python各个解释器的用途-Python解释器有哪些?Python解释器种类
  3. windows 技巧篇-清除共享地址访问缓存信息,共享路径临时访问用户切换方法
  4. java里调用Python
  5. .NET 6 新特性 WaitAsync
  6. CF1178H Stock Exchange
  7. mysql 数据分析的步骤_数据分析8个主要步骤
  8. Gradle学习之构建java与web项目
  9. tomcat启动(五)Catalina分析-service.init
  10. 计算机课堂教育叙事,《我与电脑交朋友》教学反思
  11. 5G手机江湖:一场卡位战,一位“关键先生”,一个“王者”
  12. SharedPreferences的制作
  13. 计算机奖状模板,制作电子奖状
  14. Python excel转txt文件
  15. IDEA中的SourceRoot含义及设置方法
  16. 项目管理知识体系九大知识领域简介
  17. CSS学习之绘制几何图形
  18. 计算机视觉注意力网络(一)——简介
  19. KD树实现鸢尾花分类(Numpy实现)
  20. excel标题行列浮动显示/冻结窗口

热门文章

  1. 为SSD加速 实战4KB对齐技巧3/3
  2. vb在 ListBox 之中点击右键弹出菜单
  3. CentOS安装Etcd
  4. SCPPO(二十九):测算过程中问题的解决总结(续)
  5. 核能版“水变油”登上Nature!谷歌7000万押注,MIT参与,被评争风加水汽车
  6. 英伟达的“千人摩擦计划”:几千个智能体互相玩耍,学习跑酷更轻松
  7. 麦肯锡160页报告:2030年全球将可能有8亿人要被机器抢饭碗
  8. 火柴Open Day,你永远不知道你错过了什么!!
  9. Android开发之旅-Fragment和Activity之间onCreateOptionsMenu的联系
  10. [UIKit学习]00.关于前置知识(storyboard,UIViewController,类扩展,项目属性)