云服务器内容精选
-
创建镜像仓库 用平台管理员账号登录Octopus平台。 在左侧菜单栏中,单击“镜像仓库 ”。 单击“新建”,填写基本信息。 图1 创建镜像仓库 名称:输入镜像仓库的名称,只能包含数字、英文、中文、下划线、中划线。 用途:根据需求,下拉框选择用途。 描述:简单描述镜像仓库,最大长度为255。 使用范围:仅支持团队,即租户内所有配置了该镜像相关权限的用户都可见可编辑。 单击“确定”,在镜像仓库列表即可查看新建的镜像仓库。
-
准备工作 如果您已有一个华为账号,请忽略此步骤。如果您还没有华为账号,请参考以下步骤创建。 打开华为云官网,单击“注册”。 根据提示信息完成注册,详细操作请参见“ 注册华为账号 并开通华为云”。 注册成功后,系统会自动跳转至您的个人信息界面。 参考个人账号如何完成实名认证或企业账号如何完成实名认证,完成个人或企业账号实名认证。 为账号充值。 配置审计 服务本身为免费服务,但使用资源记录器时资源转储OBS桶和 消息通知 SMN主题至少需要配置一个,因此资源记录器使用的消息通知服务( SMN )或 对象存储服务 (OBS)可能会产生相应的费用,具体请参见SMN计费说明和OBS计费说明。 您需要确保账号有足够的余额,避免因账号余额不足或欠费导致资源记录器的相关功能无法使用,从而影响Config的其他功能也无法使用。如何充值请参见账户充值。 开启并配置资源记录器。 资源清单中的资源数据依赖于资源记录器所收集的资源数据,因此必须保持资源记录器的开启状态。
-
操作场景 本章节指导您如何通过Config的资源清单页面查看和筛选您账号下的资源,便于您了解拥有的资源及其所在区域、资源状态等信息。 资源清单中的资源数据依赖于资源记录器所收集的资源数据,如果相关资源无法在资源清单页面查询到,请确认资源记录器是否开启,或该资源类型是否被资源记录器收集资源数据,或Config暂不支持该服务或资源类型。 资源数据同步到Config存在延迟,因此资源发生变化时不会实时更新“资源清单”中的数据。对于已开启资源记录器的用户,Config会在24小时内校正资源数据。
-
操作步骤 登录管理控制台。 单击页面左上角的图标,在弹出的服务列表中,选择“管理与监管”下的“配置审计 Config”,进入“资源清单”页面。 “资源清单”页面默认展示在资源记录器配置的监控范围内且您拥有的资源信息。 通过选择服务、资源类型和区域来筛选资源,其中全局级服务无需选择区域。 在页面中部的搜索框中通过多种筛选条件进行更精细的资源筛选。 筛选条件 说明 名称 资源名称支持模糊搜索,并且忽略大小写。 资源ID 资源ID支持模糊搜索,但不忽略大小写。 资源状态 通过资源状态对资源进行筛选。 资源状态分为以下两种: 保有中:资源正常使用中。 已删除:资源已删除。 标签 直接在搜索框列表中选择一个标签键,然后再选择此标签键相关的一个标签值或所有标签值,资源列表将自动筛选并展示此标签关联的资源。 企业项目 通过企业项目筛选框选择企业项目,资源列表将自动筛选并展示此企业项目下的资源。 说明: 根据企业项目筛选资源的功能必须要先开通企业项目才可以使用,因此该筛选条件并非对每个用户可见。
-
入门实践 当您购买并连接了GeminiDB Redis数据库实例后,可以根据自身的业务需求使用GeminiDB Redis提供的一系列常用实践。 表1 常用最佳实践 实践 描述 数据迁移 阿里云数据库Redis/Tair到GeminiDB Redis的迁移 本实践主要介绍阿里云数据库Redis/Tair到GeminiDB Redis的迁移方案。使用阿里云的数据迁移工具DTS中的数据迁移功能,该功能支持将阿里云Redis服务的数据迁移至其他Redis服务中,利用该工具避开阿里云 Redis服务屏蔽sync和psync命令限制,实现数据从阿里云Redis服务迁移至华为云GeminiDB Redis中。 腾讯云Redis到GeminiDB Redis的迁移 本实践主要介绍腾讯云Redis到GeminiDB Redis的迁移方案。使用腾讯云的数据迁移工具DTS中的数据同步功能,该功能支持将腾讯云 Redis服务的数据迁移至E CS 自建Redis中,利用该工具避开腾讯云 Redis服务屏蔽分片实际IP,实现数据从腾讯云 Redis服务迁移至华为云GeminiDB Redis中。 自建Redis到GeminiDB Redis的迁移 本实践主要介绍自建Redis到GeminiDB Redis的迁移方案。使用Redis-Shake迁移工具进行源端Redis到目标端GeminiDB Redis的迁移。迁移过程支持全量+增量迁移,支持单机/主从/Cluster集群/RDB文件等多种Redis数据源。 RDB文件恢复到GeminiDB Redis(推荐) 本实践主要介绍RDB到GeminiDB Redis的迁移方案。使用Redis-Shake迁移工具进行源端RDB到目标端GeminiDB Redis的迁移。迁移过程支持全量+增量迁移。 Kvrocks到GeminiDB Redis的迁移 本实践主要介绍Kvrocks到GeminiDB Redis的迁移方案。使用开源工具kvrocks2redis进行Kvrocks到GeminiDB Redis的迁移,在此基础上,从GeminiDB Redis源码层面对Kvrocks的namespace功能进行适配。 Pika到GeminiDB Redis的迁移 本实践主要介绍Pika到GeminiDB Redis的迁移方案。pika-port伪装成Pika的从节点运行,通过主从复制的方式进行数据迁移。Pika主节点通过比较pika-port和自己的binlog偏移量判断做全量迁移还是增量迁移。如果需要做全量迁移,Pika主节点会将全量数据快照发送给pika-port,pika-port将解析后的快照数据发送给GeminiDB Redis。全量迁移结束后进入增量迁移,pika-port将增量数据解析后以redis命令的形式发送给GeminiDB Redis。 SSDB到GeminiDB Redis的迁移 本实践主要介绍SSDB到GeminiDB Redis的迁移方案。ssdb-port作为源端SSDB数据库的主节点的从节点(replica)运行,通过主从复制的方式进行数据迁移。将获取到的数据解析、转换为Redis支持的格式,并发送到配置文件中指定的Redis实例。全量同步完成后,SSDB中新增的数据也会同步到Redis实例中。 LevelDB到GeminiDB Redis的迁移 本实践主要介绍LevelDB到GeminiDB Redis的迁移方案。使用自研迁移工具leveldb-port,和LevelDB部署在相同机器上,准备好配置文件,启动迁移即可自动完成全量与增量的迁移。 RocksDB到GeminiDB Redis的迁移 本实践主要介绍RocksDB到GeminiDB Redis的迁移方案。使用自研迁移工具rocksdb-port,和RocksDB部署在相同机器上,准备好配置文件,启动迁移即可自动完成全量与增量的迁移。 AWS ElasticCache for Redis数据库到GeminiDB Redis的迁移 本实践主要介绍AWS ElasticCache for Redis到GeminiDB Redis的迁移方案。AWS ElasticCache for Redis通过备份导出RDB文件后,通过Redis-Shake迁移工具的数据恢复(restore)将数据迁移到GeminiDB Redis。 数据备份 管理自动备份 介绍如何在数据库实例的备份时段中创建数据库实例的自动备份,系统根据您指定的备份保留期保存数据库实例的自动备份。 管理手动备份 介绍如何为数据库实例手动备份数据,用户可以通过手动备份恢复数据,从而保证数据可靠性。 数据恢复 恢复备份到新实例 介绍如何使用已有的自动备份或手动备份恢复实例数据到新建实例,恢复后的数据与该备份生成时的实例数据一致。 日志管理 慢日志 GeminiDB Redis支持查看数据库级别的慢日志,执行时间的单位为ms。通过该日志,可查找出执行效率低的语句,以便优化。 父主题: 快速入门
-
入门实践 当您购买并连接了GeminiDB Cassandra数据库实例后,可以根据自身的业务需求使用GeminiDB Cassandra提供的一系列常用实践。 表1 常用最佳实践 实践 描述 数据库规范 基本设计规范 介绍GeminiDB Cassandra的基本设计规范。 数据库对象使用规范 介绍数据库对象的使用规范。 数据库使用约束规范 介绍数据库的使用约束规范。 查询规范 介绍GeminiDB Cassandra的查询规范。 变更实例 修改实例名称 GeminiDB Cassandra支持修改数据库实例名称,以方便您区分和识别实例。 重置管理员密码 GeminiDB Cassandra支持重置数据库管理员密码,建议您定期修改密码,以提高系统安全性,防止出现密码被破解等安全风险。 变更实例的CPU和内存规格 当用户购买的实例的CPU和内存规格无法满足业务需要时,可以在控制台进行CPU和内存规格变更。 数据备份 管理自动备份 介绍如何在数据库实例的备份时段中创建数据库实例的自动备份,系统根据您指定的备份保留期保存数据库实例的自动备份。 管理手动备份 介绍如何为数据库实例手动备份数据,用户可以通过手动备份恢复数据,从而保证数据可靠性。 设置跨区域备份策略 介绍如何为数据库实例设置跨区域备份策略,用户可以在异地区域使用目标区域的备份文件恢复到新的GeminiDB Cassandra实例,用来恢复业务。 创建库表级备份 介绍如何为数据库实例创建库表级备份,当数据库或表被恶意或误删除,可依赖实例的备份保障数据安全。 数据恢复 恢复备份到新实例 介绍如何使用已有的自动备份或手动备份恢复实例数据到新建实例,恢复后的数据与该备份生成时的实例数据一致。 恢复备份到指定时间点 介绍如何使用已有的自动备份,恢复实例数据到指定时间点。 日志管理 慢日志 GeminiDB Cassandra支持查看数据库级别的慢日志,执行时间的单位为ms。通过该日志,可查找出执行效率低的语句,以便优化。 父主题: 快速入门
-
入门实践 当您购买并连接了GeminiDB Influx数据库实例后,可以根据自身的业务需求使用GeminiDB Influx提供的一系列常用实践。 表1 常用最佳实践 实践 描述 使用规范 使用规范和建议 从命名、TAG、FIELD、查询等方面介绍GeminiDB Influx使用上的一些规范和建议,用于解决常见的使用错误,低效,难以维护等问题。 解决方案 运维平台数据库解决方案 该解决方案帮助用户快速在华为云上部署数据库运维监控系统Prometheus,用户可以通过部署界面完成参数配置,完成GeminiDB Influx和弹性云服务ECS资源的创建及监控业务的配置。 变更实例 修改实例名称 GeminiDB Influx支持修改数据库实例名称,以方便您区分和识别实例。 重置管理员密码 GeminiDB Influx支持重置数据库管理员密码,建议您定期修改密码,以提高系统安全性,防止出现密码被破解等安全风险。 变更实例的CPU和内存规格 当用户购买的实例的CPU和内存规格无法满足业务需要时,可以在控制台进行CPU和内存规格变更。 数据备份 管理自动备份 介绍如何在数据库实例的备份时段中创建数据库实例的自动备份,系统根据您指定的备份保留期保存数据库实例的自动备份。 管理手动备份 介绍如何为数据库实例手动备份数据,用户可以通过手动备份恢复数据,从而保证数据可靠性。 数据恢复 恢复备份到新实例 介绍如何使用已有的自动备份或手动备份恢复实例数据到新建实例,恢复后的数据与该备份生成时的实例数据一致。 父主题: 快速入门
-
共享Bundle Id相关说明 ScreenShareExtension插件bundle Id格式: 主App bundle Id + ScreenShareExtension ScreenShareExtensionSetupUI插件bundle Id格式: 主App bundle Id + ScreenShareExtensionSetupUI 例: 主App bundle Id:com.xx.xx ScreenShareExtension插件bundIe Id:com.xx.xx.ScreenShareExtension ScreenShareExtensionSetupUI插件bundIe Id:com.xx.xx.ScreenShareExtensionSetupUI iOS端屏幕共享需要添加iOS Extension并实现相关代码,以下步骤用于说明如何集成SDK进行屏幕共享Extension的开发。
-
OBS服务环境搭建 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 注册云服务账号 使用OBS之前必须要有一个云服务账号。 打开浏览器。 登录公有云网站www.huaweicloud.com。 在页面右上角单击“注册”。 按需填写注册信息并单击“同意协议并注册”。 开通OBS服务 使用OBS服务之前必须先充值,才能正常使用OBS服务。 登录OBS管理控制台。 单击页面右上角的“费用与成本”,单击左侧资金管理。 单击“充值”,系统自动跳转到充值窗口。 根据界面提示信息,对账户进行充值。 充值成功后,关闭充值窗口,返回管理控制台首页。 单击“对象存储服务”,开通并进入OBS管理控制台。 创建访问密钥 OBS通过用户账号中的AK和SK进行签名验证,确保通过授权的账号才能访问指定的OBS资源。以下是对AK和SK的解释说明: AK:Access Key ID,接入键标识,用户在对象存储服务系统中的接入键标识,一个接入键标识唯一对应一个用户,一个用户可以同时拥有多个接入键标识。对象存储服务系统通过接入键标识识别访问系统的用户。 SK:Secret Access Key,安全接入键,用户在对象存储服务系统中的安全接入键,是用户访问对象存储服务系统的密钥,用户根据安全接入键和请求头域生成鉴权信息。安全接入键和接入键标识一一对应。 创建访问密钥的操作步骤如下: 登录OBS控制台。 单击页面右上角的用户名,并选择“我的凭证”。 在“我的凭证”页面,单击左侧导航栏的“访问密钥”。 在“访问密钥”页面,单击“新增访问密钥”。 在弹出的“新增访问密钥”对话框中,输入登录密码和对应验证码。 用户如果未绑定邮箱和手机,则只需输入登录密码。 用户如果同时绑定了邮箱和手机,可以选择其中一种方式进行验证。 单击“确定”。 在弹出的“下载确认”提示框中,单击“确定”后,密钥会直接保存到浏览器默认的下载文件夹中。 打开下载下来的“credentials.csv”文件即可获取到访问密钥(AK和SK)。 每个用户最多可创建两个有效的访问密钥。 为防止访问密钥泄露,建议您将其保存到安全的位置。如果用户在此提示框中单击“取消”,则不会下载密钥,后续也将无法重新下载。如果需要使用访问密钥,可以重新创建新的访问密钥。 父主题: 快速入门
-
使用前需知 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 请确认您已经熟悉OBS的基本概念,如桶(Bucket)、对象(Object)、访问密钥(AK和SK)等。 您可以先参考OBS客户端通用示例,了解OBS Android SDK接口调用的通用方式。 使用OBS客户端进行接口调用操作完成后,没有异常抛出,则表明返回值有效;如果抛出异常,则说明操作失败,此时应可SDK自定义异常实例中获取错误信息。 使用OBS客户端进行接口调用成功后,均会返回包含响应头信息的SDK公共响应头实例(或其子类实例)。 当前各区域特性开放不一致,部分特性只在部分区域开放,使用过程中如果接口HTTP状态码为405,请确认该区域是否支持该功能特性。 父主题: 快速入门
-
配置桶允许跨域请求 开发过程中,您有任何问题可以在github上提交issue,或者在华为云对象存储服务论坛中发帖求助。接口参考文档详细介绍了每个接口的参数和使用方法。 要使用OBS BrowserJS SDK访问OBS服务的桶,必须配置该桶允许跨域请求(桶的CORS),推荐为桶的CORS配置的规则如下: 配置项 配置值 说明 AllowedOrigin * 允许任意请求来源。 说明: 也可以配置具体的 域名 或IP。 AllowedMethod PUT、GET、POST、DELETE、HEAD 允许所有的HTTP方法。 AllowedHeader * 允许请求中携带任意头域。 ExposeHeader ETag x-obs-request-id x-obs-api Content-Type Content-Length Cache-Control Content-Disposition Content-Encoding Content-Language Expires x-obs-id-2 x-reserved-indicator x-obs-version-id x-obs-copy-source-version-id x-obs-storage-class x-obs-delete-marker x-obs-expiration x-obs-website-redirect-location x-obs-restore x-obs-version x-obs-object-type x-obs-next-append-position 允许响应中返回指定的附加头域。 须知: 附加头域:指定浏览器可以暴露给客户端的响应消息头。 比如在浏览器环境中,需要获取ETag值,由于ETag不属于标准响应头,就需要添加到扩展头域。 您可以从这里参考各客户端工具配置CORS的详细步骤。 父主题: 快速入门
-
使用npm命令下载安装 运行npm -v命令查看npm版本并确保npm已安装。 运行npm install esdk-obs-browserjs命令执行安装。 如果您使用的是Windows操作系统,当运行npm命令时提示“不是内部或外部命令”,请在Path环境变量中增加npm的安装目录(一般为Node.js的安装目录)。 您可能需要重启电脑使环境变量生效。 如果您使用npm安装依赖时出现网络错误,请使用代理。
-
购买须知 第一次使用公有云服务时,系统将自动为您创建一个虚拟私有云,包括安全组、网卡。同时,用户可根据需要自行创建一个虚拟私有云,更多关于虚拟私有云的信息,请参考《虚拟私有云用户指南》。 用户可使用系统自动创建的安全组,也可以根据需要自行创建一个安全组使用,安全组规则的配置会影响弹性云服务器的正常访问与使用。 为确保集群能正常创建/部署,需保证安全组规则22端口开放。具体配置方法请参见:为安全组添加安全组规则 一站式HPC服务使用弹性文件服务SFS作为文件共享存储,更多关于弹性文件系统的信息,请参见《弹性文件服务用户指南》。
-
获取cn-north-4区域的桶列表 示例中使用通用的Apache Http Client。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 package com.obsclient; import java.io.*; import java.util.ArrayList; import java.util.List; import org.apache.http.Header; import org.apache.http.HttpEntity; import org.apache.http.NameValuePair; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPut; import org.apache.http.entity.InputStreamEntity; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClients; import org.apache.http.message.BasicNameValuePair; public class TestMain { /* 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全; 本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境中设置环境变量HUAWEICLOUD_SDK_AK和HUAWEICLOUD_SDK_SK。*/ public static String accessKey = System.getenv("HUAWEICLOUD_SDK_AK"); //取值为获取的AK public static String securityKey = System.getenv("HUAWEICLOUD_SDK_SK"); //取值为获取的SK public static void main(String[] str) { listAllMyBuckets(); } private static void listAllMyBuckets() { CloseableHttpClient httpClient = HttpClients.createDefault(); String requesttime = DateUtils.formatDate(System.currentTimeMillis()); HttpGet httpGet = new HttpGet("http://obs.cn-north-4.myhuaweicloud.com"); httpGet.addHeader("Date", requesttime); /** 根据请求计算签名**/ String contentMD5 = ""; String contentType = ""; String canonicalizedHeaders = ""; String canonicalizedResource = "/"; // Content-MD5 、Content-Type 没有直接换行, data格式为RFC 1123,和请求中的时间一致 String canonicalString = "GET" + "\n" + contentMD5 + "\n" + contentType + "\n" + requesttime + "\n" + canonicalizedHeaders + canonicalizedResource; System.out.println("StringToSign:[" + canonicalString + "]"); String signature = null; try { signature = Signature.signWithHmacSha1(securityKey, canonicalString); // 增加签名头域 Authorization: OBS AccessKeyID:signature httpGet.addHeader("Authorization", "OBS " + accessKey + ":" + signature); CloseableHttpResponse httpResponse = httpClient.execute(httpGet); // 打印发送请求信息和收到的响应消息 System.out.println("Request Message:"); System.out.println(httpGet.getRequestLine()); for (Header header : httpGet.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } System.out.println("Response Message:"); System.out.println(httpResponse.getStatusLine()); for (Header header : httpResponse.getAllHeaders()) { System.out.println(header.getName() + ":" + header.getValue()); } BufferedReader reader = new BufferedReader(new InputStreamReader( httpResponse.getEntity().getContent())); String inputLine; StringBuffer response = new StringBuffer(); while ((inputLine = reader.readLine()) != null) { response.append(inputLine); } reader.close(); // print result System.out.println(response.toString()); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { httpClient.close(); } catch (IOException e) { e.printStackTrace(); } } } } 其中Date头域DateUtils的格式为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package com.obsclient; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Locale; import java.util.TimeZone; public class DateUtils { public static String formatDate(long time) { DateFormat serverDateFormat = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.ENGLISH); serverDateFormat.setTimeZone(TimeZone.getTimeZone("GMT")); return serverDateFormat.format(time); } } 签名字符串Signature的计算方法为: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package com.obsclient; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import java.io.UnsupportedEncodingException; import java.security.NoSuchAlgorithmException; import java.security.InvalidKeyException; import java.util.Base64; public class Signature { public static String signWithHmacSha1(String sk, String canonicalString) throws UnsupportedEncodingException { try { SecretKeySpec signingKey = new SecretKeySpec(sk.getBytes("UTF-8"), "HmacSHA1"); Mac mac = Mac.getInstance("HmacSHA1"); mac.init(signingKey); return Base64.getEncoder().encodeToString(mac.doFinal(canonicalString.getBytes("UTF-8"))); } catch (NoSuchAlgorithmException | InvalidKeyException | UnsupportedEncodingException e) { e.printStackTrace(); } return null; } }
-
迁移任务创建流程 图1 实时迁移任务创建流程 获取用户token:通过调用 IAM 服务的API,获取用户的Token。 创建迁移实例:根据需要,创建迁移任务。 查询任务创建进度:查询任务当前具体状态 测试连接:测试与源库和目标库的连接,以便继续进行任务。 更新任务信息:修改任务名称或描述,设置异常通知信息。 添加需要迁移的用户信息和库表信息:更新需要迁移的用户、角色信息,选择需要迁移的数据库或者表。 执行预检查:执行预检查,校验是否可进行迁移。 查询预检查结果:查看预检查结果,预检查通过后可执行下一步。 源库、目标库参数对比:获取源库和目标库的数据库参数。 启动任务:启动实时迁移任务。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格