HashMap1.8源码分析 2019-01-04| Java | Java
该篇博客不适合小白,只做针对性的api源码解析,以及适合我自身的案例研究
HashMap构造函数public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneab ...
Read more 多线程下的HashMap 2019-01-04| Java | Java
该篇博客不适合小白,只做针对性的api源码解析,以及适合我自身的案例研究
jdk1.7中的HashMap在jdk1.8中对HashMap做了很多优化,这里先分析在jdk1.7中的问题,相信大家都知道在jdk1.7多线程环境下HashMap容易出现死循环,这里我们先用代码来模拟出现死循环的情况:
...
Read more 多线程下的LinkedList 2019-01-03| Java | Java
该篇博客不适合小白,只做针对性的api源码解析,以及适合我自身的案例研究
使用多个线程往LinkedList中添加元素
for (int i = 0; i < 50; i++) { new Thread(()->{ list.add(UUID ...
Read more 多线程下的ArrayList 2019-01-02| Java | Java
该篇博客不适合小白,只做针对性的api源码解析,以及适合我自身的案例研究
使用多个线程往ArrayList中添加元素
//创建资源集合List<String> list = new ArrayList<String>();//创建30个线程添加元素for (int i ...
Read more ReentrantLock可重入锁 2019-01-01| Java | Java 多线程企业级Demo
前提
所有的多线程开开发遵循一个规则:
在高内聚低耦合的前提下,线程-->操作-->资源类
在这个条件下我们写一个卖票的Demo,三个售票员卖出30张票
资源类
//资源类class Ticket { //创建一个可重入的lock锁 Lock ...
Read more Flume的Channel内存调优 2018-12-07| Flume | Flume flume“Space for commit to queue couldn’t be acquired”异常产生分析
日志截图如下:
这里说的内容是:queue空间不足。sink好像没有紧跟source,或者是buffer大小太小。这里的queue代表什么?sink没有紧跟source的具体含义 ...
Read more 修改Flume源码使taildir source支持递归(可配置) 2018-12-06| Flume | Flume Flume的source选哪个?taildir source首选!
断点还原 positionFile可以记录偏移量
可配置文件组,里面使用正则表达式配置多个要监控的文件
这么好的taildir source有一点不完美,不能支持递归监控文件夹。
所以就只能修改源代码了,需要注意的是无论是Apa ...
Read more Flume源代码二次开发Source&Sink&Interceptor&Channel的事物保证 2018-12-05| Flume | Flume
Agent架构
自定义Source
自定义Sink
自定义Interceptor
Channel的事物保证
Agent架构
自定义Source提示:当不会写的时候,看源码是个不错的选择
在自定义Flume的组件之前, IDEA需要引入Flume的依赖
<dependency> ...
Read more Flume源代码二次开发debug 2018-12-04| Flume | Flume 1.下载安装Flume,配置flume[hadoop@hadoop conf]$ cat exec_memory_kafka.conf# Name the components on this agenta1.sources = r1a1.sinks = k1a1.channels = c1# De ...
Read more Flume的Channel选择器&Flume的Sink选择器&Channel的两种类型 2018-12-03| Flume | Flume Flume的Channel选择器Flume的Channel选择器有Replicating Channel Selector (default)和Multiplexing Channel Selector,作用分别是复制和多路分发,默认用的复制
下面我们用两个案例分别实现Replicating Cha ...
Read more