japanesexxxx日本妇伦, 17ccgcg吃瓜网黑料爆料蘑菇, 日本一卡二卡3卡四卡无卡国色天香, 一二三四五免费观看完整版高清视频,中国激情久久区免费,2012中文字幕第8,国产清纯美女高潮出白浆直播,金服高潮,久久精品无码一区二区WWW

十年技術(shù)深耕細(xì)作

為您提供各行業(yè)互聯(lián)網(wǎng)私人定制開(kāi)發(fā)解決方案

免費(fèi)咨詢熱線15890197308
新聞資訊
把握先機(jī)贏得挑戰(zhàn)與世界同步
首頁(yè) 新聞中心 網(wǎng)絡(luò)安全

從“馬蜂窩數(shù)據(jù)事件”談軟件開(kāi)發(fā)

來(lái)源:創(chuàng)世紀(jì) 發(fā)布時(shí)間:2018-10-23瀏覽:3621次

從“馬蜂窩數(shù)據(jù)事件”談軟件開(kāi)發(fā)2018年10月,浦東機(jī)場(chǎng)  我是在世界杯期間才知道有個(gè)旅游網(wǎng)站叫“馬蜂窩”的,后來(lái)一直也沒(méi)關(guān)注。沒(méi)想到最近幾天,馬蜂窩重新回到了大眾的視野,只不過(guò),這次亮相好像是從廣告的另一面出現(xiàn)的,因?yàn)檫@幾篇文章對(duì)螞蜂窩進(jìn)行了數(shù)據(jù)分析,得出了若干結(jié)論?! ∧壳皝?lái)看,馬蜂窩網(wǎng)站對(duì)這幾篇文章提出了異議,但是似乎還沒(méi)有給出合理可信的解釋。事實(shí)的真相如何,或許還要等等才有答案。不過(guò)我還是推薦大家閱讀這幾篇文章,相信大多數(shù)人會(huì)從中獲得不少啟發(fā)?! ≌f(shuō)到數(shù)據(jù)分析,似乎許多人都會(huì)一點(diǎn),無(wú)非是算算總數(shù)啦,算術(shù)平均...

從“馬蜂窩數(shù)據(jù)事件”談軟件開(kāi)發(fā)

2018年10月,浦東機(jī)場(chǎng)

