1. 程式人生 > >(轉)慘烈:1個Bug,45分鐘損失4億多美元

(轉)慘烈:1個Bug,45分鐘損失4億多美元

慘烈:1個Bug,45分鐘損失4億多美元

【導讀】:2012年8月1日,一個 bug 一步步讓騎士資本在交易中損失了 4.65 億美金,並且直接導致破產。這個故事涉及的程式碼庫,是一個大型、無人維護、腐爛的程式碼庫,程式碼本身將近 9 年沒用過了,真是一次集合了技術債務所有特點的慘案。

(網路圖)

2014 年我參加了一場會議並就 DevOps、程式碼配置和持續交付等話題進行發言,講到 DevOps 和持續交付的時候我說了下面這個故事,來闡述自動化、可重複部署的重要性。那次會議之後,有好多人讓我在部落格上分享這個故事。這是一個真實的故事,下面根據我瞭解的來進行分享(我並沒有親身經歷)。
下面講的是一個資產 4.6 億美元的公司在 45 分鐘內破產的故事。

背景

Knight Capital Group(騎士資本集團)是美國一家全球性的金融服務公司,主要業務有 做市、電子交易系統和機構交易。2012 年,騎士資本是美國股票市場最大的經紀商,分別佔有紐交所和納斯達克 17% 的市場份額。騎士資本的電子貿易部門管理的平均日交易量超過 33 億股,交易額高達 210 億美元。這可不是開玩笑!

到 2012 年 7 月 31 日,騎士資本擁有高達 3 億 6500 萬美元的現金及現金等價物。

2012 年 8 月 1 日,紐交所計劃啟動零售流動性專案(該專案旨在通過類似騎士資本這樣的經濟商向普通投資者提供更優惠的股票交易價格),為此,騎士資本對他們自動化且高速的演算法程式 SMARS 進行了更新,該程式向交易所傳送執行命令。SMARS 程式的核心功能之一是從騎士資本交易平臺的其他部分接收訂單(“父”訂單),然後發出一個或多個“子”訂單。換句話說,SMARS 程式從交易平臺接收大訂單,然後根據買家或賣家的股票交易數量把大訂單拆分成合適的小訂單。父訂單越大,子訂單越多。

這次更新主要是為了把過時或沒用的功能替換掉,比如說“Power Peg”。這個功能已經 8 年沒有用到過了( 8 年都沒用到的功能程式碼仍然存在,這的確很稀奇,但這不是重點)。更新後的程式碼對以前用來啟用 Power Peg 功能的識別符號進行了更改。這次更新經全面測試後證明安全可靠,那問題究竟出在哪?

還有哪裡可能出問題麼?的確是!

從 2012 年 7 月 27 日至 31 日,騎士資本把軟體手動部署到公司為數不多的伺服器上——總共就 8 臺。以下是美國證交會關於這次人工部署過程的檔案描述(順便一提,如果你的操作被記錄到證交會檔案裡可就大事不妙了)。

“在部署過程中,相關技術人員忘記把新程式碼拷貝到這八臺伺服器其中的一臺上。騎士資本也沒有安排另外的技術人員對部署過程進行復查,所以沒有人意識到第八臺機器上的 Power Peg 程式碼並沒有被刪除,新的 RLP 程式碼也沒有被新增。對於複查,騎士資本並沒有相關的書面流程。 —— 美國證監會檔案 | 釋出編號 70694 | 2013-10-16”

東部時間 2012 年 8 月 1 日早上 9:30 股市開盤,騎士資本開始處理來自 RLP 新專案的交易商的訂單。其中七臺正確部署的伺服器開始正確地處理訂單。但是發向第八臺伺服器的訂單觸發了被更改的識別符號,執行的是無效的 Power Peg 程式碼。

來自「殭屍」程式碼的攻擊

