如何寫好技術(shù)方案

本文將介紹寫技術(shù)方案的意義,如何評判技術(shù)方案的好壞斩例,如何寫好技術(shù)方案雄人。

寫技術(shù)方案的意義

寫技術(shù)方案根本目的是提高研發(fā)效率和質(zhì)量,具體體現(xiàn)在以下方面:

1念赶、提高溝通效率
對于整個團隊础钠,通過技術(shù)方案文檔和評審對齊提高溝通效率:

  • 產(chǎn)品經(jīng)理可以審查技術(shù)方案是否與產(chǎn)品設(shè)計有偏差,是否滿足當前產(chǎn)品需求和后續(xù)產(chǎn)品設(shè)計規(guī)劃叉谜;
  • 開發(fā)leader可以把控方案是否滿足技術(shù)要求旗吁,包括技術(shù)規(guī)范,性能要求停局,實現(xiàn)復(fù)雜度很钓,可拓展性等;
  • 測試同學(xué)可以掌握需求技術(shù)實現(xiàn)原理董栽,改動點码倦,影響點,再做針對性測試用例設(shè)計锭碳;
  • 后續(xù)接手項目的同學(xué)可以通過技術(shù)方案文檔熟悉系統(tǒng)袁稽。

2、提高開發(fā)效率和質(zhì)量
對于開發(fā)同學(xué)擒抛,通過寫技術(shù)方案推汽,把需求和實現(xiàn)提前梳理一遍补疑,減少等到編碼階段才發(fā)現(xiàn)前期考慮不全導(dǎo)致返工的情況;并且寫好技術(shù)方案再編碼歹撒,使得編碼時思維更加清晰莲组,提高編碼效率和質(zhì)量。

怎么樣才是好的技術(shù)方案

怎么樣才算是好的技術(shù)方案暖夭,至少需要滿足下面3個條件:

1 思路清晰

在講技術(shù)需求時锹杈,常見的問題是一上來直接給出解決方案,導(dǎo)致受眾不能理解為什么要這樣設(shè)計迈着。其實相比解決方案嬉橙,更重要的是怎么思考的,思考的過程非常重要寥假。思路就是思考的線索,思路清晰的方案霞扬,層次分明糕韧,讓受眾快速理解清楚。

整個技術(shù)方案思考的線索可以用5W2H分析法串起來:Why喻圃、Who萤彩、When、Where斧拍、What雀扶、How 和 How much(如下圖所示),從七個方面去分析思考:


整個技術(shù)方案需要先基于需求背景肆汹,定義清楚要解決的問題愚墓,明確目標,搞清楚 Why昂勉。定義清楚問題之后浪册,再從When,What岗照,Where村象,How等不同的角度,對問題進行分析和解決攒至,先講整體架構(gòu)厚者,再細化流程,先主線迫吐,再分支库菲,先正常鏈路,再異常鏈路渠抹。

2 滿足需求

技術(shù)方案滿足的需求包括功能需求和質(zhì)量需求蝙昙。
功能需求不僅是當前產(chǎn)品提出的功能需求闪萄,還要對未來需求的擴展有一定的規(guī)劃,預(yù)留好擴展點奇颠,這就要求開發(fā)在規(guī)劃設(shè)計前败去,對現(xiàn)狀和需求進行充分的收集和分析。

除了功能需求烈拒,更考驗開發(fā)同學(xué)技術(shù)實力的是質(zhì)量需求圆裕,包括異常處理,降級方案荆几,灰度方案吓妆,運維方案,高可用設(shè)計吨铸。設(shè)計時要結(jié)合具體業(yè)務(wù)場景行拢,當前項目階段,做合理的權(quán)衡诞吱,避免陷入極端:或面面俱到舟奠,過度設(shè)計;或方案過粗房维,考慮不周沼瘫。

3 可實施

