- 博客(6)
- 收藏
- 关注
原创 golang中的指针、方法和接口
(1)一个类型是否实现了接口,取决于该类型的方法集。对于类型T来说,方法集包括接收者为T的方法;对于类型*T来说,方法集包括接收者为T和*T的方法。在将一个类型对应的变量赋值给一个接口类型变量时,编译器会根据该原则判断是否赋值成功。可以使用reflect.ValueOf().NumMethod()查看类型的方法集。(2)在方法调用时,实际上需要进行值传递(对于接口变量来说,会动态绑定真正调用方法的变量,并将该变量进行值传递)。此时可能出现:方法接收者为*T,而变量为T;或者方法接收者为T,而变量为*T。
2020-06-11 16:44:28 380
原创 数据密集型应用系统设计 读书笔记 第三部分
(1)批处理系统:[1]MapReduce与分布式文件系统:MapReduce作用在分布式文件系统上读写文件,在Hadoop的MapReduce实现中,该文件系统称为HDFS。MapReduce的两个回调函数:<1>Mapper:从记录中提取关键词和值,生成任意数量的键值对;<2>Reducer:生成输出记录。MapReduce的分布式执行:HadoopMapReduce的并行化基于分区,作业的输入通常是HDFS中的一个目录,输入目录中的每一个文件可视为一个分区,由一个.
2020-06-02 20:11:14 183
原创 数据密集型应用系统设计 读书笔记 第二部分(下):一致性与共识
一致性与共识:(1)一致性保证:尽管可线性化(一致性级别)与可串行化(事务级别)属于完全不同的概念(事务隔离主要是为了处理并发执行事务时的各种临界状态,而分布式一致性主要针对延迟和故障等问题来协调副本之间的状态),但是基于两阶段加锁和实际串行执行的可串行化是典型的可线性化:不存在并发,且任意两个操作都具有严格的先后顺序。而基于快照隔离的可串行化只保证了因果一致性:无法区分并发写的先后顺序,但是可以保证快照中能看到所有已提交的事务,因一定提交在果之前,只要能看到果,则必然能看到因。(2)可线性化:
2020-06-01 18:29:29 211
原创 数据密集型应用系统设计 读书笔记 第二部分(上):复制,分区,事务
(1)数据复制:几乎所有的分布式数据库都使用了一种数据变化的方法:主从复制、多主节点复制、无主节点复制。主从复制和多主节点复制中,读请求可能发送到滞后的从节点,导致读到过期数据:写后读一致性和单调读一致性可以解决相关问题,无主节点复制实现了Quorum一致性,可以读到最新数据。多主节点复制和无主节点复制对写入的顺序没有保证,可能存在因果混乱,需要保证前缀读一致性,没有分区的主从复制可以保证主节点的写入顺序,又使用全序广播保证从节点的一致性,即保证了前缀读一致性。多主节点复制和无主节点复制可能存在并发写入,需
2020-05-29 18:50:02 212
原创 数据密集型应用系统设计 读书笔记 第一部分
(1)可靠、可扩展与可维护的应用系统:可靠性:即使发生了某些错误,系统仍可以正常工作。可扩展性:描述系统应对负载增加能力。可维护性:让工程和运营团队更加轻松。(2)数据模型:关系模型与文档模型:文档模型适用于类似文档的结构(例如一对多关系树),关系模型趋向于将数据分解;文档数据库不强制执行某种模式,而是由应用程序理解的“读时模式”;关系型数据库遵循写时模式:模式是显式的,且向数据库写入时必须遵守。(3)存储引擎:[1]追加日志+哈希索引:哈希索引存在于内存中,把键映射
2020-05-27 22:52:51 147
原创 流畅的python笔记 第一章:python数据模型
第零章 引言这是我个人阅读《流畅的python》这本书的读书笔记。目前我已经把这本书看过一遍,可以说这是一本比较难啃的书,但是仔细读下来你会发现自己的python水平提高好几个档次,甚至刷新了自己对python这门语言的认识。我花了将近一个月把这本书读完,现在回过头去看自己以前写的代码,感觉确实有些不忍直视。大众对python这门语言的第一感觉就是简单容易上手,认为学两三天就可以当py
2018-01-26 16:28:19 613 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人