Google 的軟件工程經(jīng)驗(yàn)總結(jié)

摘錄翻譯自“Software Engineering at Google”床嫌,作者:Fergus Henderson

軟件開(kāi)發(fā)

代碼庫(kù)

大部分的 Google 代碼都存在統(tǒng)一的源代碼庫(kù)中,可供 Google 內(nèi)部所有工程師訪問(wèn)。但是 Chrome 和 Android 則分別有單獨(dú)的代碼庫(kù)。

Google 的代碼庫(kù),在 2015 年 1 月的統(tǒng)計(jì)中客们,共計(jì) 86T 數(shù)據(jù),上10億個(gè)文件材诽,9百萬(wàn)個(gè)源代碼文件底挫,其中包含了 20 億行代碼。迄今為止共計(jì) 3500 萬(wàn)次提交脸侥,每個(gè)工作日平均發(fā)生 4 萬(wàn)次更新建邓。

任何 Google 員工,都可以隨意的訪問(wèn)所有代碼睁枕,并下載涝缝、編譯,可以在自己的環(huán)境下自行改寫譬重,但任何更改的提交拒逮,都需要通過(guò)代碼負(fù)責(zé)人的審批才可以。

所有的開(kāi)發(fā)都在庫(kù)的頭部進(jìn)行臀规。對(duì)代碼進(jìn)行任何更改后滩援,自動(dòng)化系統(tǒng)將進(jìn)行測(cè)試,并在幾分鐘內(nèi)通知開(kāi)發(fā)者和代碼審查者塔嬉,對(duì)更改的測(cè)試是否失敗玩徊。

代碼庫(kù)中每個(gè)分支都有單獨(dú)的文件注明“代碼所有人”,只有代碼所有人才有權(quán)利審核提交的更改谨究。通常情況下恩袱,項(xiàng)目組的所有成員都是“代碼所有人”。

編譯系統(tǒng)

Google 使用分布式編譯系統(tǒng)胶哲,叫做 Blaze畔塔。Blaze 提供了標(biāo)準(zhǔn)的命令,用于編譯和測(cè)試庫(kù)中的所有代碼鸯屿。Blaze 這種統(tǒng)一的編譯工具澈吨,讓 Google 公司的所有工程師都能隨時(shí)編譯和測(cè)試任何軟件,也都能跨項(xiàng)目工作寄摆。

程序員需要撰寫“BUILD”文件谅辣,用來(lái)引導(dǎo) Blaze 如何編譯軟件。在Go語(yǔ)言的代碼中婶恼,build 文件可以自動(dòng)生成桑阶。

每個(gè)編譯步驟必須是“隔離”的柏副,只依賴于聲明的輸入。為了實(shí)現(xiàn)編譯的分布式運(yùn)行蚣录,必須強(qiáng)制要求正確輸入所有的依賴:只有聲明了的輸入才被發(fā)送到進(jìn)行編譯的機(jī)器上去搓扯。

每個(gè)編譯步驟的結(jié)果是確定的。這樣保證了編譯系統(tǒng)可以緩存編譯結(jié)果包归。軟件工程師可以回退到老的版本號(hào),并重新編譯铅歼,且得到完全一樣的二進(jìn)制結(jié)果公壤。

編譯結(jié)果緩存在云端。包括中間結(jié)果椎椰,這樣當(dāng)有別的編譯請(qǐng)求過(guò)來(lái)厦幅,系統(tǒng)直接應(yīng)用緩存的結(jié)果。

增量的重新編譯非晨快确憨。編譯系統(tǒng)運(yùn)行在內(nèi)存中,當(dāng)重新執(zhí)行編譯任務(wù)時(shí)瓤的,它能夠分析文件上次編譯后發(fā)生的增量變化休弃。

提交前檢查。Google 有專門的自動(dòng)化工具圈膏,用來(lái)在發(fā)起代碼審查和準(zhǔn)備提交更改到代碼庫(kù)時(shí)塔猾,進(jìn)行一整套的標(biāo)準(zhǔn)檢查。

代碼審查