可以這樣評估一個技術(shù)方案是否可實施:技術(shù)方案完成之后,其他人能否照著技術(shù)方案按時按質(zhì)完成開發(fā)并上線咙俩?
有的技術(shù)方案看似高大上耿戚,高瞻遠矚,開發(fā)實施起來卻困難重重阿趁,常見原因如下:

  • 不夠細:涉及改動的字段膜蛔,報文,異常情況歌焦,邊界情況飞几,歷史數(shù)據(jù)兼容等處理沒說明清楚
  • 做不完:方案做的調(diào)整過大,雖然能解決問題独撇,但是實施起來時間不夠

在寫技術(shù)方案時屑墨,方案需要足夠完善詳細,把開發(fā)涉及的關(guān)鍵點考慮完善纷铣,這些點沒有先界定清楚的話卵史,開發(fā)的時候容易才發(fā)現(xiàn)跟系統(tǒng)當前現(xiàn)狀有沖突,或者開發(fā)出來偏離方案設(shè)計搜立。

方案的設(shè)計也要考慮時間以躯,開發(fā)成本,是否符合系統(tǒng)現(xiàn)狀、團隊可調(diào)配的資源忧设,有些方案從技術(shù)的角度是最佳刁标,但是從實施的角度并非最佳,例如會額外引入上下游系統(tǒng)相應(yīng)的改動址晕,帶來一定的溝通協(xié)作成本膀懈。所以方案設(shè)計在考慮產(chǎn)品和技術(shù)等限制的同時,也需要考慮當前現(xiàn)狀谨垃,要求的上線時間等其他因素启搂,選擇最合適的技術(shù)方案×跆眨可以在方案中寫不同的實現(xiàn)的評估對比胳赌,進行取舍權(quán)衡,或者方案拆成不同的開發(fā)實施階段匙隔。

方案的組成

做技術(shù)方案設(shè)計的前提條件是疑苫,定義清晰的業(yè)務(wù)流程,明確的期望拿到的預(yù)期結(jié)果纷责。技術(shù)方案的各個組成部分圍繞整個產(chǎn)品的研發(fā)周期缀匕,用一張圖總結(jié)如下:

1 需求說明

為什么產(chǎn)品文檔介紹過需求,技術(shù)方案里面還要寫需求說明碰逸?主要原因如下:

  • 介紹需求:通過在技術(shù)方案里面簡明扼要介紹產(chǎn)品需求,有利于其他看技術(shù)方案的人快速理解需求阔加,后面具體技術(shù)實現(xiàn)的出發(fā)點饵史。
  • 對齊需求:需求說明部分體現(xiàn)了開發(fā)同學(xué)對產(chǎn)品需求的理解,在技術(shù)評審階段進一步與產(chǎn)品同學(xué)檢查對齊一遍胜榔,減少理解出現(xiàn)偏差胳喷。

需求說明包括需求背景和需求拆解:

(1) 需求背景
說明為什么需要做這個需求,需求的價值意義是什么夭织。

(2) 需求拆解
從需求實現(xiàn)的維度對需求拆解成相對各自獨立子需求吭露,并概要地說明每個子需求要做哪些內(nèi)容,可以依據(jù)實際情況按照不同的角度來拆解尊惰,常見拆解的角度有:

  • 實現(xiàn)的步驟流程
  • 功能模塊讲竿、業(yè)務(wù)領(lǐng)域
  • 對外提供的接口、服務(wù)

2 概要設(shè)計

思路不清晰的技術(shù)方案有一個常見的問題:在交代完需求背景之后弄屡,就直接開始介紹每個子需求的具體實現(xiàn)题禀。這種技術(shù)方案各個部分比較分散細碎,沒有統(tǒng)一成整體膀捷,閱讀起來并不好把握迈嘹,這些設(shè)計背后的思路是什么,為什么要這樣設(shè)計。

