摘要:
背景: 最近在学习C++STL,出于偶然,在C++Reference上看到了vector下的emplace_back函数,不想由此引发了一系列的“探索”,于是就有了现在这篇博文。 前言: 右值引用无疑是C++11新特性中一颗耀眼的明珠,在此基础上实现了移动语义和完美转发,三者构成了令很多C++开发者 阅读全文
摘要:
以数组 a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] a[10] 0 2 32 39 23 45 36 57 14 27 39 为例,说明核心代码的实现机制 第一轮: 首先进入quickSort(a, 0, 10); key=0,i=0,j=10 阅读全文
摘要:
Ⅰ.说明: 1.采用左孩子右兄弟的方式,转化为二叉树来实现。 2.树的后根遍历与二叉树的中根遍历即有联系又有区别,请读者注意分析体会。 Ⅱ.功能: 1.创建树并写入数据 2.先根遍历树 3.计算树高 4.后根遍历树 5.层次遍历树 6.搜索数据域为某值的结点 7.删除数据域为某值的结点及其子树 ... 阅读全文
摘要:
jvm内存模型 设置最大、最小堆内存 设置线程栈 设置新生代 设置持久代 取得堆快照(堆dump) 使用-XX:+HeapDumpOnOutOfMemoryError参数在程序发生OOM时,导出应用程序的当前堆快照。 通过参数-XX:HeapDumpPath可以指定堆快照的保存位置。 阅读全文
摘要:
get(long timeout, TimeUnit unit)用来获取执行结果,如果在指定时间内,还没获取到结果,就直接返回null。 而FutureTask即可以作为Runnable又可以作为Future,这样就既可以用ExecutorService的execute执行任务,也可以用Execut 阅读全文
摘要:
CompletionService用于提交一组Callable任务,其take方法返回已完成的一个Callable任务对应的Future对象。 如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果。为此你可以将每个任务的Future保存进一个集合,然后循环这个集合调用Futur 阅读全文
摘要:
读写锁:多个读锁不互斥,读锁与写锁互斥,写锁与写锁互斥。即:读的时候不允许写,写的时候不允许读,可以同时读。 synchronized关键字和普通的Lock构造的锁,会造成读与读之间的互斥,因此读写锁可提高性能。 例子1:三个线程同时对一个共享数据进行读写。 1 import java.util.R 阅读全文
摘要:
1 import java.util.Random; 2 import java.util.concurrent.ExecutorService; 3 import java.util.concurrent.Executors; 4 import java.util.concurrent.locks.Condition; 5 import java.util.concurre... 阅读全文