飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

我OCP之旅的第3部分:实用提示和示例

时间:2023-06-06  作者:电脑狂魔  

这是关于OCP-17准备的第三篇也是最后一篇文章。在第一部分中,我解释了玩人类虚拟机并刷新你对神秘结构的掌握并非毫无意义,即使OCP没有——也没有声称——让你成为一名称职的开发人员。在第二部分中,我向你展示了内在动机是如何在没有胡萝卜或大棒的情况下保持下去的,前提是你能找到让你的练习变得有趣和难忘的方法。是时候分享其中的一些例子和技巧了。

但首先要提一些关于物流和时间管理的建议。与体育锻炼一样,短时间和频繁的锻炼胜过长时间和偶尔的锻炼。它更有效,更有可能成为一种习惯,就像刷牙一样。选择一天中精力最充沛、工作效率最高的时间。清晨对我来说最合适,因为我是个爱早起的人。把每天的剂量从你的待办事项列表中划掉是一种满足感,即使这感觉不像是一件家务事。

在阅读、练习和复习之间取得良好的平衡。一旦你读完了整本教科书,你就需要刷新前几章的大部分内容。没关系。继续复习,每天从每一章中做一些问题。你会慢慢到达那里,但肯定会。

使其实用且富有成效

前一段的练习意味着编写新颖的代码,旨在教会自己某种语言结构。这关乎你的生产力,所以从书中复制片段并不重要。如果你曾经用老式的方式学习过一门外语,你会同意,死记硬背词汇和语法规则对你的口语技能没有什么帮助。只有说才能使你流利,最好是在母语为英语的人中。这就像游泳或吹萨克斯一样:你无法从书中学习。从未使用NIO2 API或原始流?从未对数组进行过比较或二进制搜索?把你的脚弄湿,最好关闭自动完成功能。更好的做法是,在纯文本编辑器中涂鸦,完成后将其粘贴到IDE中。

了解原因

虽然Java显示了它的年龄,但它的进化是经过精心管理的,这样新添加的内容就不会觉得是随意添加的。决策需要很长时间才能成熟,而且是有原因的。当这本书没有解释某个API特性背后的原因时,试着自己解释一下,而不是重复一条规则。下面是并发API的一个例子。

执行器的submit()方法对于Runnable或Callable参数有两个重载版本。它返回了一个未来。void execute()方法只接受Runnable,而不接受Callable。为什么这很有道理?Callable产生一个值,并且可以抛出一个Exception。由于execute()以即发即弃方式工作,因此Callable的结果将不可访问,因此不受支持。相反,提交一个结果为空的Runnable是可以的。其Future返回null。

我上一篇文章中的记忆运动员,他们记忆随机堆叠的卡片,比你和我要困难得多。学习Java就是要记住很多事实,但它们不是随机的。

制作视觉故事

古希腊人教我们如何建造心理记忆宫殿,以存储随机的事实,便于检索。约书亚·福尔添加了一个月球漫步的阿尔伯特·爱因斯坦来唤起他的记忆。你应该让你的代码样本同样有趣和令人难忘。

以下是如何说明ArrayList和LinkedList之间的基本区别。想象一下,一家电影院有固定数量的座位(ArrayList),售票处有一排顾客(LinkedList),他们会收到一张编号的票。人们不规则地到达(offer(..)或add(..))队伍的尾部,而每隔十秒,排队的第一个人就可以进入剧院(poll(),element()),并被带到他们的座位(域名(number, patron)。

让我们将并发添加到混合中。假设有两个售票亭,每个售票亭都有自己的线路,还有一个递增数字的中央售票机。没错:AtomicInteger中的getAndIncrement()来拯救它。我很乐意给你看代码,但那不会教你什么。

或者获取类层次结构中的访问权限。子类型可能不会强加更严格的访问权限,也不会声明更广泛的或新检查的异常。让我们少谈学术。想象一下,一栋高层建筑有多个公司办公室(班级)和几层楼(套餐)。私人访问仅限于一家公司的员工。包裹通道延伸至同一楼层的办公室。所有人都可以进入公共场所:其他楼层以及外部访客。业主提供了一个公共浴室,可以清楚地显示何时有人使用。你可以通过一个子类用有香味的毛巾和音乐来打扮它,但你必须遵守这个规则:

public void visitRestRoom(Person p) throws OccupiedException { .. }

欢迎每一位外部访客使用它。您不允许限制只有您所在楼层的员工才能访问(套餐访问),更不用说您自己的员工了(私人访问)。您也不能用PaymentExpectedException来打扰访问者。这违反了规则。

考试中的代码样本是为了迷惑你。你自己的例子应该起到完全相反的作用。你使用现实生活中的例子(公共办公室的洗手间,电影院外的排队),并以一种易于想象和记忆有趣的方式将它们结合起来。

助记符

有时,它除了将内容提交到内存之外什么都没有,比如可以用作开关变量的类型(byte、int、char、short、String、enum、var)。你可以用这样的助记符把它们串在一起:

In one short intense soundbite, the stringy character enumerated the seven variables for switch.

或者,在队列前面操作的方法(element、push、peek、pop、poll和remove)如何?

Elmer pushed to the front of the queue to get a peek at the pop star, but he was pulled out and removed.

是的,这是牵强的、愚蠢的和古怪的。这就是让他们难忘的原因。至少对我来说。

或者试试轻松的诗句。对你来说,教育的好处可能没有读者那么大,但我花在制作它上的时间确保了我不会很快再次混淆Comparable和Comparator。

最后的一些想法

你练习的目的不是为了尽快(或根本)通过考试。这是为了成为一个更有能力的开发人员,并享受学习的乐趣。我提到过玩人类编译器有一些优点,但这并不意味着我完全同意OCP目前的提问方式以及对API细节的强调。在未来的十年里,能够用有限的内存从头开始编写代码来节省开支并不是开发人员的必备技能。她需要获得新的技能来对抗人工智能在该领域的无情进步。

湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。