热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java看不懂官方文档怎么办_读不懂官方文档,我想问他们是怎么学习的?

行业中许多刚入门技术人员阅读官方文档困难,正如许多国人学了几十年汉语后依旧读不懂诗歌、看不进去散文一样,原因在于他们没有认真思考过为什么会出现各种各样体

行业中许多刚入门技术人员阅读官方文档困难,正如许多国人学了几十年汉语后依旧读不懂诗歌、看不进去散文一样,原因在于他们没有认真思考过为什么会出现各种各样体裁的文章。

不同体裁的文章最明显的区别在于组织结构不同,你能很明显地感受到官方文档和博客文章的结构差异,却很可能没有认真想过到底什么是结构,哪些东西构成了结构,为什么要用这样的结构。

不懂结构,一方面是因为视野狭隘,只关注眼下的遇到的问题,而不去思考眼下遇到的问题在更大的场景中所处的位置和作用,另一方面是因为阅读量不够,知识结构不完整,不知道文章中各个部分的作用,有时候苦思冥想,不如不求甚解。正所谓学而不思则罔,思而不学则殆,学和思是不可偏废其一的。

文章的结构,如人的骨架一样,决定了文章的整体风貌。科技类的文章,比如软件框架的官方文档,结构往往都通过目录的方式醒目地提炼在了文章之外,可即便如此,许多人却不知道如何去挖掘目录文字之上的含义,也就是为什么这篇文档的目录是这样的。

挖掘目录文字之上的含义,不仅要读懂每个目录项,还要明白每个目录项对于整个文章的作用是怎样的。拿你问题中的链接来看,我们先看一级目录项,有三项,依次是引言、Servlet应用和响应式应用。Introduction(引言)

Servlet Applications(Servlet应用)

Reactive Applications(响应式应用)

如果仔细阅读开篇第一个段落,Spring Security is a framework that provides authentication, authorization, and protection against common attacks. With first class support for both imperative and reactive applications, it is the de-facto standard for securing Spring-based applications.

发现一共两句话,第一句话说明了Spring Security框架提供了哪些功能,第二句话说明了这个框架能够用在什么样的应用中。认证、授权是安全保护机制的基本内容,学习过操作系统理论的人,至少清楚其大致意图和方法。命令式编程从前都是和声明式编程放在一起做对比的,近些年开始流行响应式编程的说法,熟悉UI编程的人对响应式的编程方式和架构应该有所了解。想到这里,至少明确了这个框架在两种不同的编程模式中应用也会有所差异,这也是为何文章的后两项分别是Servlet应用和响应式应用。作为使用者也就清楚了哪种应用是自己当下使用的,另外一种就不用看了。

我们再来看引言部分的二级目录项,依次包含了前置基础、Spring Security社区、Spring Security 5.4的新特性、开始使用Spring Security、功能特性、项目模块和依赖、代码样例。Prerequisites(前置基础)

Spring Security Community(Spring Security社区)

What's New in Spring Security 5.4(Spring Security 5.4的新特性)

Getting Spring Security(开始使用Spring Security)

Features(功能特性)

Project Modules and Dependencies(项目模块和依赖)

Samples(代码样例)

要理解为什么一篇文档的目录是这样,而不是那样,就要明白一个最为朴素的道理,一切的文章,如同一切的软件一样,本质上也是一种产品,是要服务于特定群体,解决特定问题的。可以这样来思考,如果你是Spring Security的开发者,你会在这篇文档的引言中写什么呢?如果是我,我会先想想我的用户都有谁,我想应该有两类,一类是Spring Security框架的使用者,另一类是Spring Security框架的代码贡献者。

对于使用者,他们一定要清楚用这个框架的前提是什么,因此要有前置基础部分,也就是依赖于JVM和EJB Container或者Servlet Container。

在框架的使用中,他们必定会遇到诸多困难,如果是错误使用了软件,大概率能在Stackoverflow这样的社区找到答案,但如果是软件的漏洞,那么要有渠道去沟通,因此要有Spring Security社区。

软件产品的更新换代相比于物理实体的产品可以省去销毁旧产品的环节,可其他的环节一样都不能少,只不过其他的各个环节也都是抽象过程而已,因此要有版本控制,新版本中也有新的特性的加入和旧特性的移除。如果产品的老用户很多,那么把最新版本的特性单独放一个部分,可以提醒他们去做升级,如果觉得有必要的话。

对于新用户而言,他们最关心怎么用和能用什么的问题,因此需要包括开始使用Spring Security和功能特性部分。

安全在一个应用中并不处于中心位置,安全是为了保护应用中核心功能不受恶意攻击而存在的,因而安全模块的存在也必然要依附于其他的模块,因此要有项目模块和依赖。

此外,文档写得再多,不如代码来的精确,阅读官方的代码样例总是能更准确的知道每个功能特性到底应该怎么用。

对于框架的代码贡献者,除了关心使用者关心的所有内容之外,还很关心源代码从哪儿能获取到,提交Pull Request的标准是什么等等。

回过头来看,这篇文章要解决的问题是什么?简单说就是让新用户、老用户和代码贡献者,通过查看产品的功能、适用范围、使用方法、服务条款、维护信息后,能顺利地使用产品。虽然文章整体要解决的是这个问题,但由于服务用户类型不只一种、用户使用产品所处阶段也不单一,所以实际上解决的问题有很多。

按照这个思路,再来看一篇博客为用户提供了什么?博客的体裁是自由的,大多数的技术博客,其实都只是一个实验报告,并不具备思想性和说明性,而且很多质量其实也不高,缺乏实验过程中的各种前置条件、参数等等的详细记录。

为什么会觉得二手笔记十分详细呢,我想一方面是因为关注的点过小,注意力都在每个步骤的命令和配置细节上,并没有放开视野,思考真正解决的问题是什么;另一方面,反思总结得不够,没有抽象出使用不同库、中间件的基本模式和要素。

二手笔记有二手笔记的价值,官方文档有官方文档的价值,不必要把自己限制在一个地方,关键是能想明白,当下自己要解决的问题是什么,还缺什么造成问题得不到解决,是自己的知识空白,还是文档不够详细。

能将困惑转换成问题,带着问题去搜索、阅读和找答案总是最高效的。



推荐阅读
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了Java高并发程序设计中线程安全的概念与synchronized关键字的使用。通过一个计数器的例子,演示了多线程同时对变量进行累加操作时可能出现的问题。最终值会小于预期的原因是因为两个线程同时对变量进行写入时,其中一个线程的结果会覆盖另一个线程的结果。为了解决这个问题,可以使用synchronized关键字来保证线程安全。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • SpringBoot整合SpringSecurity+JWT实现单点登录
    SpringBoot整合SpringSecurity+JWT实现单点登录,Go语言社区,Golang程序员人脉社 ... [详细]
  • Java和JavaScript是什么关系?java跟javaScript都是编程语言,只是java跟javaScript没有什么太大关系,一个是脚本语言(前端语言),一个是面向对象 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 预备知识可参考我整理的博客Windows编程之线程:https:www.cnblogs.comZhuSenlinp16662075.htmlWindows编程之线程同步:https ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • Whatsthedifferencebetweento_aandto_ary?to_a和to_ary有什么区别? ... [详细]
author-avatar
winnie198808616
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有