1.在java I/O 中,Buffer的使用,使用buffer,文件的读写效率提高一倍左右
public void writeFile() {
try {
FileWriter fw = new FileWriter("file.txt");
long beginTime = System.currentTimeMillis();
for(int i = 0; i < 10000; i++) {
fw.write("testline " + i + "\n");
}
fw.close();
System.out.println("Time spend: " + (System.currentTimeMillis() - beginTime));
} catch (IOException e) {
e.printStackTrace();
}
}
public void writeWithBuffer() {
try {
BufferedWriter bw = new BufferedWriter(new FileWriter("file.txt"));
long beginTime = System.currentTimeMillis();
for(int i = 0; i < 10000; i++) {
bw.write("testline " + i + "\n");
}
bw.close();
System.out.println("Time spend: " + (System.currentTimeMillis() - beginTime));
} catch (IOException e) {
e.printStackTrace();
}
}
2.对象的缓存
1)无缓存实现
public class NoBufferMovingCircle extends JApplet implements Runnable {
private static final long serialVersionUID = -1081283643259866574L;
Image screenImage = null;
Thread thread;
int x = 5;
int move = 1;
@Override
public void init() {
super.init();
screenImage = createImage(230, 160);
}
@Override
public void start() {
super.start();
if(thread == null) {
thread = new Thread(this);
thread.start();
}
}
@Override
public void run() {
try {
while(true) {
x += move;
if((x > 105) || (x < 5)) {
move *= -1;
}
repaint();
Thread.sleep(10);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void drawDircle(Graphics draw) {
Graphics2D g = (Graphics2D)draw;
g.setColor(Color.red);
g.fillRect(0, 0, 200, 100);
g.setColor(Color.GREEN);
g.fillOval(x, 5, 90, 90);
}
@Override
public void paint(Graphics g) {
g.setColor(Color.GRAY);
g.fillRect(0, 0, 200, 100);
drawDircle(g);
}
}
2)有缓存实现
对Graphics对象缓存后applet图片显示顺畅
public class BufferMovingCircle extends JApplet implements Runnable {
private static final long serialVersionUID = -1081283643259866574L;
Image screenImage = null;
Thread thread;
int x = 5;
int move = 1;
Graphics doubleBuffer = null;
@Override
public void init() {
super.init();
screenImage = createImage(230, 160);
doubleBuffer = screenImage.getGraphics();
}
@Override
public void start() {
super.start();
if(thread == null) {
thread = new Thread(this);
thread.start();
}
}
@Override
public void run() {
try {
while(true) {
x += move;
if((x > 105) || (x < 5)) {
move *= -1;
}
repaint();
Thread.sleep(10);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public void drawDircle(Graphics draw) {
Graphics2D g = (Graphics2D)draw;
g.setColor(Color.red);
g.fillRect(0, 0, 200, 100);
g.setColor(Color.GREEN);
g.fillOval(x, 5, 90, 90);
}
@Override
public void paint(Graphics g) {
doubleBuffer.setColor(Color.GRAY);
doubleBuffer.fillRect(0, 0, 200, 100);
drawDircle(doubleBuffer);
g.drawImage(screenImage, 0, 0, this);
}
}
分享到:
相关推荐
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
Java从网络取得文件 1个目标文件 简单 Java从压缩包中提取文件 1个目标文件 简单 Java存储与读取对象 1个目标文件 如题 Java调色板面板源代码 1个目标文件 摘要:Java源码,窗体界面,调色板 使用Java语言编写的一款...
Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应...
Stateful Session Bean 与 Stateless Session Bean ,这两种的 Session Bean都可以将系统逻辑放在 method之中执行,不同的是 Stateful Session Bean 可以记录呼叫者的状态,因此通常来说,一个使用者会有一个相对应...
《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用...
《SQL Server 2008查询性能优化》指出的性能要点之一是数据库随着用户和数据的日益增多而进行扩展的必要性。你需要理解性能低下的起因。以及识别并修复它们的方法。《SQL Server 2008查询性能优化》将帮助你: 使用...
该参数是构成某个例程的总 SGA 要求的若干参数之一。 默认值 : 派生: SESSIONS 参数的值 (如果正在使用共享服务器体系结构); 否则为 0。 Mts_multiple_listeners: 说明: 指定多个监听程序的地址是分别指定的, ...
《Linux多线程服务端编程:使用muduo C++网络库》主要讲述采用现代C++在x86-64 Linux上编写多线程TCP网络服务程序的主流常规技术,重点讲解一种适应性较强的多线程服务器的编程模型,即one loop per thread。...