`
543089122
  • 浏览: 153232 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论
文章列表
堆是一种比较有用的数据结构,是二叉树的一种数组的表示形式。 最大堆和最小堆是二叉堆的两种形式。   最大堆:根结点的键值是所有堆结点键值中最大者。   最小堆:根结点的键值是所有堆结点键值中最小者。   而最大-最小堆集结了最大堆和最小堆的优点,这也是其名字的由来。   最大-最小堆是最大层和最小层交替出现的二叉树,即最大层结点的儿子属于最小层,最小层结点的儿子属于最大层。   以最大(小)层结点为根结点的子树保有最大(小)堆性质:根结点的键值为该子树结点键值中最大(小)项。 堆的实现代码如下: package sunfa; import java.util.Arrays; im ...
一道腾讯面试题:从大量数字中取出top100 http://www.iteye.com/topic/628707 虽然题目并不难,但看到许多的人回复了,当然有回复的水平高的也有低的反正各种回复千奇百怪。 能想到用二叉树或堆来做的算想对思路了,用多线程部分排序的感觉至少思路上就差得远了。 有个兄弟第一时间用TreeSet给出了代码,当然代码很简单,如下: package sunfa; import java.util.Random; import java.util.TreeSet; /** * tx的面试题:1亿个数中取前100个最大的数 * * 利用TreeSe ...
package sunfa; import java.util.BitSet; import java.util.Random; /** * BloomFilter(布隆过滤器) * http://www.cnblogs.com/allensun/archive/2011/02/16/1956532.html * */ public class BloomFilter { private int DEFAULT_SIZE = 1 << 6; private BitSet bitSet = null;// java.util.BitSet的 ...
Timer里面的任务如果执行时间太长,会独占Timer对象,使得后面的任务无法几时的执行 ScheduledExecutorService不会出现Timer的问题(除非你只搞一个单线程池的任务区) Timer搞了一个最小堆,每次取距离当前时间最近的那个任务来执行, 创建Timer的时间会创建TimerThread做为执行线程,所以一个Timer对应一个线程 ,一个线程当然不能同时执行多个任务啦(当某个任务执行时间很长就看的出来)。 public Timer(String name, boolean isDaemon) { thread.setName(name); ...
初学java.io的时候容易被众多的IO类搞晕头,其实java.io还是很容易理解的,主要就是通过装饰模式来进行功能的扩充。 扩充基类的功能,一般我们都是通过继承来解决的,但是继承会造成类的膨胀,而使用装饰模式就不会。其实装饰模式就是在扩展类里面搞了个被扩展类的引用而已。 package design.decorator; /** * “装饰模式(Decorator)”又名“包装模式(Wrapper)”,通常用来灵活地扩充对象的功能。 * 在此之前我们可以通过类的继承来扩充父类的功能,但这种继承方式缺乏灵活性 * ,并且会导到子类数量的快速膨胀。恰当地使用装饰模式我们会轻松 ...
package nio; import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.nio.ByteBuffer; import java.nio.CharBuffer; import java.nio.channels.FileChannel; import java.nio.charset ...
java.util.concurrent.atomic.*包的体会 package thread.concurrent.atomic; import java.util.HashMap; import java.util.Map; import java.util.Random; import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; import sun.misc.Unsafe; public class AtomicTe ...
原帖地址: http://www.iteye.com/topic/711162 package thread; import java.util.Iterator; import java.util.Random; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.CyclicBarrier; public class SegmentCount { publ ...
CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待 CyclicBarrier 一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。 这是JAVA1.5中的2个帮助类,他们2都是直接继承java.lang.Object的,目的是为了让线程之间的相互等待变得简单。 CountDownLatch的用法如下(CyclicBarrier要更加简单一些而且更加强大一些,用法参看http://www.iteye.com/topic/1116068之前写的一个测试) pa ...
官方的java.util.concurrent.ArrayBlockingQueue的性能是很BT的,我下午无聊然后就想去测试下到底有多BT就写了如下测试代码,也不知道是我的代码写的有问题还是怎么的啦,测试结果和我想的完全不一样。 条件:20个线程,存取线程各半,队列大小是30W,其他电脑配置啥的啊很大众化就不描述了。 耗时: 山寨版的:2400左右 官方版的:3400左右 -------------------------------------------------------------------------------------------- 官方的java.util.con ...
以java.util.LinkedList源码结合本人用XP自带的简陋的画图程序分析链表成链的过程如下: 1、一个空的双链表其实是个环形的链,如下图: public LinkedList() { header.next = header.previous = header; } 2、添加第一个元素的过程如下: public boolean add(E o) { addBefore(o, header); return true; } private Entry<E> addBefore(E o, E ...
今天因为一个问题上网搜索却牵扯出了另一个问题。。。纠结。、、还是纠结 纠结之余发现自己的java基础很是薄弱!于是写下了一个纠结的牵扯出的另一个纠结的问题,旨在提醒自己基础很重要! 1、类的私有构造函数虽然不能在外部进行实例化,但是通过反射可以实例化。 PersonDemo p = PersonDemo.class.getDeclaredConstructor(String.class,int.class).newInstance("张三",20); 2、都知道System.gc();是进行垃圾回收(实际会不会还是由JVM决定),它其实会调用Runtime.getRunt ...
java有2个非常重要的排序接口:java.lang.Comparable和java.util.Comparator, 前者是基础包下的,主要通过继承该接口实现类的排序功能,工具包下的主要通过非继承的方式实现排序。 package sunfa; import java.util.Arrays; import java.util.Comparator; public class ComparableDemo1 { public static void main(String[] args) { /** * 一个类实现了java.lang.Comparable接 ...
/** 快速排序方法 */ public static void quickSort(int[] a, int lo0, int hi0) { int lo = lo0; int hi = hi0; if (lo >= hi) return; // 确定指针方向的逻辑变量 boolean transfer = true; while (lo != hi) { if (a[lo] > a[hi]) { // 交换数字 int temp = a[lo]; a[lo] = a[hi]; ...
package com.lucene; import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.Reader; import java.io.StringReader; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import ...
Global site tag (gtag.js) - Google Analytics