Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Java架构师学习路线图

Java架构师学习路线图

原创
作者头像
Java后端工程师
发布于 2017-12-09 11:30:22
发布于 2017-12-09 11:30:22
5.7K3
举报
文章被收录于专栏:Java编程Java编程

Java是一个通用的编程语言,其实可以干很多事,怎么学Java就看怎么用了,但有一些一般的步骤:

  • 熟悉一种文本编辑器,比如Vim, Emacs, Notepad++, TextMate等。知道哪些是开源的,哪些是闭源的,哪些要收费。养成不用盗版软件的习惯。
  • 安装JDK(建议用你的Linux发行版自带的软件包管理器安装openjdk,过程中可能需要读发行版特定的文档)
  • 写一个Java的Helloworld程序,并用命令行工具javac编译,再用java命令运行这个程序。过程中熟悉源代码、字节码、虚拟机这些东西,以及Java的包(package)对.class文件所在的路径的影响。如果这两个命令行工具使用熟练了,可以开始选一个喜欢的集成开发环境,比如Eclipse。当然,养成不用盗版软件的习惯。熟悉一下如何建立“工程”,以及快捷键的使用。
  • 学习Java的面向过程编程,包括基本数据结构、表达式、语句、控制流、函数调用。
  • 学习Java的面向对象编程,包括类、引用类型和值类型的区别、成员、方法、访问控制、继承、多态、接口、接口实现。顺便学习一下面向对象的基本思想,即对象、消息、封装、继承、多态等,这些通用的内容不是Java特有的。这时候应该已经涉及了Java的垃圾回收。要留意即使有垃圾回收的情况下也会发生的内存泄露(如自己设计数组容器,元素是引用,逻辑上删除了元素,但并没有清成null)。注意垃圾回收只能回收内存中的对象,除了内存以外,其它资源不能依靠垃圾回收来关闭。比如,文件、管道、Socket、数据库连接等,垃圾回收是不会帮你关闭的。
  • 学习Java的异常处理,但更重要的是学习什么时候用特殊返回值而不使用异常,什么时候应该抛出异常而不处理异常,知道什么是pokemon catch及其危害,了解为什么Java的checked exception是一个糟糕的特性。如果愿意,同时学习一下Java1.7的try-with-resource语句和AutoCloseable接口。
  • 熟悉Java常用的数据结构,如基本的数组类型,以及泛型容器(java.util.*),尤其是java.util.List接口和java.util.ArrayList实现;以及java.util.Map接口和java.util.HashMap实现。(java1.5以前的没有泛型参数的就不用碰了)同时留意一下基本类型int, double等和装箱类型Integer和Double的区别,以及它们是如何自动转换的。
  • 熟悉Java标准库里的各种工具,包括日期时间、字符串格式化、IO等。**知道文件要自己在finally子句中close(),或者用Java1.7的try-with-resource,不要妄想垃圾回收器会帮你关掉文件。
  • 学习一下Java的命名习惯,以及JavaBeans的常规,知道为什么getter/setter比直接操作成员变量好。按这种方式给Java的变量、方法命名。同时看看你的IDE能不能自动帮你生成getter和setter。
  • 使用一个第三方的库(比如Apache Commons Lang通用工具库),让你的程序依赖于它的二进制jar包(而不是直接拷贝源代码),用命令行编译、运行(注意classpath等);也熟悉一下如何用你的集成开发环境添加第三方依赖。感受一下手动管理依赖关系的麻烦。
  • 学习Maven的使用,试着让Maven帮你解决依赖关系,再试着让Maven帮你创建一个Eclipse工程。再试试用Maven打包发布。
  • 学习软件测试,以及JUnit的使用,以及怎么在IDE中使用JUnit。有空看一下coverage工具。
  • 读读四人帮写的《设计模式》(这本书是用C++和Smalltalk语言为例子的,但仍然适合Java)。具体的是这本书,http://www.amazon.com/Design-Patterns-Elements-Reusable-Object-Oriented/dp/0201633612图书馆应该能还借到英文原版,因为我借到过。

接下来就看具体要做哪方面的应用了,看需求。比如(下面的没有顺序)

