云计算|OpenStack|社区版OpenStack安装部署文档(三 --- 身份认证服务keystone安装部署---Rocky版)

news2024/9/21 21:49:38

一,

什么是keystone

keystone是openstack的关键必选组件之一,其作用是提供身份认证服务,所有的身份认证信息都是存储在controller节点的数据库内。

具体的关于keystone的介绍可以参见官方文档:OpenStack Docs: Identity service overview

社区版openstack 服务组件的安装顺序:

以上图的文档顺序安装,第一个是keystone,第二个是glance,第三个是nova,第四个是neutron,第五个是horizon,第六个是cinder 

二,

keystone部署前的数据库准备工作(192.168.123.130节点,安装部署)

keystone可以使用MySQL,postgresql等数据库,官方文档提供的是mariadb,mariadb数据库在前面基础环境内已经部署完成了,

详情请移步上一篇文章:云计算|OpenStack|社区版OpenStack安装部署文档(二---OpenStack运行环境搭建)_晚风_END的博客-CSDN博客

在部署keystone之前,需要新建数据库和数据库用户以及相关权限授权。

1,

新建数据库

登陆mariadb数据库,建立库名为keystone的数据库

mysql -uroot -p

输入root密码,登陆数据库

create database keystone;

2,

创建数据库用户keystone并授予其可访问keystone数据库的权限:

注意,密码是KEYSTONE_DBPASS

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS';

使用的官方文档连接:OpenStack Docs: Install and configure

安装并配置keystone组件

yum install openstack-keystone httpd mod_wsgi openstack-utils -y

这里的openstack-utils是openstack的一个工具集,安装了这个后可以使用命令快速修改openstack的配置文件

keystone不需要启动,由httpd服务通过wsgi代理启动,监听端口是5000

在此前的版本比如Queens版本,是监听两个端口,5000和35357,Rocky版对此做了优化调整,只监听5000了

以上yum安装完毕后,开始修改配置文件,修改的地方不多:

1,

修改配置文件

Edit the /etc/keystone/keystone.conf file and complete the following actions:

  • In the [database] section, configure database access:

    [database]
    # ...
    connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone

根据自身情况,192.168.123.130服务器的主机名是openstack1,因此,实际上的修改是这样:

[database] # ... connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@openstack1/keystone

2,

修改配置文件

  • In the [token] section, configure the Fernet token provider:

    [token]
    # ...
    provider = fernet

3,初始化数据库,创建keystone服务的相关表

su -s /bin/sh -c "keystone-manage db_sync" keystone
注:此条命令无任何输出为正确

4,

查询上一步建表是否正确:

[root@openstack1 ~]# mysql -h 192.168.123.130 -ukeystone -pKEYSTONE_DBPASS -e "use keystone;show tables;"
+-----------------------------+
| Tables_in_keystone          |
+-----------------------------+
| access_token                |
| application_credential      |
| application_credential_role |
| assignment                  |
| config_register             |
| consumer                    |
| credential                  |
| endpoint                    |
| endpoint_group              |
| federated_user              |
| federation_protocol         |
| group                       |

总计45张表,表示建表没有问题:

[root@openstack1 ~]# mysql -h 192.168.123.130 -ukeystone -pKEYSTONE_DBPASS -e "use keystone;show tables;" |wc -l
45

5,

初始化Fernet密钥库:

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone
注:这两个命令仍然是没有输出表示正确

7,

Configure the Apache HTTP server

修改httpd服务的配置文件并软连接wsgi配置文件到httpd服务配置文件内

  1. Edit the /etc/httpd/conf/httpd.conf file and configure the ServerName option to reference the controller node:

    ServerName openstack1
  2. Create a link to the /usr/share/keystone/wsgi-keystone.conf file:

    # ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

注:/usr/share/keystone/wsgi-keystone.conf 这个文件在Queens版里是有bug的,需要自己修改的,但在Rocky版里已经修复了,因此是可以直接软链接后使用

