當前位置:首頁 » 編程軟體 » hadoop編程

hadoop編程

發布時間: 2022-06-28 00:48:05

❶ 怎麼做hadoop編程

自定義 MR 實現如下邏輯

proct_no lac_id moment start_time user_id county_id staytime city_id13429100031 22554 8 2013-03-11 08:55:19.151754088 571 571 282 571
13429100082 22540 8 2013-03-11 08:58:20.152622488 571 571 270 571
13429100082 22691 8 2013-03-11 08:56:37.149593624 571 571 103 571
13429100087 22705 8 2013-03-11 08:56:51.139539816 571 571 220 571
13429100087 22540 8 2013-03-11 08:55:45.150276800 571 571 66 571
13429100082 22540 8 2013-03-11 08:55:38.140225200 571 571 133 571
13429100140 26642 9 2013-03-11 09:02:19.151754088 571 571 18 571
13429100082 22691 8 2013-03-11 08:57:32.151754088 571 571 287 571
13429100189 22558 8 2013-03-11 08:56:24.139539816 571 571 48 571
13429100349 22503 8 2013-03-11 08:54:30.152622440 571 571 211 5711234567891011

欄位解釋:
proct_no:用戶手機號;
lac_id:用戶所在基站;
start_time:用戶在此基站的開始時間;
staytime:用戶在此基站的逗留時間。
需求描述:
根據 lac_id 和 start_time 知道用戶當時的位置,根據 staytime 知道用戶各個基站的逗留時長。根據軌跡合
並連續基站的 staytime。最終得到每一個用戶按時間排序在每一個基站駐留時長。
期望輸出舉例:

13429100082 22540 8 2013-03-11 08:58:20.152622488 571 571 270 571
13429100082 22691 8 2013-03-11 08:56:37.149593624 571 571 390 571
13429100082 22540 8 2013-03-11 08:55:38.140225200 571 571 133 571
13429100087 22705 8 2013-03-11 08:56:51.139539816 571 571 220 571
13429100087 22540 8 2013-03-11 08:55:45.150276800 571 571 66 57112345

分析上面的結果:
第一列升序,第四列時間降序。因此,首先需要將這兩列抽取出來,然後自定義排序。

實現如下:

package FindFriend;import java.io.DataInput;import java.io.DataOutput;import java.io.IOException;import java.net.URI;import java.net.URISyntaxException;import java.util.regex.Matcher;import java.util.regex.Pattern;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.NullWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.io.WritableComparable;import org.apache.hadoop.maprece.Job;import org.apache.hadoop.maprece.Mapper;import org.apache.hadoop.maprece.Recer;import org.apache.hadoop.maprece.lib.input.FileInputFormat;import org.apache.hadoop.maprece.lib.output.FileOutputFormat;public class StringComp2 {
final static String INPUT_PATH = "hdfs://master:8020/liguodong/test2"; final static String OUT_PATH = "hdfs://master:8020/liguodong/test2out"; public static void main(String[] args) throws IOException,
URISyntaxException, ClassNotFoundException, InterruptedException {
Configuration conf = new Configuration(); final FileSystem fs = FileSystem.get(new URI(INPUT_PATH), conf); if(fs.exists(new Path(OUT_PATH))){
fs.delete(new Path(OUT_PATH),true);
}

Job job = Job.getInstance(conf, "date sort");

job.setJarByClass(StringComp2.class);

job.setMapperClass(MyMapper.class);
job.setMapOutputKeyClass(NewK2.class);
job.setMapOutputValueClass(Text.class); //job.setCombinerClass(MyRecer.class);
job.setRecerClass(MyRecer.class);

job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);

FileInputFormat.addInputPath(job, new Path(INPUT_PATH));
FileOutputFormat.setOutputPath(job,new Path(OUT_PATH));

System.exit(job.waitForCompletion(true)?0:1);
} static class MyMapper extends Mapper<LongWritable, Text, NewK2, Text>{ @Override
protected void map(LongWritable k1, Text v1,
Context context) throws IOException, InterruptedException { //這里採用正則表達式抽取出了proct_no 與 start_time列的數據。
Pattern pattern = Pattern.compile
("([\d]{11})|([\d]{4}-[\d]{2}-[\d]{2} [\d]{2}:[\d]{2}:[\d]{2}.[\d]{9})");
Matcher matcher = pattern.matcher(v1.toString());
matcher.find();
String str1= matcher.group();
matcher.find();
String str2= matcher.group(); final NewK2 k2 = new NewK2(str1, str2); //System.err.println(stringBuilder);
context.write(k2, v1);
}

} static class MyRecer extends Recer<NewK2, Text, Text, NullWritable>{ @Override
protected void rece(NewK2 k2, Iterable<Text> v2s, Context context) throws IOException, InterruptedException { for (Text v2 : v2s) {
context.write(v2,NullWritable.get());
}

}

} static class NewK2 implements WritableComparable<NewK2>{
String first;
String second; public NewK2(){} public NewK2(String first, String second){ this.first = first; this.second = second;
} @Override
public void readFields(DataInput in) throws IOException { this.first = in.readUTF(); this.second = in.readUTF();
} @Override
public void write(DataOutput out) throws IOException {
out.writeUTF(first);
out.writeUTF(second);
} /**
* 當k2進行排序時,會調用該方法.
* 當第一列不同時,升序;當第一列相同時,第二列降序
*/
@Override
public int compareTo(NewK2 o) { final int minus = compTo(this.first,o.first); if(minus != 0){ return minus;
} return -compTo(this.second,o.second);
} //仿照JDK源碼String類的compareTo方法進行實現,
//我發現直接使用String類的compareTo方法,並不能得到我想要的結果(第一列升序,第二列降序)。
public int compTo(String one,String another) { int len = one.length(); char[] v1 = one.toCharArray(); char[] v2 = another.toCharArray(); int k = 0; while (k < len) { char c1 = v1[k]; char c2 = v2[k]; if (c1 != c2) { return c1 - c2;
}
k++;
} return 0;
} @Override
public int hashCode() { return this.first.hashCode()+this.second.hashCode();
} @Override
public boolean equals(Object obj) { if(!(obj instanceof NewK2)){ return false;
}
NewK2 oK2 = (NewK2)obj; return (this.first==oK2.first)&&(this.second==oK2.second);
}
}
}155156157158159160161162

