當前位置:首頁 » 操作系統 » 菜刀源碼

菜刀源碼

發布時間: 2022-05-12 05:35:37

1. 面向對象的三大特性,請用代碼說明三大特性

面向對象(Object Oriented,縮寫為OO)是現代軟體技術的精髓。從早期的SmallTalk到如日中天的Java,都滲透著面向對象思想。

OO具有三大特性:封裝性、繼承性和多態性。想掌握面向對象思想,就必須深入理解
其三大特性。這里我盡量少談概念,只用一個生活中的例子和一段代碼來解釋它們。

1、封裝性(Encapsulation)
所謂封裝,就是將某些東西包裝和隱藏起來,讓外界無法直接使用,只能通過某些特定的方式才能訪問。OO將萬物都視為「對象」(Object),任何對象都具有特性和行為。我們將其特性稱為「成員變數」 (MemberVarible),將其行為稱之為「成員函數"(Member Function),被封裝的特性只能通過特定的行為去訪問。
大家都見過旅館里常用的一種茶葉吧,就是用紙袋把茶葉包裝起來再系是一根線。用的時候只需要將其放在水杯里泡就行。這樣的好處是不會將茶葉渣和茶垢弄的滿杯子都是。
好!這就是一個封裝的例子。
我們喝茶的目的是享受茶葉的香冽;所以茶葉的味道(Flavour)就是茶葉所具有的最
重要特性之一;可是我們無法直接享受它的清香,因為被外面的紙袋「封裝」起來了。唯一的辦法就是「泡」(Dilute),將茶袋扔在開水中泡,它的味道就出來了,融入水中。
如果我們把袋裝茶葉看作一個對象的話,它提供了成員變數Flavour和成員函數Dilute
。並且Flavour是私有(Private)的,我們不能直接把它吞進肚子去,而只能通過成員函
數Dilute才能享受Flavour。
下面用C++代碼來描述這個例子:
Class CTea
{
Private:
Cstring m_Flavour; //味道
Cstring m_Color; //顏色
...... //等等其它屬性
Private:
Void CTea(); //構造函數
Void ~CTea(); //析構函數
Public:
Cstring Dilute();//沏茶
...... //等等其它方法
}
Cstring CTea::Dilute()
{
//怎樣泡出味道來的代碼
}
這就是封裝。通過將對象的某些屬性聲明為Private隱藏起來,只能使用其提供的特定
方法去訪問。

2、繼承(Inheritance)
如果只是封裝,那麼非面向對象語言也能部分的做到。比如在C中,用結構(Struct)、
VB中用自定義類型(Type)也能封裝一些變數。
OO最有吸引力的特性是繼承。通俗的說後代具有祖先的某些特點就叫繼承,當然後代還可以具有自己獨有的特徵。舉個例子吧,菜刀。
菜刀(cutlery)是鋼(Steel)做的,鋼是一種金屬(Metal),金屬則是大千世界裡的一種物質(Substance)。所以菜刀的一些特性可以追溯到物質具有的一般屬性。正是因為這個道理,MFC中所有類均從CObject繼承而來。
這就是繼承。菜刀直接繼承了鋼的特性,鋼又繼承了金屬的特性,......下面的代碼描
述了這種復雜而有獨特的繼承關系:
Class CSubstance
{
Private:
int m_color;
void CSubstance();
void ~CSubstance();
//......(我是學文科的,具體屬性說不上來)
}
Class CMetal:Public CSubstance
{
void CMetal();
void ~CMetal();
//......
}
Class CSteel:Public CMetal
{
void CSteel();
void ~CSteel();
//......
}
Class CCutlery:Public CSteel
{
private:
Cstring m_Blade;
void CCutlery();
void ~CCutlery();
//......
Public:
void Cut();
}
這里,CSubstance被稱為基類(Base class),其它被稱為衍生類(Derived class)。衍生類與基類是「Is kind of」的關系。子類與其祖先類之間復雜的函數調用關系不在本文討論之列。
繼承是一種樹狀的層次關系。子類在繼承祖先類的成員變數和成員函數的同時也可以
定義自己的成員變數和成員函數。比如,Metal 除了繼承了Substance的一般特性外,還具有自己的屬性諸如可延展性;CCutlery在繼承CSteel的特性後還具有自己的成員諸如「刀刃」(Blade)、「鋒利」(Sharpness)、行為有如「切」(Cut)等。
面向對象技術是對現實生活的抽象,你可以用生活中的經驗去思考程序設計的邏輯。

