摘要:
1. 三值逻辑 1.1. 真 1.1.1. true 1.2. 假 1.2.1. false 1.3. 不确定 1.3.1. unknown 2. 两种NULL 2.1. 未知”(unknown) 2.1.1. 不知道戴墨镜的人眼睛是什么颜色 2.1.2. 虽然现在不知道,但加上某些条件后就可以知道 阅读全文
摘要:
1. 概述 1.1. SQL-92标准里加入的最有用的特性 1.2. 写法 1.2.1. 简单CASE表达式 CASE sex WHEN '1' THEN ’男’ WHEN '2' THEN ’女’ ELSE ’其他’ END 1.2.1.1. 写法简单,但能实现的事情比较有限 1.2.2. 搜索C 阅读全文
摘要:
1. 响应式编程 1.1. 使用基于事件的范式处理异步数据流 1.2. 和异步编程提供了相同的性能优势 1.3. 能够扩展程序(特别是扩展I/O)以处理很多连接和数据源 2. 非阻塞I/O 2.1. 有效扩展服务器的基础 2.2. 允许服务器用相对较少的线程处理相对较多的连接 2.2.1. 传统的服 阅读全文
摘要:
1. JVM线程优化 1.1. 当空间不足时,可以调整线程使用的内存 1.2. 每个线程都有一个原生栈,操作系统会在这里存储线程的调用栈信息 1.3. 原生栈的大小是1 MB 1.3.1. 32位的Windows JVM原生栈大小是320KB 1.3.2. 在64位的JVM中,通常不会修改这个值 1 阅读全文
摘要:
1. 同步 1.1. 代码块对一组变量的访问看上去是串行的:每次只有一个线程可以访问内存 1.1.1. 由synchronized关键字保护的代码块 1.1.2. 用java.util.concurrent.lock.Lock类的实例保护的代码 1.1.3. java.util.concurrent 阅读全文
摘要:
1. 线程和硬件 1.1. 给CPU增加超线程并不能使应用程序性能翻倍 2. 线程池 2.1. 任务被提交到一个队列(可能有不止一个队列),然后一定数量的线程会从队列中取出任务并执行它们 2.2. 线程池的大小对获取最佳性能至关重要 2.2.1. 在某些情况下,过大的线程池会对性能造成损害 2.3. 阅读全文
摘要:
1. 高品质的代码 1.1. 性能(Performance) 1.1.1. 只执行需要的操作,而且执行迅速 1.1.2. 不会使系统陷入停顿 1.2. 可用性(Availability) 1.2.1. 持续在所需的性能水平上保持可用 1.2.2. Topic1 1.3. 安全性(Security) 阅读全文
摘要:
1. 理解可变性 1.1. 理解测试结果如何随时间变化 1.2. 可以通过多次运行测试后取平均值来解决 1.3. 因代码改进而进行的测试叫作回归测试(regression testing) 1.3.1. 原本的代码叫作基线(baseline) 1.3.2. 新的代码叫作样本(specimen) 1. 阅读全文
摘要:
1. 应用程序级别代码坏味道 1.1. 布尔盲点 1.1.1. 由于函数使用布尔值而导致的信息缺失 1.1.2. 解决方案是将布尔替换为枚举类型 1.2. 组合爆炸 1.2.1. 不同的代码使用不同的参数组合来执行同一件事情的产物 1.2.2. 解决方案使用泛型 1.3. 人为复杂性 1.3.1. 阅读全文
摘要:
1. 测试真实的应用程序 1.1. 应该以实际产品的使用方式进行测试 1.2. 所有的基准测试通常都包括一个预热期,在这期间,JVM可以将代码编译到最佳状态 1.3. 微基准测试(microbenchmark) 1.3.1. 通过测量一小部分代码的性能来确定多种实现中哪个最好 1.3.2. 必须读取 阅读全文