概要設(shè)計包括系統(tǒng)現(xiàn)狀秀仲,總體思路和系統(tǒng)架構(gòu)融痛。
(1) 系統(tǒng)現(xiàn)狀
為什么需要寫系統(tǒng)現(xiàn)狀趟紊?一方面是有些產(chǎn)品需求文檔涉及系統(tǒng)現(xiàn)狀這塊并不清晰回季,例如需求文檔寫成“在系統(tǒng)當前實現(xiàn)邏輯的基礎(chǔ)上麦向,進行xxx調(diào)整”范删,因此需要在技術(shù)方案對系統(tǒng)現(xiàn)狀進行補充說明球匕。另一方面割以,介紹系統(tǒng)現(xiàn)狀能方便理解后續(xù)設(shè)計的出發(fā)點悉盆,在技術(shù)評審時方便評估當前設(shè)計的合理性以及是否有遺漏的點昧绣。

系統(tǒng)現(xiàn)狀可以針對需求的內(nèi)容氓英,需求影響點來介紹侯勉,常見的內(nèi)容可以介紹系統(tǒng)當前處理邏輯,歷史數(shù)據(jù)的數(shù)據(jù)量铝阐,請求量址貌,數(shù)據(jù)增長量等情況。寫系統(tǒng)現(xiàn)狀時徘键,不需要面面俱到练对,而是結(jié)合當前需求,針對性地重點介紹與需求相關(guān)系統(tǒng)的情況吹害,為接下來介紹總體思路螟凭,系統(tǒng)架構(gòu)做鋪墊,其他不太相關(guān)的現(xiàn)狀可以簡單帶過或者不介紹它呀。

(2) 總體思路
寫總體思路可以為后面介紹整個詳細解決方案奠定基礎(chǔ):對方案進行信息壓縮螺男,后面的詳細方案介紹都是圍繞著總體思路進行展開,使得整個方案閱讀起來方向明確纵穿,思路清晰下隧。總體思路的內(nèi)容是概括性介紹需求實現(xiàn)涉及關(guān)鍵問題的解決方案谓媒。

(3) 系統(tǒng)架構(gòu)
概要設(shè)計中的系統(tǒng)架構(gòu)是總體思路進一步補充淆院,說明系統(tǒng)總體上的架構(gòu)設(shè)計,畫系統(tǒng)架構(gòu)圖是介紹清楚系統(tǒng)架構(gòu)的有效手段句惯。在概要設(shè)計中的架構(gòu)與詳細設(shè)計中的架構(gòu)的關(guān)鍵區(qū)別在于土辩,前者關(guān)注系統(tǒng)整體處理,后者關(guān)注子需求的具體實現(xiàn)抢野。在概要設(shè)計中介紹的架構(gòu)圖常見的歸類有:

  • 按照系統(tǒng)模塊和處理流程介紹脯燃,介紹各個模塊處理的步驟,系統(tǒng)間的交互蒙保。
  • 按層級介紹辕棚,把具有相同屬性或特征的信息塊歸為同一個層級,例如系統(tǒng)MVC分層架構(gòu)。

畫圖時逝嚎,注意不要想在一張圖里面做到面面俱到扁瓢,畫之前要想清楚這張圖要表達什么內(nèi)容,傳遞什么信息补君,再針對性來畫引几,不同的類型的圖不要合在一起。例如想說明系統(tǒng)的部署結(jié)構(gòu)挽铁,用部署圖伟桅,說明業(yè)務(wù)的主要流程,用流程圖叽掘;如果圖里面楣铁,既有系統(tǒng)部署涉及的基礎(chǔ)組件,又有業(yè)務(wù)處理流程更扁,圖表現(xiàn)出來的信息就比較混亂盖腕。

3 詳細設(shè)計

詳細設(shè)計可分成開發(fā)約定,功能實現(xiàn)浓镜,可維護性設(shè)計溃列,可靠性設(shè)計,方案選擇膛薛。