3、多態性(Polymorphism)
討論多態之前先要明白什麼是「虛擬」(Virtual)。C++/MFC就是用虛擬這種方式實現多態的。為什麼「虛擬」這個概念?看下邊的例子:
Class Cincect //昆蟲類
{
private:
int m_foot; //腳的數量
...... //其它成員變數
private:
void Cincect();
void ~Cincect();
public:
void Bite()//咬人
{
...... //怎樣咬人的代碼,比如張開嘴啃
}
}
我把Bite(咬)這個動作在基類中定義為一般化動作。可是,不是所有昆蟲咬
人的方法都一樣(況且還有的根本就不咬人呢,比如蜻蜓),比如蚊子是用嘴那個
吸管叮人而螞蟻是用嘴去夾。
從昆蟲這個類別衍生出以下兩個類別:Cant(螞蟻)、Cmosquito(蚊子)。
class Cant :public Cincect //螞蟻類
{
......
}
class Cmosquito :public Cincect //蚊子類
{
......
}
它們都繼承了Cincect的所有成員,當然也繼承了Bite()這個動作。現在就有問題了:
同樣繼承自昆蟲,當我們使用Bite()這個動作時怎麼才能區分螞蟻和蚊子各自的獨有的咬人方式呢?
方法之一是用「::」符號指明具體引用的是那一個,但這樣明顯失去了靈活性;
另一種方法就是「虛擬」。使用關鍵字virtual將Bite()聲明為虛擬函數,然後在每個
衍生類中重新定義,描述它們各自的咬人方法,調用的時候也不會都一種結果啦。於是上邊的例子可以改寫為:

Class Cincect //昆蟲類
{
private:
int m_foot; //腳的數量
...... //其它成員變數
private:
void Cincect();
void ~Cincect();
public:
virtual Bite(){}//咬人,但我們只聲明這個成員函數,
//卻讓它什麼動作都不做,讓衍生類自己去定
//義各自的咬人方法
}
class Cant :public Cincect //螞蟻類
{
......
virtual Bite();
}
Cant::Bite()
{
...... //螞蟻具體的咬人方式
}

class Cmosquito :public Cincect //蚊子類
{
......
virtual Bite();
}
Cmosquito::Bite()
{
...... //蚊子具體的咬人方式
}
所以,虛擬的目的是只在基類中將一般化動作聲明一個成員函數的原型而不做
具體定義,讓衍生類自己去定義。
這就是面向對象的特徵之三:多態性。基類的同一個成員在不同的衍生類中可以具
有不同的形態,更好地抽象和描述大千世界中的諸多「對象」。1.了解什麼是多態性

2.如何定義一個虛方法

3.如何重載一個虛方法

4.如何在程序中運用多態性

面向對象程序設計中的另外一個重要概念是多態性。在運行時,可以通過指向基類的指針,來調用實現派生類中的方法。 可以把一組對象放到一個數組中,然後調用它們的方法,在這種場合下,多態性作用就體現出來了,這些對象不必是相同類型的對象。當然,如果它們都繼承自某個類,你可以把這些派生類,都放到一個數組中。 如果這些對象都有同名方法,就可以調用每個對象的同名方法。本節課將向你介紹如何完成這些事情。

1.清單9-1. 帶有虛方法的基類:DrawingObject.cs

using System;
public class DrawingObject
{
public virtual void Draw()
{
Console.WriteLine("I'm just a generic drawing object.");
}
}

說明

清單9-1 定義了DrawingObject類。這是個可以讓其他對象繼承的基類。該類有一個名為Draw()的方法。Draw()方法帶有一個virtual修飾符,該修飾符表明:該基類的派生類可以重載該方法。DrawingObject類的 Draw()方法完成如下事情:輸出語句"I'm just a generic drawing object."到控制台。

