java.version
|
Java Runtime Environment version |
java.vendor |
Java Runtime Environment vendor |
java.vendor.url |
Java vendor URL |
java.home |
Java installation directory |
java.vm.specification.version |
Java Virtual Machine specification version |
java.vm.specification.vendor |
Java Virtual Machine specification vendor |
java.vm.specification.name |
Java Virtual Machine specification name |
java.vm.version |
Java Virtual Machine implementation version |
java.vm.vendor |
Java Virtual Machine implementation vendor |
java.vm.name |
Java Virtual Machine implementation name |
java.specification.version |
Java Runtime Environment specification version |
java.specification.vendor |
Java Runtime Environment specification vendor |
java.specification.name |
Java Runtime Environment specification name |
java.class.version |
Java class format version number |
java.class.path |
Java class path |
java.library.path |
List of paths to search when loading libraries |
java.io.tmpdir |
Default temp file path |
java.compiler |
Name of JIT compiler to use |
java.ext.dirs |
Path of extension directory or directories |
os.name |
Operating system name |
os.arch |
Operating system architecture |
os.version |
Operating system version |
file.separator |
File separator ("/" on UNIX) |
path.separator |
Path separator (":" on UNIX) |
line.separator |
Line separator ("\n" on UNIX) |
user.name |
User's account name |
user.home |
User's home directory |
user.dir |
User's current working directory |
調用方法 : System.getProperty("user.dir")
一 安裝服務器端
下載Apache和SVN源碼包:httpd-2.0.52.tar.gz,subversion-1.1.1.tar.gz
(因為redhat 9默認安裝的Apache沒有并包含--enable-so選項,所以無法產生mod_dav_svn.沒有這個模塊,SVN就無法采用http方式運行,所以必須重新編譯新的Apache)
以root身份執行:
#tar zxvf httpd-2.0.52.tar.gz
#cd httpd-2.0.52
#./configure --enable-dav --enable-so --enable-maintainer-mode
#make
#make install
此時會產生/usr/local/apache2目錄
#tar zxvf subversion-1.1.1.tar.gz
#./configure --with-apxs=/usr/local/apache2/bin/apxs
#make
#make install
此時會自動在/usr/local/apache2/conf/httpd.conf添加
LoadModule dav_svn_module modules/mod_dav_svn.so
安裝完成后,運行svnserver --version確認版本為1.1.1。
SVN服務器安裝結束.
二 建立倉庫Repository
Subversion 的檔案庫是個中央倉儲, 用來存放任意數量項目的受版本控管數據,建立方法很簡單
#svnadmin create path/to/repos
舉個例子:#svnadmin create /home/mysvn
導入項目到版本中心庫
#svn import /tmp/project/ file:///data/repos -m "initial import"
三 運行服務器
Subversion服務器有兩種運行方式,一是可以作為Apache 2.0的一個模塊,以WebDAV/DeltaV協議與外界連通;另外,也可使用Subversion 自帶的小型服務器程序svnserve。該程序使用的是自帶的通訊協議,可以很容易地透過SSH以
以http方式運行
在/usr/local/apache2/conf/httpd.conf中加入:
<Location /svn/repository>
DAV svn
SVNPath /home/mysvn
</Location>
在服務器的瀏覽器中輸入網址:
http://localhost/svn/repository/
這時候,你會看到這樣一副界面:
這表明服務器已經以http方式正常運行了.
以svnserve方式運行
這種方式的運行又可以分為以下兩種(這和vsftp有些相似)
1) standalone mode
直接運行 #svnserve –d
運行 lsof -i :3690可以看到SVN服務器已經在運行
四 客戶機訪問
客戶機的訪問方法輿服務器的運行方式有直接關系
window客戶機:
1) 服務器以http方式運行
安裝完TortoiseSVN-1.1.1-UNICODE_svn-1.1.1.msi后,在你想工作的目錄下點擊右鍵,執行checkout,按上圖輸入即可。
2) 服務器以svnserve方式運行
同上的區別只是URL of repository變為 svn://svn服務器ip/home/mysvn
或者 svn+ssh://svn服務器ip/home/mysvn
(注意不是//svn服務器ip//svn/repository)
linux客戶機:
1) 服務器以http方式運行
執行 #svn checkout http: //svn服務器ip/svn/repository
2) 服務器以svnserve方式運行
執行 #svn checkout svn://svn服務器ip/home/mysvn
或者 #svn checkout svn+ssh://svn服務器ip/home/mysvn
五 客戶認證機制
這輿服務器的運行方式有關
服務器以svnserve方式運行
默認下客戶可以以匿名方式通過svn://方式任意訪問檔案庫,為了限制其權限,比如只允許讀操作,可以通過修改檔案庫conf子目錄中的svnseve.conf文件來實現。
#vi /home/mysvn/conf/svnseve.conf
修改[general]字段下內容為:
anon-access = read
如果設為anon-access = none,則匿名用戶不可以通過svn://方式訪問檔案庫
為了實現用戶認證,我們一般采用svn+ssh://訪問機制。
首先在svnseve.conf文件設置anon-access = none禁止匿名用戶通過svn://方式訪問檔案庫
在其后加入auth-access = write一行
auth-access 是限制有援權的使用者(使用svn+ssh:// 來登入) 的存取權限,我們設為是可以讀寫。
當用戶通過svn+ssh://訪問時,服務器會自動啟動ssh認證機制,要求用戶輸入密碼,對于window用戶來說還需要安裝第三方軟件openssh,才可以采用這種機制
服務器以http方式運行
比如我們想給 Sally 與 Harry 送交存取檔案庫的權限. 首先, 我們必須把它們加入到密碼檔案.
# ### 第一次: 以 -c 建立檔案
# htpasswd -c /etc/svn-auth-file harry
New password: *****
Re-type new password: *****
Adding password for user harry
# htpasswd /etc/svn-auth-file sally
New password: *******
Re-type new password: *******
Adding password for user sally
#
接著,在/usr/local/apache2/conf/httpd.conf的加入:
<Location /svn/repository >
DAV svn
SVNPath /home/mycvs
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/svn-auth-file
Require valid-user
</Location>
重新啟動 Apache后,如果有人要訪問SVN服務器,系統會要求他輸入用戶名和密碼。 只有輸入Sally 或Harry的用戶名和相應的密碼,才可以對檔案庫進行修改和訪問
六 添加用戶
打開/conf/目錄,打開svnserve.conf找到一下兩句:
# [general]
# password-db = passwd
去之每行開頭的#,其中第二行是指定身份驗證的文件名,即passwd文件
同樣打開passwd文件,將
# [users]
# harry = harryssecret
# sally = sallyssecret
這幾行的開頭#字符去掉,這是設置用戶,一行一個,存儲格式為“用戶名 = 密碼”,如可插入一行:admin = admin888,即為系統添加一個用戶名為admin,密碼為admin888的用戶
Java開源-Jdom對XML解析方法的使用指南
http://java.ccidnet.com/art/3565/20060313/475777_1.html XML的四種解析器原理及性能比較
http://bbs.chinacode.com/archiver/tid-352.html Java XML API 漫談
http://blog.iyi.cn/user/david/archives/2005/01/204.html使用 dom4j 解析 XML
http://blog.iyi.cn/user/david/archives/2005/01/204.html 用dom4j建立,修改XML文檔,并解決格式化輸出和中文問題
http://www.5inet.net/WebPrograming/XMLXSL/070556.html 原因分析:
由于FileWriter默認的輸出編碼是ANSI編碼,而Dom4j中的wirte方法提供的內容實際是以UTF-8保存的,因此造成了包括中文字符的XML文件無法正常閱讀。
解決方法:
不能使用簡單的FileWriter,而應該是使用一個能指定具體輸出編碼的Writer,在JDK的io包中, OutputStreamWriter可以指定輸出編碼。
正確的代碼如下:
java.io.OutputStream out=new java.io.FileOutputStream(fileName);
java.io.Writer wr=new java.io.OutputStreamWriter(out,"UTF-8");
doc.write(wr);
wr.close();
out.close();
簡化一下可以寫成下面的樣式:
java.io.Writer wr=new java.io.OutputStreamWriter(new java.io.FileOutputStream(fileName),"UTF-8");
doc.write(wr);
wr.close();
這篇文章主要實現的是j:通過socket傳遞Java對象。采用的方法就是對象序列化。方法是:通過socket建立c/s連接;通過ObjectOutputStream,ObjectOutputStream 讀寫對象。唯一需要留意的是傳遞的java 對象需要實現Serializable標記接口。代碼包括:java對象類,Employee; socket client類;server類。主要代碼如下:
java對象類:
import java.io.*;
import java.util.*;
public class Employee implements Serializable {
private int employeeNumber;
private String employeeName;
Employee(int num, String name) {
employeeNumber = num;
employeeName = name;
}
public int getEmployeeNumber() {
return employeeNumber;
}
public void setEmployeeNumber(int num) {
employeeNumber = num;
}
public String getEmployeeName() {
return employeeName;
}
public void setEmployeeName(String name) {
employeeName = name;
}
}
client類:
import java.io.*;
import java.net.*;
public class Client {
public static void main(String[] arg) {
try {
Employee joe = new Employee(150, "Joe");
System.out.println("employeeNumber= " + joe.getEmployeeNumber());
System.out.println("employeeName= " + joe.getEmployeeName());
Socket socketConnection = new Socket("127.0.0.1", 11111);
ObjectOutputStream clientOutputStream = new ObjectOutputStream(
socketConnection.getOutputStream());
ObjectInputStream clientInputStream = new ObjectInputStream(
socketConnection.getInputStream());
clientOutputStream.writeObject(joe);
joe = (Employee) clientInputStream.readObject();
System.out.println("employeeNumber= " + joe.getEmployeeNumber());
System.out.println("employeeName= " + joe.getEmployeeName());
clientOutputStream.close();
clientInputStream.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
Server類:
public class Server {
public static void main(String[] arg) {
Employee employee = null;
try {
ServerSocket socketConnection = new ServerSocket(11111);
System.out.println("Server Waiting");
Socket pipe = socketConnection.accept();
ObjectInputStream serverInputStream = new ObjectInputStream(pipe
.getInputStream());
ObjectOutputStream serverOutputStream = new ObjectOutputStream(pipe
.getOutputStream());
employee = (Employee) serverInputStream.readObject();
employee.setEmployeeNumber(256);
employee.setEmployeeName("John");
serverOutputStream.writeObject(employee);
serverInputStream.close();
serverOutputStream.close();
} catch (Exception e) {
System.out.println(e);
}
}
}
因為圖片時實時生成的,所以定時只刷新圖片,好像定時執行
document.getElementById("sample").src="1.gif";
不行,沒有更新,請問怎么解決呀??
緩存問題
var img = document.getElementById("sample");
img.src="1.gif?.tmp="+Math.random();
http://slacksite.com/other/ftp.html
FTP 的主動模式( active )和被動模式( passive )
FTP 是一種檔傳輸協定 (File Transfer Protocol),它的連線模式有兩種﹕
主動模式( active )和被動模式( passive )。以下說明 FTP 的連線是怎樣建立的﹕
在 active 模式下 (一般預設的模式)﹕
1. FTP client 開啟一個隨機選擇的TCP port 呼叫 FTP server 的 port 21請求連線。當順
利完成 Three-Way Handshake 之後,連線就成功建立,但這僅是命令通道的建立
。
2.當兩端需要傳送資料的時候,client 透過命令通道用一個 port command 告訴 server
,client可以用另一個TCP port 做數據通道。
3.然後 server 用 port 20 和剛才 client 所告知的 TCP port 建立數據連線。請注意:連
線方向這是從 server 到 client 的,TCP 封包會有一個 SYN flag。
4.然後 client 會返回一個帶 ACK flag的確認封包﹐並完成另一次的 Three-Way
Handshake 手續。這時候,數據通道才能成功建立。
5.開始數據傳送。
在 passive 模式下
1.FTP client 開啟一個隨機選擇的TCP port 呼叫 FTP server 的 port 21請求連線,並完
成命令通道的建立。
2.當兩端需要傳送資料的時候,client 透過命令通道送一個 PASV command 給
server,要求進入 passive 傳輸模式。
3.然後 server 像上述的正常模式之第 2 步驟那樣,挑一個TCP port ,並用命令通道
告訴 client。
4.然後 client 用另一個TCP port 呼叫剛才 server 告知的 TCP port 來建立數據通道。此
時封包帶 SYN flag。
5.server 確認後回應一個 ACK 封包。並完成所有交握手續?成功建立數據通道。
6.開始數據傳送。
在實際使用上, active mode 用來登入一些開設在主機上及沒有安裝防火牆的 FTP server,或是開設於 client side 的 FTP server!
Passive mode (簡稱 PASV)用來登入一些架設於防火牆保護下而又是開設於主機上的 FTP server!
如果您覺得太深奧而弄不清楚, 那就先用預設的 active mode 登入, 失敗改用 passive mode 登入就是了。
PS: 並不是每套 FTP 軟體都支援 passive mode 登入
http://forum.icst.org.tw/phpBB2/viewtopic.php?t=79
原PO那邊有不少的討論文章,想要多了解的人務必點選。
http://www.51swim.com/wayongjs.htm