摘要:
2.8 程序中的幽灵:隐蔽的错误 2.8.1 无提示的错误案例 以求两个整数的平均值为例。请看下面代码: 输出如下: 这是一个典型的溢出问题!显然,v1 + v2的结果已经导致了int的溢出。 2.8.2 并发下的ArrayList ArrayList是一个线程不安全的容器。如果在多线程中使用Arr 阅读全文
摘要:
2.3 volatile 与 Java 内存模型(JMM) volatile对于保证操作的原子性是由非常大的帮助的(可见性)。但是需要注意的是,volatile并不能代替锁,它也无法保证一些复合操作的原子性。比如下面的例子,通过volatile是无法保证i++的原子性操 作的: 在对count累加前 阅读全文
摘要:
1. 第一范式 __第一范式__ 是最基本的规范形式,即关系中每个属性都是不可再分的简单项。 __定义__ 如果关系模式R所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,简称1NF,记住R属于1NF。 把满足1NF的关系称为规范化。在关系数据库系统中只讨论规范化的关系,凡是非规 阅读全文
摘要:
2.1 有关线程你必须知道的事 进程是系统进行资源分配和调度的基本单位,是程序的基本执行实体。 线程就是轻量级进程,是程序执行的最小单位。 线程的生命周期,如图2.3所示。 线程的所有状态都在Thread中的State枚举中定义,如下所示: NEW状态表示刚刚创建的线程,这种线程还没有开始执行。等到 阅读全文
摘要:
1.1 概念 1.1.1 同步(Synchronous)和异步(Asynchronous) 同步和异步通常用来形容一次调用。 同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为。 异步调用更像一个消息传递,一旦开始,方法调用就会立即返回,调用者就可以继续后续的操作。而异步方法通常 阅读全文