一级: 全部 文章阅读

存档时光 Timeline
2019年 共 38 篇
8月 共 11 篇
2019-08-31
Spark源码分析10 - 存储体系03:通信层(2)数据传输
查看简介

对于Spark分布式计算的特性而言,Map任务和Reduce任务很有可能会发生Shuffle过程,此时Map任务会将产生的数据保存到存储体系中,然后由Reduce任务进行拉取,当遇到数据非本地化的情况则需要进行跨节点数据传输。BlockManager通过BlockTransferService向外提供数据拉取服务,同时在没有配置外部Shuffle客户端的情况下,BlockTransferService还会充当Shuffle客户端用于拉取数据。

2019-08-28
2019-08-25
Spark源码分析08 - 存储体系01:辅助类
查看简介

Spark存储体系由各个Driver和Executor实例中的BlockManager所构成,实现了分布式管理,而从Driver和Executor单个节点来看,Spark存储体系属于节点的SparkEnv的内部组成部分;存储体系主要分为两层:通信层和存储层

2019-08-20
Spark源码分析07 - 通信架构05:事件总线
查看简介

一般来说,笔者通常将事件总线归为Spark的通信架构层。事件总线是以监听器模式实现的,主要组成结构分为监听器、事件源和事件分发器(也即是事件总线)。Spark中定义了大量的事件总线,方便监听者监听自己所感兴趣的事件。

2019-08-15
Spark源码分析05 - 通信架构03:高层实现(1)RpcEnv和Dispatcher
查看简介

Spark针对各类场景,实现了不同的RpcHandler和StreamManager,在Spark Core模块的org.apache.spark.rpc包下,包含了RPC通信框架的高层实现,在本文中我们将以具体流程来对它们进行解析。

2019-08-11
Spark源码分析03 - 通信架构01:传输层原理(1)传输层组件
查看简介

主要讲解通信架构中传输层相关的组件,包括TransportServer、TransportClient、Bootstrap等

2019-08-02
7月 共 7 篇
2019-07-31
2019-07-30
2019-07-24
2019-07-21
Kafka系列 24 - 服务端源码分析 15:身份认证 查看简介

主要讲解Kafka中权限认证的配置和身份认证的具体流程

2019-07-17
2019-07-09
Kafka系列 22 - 服务端源码分析 13:GroupCoordinator相关组件 查看简介

主要讲解与GroupCoordinator相关的组件,包括GroupMetadata、MemberMetadata等

2019-07-03
6月 共 6 篇
2019-06-30
2019-06-26
Kafka系列 19 - 服务端源码分析 10:分区与副本状态机及Leader副本选举器 查看简介

主要讲解分区和副本的状态机机制以及Leader副本的选举器

2019-06-21
Kafka系列 18 - 服务端源码分析 09:KafkaController基本组件 查看简介

主要简介KafkaController的辅助组件,包括ControllerContext、ControllerChannelManager和ControllerBrokerRequestBatch

2019-06-17
Kafka系列 17 - 服务端源码分析 08:副本的管理 查看简介

讲解ReplicaManager对副本的管理,以及消息同步机制

2019-06-05
Kafka系列 15 - 服务端源码分析 06:延迟任务案例 查看简介

讲解生产请求和消费请求的延迟任务处理

5月 共 6 篇
2019-05-29
Kafka系列 14 - 服务端源码分析 05:时间轮的实现 查看简介

主要讲解时间轮算法和Kafka中的时间轮实现

2019-05-24
Kafka系列 13 - 服务端源码分析 04:日志的存储管理 查看简介

主要讲解LogManager的实现,以及日志压缩,日志系统的初始化

2019-05-12
Kafka系列 11 - 服务端源码分析 02:日志的存储构成(1) 查看简介

主要讲解OffsetIndex、Message、ByteBufferMessageSet、FileMessageSet及日志读写操作

2019-05-07
2019-05-03
Kafka系列 09 - 消费者源码分析 03:更新Offset、重置Position、自动任务和消息拉取 查看简介