文件内容如下:

cat /usr/share/keystone/wsgi-keystone.conf 
Listen 5000

<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
    LimitRequestBody 114688
    <IfVersion >= 2.4>
      ErrorLogFormat "%{cu}t %M"
    </IfVersion>
    ErrorLog /var/log/httpd/keystone.log
    CustomLog /var/log/httpd/keystone_access.log combined

    <Directory /usr/bin>
        <IfVersion >= 2.4>
            Require all granted
        </IfVersion>
        <IfVersion < 2.4>
            Order allow,deny
            Allow from all
        </IfVersion>
    </Directory>
</VirtualHost>

Alias /identity /usr/bin/keystone-wsgi-public
<Location /identity>
    SetHandler wsgi-script
    Options +ExecCGI

    WSGIProcessGroup keystone-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
</Location>

8,

启动httpd服务并加入自启

systemctl enable httpd.service
systemctl start httpd.service



小结:

Rocky版相比较早版本比如Queens,少了创建endpoint的步骤,这无疑是降低了部署难度,并减少了出错的概率。

三,

初始化keystone认证服务

1)创建 keystone 用户,初始化的服务实体和API端点

# 在之前的版本(queens之前),引导服务需要2个端口提供服务(用户5000和管理35357),本版本通过同一个端口5000提供服务.这个优化非常nice,减少了很多出错几率

# 创建keystone服务实体和身份认证服务,以下三种类型分别为公共的、内部的、管理的。

# 需要创建一个密码ADMIN_PASS,作为登陆openstack的管理员用户,这里创建为123456,主机名是openstack1

keystone-manage bootstrap --bootstrap-password 123456 \
--bootstrap-admin-url http://openstack1:5000/v3/ \
--bootstrap-internal-url http://openstack1:5000/v3/ \
--bootstrap-public-url http://openstack1:5000/v3/ \
--bootstrap-region-id RegionOne

注:此命令没有输出,会在keystone数据库执增加以下任务,之前的版本需要手动创建
1)在endpoint表增加3个服务实体的API端点
2)在local_user表中创建admin用户
3)在project表中创建admin和Default项目(默认域)
4)在role表创建3种角色,admin,member和reader
5)在service表中创建identity服务

2)临时配置管理员账户的相关变量进行管理

export OS_PROJECT_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://openstack1:5000/v3
export OS_IDENTITY_API_VERSION=3

此时,可以通过客户端查询到user和role了:

注:以往的版本在这一步总是出错,role经常查询不出来member和reader,在Rocky版里没有这个问题了。

以前的版本单独创建endpoint可能会出错需要删除,新版本已经优化好,只要系统配置没问题,会自动生成一般也不会出错

[root@openstack1 ~]# openstack user list
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| cc8fd279176b432299603f49fdc5676b | myuser |
+----------------------------------+--------+
[root@openstack1 ~]# openstack role list
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| c17a222b7a5044319b3436db02ab7d9c | member |
| def3bfe2147e4e2b912267d01fed509f | reader |
| e74aae7bc6c04ac49671c0fc23d2bf9e | admin  |
+----------------------------------+--------+

四,

创建keystone的一般实例 user,role,domain和project

创建domain和project

openstack domain create --description "An Example Domain" example
openstack project create --domain default --description "Service Project" service
openstack project create --domain default --description "Demo Project" myproject

输出如下:

[root@openstack1 ~]# openstack domain create --description "An Example Domain" example
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | An Example Domain                |
| enabled     | True                             |
| id          | 948b331e6bad40d7a86a4ec8d6774abc |
| name        | example                          |
| tags        | []                               |
+-------------+----------------------------------+
[root@openstack1 ~]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | eea644ad9ef14be98a91d886efa1778b |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+
[root@openstack1 ~]# openstack project create --domain default --description "Demo Project" myproject
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | a5b0bd6d7905481c90017f2a45d65477 |
| is_domain   | False                            |
| name        | myproject                        |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