(1) 開發(fā)約定
開發(fā)約定部分常見介紹的內(nèi)容如下:

  • 方案新引入的名詞听隐,概念的解釋,方便后面的內(nèi)容引用哄啄。
  • 前期上下游對接達成一致的約定/協(xié)議遵绰。

(2) 功能實現(xiàn)

軟件系統(tǒng)工作的核心功能是對數(shù)據(jù)的處理。因此在技術(shù)方案介紹具體功能實現(xiàn)時增淹,重點關(guān)注的點是數(shù)據(jù)鏈路,包括:

  • 數(shù)據(jù)源:系統(tǒng)的流量來源乌企、業(yè)務(wù)在何時何地觸發(fā)虑润,例如對外提供的接口,定時任務(wù)加酵,MQ消費等
  • 計算轉(zhuǎn)換:數(shù)據(jù)如何做轉(zhuǎn)換運算拳喻,加工處理的流程
  • 存儲:數(shù)據(jù)存儲設(shè)計

為了介紹整個數(shù)據(jù)處理流程,體現(xiàn)在以下方面:

  • 接口設(shè)計:提供接口設(shè)計文檔猪腕,包括入?yún)⒊鰠⒆侄味x冗澈,接口參數(shù)校驗邏輯,異常情況的處理和返回的錯誤碼陋葡。
  • 系統(tǒng)間交互流程:結(jié)合系統(tǒng)間流程圖說明整筆業(yè)務(wù)請求涉及哪些系統(tǒng)組成部分亚亲,業(yè)務(wù)的發(fā)起來源,系統(tǒng)間交互調(diào)用了具體哪個接口,請求處理基本步驟和數(shù)據(jù)落地存儲邏輯捌归。
  • 系統(tǒng)內(nèi)處理流程:結(jié)合業(yè)務(wù)處理流程圖說明請求如何加工計算數(shù)據(jù)肛响,處理的具體步驟,最終處理完成之后結(jié)果如何保存惜索,或者傳輸?shù)绞裁吹胤健?/li>
  • 存儲設(shè)計特笋,包括存儲結(jié)構(gòu)(包括MySQL、ES巾兆、Redis猎物、OSS等)設(shè)計,包括表和字段的概念定義角塑,各個表之間的關(guān)聯(lián)蔫磨,業(yè)務(wù)系統(tǒng)如何使用這些庫表。

(3) 可維護性設(shè)計

可維護性設(shè)計關(guān)注的是后續(xù)系統(tǒng)的迭代升級吉拳,需求變更质帅,系統(tǒng)怎么維護的問題。這塊的關(guān)鍵點主要是代碼復(fù)雜度問題留攒,不好維護的系統(tǒng)煤惩,會因為系統(tǒng)引入一個新需求,整個系統(tǒng)需要做大量改動炼邀。因此系統(tǒng)需要考慮通過提前做一些可拓展設(shè)計方便后續(xù)維護魄揉,體現(xiàn)在以下方面:

  • 拓展點分析:結(jié)合產(chǎn)品需求分析后續(xù)擴展帶來的變化點,為了支持這些變化系統(tǒng)需要預(yù)留哪些擴展點拭宁。
  • 系統(tǒng)建模:針對變化點洛退,對系統(tǒng)對象進行建模,主要關(guān)注:模塊(職責明確的模塊或者組件)杰标、關(guān)系(組件間明確的關(guān)聯(lián)關(guān)系)兵怯、邊界(約束和指導(dǎo)原則)。
  • 設(shè)計模式:使用設(shè)計模式時腔剂,要注意設(shè)計模式的底層邏輯是“找到變化媒区,封裝變化”,將變化封裝在可控范圍內(nèi)掸犬,具體介紹設(shè)計模式涉及的類圖袜漩,以及拓展新需求時,系統(tǒng)需要做的變動湾碎。
  • 配置項:包括配置項的具體定義宙攻,使用注意事項。

