不錯(cuò)。盛大汽車音響作為一款汽車音響產(chǎn)品,其性能和品質(zhì)因型號(hào)和品牌而異。在選擇汽車音響時(shí),建議您參考以下幾點(diǎn):
1. 音質(zhì):音質(zhì)是衡量汽車音響好壞的重要標(biāo)準(zhǔn),您可以參考其他用戶的評(píng)價(jià)和專業(yè)媒體的測(cè)評(píng)了解其音質(zhì)表現(xiàn)。
2. 品牌:選擇知名品牌的汽車音響通常有更好的質(zhì)量和售后服務(wù)保障。例如,阿爾派(Alpine)、索尼(Sony)、松下(Panasonic)等都是知名的汽車音響品牌。
3. 功能:根據(jù)您的需求選擇具有相應(yīng)功能的汽車音響,例如藍(lán)牙、USB接口、AUX輸入等。
4. 外觀和安裝:汽車音響的外觀和安裝方式也是需要考慮的因素,選擇與您的汽車內(nèi)飾相匹配的音響以及便于安裝的產(chǎn)品。
5. 價(jià)格:根據(jù)您的預(yù)算選擇合適的汽車音響,同時(shí)要權(quán)衡音質(zhì)、品牌、功能等因素。
總之,在選擇盛大汽車音響時(shí),您可以參考以上幾點(diǎn),同時(shí)查閱相關(guān)評(píng)價(jià)和測(cè)評(píng),以選購(gòu)到性價(jià)比高的汽車音響產(chǎn)品。
面試過(guò)程:
面試前十分鐘收到hr消息說(shuō)面試官開會(huì),臨時(shí)改時(shí)間。
一面基本沒(méi)有涉及到專業(yè)問(wèn)題,圍繞簡(jiǎn)歷問(wèn)了實(shí)習(xí)和學(xué)校的項(xiàng)目,此外還有一些和工作不相關(guān)的奇怪問(wèn)題。
面試官問(wèn)的面試題:
1.為什么你現(xiàn)在就讀的大學(xué)愿意錄取你?你覺(jué)得他們看上了你什么(???
2.能不能接受外派
3.說(shuō)一個(gè)學(xué)校的項(xiàng)目
4.來(lái)自哪個(gè)省
5.總結(jié)一下你的性格特點(diǎn)
現(xiàn)在是有奇趣代理。盛大賣給奇趣了。還可以玩。就是人不多
全稱“上海盛大網(wǎng)絡(luò)發(fā)展有限公司”
盛大集團(tuán)是全球最大的私人投資控股集團(tuán)之一。盛大于1999年,由我們的董事長(zhǎng)兼首席執(zhí)行官陳天橋先生及其他家人在中國(guó)上海創(chuàng)立目前在上海,北京,香港,新加坡和美國(guó)硅谷都設(shè)有辦公室。旗下有多家公司:盛大游戲,盛大在線,盛大文學(xué)等
你看你是賬號(hào)不對(duì)還是你要密碼不對(duì),不行就直接找客服
恭喜我們的船,楊帆啟航,盛大起航
個(gè)人加入盛大做得時(shí)間不長(zhǎng),但是去了盛大不少地方,去的時(shí)候盛大游戲是行業(yè)第一,走的時(shí)候盛大游戲行業(yè)第四,也算是見證了由盛轉(zhuǎn)衰的過(guò)程,簡(jiǎn)單說(shuō)點(diǎn)個(gè)人意見,僅供參考,謝絕轉(zhuǎn)載。
1. 領(lǐng)導(dǎo)力。大家都說(shuō)橋哥獨(dú)裁是大問(wèn)題,其實(shí)個(gè)人覺(jué)得獨(dú)裁不算大問(wèn)題,盛大初期也獨(dú)裁,依然牛X,投機(jī)的話當(dāng)不了行業(yè)老大那么多年。大問(wèn)題是你獨(dú)裁就獨(dú)裁,但是到了后期卻只顧空談,養(yǎng)了一幫子奴才。橋哥應(yīng)該創(chuàng)業(yè)時(shí)期還是很給力的,戰(zhàn)略也到位,但是那個(gè)時(shí)候公司小,自己精力好,所以公司還行,但是隨著公司大了,橋哥結(jié)果居然身體還不好了,這個(gè)就糟糕了,而更糟糕的是皇上身邊居然缺乏信任的人。創(chuàng)始人團(tuán)隊(duì)里,和自己的弟弟之間幾乎形同陌路,各玩各的,譚、張不得信任,現(xiàn)在都已經(jīng)離開,譚走的時(shí)候居然還點(diǎn)評(píng)為“有功有過(guò)”,這早就說(shuō)明撕破臉皮了。而所謂的奴才,關(guān)注盛大新聞的因?yàn)楹芏嗳硕伎催^(guò),內(nèi)部某某稱“我不懂業(yè)務(wù),但我懂橋哥",這話MS古時(shí)候都屬于那些稱奴才的人說(shuō)的吧,關(guān)鍵是這話的奴才居然在有新聞后依然混得風(fēng)生水起,公司內(nèi)更有被底下人戲稱為”東廠“的組織,在此就不點(diǎn)名了。懂業(yè)務(wù)的很多郁郁不得志,大批業(yè)內(nèi)有真才實(shí)學(xué)的,來(lái)了最后都走了。官僚主義的管理風(fēng)格,加上皇上被奸佞迷惑,那就沒(méi)得玩了。“空談?wù)`國(guó),實(shí)干興邦”
2. 走得太快,看得太遠(yuǎn),沒(méi)有著重點(diǎn)。所謂的盛大勝在彎道超車,這動(dòng)作本來(lái)交通規(guī)則里就是危險(xiǎn)動(dòng)作,你玩一次就算了,你多玩幾次,即便是超跑也得撞上吧,你當(dāng)這是美國(guó)大片還是跑跑卡丁車呢,各種甩尾。當(dāng)了游戲行業(yè)老大那么多年,其實(shí)盛大游戲有多苦逼可能很多人都不知道,完全就是一頭牛,吃的是草,擠得是奶,奶被其他孩子喝了,自己卻越來(lái)越消瘦了??纯淳W(wǎng)易、看看騰訊,游戲賺的錢就繼續(xù)投入到游戲,現(xiàn)在兩家的游戲收入都占全公司50%以上,對(duì)游戲也很看重,而SD都拿去投了無(wú)數(shù)公司,結(jié)果除了盛大文學(xué)還行,其他都打了水漂。錢都花完了,自己缺乏投入,那就無(wú)能為力了。
3. 缺乏創(chuàng)新,或者說(shuō)不看重創(chuàng)新。應(yīng)該是大年作為GEEK還是算是看創(chuàng)新的,可惜志不在游戲,開了個(gè)創(chuàng)新院自己去玩。而游戲呢,當(dāng)了游戲老大那么多年,居然缺乏一支真正行業(yè)頂尖的開發(fā)團(tuán)隊(duì),這是不可想象的!看看現(xiàn)在前三,網(wǎng)易、搜狐龍頭產(chǎn)品都是自我創(chuàng)新的,當(dāng)年的完美研發(fā)能力也極強(qiáng),騰訊雖然DNF、CF貢獻(xiàn)能力強(qiáng),但是人家也研發(fā)了很多產(chǎn)品啊,雖然不少也失敗了,但是總體來(lái)說(shuō)還是有精品拿出的。不要說(shuō)盛大的傳奇世界也是自研,傳奇這類游戲只能說(shuō)是現(xiàn)象級(jí)游戲,你沒(méi)法復(fù)制的。而盛大其他自研游戲無(wú)一生還,當(dāng)時(shí)的英雄年代團(tuán)隊(duì)被史玉柱整個(gè)挖走,側(cè)面也反映了盛大對(duì)研發(fā)的不看重。星辰變、零世界都是雷聲大、雨點(diǎn)小,品質(zhì)如何,大家玩玩就知道了。盛大運(yùn)營(yíng)一流,研發(fā)個(gè)人覺(jué)得不說(shuō)三流,但肯定在業(yè)內(nèi)排不進(jìn)前五。
4. 研發(fā)不行,你代理好也總行吧。我們說(shuō)代理,只能說(shuō),做了多年老大,自己也驕傲了,覺(jué)得我代理你的游戲是看得起你。魔獸、DNF基本都是研發(fā)公司先找盛大,盛大不是給不起錢,但是就是不愿意給,結(jié)果一個(gè)成就了九城(現(xiàn)在當(dāng)然是網(wǎng)易傍上了暴雪大腿),一個(gè)成就了騰訊。韓國(guó)NCSOFT當(dāng)年和盛大幾乎穿一條褲子,還是戰(zhàn)略合作伙伴,結(jié)果AION被盛大搞殘搞廢了,還發(fā)生了很多不愉快的事情,總之就是把NCSOFT惹火了,至此再也不給盛大代理權(quán)了,劍靈、天堂、上古世紀(jì)等等優(yōu)秀IP全給了騰訊,人家不跟你玩了。我能說(shuō)據(jù)說(shuō)當(dāng)年跑跑卡丁車也差點(diǎn)是盛大的么。想想看,這些游戲如果全部還在盛大手上,研發(fā)不行,盛大老大應(yīng)該還是沒(méi)啥大問(wèn)題吧。
5. 人才。盛大其實(shí)待遇還是在業(yè)內(nèi)不錯(cuò)的,但是晉升機(jī)制等還是有問(wèn)題,不過(guò)這個(gè)感覺(jué)是行業(yè)通病,不過(guò)Jack Ma還是說(shuō)得好,人走主要為啥,“錢拿少了,心受傷了”。
6. 其他雜七雜八說(shuō)一下,發(fā)現(xiàn)一個(gè)好玩的地方,橋哥很多戰(zhàn)略其實(shí)并不算失敗,只因?yàn)閯e人后來(lái)都用同樣的戰(zhàn)略勝利了,難道這就是傳說(shuō)中的“別人家的“.....當(dāng)年盒子失敗了,結(jié)果看看現(xiàn)在,蘋果有盒子,谷歌有類似盒子的產(chǎn)品,小米盒子,樂(lè)視盒子,滿眼望去都是盒子,而橋哥比喬布斯還要早好幾年推出盒子??!再看網(wǎng)上迪斯尼,看起來(lái)騰訊好像距離這個(gè)夢(mèng)想更近了!
之前有個(gè)帖子,好像叫你為什么離開盛大,那里面也講了很多。其實(shí)一個(gè)公司興衰常有,只是看著自己曾經(jīng)一直仰慕的一家公司就這么衰落,也是自己的老東家,還是挺難過(guò)的。盛大文學(xué)、盛大游戲都再也不屬于盛大,且行且珍惜吧。
==================
補(bǔ)充一個(gè),個(gè)人一個(gè)感覺(jué),橋哥從始至終其實(shí)就看!不!起!做游戲的。他幾乎從始至終也沒(méi)有把游戲當(dāng)做一回事,當(dāng)年的游戲成功只是因?yàn)榭雌饋?lái)游戲還可以賺錢。游戲就像是他的私生子,無(wú)論孩子怎么優(yōu)秀,當(dāng)?shù)亩伎床黄鹚?,在他眼中,就是一個(gè)賺錢工具,毫無(wú)感情!我感覺(jué)他一直都想賣掉它,只是一直沒(méi)找到一個(gè)能夠替代它的對(duì)象罷了,現(xiàn)在看著游戲也不行了,干脆賣了算了,盛大文學(xué)始終難以IPO,所以索性也賣了。這又讓我想起,為啥王全安有一個(gè)如花似玉的張雨綺當(dāng)老婆,卻還要去嫖娼,這我始終想不明白啊,橋哥為啥就讓我感覺(jué)他看不起那么牛X的盛大游戲呢,奇怪啊。
6月13日更新===============
第一次被邀請(qǐng)知乎回答,還第一次點(diǎn)贊過(guò)百,讓我受寵若驚,看到評(píng)論的,做一些能夠說(shuō)出來(lái)的解釋
1. 對(duì)于AION的問(wèn)題。這個(gè)我本人沒(méi)有直接進(jìn)入該工作室,所以有的信息也是從其他方面間接知道。這個(gè)游戲確實(shí)優(yōu)秀,畫面到玩法等都很符合中國(guó)玩家。但是為什么在被盛大做殘了后還能和NCSOFT續(xù)約,我只能說(shuō)對(duì)不起這個(gè)事不能說(shuō),邏輯鏈很長(zhǎng)很復(fù)雜,總之就是盛大驕傲過(guò)頭。
2. 很多人說(shuō)外掛那么多,運(yùn)營(yíng)還能好?外掛問(wèn)題真!的!不!是!運(yùn)營(yíng)能夠解決的啊?。∥乙埠苡憛捦鈷?,我做過(guò)的游戲也碰到外掛,但是這個(gè)一般涉及到開發(fā)程序的問(wèn)題,盛大內(nèi)部為了抓外掛做了很大努力,很多工作組通宵加班,但是因?yàn)檫@是代理的游戲,所以棒子們不修程序,或者根本就修不好,你讓我怎么運(yùn)營(yíng)?我們只有封號(hào),但是有時(shí)候也抓不完啊,免費(fèi)的游戲,封了重新建個(gè)小號(hào)就行,或者干脆只用小號(hào)玩外掛,怎么抓?
3. 至于我說(shuō)盛大運(yùn)營(yíng)一流,這個(gè)應(yīng)該業(yè)界還是承認(rèn)的吧。盛大內(nèi)部一直說(shuō),研發(fā)不足運(yùn)營(yíng)補(bǔ),就是靠運(yùn)營(yíng)去延長(zhǎng)游戲壽命。蝸牛把九陰和黑金這兩款制作很好的游戲給盛大運(yùn)營(yíng),也說(shuō)明了盛大運(yùn)營(yíng)能力吧。
4. 至于說(shuō)運(yùn)營(yíng)好為啥盛大還衰落了,我只有呵呵了。高收入指標(biāo)、壓榨用戶、短期投機(jī)、外行指導(dǎo)內(nèi)行等等也都是有發(fā)生的,運(yùn)營(yíng)真的不是神。都說(shuō)企鵝運(yùn)營(yíng)好,我認(rèn)識(shí)很多企鵝過(guò)來(lái)的人,以前在企鵝運(yùn)營(yíng)過(guò)很優(yōu)秀的游戲,來(lái)了盛大也沒(méi)法了,這個(gè)就是我之前說(shuō)的比如領(lǐng)導(dǎo)力的問(wèn)題,看很多人都說(shuō)盛大投機(jī),這個(gè)在后期確實(shí)也是有的。短期砸一筆市場(chǎng)費(fèi),如果不出成績(jī),馬上投入另外一個(gè)游戲,基本這個(gè)游戲就廢了,用戶基礎(chǔ)怎么來(lái)?保持高收入和高活躍很多時(shí)候是個(gè)相悖的目標(biāo),拉收入狠了,必然導(dǎo)致很多玩家流失。打一棒子也得給顆紅棗嘛。說(shuō)實(shí)話,我離開盛大有一部分原因也就是因?yàn)檫@種不理性的高層投機(jī)指導(dǎo),看不下去了,我又人微言輕,只有自己走人了。
5. 還有一位兄弟的評(píng)論根據(jù)我的理解,好像是說(shuō)運(yùn)營(yíng)好就能有好的代理吧?這個(gè)好像沒(méi)有邏輯聯(lián)系啊。運(yùn)營(yíng)好是好,但是問(wèn)題是你是跟人家去做商務(wù)談判的啊。暴雪這種國(guó)際大鱷面前你還裝X,暴雪能開心?暴雪出品,必然精品,盛大不愿意跟你出這錢,朱老板愿意出,當(dāng)然給朱老板了。記得一個(gè)朋友曾經(jīng)說(shuō),盛大最早和別人談合作是自己躺著談,后來(lái)不行了就坐著談,再后來(lái)現(xiàn)在只有站著談了。
我也不是來(lái)詆毀盛大的,畢竟是自己待過(guò)的公司,還是很有感情的,盛大依然有著領(lǐng)先全行業(yè)的很多東西,優(yōu)秀的運(yùn)營(yíng),完備的組織架構(gòu)體系和人才梯隊(duì),渠道關(guān)系和盛大的體量等等也依然有崛起的資本。只是如果不痛定思痛,重新出發(fā),確實(shí)我個(gè)人是很難看到他的未來(lái)。現(xiàn)在游戲已經(jīng)賣給財(cái)團(tuán)了,沒(méi)有來(lái)自集團(tuán)的高壓,減少了一些審批,希望能夠看到游戲的重新出發(fā),也祝福盛大游戲,祝福這個(gè)曾經(jīng)戰(zhàn)斗過(guò)的地方。
你要投訴客服? 如果是文字客服就你電話投訴 如果是語(yǔ)音客服你就文字投訴 他們不是一條杠上的 。
但是你是因?yàn)樗粠湍憬鉀Q 就是可能你罵了他 他們這些都有截圖或者錄音的 最好小心舉報(bào)之前看了Mahout官方示例 20news 的調(diào)用實(shí)現(xiàn);于是想根據(jù)示例的流程實(shí)現(xiàn)其他例子。網(wǎng)上看到了一個(gè)關(guān)于天氣適不適合打羽毛球的例子。
訓(xùn)練數(shù)據(jù):
Day Outlook Temperature Humidity Wind PlayTennis
D1 Sunny Hot High Weak No
D2 Sunny Hot High Strong No
D3 Overcast Hot High Weak Yes
D4 Rain Mild High Weak Yes
D5 Rain Cool Normal Weak Yes
D6 Rain Cool Normal Strong No
D7 Overcast Cool Normal Strong Yes
D8 Sunny Mild High Weak No
D9 Sunny Cool Normal Weak Yes
D10 Rain Mild Normal Weak Yes
D11 Sunny Mild Normal Strong Yes
D12 Overcast Mild High Strong Yes
D13 Overcast Hot Normal Weak Yes
D14 Rain Mild High Strong No
檢測(cè)數(shù)據(jù):
sunny,hot,high,weak
結(jié)果:
Yes=》 0.007039
No=》 0.027418
于是使用Java代碼調(diào)用Mahout的工具類實(shí)現(xiàn)分類。
基本思想:
1. 構(gòu)造分類數(shù)據(jù)。
2. 使用Mahout工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。
3。將要檢測(cè)數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對(duì)vector數(shù)據(jù)進(jìn)行分類。
接下來(lái)貼下我的代碼實(shí)現(xiàn)=》
1. 構(gòu)造分類數(shù)據(jù):
在hdfs主要?jiǎng)?chuàng)建一個(gè)文件夾路徑 /zhoujainfeng/playtennis/input 并將分類文件夾 no 和 yes 的數(shù)據(jù)傳到hdfs上面。
數(shù)據(jù)文件格式,如D1文件內(nèi)容: Sunny Hot High Weak
2. 使用Mahout工具類進(jìn)行訓(xùn)練,得到訓(xùn)練模型。
3。將要檢測(cè)數(shù)據(jù)轉(zhuǎn)換成vector數(shù)據(jù)。
4. 分類器對(duì)vector數(shù)據(jù)進(jìn)行分類。
這三步,代碼我就一次全貼出來(lái);主要是兩個(gè)類 PlayTennis1 和 BayesCheckData = =》
package myTesting.bayes;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.util.ToolRunner;
import org.apache.mahout.classifier.naivebayes.training.TrainNaiveBayesJob;
import org.apache.mahout.text.SequenceFilesFromDirectory;
import org.apache.mahout.vectorizer.SparseVectorsFromSequenceFiles;
public class PlayTennis1 {
private static final String WORK_DIR = "hdfs://192.168.9.72:9000/zhoujianfeng/playtennis";
/*
* 測(cè)試代碼
*/
public static void main(String[] args) {
//將訓(xùn)練數(shù)據(jù)轉(zhuǎn)換成 vector數(shù)據(jù)
makeTrainVector();
//產(chǎn)生訓(xùn)練模型
makeModel(false);
//測(cè)試檢測(cè)數(shù)據(jù)
BayesCheckData.printResult();
}
public static void makeCheckVector(){
//將測(cè)試數(shù)據(jù)轉(zhuǎn)換成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"testinput";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失??!");
System.exit(1);
}
//將序列化文件轉(zhuǎn)換成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-test-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-test-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件轉(zhuǎn)換成向量失??!");
System.out.println(2);
}
}
public static void makeTrainVector(){
//將測(cè)試數(shù)據(jù)轉(zhuǎn)換成序列化文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"input";
String output = WORK_DIR+Path.SEPARATOR+"tennis-seq";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SequenceFilesFromDirectory sffd = new SequenceFilesFromDirectory();
String[] params = new String[]{"-i",input,"-o",output,"-ow"};
ToolRunner.run(sffd, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("文件序列化失敗!");
System.exit(1);
}
//將序列化文件轉(zhuǎn)換成向量文件
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-seq";
String output = WORK_DIR+Path.SEPARATOR+"tennis-vectors";
Path in = new Path(input);
Path out = new Path(output);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
SparseVectorsFromSequenceFiles svfsf = new SparseVectorsFromSequenceFiles();
String[] params = new String[]{"-i",input,"-o",output,"-lnorm","-nv","-wt","tfidf"};
ToolRunner.run(svfsf, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("序列化文件轉(zhuǎn)換成向量失敗!");
System.out.println(2);
}
}
public static void makeModel(boolean completelyNB){
try {
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String input = WORK_DIR+Path.SEPARATOR+"tennis-vectors"+Path.SEPARATOR+"tfidf-vectors";
String model = WORK_DIR+Path.SEPARATOR+"model";
String labelindex = WORK_DIR+Path.SEPARATOR+"labelindex";
Path in = new Path(input);
Path out = new Path(model);
Path label = new Path(labelindex);
FileSystem fs = FileSystem.get(conf);
if(fs.exists(in)){
if(fs.exists(out)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(out, true);
}
if(fs.exists(label)){
//boolean參數(shù)是,是否遞歸刪除的意思
fs.delete(label, true);
}
TrainNaiveBayesJob tnbj = new TrainNaiveBayesJob();
String[] params =null;
if(completelyNB){
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow","-c"};
}else{
params = new String[]{"-i",input,"-el","-o",model,"-li",labelindex,"-ow"};
}
ToolRunner.run(tnbj, params);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("生成訓(xùn)練模型失?。?#34;);
System.exit(3);
}
}
}
package myTesting.bayes;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.mahout.classifier.naivebayes.BayesUtils;
import org.apache.mahout.classifier.naivebayes.NaiveBayesModel;
import org.apache.mahout.classifier.naivebayes.StandardNaiveBayesClassifier;
import org.apache.mahout.common.Pair;
import org.apache.mahout.common.iterator.sequencefile.PathType;
import org.apache.mahout.common.iterator.sequencefile.SequenceFileDirIterable;
import org.apache.mahout.math.RandomAccessSparseVector;
import org.apache.mahout.math.Vector;
import org.apache.mahout.math.Vector.Element;
import org.apache.mahout.vectorizer.TFIDF;
import com.google.common.collect.ConcurrentHashMultiset;
import com.google.common.collect.Multiset;
public class BayesCheckData {
private static StandardNaiveBayesClassifier classifier;
private static Map<String, Integer> dictionary;
private static Map<Integer, Long> documentFrequency;
private static Map<Integer, String> labelIndex;
public void init(Configuration conf){
try {
String modelPath = "/zhoujianfeng/playtennis/model";
String dictionaryPath = "/zhoujianfeng/playtennis/tennis-vectors/dictionary.file-0";
String documentFrequencyPath = "/zhoujianfeng/playtennis/tennis-vectors/df-count";
String labelIndexPath = "/zhoujianfeng/playtennis/labelindex";
dictionary = readDictionnary(conf, new Path(dictionaryPath));
documentFrequency = readDocumentFrequency(conf, new Path(documentFrequencyPath));
labelIndex = BayesUtils.readLabelIndex(conf, new Path(labelIndexPath));
NaiveBayesModel model = NaiveBayesModel.materialize(new Path(modelPath), conf);
classifier = new StandardNaiveBayesClassifier(model);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("檢測(cè)數(shù)據(jù)構(gòu)造成vectors初始化時(shí)報(bào)錯(cuò)。。。。");
System.exit(4);
}
}
/**
* 加載字典文件,Key: TermValue; Value:TermID
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<String, Integer> readDictionnary(Configuration conf, Path dictionnaryDir) {
Map<String, Integer> dictionnary = new HashMap<String, Integer>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
String name = path.getName();
return name.startsWith("dictionary.file");
}
};
for (Pair<Text, IntWritable> pair : new SequenceFileDirIterable<Text, IntWritable>(dictionnaryDir, PathType.LIST, filter, conf)) {
dictionnary.put(pair.getFirst().toString(), pair.getSecond().get());
}
return dictionnary;
}
/**
* 加載df-count目錄下TermDoc頻率文件,Key: TermID; Value:DocFreq
* @param conf
* @param dictionnaryDir
* @return
*/
private static Map<Integer, Long> readDocumentFrequency(Configuration conf, Path documentFrequencyDir) {
Map<Integer, Long> documentFrequency = new HashMap<Integer, Long>();
PathFilter filter = new PathFilter() {
@Override
public boolean accept(Path path) {
return path.getName().startsWith("part-r");
}
};
for (Pair<IntWritable, LongWritable> pair : new SequenceFileDirIterable<IntWritable, LongWritable>(documentFrequencyDir, PathType.LIST, filter, conf)) {
documentFrequency.put(pair.getFirst().get(), pair.getSecond().get());
}
return documentFrequency;
}
public static String getCheckResult(){
Configuration conf = new Configuration();
conf.addResource(new Path("/usr/local/hadoop/conf/core-site.xml"));
String classify = "NaN";
BayesCheckData cdv = new BayesCheckData();
cdv.init(conf);
System.out.println("init done...............");
Vector vector = new RandomAccessSparseVector(10000);
TFIDF tfidf = new TFIDF();
//sunny,hot,high,weak
Multiset<String> words = ConcurrentHashMultiset.create();
words.add("sunny",1);
words.add("hot",1);
words.add("high",1);
words.add("weak",1);
int documentCount = documentFrequency.get(-1).intValue(); // key=-1時(shí)表示總文檔數(shù)
for (Multiset.Entry<String> entry : words.entrySet()) {
String word = entry.getElement();
int count = entry.getCount();
Integer wordId = dictionary.get(word); // 需要從dictionary.file-0文件(tf-vector)下得到wordID,
if (StringUtils.isEmpty(wordId.toString())){
continue;
}
if (documentFrequency.get(wordId) == null){
continue;
}
Long freq = documentFrequency.get(wordId);
double tfIdfValue = tfidf.calculate(count, freq.intValue(), 1, documentCount);
vector.setQuick(wordId, tfIdfValue);
}
// 利用貝葉斯算法開始分類,并提取得分最好的分類label
Vector resultVector = classifier.classifyFull(vector);
double bestScore = -Double.MAX_VALUE;
int bestCategoryId = -1;
for(Element element: resultVector.all()) {
int categoryId = element.index();
double score = element.get();
System.out.println("categoryId:"+categoryId+" score:"+score);
if (score > bestScore) {
bestScore = score;
bestCategoryId = categoryId;
}
}
classify = labelIndex.get(bestCategoryId)+"(categoryId="+bestCategoryId+")";
return classify;
}
public static void printResult(){
System.out.println("檢測(cè)所屬類別是:"+getCheckResult());
}
}
1. 請(qǐng)介紹一下WebGIS的概念和作用,以及在實(shí)際應(yīng)用中的優(yōu)勢(shì)和挑戰(zhàn)。
WebGIS是一種基于Web技術(shù)的地理信息系統(tǒng),通過(guò)將地理數(shù)據(jù)和功能以可視化的方式呈現(xiàn)在Web瀏覽器中,實(shí)現(xiàn)地理空間數(shù)據(jù)的共享和分析。它可以用于地圖瀏覽、空間查詢、地理分析等多種應(yīng)用場(chǎng)景。WebGIS的優(yōu)勢(shì)包括易于訪問(wèn)、跨平臺(tái)、實(shí)時(shí)更新、可定制性強(qiáng)等,但也面臨著數(shù)據(jù)安全性、性能優(yōu)化、用戶體驗(yàn)等挑戰(zhàn)。
2. 請(qǐng)談?wù)勀赪ebGIS開發(fā)方面的經(jīng)驗(yàn)和技能。
我在WebGIS開發(fā)方面有豐富的經(jīng)驗(yàn)和技能。我熟悉常用的WebGIS開發(fā)框架和工具,如ArcGIS API for JavaScript、Leaflet、OpenLayers等。我能夠使用HTML、CSS和JavaScript等前端技術(shù)進(jìn)行地圖展示和交互設(shè)計(jì),并能夠使用后端技術(shù)如Python、Java等進(jìn)行地理數(shù)據(jù)處理和分析。我還具備數(shù)據(jù)庫(kù)管理和地理空間數(shù)據(jù)建模的能力,能夠設(shè)計(jì)和優(yōu)化WebGIS系統(tǒng)的架構(gòu)。
3. 請(qǐng)描述一下您在以往項(xiàng)目中使用WebGIS解決的具體問(wèn)題和取得的成果。
在以往的項(xiàng)目中,我使用WebGIS解決了許多具體問(wèn)題并取得了顯著的成果。例如,在一次城市規(guī)劃項(xiàng)目中,我開發(fā)了一個(gè)基于WebGIS的交通流量分析系統(tǒng),幫助規(guī)劃師們?cè)u(píng)估不同交通方案的效果。另外,在一次環(huán)境監(jiān)測(cè)項(xiàng)目中,我使用WebGIS技術(shù)實(shí)現(xiàn)了實(shí)時(shí)的空氣質(zhì)量監(jiān)測(cè)和預(yù)警系統(tǒng),提供了準(zhǔn)確的空氣質(zhì)量數(shù)據(jù)和可視化的分析結(jié)果,幫助政府和公眾做出相應(yīng)的決策。
4. 請(qǐng)談?wù)勀鷮?duì)WebGIS未來(lái)發(fā)展的看法和期望。
我認(rèn)為WebGIS在未來(lái)會(huì)繼續(xù)發(fā)展壯大。隨著云計(jì)算、大數(shù)據(jù)和人工智能等技術(shù)的不斷進(jìn)步,WebGIS將能夠處理更大規(guī)模的地理數(shù)據(jù)、提供更豐富的地理分析功能,并與其他領(lǐng)域的技術(shù)進(jìn)行深度融合。我期望未來(lái)的WebGIS能夠更加智能化、個(gè)性化,為用戶提供更好的地理信息服務(wù),助力各行各業(yè)的決策和發(fā)展。