讲解OffsetFetchRequest、ListOffsetRequest、HeartbeatRequest、OffsetCommitRequest和FetchRequest的处理

4月 共 3 篇
2019-04-28
Kafka系列 08 - 消费者源码分析 02:Rebalance操作 查看简介

讲解GroupCoordinatorRequest、JoinGroupRequest和SyncGroupRequest请求的发送

2019-04-19
Kafka系列 07 - 消费者源码分析 01:KafkaConsumer的创建及主题订阅 查看简介

本文主要讲解KafkaConsumer的创建、心跳操作Heartbeat和HeartbeatTask、Offset自动提交任务AutoCommitTask及主体订阅相关。

2019-04-11
Kafka系列 06 - 生产者源码分析 02:消息发送 查看简介

Kafka提供了两种消息发送的形式:同步发送和异步发送,其实它们本质上都是异步发送。消息发送涉及多个过程,底层依赖于NIO的同步非阻塞处理。

3月 共 2 篇
2019-03-11
Kafka系列 05 - 生产者源码分析 01:元数据更新 查看简介

KafkaProducer对元数据的管理和操作,是先行于数据发送环节的。元数据的完整、正确与否决定了是数据发送先决条件。KafkaProducer对元数据的更新操作与消息数据的发送操作虽然都需要经过网络I/O,但二者的实现略有差异

2019-03-01
Kafka系列 03 - 消费者的基本使用 查看简介

KafkaConsumer对象用于读取消息。创建KafkaConsumer对象与创建KafkaProducer对象非常相似。

2月 共 2 篇
2019-02-20
Kafka系列 02 - 生产者的基本使用 查看简介

Kafka生产者是提供给开发者用于向Kafka中写入消息的组件。

2019-02-12
Kafka系列 01 - 基本概念 查看简介

Kafka是分布式的、分区的且具有副本机制的消息服务器。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。Kafka对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer,此外Kafka集群有多个Kafka实例组成,每个实例(server)成为broker。无论是Kafka集群,还是Producer和Consumer都依赖于Zookeeper来保证系统可用性集群保存一些meta信息。

1月 共 1 篇
2019-01-08
Java多线程 48 - Executors详解 查看简介

Executors是java.util.concurrent包提供一个用于创建各类线程池的工厂类,其中有大量的静态方法可以方便我们创建ThreadPoolExecutor和ScheduledThreadPoolExecutor线程池,本文将一一进行介绍。

2018年 共 39 篇
12月 共 3 篇
2018-12-22
Java多线程 47 - CompletionService详解 查看简介

JDK提供了CompletionService接口用于解决该问题。在它的实现类ExecutorCompletionService中,通过维护一个队列保存结束任务的Future,如果有任务结束,任务的Future会保存到队列中,从该队列中一定能拿到任务的返回结果;如果没有已经完成的任务,队列为空,取结果的线程才会进入阻塞等待。

2018-12-16
Java多线程 46 - ScheduledThreadPoolExecutor详解(二) 查看简介

ScheduledThreadPoolExecutor用于执行周期性或延时性的定时任务,它是在ThreadPoolExecutor的基础上实现的任务调度线程池,内部使用延时工作队列DelayedWorkQueue实现对任务的延时调度。DelayedWorkQueue内部使用一个初始容量为16的数组来保存任务,容量不够时会按照现有容量的1.5倍进行扩容,最大容量可达Integer.MAX_VALUE。

2018-12-01
Java多线程 45 - ScheduledThreadPoolExecutor详解(一) 查看简介

ScheduledThreadPoolExecutor用于执行周期性或延时性的定时任务,它是在ThreadPoolExecutor的基础上实现的任务调度线程池,内部使用延时工作队列DelayedWorkQueue实现对任务的延时调度。DelayedWorkQueue内部使用一个初始容量为16的数组来保存任务,容量不够时会按照现有容量的1.5倍进行扩容,最大容量可达Integer.MAX_VALUE。

11月 共 4 篇
2018-11-27
Java多线程 44 - ThreadPoolExecutor详解(二) 查看简介