(4) 可靠性設(shè)計

可靠性設(shè)計包括以下要點:
灰度方案
如果是新系統(tǒng)初步上線用于替代老系統(tǒng)介褥,新系統(tǒng)還需要經(jīng)過進一步線上驗證座掘,這時需要考慮灰度方案递惋,包括灰度的周期計劃,灰度的范圍/維度雹顺,灰度配置策略丹墨。

容量評估
容量評估需要根據(jù)請求量,評估要預(yù)留給程序多少相應(yīng)的運行資源嬉愧。包括內(nèi)存贩挣,磁盤,CPU没酣,存儲服務(wù)等王财。
評估的點包括:接口平均QPS、峰值QPS裕便、接口請求和返回報文大小绒净,消息隊列的平均消息數(shù)、峰值消息數(shù)偿衰、報文大小挂疆。這一部分如果是改動的業(yè)務(wù),可以參考以前的監(jiān)控下翎,如果是新業(yè)務(wù)或者新活動可以跟運營缤言、產(chǎn)品確定業(yè)務(wù)量。若預(yù)估峰值會很高视事,需要進行壓測胆萧。

監(jiān)控報警
當方案不確定性比較大,容易出錯俐东,一旦出錯造成的影響較大跌穗,需要加監(jiān)控告警,說明的信息包括:模塊虏辫,監(jiān)控指標蚌吸,監(jiān)控閾值,報警方式等砌庄。

(5) 方案選擇
當我們設(shè)計了一個方案之后羹唠,評估這個方案是不是最優(yōu)方案最簡單的辦法,就是看看還有沒有更優(yōu)的方案鹤耍。
不同方案如何做評估選擇?可以做360度全面評估對比验辞,具體的操作方式為:列出我們需要關(guān)注的質(zhì)量屬性點稿黄,然后分別從這些質(zhì)量屬性的維度去評估每個方案,再綜合挑選適合當時情況的最優(yōu)方案跌造。

常見的方案質(zhì)量屬性點有:性能杆怕、可用性族购、硬件成本、項目投入陵珍、復(fù)雜度寝杖、安全性、可擴展性等互纯。在評估這些質(zhì)量屬性時瑟幕,需要遵循架構(gòu)設(shè)計的原則: “合適原則”和 “簡單原則”,避免貪大求全留潦,基本上某個質(zhì)量屬性能夠滿足一定時期內(nèi)業(yè)務(wù)發(fā)展就可以了只盹。

4 測試方案

良好的測試用例設(shè)計能有效提高開發(fā)質(zhì)量,技術(shù)方案中不僅需要考慮開發(fā)自測兔院,為了進一步提高研發(fā)質(zhì)量殖卑,還需要考慮如何提高測試同學(xué)的測試質(zhì)量和效率。技術(shù)方案在測試這塊需要考慮的點包括:影響點坊萝,自測用例孵稽,測試注意點。

(1) 影響點
影響點可以用清單的形式列出本次開發(fā)影響了哪塊功能十偶,哪些接口菩鲜,接口url,改動的內(nèi)容是什么扯键。這樣測試同學(xué)在設(shè)計測試用例時可以做對照參考睦袖,減少功能遺漏測試的情況。

(2) 自測用例
自測用例是介紹說明需求自測的用例設(shè)計荣刑,可以用清單的形式列出馅笙,一般包括涉及場景,測試步驟厉亏,測試輸入董习,期望輸出等信息。

(3) 測試注意點
有些隱藏的異常情況處理爱只,邊界條件皿淋,特殊處理邏輯,如果沒有特別說明恬试,測試同學(xué)測試的時候很容易遺漏這塊窝趣,而線上bug往往出現(xiàn)在這一塊。所以可以在方案里面特殊指出這塊训柴,讓測試同學(xué)在測試的時候特別注意一下哑舒。

5 上線部署

