目录

  • 一、OpenStack基础环境配置
    • 1.1.1、修改主机名、防火墙、核心防护和免交互(所有节点)
      • 1.1.2、基础环境依赖包(所有节点)
        • 1.1.3、配置Hosts和DNS(所有节点)
          • 1.1.4、控制节点网卡配置(ct)
            • 1.1.5、控制节点ct时间同步配置
    • 二、系统环境配置
      • 2.2.1、一、安装、配置MariaDB
        • 2.2.2、此包用于openstack的控制端连接mysql所需要的模块,如果不安装,则无法连接数据库;此包只安装在控制端
          • 2.2.3、添加MySQL子配置文件,增加如下内容
            • 2.2.4、开机自启动、开启服务和执行MariaDB 安全配置脚本
      • 三、安装RabbitMQ
        • 3.3.1、安装rabbitmq
          • 3.3.2配置服务,启动RabbitMQ服务,并设置其开机启动
          • 3.3.3、创建消息队列用户,用于controler和node节点连接rabbitmq的认证
          • 3.3.4、配置openstack用户的操作权限(正则,配置读写权限)
          • 3.3.5、查看rabbitmq插件列表
            • 3.3.6、开启rabbitmq的web管理界面的插件,端口为15672
            • 3.3.7、检查端口(25672 5672 15672)
        • 四、安装memcached
          • 4.4.1、修改Memcached配置文件
          • 五、安装etcd
            • 5.5.1、修改etcd配置文件
            • 5.5.2、开机自启动、开启服务,检测端口
            • 六、Keystone 组件的搭建

一、OpenStack基础环境配置

配置项:所有节点上都需配置

1.1.1、修改主机名、防火墙、核心防护和免交互(所有节点)

1、主机名(所有节点)
[root@localhost ~]# hostnamectl set-hostname ct
[root@localhost ~]# bash
[root@localhost ~]#hostnamectl set-hostname c1
[root@localhost ~]# bash
[root@localhost ~]#hostnamectl set-hostname c2
[root@localhost ~]# bash
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vim /etc/sysconfig/selinux
SELINUX=disabled
#o免交互
ssh-keygen -t rsa
ssh-copy-id ct
ssh-copy-id c1
ssh-copy-id c2

1.1.2、基础环境依赖包(所有节点)

yum -y install net-tools bash-completion vim gcc gcc-c++ make pcre  pcre-devel expat-devel cmake  bzip2
yum -y install centos-release-openstack-train python-openstackclient openstack-selinux openstack-utils
#openstack的train版本仓库源安装包
#openstack客户端
#openstack核心防护
#openstack管理工具

1.1.3、配置Hosts和DNS(所有节点)