Google 開(kāi)發(fā)了基于 Web 的代碼審查管理工具稽坤。程序員可以申請(qǐng)對(duì)代碼進(jìn)行審查丈甸,審查者可以在瀏覽器上比較差異,并寫上評(píng)語(yǔ)尿褪。當(dāng)寫代碼的人發(fā)起一次審查申請(qǐng)睦擂,則系統(tǒng)自動(dòng)發(fā)郵件給審查者,并附上代碼查看頁(yè)的鏈接杖玲。

對(duì)源代碼的任何更改顿仇,必須經(jīng)過(guò)最少一次審查。如果更改不是由“代碼所有人”做出摆马,則還必須由所有人中的一位進(jìn)行審查夺欲。

系統(tǒng)可以自動(dòng)推薦合適的審查者。當(dāng)然今膊,寫程序的人些阅,可以自己選擇審查者。

Google 鼓勵(lì)工程師們斑唬,將每一次代碼更改控制在較小的規(guī)模上市埋。 30-99 行的代碼更改黎泣,通常視為“中等”;300 行以上則標(biāo)記為“大”缤谎; 1000-1999 行抒倚,則是“巨大”;

測(cè)試

單元測(cè)試是必須的坷澡,在 Google 的開(kāi)發(fā)中廣為采用托呕。集成測(cè)試和回歸測(cè)試,也較為普及频敛。Google 有一個(gè)自動(dòng)化的工具项郊,用來(lái)衡量測(cè)試覆蓋的范圍,這個(gè)結(jié)果也在代碼瀏覽器中可以查看斟赚。

部署前一定要做壓力測(cè)試着降。項(xiàng)目組要用表格或者圖標(biāo)顯示關(guān)鍵參數(shù),尤其是壓力之下的延遲和錯(cuò)誤率拗军。

Bug 跟蹤

Google 使用的 Bug 跟蹤工具叫 Buganizer任洞。有的團(tuán)隊(duì),安排專人分配 Bug发侵,有的團(tuán)隊(duì)則在例行的會(huì)議中分配交掏。

開(kāi)發(fā)語(yǔ)言

Google 內(nèi)部有四大語(yǔ)言,一般都建議工程師在這四種里挑選刃鳄。四大語(yǔ)言是: ?C++耀销,Java, Python铲汪, Go熊尉。不用多說(shuō),減少語(yǔ)言數(shù)量掌腰,可以增加代碼復(fù)用狰住,并提高內(nèi)部協(xié)作。

每種語(yǔ)言都有代碼規(guī)范齿梁,保證風(fēng)格統(tǒng)一催植。公司范圍內(nèi),還有針對(duì)“代碼可讀性”的培訓(xùn)勺择,由經(jīng)驗(yàn)豐富的老司機(jī)创南,對(duì)新人進(jìn)行培訓(xùn)。代碼審查省核,也需要對(duì)“可讀性”做專門的評(píng)審稿辙。

在不同語(yǔ)言之間的交互操作,要通過(guò)Protocol Buffers 來(lái)處理气忠。Protocol Buffers 是 Google公司開(kāi)發(fā)的一種數(shù)據(jù)描述語(yǔ)言邻储,類似于XML能夠?qū)⒔Y(jié)構(gòu)化數(shù)據(jù)序列化赋咽,可用于數(shù)據(jù)存儲(chǔ)、通信協(xié)議等方面

調(diào)試工具和性能分析工具

?Google 的服務(wù)器連接了很多庫(kù)吨娜,提供用于調(diào)試服務(wù)器的工具脓匿。服務(wù)器崩潰時(shí),可以自動(dòng)導(dǎo)出堆棧軌跡到日志文件宦赠。 還有 Web 界面用于調(diào)試陪毡,可以用來(lái)查看呼入和呼出的 RPC 調(diào)用、更改的命令行標(biāo)志值勾扭、資源消耗毡琉、性能分析等。

發(fā)版

Google 的大部分項(xiàng)目組尺借,都有固定的軟件工程師負(fù)責(zé)發(fā)版。