创建用户user:

# 使用--password选项为直接配置明文密码,使用--password-prompt选项为交互式输入密码

openstack user create --domain default  --password=myuser myuser
openstack user create --domain default  --password-prompt myuser

创建role角色:

openstack role create myrole
输出如下:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 97358b7d618f4352806c132ca5b186a1 |
| name      | myrole                           |
+-----------+----------------------------------+

用户和角色绑定:

注:此条命令无输出,但myproject需要提前创建的哦,

openstack role add --project myproject --user myuser myrole

以上创建完毕后,执行查询:

可以看到,名为default的domain,名为admin的project,名为admin的user和名为admin,reader,member的角色以及endpoint都是通过前面的export 自动创建的。

而在以往的旧版本,endpoint需要手动创建的哦

[root@openstack1 ~]# openstack domain list
+----------------------------------+---------+---------+--------------------+
| ID                               | Name    | Enabled | Description        |
+----------------------------------+---------+---------+--------------------+
| 948b331e6bad40d7a86a4ec8d6774abc | example | True    | An Example Domain  |
| default                          | Default | True    | The default domain |
+----------------------------------+---------+---------+--------------------+
[root@openstack1 ~]# openstack project list
+----------------------------------+-----------+
| ID                               | Name      |
+----------------------------------+-----------+
| 692daaea95d747a7aa961aa68dd5bb8d | admin     |
| a5b0bd6d7905481c90017f2a45d65477 | myproject |
| eea644ad9ef14be98a91d886efa1778b | service   |
+----------------------------------+-----------+
[root@openstack1 ~]# openstack user list
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| cc8fd279176b432299603f49fdc5676b | myuser |
| eefd82ab64be4336b05d2e60b25e47c4 | admin  |
+----------------------------------+--------+
[root@openstack1 ~]# openstack role list
+----------------------------------+--------+
| ID                               | Name   |
+----------------------------------+--------+
| 97358b7d618f4352806c132ca5b186a1 | myrole |
| c17a222b7a5044319b3436db02ab7d9c | member |
| def3bfe2147e4e2b912267d01fed509f | reader |
| e74aae7bc6c04ac49671c0fc23d2bf9e | admin  |
+----------------------------------+--------+
[root@openstack1 ~]# openstack endpoint list
+----------------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+
| ID                               | Region    | Service Name | Service Type | Enabled | Interface | URL                        |
+----------------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+
| 09246e8177fd4d239f216301e550bfb0 | RegionOne | keystone     | identity     | True    | admin     | http://openstack1:5000/v3/ |
| 5b38a26650ee4616b53a44da4475b03b | RegionOne | keystone     | identity     | True    | internal  | http://openstack1:5000/v3/ |
| fbf977090d2745aa8e7039351474a14a | RegionOne | keystone     | identity     | True    | public    | http://openstack1:5000/v3/ |
+----------------------------------+-----------+--------------+--------------+---------+-----------+----------------------------+

五,

验证操作keystone是否安装成功

# 关闭临时认证令牌机制,获取 token,验证keystone配置成功

unset OS_AUTH_URL OS_PASSWORD

#测试是否可以在不使用环境变量的情况下,正常使用admin账户进行登陆认证,请求认证令牌


openstack --os-auth-url http://openstack1:5000/v3 \
--os-project-domain-name Default --os-user-domain-name Default \
--os-project-name admin --os-username admin token issue

此命令需要输入user admin的密码,密码是前面设置的123456,如果密码错误:

[root@openstack1 ~]# openstack --os-auth-url http://openstack1:5000/v3 \
> --os-project-domain-name Default --os-user-domain-name Default \
> --os-project-name admin --os-username admin token issue
Password: 
The request you have made requires authentication. (HTTP 401) (Request-ID: req-84805c5f-3da8-40ad-aff6-c8fdeacae92b)

如果密码正确,可以正确的获取令牌信息:

[root@openstack1 ~]# openstack --os-auth-url http://openstack1:5000/v3 --os-project-domain-name Default --os-user-domain-name Default --os-project-name admin --os-username admin token issue
Password: 
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2023-01-31T08:51:36+0000                                                                                                                                                                |
| id         | gAAAAABj2MiIf_tvlnIo52TmrlrHNiCpViefzBhKzysCZMn5udmFBqvNDhBd0FC1ux55Nbh28zjvgxEwlLNCcLrr1RdcS_K4DAPV9I8FmY5Jcj2-rEElzQ0ZCUdetDsdD7nTZXeevGgclvTJYkzVkYb79q-i1zLTUeMPE9umdeOo6dJDD_qMi9o |
| project_id | 692daaea95d747a7aa961aa68dd5bb8d                                                                                                                                                        |
| user_id    | eefd82ab64be4336b05d2e60b25e47c4                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

六,

创建OpenStack客户端环境脚本

# 上面使用环境变量和openstack 命令选项的组合通过“openstack”客户端与身份认证服务交互。
# 为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件,该文件可以自定义名称

cat admin_rc.sh 
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_AUTH_URL=http://openstack1:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

   使用此脚本:

source admin_rc.sh

此时,可以直接通过客户端查询到admin用户的令牌信息了,可以看到和上面的清除环境变量后的查询是一样的:

[root@openstack1 ~]# openstack token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2023-01-31T04:01:54+0000                                                                                                                                                                |
| id         | gAAAAABj2ISiJMRFKNrKTtLbrjiKD9HTO9um3Dn2f1mObhlCU1dG-2JlSR-uBYH1ODoQMOQpI9H6MUjnvnIxAQQr1yD63eUFoCXYJW6R5fD3dIxkHJVHCmD49FmE2DZN_r-D1pdHoZ-e7eS1zlBGwnjEYOLG7wPH9gYjXzhhTa6sOtiX6KuMSwg |
| project_id | 692daaea95d747a7aa961aa68dd5bb8d                                                                                                                                                        |
| user_id    | eefd82ab64be4336b05d2e60b25e47c4                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

当然,这个方式是比较简单的定义环境变量的方式,还有一种方式是编写config配置文件,文件采用yaml的形式。需要一些额外的安装,比较复杂,在此就不讨论了。

七,重置admi的密码

admin_token认证机制修改登陆密码

keystone-manage bootstrap --bootstrap-password PASSWORD \
--bootstrap-admin-url http://openstack1:5000/v3/ \
--bootstrap-internal-url http://openstack1:5000/v3/ \
--bootstrap-public-url http://openstack1:5000/v3/ \
--bootstrap-region-id RegionOne
cat admin_rc.sh 
export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=PASSWORD
export OS_AUTH_URL=http://openstack1:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

重新激活环境变量:

source admin_rc.sh

再次查看令牌信息:

[root@openstack1 ~]# openstack token issue
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Field      | Value                                                                                                                                                                                   |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| expires    | 2023-01-31T09:27:17+0000                                                                                                                                                                |
| id         | gAAAAABj2NDl1LhQPT0sDEqomp5fU1OxAyqxkucmrhxrbhvi6tfhkOLlQBPi2PQEf2oa9FkMsio_GVdzLLI64y-C3gDPoCf2Kw9zNooOyP9K4ghL-ptpU09QIkQbeZOLtm0zWKWt4baYzzHja8rkrzs1WHQo-YR6pPKA1HOAqf7VNKW8-w56cTo |
| project_id | 692daaea95d747a7aa961aa68dd5bb8d                                                                                                                                                        |
| user_id    | eefd82ab64be4336b05d2e60b25e47c4                                                                                                                                                        |
+------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

OK,keystone服务已经安装完毕了。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设备树中的pin 信息,是在什么时候被初始化的?