vi /etc/hosts
192.168.100.133  ct
192.168.100.134  c1
192.168.100.135  c2
vim /etc/resolv.conf
nameserver 114.114.114.114
1.1.4、控制节点网卡配置(ct)
Nat网卡:
[root@ct ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPV4_ROUTE_METRIC=90  ###调由优先级,NAT网卡优先
IPADDR=192.168.100.133
NETMASK=255.255.255.0
GATEWAY=192.168.100.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=4a9a6455-626c-461b-bfe8-118604af9fdd
DEVICE=ens33
ONBOOT=yes

内网卡:
[root@ct ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.10.50
NETMASK=255.255.255.0
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens34
UUID=b7d4870c-bb50-4664-b6a0-5897f869ac8a
DEVICE=ens34
ONBOOT=yes

1.1.5、控制节点ct时间同步配置

[root@ct ~]# yum install chrony -y
[root@ct ~]# vim /etc/chrony.conf

#Use public servers from the pool.ntp.org project.# Please consider joining the pool (http://www.pool.ntp.org/join.html).
#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 ntp6.aliyun.com iburst   #添加阿里云时间同步
allow 192.168.100.0/24    #允许100网段同步自己的时间
# Record the rate at which the system clock gains/losses time.driftfile /var/lib/chrony/drift
# Allow the system clock to be stepped in the first three updates
# if its offset is larger than 1 second.
makestep 1.0 3
# Enable kernel synchronization of the real-time clock (RTC).rtcsync
# Enable hardware timestamping on all interfaces that support it.
#hwtimestamp *
# Increase the minimum number of selectable sources required to adjust
# the system clock.
#minsources 2
# Allow NTP client access from local network.
#allow 192.168.0.0/16
# Serve time even if not synchronized to a time source.
#local stratum 10
# Specify file containing keys for NTP authentication.
#keyfile /etc/chrony.keys
# Specify directory for log files.logdir /var/log/chrony
# Select which information is logged.
#log measurements statistics tracking

[root@ct ~]# systemctl enable chronyd
[root@ct ~]# systemctl restart chronyd
使用 chronyc sources 命令查询时间同步信息
[root@ct ~]# chronyc sources
chronyc sources210 Number of sources = 1
MS Name/IP address         Stratum Poll Reach LastRx Last sample               ===============================================================================^* 203.107.6.88                  2   7   377    67  +2522us[+2963us] +/-   25ms
设置周期性任务
crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@ct ~]# crontab -l
*/30 * * * * /usr/bin/chronyc sources >> /var/log/chronyc.log


二、系统环境配置

配置服务(控制节点):

2.2.1、一、安装、配置MariaDB

yum -y install mariadb mariadb-server python2-PyMySQL

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

yum -y install libibverbs

2.2.3、添加MySQL子配置文件,增加如下内容

[

root@ct ~]# vim /etc/my.cnf.d/openstack.cnf
[mysqld] bind-address = 192.168.100.133    #控制节点局域网地址
default-storage-engine = innodb    #默认存储引擎
innodb_file_per_table = on         #每张表独立表空间文件
max_connections = 4096             #最大连接数
collation-server = utf8_general_ci     #默认字符集
character-set-server = utf8

2.2.4、开机自启动、开启服务和执行MariaDB 安全配置脚本
systemctl enable mariadb
systemctl start mariadb
#o执行MariaDB 安全配置脚本
[root@ct ~]# mysql_secure_installation
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the currentpassword for the root user.  If you've just installed MariaDB, andyou 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. Set root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
By default, a MariaDB installation has an anonymous user, allowing anyoneto log into MariaDB without having to have a user account created forthem.  This is intended only for testing, and to make the installationgo a bit smoother.  You should remove them before moving into aproduction environment.
Remove anonymous users? [Y/n] Y
... Success!
Normally, root should only be allowed to connect from 'localhost'.  Thisensures 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 canaccess.  This is also intended only for testing, and should be removedbefore 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 farwill 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 MariaDBinstallation should now be secure. Thanks for using MariaDB!


三、安装RabbitMQ

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

3.3.1、安装rabbitmq

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

3.3.2配置服务,启动RabbitMQ服务,并设置其开机启动
[root@ct ~]# systemctl enable rabbitmq-server.service
[root@ct ~]# systemctl start rabbitmq-server.service

3.3.3、创建消息队列用户,用于controler和node节点连接rabbitmq的认证
[root@ct ~]# rabbitmqctl add_user openstack RABBIT_PASS
Creating user "openstack"

3.3.4、配置openstack用户的操作权限(正则,配置读写权限)
[root@ct ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*"


#可查看25672和5672 两个端口(5672是Rabbitmq默认端口,25672是Rabbit的测试工具CLI的端口)

3.3.5、查看rabbitmq插件列表
[root@ct ~]# rabbitmq-plugins list

3.3.6、开启rabbitmq的web管理界面的插件,端口为15672
[root@ct ~]# rabbitmq-plugins enable rabbitmq_management

3.3.7、检查端口(25672 5672 15672)
[root@ct ~]# ss -natp | grep 5672

四、安装memcached

#作用:

  • 安装memcached是用于存储session信息;服务身份验证机制使用Memcached来缓存令牌
    在登录openstack的dashboard时,会产生一些session信息,这些session信息会存放到memcached中
[root@ct ~]# yum install -y memcached python-memcached


#python-*模块在OpenStack中起到连接数据库的作用

4.4.1、修改Memcached配置文件
[root@ct ~]# vi /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1,::1,ct"
[root@ct ~]# systemctl enable memcached
[root@ct ~]# systemctl start memcached
[root@ct ~]# netstat -nautp | grep 11211

五、安装etcd
[root@ct ~]# yum -y install etcd

5.5.1、修改etcd配置文件
[root@ct ~]# cd /etc/etcd/
[root@ct etcd]# ls
etcd.conf
[root@ct etcd]# vim etcd.conf
#数据目录位置
#监听其他etcd member的url(2380端口,集群之间通讯,域名为无效值)
#对外提供服务的地址(2379端口,集群内部的通讯端口)
#集群中节点标识(名称)
#该节点成员的URL地址,2380端口:用于集群之间通讯。
#初始集群状态,new为静态,若为existing,则表示此ETCD服务将尝试加入已有的集群若为DNS,则表示此集群将作为被加入的对象
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.100.133:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.100.133:2379"
ETCD_NAME="ct"
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.100.133:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.100.133:2379"
ETCD_INITIAL_CLUSTER_STATE="new"


5.5.2、开机自启动、开启服务,检测端口
[root@ct ~]# systemctl enable etcd.service
[root@ct ~]# systemctl start etcd.service
[root@ct ~]# netstat -anutp |grep 2379
[root@ct ~]# netstat -anutp |grep 2380

六、Keystone 组件的搭建

创建keystone的数据库实例和数据库用户

[root@ct ~]# mysql -u root -p
MariaDB [(none)]> create database keystone;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';
MariaDB [(none)]> flush privileges;
MariaDB [(none)]> exit

安装配置keystone、apache和mod_wagi(在控制节点)
mod_wsgi包的作用:让apache能够代理Python程序的组件,openstack的各个组件,包括API都是Python写的,但访问的是apache,由apache转发openstack各个组件的请求给Python去处理,所以mod_wsgi是一个支持模块。

 [root@ct ~]# yum -y install openstack-keystone httpd mod_wsgi
[root@ct ~]# cp -a /etc/keystone/keystone.conf{,.bak} #创建配置文件的备份
#过滤出配置模块中开启的模块
[root@ct ~]# grep -Ev "^$|#" /etc/keystone/keystone.conf.bak > /etc/keystone/keystone.conf
#通过pymysql模块访问mysql,指定用户名密码、数据库的域名、数据库名
[root@ct ~]# openstack-config --set /etc/keystone/keystone.conf database connection mysql+pymysql://keystone:KEYSTONE_DBPASS@ct/keystone
#指定token的提供者;提供者就是keystone自己本身
[root@ct ~]# openstack-config --set /etc/keystone/keystone.conf token provider fernet
# Fernet:一种安全的消息传递格式

初始化认证服务数据库

[root@ct ~]# su -s /bin/sh -c "keystone-manage db_sync" keystone  

初始化 fernet 密钥存储库

[root@ct ~]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
[root@ct ~]# keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
#生成两个密钥,fernet和credential,生成的密钥放在/etc/keystone/目录下,用于加密数据

配置bootstrap身份认证服务

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
--bootstrap-admin-url http://ct:5000/v3/ \
--bootstrap-internal-url http://ct:5000/v3/ \
--bootstrap-public-url http://ct:5000/v3/ \
--bootstrap-region-id RegionOne #指定一个区域名称

#此步骤是初始化openstack,会吧openstack的admin用户信息,写入到mysql的user表中,以及url等其他信息写入到mysql的相关表中
#admin-url 是管理网(如公有云内部openstack 管理网络),用于管理虚拟机的扩容或删除;如果公有网络和管理网是一个网络,则当业务量大时,会造成无法通过openstack的控制端扩容虚拟机,所以需要这个管理网。
#internel-url 是内部网络,进行数据传输,如虚拟机访问存储和数据库、zookeeper等中间件,这个网络是不能被外网访问的,只能用于企业内部访问。
#public-url 是共有网络,可以给用户访问的(如公有云),但是此环境没有这些网络,则公用同一个网络
#5000端口是keystone提供认证的端口
#需要在haproxy服务器上添加一条listen
#各种网络的url 需要制定controler节点的域名,一般是haproxy的vip的域名(高可用模式)

配置apache服务器

[root@ct ~]# echo "ServerName controller" >> /etc/httpd/conf/httpd.conf

优化配置文件路径
安装完mod_wsgi包后,会生成wsgi-keystone.conf 这个文件,文件中配置了虚拟主机及监听了5000端口,mod_wsgi 就是python的网关

 [root@ct ~]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

开启apache服务

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


配置管理员账户的环境变量

 这些环境变量用于创建角色和项目使用,但是创建角色和项目需要有认证信息,所以通过环境变量声明用户名和密码等认证信息,欺骗openstack已经等了且通过认证,这样就可以创建项目和角色;也就是把admin用户的验证信息通过声明环境变量的方式传递给openstack进行验证,实现针对openstack的非交互式操作。[root@ct ~]# cat >> ~/.bashrc << EOF
export OS_USERNAME=admin           #控制台登陆用户名
export OS_PASSWORD=ADMIN_PASS  #控制台登陆密码
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://ct:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
EOF
[root@ct ~]# source ~/.bashrc

通过配置环境变量,可以使用openstack命令进行一些操作

openstack user list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| d95a052d9eea47558e7cbe521650d243 | admin |
+----------------------------------+-------+
[root@ct ~]# 
创建openstack域、项目、用户和角色
创建一个项目(project),创建在指定的domain(域)中,这里为default 默认,指定描述信息,project名称为service,可用openstack domain list 查询。
[root@ct ~]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 8ea67ceebd15424587baaeb6991e5062 |
| is_domain   | False                            |
| name        | service                          |
| options     | {}                               |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+
[root@ct ~]#
创建角色(可使用openstack role list 查看)
[root@ct ~]# openstack role create user
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | None                             |
| domain_id   | None                             |
| id          | 6f79fb1f829c432da1208dc05f6b0f24 |
| name        | user                             |
| options     | {}                               |
+-------------+----------------------------------+
[root@ct ~]#
[root@ct ~]# openstack role list  #查看角色列表
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| 234acbcc09e3411aaaa68b4953dc3558 | admin  | #管理员
| 6f79fb1f829c432da1208dc05f6b0f24 | user   | #创建的user角色
| c97a93e84b3d456c8eca8b1d6d2f7657 | member |  #租户
| d2abd1787f4047eb8aa6051efc9f3fb8 | reader |
+----------------------------------+--------+
[root@ct ~]#
验证,查看是否可以不指定密码就可以获取到token信息(验证认证服务)
[root@ct ~]# openstack token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2020-12-24T09:49:17+0000                                                                                                                                                                |
| id         | gAAAAABf5FYNuNhYLV3t-QH5QaJxbSfkUXeM1IdSQ3geOvc5NahubByIYW2CZldJ8ur-U8PsCaTbqE33K16wuIJuyUmqEd4f7WDXhDqJscAnFJnzFLDHZnKRsPMeBklrVf0uUYuBZB4atdICM0d7VMKHfDIxN25L2a7NmuXznCBH8-eHehHp03k |
| project_id | 5846cfaed16d4ba6aa1aeafafd1d1d5f                                                                                                                                                        |
| user_id    | d95a052d9eea47558e7cbe521650d243                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
[root@ct ~]#
keystone组件是作为openstack集群中同一认证和授权的模块,核心功能就是针对用户(user),租户(tenant),role(角色),令牌(token)的控制(手工编译部署即是围绕此功能展开的)。
User:使用 openstack 的用户。Tenant:租户,可以理解为一个人、项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源。Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限。Token:指的是一串比特值或者字符串,用来作为访问资源的记号。Token 中含有可访问资源的范围和有效时间,token 是用户的一种凭证,需要使用正确的用户名和密码向 Keystone 服务申请才能得到 token。

OpenStack手动搭建——keystone认证相关推荐

  1. 第九节 先电云openstack手动搭建创建云主机

    创建外网 管理员-系统-网络-创建网络(容器的网络) 外部网络只给管理员用,不可共享 创建外网的子网,与本机IP同网段未使用的IP地址 2. 项目-网络 3. 路由 进入路由 把外网的子网池改为200 ...

  2. OpenStack手动分布式部署Keystone【Queens版】

    目录 Keystone简介 1.登录数据库配置(在controller执行) 1.1登录数据库 1.2数据库里创建keystone 1.3授权对keystone数据库的正确访问 1.4退出数据库 2. ...

  3. Openstack组件实现原理 — Keystone认证功能

    前言 Keystone实现始终围绕着Keystone所实现的功能来展开,所以在理解其实现之前,建议大家尝试通过安装Keystone这一个过程来感受Keystone在Openstack架构中所充当的角色 ...

  4. Openstack平台搭建之第二天

    2019独角兽企业重金招聘Python工程师标准>>> Openstack平台搭建之第二天 Author by xxbAndy. If you have any question , ...

  5. OpenStack环境搭建(六:常见问题及解决方案总结)

    实验要求: 完成Virtual box平台安装,会应用相关操作: 在virtual box虚拟平台上部署Fuel Master节点: 在virtual box虚拟平台上部署计算节点Computer: ...

  6. OpenStack环境搭建(一:Virtual Box 5.1 环境的安装及配置)

    实验要求: 完成Virtual box平台安装,会应用相关操作: 在virtual box虚拟平台上部署Fuel Master节点: 在virtual box虚拟平台上部署计算节点Computer: ...

  7. 随笔:使用Windows搭建AAA认证服务器

    使用Windows搭建AAA认证服务器 前言: 一.AD域安装 1.添加角色和功能 2.添加角色和功能 3.添加角色和特征 4.服务器池选取 5.添加AD域服务,同时添加所需功能 6.根据提示操作,下 ...

  8. OpenStack手动分布式部署Nova【Queens版】

    目录 Nove简介: 1.登录数据库配置(在controller执行) 1.1登录数据库 1.2数据库里创建nova-api 1.3数据库登录授权 1.4创建nova用户 1.5添加admin用户为n ...

  9. OpenStack环境搭建(五:附加项虚拟机文件备份使用)

    实验要求: 完成Virtual box平台安装,会应用相关操作: 在virtual box虚拟平台上部署Fuel Master节点: 在virtual box虚拟平台上部署计算节点Computer: ...

最新文章

  1. 自动打开WINDWOS远程控制的注册表文件
  2. rust(50)-图像(3)
  3. 如何保证数据最终一致性(分布式事务)
  4. OpenShift 4 之Service Mesh教程(3)- 访问流量管理
  5. mysql中有exist吗_关于MySQL 中 EXISTS 的用法
  6. android源码下编译自有工程通用make模板
  7. 新申请了一个博客,这个博客主要用来记录编程学习笔记
  8. PDF中加入HTML,将PDF导入/嵌入到HTML中(For PDF)
  9. 如何查看服务器登录日志文件,服务器登录日志查看
  10. javax.validation校验整理
  11. 考拉:你以为我想呆萌?幼年吃屎长大磕毒,差点就没活下来
  12. Flutter高德定位定位权限管理
  13. 001-eNSP 先学画个漂亮的拓扑图
  14. linux双系统重启卡光标,Ubuntu 16.04安装完重启后黑屏,光标一直闪
  15. 用stocker进行股票预测
  16. laravel如何实现请求图片或文件需用户验证
  17. html vb病毒,HTML_用vbs实现的一款Worm.Win32.VB.fw病毒专杀,在写了《Worm.Win32.VB.fw分析与清 - phpStudy...
  18. 51单片机模拟电梯控制(含完整代码)
  19. MyBatis-Plus数据安全保护(配置安全)
  20. 方寸微 T630 USB3.0超高速接口芯片

热门文章

  1. 基于C#的列车运行控制与仿真系统设计
  2. vue实现获取短信验证码
  3. 指静脉识别-matlab
  4. Pytest学习笔记(4)-Fixture装置
  5. HTML5实例教程——简易涂鸦板-何韬-专题视频课程
  6. c# 虚拟机加密软件_在C#中构建一个虚拟软件电话,该软件电话可以在您的呼叫中心中作为振铃组...
  7. 计算机考研统考科目408思维导图
  8. 如何理解“桩家”特斯拉?误区、革命性与疑惑
  9. YOLOv4实战尝鲜 --- 教你从零开始训练自己的数据集(安全头盔佩戴识别检测)
  10. 微信小程序:电影选票系统 (简易版) 可以选择场次座位并生成订单