2018年1月9日
摘要:
移动光标上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行下:j nj:向下移动n行左:h nh:向左移动n列右:l nl:向右移动n列 w:光标以单词向前移动 nw:光标向前移动n个单词 光标到单词的第一个字母上b:与w相反e: 光标以单词向前移动 ne:光标向前移动n个单
阅读全文
posted @ 2018-01-09 20:40
一个帅哥9527
阅读(207)
推荐(0)
2017年12月27日
摘要:
并行流水线:利用每一个流水线都有一个LickedBlockingQueue参数,将结果传递给下一个流水线 1、this.bq.take();2、经过计算;3、next.bq.add("中介");bq=每个流水线(实体类)的LickedVlockingQueue 并行搜索:利用1、数组分段,Atomi
阅读全文
posted @ 2017-12-27 15:42
一个帅哥9527
阅读(240)
推荐(0)
摘要:
RealDataJDK类: Application
阅读全文
posted @ 2017-12-27 13:34
一个帅哥9527
阅读(438)
推荐(0)
2017年12月25日
摘要:
、什么是 Disruptor 从功能上来看,Disruptor 是实现了“队列”的功能,而且是一个有界队列。那么它的应用场景自然就是“生产者-消费者”模型的应用场合了。 可以拿 JDK 的 BlockingQueue 做一个简单对比,以便更好地认识 Disruptor 是什么。 我们知道 Block
阅读全文
posted @ 2017-12-25 11:29
一个帅哥9527
阅读(277)
推荐(0)
2017年12月12日
摘要:
Java中的指针:Unsafe类 无锁的对象引用:AtomicReference 带有时间戳的对象引用:AtomicStampedReference 数组也能无锁:AtomicIntegerArray 让普通的变量也享受CAS操作带来的线程安全性 AtomicIntegerFieldUpdater
阅读全文
posted @ 2017-12-12 15:50
一个帅哥9527
阅读(132)
推荐(0)
2017年12月11日
摘要:
下图是JVM内存分布图 1.线程计数器,是一块较小的内存空间,用来指定当前线程执行字节码的行数,每个线程计数器都是私有的,因为每个线程都需要记录执行的行数;这里解释一下为什么每个线程都需要一个线程计数器,JVM的多线程是通过线程轮流切换分配执行时间来实现的,在任何时刻,每个处理器都只会执行一个线程中
阅读全文
posted @ 2017-12-11 14:30
一个帅哥9527
阅读(369)
推荐(0)
摘要:
Java对象头(不用记内容,只需要知道,对象头里面,会保存一些信息) 锁存在Java对象头里。如果对象是数组类型,则虚拟机用3个Word(字宽)存储对象头,如果对象是非数组类型,则用2字宽存储对象头。在32位虚拟机中,一字宽等于四字节,即32bit。(下面这个表格讲的很清楚) 长度 内容 说明 32
阅读全文
posted @ 2017-12-11 11:45
一个帅哥9527
阅读(277)
推荐(1)
2017年12月8日
摘要:
1、减少锁持有时间:(根据有效的条件去减少锁住的代码) 2、减少锁的颗粒度(将大面积分成小面积) ConcurrentHashMap是由Segment数组结构和HashEntry数组结构组成。Segment是一种可重入锁ReentrantLock,在ConcurrentHashMap里扮演锁的角色,
阅读全文
posted @ 2017-12-08 18:12
一个帅哥9527
阅读(316)
推荐(0)
摘要:
// 注意:不同的颜色,表示不同的逻辑,前面的数字,是他们各自的逻辑顺序, //这个方法没有任何的锁操作,线程安全完全是由cas操作和队列的算法来保证的,整个方法的核心是for循环,这个循环没有出口,知道尝试成功 public boolean offer(E e) { checkNotNull(e)
阅读全文
posted @ 2017-12-08 14:55
一个帅哥9527
阅读(1118)
推荐(0)
摘要:
ConcurrentHashMap: 一个高并发的HashMap CopyOnWriteArrayList : 这是一个list和ArrayList是 一族,在读多写少的场合,这个list性能非常好 (当写入当时候,先对数组进行了次复制,Arrays.copyof(oldArr,len+1),然后s
阅读全文
posted @ 2017-12-08 13:44
一个帅哥9527
阅读(335)
推荐(0)