public String makeStars(int size, char ch) {
if(size < 1) {
throw new IllegalArgumentException("size must be greater than 0");
}
char[] chs = new char[size];
for(int i = 0; i < size; i++) {
chs[i] = ch;
}
return new String(ch);
} ......
Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。
这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。
而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。
使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。
由于使用volatile屏蔽掉了VM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字。 ......
java有个特点就是序列化,简单地来说就是可以将这个类存储在物理空间(当然还是以文件的形式存在),那么当你从本地还原这个文件时,你可以将它转换为它本身。这可以极大地方便网络上的一些操作,但同时,因为涉及到安全问题,所以并不希望把类里面所有的东西都能存储(因为那样,别人可以通过序列化知道类里面的内容),那么我们就可以用上transient这个关键字,它的意思是临时的,即不会随类一起序列化到本地,所以当还原后,这个关键字定义的变量也就不再存在。 ......
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class TestClass {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド?スタブ
List li = searchCrdNo();
System.out.print("main method now is :"+((Map) li.get(0)).get("AA"));
}
public static List searchCrdNo() {
List li = new ArrayList();
Map ma = new HashMap();
ma.put("AA", "1");
li.add(ma);
Map crdNoMap = (Map) li.get(0);
crdNoMap.put("AA", "22");
System.out.print("now is :"+((Map) li.get(0)).get("AA"));
return li;
}
}
now is :22main method now is :22
最简单的例子,按值传递的例子! ......
1、语汇单元的组成:
1)经过分析产生的基本单元。在索引时,Lucene使用特定的分析器来处理需要被语汇单元化的指定域,并将每个语汇单元以项的形式写入索引。
2)起点偏移量是指语汇单元文本的起始字符在原广西中的位置,而终点的偏移量则表示语汇单元终止字符的下一个位置。
3)文本被语汇单元化后,相对于前一语汇单元的位置信息被保存为位置增量值。所有的内置语汇单元将位置增量的默认值设置为1,表示所有语汇单元是连续的,位置上是一个紧接一个的。
2、语汇单元转换为项
1)当文本在索引过程中经过分析后,每个语汇单元做为一个项被传递给索引。
2)位置增量是语汇单元携带到索引中的惟一的附加元数据。
3)起点和终点偏移量和语汇单元类型都被抛弃了-这些元数据仅在分析过程中使用。
4)位置增量使得当前语汇单元和前一个语汇单元 联系起来。位置增量为1,表示每个单词存于域中唯一且连接的位置。
5)位置增量大于1,允许单词之间有空隙。比如说这些空隙上的被分析器删除
6)位置增量为0的语汇单元,会将该语汇单元放置在前一个语汇单元的位置上。通常用于表示单词的同义词。
3、TokenStream(基类包括next()和close()方法 )
1)2个不同的子类
A)Token ......
/* @author AnShuFeng
* @version 1.0
* 人人对战象棋
* XiangQi.java
*/
import java.awt.*;
import java.awt.event.*;
import javax.imageio.*;
import java.io.*;
import javax.swing.*;
import java.awt.image.*;
public class XiangQi
{
JFrame frame = new JFrame("树峰象棋");
//红方所有棋子
BufferedImage rj;
BufferedImage rm;
BufferedImage rx;
BufferedImage rs;
BufferedImage rk;
BufferedImage rp;
BufferedImage rz;
//黑方所有棋子
BufferedImage hj;
BufferedImage hm;
BufferedImage hx;
BufferedImage hs;
BufferedImage hk;
BufferedImage hp;
BufferedImage hz;
//定义棋盘
BufferedImag ......