當前位置:首頁 » 雲伺服器 » javahttp伺服器有什麼用

javahttp伺服器有什麼用

發布時間: 2022-11-20 18:43:34

Ⅰ http://127.0.0.1:8080在java中有什麼用

在java web 網頁開發測試使用, 通常你電腦此時已經有 類似 tomcat 伺服器端 ,weblogin 等服務端軟體運行;
http;//127.0.0.1 指的就是你的本機 。 8080 是http協議 的固定埠。
http://127.0.0.1:8080 是打開本機首頁 如tomcat 會打開tomcat歡迎頁面!

Ⅱ java的TCP和HTTP有什麼區別

TCP協議對應於傳輸層,而HTTP協議對應於應用層,從本質上來說,二者沒有可比性。Http協議是建立在TCP協議基礎之上的,當瀏覽器需要從伺服器獲取網頁數據的時候,會發出一次Http請求。Http會通過TCP建立起一個到伺服器的連接通道,當本次請求需要的數據完畢後,Http會立即將TCP連接斷開,這個過程是很短的。所以Http連接是一種短連接,是一種無狀態的連接。所謂的無狀態,是指瀏覽器每次向伺服器發起請求的時候,不是通過一個連接,而是每次都建立一個新的連接。如果是一個連接的話,伺服器進程中就能保持住這個連接並且在內存中記住一些信息狀態。而每次請求結束後,連接就關閉,相關的內容就釋放了,所以記不住任何狀態,成為無狀態連接。

Ⅲ 北大青鳥java培訓:http協議請求處理過程

隨著互聯網的不斷發展,用戶在訪問互聯網的時候使用的終端設備類型也在不斷的變化,但是這些都是基於http協議來實現的,下面我們就簡單分析一下,http發送請求的處理過程。
HTTP協議是基於TCP協議的,所以它使用面向連接的方式發送請求,通過stream二進制流的方式傳給對方。
當然,到了TCP層,它會把二進制流變成一個的報文段發送給伺服器。
在發送給每個報文段的時候,都需要對方有一個回應ACK,來保證報文可靠地到達了對方。
如果沒有回應,那麼TCP這一層會進行重新傳輸,直到可以到達。
同一個包有可能被傳了好多次,但是HTTP這一層不需要知道這一點,因為是TCP這一層在埋頭苦幹。
TCP層發送每一個報文的時候,都需要加上自己的地址(即源地址)和它想要去的地方(即目標地址),將這兩個信息放到IP頭裡面,交給IP層進行傳輸。
IP層需要查看目標地址和自己是否是在同一個區域網。
如果是,就發送ARP協議來請求這個目標地址對應的MAC地址,然後將源MAC和目標MAC放入MAC頭,發送出去即可。
如果不在同一個區域網,就需要發送到網關,還要需要發送ARP協議,來獲取網關的MAC地址,然後將源MAC和網關MAC放入MAC頭,發送出去。
網關收到包發現MAC符合,取出目標IP地址,根據路由協議找到下一跳的路由器,獲取下一跳路由器的MAC地址,將包發給下一跳路由器。
這樣路由器一跳一跳終於到達目標的區域網。
這個時候,後一跳的路由器能夠發現,目標地址就在自己的某一個出口的區域網上。
於是,在這個區域網上發送ARP,獲得這個目標地址的MAC地址,將包發出去。
目標的機器發現MAC地址符合,就將包收起來;發現IP地址符合,根據IP頭中協議項,知道自己上一層是TCP協議,於是解析TCP的頭,裡面有序列號,IT培訓http://www.kmbdqn.cn/建議需要看一看這個序列包是不是我要的,如果是就放入緩存中然後返回一個ACK,如果不是就丟棄。
TCP頭裡面還有埠號,HTTP的伺服器正在監聽這個埠號。
於是,目標機器自然知道是HTTP伺服器這個進程想要這個包,於是將包發給HTTP伺服器。
HTTP伺服器的進程看到,原來這個請求是要訪問一個網頁,於是就把這個網頁發給客戶端。

Ⅳ java開發介面利用http協議傳輸數據