大部分的軟件精拟,發(fā)版比較頻繁燎斩。通常是周發(fā)版,或者每?jī)芍馨l(fā)版蜂绎,有些項(xiàng)目組甚至每天發(fā)栅表。所以,自動(dòng)化進(jìn)行發(fā)版就是必須的了师枣。頻繁發(fā)版有助于工程師們保持斗志怪瓶,提高整體速度,實(shí)現(xiàn)更多的迭代践美,從而也可以獲得更多的反饋洗贰,并做出更多有益的更正。

上線

要上線任何更改陨倡,并對(duì)用戶可用敛滋,則需要項(xiàng)目組外很多人的審批。審批來(lái)自多個(gè)方面兴革,包括法律合規(guī)绎晃、隱私保護(hù)、安全要求杂曲、可靠性庶艾、業(yè)務(wù)需求等等。

Google 有一個(gè)內(nèi)部的上線審批工具擎勘,用來(lái)執(zhí)行審查和上線審批咱揍。通過(guò)定制,這個(gè)工具棚饵,對(duì)不同的產(chǎn)品有不同的審查和審批流程述召。

過(guò)錯(cuò)總結(jié)

發(fā)生了重大的服務(wù)事故后朱转,相關(guān)人員要起草過(guò)錯(cuò)總結(jié)報(bào)告。文檔描述事故細(xì)節(jié)积暖,包括標(biāo)題藤为、概要、影響夺刑、時(shí)間段缅疟、原因、故障組件遍愿、行動(dòng)存淫。 總結(jié)的聚焦在于問(wèn)題,以及未來(lái)如何解決沼填,而不是聚焦在于人桅咆,也不是為了懲罰責(zé)任人。

頻繁的重寫代碼

Google 鼓勵(lì)頻繁的重寫代碼坞笙,任何軟件每隔幾年就重寫一遍岩饼。一來(lái)可以優(yōu)化產(chǎn)品,采用最先進(jìn)技術(shù)薛夜,去掉無(wú)用的功能籍茧,另外還可以轉(zhuǎn)移知識(shí)到新員工,并保持員工的斗志梯澜。

項(xiàng)目管理

20%的自由時(shí)間

盡人皆知寞冯,google的工程師擁有 20%的自由時(shí)間,可以隨意做感興趣的東西晚伙,而無(wú)需審批吮龄。這當(dāng)然是為了激發(fā)工程師的各種創(chuàng)意,同時(shí)也讓工程師們保持高效率咆疗,而不是窒息在必須完成的任務(wù)中螟蝙。 另外,也考慮到民傻,很多員工都會(huì)私下里自己做一些東西胰默,那么還不如鼓勵(lì)大家將這些研究方向公開(kāi)。

目標(biāo)和關(guān)鍵結(jié)果

不論個(gè)人還是團(tuán)隊(duì)漓踢,都要明確的寫下自己的目標(biāo)牵署,并評(píng)估達(dá)成目標(biāo)的進(jìn)度。每個(gè)季度的末尾喧半,要根據(jù)關(guān)鍵結(jié)果奴迅,對(duì)目標(biāo)達(dá)成情況進(jìn)行打分,分?jǐn)?shù)從 0 分到 1 分。這 OKR 分?jǐn)?shù)是全公司內(nèi)部公開(kāi)的取具。但這并不直接用作個(gè)人績(jī)效評(píng)估的輸入倍权。

平均得分是 0.65敏释,但鼓勵(lì)大家將目標(biāo)定的高一些番捂,所以在可完成任務(wù)之上深寥,再加 50% 的工作量是正常的。

項(xiàng)目立項(xiàng)

對(duì)于項(xiàng)目立項(xiàng)審批块仆,以及項(xiàng)目取消构蹬,Google并沒(méi)有清楚定義的流程。即便是在 Google 做過(guò) 10 年的老經(jīng)理悔据,也不知道決策是如何做出的庄敛。很可能因?yàn)樵诠痉秶鷥?nèi),流程并不一致科汗,經(jīng)理們可以自行判斷并決策藻烤。有時(shí)候,決策是由下而上進(jìn)行的头滔,因?yàn)轫?xiàng)目組的人都走光了怖亭。有時(shí)候,決策是自上而下的拙毫,老板們決定哪些項(xiàng)目得到更多的預(yù)算依许,那些則必須關(guān)閉棺禾。

