随笔分类 - Java
摘要:Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法。通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求100%正确的场合。一. 实例 为了说明Bloom Filter存在的重要意义,举一个实例: 假设要你写一个网络蜘蛛(web crawler)。由于网络间的链接错综复杂,蜘蛛在网络间爬行很可能会形成“环”。为了避免形成“环”,就需要知道蜘蛛已经访问过那些URL。给一个URL,怎样知道蜘蛛是否已经访问过呢?稍微想想,就会有如下几种方案: 1. 将访问过的URL保存到数据库。 2. 用HashSet将访问过的URL保存起来。那只需接近O(...
阅读全文
摘要:对象的方法中一旦加入synchronized修饰,则任何时刻只能有一个线程访问synchronized修饰的方法。假设有个数据对象拥有写方法与读方法,多线程环境中要想保证数据的安全,需对该对象的读写方法都要加入synchronized同步块。这样任何线程在写入时,其它线程无法读取与改变数据;如果有线程在读取时,其他线程也无法读取或写入。这种方式在写入操作远大于读操作时,问题不大,而当读取远远大于写入时,会造成性能瓶颈,因为此种情况下读取操作是可以同时进行的,而加锁操作限制了数据的并发读取。 ReadWriteLock解决了这个问题,当写操作时,其他线程无法读取或写入数据,而当读操作时,其它线程
阅读全文
摘要:前记:jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue);中篇中主要聊聊与keepAliveTime这个参数相关的话题;下片中介绍一下一些比较少用的该类的API,及他的近亲:ScheduledThreadPoolExecutor。如果理解错误,请直接指出。上篇文章 传送门ht
阅读全文
摘要:ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别工作中多处接触到了ThreadPoolExecutor。趁着现在还算空,学习总结一下。前记:jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(SynchronousQueue,LinkedBlockingQueue,ArrayBlockingQueue);中篇中主要聊聊与kee
阅读全文
摘要:enum Color{ RED(255,0,0),BLUE(0,0,255),BLACK(0,0,0),YELLOW(255,255,0),GREEN(0,255,0); //构造枚举值,比如RED(255,0,0) private Color(int rv,int gv,int bv){ this.redValue=rv; this.greenValue=gv; this.blueValue=bv; ...
阅读全文
摘要:public class PathUtil {public static void main(String[] args)throws Exception { PathUtil p = new PathUtil(); System.out.println(p.getWebClassesPath()); System.out.println(p.getWebInfPath()); System.out.println(p.getWebRoot());}public String getWebClassesPath() { String path = getClass().ge...
阅读全文
摘要:使用servlet和RMI 在本章中我们主要看一看如何在servlet环境中使用Java的RMI接口。RMI使Java应用程序可以无缝地调用其他虚拟机上的对象,这个虚拟机可以和Java应用程序在同一个主机上,也可以在不同的主机上。16.1 挑战: 访问其他Java服务器 servlet是一个在Web服务器上使用Java的重要方法,但是如果我们想要访问网络中其他运行着Java的服务器呢?答案当然就是使用RMI。RMI使你可以让指定的服务器上的某些Java对象可以被任何其他Java进程调用。而无论这个Java进程是否和这些Java对象在同一台主机上。如图16.1所示。 ...
阅读全文
摘要:/** * 复制文件 * @param in * @param out * @throws Exception */ private boolean copyFile(File in, File out) throws Exception{ FileChannel sourceChannel= new FileInputStream(in).getChannel(); FileChannel destinationChannel= new FileOutputStream(out).getChannel(); ...
阅读全文
摘要:Creating Shazam in JavaByroyvanrijnOnJune 1, 2010翻译:windviki@gmail.com2010/8/30几天之前,我偶然看到一篇文章:How Shazam Works这让我对shazam这样的程序是如何工作的产生了兴趣,更重要的一点是,(我想知道)用java实现类似的程序会有多难呢?关于ShazamShazam是一款可以用来分析和配对音乐的程序。在手机上安装之后,拿着麦克风朝着音乐聆听大概20-30秒钟,它就能告诉你这是首什么歌曲。我第一次用它的时候,它给了我一种魔法般的感觉。“它怎么做到的?”——甚至直到今天,在使用了如此久之后,我仍然有
阅读全文
摘要:View Code package arrays.file;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import java.io.IOException;import java.util.Collections;import java.util.Iterator;import java.util.LinkedList;import java
阅读全文
摘要:View Code 1 package arrays.file; 2 import java.io.BufferedReader; 3 import java.io.BufferedWriter; 4 import java.io.FileReader; 5 import java.io.FileWriter; 6 import java.io.IOException; 7 public class WriteFile { 8 public static void main(String[] args) { 9 String path = "d:/data.txt";10
阅读全文

浙公网安备 33010602011771号