ThreadPoolExecutor是线程池类,可以通俗的将它理解为存放一定数量线程的一个线程集合。线程池允许若个线程同时运行,同时运行的线程数量就是线程池的容量;当添加的到线程池中的线程超过它的容量时,会有一部分线程阻塞等待。线程池会通过相应的调度策略和拒绝策略,对添加到线程池中的线程进行管理。

2018-11-17
Java多线程 43 - ThreadPoolExecutor详解(一) 查看简介

ThreadPoolExecutor是线程池类,可以通俗的将它理解为存放一定数量线程的一个线程集合。线程池允许若个线程同时运行,同时运行的线程数量就是线程池的容量;当添加的到线程池中的线程超过它的容量时,会有一部分线程阻塞等待。线程池会通过相应的调度策略和拒绝策略,对添加到线程池中的线程进行管理。

2018-11-07
Java多线程 42 - Runnable、Callable和Future详解 查看简介

对于Runnable接口我们其实是很熟悉的,在前面对线程的使用中经常接触它。Runnable接口是针对单纯的无返回值任务,但在Java的多线程机制中,还提供了有返回值任务相应的接口,接下将详细讨论这些线程执行的任务。

2018-11-01
Java多线程 41 - 线程池基础 查看简介

从上一篇文章可知,ThreadPoolExecutor是我们最常用的线程池类,在介绍该类之前,我们先研究一下它的父类。

10月 共 4 篇
2018-10-22
Java多线程 40 - 线程池整体框架 查看简介

本文给出了Java线程池涉及到的各个组件的简介。

2018-10-18
Java多线程 39 - ConcurrentLinkedQueue详解 查看简介

ConcurrentLinkedQueue是线程安全的队列,它适用于高并发的场景。它是一个基于链接节点的无界线程安全队列,按照FIFO(先进先出)原则对元素进行排序。队列元素中不可以放置null元素(内部实现的特殊节点除外)。

2018-10-16
Java多线程 38 - LinkedBlockingDeque详解 查看简介

LinkedBlockingDeque是双向链表实现的双向并发阻塞队列,该阻塞队列同时支持FIFO和FILO两种操作方式,即可以从队列的头和尾同时操作(添加或删除);并且该阻塞队列是支持线程安全。此外,LinkedBlockingDeque还是可选容量的(防止过度膨胀),即可以指定队列的容量。

2018-10-02
Java多线程 37 - LinkedBlockingQueue详解 查看简介

LinkedBlockingQueue是一个单向链表实现的阻塞队列。该队列按FIFO(先进先出)排序元素,新元素插入到队列的尾部,并且队列获取操作会获得位于队列头部的元素。链接队列的吞吐量通常要高于基于数组的队列,但是在大多数并发应用程序中,其可预知的性能要低。

9月 共 4 篇
2018-09-30
Java多线程 36 - ArrayBlockingQueue详解 查看简介

ArrayBlockingQueue是数组实现的线程安全的、有界的阻塞队列。

2018-09-24
定制Git的Commit Message模板 查看简介

使用良好的Commit Message结构可以使我们提交时的备注信息更清晰,我们可以将Commit Message定义为三个部分:Header、Body和Footer,其中Header必须有,Body和Footer可以按情况省略。

2018-09-15
Java多线程 35 - ConcurrentSkipListSet详解 查看简介

ConcurrentSkipListSet是线程安全的有序的集合,适用于高并发的场景。

2018-09-04
Java多线程 34 - ConcurrentSkipListMap(JDK1.7)详解(三) 查看简介

ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景。

8月 共 3 篇
2018-08-30
Java多线程 33 - ConcurrentSkipListMap(JDK1.7)详解(二) 查看简介

ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景。

2018-08-25
Java多线程 32 - ConcurrentSkipListMap(JDK1.7)详解(一) 查看简介

ConcurrentSkipListMap是线程安全的有序的哈希表,适用于高并发的场景。

2018-08-15
Java多线程 31 - ConcurrentHashMap(JDK1.7)详解(二) 查看简介

ConcurrentHashMap是线程安全的哈希表,用法与HashMap或Hashtable类似。

