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