運行結果:

❷ 大數據/Hadoop平台開發工程師是做什麼的

大數據工程師做什麼?需要具備什麼能力?
大數據是眼下非常時髦的技術名詞,與此同時自然也催生出了一些與大數據處理相關的職業,通過對數據的挖掘分析來影響企業的商業決策。
這群人在國外被叫做數據科學家(Data Scientist),這個頭銜最早由D.J.Pati和Jeff Hammerbacher於2008年提出,他們後來分別成為了領英(LinkedIn)和Facebook數據科學團隊的負責人。而數據科學家這個職位目前也已經在美國傳統的電信、零售、金融、製造、物流、醫療、教育等行業里開始創造價值。
不過在國內,大數據的應用才剛剛萌芽,人才市場還不那麼成熟,「你很難期望有一個全才來完成整個鏈條上的所有環節。更多公司會根據自己已有的資源和短板,招聘能和現有團隊互補的人才。」領英(LinkedIn)中國商務分析及戰略總監王昱堯對《第一財經周刊》說。
於是每家公司對大數據工作的要求不盡相同:有的強調資料庫編程、有的突出應用數學和統計學知識、有的則要求有咨詢公司或投行相關的經驗、有些是希望能找到懂得產品和市場的應用型人才。正因為如此,很多公司會針對自己的業務類型和團隊分工,給這群與大數據打交道的人一些新的頭銜和定義:數據挖掘工程師、大數據專家、數據研究員、用戶分析專家等都是經常在國內公司里出現的Title,我們將其統稱為「大數據工程師」。
王昱堯認為,在一個成熟的數據驅動型公司,「大數據工程師」往往是一個團隊,它意味著從數據的收集、整理展現、分析和商業洞察、以至於市場轉化的全過程。這個團隊中可能包括數據工程師、分析師、產品專員、市場專員和商業決策者等角色,共同完成從原始數據到商業價值的轉換—概括來講,這是一個支持企業做出商業決策、發掘商業模式的重要群體。
由於國內的大數據工作還處在一個有待開發的階段,因此能從其中挖掘出多少價值完全取決於工程師的個人能力。已經身處這個行業的專家給出了一些人才需求的大體框架,包括要有計算機編碼能力、數學及統計學相關背景,當然如果能對一些特定領域或行業有比較深入的了解,對於其快速判斷並抓准關鍵因素則更有幫助。
雖然對於一些大公司來說,擁有碩博學歷的公司人是比較好的選擇,不過阿里巴巴集團研究員薛貴榮強調,學歷並不是最主要的因素,能有大規模處理數據的經驗並且有喜歡在數據海洋中尋寶的好奇心會更適合這個工作。
除此之外,一個優秀的大數據工程師要具備一定的邏輯分析能力,並能迅速定位某個商業問題的關鍵屬性和決定因素。「他得知道什麼是相關的,哪個是重要的,使用什麼樣的數據是最有價值的,如何快速找到每個業務最核心的需求。」聯合國網路大數據聯合實驗室數據科學家沈志勇說。學習能力能幫助大數據工程師快速適應不同的項目,並在短時間內成為這個領域的數據專家;溝通能力則能讓他們的工作開展地更順利,因為大數據工程師的工作主要分為兩種方式:由市場部驅動和由數據分析部門驅動,前者需要常常向產品經理了解開發需求,後者則需要找運營部了解數據模型實際轉化的情況。
你可以將以上這些要求看做是成為大數據工程師的努力方向,因為根據萬寶瑞華管理合夥人顏莉萍的觀察,這是一個很大的人才缺口。目前國內的大數據應用多集中在互聯網領域,有超過56%的企業在籌備發展大數據研究,「未來5年,94%的公司都會需要數據科學家。」顏莉萍說。因此她也建議一些原本從事與數據工作相關的公司人可以考慮轉型。
本期《第一財經周刊》采訪了BAT這3家國內互聯網公司,以及相關領域的人力資源專家,他們從職場角度為我們解讀如何成為大數據工程師以及這類崗位的職場現狀。
A 大數據工程師做什麼?
用阿里巴巴集團研究員薛貴榮的話來說,大數據工程師就是一群「玩數據」的人,玩出數據的商業價值,讓數據變成生產力。大數據和傳統數據的最大區別在於,它是在線的、實時的,規模海量且形式不規整,無章法可循,因此「會玩」這些數據的人就很重要。
沈志勇認為如果把大數據想像成一座不停累積的礦山,那麼大數據工程師的工作就是,「第一步,定位並抽取信息所在的數據集,相當於探礦和采礦。第二步,把它變成直接可以做判斷的信息,相當於冶煉。最後是應用,把數據可視化等。」
因此分析歷史、預測未來、優化選擇,這是大數據工程師在「玩數據」時最重要的三大任務。通過這三個工作方向,他們幫助企業做出更好的商業決策。
找出過去事件的特徵
大數據工程師一個很重要的工作,就是通過分析數據來找出過去事件的特徵。比如,騰訊的數據團隊正在搭建一個數據倉庫,把公司所有網路平台上數量龐大、不規整的數據信息進行梳理,總結出可供查詢的特徵,來支持公司各類業務對數據的需求,包括廣告投放、游戲開發、社交網路等。
找出過去事件的特徵,最大的作用是可以幫助企業更好地認識消費者。通過分析用戶以往的行為軌跡,就能夠了解這個人,並預測他的行為。「你可以知道他是什麼樣的人、他的年紀、興趣愛好,是不是互聯網付費用戶、喜歡玩什麼類型的游戲,平常喜歡在網上做什麼事情。」騰訊雲計算有限公司北京研發中心總經理鄭立峰對《第一財經周刊》說。下一步到了業務層面,就可以針對各類人群推薦相關服務,比如手游,或是基於不同特徵和需求衍生出新的業務模式,比如微信的電影票業務。
預測未來可能發生的事情
通過引入關鍵因素,大數據工程師可以預測未來的消費趨勢。在阿里媽媽的營銷平台上,工程師正試圖通過引入氣象數據來幫助淘寶賣家做生意。「比如今年夏天不熱,很可能某些產品就沒有去年暢銷,除了空調、電扇,背心、游泳衣等都可能會受其影響。那麼我們就會建立氣象數據和銷售數據之間的關系,找到與之相關的品類,提前警示賣家周轉庫存。」薛貴榮說。
在網路,沈志勇支持「網路預測」部分產品的模型研發,試圖用大數據為更廣泛的人群服務。已經上線的包括世界盃預測、高考預測、景點預測等。以網路景點預測為例,大數據工程師需要收集所有可能影響一段時間內景點人流量的關鍵因素進行預測,並為全國各個景點未來的擁擠度分級—在接下來的若干天時間里,它究竟是暢通、擁擠,還是一般擁擠?
找出最優化的結果
根據不同企業的業務性質,大數據工程師可以通過數據分析來達到不同的目的。
以騰訊來說,鄭立峰認為能反映大數據工程師工作的最簡單直接的例子就是選項測試(AB Test),即幫助產品經理在A、B兩個備選方案中做出選擇。在過去,決策者只能依據經驗進行判斷,但如今大數據工程師可以通過大范圍地實時測試—比如,在社交網路產品的例子中,讓一半用戶看到A界面,另一半使用B界面,觀察統計一段時間內的點擊率和轉化率,以此幫助市場部做出最終選擇。
作為電商的阿里巴巴,則希望通過大數據鎖定精準的人群,幫助賣家做更好的營銷。「我們更期待的是你能找到這樣一批人,比起現有的用戶,這些人對產品更感興趣。」薛貴榮說。一個淘寶的實例是,某人參賣家原來推廣的目標人群是產婦,但工程師通過挖掘數據之間的關聯性後發現,針對孕婦群體投放的營銷轉化率更高。
B 需要具備的能力
數學及統計學相關的背景
就我們采訪過的BAT三家互聯網大公司來說,對於大數據工程師的要求都是希望是統計學和數學背景的碩士或博士學歷。沈志勇認為,缺乏理論背景的數據工作者,更容易進入一個技能上的危險區域(Danger Zone)—一堆數字,按照不同的數據模型和演算法總能捯飭出一些結果來,但如果你不知道那代表什麼,就並不是真正有意義的結果,並且那樣的結果還容易誤導你。「只有具備一定的理論知識,才能理解模型、復用模型甚至創新模型,來解決實際問題。」沈志勇說。
計算機編碼能力
實際開發能力和大規模的數據處理能力是作為大數據工程師的一些必備要素。「因為許多數據的價值來自於挖掘的過程,你必須親自動手才能發現金子的價值。」鄭立峰說。
舉例來說,現在人們在社交網路上所產生的許多記錄都是非結構化的數據,如何從這些毫無頭緒的文字、語音、圖像甚至視頻中攫取有意義的信息就需要大數據工程師親自挖掘。即使在某些團隊中,大數據工程師的職責以商業分析為主,但也要熟悉計算機處理大數據的方式。
對特定應用領域或行業的知識
在顏莉萍看來,大數據工程師這個角色很重要的一點是,不能脫離市場,因為大數據只有和特定領域的應用結合起來才能產生價值。所以,在某個或多個垂直行業的經歷能為應聘者積累對行業的認知,對於之後成為大數據工程師有很大幫助,因此這也是應聘這個崗位時較有說服力的加分項。
「他不能只是懂得數據,還要有商業頭腦,不論對零售、醫葯、游戲還是旅遊等行業,能就其中某些領域有一定的理解,最好還是與公司的業務方向一致的,」就此薛貴榮還打了個比方,「過去我們說一些奢侈品店員勢利,看人一眼就知道買得起買不起,但這群人恰恰是有敏銳度的,我們認為他們是這個行業的專家。又比如對醫療行業了解的人,他在考慮醫療保險業務時,不僅會和人們醫院看病的記錄相關,也會考慮飲食數據,這些都是基於對該領域的了解。」
C 大數據工程師的職業發展
如何成為大數據工程師
由於目前大數據人才匱乏,對於公司來說,很難招聘到合適的人才—既要有高學歷,同時最好還有大規模數據處理經驗。因此很多企業會通過內部挖掘。
今年8月,阿里巴巴舉辦了一個大數據競賽,把天貓平台上的數據拿出來,去除敏感問題後,放到雲計算平台上交予7000多支隊伍進行比賽,比賽分為內部賽和外部賽。「通過這個方式來激勵內部員工,同時也發現外部人才,讓各行業的大數據工程師涌現出來。」
顏莉萍建議,目前長期從事資料庫管理、挖掘、編程工作的人,包括傳統的量化分析師、Hadoop方面的工程師,以及任何在工作中需要通過數據來進行判斷決策的管理者,比如某些領域的運營經理等,都可以嘗試該職位,而各個領域的達人只要學會運用數據,也可以成為大數據工程師。
薪酬待遇
作為IT類職業中的「大熊貓」,大數據工程師的收入待遇可以說達到了同類的頂級。根據顏莉萍的觀察,國內IT、通訊、行業招聘中,有10%都是和大數據相關的,且比例還在上升。顏莉萍表示,「大數據時代的到來很突然,在國內發展勢頭激進,而人才卻非常有限,現在完全是供不應求的狀況。」在美國,大數據工程師平均每年薪酬高達17.5萬美元,而據了解,在國內頂尖互聯網類公司,同一個級別大數據工程師的薪酬可能要比其他職位高20%至30%,且頗受企業重視。
職業發展路徑
由於大數據人才數量較少,因此大多數公司的數據部門一般都是扁平化的層級模式,大致分為數據分析師、資深研究員、部門總監3個級別。大公司可能按照應用領域的維度來劃分不同團隊,而在小公司則需要身兼數職。有些特別強調大數據戰略的互聯網公司則會另設最高職位—如阿里巴巴的首席數據官。「這個職位的大部分人會往研究方向發展,成為重要數據戰略人才。」顏莉萍說。另一方面,大數據工程師對商業和產品的理解,並不亞於業務部門員工,因此也可轉向產品部或市場部,乃至上升為公司的高級管理層。