5.1請求程序代碼
public void sendMessage() throws Exception {
System.out.println("調用servlet開始=================");
StringBuffer sendStr = new StringBuffer();
sendStr.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
sendStr.append("<report_data>");
sendStr.append("<request_req>953943547334</request_req>");
sendStr.append("<request_time>201204094324</request_time>");
sendStr.append("<request_param>");
sendStr.append("<query_month>201203</query_month>");
sendStr.append("</request_param>");
sendStr.append("</report_data>");

BufferedReader reader = null;

try {
String strMessage = "";
StringBuffer buffer = new StringBuffer();

// 接報文的地址
URL uploadServlet = new URL(
"http://localhost:9090/TestTransfers");

HttpURLConnection servletConnection = (HttpURLConnection) uploadServlet
.openConnection();
// 設置連接參數
servletConnection.setRequestMethod("POST");
servletConnection.setDoOutput(true);
servletConnection.setDoInput(true);
servletConnection.setAllowUserInteraction(true);

// 開啟流,寫入XML數據
OutputStream output = servletConnection.getOutputStream();
System.out.println("發送的報文:");
System.out.println(sendStr.toString());

output.write(sendStr.toString().getBytes());
output.flush();
output.close();

// 獲取返回的數據
InputStream inputStream = servletConnection.getInputStream();
reader = new BufferedReader(new InputStreamReader(inputStream));
while ((strMessage = reader.readLine()) != null) {
buffer.append(strMessage);
}

System.out.println("接收返回值:" + buffer);

} catch (java.net.ConnectException e) {
throw new Exception();
} finally {
if (reader != null) {
reader.close();
}

}
}
5.2響應程序代碼

public class TestTransfers extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}

protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {

//判斷請求報文是否來自代維系統的ip地址
String ip = request.getRemoteHost();

// 獲取收到的報文
BufferedReader reader = request.getReader();
String line = "";
StringBuffer inputString = new StringBuffer();
while ((line = reader.readLine()) != null) {
inputString.append(line);
}

//如有必要,可以在報文中增加其他驗證和加密的參數
//解析獲取到的報文,根據ip地址、其他驗證、加密等等來判斷請求報文的伺服器是否有許可權

//如果請求驗證合格,則根據請求的參數裝配返回的報文

// 要返回的報文
StringBuffer resultBuffer = new StringBuffer();
resultBuffer.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
resultBuffer.append("<report_data>");
resultBuffer.append("<respon_req>953947334</respon_req>");
resultBuffer.append("<respon_time>2012040943</respon_time>");
resultBuffer.append("<result>");
resultBuffer.append("<id>0000</id>");
resultBuffer.append("<comment>成功</comment>");
resultBuffer.append("</result>");
resultBuffer.append("<items>");
resultBuffer.append("<item>");
resultBuffer.append("<county>長治縣</county>");
resultBuffer.append("<company>鐵通</company>");
resultBuffer.append("<speciality>線路</speciality>");
resultBuffer.append("<personnel>王加和</personnel>");
resultBuffer.append("<begin_time>20120301000000</begin_time>");
resultBuffer.append("<end_time>20120331235959</end_time>");
resultBuffer.append("<plan_quantity>50</plan_quantity>");
resultBuffer.append("<checkout_quantity>40</checkout_quantity>");
resultBuffer.append("<patrol_rate>0.80</patrol_rate>");
resultBuffer.append("</item>");
//......
//......
//......
//循環組裝響應的報文

resultBuffer.append("</items>");
resultBuffer.append("</report_data>");

// 設置發送報文的格式
response.setContentType("text/xml");
response.setCharacterEncoding("UTF-8");

PrintWriter out = response.getWriter();
out.println(resultBuffer.toString());
out.flush();
out.close();
}
}

Ⅳ 如何用JAVA實現一個代理伺服器

代理伺服器的應用非常廣泛。比如,在企業網內部,它可以用來控制員工在工作時瀏覽的Internet內容,阻止員工訪問某些類型的內容或某些指定的網站。代理伺服器實際上扮演著瀏覽器和Web伺服器之間的中間人的角色,能夠對瀏覽器請求進行各種各樣的處理,能夠過濾廣告和Cookie,能夠預先提取Web頁面,使得瀏覽器訪問頁面的速度更快,等等。
一、基礎知識
不管以哪種方式應用代理伺服器,其監控HTTP傳輸的過程總是如下:
步驟一:內部的瀏覽器發送請求給代理伺服器。請求的第一行包含了目標URL。
步驟二:代理伺服器讀取該URL,並把請求轉發給合適的目標伺服器。
步驟三:代理伺服器接收來自Internet目標機器的應答,把應答轉發給合適的內部瀏覽器。

