一、引言
1991年,Sun MicroSystem公司由James Gosling、Bill Joe等人组成的Green小组开发了
一个名为Oak的软件(Java的前身),目的是用于电视等家用电器的嵌入式应用。但后来,正如
我们现在所知道的那样,Java的发展却出乎它的开发者的预料,它并没有在嵌入式应用中大展
身手,但却风靡WWW世界。
如今,Java应用程序在Internet上随处可见。这些程序的执行有一个共同的特点,它们都
基于一个用软件实现的Java虚拟机来解释或编译执行,这难免会影响软件执行的速度,内存占
用多。而Sun即将推出的Java芯片用硬件实现Java虚拟机规范,可以直接执行Java字节码,如
图1所示。
@@28111000.GIF;图1 Java程序的三种执行方式@@
Sun为Java芯片制定了picoJavaⅠ核心规范,该规范为优化运行Java代码作了许多创新设
计。picoJava体系结构是MicroJava芯片的基础。该芯片将广泛应用于嵌入式应用系统,如机
顶盒、工业数据采集设备、蜂窝电话、网络计算机等。此外Sun还有一种更高档的芯片Ultr
aJava,将用于台式机。UltraJava将可能有如JPEG解压缩之类的图形处理优化能力。我们常
看到的"picoJava"实际上只是一个概念,而MicroJava和UltraJava是由Sun公司设计、由其它
硬件生产商生产的实际产品 ......
01. 说出ArrayList,Vector的区别,HashMap和Hashtable的区别。
02. final, finally, finalize的区别。
03. abstract class和interface有什么区别?
04. 什么时候用assert。
05. GC是什么? 为什么要有GC? 垃圾回收器的基本原理是什么?垃圾回收器可以马上回收内存吗?有什么办法主动通知 虚拟机进行垃圾回收.
06. Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
07. 构造器Constructor是否可被override?
08. swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上?
09. try {}里有一个return语句,那么紧跟在这个try后的finally {}里的code会不会被执行,什么时候被执行,在return前还是后
10. 当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递?
11. 是否可以从一个static方法内部发出对非static方法的调用?
1 ......
一、Java多线程互斥及同步控制和通信
多个线程的执行是并发的,也就是在逻辑上“同时”,而不管是否是物理上的“同时”。如果系统只有一个CPU,那么真正的“同时”是不可能的,但是由于CPU的速度非常快,用户感觉不到其中的区别,因此我们也不用关心它,只需要设想各个线程是同时执行即可。
多线程和传统的单线程在程序设计上最大的区别在于,由于各个线程的控制流彼此独立,使得各个线程之间的代码是乱序执行的,由此带来的线程调度,同步等问题。
1、线程互斥与线程同步
线程互斥:并发执行的多个线程在某一时间内只允许一个线程在执行以访问数据。
线程同步:并发执行的多个线程之间互相发送消息进行合作、互相等待,按一定速度配合执行。
2、线程互斥
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问。
(1)应用的场合:
当两个或多个线程同时访问共享数据时,可能对数据进行读、写、修改、删除等操作时,应保证同时只有一个线程访 ......
学习了线程,向量泛型编程,可以通过一个实例来应用所学知识,本课实现了经典游戏贪食蛇,自认为结构还算合理于2009年8月12日,16:05分
实现贪食蛇的思路
1。首先定义窗口200X400 ,实现控制1个矩形方块20X20
2。通过按键控制方块移动
3。实现线程控制方块移动每次一格(20X20),通过按键改变方向
4.实现在窗口中随机出现可以吃的小块 作为要是20的倍数
5.实现方块和可以吃的小块碰撞
6.将蛇的身体每一块定义为Vector,有每块对应一个对象
Node{
int x;
int y;
int nextDir;
}
7。实现死亡判定和分数判定
第一个类:
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class SnakeFrame extends JFrame implements KeyListener{
public JPanel gamePanel;//游戏面板
public Vector<Node>allNode=n ......
Java正则表达式的解释说明
表达式意义:
1.字符
x 字符 x。例如a表示字符a
\\ 反斜线字符。在书写时要写为\\\\。(注意:因为java在第一次解析时,把\\\\解析成正则表达式\\,在第二次解析时再解析为\,所以凡是不是1.1列举到的转义字符,包括1.1的\\,而又带有\的都要写两次)
\0n 带有八进制值 0的字符 n (0 <= n <= 7)
\0nn 带有八进制值 0的字符 nn (0 <= n <= 7)
\0mnn 带有八进制值 0的字符 mnn(0 <= m <= 3、0 <= n <= 7)
\xhh 带有十六进制值 0x的字符 hh
\uhhhh 带有十六进制值 0x的字符 hhhh
\t 制表符 ('\u0009')
\n 新行(换行)符 ('\u000A')
\r 回车符 ('\u000D')
\f 换页符 ('\u000C')
\a 报警 (bell) 符 ('\u0007')
\e 转义符 ('\u001B')
\cx 对应于 x 的控制符
2.字符类
[abc] a、b或 c(简单类)。例如[egd]表示包含有字 ......
Workbook类提供的方法
1. int getNumberOfSheets()
获得工作薄(Workbook)中工作表(Sheet)的个数,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
int sheets = rwb.getNumberOfSheets();
2. Sheet[] getSheets()
返回工作薄(Workbook)中工作表(Sheet)对象数组,示例:
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
Sheet[] sheets = rwb.getSheets();
3. String getVersion()
返回正在使用的API的版本号,好像是没什么太大的作用。
jxl.Workbook rwb = jxl.Workbook.getWorkbook(new File(sourcefile));
String apiVersion = rwb.getVersion();
Sheet接口提供的方法
1) String getName()
获取Sheet的名称,示例:
jxl.Workbook rwb = jxl.Workb ......