機(jī)構(gòu)重組

當(dāng)關(guān)閉一個(gè)大項(xiàng)目時(shí)缀蹄,工程師們可以自行尋找新機(jī)會(huì),加入新團(tuán)隊(duì)膘婶。有的時(shí)候缺前,還會(huì)搞“去碎片化”行動(dòng),把瑣碎的分散的團(tuán)隊(duì)合并悬襟,這個(gè)時(shí)間工程師也可以自行選擇團(tuán)隊(duì)和工作地點(diǎn)衅码。

經(jīng)常進(jìn)行重組,有利于突破大公司的低效陷阱脊岳。


人的管理

崗位

Google 將“技術(shù)路線”和“管理路線”分開(kāi)逝段;將“技術(shù)領(lǐng)導(dǎo)” 從“管理”中分出;將“研究”綜合到“工程”中割捅;設(shè)置“產(chǎn)品經(jīng)理”奶躯、“項(xiàng)目經(jīng)理”、和“站點(diǎn)可靠性”來(lái)支持工程師們亿驾。

工程中主要的崗位包括:

- 工程經(jīng)理

這是工程序列中唯一的“人員管理”崗位嘹黔。軟件工程師也“可能”管理人,但工程經(jīng)理“總是”管理人莫瞬。工程經(jīng)理通常以前就是工程師儡蔓,具備技術(shù)經(jīng)驗(yàn)郭蕉,以及管理人的技能。

技術(shù)領(lǐng)導(dǎo)力與人員管理能力之間喂江,是有區(qū)別的召锈。

“工程經(jīng)理”不一定帶領(lǐng)項(xiàng)目;項(xiàng)目通常由“技術(shù)組長(zhǎng)”負(fù)責(zé)开呐,當(dāng)然“技術(shù)組長(zhǎng)”也可能由“工程經(jīng)理”擔(dān)任烟勋,但大多數(shù)情況下都是“工程師”。項(xiàng)目的“技術(shù)組長(zhǎng)”對(duì)項(xiàng)目中的技術(shù)問(wèn)題筐付,具有決定權(quán)卵惦。

經(jīng)理負(fù)責(zé)選擇“技術(shù)組長(zhǎng)”,并監(jiān)控團(tuán)隊(duì)績(jī)效瓦戚。工程經(jīng)理還負(fù)責(zé)職場(chǎng)發(fā)展的培訓(xùn)及引領(lǐng)沮尿,進(jìn)行績(jī)效評(píng)估,并部分負(fù)責(zé)薪酬制定较解。還要做一些招聘工作畜疾。

一般來(lái)說(shuō),工程經(jīng)理管理 3 - 30 個(gè)人印衔,普遍情況下是 8 - 12 人啡捶。

- 工程師

在 Google,“工程”和“管理”的職業(yè)發(fā)展路線是不同的奸焙。工程師可以管理下屬瞎暑,但這不是必須的。在更高層次与帆,領(lǐng)導(dǎo)力是必須的了赌,但領(lǐng)導(dǎo)力不一定從對(duì)人的管理中來(lái)。比如玄糟,開(kāi)發(fā)了極具影響力的軟件勿她,或者寫的代碼被很多工程師使用,也是一種領(lǐng)導(dǎo)力阵翎。

- 研究科學(xué)家

科學(xué)家的招聘的門檻更高逢并,需要有學(xué)術(shù)上的論文發(fā)表能力和代碼能力。除了科學(xué)家需要論文和著作外郭卫,科學(xué)家和工程師沒(méi)有顯著的區(qū)別砍聊。在Google,科學(xué)家和工程師一起工作箱沦,同樣研發(fā)產(chǎn)品辩恼,同在一個(gè)團(tuán)隊(duì)。這樣的安排為的將研究成果更好的導(dǎo)入產(chǎn)品中

- 站點(diǎn)可靠性工程師