例如,假設有一個企業的雇員試圖訪問www.cn.ibm.com網站。如果沒有代理伺服器,雇員的瀏覽器打開的Socket通向運行這個網站的Web伺服器,從Web伺服器返回的數據也直接傳遞給雇員的瀏覽器。如果瀏覽器被配置成使用代理伺服器,則請求首先到達代理伺服器;隨後,代理伺服器從請求的第一行提取目標URL,打開一個通向www.cn.ibm.com的Socket。當www.cn.ibm.com返回應答時,代理伺服器把應答轉發給雇員的瀏覽器。
當然,代理伺服器並非只適用於企業環境。作為一個開發者,擁有一個自己的代理伺服器是一件很不錯的事情。例如,我們可以用代理伺服器來分析瀏覽器和Web伺服器的交互過程。測試和解決Web應用中存在的問題時,這種功能是很有用的。我們甚至還可以同時使用多個代理伺服器(大多數代理伺服器允許多個伺服器鏈接在一起使用)。例如,我們可以有一個企業的代理伺服器,再加上一個用java編寫的代理伺服器,用來調試應用程序。但應該注意的是,代理伺服器鏈上的每一個伺服器都會對性能產生一定的影響。
二、設計規劃
正如其名字所示,代理伺服器只不過是一種特殊的伺服器。和大多數伺服器一樣,如果要處理多個請求,代理伺服器應該使用線程。下面是一個代理伺服器的基本規劃:
等待來自客戶(Web瀏覽器)的請求。
啟動一個新的線程,以處理客戶連接請求。
讀取瀏覽器請求的第一行(該行內容包含了請求的目標URL)。
分析請求的第一行內容,得到目標伺服器的名字和埠。
打開一個通向目標伺服器(或下一個代理伺服器,如合適的話)的Socket。
把請求的第一行發送到輸出Socket。
把請求的剩餘部分發送到輸出Socket。
把目標Web伺服器返回的數據發送給發出請求的瀏覽器。

當然,如果考慮細節的話,情況會更復雜一些。實際上,這里主要有兩個問題要考慮:第一,從Socket按行讀取數據最適合進一步處理,但這會產生性能瓶頸;第二,兩個Socket之間的連接必需高效。有幾種方法可以實現這兩個目標,但每一種方法都有各自的代價。例如,如果要在數據進入的時候進行過濾,這些數據最好按行讀取;然而,大多數時候,當數據到達代理伺服器時,立即把它轉發出去更適合高效這一要求。另外,數據的發送和接收也可以使用多個獨立的線程,但大量地創建和拆除線程也會帶來性能問題。因此,對於每一個請求,我們將用一個線程處理數據的接收和發送,同時在數據到達代理伺服器時,盡可能快速地把它轉發出去。
三、實例
在用java編寫這個代理伺服器的過程中,注意可重用性是很重要的。因為這樣的話,當我們想要在另一個工程中以不同的方式處理瀏覽器請求時,可以方便地重用該代理伺服器。當然,我們必須注意靈活性和效率之間的平衡。
圖一顯示了本文代理伺服器實例(HttpProxy.java)的輸出界面,當瀏覽器訪問http://www-900.ibm.com/cn/時,代理伺服器向默認日誌設備(即標准輸出設備屏幕)輸出瀏覽器請求的URL。圖二顯示了SubHttpProxy的輸出。SubHttpProxy是HttpProxy的一個簡單擴展。
圖一

圖二

