当前位置: 首页 > news >正文

OpenStack Yoga版安装笔记(十六)Openstack网络理解

0、前言

本文将以Openstack在Linux Bridge环境下的应用为例进行阐述。

1、Openstack抽象网络

OpenStack的抽象网络主要包括网络(network)子网(subnet)端口(port)路由器(router)。有了这些基础的网络抽象元素,就能够灵活地进行二层或三层的网络组建。

Openstack视图的网络拓扑
Openstack抽象网络示意

另外,需要特别指出的是,OpenStack的抽象网络是由特定用户(user)在特定项目(project)下创建的。

这意味着OpenStack的抽象网络具有项目(project)属性,也就是租户(Ternant)属性,因为openstack里面的project,其实就是租户的概念,目的是对资源进行隔离(包括计算/网络/存储),相互不可见,但不意味着相互不能通讯。通过设置,不同租户的网络环境是可以互通的,比如通过各自的router或者共享的router互指路由。

Openstack抽象网络具有Project/租户属性示意

Openstack的抽象网络可以被看作是Openstack自己眼中的网络,或者是从租户/用户/项目的视角看到的网络,它是一个相对简单的三层路由和二层交换(L3 routing/L2 switching)环境。

2、Openstack实体网络

OpenStack的实体网络虚拟网络物理网络两部分组成。

虚拟网络主要是指在主机(例如控制节点和计算节点)内部,通过虚拟网络技术创建的网络,如Linux bridge和Linux OVS。这里的虚拟网络是指可以通过Openstack借助虚拟网络技术进行创建和管理的部分。

物理网络则涉及主机的网卡(因为主机内的虚机需要和外部通讯,不同主机的虚机之间也需要通讯,这些都需要借助网卡进行)。这里的物理网络是指可以通过Openstack进行控制的部分,比如把一个网卡作为bridge的一个端口。

Openstack实体网络示意

Openstack实体网络可以理解为Openstack抽象网络的具体实现。Openstack实体网络通常对租户/user/project不可见。实体网络通常由Openstack管理员(admin)进行管理和维护。 

 3、Openstack抽象网络和实体网络的关系

1、OpenStack 负责配置实体网络的参数。

/etc/neutron/plugins/ml2/ml2_conf.ini 是 OpenStack Neutron 网络服务的一个配置文件,用于定义 ML2 插件的行为。ML2 是一个多厂商的网络驱动程序插件,它允许 Neutron 支持多种网络类型。

这个文件通常包含以下内容:

  1. type_drivers: 定义了 Neutron 支持的网络类型,如 flatvlangrevxlan 等。
  2. tenant_network_types: 定义了租户网络可以使用的网络类型。
  3. mechanism_drivers: 定义了网络后端的机制驱动程序,如 openvswitchlinuxbridgesriovnicswitch 等。

/etc/neutron/plugins/ml2/linuxbridge_agent.ini 是 OpenStack Neutron 的一个配置文件,用于设置 Linux Bridge 代理的行为。以下是该配置文件中一些常见的配置选项:

  1. [linux_bridge] 部分包含物理网络接口的映射设置,例如:
    • physical_interface_mappings:将物理网络名称映射到代理节点(比如controller node或者compute node)特定的物理网络接口。
  2. [vxlan] 部分包含 VXLAN 网络的配置,例如:
    • enable_vxlan:是否启用 VXLAN。
    • local_ip:本地隧道网络端点的 IP 地址。
  3. [securitygroup] 部分包含安全组的配置,例如:
    • enable_security_group:是否启用安全组。
    • firewall_driver:安全组防火墙的驱动程序。

2、OpenStack 负责创建/编排抽象网络,并根据实体网络的配置,自动构建实体网络(包括虚拟网络和物理网络)。

4、创建Openstack抽象网络,实体网络自动执行相关操作

4.1 创建network

Openstack创建network

这是创建network的例子。user admin在project admin下,创建了一个名称为“provider”的network,这个network是share的,意味着其他project可以使用这个network。这个network关联了物理网络“provider”,这个物理网络是在ml2_conf.ini文件中进行了定义,并且在每台主机的linuxbridge_agent.ini中和该主机的网卡进行了映射,说明这个network在每台主机是如何和物理网络进行对接的。

从网络方面看,一个network代表着一个二层的广播域。对应实体网络就是每台主机的一个bridge。这个bridge是按需创建的,单纯的创建一个network,并不会在实体网络中有具体操作。

