- 博客(17)
- 资源 (1)
- 收藏
- 关注

原创 kafka源码研究之分区状态
kafka的分区状态通过PartitionStateMachine来进行维护,下面通过源码来对这个类进行探究: 一 该类成员变量部分:private val controllerContext = controller.controllerContextprivate val controllerId = controller.config.brokerIdpri...
2018-08-16 09:08:04
822
原创 Kafka官网翻译
一 topic和Logkafka的topic是一个发布消息的分类,kafka里的topic一直是有多个消费者,也就是说,kafka可以有0、1或者多个订阅者去订阅写在topic里的消息。对于每一个topic来说,kafka集群都会保持一个分区的日志,如下图:每一个分区都是一个有序的、且顺序不变被追加写的记录,结构化的日志,每一条记录都会被分配一个叫做偏移量的连续的数字i...
2019-07-22 09:21:09
247
原创 java内存模型之锁的内存语义
前面我们介绍了java中的volatile关键字的作用,我们都知道,volatile有这样几个作用: 1 保证内存可见性 2 防止内存重排序 3 保证单个变量的读/写的原子性相对于锁,volatile更加轻量级。不过多线程中锁也是用的更多一点的,而且锁的功能更加强大。...
2019-07-22 09:19:21
226
原创 Hive优化及yarn调优
set hive.exec.reducers.bytes.per.reducer=100000000;set hive.optimize.cp=true;set hive.optimize.prunner=true;set hive.exec.parallel=true ;set hive.exec.parallel.thread.number=8;set mapred.compress...
2019-07-22 09:18:28
1226
原创 SparkStreaming源码阅读
在了解SparkStreaming之前,先来弄清几个变量: //生成SparkJob,使用JobGenerator来生成Spark Job,然后在一个线程池运行这些Job private[streaming] val scheduler = new JobScheduler(this) // private[streaming] val waiter = new Contex...
2019-01-16 20:05:53
247
原创 ReentrantLock源码
目录公平锁的实现:非公平锁的实现:在看公平锁的实现之前,我们先来看ReentrantLock中一个静态内部类Sync,Sync是一个抽象的静态内部类,集成了AbstractQueuedSynchronizer抽象类.源码如下:Sync是ReentrantLock实现同步控制的基础,非公平锁和公平锁都是其子类,使用AQS的state变量来代表锁被持有的次数 /**...
2019-01-16 16:30:17
466
2
原创 同步队列
一 AQS同步队列实现分析AQS是一个1 同步队列AQS是通过一个内部的FIFO的同步队列来管理同步状态,当线程获取锁失败的时候,当前想线程以及当前线程的状态等信息,会被构造成一个节点加入到同步队列的尾部,然后阻塞当前线程。那么这个节点保存哪些信息呢?当前线程的引用、等待状态以及当前节点的前驱节点和后继节点。同步器中存在两种引用:指向首节点的引用和指向尾节点的引用....
2019-01-12 15:34:03
1382
原创 JDK源码学习之路数据结构之-HashMap
在讲解具体的源码之前,先来对其jdk的介绍做一个翻译,下面是jdk源码对其介绍: HashMap作为Map接口的实现,提供了所有的可选择的映射的操作,大致上HaspMap和HashTable相等(不是线程安全和允许空值除外),HashMap对map的key的顺序没做出任何保证,特别是不会保证顺序恒久不变。 假定hash方法可以将元素适当的散列在各个桶之间,那么h...
2018-12-02 17:32:50
191
原创 SpringBoot学习之路之IDEA创建spring项目
一 Idea创建Spring项目1 新建工程 2 输入工程相关信息点击"Next"3 选择Lombok 4 完成
2018-12-02 10:44:57
124
原创 Hive窗口函数
原始表数据: 结果如下:hive> select > id, > name, > score, > row_number() over(partition by name order by score desc) as r1, > dense_rank()...
2018-11-28 11:24:09
631
原创 线程通信机制
一 java实现线程通信机制主要通过以下几种方式1 while()轮询2 等待/通知机制wait()、notify()、notifyAll()结合synchronized关键字3 条件对象:ConditionCondition和ReentrantLock重入锁 此外,java为线程间通信还提供了一些关键字:synchronized、volatile、final,...
2018-09-24 16:23:47
1681
原创 Linux磁盘挂载
1 查看有哪些磁盘?fdisk -l|grep sd 2 添加分区新建分区输入:n(我这里只需要一个分区,所以默认就可以):输入t选择id修改分区系统类型,输入p查看分区类型 3 输入 w 完成保存 4 查看是否有分区了 5 建好分区后要格式化分区,建立文件系统 6 这样文件系统就创建好了,下面选择一个挂载点完...
2018-09-12 17:45:47
379
转载 java内存模型之volatile变量
一 volatile关键字的作用1 保证任意单个变量读/写的原子性,即使是64位的long/double变量,也能保证其读/写具备原子性,但是在类似vlolatile变量的复合操作上,volatile关键字将不具备原子性2 保证变量的可见性,即对一个变量的读,总能看到其他任意线程对该vlolatile变量的最后写入 二 volatile关键字的内存语义1 读的内存...
2018-09-11 19:44:10
141
原创 Java内存模型
首先我们先谈谈什么是数据竞争,数据竞争的定义:1 在一个线程正在写一个变量2 在一个线程中正在读一个变量3 变量的写和读没有通过同步来进行排序当程序中存在数据竞争的时候,往往会产生违背直觉的一些结果,在一个多线程程序中,如果进行了正确的同步,那么这将是一个没有数据竞争的程序。JMM对于正确同步的多线程程序做了内存一致性的保证: 如果一个多线程程序是正确同步的,那么程序...
2018-09-06 10:17:23
126
原创 scala重要函数:过滤函数
一 过滤函数1 filter函数def filter(p: A => Boolean): Repr = filterImpl(p, isFlipped = false) 传入一个返回结果为Boolean类型的函数,将此函数应用到集合中的每一个元素,然后将集合里所有满足该条件的元素作为一个子集返回案例: 2 partition函数传入一个返回类型为Boolea...
2018-08-17 16:00:51
5225
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人