對(duì)系統(tǒng)的維護(hù)由軟件工程師團(tuán)隊(duì)負(fù)責(zé)灶伊,而不是通常的系統(tǒng)管理員疆前。站點(diǎn)可靠性工程師的技能要求,比軟件開(kāi)發(fā)工程師要稍低聘萨。

- 產(chǎn)品經(jīng)理

產(chǎn)品經(jīng)理負(fù)責(zé)管理產(chǎn)品竹椒,他們協(xié)調(diào)軟件工程師的工作,宣講功能特性米辐,與其他團(tuán)隊(duì)配合胸完,跟蹤bug和進(jìn)度,保證一切順暢運(yùn)行以開(kāi)發(fā)出高質(zhì)量的產(chǎn)品翘贮。產(chǎn)品經(jīng)理不寫代碼赊窥。

- 計(jì)劃經(jīng)理/技術(shù)計(jì)劃經(jīng)理

計(jì)劃經(jīng)理有點(diǎn)類似產(chǎn)品經(jīng)理,但他們不管產(chǎn)品狸页,而是管理項(xiàng)目锨能、過(guò)程、或運(yùn)營(yíng)芍耘。

工程師與產(chǎn)品經(jīng)理址遇、計(jì)劃經(jīng)理的比例,一般非常高斋竞,大約在4:1 到30:1之間倔约。

設(shè)施

Google 有很先進(jìn)的各種設(shè)備,包括游戲房坝初、健身房浸剩,以及提供各種美食的免費(fèi)餐廳,這一切都是為的將員工留在公司脖卖,多多工作乒省。還可以帶朋友來(lái)蹭飯巧颈,這樣就增加了將朋友招聘進(jìn)來(lái)的機(jī)會(huì)畦木。

Google 的座位都是開(kāi)放的,甚至有點(diǎn)擁擠砸泛,這有助于加強(qiáng)交流十籍,但同時(shí)也影響了個(gè)人的專注,算是權(quán)衡之下的損失了唇礁。員工雖然有自己的座位勾栗,但每 6 -12 個(gè)月就要換一換,也是為了加強(qiáng)交流盏筐。

培訓(xùn)

Google 的培訓(xùn)有一下幾種:

- 新員工 (Nooglers)都要參加一個(gè)入職培訓(xùn)教程
- 技術(shù)員工要參加一個(gè)“Codelabs”围俘,進(jìn)行短期的在線培訓(xùn)課程,其中還有編碼練習(xí)
- 許多在線和現(xiàn)場(chǎng)的培訓(xùn)課程
- 對(duì)于參加外部機(jī)構(gòu)的課程,Google也給予支持

每個(gè)新員工界牡,都被指派一名正式的“導(dǎo)師” 和一名“搭檔”簿寂,以幫助他盡快上手。

換崗

鼓勵(lì)換崗流動(dòng)宿亡,以在公司范圍內(nèi)傳播知識(shí)常遂,并提高跨組織的交流。在一個(gè)崗位工作 12 個(gè)月后挽荠,可以選擇其他項(xiàng)目克胳,也可以選擇換個(gè)辦公室。

績(jī)效評(píng)估和獎(jiǎng)勵(lì)

Google 非常歡迎互相評(píng)價(jià)圈匆。 工程師可以彼此互贈(zèng)正面評(píng)價(jià)漠另,一種是“同事獎(jiǎng)金”,一種是“點(diǎn)贊”跃赚。每名員工酗钞,每年擁有兩次機(jī)會(huì),給予其他員工以“同事獎(jiǎng)金”提名来累,獎(jiǎng)金是 100 美元砚作。這種“同事獎(jiǎng)金”是為了獎(jiǎng)勵(lì)員工在職責(zé)之外幫助他人∴谒“點(diǎn)贊”則僅僅是表?yè)P(yáng)葫录,沒(méi)有現(xiàn)金獎(jiǎng)勵(lì)。

經(jīng)理可以發(fā)放獎(jiǎng)金领猾,包括一種在項(xiàng)目完成后的特殊獎(jiǎng)金米同。Google和其他公司一樣,也有年底績(jī)效獎(jiǎng)和股權(quán)激勵(lì)摔竿。

