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);
}
}
分享到:
相关推荐
- Protocol Buffer:PB的设计目标之一就是跨语言兼容,它支持多种编程语言,包括C++、Java、Python等,方便多语言环境下的数据交换。 - Java序列化:主要针对Java平台,跨语言支持较差,若要在非Java环境中使用,...
MySQL是世界上最受欢迎的关系型数据库管理系统之一,它在处理大量数据和高并发场景时的性能优化至关重要。"JAVA开发高效代码-Mysql最佳实践.pptx"和"JAVA开发高效代码-Mysql最佳实践(1).pptx"这两个PPT文件很可能...
线缓冲区的生成就是其中之一。 以下是一个简单的Java代码示例,展示了如何使用JTS库生成线缓冲区: ```java import org.locationtech.jts.geom.*; import org.locationtech.jts.io.ParseException; import org....
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
在这个案例中,使用Java源码实现扫描线ZBuffer算法,开发者可能需要自行构建一个渲染管线,包括顶点坐标转换、投影、视口变换、以及ZBuffer操作等步骤。 1. **坐标转换**:首先,3D模型的顶点需要经过模型变换、...
Java性能优化中,NIO(New Input/Output)框架是一个重要的技术,它的引入极大地提升了Java在处理I/O操作时的效率。NIO的核心组件包括Buffer(缓冲区)和Channel(通道),它们共同解决了传统I/O模型中的一些性能...
Java开发中的堆外内存使用是优化程序性能的重要策略之一,尤其在处理大数据、高并发或者内存敏感的应用场景中。堆外内存,也被称为直接内存(Direct Memory),是指不在JVM的堆内存中分配的内存,而是直接在操作系统...
虽然序列化提供了一个强大的机制来保存对象的状态,但它也可能会成为性能瓶颈之一。 ##### 4.2.1 序列化的影响 序列化过程中涉及到大量的元数据处理和对象状态的复制,这可能会导致较高的CPU使用率和内存消耗。...
Protocol_Buffer最初由Google开发并内部使用,随后开源并逐渐成为业界标准之一。它的设计理念和功能特性不断进化,为不同应用场景提供了广泛的支持。 #### 语言指导 - **定义一个消息类型**:在`.proto`文件中定义...
Java NIO-Buffer-基本使用 - **主要内容**:演示Buffer的基本操作,如创建、填充、翻转等。 - **学习目标**:学会如何简单地使用Buffer。 #### 14. Java NIO-Buffer-三个属性和类型 - **主要内容**:详细解析...
2. **空指针异常:** 空指针异常是在Java中非常常见的错误之一。为了避免这类异常,应当养成良好的编程习惯,如使用`Objects.requireNonNull()`方法检查参数是否为`null`。 ```java public void method(Object ...
在Java编程中,高效并发处理是优化系统性能的关键之一。Disruptor,由LMAX公司开源的一款并发框架,为处理高并发场景提供了一种新颖且高效的解决方案。它通过消除锁和线程间通信的开销,实现了微秒级的延迟和极高的...
首先,理解基本概念:局域网(Local Area Network, LAN)是将多台计算机连接在一起形成的网络,共享资源是其核心特性之一。共享文件即是在局域网内的某台机器上设定一个共享目录,其他机器可以通过网络路径访问这些...
在IT行业中,数据库存储是关键任务之一,尤其是对于大型或者非结构化数据,如多媒体文件。MongoDB是一个流行的选择,因为它支持BSON文档格式,能够处理各种类型的数据,包括视频文件如MP4。本篇文章将深入讲解如何...
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
使用Java语言编写的一款用于反映颜色变化的面板,也就是大家熟悉的颜色调色板演示程序。原理是初始化颜色选择按钮,然后为颜色选择按钮增加事件处理事件,最后实例化颜色选择器。 Java二进制IO类与文件复制操作...
12. **Spring框架**:作为Java领域最流行的框架之一,Spring提供了依赖注入、AOP、MVC、数据访问等功能,对于现代Java开发至关重要。 13. **测试与调试**:JUnit、Mockito等工具的使用方法,以及如何进行单元测试和...
Java编程语言是软件开发领域的主流语言之一,尤其在企业级应用中有着广泛的应用。华为作为全球知名的科技企业,对Java技术的掌握与运用有极高的要求。这份“华为java培训内部资料”旨在帮助开发者深入理解Java的核心...
如果在运行时遇到找不到`opencv_java470.dll`文件的错误,你需要将其复制到`C:\Windows\System32`目录下,这是Windows系统查找动态链接库文件的路径之一。 其次,Java是编写图像处理程序的常用语言,具有跨平台性、...
Java NIO(New Input/Output)网络框架是一个高效、非阻塞的I/O模型,它在Java 1.4版本中被引入,为处理大量并发连接提供了强大的支持。xSocket是一个基于Java NIO实现的网络通信框架,它旨在提供简单易用、性能卓越...