不想需求上線后各種問題,疲于應(yīng)對幻馁,那就有必要在技術(shù)方案階段考慮上線部署的問題洗鸵,在技術(shù)方案設(shè)計中先提前準備好越锈,等到上線階段對著技術(shù)方案寫的注意事項,步驟進行一步步檢查和執(zhí)行膘滨,減少上線事項遺漏或者處理出錯的情況甘凭。

上線部署部分涉及的點包括環(huán)境準備,系統(tǒng)準備火邓,發(fā)布順序丹弱,線上驗證;

(1) 環(huán)境準備
系統(tǒng)依賴環(huán)境的準備包括MySQL贡翘、Redis蹈矮、MQ、ES和Nginx等服務(wù)搭建和初始化鸣驱,機器資源等泛鸟。

(2) 系統(tǒng)準備
系統(tǒng)準備常見主要如下:

  • 依賴的服務(wù)配置,數(shù)據(jù)更新踊东,例如數(shù)據(jù)庫表創(chuàng)建北滥,SQL初始化腳本,Nginx配置更新闸翅,MQ的topic創(chuàng)建再芋,網(wǎng)絡(luò)端口打通,監(jiān)控配置坚冀,IP白名單申請济赎,定時任務(wù)創(chuàng)建。
  • 引用服務(wù)項目配置更新记某,代碼檢查司训,分支merge。

(3) 發(fā)布順序
發(fā)布部署的服務(wù)之前有業(yè)務(wù)依賴關(guān)系液南,被依賴的服務(wù)需要先發(fā)布部署壳猜,如果有這種依賴關(guān)系,在技術(shù)方案中應(yīng)當標明滑凉。

(4) 線上驗證
線上驗證的部分统扳,需要說明服務(wù)部署之后,怎么驗證服務(wù)是否正常畅姊,需要做哪些檢查驗證項咒钟。例如telnet檢查端口是否通,日志是否有報錯若未,通過線上測試賬號走一筆業(yè)務(wù)看看是否正常朱嘴,監(jiān)控面板要看哪些指標。

在開發(fā)和測試階段陨瘩,當配置項腕够,腳本,配置出現(xiàn)更新調(diào)整舌劳,需要更新保存在技術(shù)方案文檔里面帚湘,上線時照著文檔操作,不容易遺漏甚淡。

總結(jié)

想成為優(yōu)秀的開發(fā)人員大诸,不能只局限在開發(fā)領(lǐng)域,而是必須要有跨界的意識贯卦,包括產(chǎn)品意識资柔,測試意識、項管意識和運維意識:

  • 產(chǎn)品意識:理解產(chǎn)品的具體業(yè)務(wù)流程是什么撵割,產(chǎn)品為何這樣設(shè)計贿堰,目前業(yè)務(wù)規(guī)劃的發(fā)展方向,主動溝通產(chǎn)品方案中的不合理之處啡彬,提供參考解決辦法羹与。
  • 測試意識:技術(shù)方案中要考慮測試同學(xué)如何測試,提供必要的細節(jié)信息支撐測試庶灿,例如數(shù)據(jù)更新存儲流程纵搁。開發(fā)提測前對涉及的影響點做必要的自測,主動溝通測試同學(xué)的測試方案的不合理或遺漏的點之處往踢,提供參考解決辦法腾誉。
  • 項管意識:對任務(wù)進行合理分解,在開發(fā)峻呕、測試利职、上線流程中,要及時發(fā)現(xiàn)影響整體進度的問題點山上,主動協(xié)調(diào)解決或者上報反饋眼耀,按照計劃主動推進項目保障最終按時按質(zhì)上線。
  • 運維意識:對系統(tǒng)的日常運維佩憾、容量和系統(tǒng)瓶頸哮伟、系統(tǒng)流量增大擴容方案要有一定的認識和解決方案,保障業(yè)務(wù)正常使用妄帘。