1. 关于语言

  • 如果学Java学得不舒服了,学Python。
  • 如果对面向对象编程的概念有点不习惯,学Smalltalk。(Ruby也行,但不如Smalltalk经典。Ruby的文档是一大硬伤。)
  • 如果嫌Java太啰嗦,学Python
  • 如果嫌Java太啰嗦,又想用JVM,自己又有精力,学Scala
  • 如果对对象之间的关系有点晕,学一学UML,以及它的一些图,可以对程序和运行进行直观的建模。你的IDE也许有插件可以生成UML图。但是不要太沉迷于这些方法论。

2. 调试和辅助工具

学习一下你的集成开发环境提供的调试工具,加一些断点试试。

  • 试试用jconsole或者VisualVM监控另一个jvm的状态。
  • 用profiling工具寻找程序中慢的地方。Eclipse有profiling工具。VisualVM也有这样的功能。(如果不介意使用闭源软件的话,也试试JProfiler和YourKit)
  • 有的JVM允许在运行时更新代码。Eclipse可以和某些JVM集成。这样你可以频繁修改代码而不用频繁重启JVM。对于某些“重型”工程很有用。(如果不介意使用闭源软件的话,也试试jRebel)

3. 多线程

学习Java的多线程编程以及lock、condition的用法(包括传统Java的synchronized语句以及新加的java.util.concurrent.*),学习一下如何让线程停下来,以及为什么要频繁确认isInterrupted()而不要用Thread.stop()。了解一下多核处理器、缓存、内存的关系,以及为什么多线程编程这么难。

  • 如果还舒服,学习一下Runnable的用法,以及自带的Executer等基本多线程工具。
  • 应该已经留意到java.util里面的很多容器不是线程安全的,但是java.util.Collections可以帮你创建一些安全的版本。另外关注一下java.util.concurrent里面有ConcurrentMap等容器可供使用。
  • 如果有空的话,看看memory model(内存一致性模型)和无锁同步(见java memory model和java.util.concurrent.atomic)。
  • 如果还有空,再了解一下除了“共享内存多线程编程”以外有没有别的模型(多进程multi-processing、消息传递message passing等)。

4. 反射、元编程

  • 学习Java的反射机制,以及Annotation的用法。
  • 如果还舒服,试试java.lang.reflect.Proxy的用法。
  • 如果仍然还舒服,玩一玩CGLib(一个第三方的库)。

5. 网络编程

学习一下IP,TCP协议(计算机专业的应该学过,复习一下),学习Socket编程(注意垃圾回收器不会帮你关掉Socket)。

  • 如果不是很关心HTTP,看看java.nio,学习单线程轮询式IO复用(Selector)。
  • 如果关心Web还有HTTP,就学习一下HTTP协议,以及用Java进行HTTP的客户端编程。

a. 如果还舒服,学学HTML,写写HTML的静态网页(不需要Java)

b. 如果还舒服,用Java写一个基于DOM、XPath或者CSS Selector的网页解析器(爬网页)。

c. 如果还舒服,学学Java的Servlet接口(先别学jsp)进行Web服务器端编程。学学标准的Servlet容器怎么用,包括web.xml的用法以及listener、filter等概念。以及某个Servlet容器(如Jetty或者Tomcat)的具体用法。

d. 如果仍然还舒服,试着学一种模板语言(如haml, velocity, freemarker,【还有其他更好的框架吗?我不知道】, String.format,如果真的想学JSP的话JSP倒是也行,但不推荐)。

e. 如果仍然觉得舒服,学学Spring框架中的Web框架,或者Struts,看你的口味。

f. 如果还舒服,看看Spring Bean Container以及里面各种乱七八糟的工具。

g. 如果还舒服,或者有需求,了解一下什么是RESTful Web Service,复习一下HTTP,找找适合的Java工具。

h. 你可能会觉得Jackson是一个解析JSON用的好用的东西。

i. 如果有点不明白nio的意图的话,了解一下c10k问题。 http://www.kegel.com/c10k.html

j. 如果身体没有异样的话,大概了解一下操作系统(包括C语言)提供的select, poll, epoll, kqueue等接口。