2018年10月,浦東機(jī)場(chǎng)

  我是在世界杯期間才知道有個(gè)旅游網(wǎng)站叫“馬蜂窩”的,后來(lái)一直也沒(méi)關(guān)注。沒(méi)想到最近幾天,馬蜂窩重新回到了大眾的視野,只不過(guò),這次亮相好像是從廣告的另一面出現(xiàn)的,因?yàn)檫@幾篇文章對(duì)螞蜂窩進(jìn)行了數(shù)據(jù)分析,得出了若干結(jié)論。

  目前來(lái)看,馬蜂窩網(wǎng)站對(duì)這幾篇文章提出了異議,但是似乎還沒(méi)有給出合理可信的解釋。事實(shí)的真相如何,或許還要等等才有答案。不過(guò)我還是推薦大家閱讀這幾篇文章,相信大多數(shù)人會(huì)從中獲得不少啟發(fā)。

  說(shuō)到數(shù)據(jù)分析,似乎許多人都會(huì)一點(diǎn),無(wú)非是算算總數(shù)啦,算術(shù)平均啦,看看極值啦,好一點(diǎn)的還知道方差、標(biāo)準(zhǔn)差。但是光這樣做數(shù)據(jù)分析,能得出的 結(jié)論相當(dāng)有限。怎么辦呢?更復(fù)雜的數(shù)據(jù)分析要怎么做?許多人一看到“更復(fù)雜”,就想起復(fù)雜的數(shù)學(xué)公式、建模、曲線擬合等等,讓人不勝頭痛。

  其實(shí)數(shù)據(jù)分析也可以不用那么復(fù)雜,搞清楚數(shù)據(jù)之間的關(guān)聯(lián)就可以有不少發(fā)現(xiàn)了。比如這幾篇文章就提供了非常有趣的視角,比如:

  ?所有創(chuàng)造內(nèi)容的賬號(hào)中,最活躍的1萬(wàn)5千個(gè)賬號(hào),他們的行為似乎有共同的節(jié)奏,同時(shí)活躍,同時(shí)沉寂;

  ?所有餐飲點(diǎn)評(píng)的發(fā)布日期分布,周一到周五保持了相對(duì)平緩的變化,周六周日則猛跌,大眾點(diǎn)評(píng)則以周末兩天為高峰;

  ?所有酒店點(diǎn)評(píng)的發(fā)布日期分布,周四到周六開(kāi)始驟降,而攜程藝龍則以周末為高峰;

  ?所有餐飲點(diǎn)評(píng)的發(fā)布時(shí)間分布,中午12點(diǎn)-13點(diǎn),下午18點(diǎn)-20點(diǎn)為低谷,這兩個(gè)時(shí)間段對(duì)應(yīng)大眾點(diǎn)評(píng)為高峰;

  看到這些分析的時(shí)候,我忽然想起許多年前看過(guò)的一部破案電視劇。犯罪分子為了打劫資金,苦心孤詣提前半年做準(zhǔn)備,有人提前“出國(guó)打工”,有人男 扮女裝,時(shí)間選擇大年三十以鞭炮聲為掩護(hù)……劫案完全按照預(yù)先的設(shè)計(jì)進(jìn)行,可謂天衣無(wú)縫。警方翻來(lái)覆去偵查,始終找不到任何破綻和線索。最終,案件的突破 來(lái)自一個(gè)小細(xì)節(jié):犯罪嫌疑人說(shuō)自己某年某月某日乘火車(chē)回來(lái),所有的行程都能對(duì)上,都有證明。然而警方檢查當(dāng)天車(chē)站記錄的時(shí)候,發(fā)現(xiàn)當(dāng)天那次火車(chē)晚點(diǎn)了。沿 著這條線索,之前那些精心設(shè)計(jì)、嚴(yán)絲合縫的環(huán)節(jié)就像多米諾骨牌一樣悉數(shù)倒下了……

  這幾天的螞蜂窩事件,讓我想起了之前的電視劇,它們說(shuō)明的都是同樣的道理:制造幾份漂亮的數(shù)據(jù)(證據(jù))是很容易的,但是制造內(nèi)在邏輯統(tǒng)一的數(shù)據(jù)(證據(jù))是很難的。

  那么,上面說(shuō)的這些事情,和軟件開(kāi)發(fā)有什么關(guān)系呢?

  要知道,我們開(kāi)發(fā)的軟件大多是要運(yùn)行在現(xiàn)實(shí)世界里的,是要與現(xiàn)實(shí)世界打交道,與現(xiàn)實(shí)世界保持一致的。只不過(guò)真實(shí)世界的內(nèi)在邏輯——火車(chē)晚點(diǎn)了就 不能直接坐上當(dāng)班汽車(chē),飯點(diǎn)才有事件和興致發(fā)餐館點(diǎn)評(píng)——往往不能原樣進(jìn)入軟件世界,所以軟件系統(tǒng)里只剩下數(shù)據(jù)作為真實(shí)世界的載體,用數(shù)據(jù)來(lái)反映世界。雖 然大家常說(shuō)“要用數(shù)據(jù)說(shuō)話”,但許多時(shí)候數(shù)據(jù)也是會(huì)愚弄人甚至騙人的。那么怎樣避免被數(shù)據(jù)愚弄,怎樣識(shí)破數(shù)據(jù)的騙局呢?簡(jiǎn)單的經(jīng)驗(yàn)是,不能僅僅就數(shù)據(jù)來(lái)看 數(shù)據(jù),而要看到許多數(shù)據(jù)之外的東西。

  數(shù)據(jù)之外有什么?最明顯的是現(xiàn)實(shí)世界的約束。比如汽車(chē)上坡當(dāng)然要比下坡慢,口袋里沒(méi)有鈔票了就買(mǎi)不了東西等等。在生活中,這些東西都很好理解, 似乎是“不言自明”的,甚至你沒(méi)覺(jué)察到也擺脫不了這些約束。但是進(jìn)入到軟件的世界里,程序員開(kāi)發(fā)的時(shí)候往往就把這些約束忘在腦后了,或者完全依賴(lài)于產(chǎn)品經(jīng) 理給出的規(guī)則。所以有的游戲里汽車(chē)上坡和下坡的速度竟然是一樣的,有的賬戶系統(tǒng)可以可以“逆向”充值給銀行卡,儲(chǔ)值余額卻變成負(fù)數(shù)…… 

  我剛剛工作的時(shí)候,在書(shū)上看到的一個(gè)例子讓我印象深刻。天上的飛機(jī)需要知道航向,所以Plane對(duì)象有個(gè)成員變量是heading。通常我們會(huì) 用一個(gè)整型數(shù)值表示它,但是那本書(shū)上提到這是不對(duì)的!因?yàn)楹较蛑荒茉?到360度之間,所以你用整型數(shù)值時(shí)一定需要給setter加上一段邏輯,確保這個(gè) 值只能設(shè)置在0到360之間。否則,難保其它系統(tǒng)讀到heading時(shí)不會(huì)出錯(cuò)?!爸挥屑由狭藢?duì)應(yīng)的約束,變量才不再是原始普通的數(shù)字,而變成了能承載業(yè) 務(wù)價(jià)值的數(shù)據(jù)”。

  許多年過(guò)去了,我仍然記得當(dāng)時(shí)的驚訝:原來(lái)竟然可以這樣!原來(lái)竟然應(yīng)該這樣!

  后來(lái)我自己在開(kāi)發(fā)中一直保持這樣的習(xí)慣,雖然麻煩,也因此避免了許多故障。再往后看到《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》才明白:在設(shè)計(jì)軟件系統(tǒng)時(shí),領(lǐng)域知識(shí)往往 是最重要的,而領(lǐng)域知識(shí)的一大部分就在于識(shí)別領(lǐng)域中的各種約束。這些約束很難由產(chǎn)品經(jīng)理巨細(xì)靡遺地窮舉出來(lái),而必須由參與開(kāi)發(fā)的所有人達(dá)成共識(shí),在系統(tǒng)里 實(shí)現(xiàn)它。但是無(wú)論如何,這些約束都是必不可少的,沒(méi)有它們,系統(tǒng)就很可能出現(xiàn)各種稀奇古怪的現(xiàn)象。

  我曾經(jīng)見(jiàn)過(guò)奇特的倉(cāng)儲(chǔ)費(fèi)賬單,數(shù)額大到讓所有人吃了一驚,大家伙查來(lái)查去才發(fā)現(xiàn)入倉(cāng)時(shí)間竟然在公元229年。如果約束落在系統(tǒng)里,第一時(shí)間發(fā)現(xiàn) 異常并且報(bào)出來(lái),就可以省去后面的許多折騰。當(dāng)時(shí)我說(shuō)“公元229年這還是三國(guó)時(shí)期呢”,所有人都笑了。其實(shí)這個(gè)例子一點(diǎn)也不好笑,看看我們常見(jiàn)的系統(tǒng), 身高、年齡、體重、車(chē)速、生日等等數(shù)據(jù),許多時(shí)候就是想當(dāng)然直接用原生數(shù)據(jù)類(lèi)型來(lái)表示的,所以取值為負(fù)數(shù)、甚至幾千萬(wàn)上億也“無(wú)可厚非”,當(dāng)然后果也非常 嚴(yán)重。

  數(shù)據(jù)之外的天地不只有約束,數(shù)據(jù)的內(nèi)在邏輯和關(guān)聯(lián)也是相當(dāng)重要的。

  在分析馬蜂窩的文章里提到,馬蜂窩做了些修改,比如清空了某些賬號(hào),所以看起來(lái)數(shù)據(jù)正確了。但是稍作一點(diǎn)拓展就會(huì)發(fā)現(xiàn),數(shù)據(jù)完全對(duì)不上,比如之 前這些賬號(hào)留下的那些牛頭不對(duì)馬嘴,“身份今天是男明天是女”的點(diǎn)評(píng)仍然存在著。如果數(shù)據(jù)真實(shí),并不會(huì)發(fā)生性別劇烈變化的情況;如果數(shù)據(jù)關(guān)聯(lián)可信,也不會(huì) 出現(xiàn)“刪了賬號(hào)帖子還在”的情況。

  不過(guò),這種“按下葫蘆浮起瓢”,“顧頭不固腚”的現(xiàn)象并不是個(gè)例,我就見(jiàn)過(guò)許多系統(tǒng)有這種問(wèn)題,稍微改動(dòng)某個(gè)細(xì)節(jié),就會(huì)全盤(pán)大亂。這還不是最要命的,最要命的是發(fā)現(xiàn)異常的時(shí)候根本不知道因果鏈條是怎樣的,從哪里萌發(fā),中間經(jīng)歷了哪些環(huán)節(jié),下面還會(huì)影響什么……

  之所以會(huì)出現(xiàn)這種問(wèn)題,不少時(shí)候是系統(tǒng)開(kāi)發(fā)過(guò)于想當(dāng)然,過(guò)于圖省事,假設(shè)其它一切都是“按部就班”正常發(fā)生的,所以只記錄了“最核心”的數(shù)據(jù), 相關(guān)的數(shù)據(jù)和狀態(tài)則完全沒(méi)有保存。于是,系統(tǒng)的狀態(tài)就只能靠一堆零散孤立的點(diǎn)來(lái)承載,點(diǎn)與點(diǎn)之間沒(méi)有明確關(guān)聯(lián),不能彼此印證,也無(wú)法回溯歷史上的各個(gè)片 段。

  這方面最明顯的例子就是記賬系統(tǒng)。許多人都見(jiàn)過(guò)“想當(dāng)然”的記賬系統(tǒng),每一筆賬目發(fā)生的時(shí)間、金額都要記錄下來(lái),但也僅此而已了,絕沒(méi)有記錄所 涉及賬戶的即時(shí)余額,涉及的賬戶里也沒(méi)有對(duì)應(yīng)的記錄。結(jié)果某天發(fā)現(xiàn)賬戶出錯(cuò),只能手工一筆筆地追查,效率極低,而且容易額外引入錯(cuò)誤。

  出現(xiàn)這種情況當(dāng)然很糟糕,但也有一定的道理。記賬這回事已經(jīng)有幾千年的歷史,但“在會(huì)計(jì)活動(dòng)中對(duì)每一項(xiàng)經(jīng)濟(jì)業(yè)務(wù)按相等金額在兩個(gè)或兩個(gè)以上有關(guān) 賬戶相互對(duì)應(yīng)地同時(shí)進(jìn)行登記”的復(fù)式簿記法,直到12世紀(jì)才在意大利誕生,引入我國(guó)更是要等到晚清時(shí)期。如今許多做軟件開(kāi)發(fā)的人未必學(xué)過(guò)會(huì)計(jì)知識(shí),做出的 記賬系統(tǒng)沒(méi)有復(fù)式簿記的思想,也情有可原。

  其實(shí)按我的經(jīng)驗(yàn),往往越是復(fù)雜的系統(tǒng),越是復(fù)雜的功能,越是應(yīng)該學(xué)“復(fù)式簿記”,也就是不怕麻煩,清楚記錄因果鏈條,提供詳細(xì)回溯能力。以前我 們?cè)鲞^(guò)一套計(jì)費(fèi)系統(tǒng),其實(shí)就是把一大堆階梯價(jià)目表做到系統(tǒng)里,上線后經(jīng)常有客戶來(lái)吵架,說(shuō)計(jì)費(fèi)出錯(cuò)了,每次都要?jiǎng)谛膭诹?lái)核對(duì)。即便系統(tǒng)沒(méi)有出錯(cuò),也沒(méi) 有辦法第一時(shí)間否認(rèn)系統(tǒng)出錯(cuò),第一時(shí)間證明給用戶看。

  后來(lái)大家痛定思痛,花大力氣把計(jì)算過(guò)程做成了“自解釋”的:每一步都有詳細(xì)的記錄,按照哪一份標(biāo)價(jià)表格的第幾條規(guī)則,具體是怎么計(jì)算的……總 之,每一筆費(fèi)用都有詳細(xì)的計(jì)算過(guò)程可查,而且各子系統(tǒng)之間需要維持狀態(tài)關(guān)聯(lián),保證彼此的數(shù)據(jù)和狀態(tài)實(shí)時(shí)一致,如果出現(xiàn)問(wèn)題及時(shí)報(bào)警。 這樣做繁瑣是繁瑣了點(diǎn),但上線之后不久就解決了爭(zhēng)議,程序員有了更多不被打擾的時(shí)間,用戶也有了信心。

  最后,在我們分析問(wèn)題時(shí)也應(yīng)當(dāng)注意數(shù)據(jù)的關(guān)聯(lián)。

  我經(jīng)常說(shuō),正確合理的分析,一定有多個(gè)獨(dú)立數(shù)據(jù)來(lái)源可以彼此驗(yàn)證。之所以這么說(shuō),是因?yàn)榭吹搅颂嗟姆治?,給出的原因、理由看似合理,卻根本無(wú) 法得到多重驗(yàn)證,所以其實(shí)根本沒(méi)有找對(duì)原因。比如某個(gè)程序異常的原因是“網(wǎng)絡(luò)瞬斷”,那么它用的是什么樣的網(wǎng)絡(luò)?哪一段在當(dāng)時(shí)發(fā)生了抖動(dòng)?共用此網(wǎng)絡(luò)的其 它應(yīng)用有沒(méi)有受影響?如果我們?cè)倌M一次網(wǎng)絡(luò)瞬斷,程序的表現(xiàn)是否相同?…… 只有得到這一系列答案,掌握多種數(shù)據(jù),我們才能最終下結(jié)論說(shuō)是“網(wǎng)絡(luò)瞬斷”。否則一口咬定“網(wǎng)絡(luò)瞬斷”,往往要么是能力不及,要么是偷懶甩鍋。

  總而言之,螞蜂窩的事情或許還要“讓子彈飛一會(huì)兒”,但檢查自己手頭的代碼有沒(méi)有落實(shí)約束,有沒(méi)有實(shí)踐“復(fù)式簿記”的思想,定位問(wèn)題時(shí)多找一些數(shù)據(jù)彼此驗(yàn)證,卻是馬上就可以做的事情。