我們得弄清楚這段「殭屍」程式碼是用來幹什麼的。這個功能以前是用來對比買/賣股票的父訂單和子訂單的數額的。父訂單數額一旦達標,Power Peg 就會向系統反饋停止訂單拆分。總的來說,Power Peg 功能可以持續追蹤子訂單,而父訂單一旦完成,該功能會立即終止子訂單活動。然而 2005 年,騎士資本把跟蹤計數這一功能轉移到稍微靠前一些的程式碼裡(因此 Power Peg 不再具備跟蹤計數功能了)。

當第八臺機器上的 Power Peg 功能被啟動後,由於它無法跟蹤對比父訂單的股票數,所以子訂單不斷產生並執行,這就成了無法終止的死迴圈。

災難性的 45分鐘

你可以設想一下,當一個失去追蹤計數功能的系統無限制地、高速地向市場發出訂單時情況會有多糟糕。

早上 9:30 開盤後立即有人意識到出了問題。一分鐘後,華爾街大部分人都感覺到大事不妙了,股票市場中某些個股湧現出大量不符合常規交易量的訂單。又過了一分鐘,人們發現交易仍然沒有停止——就高速交易系統而言,交易根本停不下來。為什麼沒人嘗試停止出問題的系統呢?事後發現,這個系統根本沒有切斷開關。在 45 分鐘之內,騎士資本執行了超過日均交易額 50% 的訂單,導致部分股票市值上升超過 10%,帶來的連鎖反應是其他股票價格暴跌。

更糟的是,早在上午的 8:01(這時 SMARS 在進行開市前交易),騎士資本的系統就自動傳送了有關問題的郵件。這些標記為 SMARS 的郵件提及 Power Peg 功能出現了問題。從 8:01 到 9:30,97 個個人郵箱都收到了這封郵件。估計這些郵件並沒有系統警報的作用,所以並沒有人馬上檢視。天吶。

在這災難性的 45 分鐘裡,騎士資本想出幾個對策來終止錯誤的交易。由於這個系統沒有切斷開關(也沒有相關情況的文件說明),他們只能在每分鐘交易 800 萬股的線上環境中診斷問題起因。然而他們沒能發現系統問題出在哪裡,只能解除安裝已經部署到幾臺伺服器上的新程式碼。換句話說,他們把有用的程式碼刪掉反而留下了問題程式碼。情況惡化了,除了第八臺未被正確部署的伺服器,另外七臺伺服器中的父訂單也觸發了 Power Peg 功能。最後,他們終於想辦法終止了交易系統,然而已經過去了 45 分鐘。

在開市後的 45 分鐘內,騎士資本接收並處理了 212 個父訂單,SMARS 發出數百萬個子訂單,累計對 154 支股票進行了 400 萬次交易,交易量超過 3 億 9700 萬股。在內行人看來,騎士資本建立了 80 支個股 35 億美元的淨多頭倉位和 74 支個股 31 億 5000 萬美元的淨空頭倉位。對外行人來說,騎士資本在 45 分鐘內虧損了 4 億 6000 萬美元,而上文提到,騎士資本僅有 3 億 6500 萬美元。僅僅 45 分鐘,騎士資本從美國股市最大的交易商和紐交所以及納斯達克的大莊家變得一錢不值。破產後,騎士資本有 48 小時的時間籌集資金彌補損失(騎士資本還有大約六個投資者投資的 4 億美元)。騎士資本最終被 Getco LLC 收購(2012 年 12 月),合併後新公司更名為 KCG Holdings。

吸取教訓

所有運維團隊都應該從騎士資本慘案中吸取教訓。不僅要開發優秀的軟體並進行全面測試,還需要把軟體正確地交付給交易所,這樣客戶才能獲得正確的結果(才能避免公司破產)。這個事件中,我們不能把矛頭全部對準部署 SMARS 的技術人員,騎士資本的業務流程根本不足以應付他們所面對的問題。此外,這種流程(或缺陷)本來就很容易出錯。是人都會犯錯,不論何時,只要你的部署過程依賴於人工指令操作,就有可能出現問題。指令本身、對指令的解讀以及指令的執行過程都可能存在隱患。

