Blog


Merkle Patricia Trie(翻译)

原文:https://github.com/ethereum/wiki/wiki/Patricia-Tree

改良的 Merkle Patricia Trie 规范(又称为 Merkle Patricia Tree)

Merkle Patricia Trie(下简称 MPT 树,Trie 又称前缀树或字典树)尝试提供一种加密认证的数据结构,其可用于存储任意类型的的键值对。本文仅讨论键值对为字符串的情况(对于其他类型,只需要使用某种序列化方式将其转换为字符串即可)。这些键值对是完全确定的,这意味着两颗具有相同键值对的 Patricia 前缀树,它们的数据是保证完全一致的,因此也拥有相同的根哈[……]

继续阅读




《计算机网络:自顶向下方法》笔记(6):无线网络和移动网络

  • 2019年7月21日
  • 读书

无线网络和移动网络

无线网络的分类根据:1. 分组是否跨越多个无线跳,2. 是否有基站这样的基础设施

  • 单跳 + 有基础设施:普通的室内 Wifi,3G,4G 网络
  • 单跳 + 无基础设施:蓝牙,具有自组织模式的 802.11
  • 多跳 + 有基础设施:无线网状网络。结点为了与某基站通信,需要通过其他无线结点做中继。
  • 多跳 + 无基础设施:移动自组织网络(MANET),车载自组织网络(VANET)。

无线链路的网络特征:信号强度递减,其他信号源干扰,多路径传播。

CDMA,码分多址,对每一个数据比特都进行编码,如 1 编码为(1,1,-1,1,1,1,-1,-1)(实际要长得多),0编码相[……]

继续阅读




《计算机网络:自顶向下方法》笔记(5):链路层

  • 2019年7月6日
  • 读书

链路层

链路层协议的任何设备称为结点(node)

沿着通信路径连接相邻结点的通信信道称为链路(link)

链路层协议功能:

  • 成帧(framing)。把数据报(segment)封装成帧。
  • 链路接入。媒体访问控制(Medium Access Control,MAC)用于协调多个结点共享单个广播链路时候的帧传输。

  • 可靠交付。通过确认和重传保证无差错移动每个网络层的数据报。对于差错率低的链路,如光线,同轴电缆等,则不提供可靠交付,由上层保证可靠交付。

  • 差错检测和纠正。(通过校验和)

链路层使用更复杂的 CRC 差错检测是因为其使用了专门的硬件实现。

