《代码之髓》笔记

来自 2018-03-26 的读书笔记,这本书很薄,这是读第二遍,每次读都有新收获。
应该找时间再读一遍,把这篇笔记也好好写写。。。

  1. 函数:过程抽象
  2. 嵌套数据结构的遍历 - 递归
  3. 异常处理
    1. try catch
    2. 成对操作的无遗漏执行
      1. finally 语句
      2. 资源自动管理:py 的 with,java 的 try-with-resources
    3. 是否应该在方法上标明可能抛出的异常?是否需要 受查/检查型 异常?
      • 回答:理念很棒,但 java 的实现方式,使得使用起来很繁琐。如果有更好的实现就好了。
    4. 使用异常,还一返回错误值?
      • 如果该错误是出人意料的,就用异常;反之,如果在某种程度上它是在预计范围内的,就应该使用错误值。
  4. 变量、作用域
  5. 容器:数组、链表、map、树、栈、队列
  6. 字符编码:内部编码、输出编码、源文件的编码
  7. 并发、并行
    1. amdal定律:并行加速比
    2. 竞态条件、不安全的前提
      1. 两个处理 共享内存
      2. 至少一个处理 会修改变量
      3. 变量的修改操作不具有原子性
    3. 消除竞态条件的方法:
      1. 不共享内存:进程
      2. 不可变对象
      3. 同步:同一时间只能有一个处理接触该变量。
        • 锁(实际上只是一个表示 '使用中' 的状态牌,其他处理也需要检查它,才能发挥效用)
      4. 保证修改操作的原子性:atomic
    4. 死锁的对策:事务管理,失败回滚
    5. 线程池
    6. 进程间通信:MessageQueue
  8. 面向对象
    1. 类、对象
      1 . 多继承的缺点,与其替代方案:委托(依赖注入)、接口、trait
  9. 内存管理 GC
  10. 大数据:
    1. 存储
      1. 传统 SQL 的 性能局限(ACID),与 NoSQL 的 BASE 模型。
      2. redis 缓存:数据的访问具有局部性
    2. map reduce:分布式处理
    3. 并发量:C10K 问题
      并发量:C10K 问题
  11. IO
    1. 非阻塞IO:Java 的 NIO
    2. 异步IO:Python 的 asyncio
posted @ 2019-01-22 19:59  於清樂  阅读(202)  评论(0编辑  收藏  举报