2.清單9-2. 帶有重載方法的派生類:Line.cs, Circle.cs, and Square.cs

using System;
public class Line : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm a Line.");
}
}

public class Circle : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm a Circle.");
}
}

public class Square : DrawingObject
{
public override void Draw()
{
Console.WriteLine("I'm a Square.");
}
}

說明

清單9-2定義了三個類。這三個類都派生自DrawingObject類。每個類都有一個同名Draw()方法,這些Draw()方法中的每一個都有一個重載修飾符。重載修飾符可讓該方法在運行時重載其基類的虛方法,實現這個功能的條件是:通過基類類型的指針變數來引用該類。

3.清單9-3. 實現多態性的程序:DrawDemo.cs

using System;
public class DrawDemo
{
public static int Main(string[] args)
{
DrawingObject[] dObj = new DrawingObject[4];
dObj[0] = new Line();
dObj[1] = new Circle();
dObj[2] = new Square();
dObj[3] = new DrawingObject();
foreach (DrawingObject drawObj in dObj)
{
drawObj.Draw();
}
return 0;
}
}

說明

清單9-3演示了多態性的實現,該程序使用了在清單 9-1 和清單9-2中定義的類。在DrawDemo類中的Main()方法中,創建了一個數組, 數組元素是DrawingObject 類的對象。該數組名為dObj,是由四個DrawingObject類型的對象組成。

接下來, 初始化dObj數組, 由於Line, Circle和Square類都是DrawingObject類的派生類,所以這些類可以作為dObj數組元素的類型。 如果C#沒有這種功能,你得為每個類創建一個數組。繼承的性質可以讓派生對象當作基類成員一樣用,這樣就節省了編程工作量。

一旦數組初始化之後,接著是執行foreach循環,尋找數組中的每個元素。在每次循環中, dObj 數組的每個元素(對象)調用其Draw()方法。多態性體現在:在運行時,各自調用每個對象的Draw()方法。盡管dObj 數組中的引用對象類型是DrawingObject,這並不影響派生類重載DrawingObject 類的虛方法Draw()。 在dObj 數組中,通過指向DrawingObject 基類的指針來調用派生類中的重載的Draw()方法。

輸出結果是:

I'm a Line.
I'm a Circle.
I'm a Square.
I'm just a generic drawing object.

在DrawDemo 程序中,調用了每個派生類的重載的Draw()方法。 最後一行中,執行的是DrawingObject類的虛方法Draw()。這是因為運行到最後,數組的第四個元素是DrawingObject類的對象。

小結
現在對多態性有所了解之後,你可以在派生類中,實現一個重載基類虛方法的方法。虛方法和重載的派生類方法之間的關系就體現出C#的多態性。

2. 百度快照出現病毒怎麼處理

首先、查木馬,清除頁面木馬,不要覺得清空內容就是很好的解決辦法,因為你還要上傳的,網路都考慮了層,所以清空內容絕對不是最好的做法,在頁面內容不大變的情況下,把掛馬清除了(這個明顯一點的是打開源碼就可以看到,大部分JS掛馬做了隱藏處理,手動打開可能看不到掛馬,只有搜索蜘蛛來訪才可以看到,這個可以查看網路掛馬快照,或者用站長工具那個網路模擬抓取檢測源碼)

第二、如果查到問題,去除頁面掛馬,然後把網站加入網路雲監測,對全站進行掃描,如果是安全的就去網路申訴,但是有一點無論檢測是安全還是掛馬,都要對網站源碼程序進行檢查,查到木馬後門,一般黑站的都留有後門程序(比如菜刀一句話),這個一般人還真搞不定,建議你把源碼打包放進裝有安全狗的伺服器、或者電腦中進行代碼掃描,一般一句話木馬都可以查出來,當然你如果有其他掃描工具也可以用,總比一個文件打開好很多。

第三,就是對網站進行漏洞修補,比如如果是通用的CMS系統,就對程序進行更新,或者重新安裝新版本,一般人還真的修補不了,也不知道人家利用什麼漏洞滲透的,除非看到網站當天被滲透的日誌,還有跡可循,但是個人不建議你這么做,太麻煩了一般企業網站也沒必要做這些,把程序更新了,然後如果是是VPS、雲伺服器的話就安裝一個安全狗,把防禦機制稍微調高一點,能一定程度的防禦一些掛馬!