4.2 创建subnet

创建subnet

在network “provider"之上,创建了一个名称为”provider"的subnet。

从网络方面看,subnet是指IP子网的概念。subnet并没有对应的实体网络。subnet主要限制了主机IP地址之间的通讯方式。

IP地址之间通讯,依赖IP地址,同时还依赖子网掩码。

当一个主机A需要和另一个主机B通讯时,首先会将目的主机B的IP地址和自己的掩码(主机A的掩码)进行计算,得出子网号1。

同时,主机A自己的IP地址和自己的掩码(主机A的掩码)进行计算,得出子网号2。

如果子网号1和子网号2相同,主机A就知道主机B和自己在同一个子网(subnet),此时主机A如果不知道主机B的MAC地址,就发出ARP广播请求(目的地址255.255.255.255),这个ARP请求会封装为二层的广播帧(目的地址FFFF.FFFF.FFFF)

如果子网1和子网号2不同,主机A就知道主机B和自己不在同一个子网,此时主机A就直接把这个包发给网关(gateway)。此时主机A会把IP包(源地址主机A的IP,目的地址主机B的IP)封装为二层帧(源MAC为主机A的MAC,目的MAC为网关的MAC)。主机A如果只知道网关的IP地址(配置中会指明),不知道网关的MAC地址,也会首先发出ARP请求,查找网关的MAC地址。

举例说明:

1、假设主机A为192.168.1.1,掩码为255.255.255.0,主机B为192.168.1.2,A需要和B通讯,A则将192.168.1.2和255.255.255.0进行计算,得出子网号1(192.168.1.0),同时A将自己的IP地址192.168.1.1和255.255.255.0进行计算,得出子网号2(192.168.1.0),子网号1和子网号2相同,所以A知道B和自己在同一个子网(subnet)。如果A不知道B的MAC地址,发出ARP进行查找。

2、假设主机A为192.168.1.1,掩码为255.255.255.0,主机B为192.168.2.2,A需要和B通讯,A则将192.168.2.2和255.255.255.0进行计算,得出子网号1(192.168.2.0),同时A将自己的IP地址192.168.1.1和255.255.255.0进行计算,得出子网号2(192.168.1.0),子网号1和子网号2不相同,所以A知道B和自己不在同一个子网(subnet),此时IP包(源地址为192.168.1.1,目的地址为192.168.2.2)会封装成二层帧(源地址为A的mac,目的地址为网关的mac),发往网关进行处理。如果A不知道网关的MAC地址,会首先发出ARP进行查找。

这个subnet上的虚机需要dhcp动态分配地址。这就需要在实体网络在进行具体的操作。

在neutron安装中,在controller安装了dhcp agent:

在controller node上会针对"provider" network创建一个network namespace,运行dhcp服务,专门用于这个network的dhcp服务:

同时在controller node针对"provider" network,创建一个bridge,dhcp的netns会连接到这个bridge。

为了给这个subnet提供dhcp服务,在qdhcp-48f2b连接bridge的端口分配了该子网的IP地址:

 4.3 创建虚机

首先由nova决定在哪台主机创建虚机,这里是在compute1节点创建了虚机。

同时通过--nic参数指定在network "provider"上创建虚机。

该虚机在正常创建和启动的情况下,在compute1上会针对network "provider"创建一个bridge,虚机连接到该bridge,同时网卡ens35也连接到该bridge上:

这样,虚机在启动过程中,发送dhcp请求就可以到达controller节点上的dhcp server(qdhcp-qdhcp-48f2b)

虚机启动后通过dhcp获取IP地址

 通过wireshark在vmnet6抓包,可以观察dhcp数据流:

 4.4 port

port是network的一部分。在openstack抽象网络,network代表了一个广播域,可以理解为一个大的虚拟交换机。port就是虚拟交换机的端口。

port可以关联一个或多个安全组,用于控制网络访问。

在本文中,qdhcp、虚机都连接到相应的port上。

