How to using RMI(转)

May 7, 2007

步驟:

1. 定義一個遠端物件,可供主從雙方相互導循

2. 為遠端類別建立和編譯實作的類別

3. 使用rmic的命令建立類別stub和skeleton

C:\rmic MyBBSImpl

4. 建立和編譯一個伺服器的應用程式

5. 建立和編譯一個存取遠端物件的客戶端程式

6. 啟動RMI Registry和伺服器應用程式

C:\Start rmiregistry

7. 測試客戶端
(more…)

GridBagLayout(转)

May 5, 2007

Gridx——组件的横向坐标
Girdy——组件的纵向坐标
Gridwidth——组件的横向宽度,也就是指组件占用的列数,这与HTML的colspan类似
Gridheight——组件的纵向长度,也就是指组件占用的行数,这与HTML的rowspan类似
Weightx——指行的权重,告诉布局管理器如何分配额外的水平空间
Weighty——指列的权重,告诉布局管理器如何分配额外的垂直空间
Anchor——告诉布局管理器组件在表格空间中的位置
Fill——如果显示区域比组件的区域大的时候,可以用来控制组件的行为。控制组件是垂直填充,还是水平填充,或者两个方向一起填充
Insets——指组件与表格空间四周边缘的空白区域的大小
Ipadx—— 组件间的横向间距,组件的宽度就是这个组件的最小宽度加上ipadx值
ipady—— 组件间的纵向间距,组件的高度就是这个组件的最小高度加上ipady值
(more…)

java序列化(收集)

May 4, 2007

(more…)

java反射(收集)

May 3, 2007

Class创建:

1 String name = “caterpillar”;
Class stringClass = name.getClass();

2 Class stringClass = String.class;

3 Class c = Class.forName(args[0]);

Class物件的訊息是在編譯時期就被加入至.class檔案中,它是Java支援執行時期型別辨識(RTTI,Run- Time Type Information或Run-Time Type Identification)的一種方式,在編譯時期編譯器會先檢查對應的.class檔案,而執行時期JVM在沒有用到該類別時,就不會載入它,如果要用到時,JVM會先檢查對應的Class物件是否已經載入,如果沒有載入,則會尋找對應的.class檔案並載入它。

您可以使用Class.forName()方法動態加載類別,之後使用Class的newInstance()方法產生實例

从Class中获取信息
Class c = Class.forName(args[0]);
Package p = c.getPackage();
System.out.println(p.getName());
int m = c.getModifiers();
System.out.print(Modifier.toString(m) + ” “);
if(Modifier.isInterface(m)) { System.out.print(”interface “); }
else { System.out.print(”class “); }
System.out.println(c.getName() + ” {”);
Field[] fields = c.getDeclaredFields();
for(Field field : fields) {
System.out.print(”\t” + Modifier.toString(field.getModifiers()));
System.out.print(” ” + field.getType().getName() + ” “);
System.out.println(field.getName() + “;”);
}

候捷谈Java反射机制(转)

Java反射机制

摘要

Reflection 是Java被视为动态(或准动态)语言的一个关键性质。这个机制允许程序在运行时透过Reflection APIs取得任何一个已知名称的class的内部信息,包括其modifiers(诸如public, static 等等)、superclass(例如Object)、实现之interfaces(例如Cloneable),也包括fields和methods的所有信息,并可于运行时改变fields内容或唤起methods。本文借由实例,大面积示范Reflection APIs。

(more…)

java国际化(转)

國際化的英文是Internationalization,因為單字中總共有18個字母,簡稱I18N,目的是讓應用程式可以應地區不同而顯示不同的訊息,最基本的就是讓不同語系的使用者可以看到屬於自己語系的訊息,像是英文語系的看到英文內容,而中文語系的可以看到中文的內容。
(more…)

URLConnection相关

import java.net.*;
import java.io.*;
import java.util.Date;

/**
* A class that displays information about a URL.
**/
public class GetURLInfo {
/** Use the URLConnection class to get info about the URL */
public static void printinfo(URL url) throws IOException {
URLConnection c = url.openConnection( ); // Get URLConnection from URL
c.connect( ); // Open a connection to URL

// Display some information about the URL contents
System.out.println(” Content Type: ” + c.getContentType( ));
System.out.println(” Content Encoding: ” + c.getContentEncoding( ));
System.out.println(” Content Length: ” + c.getContentLength( ));
System.out.println(” Date: ” + new Date(c.getDate( )));
System.out.println(” Last Modified: ” +new Date(c.getLastModified( )));
System.out.println(” Expiration: ” + new Date(c.getExpiration( )));

// If it is an HTTP connection, display some additional information.
if (c instanceof HttpURLConnection) {
HttpURLConnection h = (HttpURLConnection) c;
System.out.println(” Request Method: ” + h.getRequestMethod( ));
System.out.println(” Response Message: ” +h.getResponseMessage( ));
System.out.println(” Response Code: ” + h.getResponseCode( ));
}
}

/** Create a URL, call printinfo( ) to display information about it. */
public static void main(String[ ] args) {
try { printinfo(new URL(args[0])); }
catch (Exception e) {
System.err.println(e);
System.err.println(”Usage: java GetURLInfo “);
}
}
}

(more…)

LocalThread相关

May 1, 2007

1 ThreadLocal并非是一个线程的本地实现版本,它并不是一个Thread,而是thread local variable(线程局部变量)。
2 功用非常简单,就是为每一个使用该变量的线程都提供一个变量值的副本,是每一个线程都可以独立地改变自己的副本,而不会和其它线程的副本冲突。
3 ThreadLocal的接口:
Object get() ; // 返回当前线程的线程局部变量副本
protected Object initialValue(); // 返回该线程局部变量的当前线程的初始值
void set(Object value); // 设置当前线程的线程局部变量副本的值
4 ThreadLocal和其它所有的同步机制都是为了解决多线程中的对同一变量的访问冲突,在普通的同步机制中,是通过对象加锁来实现多个线程对同一变量的安全访问的。这时该变量是多个线程共享的,使用这种同步机制需要很细致地分析在什么时候对变量进行读写,什么时候需要锁定某个对象,什么时候释放该对象的锁等等很多。所有这些都是因为多个线程共享了资源造成的。ThreadLocal就从另一个角度来解决多线程的并发访问,ThreadLocal会为每一个线程维护一个和该线程绑定的变量的副本,从而隔离了多个线程的数据,每一个线程都拥有自己的变量副本,从而也就没有必要对该变量进行同步了。ThreadLocal提供了线程安全的共享对象,在编写多线程代码时,可以把不安全的整个变量封装进ThreadLocal,或者把该对象的特定于线程的状态封装进ThreadLocal。
当然ThreadLocal并不能替代同步机制,两者面向的问题领域不同。同步机制是为了同步多个线程对相同资源的并发访问,是为了多个线程之间进行通信的有效方式;而ThreadLocal是隔离多个线程的数据共享,从根本上就不在多个线程之间共享资源(变量),这样当然不需要对多个线程进行同步了。所以,如果你需要进行多个线程之间进行通信,则使用同步机制;如果需要隔离多个线程之间的共享冲突,可以使用ThreadLocal,这将极大地简化你的程序,使程序更加易读、简洁。

Java 线程(收集)

放了些重量级资料,希望这个服务器永远不会down掉吧,否则我会损失惨重的。。。。不行,还是自己挂个wordpress去。。。。。 (more…)