7月 共 4 篇
2018-07-31
Java多线程 30 - ConcurrentHashMap(JDK1.7)详解(一) 查看简介

ConcurrentHashMap是线程安全的哈希表,用法与HashMap或Hashtable类似。

2018-07-26
Java多线程 29 - CopyOnWriteArraySet详解 查看简介

CopyOnWriteArraySet是线程安全的无序的集合,可以将它理解成线程安全的HashSet。CopyOnWriteArraySet和HashSet虽然都继承于共同的父类AbstractSet,但HashSet是通过散列表(HashMap)实现的,而CopyOnWriteArraySet则是通过动态数组(CopyOnWriteArrayList)实现的,并不是散列表。

2018-07-10
Java多线程 28 - CopyOnWriteArrayList详解 查看简介

CopyOnWriteArrayList相当于线程安全的ArrayList,它和ArrayList一样是个可变数组。

2018-07-04
修改Git编辑注释的编辑器和注释字符 查看简介

当我们在执行git commit操作时,默认是使用git commit -m "备注信息"的方式来填写备注信息,但是这种方式只能填写单行备注信息,对于日常工作中我们可能需要详细对每个提交版本的进行多行的备注信息,此时我们可以配置Git默认的备注信息编辑器,比如我们可以使用Visual Studio Code这编辑器,当然也可以使用Sublime这种轻量级编辑器。

6月 共 1 篇
2018-06-22
Java多线程 27 - JUC集合框架 查看简介

在Java 集合系列专栏中,介绍了Java集合的架构,主体内容包括Collection集合和Map类,Collection集合又可以划分为List(队列)和Set(集合)。

5月 共 3 篇
2018-05-22
Java多线程 25 - Semaphore详解 查看简介

Semaphore是一个计数信号量,它的本质是一个共享锁。信号量维护了一个信号量许可集。线程可以通过调用acquire()来获取信号量的许可;当信号量中有可用的许可时,线程能获取该许可;否则线程必须等待,直到有可用的许可为止。线程可以通过release()来释放它所持有的信号量许可。

2018-05-13
Java多线程 24 - CyclicBarrier详解 查看简介

CyclicBarrier是一个同步辅助类,允许一组线程互相等待,直到到达某个公共屏障点 (Common Barrier Point)。因为该barrier在释放等待线程后可以重用,所以称它为循环的barrier。

2018-05-05
Java多线程 23 - CountDownLatch详解 查看简介

CountDownLatch是一个同步辅助类,被称作”栅栏“,它能够实现在某些线程中执行的操作完成之前,让一个或多个线程一直等待。

4月 共 3 篇
2018-04-30
Java多线程 22 - AbstractQueuedSynchronizer详解(三) 查看简介

AQS是一个抽象类,继承自AbstractOwnableSynchronizer类,并实现了Serializable接口。虽然AQS是一个抽象类,但其内部并没有抽象方法,这是典型的模板设计模式的应用。AQS作为一个基础组件为继承它的实现类提供基础设施,如构建等待队列、控制同步状态等;其内部除了提供并发操作的核心方法以及等待队列操作外,还提供了一些模板方法让子类自己实现,AQS只关注内部公共方法实现,并不关心外部不同模式的实现。

2018-04-28
Java多线程 21 - AbstractQueuedSynchronizer详解(二) 查看简介

AQS是一个抽象类,继承自AbstractOwnableSynchronizer类,并实现了Serializable接口。虽然AQS是一个抽象类,但其内部并没有抽象方法,这是典型的模板设计模式的应用。AQS作为一个基础组件为继承它的实现类提供基础设施,如构建等待队列、控制同步状态等;其内部除了提供并发操作的核心方法以及等待队列操作外,还提供了一些模板方法让子类自己实现,AQS只关注内部公共方法实现,并不关心外部不同模式的实现。

2018-04-17
Java多线程 20 - AbstractQueuedSynchronizer详解(一) 查看简介