root@osclient ~(admin/amdin)# openstack port list
+--------------------------------------+------+-------------------+------------------------------------------------------------------------------+--------+
| ID                                   | Name | MAC Address       | Fixed IP Addresses                                                           | Status |
+--------------------------------------+------+-------------------+------------------------------------------------------------------------------+--------+
| 2d863922-bc61-4041-a13e-258f629719b2 |      | fa:16:3e:60:78:cd | ip_address='203.0.113.125', subnet_id='8279842e-d7c5-4ba6-a037-831e0a72a938' | ACTIVE |
| a51b2fe4-049f-4462-ba5d-9660c4faaca1 |      | fa:16:3e:5b:d6:a5 | ip_address='203.0.113.101', subnet_id='8279842e-d7c5-4ba6-a037-831e0a72a938' | ACTIVE |
+--------------------------------------+------+-------------------+------------------------------------------------------------------------------+--------+
root@osclient ~(admin/amdin)# openstack port show a51b2fe4-049f-4462-ba5d-9660c4faaca1
+-------------------------+-------------------------------------------------------------------------------+
| Field                   | Value                                                                         |
+-------------------------+-------------------------------------------------------------------------------+
| admin_state_up          | UP                                                                            |
| allowed_address_pairs   |                                                                               |
| binding_host_id         | controller                                                                    |
| binding_profile         |                                                                               |
| binding_vif_details     | bound_drivers.0='linuxbridge', connectivity='l2', port_filter='True'          |
| binding_vif_type        | bridge                                                                        |
| binding_vnic_type       | normal                                                                        |
| created_at              | 2024-09-26T00:19:22Z                                                          |
| data_plane_status       | None                                                                          |
| description             |                                                                               |
| device_id               | dhcpd3377d3c-a0d1-5d71-9947-f17125c357bb-48f2b88e-7740-4d94-a631-69e2abadf25b |
| device_owner            | network:dhcp                                                                  |
| device_profile          | None                                                                          |
| dns_assignment          | None                                                                          |
| dns_domain              | None                                                                          |
| dns_name                | None                                                                          |
| extra_dhcp_opts         |                                                                               |
| fixed_ips               | ip_address='203.0.113.101', subnet_id='8279842e-d7c5-4ba6-a037-831e0a72a938'  |
| id                      | a51b2fe4-049f-4462-ba5d-9660c4faaca1                                          |
| ip_allocation           | None                                                                          |
| mac_address             | fa:16:3e:5b:d6:a5                                                             |
| name                    |                                                                               |
| network_id              | 48f2b88e-7740-4d94-a631-69e2abadf25b                                          |
| numa_affinity_policy    | None                                                                          |
| port_security_enabled   | False                                                                         |
| project_id              | ee65b6c3961747b988ab8bd1cc19fb93                                              |
| propagate_uplink_status | None                                                                          |
| qos_network_policy_id   | None                                                                          |
| qos_policy_id           | None                                                                          |
| resource_request        | None                                                                          |
| revision_number         | 26                                                                            |
| security_group_ids      |                                                                               |
| status                  | ACTIVE                                                                        |
| tags                    |                                                                               |
| trunk_details           | None                                                                          |
| updated_at              | 2024-10-06T22:14:04Z                                                          |
+-------------------------+-------------------------------------------------------------------------------+
root@osclient ~(admin/amdin)# openstack port show 2d863922-bc61-4041-a13e-258f629719b2
+-------------------------+------------------------------------------------------------------------------+
| Field                   | Value                                                                        |
+-------------------------+------------------------------------------------------------------------------+
| admin_state_up          | UP                                                                           |
| allowed_address_pairs   |                                                                              |
| binding_host_id         | compute1                                                                     |
| binding_profile         |                                                                              |
| binding_vif_details     | bound_drivers.0='linuxbridge', connectivity='l2', port_filter='True'         |
| binding_vif_type        | bridge                                                                       |
| binding_vnic_type       | normal                                                                       |
| created_at              | 2024-09-28T02:49:21Z                                                         |
| data_plane_status       | None                                                                         |
| description             |                                                                              |
| device_id               | d2e4bc39-63c8-4c80-b33f-52f4e1891f50                                         |
| device_owner            | compute:nova                                                                 |
| device_profile          | None                                                                         |
| dns_assignment          | None                                                                         |
| dns_domain              | None                                                                         |
| dns_name                | None                                                                         |
| extra_dhcp_opts         |                                                                              |
| fixed_ips               | ip_address='203.0.113.125', subnet_id='8279842e-d7c5-4ba6-a037-831e0a72a938' |
| id                      | 2d863922-bc61-4041-a13e-258f629719b2                                         |
| ip_allocation           | None                                                                         |
| mac_address             | fa:16:3e:60:78:cd                                                            |
| name                    |                                                                              |
| network_id              | 48f2b88e-7740-4d94-a631-69e2abadf25b                                         |
| numa_affinity_policy    | None                                                                         |
| port_security_enabled   | True                                                                         |
| project_id              | f5e75a3f7cc347ad89d20dcfe70dae01                                             |
| propagate_uplink_status | None                                                                         |
| qos_network_policy_id   | None                                                                         |
| qos_policy_id           | None                                                                         |
| resource_request        | None                                                                         |
| revision_number         | 24                                                                           |
| security_group_ids      | 15dfe688-d6fc-4231-a670-7b832e08fb9d                                         |
| status                  | ACTIVE                                                                       |
| tags                    |                                                                              |
| trunk_details           | None                                                                         |
| updated_at              | 2024-10-07T03:45:50Z                                                         |
+-------------------------+------------------------------------------------------------------------------+
root@osclient ~(admin/amdin)# 