❸ hadoop好學么

Hadoop並不難學習,概念和基礎容易理解,難點是挑戰項目復雜性。在進入大數據這個圈子之前,應該多動手操作一些挑戰性的項目。學過Java和Linux的話,對學習Hadoop會有很大幫助,可以更快速掌握大數據開發技術。Hadoop基本上是用Java編寫的,因此至少需要掌握該編程語言的基礎知識。Hadoop基本上是在Linux上運行的,因此了解Linux的基本知識更容易入門大數據Hadoop。

❹ hadoop是做什麼的

提供海量數據存儲和計算的,需要java語言基礎。

Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。有高容錯性的特點,並且設計用來部署在低廉的(low-cost)硬體上;而且它提供高吞吐量來訪問應用程序的數據,適合那些有著超大數據集(large data set)的應用程序。

特點

1、快照支持在一個特定時間存儲一個數據拷貝,快照可以將失效的集群回滾到之前一個正常的時間點上。HDFS已經支持元數據快照。

2、HDFS的設計是用於支持大文件的。運行在HDFS上的程序也是用於處理大數據集的。這些程序僅寫一次數據,一次或多次讀數據請求,並且這些讀操作要求滿足流式傳輸速度。

HDFS支持文件的一次寫多次讀操作。HDFS中典型的塊大小是64MB,一個HDFS文件可以被切分成多個64MB大小的塊,如果需要,每一個塊可以分布在不同的數據節點上。

