Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CKafka系列学习文章 - 调用API接口管理主题(十三)

CKafka系列学习文章 - 调用API接口管理主题(十三)

原创
作者头像
发哥说消息队列
修改于 2019-09-16 03:04:35
修改于 2019-09-16 03:04:35
60900
代码可运行
举报
运行总次数:0
代码可运行

导语:通过调用API来管理CKafka主题信息,添加或删除主题白名单。

一、创建主题

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口(CreateTopic)用于在消息队列 CKafka 实例下创建主题。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 页面。

参数名称

必选

类型

描述

instanceId

String

实例 ID。

topicName

String

主题名称,是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线-。

partitionNum

Int

Partition 个数,大于0。

replicaNum

Int

副本个数,不能多于 broker 数,最大为3。

note

String

主题备注,是一个不超过 64 个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线-。

enableWhiteList

Int

IP 白名单开关,1:打开 0:关闭,默认不打开。

ipWhiteList.n

String

IP 白名单列表,配额限制,enableWhileList=1 时必选。

cleanUpPolicy

String

清理日志策略,日志清理模式,默认为"delete"。"delete":日志按保存时间删除,"compact":日志按 key 压缩,"compact, delete":日志按 key 压缩且会按保存时间删除。

minInsyncReplicas

Int

默认为1。

uncleanLeaderElectionEnable

Int

默认为0。 0表示 false。 1表示 true。

retentionMs

Int

消息保留时间,单位:ms,当前最小值为60000ms。

segmentMs

Int

Segment 分片滚动的时长,单位:ms,当前最小为86400000ms。

3. java实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制

	/* 创建主题
	 * minInsyncReplicas和uncleanLeaderElectionEnable的解释和用处请看
	 * https://cloud.tencent.com/developer/article/1493804
	 *  */
   public static String CreateTopic(String nonce,String timestamp) {
    	
    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "CreateTopic");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);  
        param.put("instanceId",instanceId);//实例 ID
        param.put("topicName", "topic_jensen1");//主题名称
        param.put("partitionNum", 2);//Partition 个数,大于0
        param.put("replicaNum", 2);//副本个数,不能多于 broker 数,最大为3
        //选填项
        param.put("note","topic_Jensen1");//主题备注,是一个不超过 64 个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线-。
        param.put("enableWhiteList","1");//IP 白名单开关,1:打开, 0:关闭,默认不打开。
        param.put("ipWhiteList.0","10.1.1.250");//IP 白名单列表,配额限制,enableWhileList=1 时必选。
        param.put("cleanUpPolicy","delete");//清理日志策略,日志清理模式,默认为"delete"。1,"delete":日志按保存时间删除。2,"compact":日志按 key 压缩。3,"compact, delete":日志按 key 压缩且会按保存时间删除。
        param.put("minInsyncReplicas","1");//默认为1。
        param.put("uncleanLeaderElectionEnable","0");//默认为0。 0表示 false。 1表示 true。
        //param.put("retentionMs","");//消息保留时间,单位:ms,当前最小值为60000ms(1分钟)。
        //param.put("segmentMs","");//Segment 分片滚动的时长,单位:ms,当前最小为86400000ms(1天)。
    	return getResult(param,url);
    }  

4. 执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  //修改主题属性
  String result=SetTopicAttributes(nonce,timestamp);

5. 结果

执行前:

返回结果:{"code":0,"message":"","codeDesc":"Success","data":{"topicId":"topic-pc6bi41k"}}

执行后:

实例详情
实例详情

二、修改主题属性

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口(SetTopicAttributes)用于在消息队列 CKafka 实例下修改主题属性。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 页面。

参数名称

必选

类型

描述

instanceId

String

实例 ID。

topicName

String

主题名称。

note

String

主题备注,是一个不超过64个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线-。

enableWhiteList

Int

IP 白名单开关,1:打开;0:关闭。

minInsyncReplicas

Int

默认为1。