優(yōu)化型網(wǎng)站建設(shè)推薦: 鄭州網(wǎng)站建設(shè) 開(kāi)封網(wǎng)站建設(shè) 平頂山網(wǎng)站建設(shè) 安陽(yáng)網(wǎng)站建設(shè) 鶴壁網(wǎng)站建設(shè) 新鄉(xiāng)網(wǎng)站建設(shè) 焦作網(wǎng)站建設(shè) 濮陽(yáng)網(wǎng)站建設(shè) 許昌網(wǎng)站建設(shè) 漯河網(wǎng)站建設(shè) 三門(mén)峽網(wǎng)站建設(shè) 南陽(yáng)網(wǎng)站建設(shè) 商丘網(wǎng)站建設(shè) 信陽(yáng)網(wǎng)站建設(shè) 周口網(wǎng)站建設(shè) 駐馬店網(wǎng)站建設(shè) 上海網(wǎng)站建設(shè) 廣州網(wǎng)站建設(shè) 深圳網(wǎng)站建設(shè) 北京網(wǎng)站建設(shè) 杭州網(wǎng)站建設(shè) 長(zhǎng)沙網(wǎng)站建設(shè) 蘇州網(wǎng)站建設(shè) 南京網(wǎng)站建設(shè) 天津網(wǎng)站建設(shè) 武漢網(wǎng)站建設(shè) 成都網(wǎng)站建設(shè) 大連網(wǎng)站建設(shè) 東莞網(wǎng)站建設(shè) 佛山網(wǎng)站建設(shè) 樂(lè)清網(wǎng)站建設(shè) 海南網(wǎng)站建設(shè) 寧波市網(wǎng)站建設(shè) 南昌網(wǎng)站建設(shè) 福州網(wǎng)站建設(shè) 常州網(wǎng)站建設(shè) 南通網(wǎng)站建設(shè) 長(zhǎng)春網(wǎng)站建設(shè) 東營(yíng)網(wǎng)站建設(shè) 南寧網(wǎng)站建設(shè) 青島網(wǎng)站建設(shè) 邯鄲網(wǎng)站建設(shè) 保定網(wǎng)站建設(shè) 安溪網(wǎng)站建設(shè) 東明網(wǎng)站建設(shè)