部署應該是自動化且可重複的,這個過程應該儘量排除人為因素的干擾。假如騎士資本採用的是自動部署系統——配置、部署和測試完全自動化,這場悲劇可能就不會發生了。

持續交付的某些原則也同樣適用(即使你執行的不是一個完整的持續交付過程):
軟體釋出過程應該是可靠且可重複的。
合理的情況下,儘可能實現自動化。

另外:關於補充。。。。。。。。。。。。。。

騎士資本的夢魘:程式化交易就是露骨的投機魔王?
撲克投資家-林輝 · 1 年前
撲克財經旗下品牌:最值得信任的大宗商品產業和金融服務業智庫。跨界、深度、專注——匯聚業內最值得分享、最有資訊濃度的知識。歡迎移步微信公眾平臺:puoketrader

原文連結:騎士資本的夢魘:程式化交易就是露骨的投機魔王?

撲克導讀

程式化交易是一把雙刃劍,可平滑不同市場和關聯產品價格,提供市場流動性,提高價格發現效率,也有利於克服交易中人為因素的影響。但是,程式化交易也有加大市場波動、影響市場公平性、增加技術系統壓力等消極影響,不單止是國內,境外監管機構對程式化交易的監管力度也在不斷加大。對於中國這種不成熟的市場而言,程式化就是懸在市場頭上的達摩克利斯之劍,撲克投資家希望用騎士資本這個案例,向讀者展示一次失敗的程序升級是如何把一個高頻交易帝國搞崩潰的。

▌來自 林建_NYSE的部落格

下面是個悲催的案例,瞬間秒殺一個著名的公司。

2012年7月27日星期五,一位計算機系統管理人員進入了騎士資本的資料中心,他的任務是要為裝載在八臺生產伺服器上的高頻交易系統SMARS進行更新,而且必須在週日,即7月31日完成所有的升級工作,併為更新的SMARS軟體系統做好下週一,即8月1日的交易準備。

不幸的是,這位系統管理人員的工作出現了差錯,他遺漏了一臺伺服器,只為7臺生產伺服器升了級。正是這位系統管理員的胖手指,導致了騎士資本在8月1日紐交所開市之後不到一個小時的交易時間裡損失了4.6億美元。之後的騎士資本陷入經營危機,五個月之後便被GETCO公司兼併。

01

發怒的高頻交易系統

12月1日是一個星期三,本應該是一個非常普通的交易日。紐交所的交易系統在開市交易之前就從市場接收報價訂單,一切正常,直到9時30敲響開市的鐘聲。當開市的鐘聲被敲響之後紐交所立刻發現,這一天註定了是一個極不尋常的交易日。

剛剛開市的紐交所就發現從市場收到了不正常的交易訂單流量,數量不但巨大,而且涉及的股票程式碼範圍也很廣。開市20分鐘之後非正常的交易訂單就如同發怒的海潮一樣湧向紐交所,直接觸發了市場為限制股票價格波動達到10%的斷路開關(Circuit Breaker),並自動暫停了多隻股票的交易。

9:40分之前紐交所還無法判斷交易訂單的來源,直到時間再過了10分鐘,即9:50分時紐交所才最終確定了這些非正常的交易訂單來自於騎士資本集團公司。

而此時公司總部位於新澤西州澤西城的騎士資本集團公司也陷入了前所未有的混亂。當得知公司的交易系統向紐交所發出了超乎尋常數量的交易訂單之後,公司的高層管理人員就如同過江之鯽似的趕到公司的交易廳,但是公司的總裁卻由於前一天膝蓋開刀而並不在其中。直到10:00點鐘,紐交所開市交易之後過了30多分鐘,在騎士資本集團和紐交所的共同努力之下才停止了騎士資本集團的交易系統向紐交所傳送任何的交易訂單。

騎士資本的總裁湯姆斯·傑伊斯(ThomasJoyce)在中午時分才著著柺杖趕到交易大廳,並在交易大廳呆了10多分鐘,直到確認事件已經平息,且不再出現新的損失才離開。

