也许Java虚拟机的实现者应该去考虑这样一个想法:从除Java字节码文件之外的一些数据源装载Java类,比如关系型数据库中的关系定义、包含了结构化数据的XML数据源。
如果Java实现了这个想法,那么像ORM映射、Web Services中XML Schema与Java类之间的映射之类的麻烦事将变成一些愉快的事情。
关系型数据库中的关系定义所使用的数据类型也大都有相应的Java类型与之对应,Java虚拟机可以从数据库读取关系定义信息,并装载一个相应的POJO类。这样一来,ORM就可以大大简化,也许开发人员就不用去麻烦地使用像Hibernate之类的一些ORM框架了。
包含结构化数据的XML数据源中的数据可以直接被映射到Java中的简单属性。因此,从这种数据源装载相应POJO类是可行的。Web Services的发展之所以这么艰难,一个重要的原因应该是Java对象到XML的序列化过程和XML到Java对象的反序列化过程太麻烦了。如果Java虚拟机可以通过这种方法屏蔽这些麻烦的操作,也许用不了多久Web Services的开发者一定会感觉他们活在一个真正分布式计算的时代。
以后,人们应该改变观念:Java类并不只是存在于Java字节码文件中,Java虚拟机装载类的来源至少包括Java字节码文件、关系型数据库中的关系定义和包含了结构 ......
一个示例代码:
//源角色
public class Adaptee
{public int get220V(){return 220;}}
//目标角色
public interface Target{int get110V(); int get220V();}
//适配器角色:扩展源角色类,实现目标角色接口,从而使得角色改动时候,不用改动源角色,只要改动适配器
public class Adapter extends Adaptee implements Target{
public int get110V(){return 110;}
}
//客户端
public class Client{
public static void main(String[] args){ new Client().test();}
public void test(){
Target target = new Adapter();
int v1 = target.get110V();
int v2 = target.get220V(); }
}
以上适配器模式扩展了源角色,实现了目标角色接口,
从而满足了同时提供220V,110V电压的要求 ......
package org.rut.util.algorithm.support;
import org.rut.util.algorithm.SortUtil;
/** *//**
* @author treeroot
* @since 2006-2-2
* @version 1.0
*/
public class InsertSort implements SortUtil.Sort...{
/**//* (non-Javadoc)
* @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
*/
public void sort(int[] data) ...{
int temp;
for(int i=1;i<data.length;i++)...{
for(int j=i;(j>0)&&(data[j]<data[j-1]);j--)...{
SortUtil.swap(data,j,j-1);
}
}
} ......
本文出处:http://blog.163.com/mr_liuyong/blog/static/123424376200994104952814/
JAVA 自由落体和平抛无能运动
编写一个Java GUI应用程序,采用Java多线程技术,模拟自由落体和平抛运动:一个球自由落下,一个球水平抛出。(本题30分)(自由落体物理公式:h= g *t2/2 ;平抛运动物理公式:h= g *t2/2 ,x=26*t ;
h代表高度,t代表时间,g代表重力加速度=9.8 m/s2
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Panel;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferedImage;
import java.util.ArrayList;
import java.util.List;
public class DropTest extends Frame implements Runnable,ActionListener{
double x1 = 100,y1 = 0;//A的起始位置
double x2 = 100,y2 = 0;//B的起始位置
double s2 = 26;//B的水平速度
double g = 9.8;//G
long t ......
volatile 关键字的使用
Volatile修饰的成员变量在每次被线程访问时,都强迫从共享内存中重读该成员变量的值。而且,当成员变量发生变化时,强迫线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
Java语言规范中指出:为了获得最佳速度,允许线程保存共享成员变量的私有拷贝,而且只当线程进入或者离开同步代码块时才与共享成员变量的原始值对比。
这样当多个线程同时与某个对象交互时,就必须要注意到要让线程及时的得到共享成员变量的变化。
而volatile关键字就是提示VM:对于这个成员变量不能保存它的私有拷贝,而应直接与共享成员变量交互。
使用建议:在两个或者更多的线程访问的成员变量上使用volatile。当要访问的变量已在synchronized代码块中,或者为常量时,不必使用。
由于使用volatile屏蔽掉了VM中必要的代码优化,所以在效率上比较低,因此一定在必要时才使用此关键字。
原文链接:http://zhidao.baidu.com/question/12947255.html ......
Java设计模式分为创建模式, 结构模式, 行为模式 3种类型, 下面我们分别加以阐述:
Java设计模式之创建模式包括:
Factory, 工厂模式
Singleton, 单例模式
Builder, 建造模式
Prototype, 原型模式
Java设计模式之结构模式包括:
Facade, 门面模式
Decorator, 装饰模式
Composite, 合成模式
Proxy, 代理模式
Adapter, 适配器模式
Bridge, 桥梁模式
Flyweight, 共享元类模式
Java设计模式之行为模式包括:
Chain of responsibleif, 责任链模式
Command, 命令模式
Strategy, 策略模式
Observer, 观察模式
Interpreter , 解释器模式
Iterator, & ......