AQS是一个抽象类,继承自AbstractOwnableSynchronizer类,并实现了Serializable接口。虽然AQS是一个抽象类,但其内部并没有抽象方法,这是典型的模板设计模式的应用。AQS作为一个基础组件为继承它的实现类提供基础设施,如构建等待队列、控制同步状态等;其内部除了提供并发操作的核心方法以及等待队列操作外,还提供了一些模板方法让子类自己实现,AQS只关注内部公共方法实现,并不关心外部不同模式的实现。

3月 共 2 篇
2018-03-15
Spark基础(九) - Spark缓存和持久化 查看简介

与RDD类似,SparkStreaming也可以让开发人员手动控制,将数据流中的数据持久化到内存中。对DStream调用persist()方法,就可以让SparkStreaming自动将该数据流中的所有产生的RDD,都持久化到内存中。如果要对一个DStream多次执行操作,那么,对DStream持久化是非常有用的。因为多次操作,可以共享使用内存中的一份缓存数据。

2018-03-03
Spark基础(八) - Spark Streaming 查看简介

Spark Streaming,其实就是一种Spark提供的,对于大数据,进行实时计算的一种框架。它的底层,其实,也是基于我们之前讲解的SparkCore的。基本的计算模型,还是基于内存的大数据实时计算模型。而且,它的底层的组件或者叫做概念,其实还是最核心的RDD。

2月 共 3 篇
2018-02-23
2018-02-14
Spark基础(六) - Spark SQL 查看简介

Spark 1.0版本开始,推出了Spark SQL。其实最早使用的,都是Hadoop自己的Hive查询引擎;但是后来Spark提供了Shark;再后来Shark被淘汰,推出了Spark SQL。Shark的性能比Hive就要高出一个数量级,而Spark SQL的性能又比Shark高出一个数量级。

2018-02-02
Spark基础(五) - Spark性能优化和错误诊断 查看简介

由于Spark的计算本质是基于内存的,所以Spark性能程序的性能可能因为集群中的任何因素出现瓶颈:CPU、网络带宽、或者是内存。如果内存能够容纳得下所有的数据,那么网络传输和通信就会导致性能出现瓶颈。

1月 共 5 篇
2018-01-27
Kafka权威指南 查看简介

每个应用程序都会产生数据,包括日志消息、度量指标、用户活动记录、响应消息等。如何移动数据,几乎变得与数据本身一样重要。如果你是架构师、开发者或者产品工程师,同时也是Apache Kafka新手,那么这本实践指南将会帮助你成为流式平台上处理实时数据的专家。

2018-01-20
Spark基础(四) - Spark架构简介 查看简介

本文简单介绍了Spark的基础架构以及相关的Spark参数配置及命令

2018-01-18
Spark基础(三) - 基础案例 查看简介

本文实现了几个Spark相关的基础案例

2018-01-15
Java多线程 19 - LockSupport 查看简介

LockSupport是用来创建锁和其他同步类的基本线程阻塞原语。

2018-01-06
Spark基础(二) - Transformation和Action 查看简介

Spark支持两种RDD操作:Transformation和Action。Transformation操作会针对已有的RDD创建一个新的RDD;而Action则主要是对RDD进行最后的操作,比如遍历、reduce、保存到文件等,并可以返回结果给Driver程序。

2017年 共 23 篇
12月 共 4 篇
2017-12-30
Spark基础(一) - Spark基本工作原理 查看简介

Apache Spark 是专为大规模数据处理而设计的快速通用的计算引擎。Spark是UC Berkeley AMP Lab(加州大学伯克利分校的AMP实验室)所开源的类Hadoop MapReduce的通用并行框架。

2017-12-22
Java多线程 18 - Condition 查看简介

Condition的作用是对锁进行更精确的控制。Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的notifyAll()方法。

2017-12-09
Java多线程 17 - ReentrantReadWriteLock读写锁互斥锁 查看简介

ReadWriteLock是一个接口。ReentrantReadWriteLock是它的实现类,ReentrantReadWriteLock包括子类ReadLock和WriteLock。

2017-12-02
Java多线程 16 - ReentrantLock互斥锁 查看简介