從市場的反映方面看,當騎士資本集團的交易平臺開始向紐交所發出錯誤的交易訂單之後,一些股票開盤後突然出現離奇的漲幅和跌幅。例如,奇才軟體公司(WizzardSoftware Corp)的股票從昨天的收盤價3.5014.76美元的價位,知名的阿伯克龍比和菲奇服裝公司的股票在幾分鐘之內便攀升了9%,從之前的33.8036.84。另一家著名的哈雷戴維森摩托公司的股票突然掉了12%,從43.23m37.84美元。

當天收市之後紐交所宣佈,查驗了140只受到事件影響的非正常股票交易,時間段從9:30到10:15分共45分鐘,最終決定僅取消6只股票的交易。取消交易意味著這6只股票當天的所有成交撮合全都是無效交易,不會再進入清算體現。雖然這六家公司的市值和股票交易的規模都不是很大,紐交所還是宣佈不接受任何形式的申述。

被撤銷交易的6家上市公司分別是:

奇才軟體公司(WizzardSoftware Corp., NYSE:WZE)

中國臍帶血庫(China CordBlood Corp., NYSE:CO)

裡夫斯公用收益基金(ReavesUnility Income Fund, NYSE:UTG)

E-住房控股公司(E-House(China) Holdings, NYSE:EJ)

美國攝影製圖公司(AmericanReprographics Company, NYSE:ARC)

快銀資源公司(QuicksilverResources, NYSE:KWK)。

騎士資本在交易事件之後立刻向美國證監會提出申述,要求取消更多的錯誤交易,最終沒能獲得成功。

根據事後的報道,騎士資本集團交易系統的錯誤是由一個新安裝的軟體模組所引發,對現有交易系統平臺升級的原因是為了配合紐交所為指定做市商的交易系統所做的升級。

騎士資本自查的結果歸結到一個軟體的模組。這是一個已經被廢棄不用了很長時間的軟體模組,但是始終存在於交易系統之中沒被刪除掉。通常,這樣的廢棄模組在軟體行業中被稱為“死”模組。騎士資本的技術人員在為系統升級時本應該用新的軟體模組替換“死”模組,但是陰錯陽差的沒有更換。8月1日早上交易系統開始執行的時候,在某一特定條件下觸發計算機執行了這個 “死”軟體模組,導致了事件的發生。

很顯然,這是一起由計算機引發的差錯,但是根源卻在於編寫軟體和維護計算機系統的人,是一起人為的嚴重交易事故。

根據美國證監會公佈的調查結果表明,騎士資本的交易交易系統當時共收到了由零售客戶發出的212筆小交易訂單,交易系統應該執行的是把這212筆交易訂單傳送到紐交所去成交。然而,騎士資本出了錯的交易系統卻在不到45分鐘的時間裡用高頻率傳送了幾百萬筆交易訂單,致使紐交所在這段時間裡成交了超過400萬筆的交易訂單,平均每秒鐘的成交超過了1500筆,涉及的股票程式碼達到了154個。

就在這短短的45分鐘的時間裡,騎士資本的交易系統的總交易量就達到了66.53.978035億美元,融券做空了74只股票,價值約31.54.6億美元。

騎士資本的發言人在事件的第二天就聲稱出錯的軟體已經被替換,並宣告事件並沒有對公司的客戶和業務產生負面的影響。

然而,這一事件所產生的後果卻遠離了這位發言人樂觀的估計。雖然只是計算機軟體中出現的一個小小的錯誤,但是對騎士資本業務的打擊卻是巨大的。隨著時間的推移,事件對騎士資本的損害和影響便逐漸的顯現出來。

02

2無法承受的代價

事發之後,騎士資本面臨的首要問題是如何穩定龐大的客戶群體對公司業務的信心。要看清楚這一問題,首先讓我們瞭解騎士資本的業務範圍、市場規模、服務的專案和客戶狀況。

