- 浏览: 13824 次
- 性别:
- 来自: 北京
最新评论
-
wangmengfanwangzhi:
你好,我按按照你的方法,试了一下,但是IndexReader ...
使用Lucene的API遍历Lucene索引
文章列表
强调一点,就是.mymetadata文件:
<?xml version="1.0" encoding="UTF-8"?>
<project-module
type="WEB"
name="zyyhl"
id="myeclipse.1313210652109"
context-root="/zyyhl"
j2ee-spec="1.4"
archive="zyyhl.war">
<at ...
1, 为什么wait与notify之前必须要加synchronized?
答案其实很简单,也是为了防止等待-通知机制出现race condition
为什么会出现race condition ?
答: 对象在被wait之前已经被另一线程notify , 之后的wait 会永久停止,并导致deadlock(死锁)
理想情况:
1, 第一个线程判断该对象是否要wait
2, 第一个线程将对象wait
3, 第二个线程再将对象notify
实际情况
1, 第一个线程判断该对象是否要wait
2, 第二个线程将对象notify
3, 第一个线程将对象wait
为了防止这些情况,才需要在wait ...
1, 保证线程安全的三种方法 :
a, 不要跨线程访问共享变量
b, 使共享变量是 final类型的
c, 将共享变量的操作加上同步
2, 一开始就将类设计成线程安全的 , 比在后期重新修复它 ,更容易 .
3, 编写多线程程序 , 首先保证它是正确的 , 其次再考虑性能 .
4, 无状态或只读对象永远是线程安全的 .
5, 不要将一个共享变量裸露在多线程环境下 (无同步或不可变性保护 )
6, 多线程环境下的延迟加载需要同步的保护 , 因为延迟加载会造成对象重复实例化
7, 对于 volatile 声明的数值类型变量进行运算 , 往往是不安全的 (volatile 只能保证可见性 ...
一般使用Lucene的人都很少需要对索引进行遍历之类的操作,因为使用Lucene一般都不会对其索引文件产生太大兴趣,只注重将Lucene作为一个全文检索工具来使用而已,并不在意其内部实现和结构。但是很多学习Lucene的朋友都希望可以看见完整的Lucene索引内容,至少包含索引词、索引词出现的文档、索引词在文档中的位置(这里指的位置并不是词在原文中的位置,而是指其在Lucene对文档进行过滤后得到的新文档的位置)等信息。前几个月笔者就因为在实验室里的一个实验性的项目做了一些需要遍历Lucene索引的工作。
事实上,如果我们需要观察Lucene索引的内容,我们完全可以使用Luke,但是我们知道 ...
http://wwty.iteye.com/blog/705213
每一个对象除了有一个锁之外,还有一个等待队列(wait set),当一个对象刚创建的时候,它的对待队列是空的。
我们应该在当前线程锁住对象的锁后,去调用该对象的wait方法。
当调用对象的notify方法时,将从该对象的等待队列中删除一个任意选择的线程,这个线程将再次成为可运行的线程。
当调用对象的notifyAll方法时,将从该对象的等待队列中删除所有等待的线程,这些线程将成为可运行的线程。
wait和notify主要用于producer-consumer这种关系中。
[code="java&qu ...
百度搜索研发部:
年后面试,电话面试,一面问的问题很基础,会针对你常用的编程语言问比较典型的问题,我当时的问题是const的用法以及作用,inline和#define哪个更好,程序在内存中的分为哪些段,具体是如何,针对性的会 ...
1. 在大规模的应用中,Lucene更适合用于狭义的“搜索”,而不应当负责数据的存储。我们看看Lucene的源代码也可以知道,Document和Field的存储效率是不够好看的。手机之家的团队也发现了这一点,他们的办法是,用Lucene存放索引,用Memcache + Berkeley DB(Java Edition)负责存储。这样有两个好处,一是减小了Lucene的数据规模,提高了程序的效率;另一方面,这套系统也可以提供某些类似SQL的查询功能。实际上,Lucene Project自己似乎也注意到了这个问题,在Store中新增了一个db选项,其实也是利用的Berkeley DB。如果仅仅用Lu ...
这里是几个主要非英文语系字符范围
2E80~33FFh:中日韩符号区。收容康熙字典部首、中日韩辅助部首、注音符号、日本假名、韩文音符,中日韩的符号、标点、带圈或带括符文数字、月份,以及日本的假名组合、单位、年号、月份、日期、时间等。
3400~4DFFh:中日韩认同表意文字扩充A区,总计收容6,582个中日韩汉字。
4E00~9FFFh:中日韩认同表意文字区,总计收容20,902个中日韩汉字。
A000~A4FFh:彝族文字区,收容中国南方彝族文字和字根。
AC00~D7FFh:韩文拼音组合字区,收容以韩文音符拼成的文字。
F900~FAFFh:中日韩兼容表意文字区,总计收容302 ...
1、按字节读取文件内容
2、按字符读取文件内容
3、按行读取文件内容
4、随机读取文件内容
public class ReadFromFile {
/**
* 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。
*/
public static void readFileByBytes(String fileName) {
File file = new File(fileName);
InputStream in = null;
try {
System.out.p ...
第一,谈谈final, finally, finalize的区别。
第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?
第三,Static Nested Class 和 Inner Class的不同,说得越多越好(面试题有的很笼统)。
第四,&和&&的区别。
第五,HashMap和Hashtable的区别。
第六,Collection 和 Collections的区别。
第七,什么时候用assert。
第八,GC是什么? 为什么 ...
------------------------------------------------------------------------
Class 类型:类
接口
基本数据类型
数组
获得Class对象的方式:
1、Class.forName("类名");
2、类名.class;
3、obj.getClass();
包
修饰符
类名
父类
接口
属性:修饰符,类型名
...
1 java优势:跨平台性
虚拟机:java运行时系统,就是一个字节码解释器,虚拟机将字节码解释成机器码给cpu执行.
在java中我们用虚拟机来屏蔽底层操作系统的差异.
编译:生成可执行文件像a.out,a.exe 效率高,但不跨平台
解释:解释器把源文件逐行解释,跨平台但效率不高
在java中:先编译后解释
把.java文件编译成.class字节码文件.(平台中立的) 比重新解释快一点.
由虚拟机解释执行.class字节码文件
jre=虚拟机+编译器
jdk=虚拟机+编译器+类库 //jdk又称java开发工具包
2 第一个程序:
public class Test{
public ...
http://blogold.chinaunix.net/u2/70634/
多线程
线程:是指进程中的一个执行流程。
线程与进程的区别:每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中工作,这些线程可以共享同一块内存和系统资源。
如何创建一个线程?
创建线程有两种方式,如下:
1、 扩展java.lang.Thread类
2、 实现Runnable接口
Thread类代表线程类,它的两个最主要的方法是:
run()——包含线程运行时所执行的代码
Start()——用于启动线程
一个线程只能被启动一次。第二次启动时将会抛出ja ...
public static void main(String[] args) {
////java 中Map的使用(不允许有重复的对象):
Map map = new HashMap();
map.put("a", "123");
map.put("b", "456");
for (Iterator it = map.keySet().iterator(); it.hasNext();) {
Object obj = it.next();
System.out.print ...
What are you trying to say?(你到底想说什么?)
Don't be silly.(别胡闹了。)
How strong are your glasses?(你近视多少度?)
Just because.(没有别的原因。)
It isn't the way I hoped it would be.(这不是我所盼望的。)
You will never guess.(你永远 ...