zoukankan      html  css  js  c++  java
  • <<代码的未来>>读书笔记

    1.编程的本质是思考.

    2.无论使用什么编程语言,生产一条基本语句所需要的工数几乎是一定的.(<<人月神话>>)#使用抽象程度高的语言可以提高生产效率.

    3.DSL:What, not How

    • 内部DSL:"借宿"在宿主语言中,借用了宿主语言语法.
    • 外部DSL:独立于编程语言,可以实现跨语言共享.eg.XML,SQL.

    4.GC

    • 术语
      • GC:已经引用不到的对象被视为"死亡",将"死亡"对象找出来,作为垃圾回收.
      • Root:判断对象是否被引用的起始点.不同语言和编译器有不同规定,但基本是将变量和运行栈空间作为根.
    • GC算法
      • 基本算法
        • Mark and Sweep/Compact
        • Copy and Collection
        • Reference Count
      • 改良的应用方式
        • Generational GC:采用Mark and Sweep或Copy and Collection都可以,大多采用Copy and Collection
        • Incremental GC
        • Parallel GC  
      • GC大一统理论:任何一种GC算法都是跟踪回收和引用计数两种思路的组合.  

    5.墨菲定律(Murphy's Law):Anything that can go wrong will go wrong. 

    6.高阶函数:用函数作参数的函数.

    7.闭包:在函数对象中,将局部变量这一环境封闭起来的结构被称为闭包.被封闭起来的是变量的寿命,与封闭它的函数对象寿命相等."过程与数据结合"是形容面向对象中的"对象"时常用的表达.对象是在数据中以方法的形式内含了过程,而闭包则是在过程中以环境的形式内含了数据.

    8.Duck Type

    9.WSGI:用于连接HTTP服务器与框架的库.

    10.数据库ACID特性

    • Automicity:对于数据库的操作只允许"全部完成"或"全部未改变"这两种状态,不允许中间状态.
    • Consistency:数据库的状态必须永远满足给定的条件.(如银行存款非负)
    • Isolation:保持原子性的一系列中间状态不能由其它事务.
    • Durability:当保持原子性的一系列操作完成时,期结果会被保存并且不会丢失.

    11.CAP原理

    在大规模环境中

    • Consistency
    • Availability
    • Partiotion Tolerance

    三个性质中,只能同时满足两个.

    12.CAP解决方案-BASE

    • Basically Available
    • Soft-state
    • Eventually consistent

    13.键-值存储:键-值存储使用散列值,结构简单,容易将数据分布在多台计算机上,适合大规模数据.

    14.数据库分库(Sharding/Partitioning)

    • 水平分割:将一张表中的各行数据直接分割到多个表中.
    • 垂直分割:将一张表中的某些字段(列)分离到其他表中.

    15.NoSQL数据库

    • 优势
      • 限定数据访问方式:大多数NoSQL对数据的访问方式都被限定为通过键来查询对应的值.而且可以以键为单位来进行自动水平分割.
      • 放宽一致性原则:遵循BASE  
    • 分类
      • 键-值存储数据库
      • 面向文档数据库:CoutchDB,MongoDB,
      • 面向对象数据库:提升一些数据结构比较复杂的小规模数据库的访问速度. 

        

    16.I/O阻塞:I比O明显.

    17.ZeroMQ:为分布式应用程序开发提供进程间通信功能的库.

    19.拖延:减少不必要不仅急的工作。

          

  • 相关阅读:
    类和对象系列教材 (一)- 什么是Java中的引用?
    类和对象系列教材 (一)- 什么是Java中的引用?
    数组系列教材 (七)- java.util.Arrays类常用方法
    数组系列教材 (七)- java.util.Arrays类常用方法
    数组系列教材 (七)- java.util.Arrays类常用方法
    数组系列教材 (六)- Java 如何使用二维数组
    数组系列教材 (六)- Java 如何使用二维数组
    [LeetCode] 938. Range Sum of BST
    [LeetCode] 13. Roman to Integer
    [LeetCode] 12. Integer to Roman
  • 原文地址:https://www.cnblogs.com/bukekangli/p/4623361.html
Copyright © 2011-2022 走看看