4.5 相关操作归纳

Openstack操作抽象网络实体网络相关操作
controler节点compute1节点
1创建networknetwork "provider"无操作无操作
2创建subnetsbunet "provider“

a.创建bridge

b.创建qdhcp netns

c. qdhcp、网卡ens34连接到bridge

无操作
3创建虚机”provider-instance"无操作

a.创建bridge

b.创建并启动虚机,连接到bridge

c.网卡ens35连接到bridge

注:如果没有虚机连接到该bridge,bridge将删除

4port(这里是自动创建的)

连接qdhcp的port

连接虚机的port

无操作无操作

相关文章:

OpenStack Yoga版安装笔记(十六)Openstack网络理解

0、前言 本文将以Openstack在Linux Bridge环境下的应用为例进行阐述。 1、Openstack抽象网络 OpenStack的抽象网络主要包括网络(network)、子网(subnet)、端口(port),路由器(rout…...

PEFT库和transformers库在NLP大模型中的使用和常用方法详解

PEFT(Parameter-Efficient Fine-Tuning)库是一个用于有效微调大型预训练语言模型的工具,尤其是在计算资源有限的情况下。它提供了一系列技术,旨在提高微调过程的效率和灵活性。以下是PEFT库的详细解读以及一些常用方法的总结&…...

静止坐标系和旋转坐标系变换的线性化,锁相环线性化通用推导

将笛卡尔坐标系的电压 [ U x , U y ] [U_x, U_y] [Ux​,Uy​] 通过旋转变换(由锁相环角度 θ P L L \theta_{PLL} θPLL​ 控制)转换为 dq 坐标系下的电压 [ U d , U q ] [U_d, U_q] [Ud​,Uq​]。这个公式是非线性的,因为它涉及到正弦和余弦函数。 图片中的推导过程主要…...

AI学习指南深度学习篇-学习率衰减的变体及扩展应用

AI学习指南深度学习篇 - 学习率衰减的变体及扩展应用 在深度学习的训练过程中,学习率的选择对模型的收敛速度和最终效果有重要影响。为了提升模型性能,学习率衰减(Learning Rate Decay)作为一种优化技术被广泛应用。本文将探讨多…...

成都睿明智科技有限公司真实可靠吗?

在这个日新月异的电商时代,抖音作为短视频与直播电商的佼佼者,正以前所未有的速度重塑着消费者的购物习惯。而在这片充满机遇与挑战的蓝海中,成都睿明智科技有限公司以其独到的眼光和专业的服务,成为了众多商家信赖的合作伙伴。今…...

力扣6~10题

题6(中等): 思路: 这个相较于前面只能是简单,个人认为,会print打印菱形都能搞这个,直接设置一个2阶数组就好了,只要注意位置变化就好了 python代码: def convert(self,…...

IntelliJ IDEA 2024.2 新特性概览

文章目录 1、重点特性:1.1 改进的 Spring Data JPA 支持1.2 改进的 cron 表达式支持1.3 使用 GraalJS 作为 HTTP 客户端的执行引擎1.4 更快的编码时间1.5 K2 模式下的 Kotlin 性能和稳定性改进 2、用户体验2.1 改进的全行代码补全2.2 新 UI 成为所有用户的默认界面2.3 Search E…...

C++基础(12)——初识list

目录 1.list的简介(引用自cplusplus官网) 2.list的相关使用 2.1有关list的定义 2.1.1方式一(构造某类型的空容器) 2.1.2方式二(构造n个val的容器) 2.1.3方式三(拷贝构造) 2.1.4…...

系统架构设计师论文《论NoSQL数据库技术及其应用》精选试读

论文真题 随着互联网web2.0网站的兴起,传统关系数据库在应对web2.0 网站,特别是超大规模和高并发的web2.0纯动态SNS网站上已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展…...

产品经理产出的原型设计 - 需求文档应该怎么制作?

需求文档,产品经理最终产出的文档,也是产品设计最终的表述形式。本次分享呢,就是介绍如何写好一份需求文档。 所有元件均可复用,可作为管理端原型设计模板,按照实际项目需求进行功能拓展。有需要的话可分享源文件。 …...

phenylalanine ammonia-lyase苯丙氨酸解氨酶PAL功能验证-文献精读61

Molecular cloning and characterization of three phenylalanine ammonia-lyase genes from Schisandra chinensis 五味子中三种苯丙氨酸解氨酶基因的分子克隆及特性分析 摘要 苯丙氨酸解氨酶(PAL)催化L-苯丙氨酸向反式肉桂酸的转化,是植物…...

柯桥生活口语学习之在化妆品店可以用到的韩语句子

화장품을 사고 싶어요. 我想买化妆品。 어떤 화장품을 원하세요? 您想买什么化妆品。 스킨로션을 찾고 있어요. 我想买化妆水,乳液。 피부 타입은 어떠세요? 您是什么皮肤类型? 민감성 피부예요. 我是敏感性皮肤。 평소에 쓰시는 제품은 뭐예…...

Ubuntu 安装 Docker Compose

安装Docker Compose # 删除现有的 docker-compose(如果存在) sudo rm -f /usr/local/bin/docker-compose ​ # 下载最新的 docker-compose 二进制文件 sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-…...

C++面试速通宝典——7

150. 数据库连接池的作用 数据库连接池的作用包括以下几个方面: 资源重用:连接池允许多个客户端共享有限的数据库连接,减少频繁创建和销毁连接的开销,从而提高资源的利用率。 统一的连接管理:连接池集中管理数据库连…...

毕业设计 大数据电影数据分析与可视化系统

文章目录 0 简介1 课题背景2 效果实现3 爬虫及实现4 Flask框架5 Ajax技术6 Echarts7 最后 0 简介 今天学长向大家介绍一个机器视觉的毕设项目 🚩基于大数据的电影数据分析与可视化系统 项目运行效果(视频): 毕业设计 大数据电影评论情感分析 &#x1…...

第三届图像处理、计算机视觉与机器学习国际学术会议(ICICML 2024)

目录 重要信息 大会简介 组织单位 大会成员 征稿主题 会议日程 参会方式 重要信息 大会官网:www.icicml.org 大会时间:2024年11月22日-24日 大会地点:中国 深圳 大会简介 第三届图像处理、计算机视觉与机器学…...

OJ在线评测系统 微服务技术入门 单体项目改造为微服务 用Redis改造单机分布式锁登录

单体项目改造为微服务 什么是微服务 服务:提供某类功能的代码 微服务:专注于提供某类特定功能的代码 而不是把所有的代码放到同一个项目里 会把一个大的项目按照一定的功能逻辑进行划分 拆分成多个子模块 每个子模块可以独立运行 独立负责一类功能 …...

【机器学习】网络安全——异常检测与入侵防御系统

我的主页:2的n次方_ 随着全球互联网和数字基础设施的不断扩展,网络攻击的数量和复杂性都在显著增加。从传统的病毒和蠕虫攻击到现代复杂的高级持续性威胁(APT),网络攻击呈现出更加智能化和隐蔽化的趋势。面对这样的…...

【C语言】基础篇续

最大公约数HCF与最小公倍数LCM #include<stdio.h> int main(){int n1,n2,i,hcf,lcm;printf("Enter two numbers:");scanf("%d %d",&n1,&n2);for(i 1;i < n1 & i < n2;i){if(n1 % i 0 & n2 % i 0){hcf i;lcm (n1*n2)/hc…...

文件丢失一键找回,四大数据恢复免费版工具推荐!

丢失数据的情况虽然不经常出现&#xff0c;但一旦出现都会让人头疼不已&#xff0c;而这时候&#xff0c;要如何恢复丢失的数据呢&#xff1f;一款免费好用的数据恢复工具就派上用场了&#xff01;接下来就为大家推荐几款好用的数据恢复工具&#xff01; 福昕数据恢复 直达链…...

【学习笔记】手写一个简单的 Spring MVC

目录 一、什么是Spring MVC &#xff1f; Spring 和 Spring MVC 的区别&#xff1f; Spring MVC 的运行流程&#xff1f; 二、实现步骤 1. DispatcherServlet 1. 创建一个中央分发器 拦截所有请求 测试 2. 接管 IOC 容器 1. 创建配置文件 2. 修改 web.xml 配置文件 …...

编程究竟难在哪里?

目录 一、将现实问题转化为代码二、应对需求的不断变化三、设计新算法的挑战结语 编程之难&#xff0c;常被概括为三个方面&#xff1a;首先&#xff0c;是将现实世界的问题转化为计算机语言的挑战&#xff1b;其次&#xff0c;是需求不断变化所带来的适应性难题&#xff1b;最…...

C#医学影像分析源码,医院影像中心PACS系统源码

医学影像系统源码&#xff0c;影像诊断系统PACS源码&#xff0c;C#语言&#xff0c;C/S架构的PACS系统全套源代码。 PACS系统是医院影像科室中应用的一种系统&#xff0c;主要用于获取、传输、存档和处理医学影像。它通过各种接口&#xff0c;如模拟、DICOM和网络&#xff0c;以…...

WooCommerce与wordpress是什么关系

WooCommerce与WordPress之间的关系非常紧密&#xff0c;因为WooCommerce实际上是一个为WordPress设计的插件。WordPress是一个内容管理系统(CMS)&#xff0c;广泛用于创建各种类型的网站&#xff0c;包括博客、企业网站等。而WooCommerce则是一个免费且开源的电子商务插件&…...

Web常见的攻击方式及防御方法

Web常见的攻击方式及防御方法如下&#xff1a; 1. 跨站脚本&#xff08;XSS&#xff09; 攻击方式&#xff1a;恶意代码被注入到网页中&#xff0c;用户浏览时执行该代码&#xff0c;导致窃取用户信息、伪造页面等。防御&#xff1a; 对用户输入严格过滤、转义。使用安全的编…...

基于STM32的超声波测距仪设计

引言 本项目将基于STM32微控制器设计一个超声波测距仪&#xff0c;通过超声波传感器实现距离测量&#xff0c;并将结果显示在液晶屏上。该项目展示了STM32微控制器与超声波传感器、LCD显示器的接口通信&#xff0c;以及信号处理和距离计算的过程。 环境准备 1. 硬件设备 ST…...

【数据库】Java 集成mongodb— MongoTemplate 详解

MongoTemplate 是 Spring Data MongoDB 提供的核心类&#xff0c;用于简化与 MongoDB 数据库的交互。它封装了许多常见的数据库操作&#xff0c;使开发者能够轻松执行 CRUD&#xff08;创建、读取、更新、删除&#xff09;操作&#xff0c;处理复杂查询和聚合等。本文将详细介绍…...

腿和脚的动作透露出你的内心“世界”

离大脑越近的部位越容易受大脑控制&#xff0c;而腿脚离大脑最远&#xff0c;想要在第一时间进行伪装是很难的。当危险靠近时&#xff0c;我们的双腿会自然而然地进入戒备状态&#xff0c;产生一些不自觉的动作。因此&#xff0c;观察一个人的腿脚&#xff0c;可以帮助我们了解…...

Oracle架构之用户,权限,角色讲解

文章目录 1 用户1.1 简介1.1.1 定义1.1.2 用户相关信息1.1.2.1 用户默认表空间1.1.2.2 用户临时表空间1.1.2.3 用户资源文件1.1.2.4 用户表空间限额1.1.2.5 用户管理有关的数据字典 1.1.3 用户、模式、模式对象1.1.4 实例模式 SCOTT1.1.5 各个角色区别 1.2 用户管理1.2.1 创建用…...

Unity_Obfuscator Pro代码混淆工具_学习日志

Unity_Obfuscator Pro代码混淆工具_学习日志 切勿将密码或 API 密钥存储在您附带的应用程序内。 混淆后的热更新暂时没有想到怎么办 Obfuscator 文档 https://docs.guardingpearsoftware.com/manual/Obfuscator/Description.html商店链接Obfuscator Pro&#xff08;大约$70&a…...