- 博客(55)
- 资源 (115)
- 收藏
- 关注
原创 一个Resin配置多个集群应用[linux环境]
主要原理:通过一个RESIN配置多个WEB应用,实际上也就是利用resin做分发,分别将请求分发到RESIN配置的多个端口,(每一个端口类似另外启动一个RESIN).我用的是resin-pro-3.0.22_bl假设现在配置:一个web-a 作为转发服务,然后配置两个app-a.sh和app-b.shweb-a.sh./bin/httpd.sh -conf ./conf/WebA....
2010-12-31 17:21:51 205
原创 DB4o 将一个对象保存到文件中,然后查询读取
首先定义DB40要保存的JAVA对象package com.boss.bean;import java.io.Serializable;import java.util.ArrayList;/** * @author Administrator * @since 2010-12-22 * @category IndexBean类 */public class IndexBean imp...
2010-12-30 16:35:34 260
原创 Lucene 2 通过updateDocument更新索引
package com.lucene; import java.io.IOException; import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.document.Document; import org.apac...
2010-12-30 15:47:43 124
原创 Lucene 3建立索引和查询索引详解
public void index() throws CorruptIndexException,LockObtainFailedException, IOException {// 索引目录 File indexDir = new File("D:/workspace/code/java/TestLucene3/index/txt/test/");// 注意:这里建立索引用的分词方...
2010-12-22 23:02:25 84
原创 Lucene3 查询索引
package lucene3;import java.io.File;import org.apache.lucene.document.Document;import org.apache.lucene.index.Term;import org.apache.lucene.search.IndexSearcher;import org.apache.lucene.search.Que...
2010-12-22 22:46:41 93
原创 Lucene3 建立索引
Lucene3在建立索引的API上有比较大的变化。直接上程序: package lucene3;import java.io.File;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.util....
2010-12-22 22:25:41 115
原创 Lucene 3.0的简单解析及变化
一、 概述 Lucene3.0(以下简称3.0)已于2009-11-25发布,3.0版本是重大的版本,改动很大。在API上做了很多的调整,已经删除了很多之前废弃的方法以及类,并支持了很多Java5 的新特性:包括泛型、可变参数、枚举和autoboxing等。 因此,此版本和2.x版本不能兼容,如要使用3.0版本,最好是在新项目中去使用,而不是去升级2.x或之前的版本!二、3...
2010-12-22 21:59:08 100
原创 Lucene分词器之庖丁解牛
注意:这里配置环境变量要重新启动系统后生效 我现在测试用的Lucene版本是lucene-2.4.0,它已经能够支持中文分词,但它是采用一元分词(逐字拆分)的方法,即把每一个汉字当作是一个词,这样会使建立的索引非常庞大,会影响查询效率.所以大多运用lucene的朋友,都会考虑使用其它的中文分词包,这里我就介绍最为常用的"庖丁解牛"分词包,当然它也是一个值得推荐的中文分词包. ...
2010-12-22 07:47:18 99
原创 Lucene从结果中取出数据
有些应用,比如我们首先要搜索一个Person的索引文件,然后通过该索引文件得到和该人对应的客户编码,然后通过客户编码再去查和客户对应的客户信息。这样要进行两次索引的查找。但是LUCENE提供了一个默认的QueryFilter的实现,他可以从搜索的结果中再次查找。 例子:(以上篇文档的索引为例)public static void main(String[] args) { try...
2010-12-21 20:23:49 166
原创 Lucene过滤器
有的应用有些要求,对于某类型的内容即使满足条件了,但是也不能被搜索出来,lucene中提供了过滤器的功能,通过自定义的过滤器继承Filter,从而实现特定的过滤功能。Filter是一种过滤行为BitSet是一种位集合队列,这个队列中只有两种取值,TRUE或FALSE,LUCENE以这两种取值代表文档是否被过滤,也就是说,LUCENE返回结果时,会首先遍历BITSET,仅将那些对应值为TRUE的...
2010-12-21 20:05:00 152
原创 Lucene对于短语匹配查询的用法
通常对于ID查询或者是比较确定字段内容的查询,我们就用:Term JobcnIDTerm = new Term("JobcnID", bean.getJobcnID()); TermQuery JobcnIDQuery = new TermQuery(JobcnIDTerm); 如果查询的内容是地址或是包括很多字数内容字段的查询,我们用:Analyzer analyzer = ...
2010-12-21 17:41:28 470
原创 Lucene 对所查的结果进行排序
前面介绍完查询以后,现在要对查询结果进行排序的显示。代码:package com.querytype;import org.apache.lucene.analysis.standard.StandardAnalyzer;import org.apache.lucene.document.Document;import org.apache.lucene.queryParser.Que...
2010-12-20 23:01:31 172
原创 Lucene 从多个索引上搜索
事实上,在一些商业系统中,索引并非只存放在一个目录中,这样我们就要求将几个目录的索引进行一起查询。代码: public static void main(String[] args) { try { /*File file1 = new File("d://test1"); File file2 = new File("d://test2"); Analyzer lucene...
2010-12-20 22:07:15 158
原创 Lucene 搜索方法(QueryParser)
该类可以根据用户的输入来进行解析,自动构建合适的QUERY。代码:public static void main(String[] args) { try { String field = "bookname"; String queryStr = "钢 铁"; QueryParser parser = new QueryParser(field, new StandardA...
2010-12-20 21:11:02 142
原创 Lucene 搜索方法(模糊搜索)
LUCENE提供了一种模糊搜索的机制。代码:public static void main(String[] args) { try { IndexSearcher search = new IndexSearcher("d://demo"); Term term1 = new Term("bookname","work"); FuzzyQuery query = ne...
2010-12-20 11:54:13 441
原创 Lucene 搜索方法(多短语搜索)
短语搜索解决了短语搜索的问题,在很多情况下,用户输入某个关键字时,该关键字可以喝多种单字组成短语,例如,用户输入一个“声”字。它可以和“声音”,“声明”等字组成短语。LUCENE提供了MultiPhraseQuery来进行多短语搜索。代码:public static void main(String[] args) { try { IndexSearcher search = new...
2010-12-20 11:42:33 367
原创 Lucene 搜索方法(短语搜索)
用户在搜索的时候,更多的情况是输入一个以上的关键字,这些关键字和可能组成一个短语。 代码:public static void main(String[] args) { try { IndexSearcher search = new IndexSearcher("d://demo"); PhraseQuery query = new PhraseQuery(); Te...
2010-12-20 11:15:33 622
原创 Lucene 搜索方法(前缀搜索)
PrefixQuery是一种前缀搜索,在检索的时候,常常需要进行某种前缀查找,例如到图书馆查找一本书,可能只能记得书名的前面几个字,这种情况就可以用该种搜索模式。 public static void main(String[] args) { try { IndexSearcher search = new IndexSearcher("d://demo"); Term ter...
2010-12-20 10:27:26 353
原创 Lucene 的索引读取工具(IndexReader)
Lucene有一个很重要的工具IndexReader负责对索引的读取和维护工作。public static void main(String[] args) { try { IndexReader reader = IndexReader.open("d://demo"); for(int i=0;i<reader.numDocs();i++) { System....
2010-12-19 23:00:35 194
原创 Lucene 搜索方法(范围搜索)
在某些情况下,用户需要查找一定范围内的文档,比如时间,ID等。package com.querytype;import org.apache.lucene.index.Term;import org.apache.lucene.search.BooleanClause;import org.apache.lucene.search.Hits;import org.apache.lucene...
2010-12-19 22:54:23 209
原创 Lucene 搜索方法(布尔搜索)
布尔搜索: 布尔查询的对象中,包含一个子句的集合。各种子句间都是“与”、“或”这样的布尔逻辑。 package com.querytype; import org.apache.lucene.index.Term; import org.apache.lucene.search.BooleanClause; import org.apache.lucene.search.BooleanQuery;...
2010-12-19 22:04:14 234
原创 Lucene 搜索方法(词条搜索)
词条搜索是LUCENE最为简单的一种搜索方式,通过对某个固定的词条的指定,它实现检索索引中存在该词条的所有文档。例子:package com;import org.apache.lucene.index.Term;import org.apache.lucene.search.Hits;import org.apache.lucene.search.IndexSearche...
2010-12-19 21:15:25 505
原创 索引的合并
FSDirectory和RAMDirectoryFSDirectory:是与文件系统的目录有关的,指向文件系统中的一个路径,因此在LUCENE向其写入索引时,会直接将索引写在磁盘上。RAMDirectory是与内存相关的。在内存中存放一个区域,如果不将他的内容写入到磁盘,当机器退出后,里面的内容会消失。例如:RAMDirectory ram = new RAMDirecto...
2010-12-19 16:21:56 86
原创 Lucene 索引文件格式详解
1.索引的SEGMENT 每个SEGMENT代表LUCENE的一个完成的索引段,通常,在一个索引中,会包含多个SEGMENT,每个SEGMENT都有统一的前缀,这个前缀是根据当前索引的DOCUMENT的数量而确立的。前缀名是DOCUMENT转成36进制后在前面加“_"组成。 通常在以个完成的索引中,只有一个SEGMENT文件。这个文件没有后缀,他记录了当前索引中所有的SEGMENT信息...
2010-12-19 15:47:53 155
原创 Lucene API详解
1.Lucene的DocumentDocument类似于数据库中的一条数据,Lucene是通过Document来跟各种物理文件或数据库文件通信的。2.Lucene的FieldField相当于数据库中一条数据的某个字段,我们可以直接通过FIELD创建一个该类型的对象。他们直接的调用关系:Document doc = new Document();Field f1 = ne...
2010-12-18 22:08:51 117
原创 Lucene入门以及例子
Lucene是apache组织的一个用java实现全文搜索引擎的开源项目。 其功能非常的强大,api也很简单。总得来说用Lucene来进行建立 和搜索和操作数据库是差不多的(有点像),Document可以看作是 数据库的一行记录,Field可以看作是数据库的字段。用lucene实 现搜索引擎就像用JDBC实现连接数据库一样简单。 Lucene2.0,它与以前广泛应用和介绍的Lucene 1...
2010-12-17 14:55:24 105
原创 线程的后台线程
后台线程是在后台运行的,他的任务是为其他的线程提供服务,也成为“守护线程”。JVM的垃圾回收线程就是典型的后台线程。特征:如果所有的前台线程都死亡,那么后台线程会自动死亡。调用THREAD对象的setDaemon(true)方法就可将制定线程设置为后台线程。程序:package com.test;public class DaemonThread extends Thr...
2010-12-16 22:51:34 85
原创 线程的JOIN方法
Thread 提供了让一个线程等待另一个线程完成的方法,JOIN方法。当某个程序执行流中调用其他线程的JOIN方法,调用线程将被阻塞,直到被JOIN方法加入的线程执行完毕。程序实例:package com.test;public class JoinThread extends Thread { public JoinThread(String name)...
2010-12-16 22:46:00 92
原创 线程的生命周期
线程的生命周期分为:新建、就绪、运行、阻塞、死亡。 新建:当线程对象调用了start方法以后,线程就处于就绪状态,JAVA虚拟机会为其创建方法调用栈和程序计数器,处于这个状态的线程并没有运行,他只是表示他可以运行而已。启动线程试用Start方法,而不是RUN方法,调用start方法来启动线程,系统会吧该RUN方法当成线程执行体来处理,但如果直接调用线程对象的RUN方法,则RUN方法会被立即...
2010-12-16 22:35:14 48
原创 预警系统
根据公司需求,所编写的一个预警系统框架,将lib1.zip和lib2.zip都拷贝到BackUpFileAlarmSystem/lib目录下。该系统是一个调用quartz的框架,并结合logback来编写的,如果需要另外加监控功能,我们还需要自己去扩展类。具体的扩展方法在里面的文档中有写。 ...
2010-12-16 15:28:36 625
原创 多线程并发处理数据的问题
在现在的项目中遇到的一个问题。我所做的短信平台,原来只是单线程发送短信的,但是由于公司的应用范围的扩大,短信的发送量成倍的增多,一批插入的短信量达到5W数据,如果按照以前的方式,发送过程十分缓慢。因为我们所用的第三方短信提供商只提供给我们10个并发的限制,所以我们采用10条线程进行读取。一次发10条,等10条发送完成以后再发送另外10条。以下是程序: private void s...
2010-12-14 08:16:28 257
原创 Hibernate 中cascade的用法
实例team和studentteam.hbm.xml<?xml version="1.0" encoding="utf-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-...
2010-12-10 15:58:13 100
原创 HIBERNATE 中get方法和load方法的区别
get方法执行顺序:1.首先通过ID在session缓存中查找对象,如果存在此ID对象,那么就直接返回。2.在二级缓存中查找,找到后返回。3.如果都找不到,则从数据库加载拥有此ID 的对象。4.get方法不管配置文件中设置的lazy为何值,都采用的是立即检索对象。 load方法和get方法的不同:1.立即检索team的配置文件:(设置lazy="false")&...
2010-12-10 10:23:45 101
原创 HIBERNATE对加载策略的总结
1.session具有缓存,每一个持久状态的对象都被纳入session缓存中,不同的session的缓存空间不一样,数据库中的一挑记录在一个session中只能对应一个对象,不同的session可以有不同的对象对应数据库中的同一条记录。2.对象关联有一对以,多对一,一对多和多对多。检索策略有立即检索,延迟检索,预先抓取和批量立即检索和延迟检索。一般末端为一的关联,一般设置为预先抓取,对于末端为...
2010-12-10 09:42:25 86
原创 Hibernate 批量加载(立即、延迟)
一、批量立即加载以上面的例子为例:Team对学生采取的是立即加载 客户端:Session session = SessionUtil.getSession(); Transaction tran = session.beginTransaction(); Query query = session.createQuery("from Team"); List list =...
2010-12-10 09:27:05 114
原创 外连接对预先抓取的影响
只要在HQL中指定了外连接,那么不论配置文件中是预先抓取或是立即或延迟检索,都会失效。 以上面为例:学生对身份证采取预先抓取和立即检索,对班级是预先抓取,班级对学生是延迟加载。 Session session = SessionUtil.getSession(); Transaction tran = session.beginTransaction(); Query qu...
2010-12-09 17:50:29 106
原创 对于批量删除某张表数据的做法技巧
通过有JSP页面穿到存储过程中一连串的ID值,并且以,隔开。我们要在数据库中根据这些ID值把数据删除。技巧 else if @SubmitButtonFlag='delete' -- 删除 begin set @ID=''''+replace(@ID,',',''',''')+'''' set @SQLList ='select ID into ##temp10 from Trai...
2010-12-09 15:33:59 116
原创 Hiernate 预先抓取策略
预先抓取采用的是fetch="join"的方式 预先抓取指的是通过select语句使用outer join 一般是左外连接来获得对象的关联实例或者是关联的集合(集合被初始化了,这是重点)。 用上面的例子,加上一个身份证的对象。CARD 他和学生对象是一对一的关系。 身份-----立-----学-----立即------班证-------即------生-----立即--...
2010-12-09 15:01:29 221
原创 Hiernate 延迟加载
对于hibernate的延迟加载,就是对一个对象加载的时候,不去加载他的相关的对象。 以立即加载中的student和team为例子: 如果student延迟加载team,team立即加载student Session session = SessionUtil.getSession(); Transaction tran = session.beginTransac...
2010-12-09 11:19:48 97
NETTY+ACTIVITYMQ实现高用户并发
2017-11-02
mysql.c3p0驱动包
2017-10-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人