一、开发环境 SOC : IMX6ULL系统内核&#xff1a;4.1.15 二、问题描述 Linux 内核提供了pinctrl 和gpio 子系统用于GPIO 驱动。pinctrl_ctrl 子系统从设备树中获取pin 信息&#xff0c;然后配置pin复用 和pin电气特征&#xff08;上/下拉&#xff0c;速度&#xff0c;驱动能…

python小游戏——像素鸟代码开源

♥️作者&#xff1a;小刘在这里 ♥️每天分享云计算网络运维课堂笔记&#xff0c;努力不一定有收获&#xff0c;但一定会有收获加油&#xff01;一起努力&#xff0c;共赴美好人生&#xff01; ♥️夕阳下&#xff0c;是最美的&#xff0c;绽放&#xff0c;愿所有的美好&#…

特斯拉Q4财报:底部反弹70%,为信仰打call

北京时间2023年1月26日美股盘后&#xff0c;探案君的信仰之股——特斯拉公布了2022年第四季度财报&#xff0c;无论营收还是利润依然吊打华尔街预期&#xff0c;这就是特斯拉&#xff0c;当然这也很特斯拉&#xff01; 一、整体业绩&#xff0c;很特斯拉 营收方面&#xff1a…

JavaScript基础复盘4

JavaScript作用域 JavaScript作用域就是代码名字&#xff08;变量&#xff09;在某个范围内起作用和效果 目的是为了提高程序的可靠性&#xff0c;减少命名冲突。 JS没有块级作用域&#xff0c;{}内写的变量外部也可以使用。 作用域链 作用域链&#xff1a;内部函数访问外部函数…

拯救OOM~ 字节自研 Android 虚拟机内存管理优化黑科技 mSponge

本文描述的虚拟机内存管理优化方案&#xff0c;是从应用侧视角对 Android 虚拟机内存管理进行改造&#xff0c;优化了虚拟机对 LargeObjectSpace 的内存管理策略&#xff0c;间接增加其它内存空间使用上限。改造后的方案&#xff0c;32 位运行环境 LargeObjectSpace 的内存使用…

Aspose.CAD for .NET 23.1.0 Crack

Aspose.CAD for .NET 是一个独立的类库&#xff0c;它增强了 Windows 和 ASP.NET 的应用程序&#xff0c;以便在不需要 AutoCAD 甚至任何其他工作流渲染过程的情况下处理和渲染 CAD 绘图。CAD 类库允许将 DWG、DWT、DWXF、IFC、PLT、DGN、OBJ、STL、IGES、CFF2 文件以及图层和布…

封装一个顺序栈,并封装其相应的操作:判空、入栈、出栈、遍历栈、销毁

main.cpp#include <iostream> #include<fei1.h>using namespace std;int main() {der L;//创建L.date(215);//入栈L.ent(45);L.ent(23);L.ent(98);L.ent(12);//遍历L.trav();// 出栈L.come();L.come();//遍历L.trav();//销毁L.dest();return 0; }fei.cpp#include&l…

docker学习(三):docker的常用命令问问

文章目录前言docker镜像分层加载原理docker镜像commit操作产生新镜像本地镜像发布到阿里云将本地镜像推送到私有库前言 大家好&#xff0c;这是我学习docker系列的笔记文章&#xff0c;目标是掌握docker,为后续学习K8s做准备。本文记录了docker镜像分层加载的原理&#xff0c;…

IDEA SpringBoot热部署

IDEA SpringBoot热部署【自动帮开发者重启 SpringBoot项目&#xff0c;以达到】 1.添加SpringBoot热部署框架支持 在pom.xml中添加如下框架引用&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devt…

Smart HTML Elements R1 2023

Smart HTML Elements R1 2023 增加了Angular 15支持。 添加了对Blazor的Microsoft.NET 7支持。 添加了三维图表组件。 添加了对网格保存/加载状态&#xff08;持久状态&#xff09;的支持。 调度程序 定义特定时段的可用性。 现在可以限制用户输入。 当有多个图例时&a…

长沙23岁应届生做软件测试1年,月入10k!室友悔不当初!