做完以上三步發現根本沒有問題,後來突然想起客戶前段時間申請換個網站伺服器,才恍然明白,原來由於ip不穩定造成的危險提示,這下才明白了問題的真正原因,馬上告訴客戶,要堅持每天更新信息,以便快速更新網路快照!果然,沒過幾天網路快照更新了,危險提示也沒有了!

3. QQ表情刀的代碼是什麼

/cd /
第一個菜刀 第二個普通刀

4. qq表情里菜刀的代碼,我想在網名中間加把菜刀啊!

/菜刀

5. BT什麼意思

BT為一種互聯網的P2P傳輸協議,全名「BitTorrent」,中文名「比特流」 ,已發展成一個有廣大開發者群體的開放式傳輸協議。BT下載為通過一個P2P下載軟體來實現的,具有下載的人越多下載速度越快的特點。

Bit Torrent協議:俗稱比特洪流、BT下載。用於對等網路中文件分享的網路協議的程序。BitTorrent專門為大容量文件的共享而設計,它採用了一種有點像傳銷的工作方式。



(5)菜刀源碼擴展閱讀

BT首先在上傳者端把一個文件分成了很多部分,用戶甲隨機下載了其中的一些部分,而用戶乙則隨機下載了另外一些部分。

這樣甲的BT就會根據情況(根據與不同電腦之間的網路連接速度自動選擇最快的一端)到乙的電腦上去拿乙已經下載好的部分,同樣乙的BT就會根據情況到甲的電腦上去拿甲已經下載好的部分,這樣不但減輕了伺服器端的負荷,也加快了雙方的下載速度。

實際上每個用戶在下載的同時,也在作為源在上傳(別人從電腦上拿那個文件的某個部分)。這種情況有效地利用了上行的帶寬,也避免了傳統的FTP大家都擠到伺服器上下載同一個文件的瓶頸。而加入下載的人越多,實際上傳的人也多,其他用戶下載的就越快,BT的優勢就在這里體現出來。

6. 網站文件中出現一句代碼,請問是什麼意思

通過上傳一句話木馬可以用中國菜刀等軟體獲取您網站根目錄,並且可以刪除修改您的網站源碼。

7. 怎麼用菜刀連接資料庫

如果想html寫出來,那這個回帖必須支持html,如果不支持,發出來的就是代碼源碼了。
如果是dz性質的論壇且支持html語言,點高級模式,然後點純文本,將html源碼貼上來,提交即可。

8. C++做一個小游戲,有源代碼的最好,謝謝