k. 如果身体仍然没有异样的话,试着用java.nio写一个文件服务器。

l. 如果还有精力的话,上网扒一扒有没有其他的通信库,如netty等。

6. 数据库

学习一下关系数据库(计算机专业的应该学过,复习一下),包括SQL。选一个数据库管理系统熟悉一下(比如MariaDB,或者(如果你不讨厌Oracle的话)用被Oracle收购了的MySQL。先脱离Java单独学学)。然后看它们的官方文档教你怎么用Java连接这种数据库。这中间会涉及到JDBC接口。同时一定要知道SQL注入安全漏洞,以及掌握如何用PreparedStatement防止注入!!。建议看 http://bobby-tables.com/

  • 可能中间会涉及“事务”问题,让你不知不觉地开始去了解java transaction api(JTA)。
  • 如果还舒服,学一学对象关系转换(如Hibernate)。
  • 也可以学学非关系数据库,以及如何用Java访问它们。

7. 日志记录

学习一下slf4j和logback的用法。

  • 如果有精力的话,大概了解一下世界上有多少种Java日志框架,以及slf4j是怎么桥接这些框架的。

8. 构建(build)系统

学习一下Ant的用法。

  • 如果还舒服的话,学习一下用Ivy从Maven的仓库里下载软件包,解决依赖关系。

9. 版本控制

学习一种分布式版本控制器(如Git、Mercurial、Bzr、Darcs等,推荐Git)的基本用法,以及如何用它管理Java工程。希望你已经开始使用Maven了,并且知道为什么把IDE生成的工程文件(如eclipse的.project,.classpath和.metadata)放入版本控制器不好。然后了解一下如何在IDE中使用版本控制(Eclipse自带Git插件)。

  • 如果感觉很舒服的话,为你们实验室搭建一个Linux+SSH+Git服务器,装个GitLab(一种Web界面)。
  • 了解“集中式版本控制器”和“分布式版本控制器”的区别,并说服同事们不要再用SVN、CVS或者SourceSafe等老旧的“集中式版本控制器”了。
  • 开设一个GitHub账户。如果你不喜欢Git,就用BitBucket等。

10. 持续集成

自己(或者为你们实验室)搭建一个持续集成(Continuous Integration)服务器,如Jenkins,定期编译你的程序。建议同时使用Git等分布式版本控制器。

  • 如果你做开源软件,试试GitHub和Travis。

11. 零碎工具

淘一淘java.nio.files里面有什么好用的东东,然后再淘一淘Apache Commons Lang和Commons IO里有什么好用的工具。Commons Logging就不要再用了,用SLF4j和Logback。

12. XML

学学XML、DOM、XPath。XML这东西到处都可能用到。也可以用它写自己的配置文件。

  • 如果觉得不舒服了,就学学JSON和YAML。
  • 如果还是不舒服,就学学文本文件解析。

13. 语法分析和编译器

学学Antlr或者别的Parser Generator的用法

  • 如果觉得舒服,自己写一个计算器。
  • 如果还觉得舒服,自己写一种Domain-Specific Language (DSL)。

14. 高效容器

学学FastUtil或者Trove,如果你需要进行大量数值运算的话。

15. 分布式计算

学学MapReduce的思想以及它的实现。

  • 如果还舒服,学学Scala语言以及号称比MapReduce快得多的Apache Spark

16. 进程间通信

看看ActiveMQ、MINA和RMI。

17. 其他语言(JVM)

学习另一门跑在JVM上的语言或者实现(如Groovy、Scala、Clojure、JRuby、Jython、JavaScript……)

18. 其他语言(非JVM)

学习另一门通用脚本语言(如Python、Ruby,其实perl也行,但不推荐),知道什么时候Java不是最好的选择。

19. Java语言和Java虚拟机

通读一遍(一目十行地读,不用细读)Java Language Specification,以及Java Virtual Machine Specification。

  • 了解以下解释器(interpreter)、编译器(compiler)、即时编译器(just-in-time compiler)和优化器(optimiser)的概念。
  • 如果对编译器的话题不感到畏惧,了解一下method JIT和tracing JIT的概念和区别。