為了構造代理伺服器,我從Thread基類派生出了HttpProxy類(文章正文中出現的代碼是該類的一些片斷,完整的代碼請從本文最後下載)。HttpProxy類包含了一些用來定製代理伺服器行為的屬性,參見Listing 1和表一。
【Listing 1】
/*************************************
* 一個基礎的代理伺服器類
*************************************
*/
import java.net.*;
import java.io.*;
public class HttpProxy extends Thread {
static public int CONNECT_RETRIES=5;
static public int CONNECT_PAUSE=5;
static public int TIME-OUT=50;
static public int BUFSIZ=1024;
static public boolean logging = false;
static public OutputStream log=null;
// 傳入數據用的Socket
protected Socket socket;
// 上級代理伺服器,可選
static private String parent=null;
static private int parentPort=-1;
static public void setParentProxy(String name, int pport) {
parent=name;
parentPort=pport;
}
// 在給定Socket上創建一個代理線程。
public HttpProxy(Socket s) { socket=s; start(); }
public void writeLog(int c, boolean browser) throws IOException {
log.write(c);
}
public void writeLog(byte[] bytes,int offset,
int len, boolean browser) throws IOException {
for (int i=0;i<len;i++) writeLog((int)bytes[offset+i],browser);
}
// 默認情況下,日誌信息輸出到
// 標准輸出設備,
// 派生類可以覆蓋它
public String processHostName(String url, String host, int port, Socket sock) {
java.text.DateFormat cal=java.text.DateFormat.getDateTimeInstance();
System.out.println(cal.format(new java.util.Date()) + " - " +
url + " " + sock.getInetAddress()+"<BR>");
return host;
}

表一
變數/方法 說明
CONNECT_RETRIES 在放棄之前嘗試連接遠程主機的次數。
CONNECT_PAUSE 在兩次連接嘗試之間的暫停時間。
TIME-OUT 等待Socket輸入的等待時間。
BUFSIZ Socket輸入的緩沖大小。
logging 是否要求代理伺服器在日誌中記錄所有已傳輸的數據(true表示「是」)。
log 一個OutputStream對象,默認日誌常式將向該OutputStream對象輸出日誌信息。
setParentProxy 用來把一個代理伺服器鏈接到另一個代理伺服器(需要指定另一個伺服器的名稱和埠)。

當代理伺服器連接到Web伺服器之後,我用一個簡單的循環在兩個Socket之間傳遞數據。這里可能出現一個問題,即如果沒有可操作的數據,調用read方法可能導致程序阻塞,從而掛起程序。為防止出現這個問題,我用setSoTimeout方法設置了Socket的超時時間(參見Listing 2)。這樣,如果某個Socket不可用,另一個仍舊有機會進行處理,我不必創建一個新的線程。
【Listing 2】
// 執行操作的線程
public void run() {
String line;
String host;
int port=80;
Socket outbound=null;
try {
socket.setSoTimeout(TIMEOUT);
InputStream is=socket.getInputStream();
OutputStream os=null;
try {
// 獲取請求行的內容
line="";
host="";
int state=0;
boolean space;
while (true) {
int c=is.read();
if (c==-1) break;
if (logging) writeLog(c,true);
space=Character.isWhitespace((char)c);
switch (state) {
case 0:
if (space) continue;
state=1;
case 1:
if (space) {
state=2;
continue;
}
line=line+(char)c;
break;
case 2:
if (space) continue; // 跳過多個空白字元
state=3;
case 3:
if (space) {
state=4;
// 只分析主機名稱部分
String host0=host;
int n;
n=host.indexOf("//");
if (n!=-1) host=host.substring(n+2);
n=host.indexOf('/');
if (n!=-1) host=host.substring(0,n);
// 分析可能存在的埠號
n=host.indexOf(":");
if (n!=-1) {
port=Integer.parseInt(host.substring(n+1));
host=host.substring(0,n);
}
host=processHostName(host0,host,port,socket);
if (parent!=null) {
host=parent;
port=parentPort;
}
int retry=CONNECT_RETRIES;
while (retry--!=0) {
try {
outbound=new Socket(host,port);
break;
} catch (Exception e) { }
// 等待
Thread.sleep(CONNECT_PAUSE);
}
if (outbound==null) break;
outbound.setSoTimeout(TIMEOUT);
os=outbound.getOutputStream();
os.write(line.getBytes());
os.write(' ');
os.write(host0.getBytes());
os.write(' ');
pipe(is,outbound.getInputStream(),os,socket.getOutputStream());
break;
}
host=host+(char)c;
break;
}
}
}
catch (IOException e) { }
} catch (Exception e) { }
finally {
try { socket.close();} catch (Exception e1) {}
try { outbound.close();} catch (Exception e2) {}
}
}

和所有線程對象一樣,HttpProxy類的主要工作在run方法內完成(見Listing 2)。run方法實現了一個簡單的狀態機,從Web瀏覽器每次一個讀取字元,持續這個過程直至有足夠的信息找出目標Web伺服器。然後,run打開一個通向該Web伺服器的Socket(如果有多個代理伺服器被鏈接在一起,則run方法打開一個通向鏈裡面下一個代理伺服器的Socket)。打開Socket之後,run先把部分的請求寫入Socket,然後調用pipe方法。pipe方法直接在兩個Socket之間以最快的速度執行讀寫操作。
如果數據規模很大,另外創建一個線程可能具有更高的效率;然而,當數據規模較小時,創建新線程所需要的開銷會抵消它帶來的好處。
Listing 3顯示了一個很簡單的main方法,可以用來測試HttpProxy類。大部分的工作由一個靜態的startProxy方法完成(見Listing 4)。這個方法用到了一種特殊的技術,允許一個靜態成員創建HttpProxy類(或HttpProxy類的子類)的實例。它的基本思想是:把一個Class對象傳遞給startProxy類;然後,startProxy方法利用映像API(Reflection API)和getDeclaredConstructor方法確定該Class對象的哪一個構造函數接受一個Socket參數;最後,startProxy方法調用newInstance方法創建該Class對象。
【Listing 3】
// 測試用的簡單main方法
static public void main(String args[]) {
System.out.println("在埠808啟動代理伺服器\n");
HttpProxy.log=System.out;
HttpProxy.logging=false;
HttpProxy.startProxy(808,HttpProxy.class);
}
}

