- 博客(12)
- 收藏
- 关注
原创 Redis 底层数据结构
Redis底层使用了6种数据结构来实现上层的各种数据结构,本文将对这6种数据结构分别进行简单的介绍。本文中的图片来自《Redis设计与实现第二版》。Redis数据结构和底层数据结构的对应关系如下:简单动态字符串Redis没有直接使用C字符串来保存字符串值,而是自己实现了名为SDS的结构体。Redis中数据的值都是使用sds保存。sds是一个结构体,包含三个成员。上图中的sds中保存了...
2018-12-21 11:46:15 3864
原创 Spark 运行架构
本文是《图解Spark核心技术与案例实战》一书的读书笔记,将简单介绍一下几种Spark运行架构。总体介绍三种角色Spark有本地运行模式,stand alone模式,集群模式,yarn模式,mesos模式等多种模式。这些模式的主要组成部分都可以看成SparkContext,Cluster Manager,Executor三个部分,其中SparkContext负责管理Application的执...
2018-12-18 23:05:06 901
原创 Spark Shuffle解析
本文是《图解Spark核心技术与案例实战》一书的读书笔记,简单讲解了Spark Shuffle的相关内容。Shuffle 介绍shuffle 在spark 中是连接不同stage的桥梁,连续的若干个算子如果不涉及到shuffle操作,那么就可以作为一个stage使用流水线的方式执行,不用生成和读取中间结果,提高速度。而shuffle就是前一个stage输出中间结果和后一个stage读取中间结果...
2018-12-17 19:02:29 309
原创 jvm 之垃圾收集
本文是阅读深入理解java虚拟机之后对jvm垃圾收集机制进行总结的读书笔记。java 内存布局以上就是1.7及之前的java内存的布局,在java1.8之后使用Meta Space取代了方法区。接下来详细介绍一下每一部分。程序计数器程序计数器线程私有,在程序运行时,每个线程实际上都是一系列的方法调用的过程,而方法调用的过程最后转化为字节码一条条执行的过程,在这个过程中,程序计数器pc记载...
2018-12-14 22:24:54 113
原创 Spark 存储模型
本文简单介绍Spark 的数据存储原理,是《图解Spark核心技术与案例实战》一书的读书笔记。组件spark 存储模型是主从模型,其中Driver是Master,Executor是Slave。Driver负责数据的元信息管理,Slave 负责存储数据,执行Driver传递过来的数据操作命令。Driver应用启动时,SparkContext会在Driver端创建SparkEnv,在Spark...
2018-12-14 17:53:21 1408
原创 Spark 执行流程
本文结合源代码和《图解Spark核心技术与案例实战》简单分析了Spark的job执行过程。分析的案例代码如下,是一个简单的word count 函数。public static void main( String[] args ) { String logFile = "wordcount.txt"; SparkConf conf = new Spar...
2018-12-11 14:32:13 348
原创 java集合类之ConcurrentHashMap
本文从线程安全的角度结合源代码介绍了ConcurrentHashMap,不介绍与HashMap雷同的部分,如果对HashMap的实现有兴趣,可以参考java 集合类之HashMap。本文介绍的ConcurrentHashMap基于Java1.8源代码,ConcurrentHashMap的实现在1.8有重大调整,使用CAS的方式取代了之前的分段锁。接下来分析一下put方法,以及其实现线程安全的原理...
2018-12-06 17:57:19 176
原创 java 集合类之HashMap
本文从源代码角度简单介绍HashMap。继承架构可以看出,HashMap主要是继承了AbstractMap,实现了Map接口。类似的继承了AbstractMap的还有ConcurrentHashMap,TreeMap等等抽象数据模型HashMap的抽象数据模型来自于算法中查找技术的散列算法针对碰撞提出的拉链表。具体示意图如下:拉链表散列表是为了快速查找而设计的一类数据结构,为了能快速...
2018-12-04 21:32:04 155
原创 java 集合类之LinkedList
本文将结合源代码简单介绍一下java 中LinkedList的实现。继承结构相比ArrayList,LinkedList的继承结构要复杂一些,可以看出,LinkedList还是双向队列的实现。也意味着LinkedList可以作为栈使用。重要的字段 transient int size = 0; /** * Pointer to first node. ...
2018-12-04 15:32:53 167
原创 Mysql 事务与MVCC并发控制
本文简单介绍了事务的ACID特性和Mysql事务的四种隔离级别,以及MVCC并发控制手段。事务的ACID特性原子性(Atomicity)原子性强调事务作为一个整体,要么完全执行成功,要么完全执行失败,不能存在一些操作成功,而其他的操作失败这样的可能会破坏数据一致性的情况。一致性(Consistency)一致性指的是数据永远在一致的状态,而不会存在一部分数据在一个一致的状态,另一部分数据...
2018-12-04 10:47:44 192
原创 数据库设计范式总结
这篇文章简单介绍一下数据库的1NF范式、2NF范式、3NF范式。1NF1NF范式要求数据库中不能有可以继续拆分的列,使数据库满足1NF范式要求的方法是拆分列。实例如下:姓名电话张三手机:18000001111,固话:010-99001100这样一张表不满足1NF的要求,因为电话那一列显然可以拆分为多个列,拆分之后如下:姓名手机固定电话张三...
2018-12-03 10:44:48 231
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人