工具推薦

  • 思維工具:結(jié)構(gòu)化分析法楞黄、5W2H分析法
  • 腦圖軟件:Xmind、百度腦圖
  • 畫圖軟件:ProcessOn抡驼、PPT鬼廓、PlantUML
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市致盟,隨后出現(xiàn)的幾起案子碎税,更是在濱河造成了極大的恐慌尤慰,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雷蹂,死亡現(xiàn)場離奇詭異伟端,居然都是意外死亡,警方通過查閱死者的電腦和手機匪煌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評論 2 382
  • 文/潘曉璐 我一進店門责蝠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人萎庭,你說我怎么就攤上這事霜医。” “怎么了驳规?”我有些...
    開封第一講書人閱讀 152,998評論 0 344
  • 文/不壞的土叔 我叫張陵肴敛,是天一觀的道長。 經(jīng)常有香客問我吗购,道長值朋,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,323評論 1 279
  • 正文 為了忘掉前任巩搏,我火速辦了婚禮昨登,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贯底。我一直安慰自己丰辣,他們只是感情好,可當我...
    茶點故事閱讀 64,355評論 5 374
  • 文/花漫 我一把揭開白布禽捆。 她就那樣靜靜地躺著笙什,像睡著了一般。 火紅的嫁衣襯著肌膚如雪胚想。 梳的紋絲不亂的頭發(fā)上琐凭,一...
    開封第一講書人閱讀 49,079評論 1 285
  • 那天,我揣著相機與錄音浊服,去河邊找鬼统屈。 笑死,一個胖子當著我的面吹牛牙躺,可吹牛的內(nèi)容都是我干的愁憔。 我是一名探鬼主播,決...
    沈念sama閱讀 38,389評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼孽拷,長吁一口氣:“原來是場噩夢啊……” “哼吨掌!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評論 0 259
  • 序言:老撾萬榮一對情侶失蹤膜宋,失蹤者是張志新(化名)和其女友劉穎窿侈,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體秋茫,經(jīng)...
    沈念sama閱讀 43,519評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡棉磨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,971評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了学辱。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,100評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡环形,死狀恐怖策泣,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情抬吟,我是刑警寧澤萨咕,帶...
    沈念sama閱讀 33,738評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站火本,受9級特大地震影響危队,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜钙畔,卻給世界環(huán)境...
    茶點故事閱讀 39,293評論 3 307
  • 文/蒙蒙 一茫陆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧擎析,春花似錦簿盅、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至现斋,卻和暖如春喜最,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背庄蹋。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評論 1 262
  • 我被黑心中介騙來泰國打工瞬内, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人限书。 一個月前我還...
    沈念sama閱讀 45,547評論 2 354
  • 正文 我出身青樓遂鹊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蔗包。 傳聞我的和親對象是個殘疾皇子秉扑,可洞房花燭夜當晚...
    茶點故事閱讀 42,834評論 2 345

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

  • 事實上,撰寫項目規(guī)劃和設(shè)計文檔,最重要的不是文檔的模版和格式舟陆,而是里面的具體內(nèi)容误澳,它往往需要結(jié)合實際客觀環(huán)境因素來...
    pigness閱讀 8,552評論 0 8
  • 前言 對于一般軟件開發(fā)人員來講,寫代碼要比寫文字容易得多秦躯。很多時候我們都能看到這樣的事情忆谓,項目做完了,設(shè)計文檔還沒...
    花生無翼閱讀 4,402評論 0 1
  • 表情是什么踱承,我認為表情就是表現(xiàn)出來的情緒倡缠。表情可以傳達很多信息。高興了當然就笑了茎活,難過就哭了昙沦。兩者是相互影響密不可...
    Persistenc_6aea閱讀 124,193評論 2 7
  • 16宿命:用概率思維提高你的勝算 以前的我是風(fēng)險厭惡者,不喜歡去冒險载荔,但是人生放棄了冒險盾饮,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 6,033評論 0 4