【Listing 4】
static public void startProxy(int port,Class clobj) {
ServerSocket ssock;
Socket sock;
try {
ssock=new ServerSocket(port);
while (true) {
Class [] sarg = new Class[1];
Object [] arg= new Object[1];
sarg[0]=Socket.class;
try {
java.lang.reflect.Constructor cons = clobj.getDeclaredConstructor(sarg);
arg[0]=ssock.accept();
cons.newInstance(arg); // 創建HttpProxy或其派生類的實例
} catch (Exception e) {
Socket esock = (Socket)arg[0];
try { esock.close(); } catch (Exception ec) {}
}
}
} catch (IOException e) {
}
}

利用這種技術,我們可以在不創建startProxy方法定製版本的情況下,擴展HttpProxy類。要得到給定類的Class對象,只需在正常的名字後面加上.class(如果有某個對象的一個實例,則代之以調用getClass方法)。由於我們把Class對象傳遞給了startProxy方法,所以創建HttpProxy的派生類時,就不必再特意去修改startProxy。(下載代碼中包含了一個派生得到的簡單代理伺服器)。
結束語
利用派生類定製或調整代理伺服器的行為有兩種途徑:修改主機的名字,或者捕獲所有通過代理伺服器的數據。processHostName方法允許代理伺服器分析和修改主機名字。如果啟用了日誌記錄,代理伺服器為每一個通過伺服器的字元調用writeLog方法。如何處理這些信息完全由我們自己決定——可以把它寫入日誌文件,可以把它輸出到控制台,或進行任何其他滿足我們要求的處理。writeLog輸出中的一個Boolean標記指示出數據是來自瀏覽器還是Web主機。
和許多工具一樣,代理伺服器本身並不存在好或者壞的問題,關鍵在於如何使用它們。代理伺服器可能被用於侵犯隱私,但也可以阻隔偷窺者和保護網路。即使代理伺服器和瀏覽器不在同一台機器上,我也樂意把代理伺服器看成是一種擴展瀏覽器功能的途徑。例如,在把數據發送給瀏覽器之前,可以用代理伺服器壓縮數據;未來的代理伺服器甚至還可能把頁面從一種語言翻譯成另一種語言……可能性永無止境。

Ⅵ apache http server 和 tomcat是什麼關系

1. Apache是web伺服器,Tomcat是應用(java)伺服器,它只是一個servlet容器,是Apache的擴展。
2. Apache和Tomcat都可以做為獨立的web伺服器來運行,但是Apache不能解釋java程序(jsp,serverlet)。
3. Apache是普通伺服器,本身只支持html即普通網頁。不過可以通過插件支持php,還可以與Tomcat連通(單向Apache連接Tomcat,就是說通過Apache可以訪問Tomcat資源。反之不然)
4. 兩者都是一種容器,只不過發布的東西不同:Apache是html容器,功能像IIS一樣;Tomcat是jsp/servlet容器,用於發布jsp及java的,類似的有IBM的webshere、EBA的Weblogic,sun的JRun等等。
5. Apache和Tomcat是獨立的,在通一台伺服器上可以集成。
Apache HTTP Server(簡稱Apache),是Apache軟體基金會的一個開放源代碼的網頁伺服器,可以在大多數電腦操作系統中運行,由於其具有的跨平台性和安全性,被廣泛使用,是最流行的Web伺服器端軟體之一。
Tomcat是Apache 軟體基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由於有了Sun 的參與和支持,最新的Servlet 和JSP 規范總是能在Tomcat 中得到體現,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 規范。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛並得到了部分軟體開發商的認可,成為目前比較流行的Web 應用伺服器。

