走向程序的康庄大道

宝剑锋从磨砺出,梅花香自苦寒来。

Spark核心原理 - 消息通信分析

Spark将通信层设计的非常巧妙,融合了各种设计/架构模式,将一个分布式集群系统的通信层细节完全屏蔽,这样在上层的计算框架的设计中能够获得很好的灵活性。同时,如果上层想要增加各种新的特性,或者对来自不同企业或组织的程序员贡献的特性,也能够很容易地增加进来,可以避开复杂的通信层而将注意力集中在上层计...

2018-05-30 01:51:22

阅读数 545

评论数 0

Kafka 消息偏移量的维护

Kafka是大数据领域常用的消息队列,其高效的吞吐量和分布式容错等特性是其收到青睐的重要原因。kafka消息的位置用好Kafka,维护其消息偏移量对于避免消息的重复消费与遗漏消费,确保消息的Exactly-once是至关重要的。 kafka的消息所在的位置Topic、Partitions、Off...

2017-08-02 17:11:02

阅读数 12671

评论数 4

哈希表

哈希表(Hash Table) 我们知道,通过对数组进行直接寻址(Direct Addressing),可以在 O(1) 时间内访问数组中的任意元素。所以,如果存储空间允许,可以提供一个数组,为每个可能的关键字保留一个位置,就可以应用直接寻址技术。 哈希表(Hash Table)是普通数组概念的推...

2017-03-08 17:55:00

阅读数 325

评论数 0

bash shell知识点

大小写转换 # 将输入的第一个参数转为大写 answer=$(echo "$1" | tr [A-Z] [a-z]) echo "$1" "$answer"

2019-04-26 17:09:40

阅读数 13

评论数 0

HFile校验

HBase 表大小统计: hbase org.apache.hadoop.hbase.mapreduce.RowCounter test:standard HFile校验: #]hbase hfile usage: HFile [-a] [-b] [-e] [-f <arg...

2019-03-25 17:38:43

阅读数 131

评论数 0

IO工具包commons-io

<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId&gt...

2019-03-22 18:15:26

阅读数 33

评论数 0

Java用数组实现队列

数组实现队列,实际是通过维护队首和队尾变量来实现一个循环数组,从而实现复杂度为1的FIFO队列。 interface Queue<T> { boolean add(T t) throws Exception; T take(); ...

2019-03-12 15:15:55

阅读数 43

评论数 0

Java集合工具包com.google.guava:guava

<dependency> <groupId>com.google.guava</groupId> <artifactId&am...

2019-02-26 20:58:54

阅读数 158

评论数 0

Java集合工具包commons-collections

<dependency> <groupId>commons-collections</groupId> <artifactId&a...

2019-02-13 15:27:25

阅读数 60

评论数 0

Linux Cron 表达式

Linux Cron表达式 Cron表达式的定义 Linux的Cron表达式支持分钟、小时、月的某天、月份、周当中的某天,最小的粒度到分钟、最大的粒度到月份和周的某天。 编辑一个linux定时任务: crontab -e 每位的意义 * * * * * 要执行的命令 -------...

2019-01-10 17:29:44

阅读数 279

评论数 0

Java多线程 - 内置锁与高级锁机制

当多线程共享一个资源变量的时候,需要对线程加以控制,以保证线程是安全的,共享的资源被有效的使用。 内置锁(监视锁) synchronized作用域代码块上,是一种内存可见的内置锁。 synchronized是一种可重入锁:同一个线程可以获得它自己持有的锁。 synchronized(x1...

2019-01-08 19:58:50

阅读数 193

评论数 0

大数据文件格式揭秘:Parquet、Avro、ORC

  Parquet、Avro、ORC格式 相同点 基于Hadoop文件系统优化出的存储结构 提供高效的压缩 二进制存储格式 文件可分割,具有很强的伸缩性和并行处理能力 使用schema进行自我描述 属于线上格式,可以在Hadoop节点之间传递数据   不同点 行式存储or列...

2018-12-17 20:50:28

阅读数 455

评论数 0

RDD repartition过程源码阅读

  将rdd的分区数量由少变多,需要调用repartition算子。 /** * reparition实际调用coalesce,并且shuffle=true / def repartition(numPartitions: Int)(implicit ord: Orderi...

2018-12-17 15:47:28

阅读数 63

评论数 0

Spark 闭合函数清理

  来看下面的函数 def coalesce(numPartitions: Int, shuffle: Boolean = false, partitionCoalescer: Option[PartitionCoalescer] = Option.empty)...

2018-12-17 15:17:36

阅读数 48

评论数 0

数据结构 - 树 - B树、B+树

前言 动态查找树主要有:二叉查找树(Binary Search Tree),平衡二叉查找树(Balanced Binary Search Tree),红黑树(Red-Black Tree ),B-tree/B+-tree/ B*-tree (B~Tree)。前三者是典型的二叉查找树结构,其查找的...

2018-12-05 17:09:13

阅读数 37

评论数 0

数据结构 - 树 - Trie树

  Trie树定义 Trie树,又称字典树,单词查找树或者前缀树,是一种用于快速检索的多叉树结构,如英文字母的字典树是一个26叉树,数字的字典树是一个10叉树。 Trie树可以利用字符串的公共前缀来节约存储空间。如下图所示,该trie树用10个节点保存了6个字符串tea,ten,to,in,...

2018-12-05 11:58:12

阅读数 48

评论数 0

数据结构 - 树 - 堆

  堆的定义 堆的定义如下: 堆树是一颗完全二叉树; 堆树中某个节点的值总是不大于或不小于其孩子节点的值; 堆树中每个节点的子树都是堆树. 当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆.当父节点的键值总是小于或等于任何一个子节点的键值时为最小堆.如下图,左边为最大堆,右边为...

2018-12-05 11:28:56

阅读数 36

评论数 0

服务器TIME_WAIT和CLOSE_WAIT详解和解决办法

  链接: 服务器TIME_WAIT和CLOSE_WAIT详解和解决办法; HttpClient连接池抛出大量ConnectionPoolTimeoutException: Timeout waiting for connection异常排查;      

2018-10-13 15:01:31

阅读数 69

评论数 0

tcp的三次握手与四次握手

  tcp连接打开的三次握手,关闭的四次握手过程   在服务器的日常维护过程中,会经常用到下面的命令: ~]# netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' CLOSE_WAIT 108 ES...

2018-10-13 14:55:25

阅读数 40

评论数 0

Spark取TopN问题

数据处理中, 经常会遇到取TopN的问题. 在Spark中,取TopN有如下的方法: 生成rdd  读取数据源的数据并转为rdd. val rdd = sc.textFile() 分区 将rdd划分分区,分区的个数根据实际的数据量和计算集群机器的数量以及核心数确定. val par...

2018-09-06 20:39:07

阅读数 453

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