騎士資本業務簡介

成立於1995年的騎士資本是華爾街上名聲顯赫的重量級證券公司,被行業稱之為市場的支柱公司之一,並以其穩健的行業風格和專業的服務領域而著名。不但規模龐大,吸引了許多重量級的客戶,而且業務範圍遍及美國、歐洲和亞洲。其市場的交易份額佔到紐交所交易總量的17.3%,納斯達克證券市場(Nasdaq Stock market,簡稱納斯達克)的16.9%,自2011年到2012年間的日交易總量達到全美金融證券市場的10%。服務的客戶物件既包括了買方客戶,也包括了賣方客戶,同時還有大量的零售客戶。涉及的金融產品涵蓋了全球金融市場的股票、固定收益產品、外匯,期貨和期權等。除了為客戶提供全方位的經紀業務服務之外,還通過公司的交易平臺為客戶提供高頻交易服務。

騎士資本主要的業務涉及三大塊,即做市商業務、電子交易執行服務業務、以及機構銷售和交易業務。

做市商業務是騎士資本最大、也是最重要的業務,範圍涉及全球的金融市場,涵蓋的產品幾乎包括了所有的資產型別。除了美國證券市場的電子做市商業務之外,還包括現金做市商業務、紐交所的指定做市商業務,歐洲市場的股票做市商業務,美國市場的股指期貨做市商業務等。騎士資本是紐交所和紐交所市場交易所(New York Stock Exchange Market,簡稱NYSE MKT)前生是美國證券交易所 )最大的做市商業務公司,所涉及的股票數量達到了675只,年交易量近$200億美元。

紐交所交易大廳中正在執行指定做市商業務的騎士資本的員工

電子交易服務業務屬於典型的經紀商業務之一。通過一系列自主開發的電子交易產品,騎士資本搭建了一個高頻交易平臺,為客戶提供高效和快速的市場資訊和交易服務業務。騎士資本的電子做市商平臺採用嵌入式量化模型驅動的電子交易平臺,會根據市場的資料和相關資訊向市場傳送交易訂單,幫助客戶在高度分割的市場環境中高速高效的完成最終的交易業務。公司的電子交易服務業務所涉及的產品型別包括證券、期貨、期權和外匯等。

機構銷售和交易業務是典型的賣方市場業務,通過提供全方位的經紀業務服務以換取買方市場機構投資者的交易業務,在通過公司的高頻交易平臺完成客戶的交易。騎士資本為客戶提供的產品物件包括全球的股票、債權、ETF、股指和期貨、外匯、借貸資本市場、資產證券化、和資產管理,等等。主要物件機構客戶為開放式基金、保險公司、養老基金、慈善機構,等等。

騎士資本的交易系統可以交易美國證券市場上的19000多隻證券產品,並與100多個交易所、電子交易中心、暗池和其他做市商的交易中心相連線。除此之外,騎士資本還是美國證券市場上最大的流動性提供商之一。

一些在美國證券市場上著名和重量級的證券公司都是騎士資本的客戶,通過騎士資本的電子交易平臺向交易所和其他交易中心傳送交易訂單。一些重要的經紀業務客戶包括賣方市場上著名的網上折扣經紀公司E-Trade證券經紀公司(簡稱ET證券)、TD Ameritrade證券經紀公司(簡稱TDA證券)和史考特證券經紀公司(Scottrade,簡稱S證券證券),在買方市場上的巨無霸公司先鋒基金和富達基金,等等。其中,TDA證券是美國最大的網上經紀商公司,客戶賬戶的數量接近600萬,擁有的客戶資產達到50002萬億美元。富達基金更是美國最大的共同基金管理公司,根據2013年2月28日的評估結果,總共管理超過500只不同型別的基金和近$6萬億美元的資產。

騎士資本的高頻交易平臺可以把來自於不同機構客戶和零售客戶的交易訂單組合起來,形成一個巨大的撮合池。當市場的流動性不夠充分的時候,其做市商業務還必須投放公司的自有資金進入市場,為市場提供需要的流動性。這也是為什麼騎士資本的做市業務需要大量流動資金支撐的原因。