Ⅶ java的http。定義的ps在程序是有什麼作用還有,ps.println(line);這句幹啥

PrintStream ps = new PrintStream("index.htm"))

你看見這句話了沒,
ps就是一個列印流,
ps.println(line);的意思就是 把index.html的內容給列印出來

Ⅷ java 如何搭建http伺服器

看你具體是想做什麼,現在現成的開源的java的http伺服器有很多,像tomcat之類的都有http伺服器功能,如果你只是單純的需要用的話,直接用tomcat就好了

但是如果你是做要自己用java實現一個http伺服器的話就要稍微麻煩一點

http伺服器,本質上還是基於tcpip協議的伺服器,首先用java的ServerSocket監聽一個埠(也可以使用開源的server組件,如quickserver之類的),然後對客戶端發上來的數據進行處理,這里就需要了解一下http協議了,因為上來的數據,都是按照http協議來組織的,你需要將請求數據解析後,將響應數據組織成http的響應,發回給客戶端。這樣一個簡單的http伺服器就實現了。

但是這個請求和響應都有很多種類,一個完整的http伺服器應該要都能夠支持,所以這裡面的工作量還是有一點的。

另外,上面說的http伺服器只是一個靜態的伺服器,如果你想讓你寫的服務具有動態功能,那你的伺服器還得提供javaee的容器功能,這樣做下去,沒准你也能寫一個tomcat出來了……

Ⅸ java中HttpGet和HttpClient和HttpResponse之間的聯系是如何的 每一個

使用HttpClient發送請求、接收響應時,需要HttpGet,HttpResponse。步驟如下

1. 創建HttpClient對象。

2. 創建請求方法的實例,並指定請求URL。如果需要發送GET請求,創建HttpGet對象;如果需要發送POST請求,創建HttpPost對象。

3. 如果需要發送請求參數,可調用HttpGet、HttpPost共同的
setParams(HetpParams
params)方法來添加請求參數;對於HttpPost對象而言,也可調用setEntity(HttpEntity
entity)方法來設置請求參數。

4. 調用HttpClient對象的execute(HttpUriRequest request)發送請求,該方法返回一個HttpResponse。

5. 調用HttpResponse的getAllHeaders()、
getHeaders(String
name)等方法可獲取伺服器的響應頭;調用HttpResponse的getEntity()方法可獲取HttpEntity對象,該對象包裝了伺服器
的響應內容。程序可通過該對象獲取伺服器的響應內容。

6. 釋放連接。無論執行方法是否成功,都必須釋放連接

Ⅹ java 中的 httpsession是干什麼用的

存儲用戶的對話狀態,所謂的對話狀態就是當前用戶和伺服器的一次持續的交互過程,在一次對話中可能發生多次http請求,session主要是為了彌補http請求單次對話的無記憶性。

熱點內容
編程軟體基礎培訓 發布:2025-01-11 12:20:20 瀏覽:287
imeet網站伺服器地址 發布:2025-01-11 12:15:35 瀏覽:331
ps緩存時間 發布:2025-01-11 11:55:36 瀏覽:865
雲伺服器容災 發布:2025-01-11 11:51:40 瀏覽:682
phparraysplice 發布:2025-01-11 11:51:40 瀏覽:320
android學習源碼 發布:2025-01-11 11:26:23 瀏覽:413
伺服器都壞了如何恢復 發布:2025-01-11 11:24:04 瀏覽:354
微博緩存的圖片能清理嗎 發布:2025-01-11 11:01:49 瀏覽:308
文字加密器 發布:2025-01-11 11:01:08 瀏覽:455
vc60非靜態編譯 發布:2025-01-11 10:51:32 瀏覽:615