uncleanLeaderElectionEnable

Int

默认为 0,0:false;1:true。

retentionMs

Int

消息保留时间,单位:ms,当前最小值为60000ms。

segmentMs

Int

Segment 分片滚动的时长,单位:ms,当前最小为86400000ms。

maxMessageBytes

Int

主题消息最大值,单位为 Byte,最大值为8388608Byte(即8MB)。

3. java实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	/* 修改主题属性 */
   public static String SetTopicAttributes(String nonce,String timestamp) {
    	
    	Map<String, Object> param = new HashMap<>();
    	//公共参数
        param.put("Action", "SetTopicAttributes");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        //输入参数
        param.put("instanceId",instanceId);//实例 ID
        param.put("topicName", "topic_jensen1");//主题名称
        //选填项
        param.put("note","topic_jensen1");//主题备注,是一个不超过 64 个字符的字符串,必须以字母为首字符,剩余部分可以包含字母、数字和横划线-。
        param.put("enableWhiteList","1");//IP 白名单开关,1:打开, 0:关闭,默认不打开。
        param.put("ipWhiteList.0","10.1.1.250");//IP 白名单列表,配额限制,enableWhileList=1 时必选。
        param.put("cleanUpPolicy","delete");//清理日志策略,日志清理模式,默认为"delete"。1,"delete":日志按保存时间删除。2,"compact":日志按 key 压缩。3,"compact, delete":日志按 key 压缩且会按保存时间删除。
        param.put("minInsyncReplicas","1");//默认为1。
        param.put("uncleanLeaderElectionEnable","0");//默认为0。 0表示 false。 1表示 true。
        param.put("retentionMs","60000");//消息保留时间,单位:ms,当前最小值为60000ms(1分钟)。
        param.put("segmentMs","86400000");//Segment 分片滚动的时长,单位:ms,当前最小为86400000ms(1天)。
        param.put("maxMessageBytes","1024");
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    	//修改主题属性
    	String result=SetTopicAttributes(nonce,timestamp);

5. 结果

三、删除主题

1. 接口描述

接口请求域名:ckafka.api.qcloud.com。 本接口(DeleteTopic)用于在消息队列 CKafka 实例下删除主题。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 文档。

参数名称

必选

类型

描述

instanceId

String

实例 ID

topicName

String

主题名称

3. java实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	/* 删除主题 */
    public static String DeleteTopic(String nonce,String timestamp) {

    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "DeleteTopic");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        param.put("instanceId",instanceId);
        param.put("topicName", "bowenqiu_topic1");//主题名称 
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    	//删除主题
    	String result=DeleteTopic(nonce,timestamp);

5. 结果

删除前
删除前

{"code":0,"message":"","codeDesc":"Success","data":[]}

四、增加分区

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口(AddPartition)用于在用户增加主题中的分区。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 文档。

参数名称

必选

类型

描述

instanceId

String

实例 ID

topicName

String

主题名称

partitionNum

Int

partition个数

3. java实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	/* 修改主题属性 */
    public static String AddPartition(String nonce,String timestamp) {
     	Map<String, Object> param = new HashMap<>();
     	//公共参数
         param.put("Action", "AddPartition");
         param.put("Nonce", nonce);
         param.put("Timestamp",timestamp);
         param.put("SignatureMethod", signatureMethod);
         param.put("Region", "ap-guangzhou");
         param.put("SecretId", secretId);
         //输入参数
         param.put("instanceId",instanceId);//实例 ID
         param.put("topicName", "topic_jensen1");//主题名称
         param.put("partitionNum", 3);//Partition 个数,大于0
     	return getResult(param,url);
     }

4. 执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    	//修改主题属性
    	String result=AddPartition(nonce,timestamp);

5. 结果

添加前是2个分区

执行后:

五、获取主题列表

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口(ListTopic)用于在用户获取消息队列 CKafka 实例的主题列表。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 文档。

参数名称

必选

类型

描述

instanceId

String

实例 ID

searchWord

String

(过滤条件)按照 topicName 过滤,支持模糊查询

offset

Int

偏移量,不填默认为0

limit

Int

返回数量,不填则默认为10,最大值为20

3. java实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	/* 获取主题列表 */
    public static String GetListTopic(String nonce,String timestamp) {
    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "ListTopic");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        param.put("instanceId",instanceId);
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    	//获取主题列表
    	String result=GetListTopic(nonce,timestamp);

5. 结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"code":0,"message":"","codeDesc":"Success","data":{"totalCount":4,"topicList":[
{"topicId":"topic-pc6bi41k","topicName":"topic_jensen1","note":"topic_jensen1"},
{"topicId":"topic-7p2pzlo4","topicName":"topic_test1","note":""},
{"topicId":"inter-topic-kfjiqvgo","topicName":"bowenqiu_test1","note":""},
{"topicId":"topic-3yueh1ge","topicName":"bowenqiu_topic1","note":"bowenqiu_topic1"}]}}