3、階段狀態:一個客戶端創建一個文件的請求並不會立即轉發到名位元組點。實際上,一開始HDFS客戶端將文件數據緩存在本地的臨時文件中。

❺ 請問HADOOP都支持哪些編程語言,麻煩列全面一點,謝謝

hadoop只支持JAVA編程,但是操作hadoop可以用很多其他語言,比如hadoop streaming 實現maprece 支持標准輸入輸出,你可以用任意語言實現這種輸入輸出。另外,hadoop提供很多操作的網路介面,這種網路介面也是語言無關的,只要遵守協議任何語言都可以通信hadoop。

❻ hadoop支持什麼開發語言

hadoop支持C++,Java開發語言。

Hadoop帶有用Java語言編寫的框架,因此運行在 Linux 生產平台上是非常理想的。Hadoop 上的應用程序也可以使用其他語言編寫,比如 C++。MapRece是處理大量半結構化數據集合的編程模型。編程模型是一種處理並結構化特定問題的方式。

例如,在一個關系資料庫中,使用一種集合語言執行查詢,如SQL。告訴語言想要的結果,並將它提交給系統來計算出如何產生計算。還可以用更傳統的語言(C++,Java),一步步地來解決問題。這是兩種不同的編程模型,MapRece就是另外一種。

(6)hadoop編程擴展閱讀

