¼øÓÚÅÀ³æ¿ª·¢ÐèÒªÒ»¸öͼƬ½âÎö¹¦Äܵĺ¯Êý£¬µ½ÍøÂçÉϲéÕÒÁËһЩjni·½ÃæµÄÄÚÈÝ£¬²¢×öÁË×Ô¼ºµÄһЩÐ޸ģ¬¾ßÌåÈçÏ£º
Ä¿Ç°javaÓëdll½»»¥µÄ¼¼ÊõÖ÷ÒªÓÐ3ÖÖ£ºjni£¬jawinºÍjacob¡£Jni£¨Java Native Interface£©ÊÇsunÌṩµÄjavaÓëϵͳÖеÄÔÉú·½·¨½»»¥µÄ¼¼Êõ£¨ÔÚwindows\linuxϵͳÖУ¬ÊµÏÖjavaÓënative method»¥µ÷£©¡£Ä¿Ç°Ö»ÄÜÓÉc/c++ʵÏÖ¡£ºóÁ½¸ö¶¼ÊÇsourceforgeÉϵĿªÔ´ÏîÄ¿£¬Í¬Ê±Ò²¶¼ÊÇ»ùÓÚjni¼¼ÊõµÄwindowsϵͳÉϵÄÒ»¸öÓ¦Óÿ⡣Jacob£¨Java-Com Bridge£©ÌṩÁËjava³ÌÐòµ÷ÓÃmicrosoftµÄcom¶ÔÏóÖеķ½·¨µÄÄÜÁ¦¡£¶ø³ýÁËcom¶ÔÏóÍ⣬jawin£¨Java/Win32 integration project£©»¹¿ÉÒÔwin32-dll¶¯Ì¬Á´½Ó¿âÖеķ½·¨¡£¾Í¹¦ÄܶøÑÔ£ºjni >> jawin>jacob£¬Æä´óÖµĽṹÈçÏÂͼ£º
jni¼¼ÊõÌåϵ¹¦Äܽṹͼ
¾ÍÒ×ÓÃÐÔ¶øÑÔ£¬ÕýºÃÏà·´£ºjacob>jawin>>jni¡£
Jvm·â×°Á˸÷ÖÖ²Ù×÷ϵͳʵ¼ÊµÄ²îÒìÐÔµÄͬʱ£¬ÌṩÁËjni¼¼Êõ£¬Ê¹µÃ¿ª·¢Õß¿ÉÒÔͨ¹ýjava³ÌÐò£¨´úÂ룩µ÷Óõ½²Ù×÷ϵͳÏà¹ØµÄ¼¼ÊõʵÏֵĿ⺯Êý£¬´Ó¶øÓëÆäËû¼¼ÊõºÍϵͳ½»»¥£¬Ê¹ÓÃÆäËû¼¼ÊõʵÏÖµÄϵͳµÄ¹¦ÄÜ£»Í¬Ê±ÆäËû¼¼ÊõºÍϵͳҲ¿ÉÒÔͨ¹ýjniÌṩµÄÏàÓ¦ÔÉú½Ó¿Ú¿ªµ÷ÓÃjavaÓ¦ÓÃϵͳÄÚ²¿ÊµÏֵŦÄÜ¡£
ÔÚwindowsϵͳÉÏ£¬Ò» ......
Observer
Intent
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.
How to
Subject
knows its observers. Any number of Observer objects may observe a subject.
provides an interface for attaching and detaching Observer objects.
Observer
defines an updating interface for objects that should be notified of changes in a subject.
Known cases
Listener
MVC
Publish-Subscribe
UML
´úÂëÑùÀý£º
package org.haha.DesignPatterns.observer;
import java.util.ArrayList;
import java.util.List;
public class Observable {
private List<Observer> observers;
public Observable() {
observers = new ArrayList<Observer>();
}
public void register(Observer obs) {
observers.add(obs);
}
public void unregister(Observer obs) {
observers.remove(obs);
}
public void remind() {
for (Observer obs : observers) {
obs ......
Java¶ÔÏóXMLÐòÁл¯¿ò¼Ü£Simple2.0
SimpleÊÇÒ»¸öXMLÐòÁл¯¿ò¼Ü£¬Ò»¸öJava
°æ±¾¿íÈݵÄÐòÁл¯¿ò¼Ü£¬Äܹ»¿ìËÙÔÚJava
ƽ̨ÉÏ¿ª·¢XML¡£Ö§³Öͨ¹ýannotationsÍêÈ«ÅäÖû¯µÄXML½á¹¹£»Ìṩ°æ±¾¹ÜÀí¿ò¼ÜÔÊÐíÏòÇ°ºÍÏòºó¼æÈÝÐòÁл¯£»¸üºÃµÄÐÔÄÜ£¬Ê¹ÓÃÇáÁ¿¼¶StAXÌáÉýXML·´ÐòÁл¯
½ø³Ì£¬±ÈXStreamºÍJAXB¸ü¿ì£»Í¨¹ýnamespace annotationsÌṩÍêÈ«µÄÃüÃû¿Õ¼äÖ§³Ö£»°üÀ¨XMLÄ£°åϵͳ
Ä¿Ç°×îа汾Ϊ 2.0.1. ¹ÙÍøµØÖ·:http://simple.sourceforge.net/home.php
×¢£º²»¹ý±ÊÕßÈÏΪ£¬Èç¹ûÄãʹÓÃJavaSE 6.0£¬Ôò½¨ÒéʹÓÃÆä×Ô´øµÄJAXB
(Java Architecture for XML Binding).ÆäʹÓ÷dz£¼òµ¥£¬Ö§³Öͨ¹ýannotationsÍêÈ«ÅäÖû¯µÄXML½á¹¹¡£¶øÇÒÆäÒ²ÊÇJavaÖеÄÒ»¸ö¹æ·¶ÊµÏÖ£¬ JAX-RS¹æ·¶
¾ÍʹÓÃJAXBÀ´ÊµÏÖ¶ÔÏóµÄÐòÁл¯¹¦ÄÜ¡£
ÏÂÃæÊÇÒ»¸ö¼òµ¥Ê¾Àý:
Ïȶ¨ÒåÒ»¸öExample¶ÔÏó£¬ ÎÒÃÇÖ»ÐèÒª¼òµ¥µÄ¼ÓÉÏAnnoationºó£¬¾Í¿ÉÒÔ½øÐжÔÏóÓëXMLÖ®¼äµÄת»»¡£
@Root
public
class
Example {
@Element
private
String text;
@Attribute
private
int
index;
&nb ......
´ó¼ÒÖªµÀ£¬ÔÚ1991Ä꣬¼¸ºõÓëLinuxͬʱ£¬SUN·¢²¼ÁËJava±à³ÌÓïÑÔ¡£²»¾Ã£¬ÎҵĴóѧͬѧ£¨±ÈÎÒµÍÁ½Ä꣩Íõ¿Ëºê½ÌÊÚ£¨Ç廪²©Ê¿µ¼Ê¦£©ÓëSUNºÏ×÷³ÉÁ¢ÁËÖйú×îÔçµÄ“JavaÑо¿ÖÐÐÄ”£¬²¢ÇÒµ£ÈθÃÖÐÐÄÖ÷ÈΡ£´Ó´Ë£¬ÎÒ¿ªÊ¼×¢ÒâJava¼¼ÊõµÄ·¢Õ¹¶¯Ì¬¡£ÎÒ¼ÒÖеĴæÊ飬ÒÔJavaÊé¼®×î¶à£¨µ±È»£¬³ýÁËÊýѧÊé¼®Ö®Í⣩¡£
1998ÄêÇ°ºó£¬ºìñ6.2°æ±¾°üº¬ÁËEnhydraÖмä¼þ£¬ÎÒ´óÊܹÄÎ裬×éÖ¯ÈËÁ¦£¬¿ªÊ¼ÁË»ùÓÚLinuxƽ̨µÄWeb±à³ÌºÍÓ¦Óᣴó¸ÅÔÚ1999Äê12Ôµף¬ÎҼǵã¬ÄÇÊÇÒ»¸ö´óÑ©·×·ÉµÄÈÕ×Ó£¬¡¶µÚÒ»½ì¹ú¼ÊÈí¼þÕ¹ÀÀ»á¡·ÔÚ±±¾©Õ¹ÀÀ¹Ý¾ÙÐУ¬ÎÒ×éÖ¯Á¦Á¿£¬Ôڻ᳡ÉÏչʾÁËÓÉ22̨PC×é³ÉµÄLinux¾ÖÓòÍø£¬ÅÜ»ùÓÚEnhydraµÄWebÓ¦Óá£ÕâЩÍùÊÂÖÁ½ñÄÑÒÔÍüÈ´¡£
ÔÚ2000Ä꣬Java¼°ÆäÓ¦ÓÃÊÇÎÒµÄ×î°®¡£ÄÇÄ꣬ÎÞÎýÓÀÖУ¨Evermore£©³ÉÁ¢£¬ÎÒÊdzÉÁ¢´ó»áµÄ¼ûÖ¤ÈËÖ®Ò»¡£µ±Ê±£¬ÎÞÎýÓÀÖÐ×ܲòܲÎÏëÓÃJavaÓïÑÔ±àдһÖÖ“¼¯³É”°ì¹«Ì×¼þ£¬ÎÒºÜÓÐÐËȤ¡£µ«ÊÇ£¬µ½Á˺óÀ´£¬»ùÓÚJavaµÄÓÀÖа칫Ì×¼þ¿ª·¢³öÀ´ÁË£¬ÎÒûÓÐÈ¥×£ºØ£¬ÒòΪ£¬ÕâÌײúÆ·ÊÇÉÌÒµÈí¼þ¡£Ì¹°×µØ˵£¬ÎÒ¶ÔÉÌÒµÈí¼þÊÇ£¨·Ç³££©µÖ´¥µ ......
×Ô¼ºÔÚ×öÕâ¸ö³ÌÐòµÄʱºò¿´¹ýºÜ¶àµÄ×ÊÁÏ£¬ÉÏÍøÒ²²éÁ˲»ÉÙµÄ×ÊÁÏ£¬¿ÉÊǶà°ë˵µÄÊdzöÉñÈ뻯£¬ÔÆÀïÎíÀï...²»¹â¿´Á˲»Ã÷°×£¬¶øÇÒÊÇÓÐÃ÷°×Ò»µãµÄÈË£¬¿´ÁËÒ²±äµÄÓÐЩģºýÁË¡£
ÕâÀïÎÒÑÚÊÎÒ»Ì×ÍêÕûµÄjava jdbc Á¬½ÓOracle9iµÄ·¶Àý¡£
package com.lxh.dbcon;//´ò°ü
import java.sql.*;//µ¼Èësql°ü
public class DbCon {//¶¨ÒåÁ¬½ÓÀà
private final String DRIVER="oracle.jdbc.driver.OracleDriver";//OracleµÄÇý¶¯
private final String URL="jdbc:oracle:thin:@localhost:1521:Oracle9i";//Oracle9iΪOracleµÄÖ÷»ú´®Ãû£¨Ò²¾ÍÊÇOracleµÄSID£©ÔÚ×°OracleµÄʱºòÌîдµÄSID
private final String DBUSER="scott";//ÕâÀï¾ÍÒÔscott/tigerΪÓû§µÇ¼
private final String DBPASSWORD="tiger";
private Connection con=null;//Ô¤Ïȶ¨ÒåÒ»¸öÁ¬½Ó½Ó¿Ú
public DbCon() {//ÔÚ¹¹Ôì·½·¨ÖмÓÔØÊý¾Ý¿âÇý¶¯
try{
Class.forName(DRIVER).newInstance();
}catch(Exception e){
e.printStackTrace();
}
&n ......
×Ô¼ºÔÚ×öÕâ¸ö³ÌÐòµÄʱºò¿´¹ýºÜ¶àµÄ×ÊÁÏ£¬ÉÏÍøÒ²²éÁ˲»ÉÙµÄ×ÊÁÏ£¬¿ÉÊǶà°ë˵µÄÊdzöÉñÈ뻯£¬ÔÆÀïÎíÀï...²»¹â¿´Á˲»Ã÷°×£¬¶øÇÒÊÇÓÐÃ÷°×Ò»µãµÄÈË£¬¿´ÁËÒ²±äµÄÓÐЩģºýÁË¡£
ÕâÀïÎÒÑÚÊÎÒ»Ì×ÍêÕûµÄjava jdbc Á¬½ÓOracle9iµÄ·¶Àý¡£
package com.lxh.dbcon;//´ò°ü
import java.sql.*;//µ¼Èësql°ü
public class DbCon {//¶¨ÒåÁ¬½ÓÀà
private final String DRIVER="oracle.jdbc.driver.OracleDriver";//OracleµÄÇý¶¯
private final String URL="jdbc:oracle:thin:@localhost:1521:Oracle9i";//Oracle9iΪOracleµÄÖ÷»ú´®Ãû£¨Ò²¾ÍÊÇOracleµÄSID£©ÔÚ×°OracleµÄʱºòÌîдµÄSID
private final String DBUSER="scott";//ÕâÀï¾ÍÒÔscott/tigerΪÓû§µÇ¼
private final String DBPASSWORD="tiger";
private Connection con=null;//Ô¤Ïȶ¨ÒåÒ»¸öÁ¬½Ó½Ó¿Ú
public DbCon() {//ÔÚ¹¹Ôì·½·¨ÖмÓÔØÊý¾Ý¿âÇý¶¯
try{
Class.forName(DRIVER).newInstance();
}catch(Exception e){
e.printStackTrace();
}
&n ......
×î½üÒªÖØÐÂѧϰJava£¬ÕÒ¸öÀý×ÓÀ´Êµ¼ù£¬ÔÚÍøÉÏÕÒÁ˺ܶàÀý³ÌÀ´¿´£¬×Ô¼ºÖØбàдÁËÒ»¸ö̰ʳÉßµÄÀý×Ó£¬¼ÇÔÚÕâÀï¡£
1.SnakeModel.java
import java.util.Observable;
import java.util.LinkedList;
import java.util.Arrays;
import java.util.Random;
import javax.swing.*;
//ObservableÀàÒ»°ã´ú±íÊý¾Ý£¬ÊµÏÖ½Ó¿ÚRunnable±íÃ÷´´½¨Ò»¸ö½ø³Ì
public class SnakeModel extends Observable implements Runnable {
boolean[][] matrix; //ָʾλÖÃÉÏÊÇ·ñÓÐÉßÌå»òʳÎ
LinkedList nodeArray = new LinkedList(); //ÉßÌå
Node food;
int maxX; //XÖá±ßÏߣ¬¼´Îª»²¼ÖÐXÖá¸öÊý
int maxY; //yÖá±ßÏߣ¬¼´Îª»²¼ÖÐYÖá¸öÊý
int direction = UP; //ÉßÔËÐеķ½Ïò,³õʼΪÏòÉÏ£¨UP£©
boolean isRunning = false; //ÔËÐÐ״̬
int timeInterval = 200; //ʱ¼ä¼ä¸ô£¬ºÁÃ뼶
double speedChangeRate = 0.75; //ÿ´ÎµÄËٶȱ仯ÂÊ
boolean isPaused = false ;//ÔÝÍ£±êÖ¾
int score = 0; //µÃ·Ö
int countMove = 0; //³Ôµ½Ê³ÎïÇ°Òƶ¯µÄ´ÎÊý
public static final int UP = 2;
public static final int DOWN =4;
public static final int LEFT= 1 ......