六、获取主题属性

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口 (GetTopicAttributes) 用于在用户获取消息队列 CKafka 实例的主题属性。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 页面。

参数名称

必选

类型

描述

instanceId

String

实例 ID

topicName

String

主题名称

3. java实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	/* 获取主题属性 */
    public static String GetTopicAttributes(String nonce,String timestamp) {
    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "GetTopicAttributes");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        param.put("instanceId",instanceId);
        param.put("topicName", "topic_jensen1");//主题名称 
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    	//获取主题属性 
    	String result=GetTopicAttributes(nonce,timestamp);

5. 结果

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
{"code":0,"message":"","codeDesc":"Success","data":{"topicId":"topic-pc6bi41k","createTime":1568105142,"note":"topic_jensen1","partitionNum":3,"enableWhiteList":1,"ipWhiteList":["10.1.1.250"],"config":{"min.insync.replicas":1,"unclean.leader.election.enable":"false","retention.ms":60000,"segment.ms":86400000,"cleanup.policy":"delete","max.message.bytes":1024},"partitions":[
{"partition":0,"leaderStatus":0,"isrNum":2,"replicaNum":2},
{"partition":1,"leaderStatus":0,"isrNum":2,"replicaNum":2},
{"partition":2,"leaderStatus":0,"isrNum":2,"replicaNum":2}]}}

七、增加主题白名单

1. 接口描述

接口请求域名:ckafka.api.qcloud.com 本接口(AddTopicIpwhitelist)用于在用户增加主题白名单。

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 文档。

参数名称

必选

类型

描述

instanceId

String

实例 ID

topicName

String

主题名称

ipWhiteList.n

String

必选,IP 白名单列表

说明:

当 IP 白名单列表为空时认为禁止所有 IP 访问该 topic,否则只允许列表中的 IP 访问。该接口将 ipWhiteList 中的 IP 添加到现有白名单中。

3. java实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	/* 增加主题白名单 */
    public static String AddTopicIpwhitelist(String nonce,String timestamp) {

    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "AddTopicIpwhitelist");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        param.put("instanceId",instanceId);
        param.put("topicName", "topic_jensen1");//主题名称 
        param.put("ipWhiteList.0","10.10.10.10");
        param.put("ipWhiteList.1","20.20.20.20");
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        //增加主题白名单
        String result=AddTopicIpwhitelist(nonce,timestamp);

5. 结果

执行前:

{"code":0,"message":"","codeDesc":"Success","data":[]}

八、删除主题白名单

1. 接口描述

本接口(DeleteTopicIpwhitelist)用于在用户删除主题白名单。

接口请求域名:ckafka.api.qcloud.com

2. 输入参数

以下请求参数列表仅列出了接口请求参数,其它参数见 公共请求参数 文档。

参数名称

必选

类型

描述

instanceId

String

实例 ID

topicName

String

主题名称

ipWhiteList.n