先简单的介绍一下自己&#xff0c;大家好&#xff01;我叫做程双喜&#xff0c;今天23&#xff0c;2021年大学毕业于长沙的一所大专学校&#xff0c;专业是软件测试java专业&#xff0c;三年时间过得很快&#xff0c;转眼间来到了毕业季&#xff0c;自己还是一无所成&#xff0…

Hadoop

1 Hadoop常用端口号 hadoop2.xHadoop3.x访问HDFS端口500709870访问MR执行情况端口80888088历史服务器1988819888客户端访问集群端口90008020 2 Hadoop配置文件 hadoop2.x core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml slaves hadoop3.x core-site.xml、hdfs…

ESP-IDF在VSCode中创建工程文件

1.新建工程项目&#xff0c;打开VSCode&#xff0c;打开命令面板&#xff0c;并输入esp-idf new&#xff0c;执行新建esp-idf项目命令&#xff1a; 2.设置项目名&#xff0c;项目工程目录位置&#xff0c;芯片类型&#xff0c;端口号 3.点击choose Template&#xff0c;从一个…

第八届蓝桥杯省赛 C++ A/B组 - 分巧克力

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;蓝桥杯题解集合 &#x1f4dd;原题地址&#xff1a;后缀表达式 &#x1f4e3;专栏定位&#xff1a;为想参加蓝桥杯的小伙伴整理常考算法题解&#xff0c;祝大…

全志A40i+Logos FPGA开发板(4核ARM Cortex-A7)硬件说明书(下)

前 言 本文档主要介绍板卡硬件接口资源以及设计注意事项等内容,测试板卡为创龙科技旗下的全志A40i+Logos FPGA开发板。 核心板的ARM端和FPGA端的IO电平标准一般为3.3V,上拉电源一般不超过3.3V,当外接信号电平与IO电平不匹配时,中间需增加电平转换芯片或信号隔离芯片。按键…

1、语义软分割算法(Semantatic Human Matting)原理及pytorcch代码详述

一、Semantatic Human Matting原理 Semantatic Human Matting 文章链接请点击这里 第一步:将输入图像送入到T-Net中进行计算,得到三张图:Bs、Fs和Us. T-Net:就是一个编码和解码的过程,和常见的语义分割网络类似 Bs:确定的背景区 Fs:确定的前景区 Us: 不确定的区域 第二…

计算机网络详解--套接字编程

目录 1.什么是网络编程 2.TCP/IP协议 3.Socket套接字 流套接字:使用传输层TCP&#xff08;传输控制协议&#xff09; 数据报套接字:使用传输层UDP&#xff08;用户数据报协议&#xff09; 原始套接字 4.Java数据报套接字通信模型 UDP数据报套接字编程 DatagramSocket A…

IDEA集成Docker配置

首先开启Docker的SSH连接&#xff0c;设置Docker允许远程连接sudo vim /lib/systemd/system/docker.service将ExecStart/usr/bin/dockerd -H fd:// --containerd/run/containerd/containerd.sock注释替换为ExecStart/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run…

GP232RL替代FT232RL国产USB转串口/UART芯片

GP232RL为接口转换芯片&#xff0c;可以实现USB到串行UART接口的转换&#xff0c;也可转换到同步、异步Bit-Bang接口模式。具备可选择的时钟产生输出&#xff0c;以及新的FTDIChip-ID安全加密狗功能。 此外&#xff0c;还提供异步和同步bit bang接口模式。使用GP232RL的USB到串…

用Flutter实现GaiaControl BLE OTA升级功能,支持Android/IOS

代码基本移植官方GaiaControl Demo。 支持RWCP 断点续传 设置蓝牙mtu.协议。这里主要分析GAIA CSR ble ota的过程&#xff0c;协议等等&#xff0c;希望对你有所帮助。这里对蓝牙服务特性订阅都不谈。读者自行了解。 Gaia 是CSR 制定的一个上层使用协议&#xff0c;其在BR/EDR…