20. 内存管理

学学垃圾回收的几种基本算法,包括mark-sweep、mark-compact、semi-space、generational、mark-region等,各自的性能,以及为什么朴素的reference counting是不完整的。知道为什么finalizer性能很糟糕,而且标准并不要求finalizer在程序退出前一定会执行。

  • 如果还舒服,了解一下如何设置Java虚拟机的堆大小限制(如HotSpot虚拟机的-Xmx选项等)。
  • 了解一下Java里的WeakReference以及SoftReference和PhantomReference,以及它们什么时候有用,以及为什么它们实现起来有些困难。
  • 如果有精力,了解一下Hotspot虚拟机的内存管理算法是什么样的。

21. 动态装载

学学Java的动态装载(class loading)

  • 如果还舒服的话,学学OSGI以及它的一种实现(如Felix或者Equinox)
  • 如果仍然很舒服的话,学学写基于Eclipse平台的程序。不是Eclipse集成开发环境,只是利用他们的图形框架,写自己的应用程序。
  • 如果还觉得舒服的话,写Eclipse集成开发环境的插件。

22. 本地/外语接口

学习一下Java Native Interface(JNI),试着写一个Java和C语言混合编程的程序。

  • 如果觉得不舒服了或者觉得欲仙欲死,就学一学Java Native Access(JNA),试一试不用任何胶水代码而从Java直接装载C库,直接调用C函数。
  • 如果连JNA也懒得学,就学一学SWIG,自动生成绑定。
  • 如果觉得舒服,就学一学Java Virtual Machine Tooling Interface(JVMTI),用C程序来监视JVM的状态。

23. 密码学

学一学密码学,包括编码、密码分析、攻击、对称密钥、公钥系统、数字签名、哈希算法等,看看Java有没有实现。

  • 如果觉得有点不舒服(你应该不会觉得舒服吧,除非你是学密码学的,要不然总会觉得自己写的程序有安全漏洞),就写一个“人品计算器”来放松一下,要求每次输入同一个姓名,得到的人品值是固定的,但又要让人无法用别人的人品值猜自己的人品值。

24. 移动终端

学一学Android开发。

  • 如果有精力的话,看看Dalvik虚拟机是怎么回事。
  • 建议买一个iPhone或者iPad,或许你再也不想用Android手机或者平板了。

25. 历史

如果觉得有些无聊,就去挖一挖历史上比较火的可能和Java相关技术,比如:

  • Applet,想想它比起html5+css3+javascript的缺点在哪里。
  • AWT、Swing,想想为什么很少有人用Java写图形界面程序。你觉得Swing的程序看上去舒服吗?中国人和残疾人喜欢用Swing程序吗?
  • JNDI,想想它比起Spring Bean Container的缺点在哪里。
  • JSP,想想它比起MVC结构的缺点在哪里。
  • WSDL/SOAP,把它们和XML-RPC、RESTful Web Service比较一下。
  • XSLT,以及为什么它是图灵完备的。可是它真的比Java本身更好用吗?
  • Log4j、java.util.logging、Apache Commons Logging,各自有什么问题,以及Log4j的作者本人为什么又开发了SLF4j和Logback?
  • Java最早是为什么设计的?
  • Type erasure是怎么回事?为什么ArrayList<int>不行但ArrayList<Integer>就可以?挖一挖历史。

我有一个微信公众号,经常会分享一些Java技术相关的干货。如果你喜欢我的分享,可以用微信搜索“Java团长”或者“javatuanzhang”关注。

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

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

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

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