#include <iostream>
#include<fstream>
#include <ctime>
#include <cmath>
#include <stdlib.h>
#include<stdio.h> //時間 //文件
#include <string>
#define random(x)(rand()%x)
using namespace std;
void thunder(int Dif,int Row,int Column,char *USer)
{
int r,c,alls[22][22],backstage[22][22]={0};
srand((int)time(0));
for(r=1;r<=Row;r++) // 生成alls(0~1)1是雷
{
for(c=1;c<=Column;c++)
{
if(random(6)<1) {alls[r][c]=1;} else{alls[r][c]=0;};
}
};
for(r=0;r<=Row+1;r++) //生成 backstage(正確答案)
{
for(int c=0;c<=Column+1;c++)
{
if(alls[r][c]==1)
{
(int)backstage[r][c]='*'; //將1變為 * 代表雷
}
else
{
for(int i=r-1;i<=r+1;i++) //將0變為數字 (代表周圍雷數)
for(int j=c-1;j<=c+1;j++)
{

if(alls[i][j]!=alls[r][c]&&alls[i][j]==1){backstage[r][c]++;};
}
}; //else 結束
}; // for 結束
}; // for 結束
cout<<"======================*********================================"<<endl;
char surface[22][22]; //生成surface(用戶界面)
for(r=0;r<22;r++) //全部為零
for(c=0;c<22;c++)
{
surface[r][c]='0';
}
for(r=1;r<=Row;r++) //中間化 # 形成0包圍#的形式 (通過數 #-->(*||數字) 的個數 贏的時候停止循環)
for(c=1;c<=Column;c++)
{
surface[r][c]='#';
}
for(r=1;r<=Row;r++) //輸出 surface 界面 便於檢查
{
for(c=1;c<=Column;c++) {cout<<" "<<surface[r][c];};
cout<<endl;
};
cout<<"請按格式輸入"<<endl
<<"前兩個數字為坐標,最後一個數字「1」表示此位置為雷,「0」則表示不是。"<<endl
<<"如:1 3 1 表示一行三列是雷;2 4 0 表示二行四列不是雷"<<endl
<<"提示:當數字周圍雷都被掃出時,可再次按要求輸入此位置,可得到周圍數字。"<<endl;
long i=10000000L; //計算時間開始
clock_t start,finish;
double ration;
start=clock();
while(i--); //計算時間開始
int num=Row*Column; //計算#號個數
while(num!=0) //控制 是否點完所有位置
{
int x,y,judge;
cin>>x>>y>>judge;
if(alls[x][y]!=judge)
{
cout<<"you lose!!!"<<endl;
cout<<"The answer is:"<<endl;
for(r=1;r<=Row;r++) //輸了 輸出backstage 顯示正確答案
{
for(int c=1;c<=Column;c++)
{
cout<<" "<<(char)(backstage[r][c]==42?backstage[r][c]:backstage[r][c]+'0'); //輸出backstage
}
cout<<endl;
}
break;
}
else
{
if(alls[x][y]==1) {if(surface[x][y]=='#'){num--;}surface[x][y]='@'; } // 雷 判斷正確 顯示「@」;數「#」
else
{
if(backstage[x][y]!=0) // 數字 判斷正確 顯示數字
{
if(surface[x][y]=='#'){num--; surface[x][y]=backstage[x][y]+'0'; } // 數「#」
else
{
int lei_num=0;
for(int i=x-1;i<=x+1;i++) //數 數字周圍 雷的個數
for(int j=y-1;j<=y+1;j++)
{
if(surface[i][j]=='@')
lei_num++;
}
if(backstage[x][y]==lei_num) // 看數字周圍雷是否全部掃出 提示 顯示數字周圍
{
for(int i=x-1;i<=x+1;i++)
for(int j=y-1;j<=y+1;j++)
if(surface[i][j]=='#') //數「#」
{
surface[i][j]=backstage[i][j]+'0';
num--;
}
}
}
}
else // 數字為零時 顯示零周圍的零
{
if(surface[x][y]=='#'){num--;}; //數「#」
surface[x][y]=backstage[x][y]+'0';
for(int i=x-1;i<=x+1;i++) // 顯示零周圍的數字
for(int j=y-1;j<=y+1;j++)
if(surface[i][j]=='#') // 避免 死循環
{
surface[i][j]=backstage[i][j]+'0';
num--; //數「#」
}
for(int k=0;k<20;k++) //最多20層零 (點出最邊上的零)
{
for (int R=1;R<=Row;R++) //檢查所有零
for(int C=1;C<=Column;C++) //再次顯示零周圍的數字
{
if(surface[R][C]=='0')
{
for(int i=R-1;i<=R+1;i++)
for(int j=C-1;j<=C+1;j++)
{
if(surface[i][j]=='#') // 避免 死循環 數「#」
{
surface[i][j]=backstage[i][j]+'0';
num--;
}
}
}
} //匹配for 內
} //匹配 for 外
}//匹配else
}//匹配else
}//匹配els
cout<<endl;
cout<<"======================*********================================"<<endl;
for(r=1;r<=Row;r++) //輸出界面(已修改)
{
for(c=1;c<=Column;c++) {cout<<" "<<surface[r][c];};
cout<<endl;
};
} //匹配while
finish=clock(); //計算時間結束
ration=(double)(finish-start)/CLOCKS_PER_SEC; //時間變數
if(num==0) //所有
{
cout<<" You win! Congratulations!! "<<endl;
cout<<" Your time is: "<<ration<<endl;
if(Dif==1) //讀取 簡單掃雷 的存儲文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("掃雷 簡單.txt");
for(i=0;i<5;i++) //文件中信息導入到數組里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer; //本輪玩家信息
times[5]=ration;
double t1=0;
string t2;
for(int j=0;j<5;j++) //冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("掃雷 簡單.txt");
for(i=0;i<5;i++) //將前五名玩家信息存儲到文件中
{
cout<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
outf<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
}
outf.close();
}
if(Dif==2) //讀取 一般掃雷 的存儲文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("掃雷 一般.txt");
for(i=0;i<5;i++) //文件中信息導入到數組里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer; //本輪玩家信息
times[5]=ration;
double t1=0;
string t2;
for(int j=0;j<5;j++) //冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("掃雷 一般.txt");
for(i=0;i<5;i++) //將前五名玩家信息存儲到文件中 並輸出
{
cout<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
outf<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
}
outf.close();
}
if(Dif==3) //讀取 困難掃雷 的存儲文件
{
string Name;
string name[6];
double Time,rang;
double times[6];
int i=0;
ifstream inf("掃雷 困難.txt");
for(i=0;i<5;i++) //文件中信息導入到數組里
{
inf>>Name;inf>>rang>>Time;
name[i]=Name;
times[i]=Time;
}
inf.close();
name[5]=USer; //本輪玩家信息
times[5]=ration;
double t1=0;
string t2;
for(int j=0;j<5;j++) //冒泡排序法
{
for(i=0;i<5-j;i++)
{
if(times[i]>times[i+1])
{
t1=times[i];
times[i]=times[i+1];
times[i+1]=t1;
t2=name[i];
name[i]=name[i+1];
name[i+1]=t2;
}
}
}
ofstream outf("掃雷 困難.txt");
for(i=0;i<5;i++) //將前五名玩家信息存儲到文件中
{
cout<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
outf<<name[i]<<" "<<i+1<<" "<<times[i]<<endl;
}
outf.close();
}
}
}
void scale(int dif,char *User) //選擇難度
{
int row,column;
if(dif==1) {row=3;column=3;}
if(dif==2) {row=7;column=7;}
if(dif==3) {row=10;column=10;}
cout<<"The scale is: "<<row<<"*"<<column<<endl;
thunder(dif,row,column,User);
};
int main()
{
int Continue=1;
int difficulty;
char user[10];
cout<<" Welcom to the game! "<<endl
<<" 請輸入用戶名! "<<endl;
cin>>user;
while(Continue==1)
{
cout<<"=======================*******************======================="<<endl
<<" 請選擇難度! "<<endl
<<" 簡單——1 "<<endl
<<" 一般——2 "<<endl
<<" 困難——3 "<<endl;
cin>>difficulty;
scale(difficulty,user);
cout<<"繼續游戲——1 結束游戲——0"<<endl;
cin>>Continue;
}
return 0;
}
掃雷小游戲,自己編的代碼

9. 使用中國菜刀怎麼運行服務端的代碼

服務端只需要簡單的一行代碼.這絕對可以排入叉叉最喜歡的十大軟體排行榜。(Ps:在某些黑闊手中菜刀算得上是居家旅行,殺人越貨的必備神器),究竟

熱點內容
sql注入的過程 發布:2024-10-09 16:24:25 瀏覽:194
命令行ftp初始賬號密碼 發布:2024-10-09 16:24:24 瀏覽:290
腳本怎麼歸檔 發布:2024-10-09 16:08:07 瀏覽:296
雲平台搭建伺服器 發布:2024-10-09 16:03:47 瀏覽:636
用阿里雲搭建正向代理伺服器 發布:2024-10-09 15:53:07 瀏覽:506
手機qq空間緩存清理緩存 發布:2024-10-09 15:51:49 瀏覽:353
pc泰拉瑞亞伺服器ip 發布:2024-10-09 15:45:18 瀏覽:798
安卓怎麼延時 發布:2024-10-09 15:37:51 瀏覽:453
android音源 發布:2024-10-09 14:55:19 瀏覽:121
預編譯sql怎麼模糊查詢 發布:2024-10-09 14:31:24 瀏覽:217