String Array

必选,IP 白名单列表

3. java实现

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	/* 删除主题白名单 */
    public static String DeleteTopicIpwhitelist(String nonce,String timestamp) {
    	Map<String, Object> param = new HashMap<>();
        param.put("Action", "DeleteTopicIpwhitelist");
        param.put("Nonce", nonce);
        param.put("Timestamp",timestamp);
        param.put("SignatureMethod", signatureMethod);
        param.put("Region", "ap-guangzhou");
        param.put("SecretId", secretId);
        param.put("instanceId",instanceId);
        param.put("topicName", "topic_jensen1");//主题名称 
        param.put("ipWhiteList.0","10.10.10.10");
        //param.put("ipWhiteList.1","20.20.20.20");
    	return getResult(param,url);
    }

4. 执行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    	//删除主题白名单
    	String result=DeleteTopicIpwhitelist(nonce,timestamp);

5. 结果

{"code":0,"message":"","codeDesc":"Success","data":[]}

之前是有3个IP:

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
设计模式——解释器模式
设计模式——解释器模式
Java架构师必看
2021/05/14
4140
设计模式——解释器模式
图解Java设计模式之解释器模式
通过解释器模式来实现四则运算,如计算 a + b + c 的值,具体要求 1)先输入表达式的形式,比如 a + b + c + d + e,要求表达式的字母不能重复 2)在分别输入a,b,c,d,e的值 3)最后求出结果
海仔
2020/04/08
1K0
图解Java设计模式之解释器模式
设计模式-解释器模式
具体做法是创建几个解释器,在创建一个解释器封装类,在解释器封装类中完成语法树的构建。然后在场景类中完成递归调用。
mySoul
2019/01/25
3780
解释器模式
@派大星
2023/06/28
1590
解释器模式
解释器模式-破解算术验证码
我头两年工作的时候,写过一些爬虫程序,爬取过京东的商品数据,今日影视的视频资源等等。有些资源是很容易爬的,只要发一个HTTP请求,无需任何处理服务端就会返回给你数据。但是对于一些比较珍贵的数据,服务端就会做「反爬虫」处理,我曾经在爬取第三方网站的文章时就遇到过,幸运的是人家的反爬虫机制比较简单:给出一个图片,图片里面是一个「算术题」,你必须输入算术题的正确答案,服务端才会响应文章的完整内容。算术题都是很简单的四则运算,小学生都会的那种,因此很容易破解。
全栈程序员站长
2022/09/05
7560
解释器模式-破解算术验证码
设计模式实战 - 解释器模式(Interpreter Pattern)
● 公式可以运行时编辑,并且符合正常算术书写方式,例如a+b-c ● 高扩展性,未来增加指数、开方、极限、求导等运算符号时较少改动 ● 效率可以不用考虑,晚间批量运算
JavaEdge
2018/12/17
9520
设计模式实战 - 解释器模式(Interpreter Pattern)
设计之禅——解释器模式(译文)
解释器模式在平时基本上用不到,因此笔者也不打算花太多精力在这上面,但强迫症使然,所以翻译了GeeksForGeeks上面的一篇文章,本文采取意译及注解方式,原文链接Interpreter Pattern
夜勿语
2020/09/07
3050
解释器模式 Interpreter 行为型 设计模式(十九)
如果形势变化非常多,这就不符合要求,因为加法和减法运算,两个运算符与数值可以有无穷种组合方式
noteless
2018/12/26
5630
设计模式----解释器模式
解释器模式(Interpreter Pattern):定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的 “语言” 是指使用规定格式和语法的代码。解释器模式是一种类行为型模式。
大忽悠爱学习
2021/11/15
9680
设计模式实战-解释器模式,今天给你解疑答惑
解释器模式,这个模式我觉得是这些模式中最不好理解的模式,解释器模式是用来干啥的呢?比如说我们有一段英文或者一段公式,我们需要知道其中表达的意思到底是啥?(假如我们起初并不理解)也就是说,我们需要一个"解释人",该角色就是我们的联络官或者叫做解释器,用来翻译我们的文本或者公式,翻译成我们能理解的最小的基础单元,听着是不是还云里雾里地?大家都知道编译器吧,一般的编译器分为词法分析器、语法分析器、语义分析器、中间代码优化器以及最终的代码生成器等,而我的理解,解释器就类似于其中的语法分析器的作用,专门负责语法文本的解析作用。
架构师修炼
2020/07/17
3000
设计模式21之解释器模式
在软件开发中,可能会出现某些相似的功能多次出现,这些功能有一定的相似性与规律性。这是我们就可以将其归纳成一种简单的语言。这就是解释器模式的来源。
Lvshen
2022/05/05
2280
设计模式21之解释器模式
【地铁上的设计模式】--行为型模式:解释器模式
解释器(Interpreter)是一种行为型设计模式,它用于解释一种特定的编程语言或表达式。它提供了一种解释一组语言语法的方法,使得用户可以按照特定的规则定义自己的语言,并通过解释器将其转化成可执行代码。 在解释器模式中,包含两个角色:终结符和非终结符。终结符表示语法规则中的基本单元,而非终结符表示由终结符组成的语法规则。解释器模式通常使用抽象语法树(Abstract Syntax Tree, AST)来实现对语法规则的解释。 解释器模式的优点在于它可以轻松地添加新的语法规则,同时保持代码的灵活性和可扩展性。它也能够在运行时动态生成代码,从而更好地支持动态编程。 然而,解释器模式的缺点在于它可能会导致性能问题,因为它需要在解释器中进行大量的运算和计算。此外,解释器模式的设计较为复杂,需要开发者具备较强的编程能力和领域知识。 在软件开发中,解释器模式通常应用于解析和执行脚本、编译器、数据库查询语言等场景。例如,JavaScript的解释器就是一种常见的解释器实现。
喵叔
2023/05/09
3090
设计模式之解释器模式
解释器模式(Interpreter Pattern)是一种行为型设计模式,用于定义语言的文法规则,并提供一个解释器来解释执行这些规则。它属于行为型模式,适用于需要解释语言语法或表达式的场景。
孟斯特
2024/02/06
820
设计模式之解释器模式
Java描述设计模式(14):解释器模式
一、解释器模式 1、基础概念 解释器模式是对象的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的表达式。 2、模式图
知了一笑
2019/10/18
5180
Java设计模式(二十三)----解释器模式
解释器模式 定义:解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。 解释器模式的结构 下
汤高
2018/01/11
5580
Java设计模式(二十三)----解释器模式
【设计模式】行为型模式-第 3 章第 3 讲【解释器模式】
 解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。
跟着飞哥学编程
2022/12/02
3670
设计模式 | 解释器模式及典型应用
解释器模式(Interpreter Pattern):定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的 "语言" 是指使用规定格式和语法的代码。解释器模式是一种类行为型模式。
小旋锋
2019/01/21
8940
JAVA中的23种设计模式(GOF)
volatile 保证数据的可见性,让线程内存数据的变化立刻显示到主存中,而且有序性可以避免指令重排,但是不保证原子性。
HcodeBlogger
2020/08/05
9880
JAVA中的23种设计模式(GOF)
设计模式--解释器模式
解释器模式是一种行为型设计模式,它定义了一种语言解释器的方式,用于解释特定的语言或符号。在该模式中,定义一个语法,用于解释特定的输入,并把这个语法表示为一个解释器。
软件架构师Michael
2023/07/19
2900
设计模式(二十三):行为型之解释器模式
注意: 这里的符号“::=”表示“定义为”的意思,竖线 | 表示或,左右的其中一个,引号内为字符本身,引号外为语法
冬天vs不冷
2025/01/21
880
设计模式(二十三):行为型之解释器模式
相关推荐
设计模式——解释器模式
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档