績(jī)效優(yōu)秀面粮,可以晉升。而績(jī)效差的继低,則需要進(jìn)行改進(jìn)熬苍,但有意思的是 Google 很少開(kāi)除員工。員工還要對(duì)經(jīng)理的績(jī)效進(jìn)行評(píng)估袁翁,以保證管理效率和管理質(zhì)量柴底。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市粱胜,隨后出現(xiàn)的幾起案子柄驻,更是在濱河造成了極大的恐慌,老刑警劉巖焙压,帶你破解...
    沈念sama閱讀 218,386評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸿脓,死亡現(xiàn)場(chǎng)離奇詭異抑钟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)野哭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門味赃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人虐拓,你說(shuō)我怎么就攤上這事心俗。” “怎么了蓉驹?”我有些...
    開(kāi)封第一講書人閱讀 164,704評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵城榛,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我态兴,道長(zhǎng)狠持,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書人閱讀 58,702評(píng)論 1 294
  • 正文 為了忘掉前任瞻润,我火速辦了婚禮喘垂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘绍撞。我一直安慰自己正勒,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,716評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布傻铣。 她就那樣靜靜地躺著章贞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪非洲。 梳的紋絲不亂的頭發(fā)上鸭限,一...
    開(kāi)封第一講書人閱讀 51,573評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音两踏,去河邊找鬼败京。 笑死,一個(gè)胖子當(dāng)著我的面吹牛梦染,可吹牛的內(nèi)容都是我干的赡麦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼弓坞,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隧甚!你這毒婦竟也來(lái)了车荔?” 一聲冷哼從身側(cè)響起渡冻,我...
    開(kāi)封第一講書人閱讀 39,230評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎忧便,沒(méi)想到半個(gè)月后族吻,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體帽借,經(jīng)...
    沈念sama閱讀 45,680評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,873評(píng)論 3 336
  • 正文 我和宋清朗相戀三年超歌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了砍艾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,991評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡巍举,死狀恐怖脆荷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情懊悯,我是刑警寧澤蜓谋,帶...
    沈念sama閱讀 35,706評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站炭分,受9級(jí)特大地震影響桃焕,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捧毛,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,329評(píng)論 3 330
  • 文/蒙蒙 一观堂、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧呀忧,春花似錦师痕、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,910評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至福扬,卻和暖如春腕铸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铛碑。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,038評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工狠裹, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人汽烦。 一個(gè)月前我還...
    沈念sama閱讀 48,158評(píng)論 3 370
  • 正文 我出身青樓涛菠,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親撇吞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俗冻,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,941評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,139評(píng)論 25 707
  • 先說(shuō)項(xiàng)目開(kāi)發(fā)過(guò)程中團(tuán)隊(duì)人員的分工協(xié)作。 一 人員安排 畢業(yè)至今的大部分項(xiàng)目都是獨(dú)立完成牍颈,雖然也有和其他同事協(xié)作的時(shí)...
    SnowflakeCloud閱讀 10,769評(píng)論 3 59
  • 在北方農(nóng)村迄薄,男人不會(huì)做飯。老祖宗留下來(lái)的規(guī)矩煮岁,男主外讥蔽,女主內(nèi)涣易。男人是不進(jìn)廚房的。經(jīng)骋鄙。看見(jiàn)夫妻兩人同時(shí)下地勞動(dòng)新症,同時(shí)...
    黨嶺閱讀 439評(píng)論 3 6
  • 2015年11月29號(hào) 今天心情就像這窗外的天氣 烏云密布 室內(nèi)空氣讓人感覺(jué)不到好心情 悶在房子里不想出去散散...
    明媚不憂傷如我閱讀 197評(píng)論 0 0
  • 其實(shí)城市很小徒爹,小到我們想去哪里就可以去到哪里。 其實(shí)城市很大芋类,大到你怎樣兜兜轉(zhuǎn)轉(zhuǎn)都找不到你想見(jiàn)的那個(gè)人瀑焦。 在一個(gè)又...
    入夜了你的心事最多閱讀 258評(píng)論 0 0