面臨的破產風險

源於IT系統的錯誤導致了騎士資本4.6

相關推薦

()慘烈1Bug45分鐘損失4美元

慘烈:1個Bug,45分鐘損失4億多美元 【導讀】:2012年8月1日,一個 bug 一步步讓騎士資本在交易中損失了 4.65 億美金,並且直接導致破產。這個故事涉及的程式碼庫,是一個大型、無人維護、腐爛的程式碼庫,程式碼本身將近 9 年沒用過了,真是一次

程式設計師求問如何追產品經理?網友出招BUG不用謝!

如果有想學習Web的程式設計師,可來我們的Web學習扣群:957389100免費送Web的視訊教程噢! 我整理了一份適合19年學習的Web乾貨,送給每一位想學的小夥伴,並且每天晚上8點還會在群內直播講解Web知識,歡迎大家前來學習哦。 一位男程式設計師發帖求教如何去追一個同

程式設計師領導讓我寫BUG這可咋整?網友你認真寫就行

眾所周知,在外行看來程式設計師好像很高逼格的職業,每天用計算機敲著看不懂的英文單詞,卻能實現非常非常多的效果和功能。幾乎現在所用的都會有程式設計師的影子。但外行不知道的是,每個效果和功能都是由成千上萬的程式碼組成的,並且其中還有成百上千的BUG,還得一個個的修改。這就不得不耗費非常多的經歷和時間來實

Android EditText字數限制中文算2字元英文數字算1字元超出後彈Toast

最近有這個需求,在編輯框中輸入字元,有長度的限制,中文算2個字元,英文算1個字元 1、中文、英文、數字都算一個字元: /** * @author pengbo * @date 2018/11/12 * 漢字、英文、數字都算一位,超出位數彈吐司 */ public class Max

未明學院活動領跑新年活動!寒假1掌握券商/網際網路/機器學習等七大熱門行業實戰技能!

2019年新年大優惠!未明學院七大行業實戰專案,收穫熱門行業經歷及必備技能,這個寒假,讓自己離未來更近! 跨過2018邁入2019後,天氣一天天變冷,意味著寒假也越來越近啦! 前段時間,@人民日報整理併發布了“2018年全國125所高校寒假天數排行榜”。天津財經大學和東南大學分

輸入m學生每個學生有4門課在主調函式中輸入學生的相關資訊編寫三函式1)求第一門課的平均分; (2)找出有兩門課以上不及格的學生並輸出他們的學號和全部成績要求用指標函式實現fl

  輸入m個學生,每個學生有4門課,在主調函式中輸入學生的相關資訊,編寫三個函式: (1)求第一門課的平均分; (2)找出有兩門課以上不及格的學生,並輸出他們的學號和全部成績,要求用指標函式實現:float*Search(float(*p)[4],int n); (3)找出

"1,問題 應用長期在後臺的場景下進入前臺時fragment顯示為空白 2,app框架大體實現 1activity+Fragment,使用的是add()方法以及 hide(),show(

程式碼如下:                                                                                                                                                     

C語言猴子吃桃每天吃現有桃子的一半然後再吃一個到第10天的時候剩下了1桃子問第一天摘了多少桃子。

猴子吃桃,每天吃現有桃子的一半然後再吃一個,到第10天的時候剩下了1個桃子,問第一天摘了多少桃子。#include<stdio.h>main(){int day=1,sun=1;while(day<10){sun=(sun+1)*2;day++;}print

全面開放的攜號誰將受益誰將痛哭?

攜號轉網實事求是地來說,近兩年中國移動、聯通、電信等基礎運營商真心是改了不少。無論是人性化服務,還是產品的給力程度,與之前相比都堪稱“全面進化”。尤其是力度不斷攀升的“提速降費”、眾多互聯網企業推出的套餐等,都讓大眾享受到更好的通話、網絡等服務。而在這個過程中,運營商自身是“淒淒慘慘戚戚”——畢竟雖有壟斷地位

