導航:首頁 > 編程語言 > javaforever

javaforever

發布時間:2024-04-26 18:10:54

java SE 6 新特性: Java DB&n

年底 Sun 公司發布了 Java Standard Edition (Java SE )的最終正式版 代號 Mustang(野馬) 跟 Tiger(Java SE )相備冊陸比 Mustang 在性能方面有了不錯的提升 與 Tiger 在 API 庫方面的大幅度加強相比 雖然 Mustang 在 API 庫方面的新特性顯得不太多 但是也提供了許多實用和方便的功能 在腳本 WebService XML 編譯器 API 資料庫 JMX 網路和 Instrumentation 方面都有不錯的新特性和功能加強 本系列 文章主要介紹 Java SE 在 API 庫方面的部分新特性 通過一些例子和講解 幫助開發者在編程實踐當中更好的運用 Java SE 提高開發效率

本文是系列文章的第 篇 介紹了 Java SE 在資料庫編程方面的新特性

Java DB Java 里的資料庫

新安裝了 JDK 的程序員們也許會發現 除了傳統的 bin jre 等目錄 JDK 新增了一個名為 db 的目錄 這便是 Java 的新成員 Java DB 這是一個純 Java 實現 開源的資料庫管理系統(DBMS) 源於 Apache 軟體基金會(ASF)名下的項目 Derby 它只有 MB 大小 對比動輒上 G 的資料庫來說可謂袖珍 但這並不妨礙 Derby 功能齊備 支持幾乎大部分的資料庫應用所需要的特性 更難能可貴的是 依託於 ASF 強大的社區力量 Derby 得到了包括 IBM 和 Sun 等大公司以及全世界優秀程序員們的支持 這也難怪 Sun 公司會選擇其 版本納入到 JDK 中 作為內嵌的資料庫 這就好像為 JDK 注入了一股全新的活力 Java 程序員不再需要耗費大量精力安裝和配置資料庫 就能進行安全 易用 標准仿頃 並且免費的資料庫編程 在這一章中 我們將初窺 Java DB 的世界 來探究如何使用它編寫出功能豐富的程序

Hello Java DB 內嵌模式的Derby

既然有了內嵌(embedded)的資料庫 就讓我們從一個簡單的範例(代碼在 清單 中列出)開始 試著使用它吧 這個程序做了大多數資料庫應用都可能會做的操作 在 DBMS 中創建了一個名為 helloDB 的數據姿笑庫 創建了一張數據表 取名為 hellotable 向表內插入了兩條數據 然後 查詢數據並將結果列印在控制台上 最後 刪除表和資料庫 釋放資源

清單 HelloJavaDB 的代碼