评论
登录后参与评论
3 条评论
热度
最新
本科科班,标准要求
本科科班,标准要求
回复回复点赞举报
写的比较初级,还没到架构师的段位
写的比较初级,还没到架构师的段位
11点赞举报
对头,既然架构,不只是技术,而且还有非技术的东西,列举这些技术,就像建大楼你掌握了砌砖一样,但建一栋大楼还差的远的很。
对头,既然架构,不只是技术,而且还有非技术的东西,列举这些技术,就像建大楼你掌握了砌砖一样,但建一栋大楼还差的远的很。
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
【程序员进阶丨主题周】Java 编程知识列表与系统架构演化
使用Java 后端技术的目的就是构建业务应用,为用户提供在线或者离线服务。因此,一个业务应用需要哪些技术、依赖哪些基础设施就决定了需要掌握的后端技术有哪些。
博文视点Broadview
2020/06/12
3110
【程序员进阶丨主题周】Java 编程知识列表与系统架构演化
新手如何学习Java——Java学习路线图
本文主要介绍了如何学习Java编程语言,从Java的基础语法、数据结构、面向对象编程、分布式计算等多个方面进行介绍。同时,还提供了关于开发工具、数据库技术和网页编程基础的简要介绍。最后,鼓励大家通过奋斗和积极学习,实现自身价值和技能的提升。
Java后端工程师
2017/12/20
2.2K0
架构师必知的绝活-JVM调优
学不学JVM,是能自主解决问题的一流程序员与跟着别人做CRUD的二流程序员的分水岭!
程序员江小北
2024/06/29
1780
架构师必知的绝活-JVM调优
架构师面试集锦之JVM面试题
Java虚拟机是一个可以执行Java字节码的虚拟机进程。Java源文件被编译成能被Java虚拟机执行的字节码文件。 Java被设计成允许应用程序可以运行在任意的平台,而不需要程序员为每一个平台单独重写或者是重新编译。Java虚拟机让这个变为可能,因为它知道底层硬件平台的指令长度和其他特性。
java架构师
2019/10/10
7780
架构师面试集锦之JVM面试题
2023年完整版Java学习路线图
以下是我为您提供的原创Java学习路线图,该路线图旨在帮助您系统地掌握Java开发所需的各个阶段的知识和技能。
IT_陈寒
2023/12/13
1.5K0
2023年完整版Java学习路线图
java 学习路线
注:这里的 java 基础只是一些简单的语法和 Java 特性,对于线程这些高级的内容可以在写过一些项目后回头来巩固一下
帅飞
2019/01/22
9240
你离架构师还有多远?
  软件架构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责或关注点不断地变化,总结下面几点。   在需求阶段,软件架构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等等,此外,架构师还要经常审查客户及市场人员所提出的需求,确认开发团队所提出的设计;   在需求越来越明确后,架构师的关注点开始转移到组织开发团队成员和开发过程定义上;   在软件设计阶段,架构师负责对整个软件体系结构、关键构件、接口和开发政策的设计;   在编码阶段,架