重啟vue出現兩bug一個是element-ui樣式檔案不存在另一個是vue-style-loader!css-loader?

These dependencies were not found: * element-ui/lib/theme-default/index.css in ./src/main.js * !!vue-style-loader!css-loader?{"sourceMap":true}

從零開始學產品第五篇環境開發、測試和線上

本篇為【從零開始學產品】系列課第1章第4節 歡迎到公眾號選單欄,獲取產品經理課程更多資料     上節課我們說到了,Bug的生命週期,而只有在測試環境和線上環境發現的Bug,才會被稱之為Bug。 倒底什麼是測試環境,什麼是線上環境,

小猿理財指標告訴你怎樣選擇股神巴菲特推薦的指數基金!

指數基金的分類 目前國內市場上的指數基金髮展尚未成熟,但已經有500多隻跟蹤各種指數的指數基金了。那麼多指數基金,我們應該怎麼選擇呢? 我們首先理解一下指數基金的分類,然後再思考一下選擇什麼樣的指數基金。指數基金可以分為寬基指數基金和行業指數基金。 兩者的區別怎哪裡呢?主要在

程式設計師想讓你電腦卡死需要多久呢?黑客按鍵字元

之前小編看過一篇文章,題目是上大學學哪個專業,畢業之後不容易失業。其中排行第一名的就是計算機專業,畢竟現在是資訊時代,會使用電腦等一些軟體也確實是生存的一個優勢,這個專業的人畢業之後很多就是程式設計師。不怕世界上有壞人,就怕壞人有智商。   這句話是很有道理的。不是說程式設計

支援中文字母數字長度大於1漢字小於20字元

public class Test { public static void main(String[] args) { String InputName = "我是 CSDN,"; boolean resul

乾貨 5提醒讓你遠離“資料呆

隨著資料積累得越來越多,資料獲取成本不斷降低,人們開始走向另一個危險的極端,那就是任何事情都要看資料,任何決定都去依賴資料。這種風氣培養出了越來越多的“資料呆”。作為一個數據分析師,我是非常反對“唯資料論”的。為什麼呢?讓我詳細地來說一說。 在這裡我還是要推薦下我自己建的大資料學習

JS判斷字串長度(英文佔1字元中文漢字佔2字元)

//計算字串長度(英文佔1個字元,中文漢字佔2個字元) 方法一: [javascript] view plain copy String.prototype.gblen = function() {         var len = 0;         

程式設計師辭職遭忽悠年終獎泡湯網友糟老頭子壞得很!

隨著日子一天一天的過去,離過春節的日子也是越來越近。公司都陸陸續續忙著開年會,員工們也是期待著自己的年終獎。 在網際網路這個行業,這個冬天真的就是“冬天”,前一段時間各個大廠相繼傳出裁員的訊息,雖然按照勞動法賠償了被裁的員工N+1,但其實,這些員工也拿不到最後的年終獎,可謂是“用心良苦”。

前端優化9 技巧提高 Web 效能

1. 清理 HTML 文件 HTML,即超文字標記語言,幾乎是所有網站的支柱。HTML 為網頁帶來標題、子標題、列表和其它一些文件結構的格式。在最近更新的 HTML5 中,甚至可以建立圖表。 HTML 很容易被網路爬蟲識別,因此搜尋引擎可以根據網站的內容在一定程度上實時更

轉發9offer12家公司35場面試從微軟到谷歌應屆計算機畢業生的求職之路

1 作者:_Luc_ 來源:www.cnblogs.com/figure9 文章來源: https://mp.weixin.qq.com/s?__biz=MzUyOTk5NDQwOA==&mid=2247484737&idx=1&sn=5eb443218a12

由於ndk引發的幾bug以及解決方法

問題一: Error:(12, 0) Error: NDK integration is deprecated in the current plugin.   Consider trying th