北冥有鱼


  • 首页

  • 分类

  • 归档

  • 标签

  • 搜索

Java 笔记

发表于 2017-02-27 | 分类于 JAVA , 笔记 |

协变、逆变与不变

逆变 与 协变 用来 描述类型转换(type transformation)后的继承 关系,其定义:如果 X、Y 表示类型,f(⋅) 表示类型转换,≤ 表示继承关系(比如,A≤B 表示 A 是由 B 派生出来的子类)。

  • f(⋅) 是协变(Covariant)的,当 X≤Y 时,f(X)≤f(Y) 成立;如数组,当然,泛型也可以通过通配符(extends、super)来实现协变与逆变
  • f(⋅) 是逆变(Contravariant)的,当 X≤Y 时,f(Y)≤f(X) 成立
  • f(⋅) 是不变(Invariant)的,当 X≤Y 时上述两个式子均不成立,即 f(X) 与 f(Y) 相互之间没有继承关系。如泛型
阅读全文 »

集合类解析 笔记

发表于 2017-02-27 | 分类于 JAVA , 笔记 |

一、集合与数组

数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。

集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。

阅读全文 »

Effective Java 笔记

发表于 2017-02-27 | 分类于 JAVA , Effective Java , 笔记 |

1. 考虑静态工厂方法代替构造器

优势:

  1. 它们有名称。
  2. 不必在每次调用它们的时候都创建一个新对象。
  3. 它们可以返回原返回类型的任何子类型的对象。
  4. 在创建参数化类型实例的时候,它们使代码变得更加简洁。
阅读全文 »

分布式系统理论基础 - 时间、时钟和事件顺序

发表于 2017-01-17 | 分类于 Distributed Computing |

十六号…… 四月十六号。一九六零年四月十六号下午三点之前的一分钟你和我在一起,因为你我会记住这一分钟。从现在开始我们就是一分钟的朋友,这是事实,你改变不了,因为已经过去了。我明天会再来。 – 《阿飞正传》

现实生活中时间是很重要的概念,时间可以记录事情发生的时刻、比较事情发生的先后顺序。分布式系统的一些场景也需要记录和比较不同节点间事件发生的顺序,但不同于日常生活使用物理时钟记录时间,分布式系统使用逻辑时钟记录事件顺序关系,下面我们来看分布式系统中几种常见的逻辑时钟。


阅读全文 »

分布式系统理论进阶 - Paxos 变种和优化

发表于 2017-01-17 | 分类于 Distributed Computing |

引言

分布式系统理论进阶 - Paxos 中我们了解了 Basic Paxos、Multi Paxos 的基本原理,但如果想把 Paxos 应用于工程实践,了解基本原理还不够。

paxos-a

有很多基于 Paxos 的优化,在保证一致性协议正确 (safety) 的前提下,减少 Paxos 决议通信步骤、避免单点故障、实现节点负载均衡,从而降低时延、增加吞吐量、提升可用性,下面我们就来了解这些 Paxos 变种。

阅读全文 »
123…17
IAN

IAN

啊~ 五环

85 日志
21 分类
18 标签
GitHub Twitter 微博
© 2016 - 2017 IAN
由 Hexo 强力驱动
主题 - NexT.Mist
本站访问数人次 本站访问总量次