public class HelloJavaDB { public static void main(String[] args) { try { // load the driver Class forName( apache derby jdbc EmbeddedDriver ) newInstance(); System out println( Load the embedded driver ); Connection conn = null; Properties props = new Properties(); props put( user user ); props put( password user ); //create and connect the database named helloDB conn=DriverManager getConnection( jdbc:derby:helloDB;create=true props); System out println( create and connect to helloDB ); conn setAutoCommit(false); // create a table and insert o records Statement s = conn createStatement(); s execute( create table hellotable(name varchar( ) score int) ); System out println( Created table hellotable ); s execute( insert into hellotable values( Ruth Cao ) ); s execute( insert into hellotable values ( Flora Shi ) ); // list the o records ResultSet rs = s executeQuery( SELECT name score FROM hellotable ORDER BY score ); System out println( name score ); while(rs next()) { StringBuilder builder = new StringBuilder(rs getString( )); builder append( ); builder append(rs getInt( )); System out println(builder toString()); } // delete the table s execute( drop table hellotable ); System out println( Dropped table hellotable ); rs close(); s close(); System out println( Closed result set and statement ); mit(); conn close(); System out println( Committed transaction and closed connection ); try { // perform a clean shutdown DriverManager getConnection( jdbc:derby:;shutdown=true ); } catch (SQLException se) { System out println( Database shut down normally ); } } catch (Throwable e) { // handle the exception } System out println( SimpleApp finished ); }}

隨後 我們在命令行(本例為 Windows 平台 當然 其它系統下稍作改動即可)下鍵入以下命令

清單 運行 HelloJavaDB 命令

java –cp ;%JAVA_HOME%dblibderby jar HelloJavaDB

程序將會按照我們預想的那樣執行 圖 是執行結果的一部分截屏

圖 HelloJavaDB 程序的執行結果

上述的程序和以往沒什麼區別 不同的是我們不需要再為 DBMS 的配置而勞神 因為 Derby 已經自動地在當前目錄下新建了一個名為 helloDB 的目錄 來物理地存儲數據和日誌 需要做的只是注意命名問題 在內嵌模式下驅動的名字應為 apache derby jdbc EmbeddedDriver 創建一個新資料庫時需要在協議後加入 create=true 另外 關閉所有資料庫以及 Derby 的引擎可以使用以下代碼

清單 關閉所有資料庫及 Derby 引擎

DriverManager getConnection( jdbc:derby:;shutdown=true );

如果只想關閉一個資料庫 那麼則可以調用

清單 關閉一個資料庫

DriverManager getConnection( jdbc:derby:helloDB;shutdown=true );

這樣 使用嵌入模式的 Derby 維護和管理資料庫的成本接近於 這對於希望專心寫代碼的人來說不失為一個好消息 然而有人不禁要問 既然有了內嵌模式 為什麼大多數的 DBMS 都沒有採取這樣的模式呢?不妨做一個小實驗 當我們同時在兩個命令行窗口下運行 HelloJavaDB 程序 結果一個的結果與剛才一致 而另一個卻出現了錯誤 如 圖 所示

圖 內嵌模式的局限

錯誤的原因其實很簡單 在使用內嵌模式時 Derby 本身並不會在一個獨立的進程中 而是和應用程序一起在同一個 Java 虛擬機(JVM)里運行 因此 Derby 如同應用所使用的其它 jar 文件一樣變成了應用的一部分 這就不難理解為什麼在 classpath 中加入 derby 的 jar 文件 我們的示常式序就能夠順利運行了 這也說明了只有一個 JVM 能夠啟動資料庫 而兩個跑在不同 JVM 實例里的應用自然就不能夠訪問同一個資料庫了

鑒於上述的局限性 和來自不同 JVM 的多個連接想訪問一個資料庫的需求 下一節將介紹 Derby 的另一種模式 網路伺服器(Neork Server)

網路伺服器模式

如上所述 網路伺服器模式是一種更為傳統的客戶端/伺服器模式 我們需要啟動一個 Derby 的網路伺服器用於處理客戶端的請求 不論這些請求是來自同一個 JVM 實例 還是來自於網路上的另一台機器 同時 客戶端使用 DRDA(Distributed Relational Database Architecture)協議連接到伺服器端 這是一個由 The Open Group 倡導的資料庫交互標准 圖 說明了該模式的大體結構

由於 Derby 的開發者們努力使得網路伺服器模式與內嵌模式之間的差異變小 使得我們只需簡單地修改 清單 中的程序就可以實現 如 清單 所示 我們在 HelloJavaDB 中增添了一個新的函數和一些字元串變數 不難看出 新的代碼只是將一些在 上一節中特別指出的字元串進行了更改 驅動類為 apache derby jdbc ClientDriver 而連接資料庫的協議則變成了 jdbc:derby://localhost: / 這是一個類似 URL 的字元串 而事實上 Derby 網路的客戶端的連接格式為 jdbc:derby://server[:port]/databaseName[;attributeKey=value] 在這個例子中 我們使用了最簡單的本地機器作為伺服器 而埠則是 Derby 默認的 埠

圖 Derby 網路伺服器模式架構

清單 網路伺服器模式下的 HelloJavaDB

public class HelloJavaDB { public static String driver = apache derby jdbc EmbeddedDriver ; public static String protocol = jdbc:derby: ; public static void main(String[] args) { // same as before } private static void parseArguments(String[] args) { if (args length == || args length > ) { return; } if (args[ ] equalsIgnoreCase( derbyclient )) { framework = derbyclient ; driver = apache derby jdbc ClientDriver ; protocol = jdbc:derby://localhost: / ; } }}

當然 僅僅有客戶端是不夠的 我們還需要啟動網路伺服器 Derby 中控制網路伺服器的類是 apache derby drda NeorkServerControl 因此鍵入以下命令即可 如果想了解 NeorkServerControl 更多的選項 只要把 start 參數去掉就可以看到幫助信息了 關於網路伺服器端的實現 都被 Derby 包含在 derbynet jar 里

清單 啟動網路伺服器

java cp ; C:Program FilesJavajdk dblibderby jar ; C:Program FilesJavajdk dblibderbynet jar apache derby drda NeorkServerControl start

相對應的 網路客戶端的實現被包含在 derbyclient jar 中 所以 只需要在 classpath 中加入該 jar 文件 修改後的客戶端就可以順利地讀取數據了 再一次嘗試著使用兩個命令行窗口去連接資料庫 就能夠得到正確的結果了 如果不再需要伺服器 那麼使用 NeorkServerControl 的 shutdown 參數就能夠關閉伺服器

更多

至此 文章介紹了 Java SE 中的新成員 Java DB(Derby) 也介紹了如何在內嵌模式以及網路伺服器模式下使用 Java DB 當然這只是淺嘗輒止 更多高級的選項還需要在 Sun 和 Derby 的文檔中尋找 在這一章的最後 我們將簡單介紹幾個 Java DB 的小工具來加快開發速度 它們都位於 apache derby tools 包內 在開發過程中需要獲取信息或者測試可以用到

ij 一個用來運行 SQL 腳本的工具 dblook 為 Derby 資料庫作模式提取(Schema extraction) 生成 DDL 的工具 sysinfo 顯示系統以及 Derby 信息的工具類

JDBC 新功能 新 API

如果說上一章介紹了 Java 中的一個新成員 它本來就存在 但是沒有被加入進 JDK 那麼這一章 我們將關注在 JDBC 中又增加了哪些新功能以及與之相對應的新 API

自動載入驅動

在 JDBC 之前 編寫 JDBC 程序都需要加上以下這句有點醜陋的代碼

清單 注冊 JDBC 驅動

Class forName( apache derby jdbc EmbeddedDriver ) newInstance();

Java sql DriverManager 的內部實現機制決定了這樣代碼的出現 只有先通過 Class forName 找到特定驅動的 class 文件 DriverManager getConnection 方法才能順利地獲得 Java 應用和資料庫的連接 這樣的代碼為編寫程序增加了不必要的負擔 JDK 的開發者也意識到了這一點 從 Java 開始 應用程序不再需要顯式地載入驅動程序了 DriverManager 開始能夠自動地承擔這項任務 作為試驗 我們可以將 清單 中的相關代碼刪除 重新編譯後在 JRE 下運行 結果和原先的程序一樣

好奇的讀者也許會問 DriverManager 為什麼能夠做到自動載入呢?這就要歸功於一種被稱為 Service Provider 的新機制 熟悉 Java 安全編程的程序員可能對其已經是司空見慣 而它現在又出現在 JDBC 模塊中 JDBC 的規范規定 所有 JDBC 的驅動 jar 文件必須包含一個 java sql Driver 它位於 jar 文件的 META INF/services 目錄下 這個文件里每一行便描述了一個對應的驅動類 其實 編寫這個文件的方式和編寫一個只有關鍵字(key)而沒有值(value)的 properties 文件類似 同樣地 # 之後的文字被認為是注釋 有了這樣的描述 DriverManager 就可以從當前在 CLASSPATH 中的驅動文件中找到 它應該去載入哪些類 而如果我們在 CLASSPATH 里沒有任何 JDBC 的驅動文件的情況下 調用 清單 中的代碼會輸出一個 sun jdbc odbc JdbcOdbcDriver 類型的對象 而仔細瀏覽 JDK 的目錄 這個類型正是在 %JAVA_HOME%/jre/lib/resources jar 的 META INF/services 目錄下的 java sql Driver 文件中描述的 也就是說 這是 JDK 中默認的驅動 而如果開發人員想使得自己的驅動也能夠被 DriverManager 找到 只需要將對應的 jar 文件加入到 CLASSPATH 中就可以了 當然 對於那些 JDBC 之前的驅動文件 我們還是只能顯式地去載入了

清單 羅列本地機器上的 JDBC 驅動

Enumeration<Driver> drivers = DriverManager getDrivers();while(drivers hasMoreElements()) { System out println(drivers nextElement());}

RowId

熟悉 DB Oracle 等大型 DBMS 的人一定不會對 ROWID 這個概念陌生 它是數據表中一個 隱藏 的列 是每一行獨一無二的標識 表明這一行的物理或者邏輯位置 由於 ROWID 類型的廣泛使用 Java SE 中新增了 java sql RowId 的數據類型 允許 JDBC 程序能夠訪問 SQL 中的 ROWID 類型 誠然 不是所有的 DBMS 都支持 ROWID 類型 即使支持 不同的 ROWID 也會有不同的生命周期 因此使用 DatabaseMetaData getRowIdLifetime 來判斷類型的生命周期不失為一項良好的實踐經驗 我們在 清單 的程序獲得連接之後增加以下代碼 便可以了解 ROWID 類型的支持情況

清單 了解 ROWID 類型的支持情況

DatabaseMetaData meta = conn getMetaData();System out println(meta getRowIdLifetime());

Java SE 的 API 規范中 java sql RowIdLifetime 規定了 種不同的生命周期 ROWID_UNSUPPORTED ROWID_VALID_FOREVER ROWID_VALID_OTHER ROWID_VALID_SESSION 和 ROWID_VALID_TRANSACTION 從字面上不難理解它們表示了不支持 ROWID ROWID 永遠有效等等 具體的信息 還可以參看相關的 JavaDoc 讀者可以嘗試著連接 Derby 進行試驗 會發現運行結果是 ROWID_UNSUPPORTED 即 Derby 並不支持 ROWID

既然提供了新的數據類型 那麼一些相應的獲取 更新數據表內容的新 API 也在 Java 中被添加進來 和其它已有的類型一樣 在得到 ResultSet 或者 CallableStatement 之後 調用 get/set/update 方法得到/設置/更新 RowId 對象 示例的代碼如 清單 所示

清單 獲得/設置 RowId 對象

// Initialize a pstmt = connection prepareStatement( SELECT rowid name score FROM hellotable WHERE rowid = ? );// Bind rowid into prepared statement pstmt setRowId( rowid);// Execute the statementResultSet rset = pstmt executeQuery(); // List the recordswhile(rs next()) { RowId id = rs getRowId( ); // get the immutable rowid object String name = rs getString( ); int score = rs getInt( );}

鑒於不同 DBMS 的不同實現 RowID 對象通常在不同的數據源(datasource)之間並不是可移植的 因此 JDBC 的 API 規范並不建議從連接 A 取出一個 RowID 對象 將它用在連接 B 中 以避免不同系統的差異而帶來的難以解釋的錯誤 而至於像 Derby 這樣不支持 RowId 的 DBMS 程序將直接在 setRowId 方法處拋出

SQLXML

SQL 標准引入了 SQL/XML 作為 SQL 標準的擴展 SQL/XML 定義了 SQL 語言怎樣和 XML 交互 如何創建 XML 數據 如何在 SQL 語句中嵌入 XQuery 表達式等等 作為 JDBC 的一部分 Java 增加了 java sql SQLXML 的類型 JDBC 應用程序可以利用該類型初始化 讀取 存儲 XML 數據 java sql Connection createSQLXML 方法就可以創建一個空白的 SQLXML 對象 當獲得這個對象之後 便可以利用 setString setBinaryStream setCharacterStream 或者 setResult 等方法來初始化所表示的 XML 數據 以 setCharacterStream 為例 清單 表示了一個 SQLXML 對象如何獲取 java io Writer 對象 從外部的 XML 文件中逐行讀取內容 從而完成初始化

清單 利用 setCharacterStream 方法來初始化 SQLXML 對象

SQLXML xml = con createSQLXML();Writer writer = xml setCharacterStream();BufferedReader reader = new BufferedReader(new FileReader( test xml ));String line= null;while((line = reader readLine() != null) { writer write(line);}

由於 SQLXML 對象有可能與各種外部的資源有聯系 並且在一個事務中一直持有這些資源 為了防止應用程序耗盡資源 Java 提供了 free 方法來釋放其資源 類似的設計在 java sql Array Clob 中都有出現

至於如何使用 SQLXML 與資料庫進行交互 其方法與其它的類型都十分相似 可以參照 RowId 一節 中的例子在 Java SE 的 API 規范中找到 SQLXML 中對應的 get/set/update 方法構建類似的程序 此處不再贅述

SQLExcpetion 的增強

在 Java SE 之前 有關 JDBC 的異常類型不超過 個 這似乎已經不足以描述日漸復雜的資料庫異常情況 因此 Java SE 的設計人員對以 java sql SQLException 為根的異常體系作了大幅度的改進 首先 SQLException 新實現了 Iterable<Throwable> 介面 清單 實現了 清單 程序的異常處理機制 這樣簡潔地遍歷了每一個 SQLException 和它潛在的原因(cause)

清單 SQLException 的 for each loop

// Java codecatch (Throwable e) { if (e instanceof SQLException) { for(Throwable ex : (SQLException)e ){ System err println(ex toString()); } }}

此外 圖 表示了全部的 SQLException 異常體系 除去原有的 SQLException 的子類 Java 中新增的異常類被分為 種 SQLReoverableException SQLNonTransientException SQLTransientException 在 SQLNonTransientException 和 SQLTransientException 之下還有若乾子類 詳細地區分了 JDBC 程序中可能出現的各種錯誤情況 大多數子類都會有對應的標准 SQLState 值 很好地將 SQL 標准和 Java 類庫結合在一起

圖 SQLException 異常體系

在眾多的異常類中 比較常見的有 用來表示 JDBC 驅動不支持某項 JDBC 的特性 例如在 Derby 下運行 清單 中的程序 就可以發現 Derby 的驅動並不支持 RowId 的特性 另外值得一提的是 SQLClientInfoException 直接繼承自 SQLException 表示當一些客戶端的屬性不能被設置在一個資料庫連接時所發生的異常

小結 更多新特性與展望

在本文中 我們已經向讀者介紹了 Java SE 中 JDBC 最重要的一些新特性 它們包括嵌在 JDK 中的 Java DB (Derby)和 JDBC 的一部分 當然 還有很多本文還沒有覆蓋到的新特性 比如增加了對 SQL 語言中 NCHAR NVARCHAR LONGNVARCHAR 和 NCLOB 類型的支持 在資料庫連接池的環境下為管理 Statement 對象提供更多靈活 便利的方法等

lishixin/Article/program/Java/JSP/201311/19343

❷ 請問JAVA中正則表達式匹配怎麼實現的!

Java中正則表達式匹配的語法規則:

packageorg.luosijin.test;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;

/**
*正則表達式
*@versionV5.0
*@authorAdmin
*@date2015-7-25
*/
publicclassRegex{

/**
*@paramargs
*@authorAdmin
*@date2015-7-25
*/

publicstaticvoidmain(String[]args){
Patternpattern=Pattern.compile("b*g");
Matchermatcher=pattern.matcher("bbg");
System.out.println(matcher.matches());
System.out.println(pattern.matches("b*g","bbg"));
//驗證郵政編碼
System.out.println(pattern.matches("[0-9]{6}","200038"));
System.out.println(pattern.matches("//d{6}","200038"));
//驗證電話號碼
System.out.println(pattern.matches("[0-9]{3,4}//-?[0-9]+","02178989799"));
getDate("Nov10,2009");
charReplace();
//驗證身份證:判斷一個字元串是不是身份證號碼,即是否是15或18位數字。
System.out.println(pattern.matches("^//d{15}|//d{18}$","123456789009876"));
getString("D:/dir1/test.txt");
getChinese("welcometochina,江西奉新,welcome,你!");
validateEmail("[email protected]");
}
/**
*日期提取:提取出月份來
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetDate(Stringstr){
StringregEx="([a-zA-Z]+)|//s+[0-9]{1,2},//s*[0-9]{4}";
Patternpattern=Pattern.compile(regEx);
Matchermatcher=pattern.matcher(str);
if(!matcher.find()){
System.out.println("日期格式錯誤!");
return;
}
System.out.println(matcher.group(1));//分組的索引值是從1開始的,所以取第一個分組的方法是m.group(1)而不是m.group(0)。
}
/**
*字元替換:本實例為將一個字元串中所有包含一個或多個連續的「a」的地方都替換成「A」。
*
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidcharReplace(){
Stringregex="a+";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher("okaaaaLetmeAseeaaaaabooa");
Strings=matcher.replaceAll("A");
System.out.println(s);
}
/**
*字元串提取
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetString(Stringstr){
Stringregex=".+/(.+)$";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(str);
if(!matcher.find()){
System.out.println("文件路徑格式不正確!");
return;
}
System.out.println(matcher.group(1));
}
/**
*中文提取
*@paramstr
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidgetChinese(Stringstr){
Stringregex="[//u4E00-//u9FFF]+";//[//u4E00-//u9FFF]為漢字
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(str);
StringBuffersb=newStringBuffer();
while(matcher.find()){
sb.append(matcher.group());
}
System.out.println(sb);
}
/**
*驗證Email
*@paramemail
*@authorAdmin
*@date2015-7-25
*/
publicstaticvoidvalidateEmail(Stringemail){
Stringregex="[0-9a-zA-Z]+@[0-9a-zA-Z]+//.[0-9a-zA-Z]+";
Patternpattern=Pattern.compile(regex);
Matchermatcher=pattern.matcher(email);
if(matcher.matches()){
System.out.println("這是合法的Email");
}else{
System.out.println("這是非法的Email");
}
}
}

❸ 為什麼java中生成32位隨機ID永遠不會重復

java對象的散列碼hashcode,有32位,有40億的空間。
「永遠不會重復」,沒有說永遠,好的散列函數在盡可能大的空間不重復。
個人認為。
1、可能重復,但重復後應該有處理機制。不擔心重復。
2、在對象達到相當多的時候(比如10億個),重復的幾率才會變大。但實際使用上實時超過十萬個對象的情況都不多。即很難重復。

❹ 為什麼java中生成32位隨機ID永遠不會重復。

UUID(Universally Unique Identifier)全局唯一標識符,是指在一台機器上生成的數字,它保證對在

同一時空中的所有機器都是唯一的。按照開放軟體基金會(OSF)制定的標准計算,用到了乙太網卡地址

、納秒級時間、晶元ID碼和許多可能的數字。由以下幾部分的組合:當前日期和時間(UUID的第一個部

分與時間有關,如果你在生成一個UUID之後,過幾秒又生成一個UUID,則第一個部分不同,其餘相同)

,時鍾序列,全局唯一的IEEE機器識別號(如果有網卡,從網卡獲得,沒有網卡以其他方式獲得),

UUID的唯一缺陷在於生成的結果串會比較長。

❺ java如何生成12位永遠不重復的數字

Calendar calendar = Calendar.getInstance();

System.out.println("現在汪搏:"+calendar.getTime().getTime());

calendar.add(Calendar.YEAR, 10);

System.out.println("10年後:"+calendar.getTime().getTime());

時間戳高並發還是會有重復的,你應該每獲取一次加1的方法生成。乎畝用鎖對象或者把方法聲明為synchronized保證並發也不會重復。如果有用資料庫,也可以用資料庫提供的sequence來幫你生成。

(5)javaforever擴展閱讀:

當編輯並運行一個Java程序時,需要同時涉及到這四種方面。使用文字編輯軟體(例如記事本、寫字板、UltraEdit等)或集成開發環境(Eclipse、MyEclipse等)在Java源文件中定義不同的類;

通過調用類(這些類實現了Java API)中的方法來訪問資源系統,把源文件編譯生成一種二進制中間碼,存儲在class文件中,然後再通過運行與操作系統平台環境相對應的Java虛擬機來運行class文件,執行編譯產生的位元組碼,調用class文困頃祥件中實現的方法來滿足程序的Java API調用。

閱讀全文

與javaforever相關的資料

熱點內容
穿越在很多電影的小說 瀏覽:524
angularjs數據加密 瀏覽:523
k66單片機 瀏覽:735
鴻蒙文件夾如何自動歸類 瀏覽:666
慧醫通醫生端安卓手機怎麼下載 瀏覽:699
電影放到安卓手機哪個文件夾 瀏覽:192
VT命令 瀏覽:590
ftp鏈接到linux伺服器地址 瀏覽:479
美國大尺度青春電影 瀏覽:21
李采譚演醫生的電影名稱 瀏覽:409
移動辦公app第一次登錄伺服器地址 瀏覽:239
日本功夫電影 瀏覽:57
文件包文件夾 瀏覽:592
主角每次死亡都會變成另一個人 瀏覽:807
浪潮伺服器如何調整憑證的尺寸 瀏覽:908
監控源碼怎麼打開 瀏覽:597
88影視打不開了 瀏覽:515
青島辦離婚用什麼app 瀏覽:738
查詢坐標命令 瀏覽:991
教孩子學編程ppt 瀏覽:813