- 博客(305)
- 资源 (36)
- 收藏
- 关注
转载 Lucene 3 中写自己的分词器Analyzer
转:http://blog.sina.com.cn/s/blog_4b3b7aff0100g3wh.htmlLucene的分词器部分是经常被修改的,我们实验室自己的分词器更适合自然语言处理,因此如何挂载自己的分词结果呢?在Lucene 3 中,发生了较大的变化。研究了半天,只需重写Tokenizer即可,关键是incrementToken()函数,用来向索引表写入词语数据和位移数据。其中的FM
2013-04-11 14:20:44 1405 1
原创 二、spring mvc模拟用户增删改查以及登录和上传文件的相关流程
1、工程结构:spring mvc的访问地址是使用REST风格2、web.xml的配置 hello org.springframework.web.servlet.DispatcherServlet contextConfigLocation WEB-INF/web-main.xml hello *
2013-04-05 23:03:38 35326 10
原创 一、spring mvc的获取参数和传递参数
1、工程结构在lib下面加入jar包,jar图片如下所示:2,配置web.xml,也就是spring mvc设置启动的servlet hello org.springframework.web.servlet.DispatcherServlet contextConfigLocation WEB-INF/web-main.xm
2013-04-05 22:39:20 124215 13
转载 在java web项目中慎用Executors以及非守护线程
转:http://www.iflym.com/index.php/code/dont-use-executors-and-nondaemon-thread-in-java-web.html 最近研究embeded tomcat,特别是关于tomcat启动和关闭的模块。通过查看相应的源代码, 我们知道tomcat的关闭是通过往相应的关闭端口发送指定的关闭指令来达到关闭tomcat的目的。但
2013-03-08 09:27:54 1654
原创 wait和notify在锁竞争中的执行顺序
sleep就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep指定的时间过后,cpu才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep方法并不会释放锁,即使当前线程使用sleep方法让出了cpu,但其他被同步锁挡住了的线程也无法得到执行。wait是指在一个已经进入了同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行,只有其他线程调
2013-03-02 11:12:41 7978 2
转载 java Filter过滤器的执行步骤
转:http://wangtan471x.blog.163.com/blog/static/231009682012981119122/建立一个过滤器涉及下列五个步骤:1)建立一个实现Filter接口的类。这个类需要三个方法,分别是:doFilter、init和destroy。doFilter方法 包含主要的过滤代码(见第2步),init方法建立设置操作,而destroy方法
2013-02-27 11:18:19 13467
原创 jsp中监听器的使用
本内容是Servlet监听器是给Web应用增加事件处理机制,以便更好地监视和控制Web应用的状态变化,从而在后台调用相应处理程序。 监听对象监听接口监听事件ServletRequestServletRequestListenerServletRequestEventServlet
2013-02-27 08:48:58 20434 5
转载 lucene 排序 (Sort SortField 构造函数)
注意: 在lucene2.9中,排序的字段域必须indexed但是不能tokenized。因为虽然tokenized后虽然可以排序,但是有可能不是你想要的结果,因为tokenized可能会去除停用词或者大小写转换等。(in Lucene 2.9 and when reading java doc for the Sort class I noticed it says "The f
2013-02-17 17:20:11 12259
转载 怎样新建一个Java的Web Service
转:http://carlyzk.blog.163.com/blog/static/11262062011743610185/1. 创建一个WebService项目。(不需要是Java EE 5.0)2. 创建包与接口以及实现类。3. 加上WebService的包4. 编辑配置文件5. 部署后在浏览器中测试: http://local
2013-02-05 14:55:37 851
转载 初见memcached
转:http://my249645546.iteye.com/blog/1420061一、 概念Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能。二、 适用场合1. 分布式应用。由于memcached本身基于分布式的系统,所以尤其适合大型的分布式系统。2.
2013-02-05 13:31:33 3341
转载 防止刷新/后退引起的重复提交问题的Java Token代码,非Struts
原理: 服务器端在处理客户端的请求之前,会将请求中包含的令牌值与保存在当前会话中的令牌值进行比较,看是否匹配。在处理完该请求后,并且在信息达到客户端之前,将产生一个新的令牌。该令牌值将会替换当前会话中的令牌值,并且传到客户端。这样如果用户回退到刚才的提交页面并再一次提交的话,客户端传过来的令牌与服务其中的令牌值不一致,从而有效的防止了提交Struts本身有一套完善的防止重复提交表单的T
2013-02-01 13:48:40 1014
原创 jdbc小知识点
1、JDBC的注册驱动是使用这行代码:Class.forName("org.gjt.mm.mysql.Driver");其实这行代码是生成一个class对象,而在生成的同时会执行该类的静态代码块,所以JDBC也就是在静态块中加载驱动代码static { try { java.sql.DriverManager.registerDriver(new Driver()); }
2013-02-01 01:15:28 781
转载 java内部类的作用分析
提起Java内部类(Inner Class)可能很多人不太熟悉,实际上类似的概念在C++里也有,那就是嵌套类(Nested Class),关于这两者的区别与联系,在下文中会有对比。内部类从表面上看,就是在类中又定义了一个类(下文会看到,内部类可以在很多地方定义),而实际上并没有那么简单,乍看上去内部类似乎有些多余,它的用处对于初学者来说可能并不是那么显著,但是随着对它的深入了解,你会发现Java的
2013-01-31 17:50:15 739
转载 synchronized
synchronized的一个简单例子public class TextThread { /** * @param args */ public static void main(String[] args) { // TODO 自动生成方法存根 TxtThread tt = new TxtThread(); new Thread(tt).start(); n
2013-01-29 13:36:38 1200
原创 request和response的知识
public class Demo1 extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doPost(request, response); } //在s
2013-01-24 16:17:24 9411 3
原创 类加载器的委托机制
与普通程序不同的是,Java程序(class文件)并不是本地的可执行程序。当运行Java程序时,首先运行JVM(Java虚拟机),然后再把Java class加载到JVM里头运行,负责加载Java class的这部分就叫做Class Loader。中文叫做类加载器。Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个类负责加载特定位置的类:BootStrap,ExtClassL
2013-01-23 00:43:59 5219 4
原创 使用CAS实现的非阻塞计数器
//使用CAS实现的非阻塞计数器public class CasCount { private SimulatedCAS value; public int getValue(){ return value.get(); } public int increment(){ int v; do{ v = value.get(); }while(v != value.c
2013-01-20 22:52:22 1166
原创 Condition的应用
JDK原话,假定有一个绑定的缓冲区,它支持 put 和 take 方法。如果试图在空的缓冲区上执行 take 操作,则在某一个项变得可用之前,线程将一直阻塞;如果试图在满的缓冲区上执行 put 操作,则在有空间变得可用之前,线程将一直阻塞。我们喜欢在单独的等待 set 中保存 put 线程和 take 线程,这样就可以在缓冲区中的项或空间变得可用时利用最佳规划,一次只通知一个线程。可以使用两个 C
2013-01-20 17:44:02 920
原创 用读写锁包装Map
ReadWriteMap使用了ReentrantReadWriteLock来包装Map,使得它能够在多线程间被安全的共享,并仍然能够避免“读-写”或者“写-写”冲突。现实中,ConcurentHashMap的性能已经足够好了(经查看源代码,里面的是每个hash计算后的散列区域作为锁,这个大大减少了锁之间的竞争),ConcurrentHashMap源码:public V get(Obje
2013-01-20 11:07:58 2424
原创 简单的线程工厂
public interface ThreadFactory根据需要创建新线程的对象。使用线程工厂就无需再手工编写对 new Thread 的调用了,从而允许应用程序使用特殊的线程子类、属性等等。 此接口最简单的实现就是:class SimpleThreadFactory implements ThreadFactory { public Thread newThread(Runna
2013-01-19 19:15:08 2091
原创 可实时调整运行中的线程个数
import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.util.Iterator;import java.util.List;import java.util.concurrent.Callable;import java.ut
2013-01-18 10:39:00 1209
转载 停止Java线程,小心interrupt()方法
转自http://www.blogjava.net/jinfeng_wang/archive/2008/04/27/196477.html 程序是很简易的。然而,在编程人员面前,多线程呈现出了一组新的难题,如果没有被恰当的解决,将导致意外的行为以及细微的、难以发现的错误。 在本篇文章中,我们针对这些难题之一:如何中断一个正在运行的线程。 背景 中断(Interrupt
2013-01-18 10:26:36 59248 11
原创 扩展线程池ThreadPoolExecutor的简单例子
import java.util.concurrent.BlockingQueue;import java.util.concurrent.SynchronousQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;//扩展线程池以提供日志和计时功能public
2013-01-15 00:38:45 3347
转载 SynchronousQueue的简单应用2
转:http://blog.csdn.net/orgcheng/article/details/7985503SynchronousQueue的定义如下public class SynchronousQueueextends AbstractQueueimplements BlockingQueue, Serializable从上面可以看出,它实现BlockingQ
2013-01-14 23:01:35 8987 6
原创 SynchronousQueue的简单应用1
使用jdk的原话:一种阻塞队列,其中每个 put 必须等待一个take,反之亦然。同步队列没有任何内部容量,甚至连一个队列的容量都没有。不能在同步队列上进行 peek,因为仅在试图要取得元素时,该元素才存在;除非另一个线程试图移除某个元素,否则也不能(使用任何方法)添加元素;也不能迭代队列,因为其中没有元素可用于迭代。队列的头 是尝试添加到队列中的首个已排队线程元素;如果没有已排队线程
2013-01-14 22:50:12 1797
原创 使用CompletionService批处理任务
如果你向Executor提交了一个批处理任务,并且希望在它们完成后获得结果。为此你可以保存与每个任务相关联的Future,然后不断地调用timeout为零的get,来检验Future是否完成。这样做固然可以,但却相当乏味。幸运的是,还有一个更好的方法:完成服务(Completion service)。CompletionService整合了Executor和BlockingQueue的功能。你
2013-01-13 13:01:27 20398 7
原创 使用Semaphore或Condition把任何容器转化为有界的阻塞容器
信号量被初始化为容器所期望容量的最大值。add操作在向底层容器中添加条目之前,需要先 获取一个许可。事实上,如果add操作没有能加入任何东西,它会立刻释放一个许可,同样,一个成功的remove操作释放一个许可,使更多的元素能够加入其中。我们常用的阻塞队列LinkedBlockingQueue是使用Condition来进行限制的,原理差不多。private final Condition n
2013-01-12 18:20:10 1437
原创 CountDownLatch和CyclicBarrier的简单应用1
import java.util.Random;import java.util.concurrent.CountDownLatch;public class Test11 { public static void main(String[] args) throws InterruptedException { Runnable task = new Runnable(){ @O
2013-01-12 17:07:49 808
转载 java 转html为pdf
转http://blog.csdn.net/is_zhoufeng/article/details/8244454最近有个需求转html为pdf 。用过itext 、 pd4ml ,都不理想,不是样式有问题,就是页面大小有问题。 或字体有问题。 解决办法是通过wkhtmltopdf工具 , 下载地址为:http://code.google.com/p/wkhtmlto
2013-01-11 10:28:31 4523 2
转载 jxl 遭遇读取sheet错误,不能getRows jxl.common.AssertionFailed
转:http://blog.csdn.net/zb0567/article/details/6367889Warning: Text Object on sheet "Sheet1" not supported - omitting jxl.common.AssertionFailed at jxl.common.Assert.verify(Assert.java:37)
2013-01-08 10:51:37 5350
原创 thinking in java 笔记
1,多态,向上转型:解决的办法是后期绑定,它的含义就是在运行时根据对象的类型进行绑定。后期绑定也叫动态绑定或运行时绑定。java中除了static方法和final方法,(private方法属于final方法)之外,其他所有的方法都是后期绑定,这意味着通常情况下,我们不必判定是否应该进行后期绑定--它会自动发生。final方法可以有效地“关闭”动态绑定,但是这样做对程序的整体性能不会有什么改观。
2012-12-31 20:29:37 970
原创 Exchanger的简单示例
两个线程可以交换对象的同步点。每个线程都在进入 exchange 方法时给出某个对象,并接受其他线程返回时给出的对象。public class Test { public static void main(String[] args) { final Exchanger exch = new Exchanger(); ExecutorService exec = Executors
2012-12-30 14:44:51 656
转载 转java中的volatile的用法
转:http://nnssll.blog.51cto.com/902724/204458比如:int a = 10; int b = a; int c = a; 理论上来讲每次使用a的时候都应该从a的地址来读取变量值,但是这存在一个效率问题,就是每次使用a都要去内存中取变量值,然后再通过系统总线传到CPU处理,这样开销会很大。所以那些编译器优化者故作聪明,把a读进CPU
2012-12-29 15:13:04 526
原创 JAVA面试题解惑系列
转:http://zangweiren.iteye.com/blog/209895以下是偶看的一些笔记摘录:String str=new String("abc");紧接着这段代码之后的往往是这个问题,那就是这行代码究竟创建了几个String对象呢?相信大家对这道题并不陌生,答案也是众所周知的,2个。接下来我们就从这道题展开,一起回顾一下与创建String对象相关的一些JA
2012-12-08 11:39:42 1191
转载 解决document.form.submit()对象不支持此属性或方法
很奇怪的问题,呵呵。。被我碰到了。很简单,将页面中名称为"submit"的控件改一下名称就可以了比如:有一个submit按钮名字叫submit你把这个名称改一下-------------------------------------------------------------------这两天做列表数据显示的时候,几乎被"对象不支持此属性和方法
2012-11-26 17:58:12 7043 1
原创 为图片打上水印
import java.awt.*; import java.io.*; import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;import java.awt.image.*; import com.sun.image.codec.jpeg.*; import j
2012-11-13 07:15:41 804
原创 网站广告模拟点击
/**此系统是模拟点击用户投放的广告,让用户所投放的网站广告提高点击率,难点是点击用户的广告需要加载比如站长工具之类的js统计代码,而且每个点击的ip不能相同,也就是要使用代理ip来实现点击,点击的REFERER必须是广告所投放的网站地址. 实现方式:java程序每准备点击一个广告,都修改注册表,从而达到修改浏览器代理服务器的地址.修改完成后启动一个浏览器来就行访问打开用户的广告地址,让浏览器来
2012-11-09 08:48:57 3914 1
原创 哲学家进餐问题
//这个进餐原理:死循环拿左边的筷子,拿到之后一次机会拿右边的筷子,如果拿不到,放下左边的筷子;依次循环public class ZXJ { public static void main(String[] args) { Chopstick k1 = new Chopstick("筷子一号"); Chopstick k2 = new Chopstick("筷子二号"); C
2012-11-01 12:25:07 1103
转载 lock-free线程安全算法
//Lock-Free算法,不需要加锁,通常都是由三个部分组成class Count1{ private AtomicInteger max = new AtomicInteger(); public void set(int value){ while(true){//1、循环 int current = max.get(); if(value > current){//满
2012-10-30 19:17:46 1475
原创 整形的++是否是原子性的示例
首先,整形的操作是非原子性的,需要使用同步手段来进行同步import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.locks.
2012-10-28 15:49:35 1133
log4j日志的工程
2014-05-27
android的内容提供者
2013-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人