欢醉
2018/04/19
8880
你离架构师还有多远?
一位资深Java架构师的晋级心得
Java 架构师是什么?是一个既需要掌控整体又需要洞悉局部瓶颈并依据具体的业务场景给出解决方案的团队领导型人物。一个架构师得需要足够的想像力,能把各种目标需求进行不同维度的扩展,为目标客户提供更为全面的需求清单。
Debian中国
2020/01/21
6600
Java工程师成神之路(2018版本)
classLoader、类加载过程、双亲委派(破坏双亲委派)、模块化(jboss modules、osgi、jigsaw)
雨临Lewis
2022/01/11
6920
Java工程师要求_工程师到高级工程师要几年
大家好,又见面了,我是你们的朋友全栈君。从事java后端开发4年及以上,具有根据业务需求进行独立设计的能力 熟练使用Spring及SpringMVC开发 熟练使用常用持久层框架Mybatis\Hibernate 熟悉java多线程及并发线程池使用 熟练使用Mysql基本操作,有一定sql优化经验 有使用Memcached/redis框架其中之一进行缓存开发的经验 会简单使用js/jquery等常用功能进行前端页面开发
全栈程序员站长
2022/08/03
5230
前阿里P8架构师:精准定制Java架构师学习计划!
可以说,Java是现阶段中国互联网公司中,覆盖度最广的研发语言,掌握了Java技术体系,不管在成熟的大公司,快速发展的公司,还是创业阶段的公司,都能有立足之地。
美的让人心动
2018/06/22
6100
终极版全栈工程师学习路线图
如果小伙伴想成为一个全栈 Web 开发人员,并找到第一份工作,下面给了一个参考指南,列出了大致需要学习的东西。 1. HTML5/CSS3 几乎所有程序,无论是在线的还是离线的,都在说明要成为 Web
老九君
2018/03/06
5.5K0
终极版全栈工程师学习路线图
Java基础知识总结(超详细整理)
Java是一种面向对象的编程语言,由Sun Microsystems(现为Oracle)于1995年推出。它设计之初的目标是“编写一次,到处运行”,意味着Java程序可以在任何平台上运行,只要该平台安装了Java虚拟机(JVM)。
猫头虎
2025/03/15
2700
Java基础知识总结(超详细整理)
【强烈推荐】Java工程师如何从一名普通的码农成长为一位大神
本文源自 http://www.hollischuang.com/archives/489 写在前面 java作为一门编程语言,在各类编程语言中作为弄潮儿始终排在前三的位置,这充分肯定了java语言的魅力,在实际项目应用中,我们已经无法脱离javaa(Ps当然你可以选择不使用),但它的高性能,稳定性,扩展性已经深入到每一个java编程工程师的骨髓里,随着时间的推移,我相信更多的项目会加入到java这个大家庭。 然而要想成为一名合格的java工程师并不容易,难于上青天,此话怎讲
用户1257215
2018/01/30
1.5K0
java学习路线图(2018年最新版)
最近有些网友问我如何自学 Java 后端,还有些是想从别的方向想转过来,但都不太了解 Java 后端究竟需要学什么,究竟要从哪里学起,哪些是主流的 Java 后端技术等等,导致想学,但又很迷茫,不知从何下手。我就以过来人的经历,写在这篇博客里,不一定都对,但都是我根据自己的经历总结出来的,供你们的参考。
哲洛不闹
2018/12/06
9030
java学习路线图(2018年最新版)
2021 入门级的 Java 程序员学习路线图 1.0
Hello,大家好,我是阿粉,最近看文章发现一个 Java 学习路线图的资料,觉得很不错就拿过来分享给大家,目前这个版本是 1.0 的,之所以说这个是 1.0 的版本主要是因为还有一些高级内容没有加进去,比如 JVM,容器,消息队列,云原生等都还没有提到,不过对于初学者来说这个路线图已经可以上手完成工作了。
Java极客技术
2022/12/02
2210
2021 入门级的 Java 程序员学习路线图 1.0
Java学习路线图(2020最新版)
学习任何一门编程语言,首先要学习的是基础语法,开启Java学习的第一步,当然就是深入掌握计算机基础、编程基础语法,面向对象,集合、IO流、线程、并发、异常及网络编程,这些我们称之为JavaSE基础。
全栈程序员站长
2022/08/27
2380
Java学习路线图(2020最新版)
Java学习路线图分析
 Java学习路线分析图 第一阶段 技术名称 技术内容 J2SE(java基础部分) java开发前奏 计算机基本原理,Java语言发展简史以及开发环境的搭建,体验Java程序的开发,环境变量的设置,
Kevin_Zhang
2018/05/22
1.4K0
你和阿里资深架构师之间,差的不仅仅是年龄(进阶必看)
导读:阅读本文需要有足够的时间,笔者会由浅到深带你一步一步了解一个资深架构师所要掌握的各类知识点,你也可以按照文章中所列的知识体系对比自身,对自己进行查漏补缺,觉得本文对你有帮助的话,可以点赞关注一下。 目录: 一、基础篇 二、进阶篇 三、高级篇 四、架构篇 五、扩展篇 六、体系篇 七、推荐书籍 八、总结 ---- 一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、final 垃圾回收 内存分配策略、垃圾收集器(
技术zhai
2018/05/21
2K0
【转载】java架构师进阶之路
Java架构师,应该算是一些Java程序员们的一个职业目标了吧。很多码农码了五六年的代码也没能成为架构师。那成为Java架构师要掌握哪些技术呢,总体来说呢,有两方面,一个是基础技术,另一个就是组织能力和提出解决方案能力了。
小勇DW3
2018/08/30
1.8K0
【转载】java架构师进阶之路
相关推荐
【程序员进阶丨主题周】Java 编程知识列表与系统架构演化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档