有两种网络链路:点对点(point-[……]

继续阅读




《计算机网络:自顶向下方法》笔记(4):网络层

  • 2019年6月23日
  • 读书

网络层

网络层的功能是:分组从一台发送主机移动到另一台接收主机。细分为两个子功能:转发(forwarding)和路由选择(routing)。涉及的协议是:IP,NAT,ICMP。

转发:分组从一个输入链路到达路由器的时候,将其移动到一条合适的输出链路。

路由选择:从发送主机到接收主机的端到端的路由器选择。

每个路由器都有一张转发表,转发表指示一个分组应该移动到哪条输出链路。

某些计算机网络中还有第三种功能,连接建立(connection setup)。因为某些网络体系结构中(包括 ATM,帧中继的体系结构)属于虚电路网络。和因特网的数据报网络不一样,虚电路网络提供恒定速率和连接功能。[……]

继续阅读




《计算机网络:自顶向下方法》笔记(3):运输层

  • 2019年6月15日
  • 读书

运输层

运输层协议为运行在不同主机上的应用进程之间提供了逻辑通信(logic communication)功能。运输层分组成为报文段(segment)。

TCP 为应用程序提供了几种附加服务。可靠数据传输(reliable data transfer),拥塞控制(congesion control)。

多路复用与多路分解

接收运输层报文段中并交付到正确的套接字的工作称为多路分解(demultiplexing)。

将各个套接字的数据封装并传递到网络层成为多路复用(multiplexing)。

UDP

UDP 是无连接的,他在 IP 层上只增加了多路复用与多路分解(即端口号 port[……]

继续阅读




《计算机网络:自顶向下方法》笔记(2):应用层

2.应用层

套接字是应用程序进程和运输层协议之间的接口。

运输层协议特性:可靠数据传输,吞吐量,时延,安全性

运输层提供了 TCP 和 UDP 两种运输服务。TCP 是面向连接的,并提供了可靠的数据传输服务。UDP 不是面向连接的,切不提供可靠数据传输服务。

往返时间 RTT(Round-Trip Time),表示一个短分组从客户到服务器再反悔到客户所花费的时间。RTT 包括分组传播时延,排队时延和处理时延。

HTTP

HTTP 基于 TCP,无需关心数据丢失的问题。HTTP 是个无状态协议,并不会保存关于客户的任何信息。(基于 HTTP 可以实现有状态协议,如 Cookie)。H[……]

继续阅读




《计算机网络:自顶向下方法》笔记(1):计算机网络和因特网

1. 计算机网络和因特网

网络传输基于协议运行。一个协议定义了在两个或多个通信尸体之间交换的保温格式和次序,以及报文发送/或接收一条报文或其他事件锁所采取的动作。

因特网是一个特定的计算机网络,也是目前最大的计算机网络。

客户端经过一个接入 ISP(Internet Service Providers,网络服务提供商) 与因特网相连。接入 ISP 的接入技术包括 DSL,电缆,FTTH,Wifi,蜂窝等。接入 ISP 不必是电信运营商,也可以是公司,学校这样的单位。

现在的 ISP 网络结构是:客户端接入到低层 ISP,低层 ISP 接入到高层 ISP,较高层 ISP 彼此互联。

分[……]

继续阅读




Java 设计模式总结

创建类模式

1. 单例模式

特点:全局唯一,所有类共享一个实例化对象

使用场景:一个类独占一个唯一资源时考虑使用。如蓝牙等 IO 类,或者根,管理器等虚拟类。其他情况应慎重使用。

2. 工厂模式

特点:用户无需知道实例构造方法,方便用户实例化

使用场景:直接实例化一个对象较为复杂(需要多步)时;一个对象(接口)对应多种实现,而用户无需关注具体实现类是哪个时。

3. 抽象工厂模式

特点: 工厂的工厂

使用场景:存在多个平行的工厂模式实现类时。

4. 建造者模式

特点: 一个 Builder 类对应一个类,通过链式调用不断添加参数,在最后调用 build() 实例化对应类。[……]

继续阅读




《敏捷软件开发:原则、模式与实践》笔记(4)

  • 2019年3月25日
  • 读书

第 10 章 Liskov 替换原则(LSP)

一个模型,如果孤立的来看,并不具有真正意义上的有效性。模型的有效性只能通过它的客户程序来体现。能解决问题的模型才是好模型

IS-A 的关系是就行为方式而言的。Rectangle 可以单独设置长宽,Square 不可以,他们的行为是不一致的。(但如果边长只能在创建时设置,那其余部分的行为是可以一致的。所以还是要看如何使用。)

可以通过编写单元测试的方法指定契约(约定,如 Rectangle 设置完 width 之后 height 不变)。

Line(线) 和 LineSegment(线段) 的 LSP 问题:Line 有两个点 p1,p2[……]

继续阅读




Sublime Android Studio Logcat 高亮语法插件

网上找的都是旧的 Logcat 格式,Android Studio 日志格式不适配。于是自己改了一个:

https://gist.github.com/sickworm/8ae911809f29c38767171767aed2ed3d

支持且仅支持 Android Studio 默认格式,e.g.:

使用方法:
点击 Preferences -> Browse Packages(Windows)或 Sublime Text -> Preferences -> Browse Packages(Mac),把上面的文件扔进 User[……]

继续阅读