ReentrantLock是一个可重入的互斥锁,又被称为独占锁。顾名思义,ReentrantLock锁在同一个时间点只能被一个线程锁持有;而可重入的意思是,ReentrantLock锁,可以被单个线程多次获取。

11月 共 4 篇
2017-11-29
2017-11-20
Java多线程 15 - JUC锁框架 查看简介

根据锁添加到Java中的时间,Java中的锁可以分为同步锁和JUC包中的锁。

2017-11-12
2017-11-01
Java多线程 14 - AtomicLongFieldUpdater详解 查看简介

AtomicLongFieldUpdater可以对指定类的volatile long类型的成员进行原子更新它是基于反射原理实现的。

10月 共 2 篇
2017-10-22
2017-10-13
Java多线程 13 - AtomicReference详解 查看简介

AtomicReference的作用则是对对象进行原子操作。

9月 共 4 篇
2017-09-30
Java多线程 12 - AtomicLongArray详解 查看简介

AtomicLong是作用是对长整形进行原子操作,而AtomicLongArray的作用则是对长整形数组进行原子操作。

2017-09-22
Flume(一) 查看简介

Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

2017-09-07
2017-09-01
Sqoop的简单使用 查看简介

Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(MySQL、PostgreSQL等)间进行数据的传递,可以将一个关系型数据库(例如:MySQL、Oracle、PostgreSQL等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

8月 共 4 篇
2017-08-31
Pig的简单入门 查看简介

相比Java的MapReduce API,Pig为大型数据集的处理提供了更高层次的抽象,与MapReduce相比,Pig提供了更丰富的数据结构,一般都是多值和嵌套的数据结构。Pig还提供了一套更强大的数据变换操作,包括在MapReduce中被忽视的连接Join操作。

2017-08-21
为不同的Git服务器配置不同的SSH认证 查看简介

在开发过程中,使用的Git仓库可能来自多个网站,如果此时在每个Git仓库网站使用的用户名和邮箱是相同的,只需要生成一套SSH公私钥即可;但有时候我们在每个网站使用的用户名和邮箱并不相同,此时就需要每个网站配置不同的SSH公私钥;这种模式是可以实现的,只需要使用SSH的config文件进行配置即可;下面将详细介绍如何操作。

2017-08-07
Java多线程 11 - AtomicLong详解 查看简介

AtomicLong是作用是对长整形进行原子操作。在32位操作系统中,64位的long和double变量由于会被JVM当作两个分离的32位来进行操作,所以不具有原子性。而使用AtomicLong能让long的操作保持原子型。

2017-08-03
Hive(四) 查看简介

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

7月 共 3 篇
2017-07-31
Java多线程 10 - 单例模式的线程问题 查看简介

单例模式的实现一般有两种:饿汉式和懒汉式。其中饿汉式的单例对象不会出现线程安全问题。

2017-07-19
Hive(三) 查看简介

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

2017-07-12
Hive(二) 查看简介

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

6月 共 2 篇
2017-06-22
Java多线程 09 - 生产者和消费者模型 查看简介

生产者和消费者模型问题是个非常典型的多线程问题,涉及到的对象包括生产者、消费者、仓库和产品。

2017-06-17
Hive(一) 查看简介

Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的SQL查询功能,可以将SQL语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。

最热阅读

标签墙

关于 [5]
本站相关 [4]
Java [142]
语言基础 [37]
Java集合 [20]
反编译 [1]
Java IO [27]
纳粹 [1]
二战 [1]
Java虚拟机 [21]
Java Web基础 [9]
软件工具使用 [9]
Mac [3]
Java Web框架 [25]
MySQL [9]
XenServer [4]
大数据 [78]
流式处理 [55]
基础组件 [21]
Linux [1]
数据结构 [0]
HBase [5]
分布式存储 [5]
Java多线程 [47]
Java并发 [32]
NIO [4]
Git [5]
Spring [1]
Hive [3]
Nginx [4]
JUC相关 [3]
编辑器 [1]
JUC锁 [12]
Spark [19]
JUC集合 [12]
线程池 [9]
源码解析 [34]
Kafka [28]