Skip to main content

Recently Updated Pages

1.2 编程元素

计算机程序的构造与解释 第一章:用函数建立抽象

编程语言是不仅仅是操作计算机来执行任务的一种手段,它也充当着一种框架,我们在其中组织计算过程的想法。程序用于在编程社群的成员之间交流这些想法。所以,程序必须为人们阅读而编写,并且顺便可以让机器执...

Updated 1 year ago by wandersky

1.1 入门

计算机程序的构造与解释 第一章:用函数建立抽象

计算机科学是一个极其宽泛的学科。全球的分布式系统、人工智能、机器人、图形、安全、科学计算,计算机体系结构和许多新兴的二级领域,每年都会由于新技术和新发现而扩展。计算机科学的快速发展广泛影响了人类...

Updated 1 year ago by wandersky

0. 介绍

Effective Java 第一章 引言

  本书旨在帮助您有效地使用 Java 编程语言及其基本库:java.lang,java.util 和 java.io 以及如 java.util.concurrent 和 java.util....

Updated 2 years ago by wandersky

Environments

Guide to CS 61A Head First into Python

If you haven't read my notes on environment diagrams, now is a good time to read those. Parent Fr...

Updated 2 years ago by wandersky

Higher Order Functions

Guide to CS 61A Head First into Python

Remember the add_2 function from the previous section on lambdas? What if we wanted to make a gen...

Updated 2 years ago by wandersky

Lambdas

Guide to CS 61A Head First into Python

Let's take a break from all this new condition and loop stuff and go back to something we recogni...

Updated 2 years ago by wandersky

Loops

Guide to CS 61A Head First into Python

We learned about conditions and saw how we can use them to make our code run only when we want it...

Updated 2 years ago by wandersky

Conditional Operators

Guide to CS 61A Head First into Python

Right now, we know how to use simple conditions in if-else statements. What if we wanted to check...

Updated 2 years ago by wandersky

Conditions

Guide to CS 61A Head First into Python

Most of the time, you only want your code to run if something is true (or false). For example, sa...

Updated 2 years ago by wandersky

90. 考虑用序列化代理代替序列化实例

Effective Java 第十二章 序列化

  正如 85 条和第 86 条提到的,以及本章一直在讨论的,决定实现 Serializable 接口,会增加出错和出现安全问题的可能性,因为它允许利用语言之外的机制来创建实例,而不是使用普通的...

Updated 2 years ago by wandersky

89. 对于实例控制,枚举类型优于 readResolve

Effective Java 第十二章 序列化

  第 3 条讲述了 Singletion(单例)模式,并且给出了以下这个 Singletion 示例。这个类限制了对其构造器的访问,以确保永远只创建一个实例。 public class Elv...

Updated 2 years ago by wandersky

88. 保护性的编写 readObject 方法

Effective Java 第十二章 序列化

  第 50 条介绍了一个不可变的日期范围类,它包含可变的私有变量 Date。该类通过在其构造器和访问方法(accessor)中保护性的拷贝 Date 对象,极力维护其约束条件和不可变性。该类代...

Updated 2 years ago by wandersky

87. 考虑使用自定义的序列化形式

Effective Java 第十二章 序列化

  当你在时间紧迫的情况下编写类时,通常应该将精力集中在设计最佳的 API 上。有时,这意味着发布一个「一次性」实现,你也知道在将来的版本中会替换它。通常这不是一个问题,但是如果类实现 Seri...

Updated 2 years ago by wandersky

86. 非常谨慎地实现 Serializable

Effective Java 第十二章 序列化

  使类的实例可序列化非常简单,只需实现 Serializable 接口即可。因为这很容易做到,所以有一个普遍的误解,认为序列化只需要程序员付出很少的努力。而事实上要复杂得多。虽然使类可序列化的...

Updated 2 years ago by wandersky

85. 优先选择 Java 序列化的替代方案

Effective Java 第十二章 序列化

  当序列化在 1997 年添加到 Java 中时,它被认为有一定的风险。这种方法曾在研究语言(Modula-3)中尝试过,但从未在生产语言中使用过。虽然程序员不费什么力气就能实现分布式对象,这...

Updated 2 years ago by wandersky

84. 不要依赖线程调度器

Effective Java 第十一章 并发

  当许多线程可以运行时,线程调度器决定哪些线程可以运行以及运行多长时间。任何合理的操作系统都会尝试公平地做出这个决定,但是策略可能会有所不同。因此,编写良好的程序不应该依赖于此策略的细节。任何...

Updated 2 years ago by wandersky

83. 明智审慎的使用延迟初始化

Effective Java 第十一章 并发

  延迟初始化是延迟字段的初始化,直到需要它的值。如果不需要该值,则不会初始化字段。这种技术既适用于静态字段,也适用于实例字段。虽然延迟初始化主要是一种优化,但是它也可以用于破坏类中的有害循环和...

Updated 2 years ago by wandersky

82. 文档应包含线程安全属性

Effective Java 第十一章 并发

  类在其方法并发使用时的行为是其与客户端约定的重要组成部分。如果你没有记录类在这一方面的行为,那么它的用户将被迫做出假设。如果这些假设是错误的,生成的程序可能缺少足够的同步(详见 78 条)或...

Updated 2 years ago by wandersky

81. 并发工具优于 wait 和 notify

Effective Java 第十一章 并发

  本书第 1 版中专门用了一个条目来说明如何正确地使用 wait 和 notify ( Bloch01,详见第 50 条) 。它提出的建议仍然有效,并且在本条目的最后也对此做了概述,但是这条建...

Updated 2 years ago by wandersky

80. executor 、task 和 stream 优先于线程

Effective Java 第十一章 并发

  本书第 1 版中阐述了简单的工作队列(work queue)[Bloch01 ,详见第 49 条]代码。它利用一个后台线程,允许客户端可以插入异步处理任务到队列中。当不再需要这个工作队列时,...

Updated 2 years ago by wandersky