特點

1、確定哪些數據屬於企業的敏感數據。根據公司的隱私保護政策,以及相關的行業法規和政府規章來綜合確定。

2、確保數據保護方案同時採用了隱藏和加密技術,尤其是如果我們需要將敏感數據在Hadoop中保持獨立的話。

3、確保需要加密的時候有合適的技術(比如Java、Pig等)可被部署並支持無縫解密和快速訪問數據。

❼ Hadoop是什麼,具體有什麼用呢

首先Hadoop是一個由Apache基金會所開發的分布式系統基礎架構。用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群的威力進行高速運算和存儲。
Hadoop 的最常見用法之一是 Web 搜索。雖然它不是唯一的軟體框架應用程序,但作為一個並行數據處理引擎,它的表現非常突出。Hadoop 最有趣的方面之一是 Map and Rece 流程,它受到Google開發的啟發。這個流程稱為創建索引,它將 Web爬行器檢索到的文本 Web 頁面作為輸入,並且將這些頁面上的單詞的頻率報告作為結果。
結果是對輸入域中的單詞進行計數,這無疑對處理索引十分有用。但是,假設有兩個輸入域,第一個是 one small step for man,第二個是 one giant leap for mankind。您可以在每個域上執行 Map 函數和 Rece 函數,然後將這兩個鍵/值對列表應用到另一個 Rece 函數,這時得到與前面一樣的結果。換句話說,可以在輸入域並行使用相同的操作,得到的結果是一樣的,但速度更快。這便是 MapRece 的威力;它的並行功能可在任意數量的系統上使用
回到 Hadoop 上,它實現這個功能的方法是:一個代表客戶機在單個主系統上啟動的 MapRece應用程序稱為 JobTracker。類似於 NameNode,它是 Hadoop 集群中唯一負責控制 MapRece應用程序的系統。在應用程序提交之後,將提供包含在 HDFS 中的輸入和輸出目錄。JobTracker 使用文件塊信息(物理量和位置)確定如何創建其他 TaskTracker 從屬任務。MapRece應用程序被復制到每個出現輸入文件塊的節點。將為特定節點上的每個文件塊創建一個唯一的從屬任務。每個 TaskTracker 將狀態和完成信息報告給 JobTracker
通過Hadoop安全部署經驗總結,開發出以下十大建議,以確保大型和復雜多樣環境下的數據信息安全 [9] 。
1、先下手為強!在規劃部署階段就確定數據的隱私保護策略,最好是在將數據放入到Hadoop之前就確定好保護策略 [9] 。
2、確定哪些數據屬於企業的敏感數據。根據公司的隱私保護政策,以及相關的行業法規和政府規章來綜合確定 [9] 。
3、及時發現敏感數據是否暴露在外,或者是否導入到Hadoop中 [9] 。
4、搜集信息並決定是否暴露出安全風險 [9] 。
5、確定商業分析是否需要訪問真實數據,或者確定是否可以使用這些敏感數據。然後,選擇合適的加密技術。如果有任何疑問,對其進行加密隱藏處理,同時提供最安全的加密技術和靈活的應對策略,以適應未來需求的發展 [9] 。
6、確保數據保護方案同時採用了隱藏和加密技術,尤其是如果我們需要將敏感數據在Hadoop中保持獨立的話 [9] 。
7、確保數據保護方案適用於所有的數據文件,以保存在數據匯總中實現數據分析的准確性 [9] 。
8、確定是否需要為特定的數據集量身定製保護方案,並考慮將Hadoop的目錄分成較小的更為安全的組 [9] 。
9、確保選擇的加密解決方案可與公司的訪問控制技術互操作,允許不同用戶可以有選擇性地訪問Hadoop集群中的數據 [9] 。
10、確保需要加密的時候有合適的技術(比如Java、Pig等)可被部署並支持無縫解密和快速訪問數據

熱點內容
安卓怎麼關閉美易訂閱 發布:2024-05-18 19:29:16 瀏覽:642
蘋果手機配置代理伺服器怎麼開 發布:2024-05-18 19:29:07 瀏覽:229
伺服器屏蔽了別人的ip 發布:2024-05-18 19:10:09 瀏覽:619
怎麼獲取ins伺服器地址 發布:2024-05-18 19:10:03 瀏覽:30
仙方一般是什麼配置 發布:2024-05-18 18:53:43 瀏覽:159
黑莓安卓手機主題下載到哪裡 發布:2024-05-18 18:47:18 瀏覽:57
湯靖軒編程 發布:2024-05-18 18:46:04 瀏覽:533
腳本故事梗 發布:2024-05-18 18:29:02 瀏覽:823
安卓和csharp哪個發展好 發布:2024-05-18 18:09:30 瀏覽:527
換編程題庫 發布:2024-05-18 18:00:58 瀏覽:562