摘要: 算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。 基本思想 通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。 此外,引进两个集合 阅读全文
posted @ 2017-08-13 20:53 Allen101 阅读(699) 评论(0) 推荐(0) 编辑
摘要: Floyd算法里面是三重循环,所以时间复杂度是O(n^3). 适用于求解所有顶点至所有顶点的最短路径问题。 优缺点分析: 优点:容易理解,可以算出任意两个节点之间的最短距离,代码编写简单。 缺点:时间复杂度比较高,不适合计算大量数据。 结果: 阅读全文
posted @ 2017-08-13 20:52 Allen101 阅读(219) 评论(0) 推荐(0) 编辑
摘要: 大家使用多线程无非是为了提高性能,但如果多线程使用不当,不但性能提升不明显,而且会使得资源消耗更大。下面列举一下可能会造成多线程性能问题的点: 死锁 过多串行化 过多锁竞争 切换上下文 内存同步 下面分别解析以上性能隐患 预防和处理死锁的方法: 1)尽量不要在释放锁之前竞争其他锁 一般可以通过细化同 阅读全文
posted @ 2017-08-13 17:22 Allen101 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 结果: 两个线程都在等对方释放自己需要的对象锁。 阅读全文
posted @ 2017-08-13 11:53 Allen101 阅读(359) 评论(0) 推荐(0) 编辑
摘要: /* 类锁,类只有一个,所以锁是类级别的,只有一个. */ public class ThreadTest17 { public static void main(String[] args) throws Exception{ Thread t1 = new Thread(new Processor()); Thread t... 阅读全文
posted @ 2017-08-13 10:01 Allen101 阅读(277) 评论(0) 推荐(0) 编辑