數(shù)據(jù)緩存

緩存的四種方式?各自應用的場景遭居?

緩存本質(zhì)將請求到的數(shù)據(jù)存儲到本地命贴,將數(shù)據(jù)顯示到UI界面前先詢問本地數(shù)據(jù)庫是否已經(jīng)存儲了訪問過的數(shù)據(jù)梢莽,如果沒有再去網(wǎng)絡請求數(shù)據(jù)。

只要是存儲數(shù)據(jù)就必須先轉化成二進制來進行存儲臼朗。無論是什么都必須轉化成NSData類型的數(shù)據(jù)來進行存儲邻寿。

當然普通的對象直接可以通過語句將對象轉化成Data數(shù)據(jù),可是如何將數(shù)據(jù)模型的對象轉化成NSData呢视哑,自然使用到了歸檔里返回NSData的方法绣否。

歸檔——數(shù)據(jù)模型的緩存

* 歸檔緩存數(shù)據(jù)模型的特點?

使用NSKeyedArchiver類來實現(xiàn)數(shù)據(jù)模型緩存挡毅,為了把模型對象用NSKeyedArchiver歸檔蒜撮,模型類需要遵循NSCoding協(xié)議,非常麻煩跪呈。

GitHub上也有相關的封裝來逐個便利對象的屬性進行所有屬性歸檔協(xié)議和反歸檔協(xié)議的操作段磨。

以歸檔形式來保存數(shù)據(jù)模型,只能一次性歸檔保存和一次性反歸檔解壓耗绿,只能針對小量的數(shù)據(jù)模型苹支。

數(shù)據(jù)操作比較笨拙,就是說如果想改動數(shù)據(jù)的某一小部分误阻,都需要解壓整個數(shù)據(jù)進行操作然后再歸檔整個數(shù)據(jù)進行保存债蜜。

* 歸檔和蘋果官方的Core Data的對比晴埂?

Core Data的優(yōu)勢是不用反歸檔完整的數(shù)據(jù)模型就可以獨立訪問模型的屬性。

然而寻定,在應用中實現(xiàn)Core Data帶來的復雜度完全抵消了優(yōu)勢儒洛。此外,我們通常情況下都是按照需求進行緩存狼速,可能并不需要獨立訪問模型的屬性琅锻。

plist——得自己顯示創(chuàng)建文件,讀取文件向胡,很麻煩恼蓬。

* Plist與NSUserDefaules的區(qū)別?

自己建立的plist文件什么的捷枯,還得自己顯示創(chuàng)建文件,讀取文件专执,很麻煩淮捆,而用NSUserDefaults則不用管這些東西,就像讀字符串一樣本股,直接讀取就可以了攀痊。

存入NSUserDefaults的值可以是多樣的,可以是基礎數(shù)據(jù)類型拄显,也可以是OC對象苟径,而且讀取數(shù)據(jù)十分方便,就跟讀取字典的值一樣躬审。

NSUserDefaults是一個單例類棘街,并不需要用戶在程序中設置NSUserDefaults的全局變量,哪里用到NSUserDefaults的數(shù)據(jù)承边,就在哪里創(chuàng)建一個NSUserDefaults對象遭殉,然后進行讀寫操作。

NSUserDefaults——App的設置中需要存儲的信息

* UserDefaults的缺點博助?

官方文檔上明確表明UserDefaults不是立即寫入磁盤险污,而是根據(jù)時間戳定時的把緩存中的數(shù)據(jù)寫入本地磁盤。為了避免富岳,調(diào)用了set方法之后調(diào)用synchornize方法強制更新磁盤內(nèi)容蛔糯。

* UserDefaults應用場景?

NSUserDefaults保存應用程序的設置和屬性窖式。無需指定存儲路徑蚁飒,適合持久化存儲輕量級數(shù)據(jù),比如要保存一個登陸界面的用戶名萝喘、密碼飒箭,再次登陸的時候可以直接讀取NSUserDefaults的信息狼电。

NSUserDefaults實際上是以“鍵值對”形式保存的(類似于NSDictionary),因此我們需要通過key來讀取或者保存數(shù)據(jù)(value)弦蹂。

* NSUserDefautls將數(shù)據(jù)存儲在什么地方肩碟?

NSUserDefaults的文件就在Library(存檔文件夾,保存用戶的配置)下的Preferences偏好設置文件中凸椿。

Documents放不可再生的配置文件削祈,Library放可再生的數(shù)據(jù)文件,temp文件夾在系統(tǒng)內(nèi)存不夠或者關機開機的時候會自動清除脑漫。

Library下面還有一個Caches?就是硬盤緩存的位置髓抑,而且Library上一層的文件夾就是沙盒。

理解為什么說刪除沙盒也可以刪除NSUserDefaults的文件了吧优幸!

Caches與Prefereces同級別吨拍,NSUserDefault存在Prefereces的Plist配置文件的子文件中。

存儲在應用程序內(nèi)置的一個plist文件里网杆,首先要找到應用程序在MAC上的位置羹饰,找到后在添加路徑/Library/Prefereces/plist文件/userDefaults就是userDefaults的位置。

本質(zhì)上說碳却,userDefaults算是plist的一個分支子文件夾罷了队秩。如果想要刪掉的話,用removeObjectForKey或者刪掉沙盒昼浦,也就是你的應用程序然后重新安裝就可以清空userDefaults里的鍵值對馍资。

SQLite(libsqlite3)

——可以自己封裝,也可使用FMDataBase等第三方封裝庫关噪,還可以使用系統(tǒng)的CoreData

* FMDatabase

一個FMDatabase對象代表一個單獨的SQLite數(shù)據(jù)庫鸟蟹,全局變量FMDatabase* fm用來執(zhí)行SQL語句。

FMDatabaseQueue主要用于在多線程中執(zhí)行多個查詢或更新使兔,它是線程安全的戏锹,線程安全就是保證同一時間只有一個人操作數(shù)據(jù)庫的原始數(shù)據(jù)。

最典型的例子就是銀行的個人賬戶絕不能允許兩個人同時訪問一個原始數(shù)據(jù)火诸,否則假設兩個人都基于最初的數(shù)據(jù)一個人存錢一個人取錢锦针,那最后就會因為無法及時刷新數(shù)據(jù)的原因造成數(shù)據(jù)錯誤,因此必須通過隊列來限制先后順序置蜀,從而保證線程安全奈搜。

* 沙盒的文件路徑?

每一個程序應用都有一個沙盒盯荤,就是這個應用程序對應在MAC或iphone上的位置馋吗,沙盒的下面就是Library這個文件夾。文件下面就有用戶偏好設置的文件夾和Caches硬盤緩存文件夾秋秤!

* 使用數(shù)據(jù)庫對網(wǎng)絡請求到的內(nèi)容進行緩存宏粤?

緩存幫助類里的方法以FMDB為基礎脚翘,將網(wǎng)絡請求得到的JSON數(shù)據(jù)轉化成一個字典數(shù)組傳遞到緩存類,然后方法遍歷字典數(shù)組绍哎,將每一個字典整體當成數(shù)據(jù)庫的一行數(shù)據(jù)進行存儲来农。

很多時候數(shù)據(jù)庫僅僅存儲服務器返回回來的字典遠遠不夠,尤其是需要登錄認證才能從網(wǎng)絡請求到的數(shù)據(jù)還必須一同傳入Access_Taken來滿足不同賬號使用同一個應用崇堰。

網(wǎng)絡請求數(shù)據(jù)是底層沃于,解析數(shù)據(jù)是業(yè)務層,沒有緩存機制時海诲,數(shù)據(jù)來源就是網(wǎng)絡請求回來的數(shù)據(jù)繁莹,因為有了緩存機制,數(shù)據(jù)增添一個來源特幔,首先判斷數(shù)據(jù)庫沙盒本地緩存是否為空咨演,然后直接解析從緩存里的數(shù)據(jù)。

數(shù)據(jù)庫存字典也可以存模型蚯斯。數(shù)據(jù)緩存起來的時候薄风,不傳字典數(shù)組,而是傳模型數(shù)組溉跃。無論是模型數(shù)組還是字典數(shù)組都需要將數(shù)據(jù)轉化成二進制村刨。使用歸檔返回NSData的方法把數(shù)據(jù)轉變成二進制數(shù)據(jù)存儲到文件里面去必須讓對象遵守NSCoding協(xié)議告抄。存儲模型數(shù)組自然要比存儲字典數(shù)組更好撰茎。

把對象轉化成數(shù)據(jù)后,要想把數(shù)據(jù)存入文件打洼,必須遵守NSCoding協(xié)議龄糊,因為數(shù)據(jù)庫也是一個文件呀!但是讓每一個成員變量遵守NSCoding協(xié)議實在是一個很痛苦的事情募疮。所以封裝方法遍歷所有的成員變量炫惩,然后遍歷里對每一個成員變量封裝起來了。

* 緩存的應用場景阿浓?

GET請求一般用來查詢數(shù)據(jù)他嚷,POST請求一般發(fā)大量數(shù)據(jù)給服務器處理(變動性比較大),因此一般只對GET請求進行緩存芭毙,而不對POST請求進行緩存筋蓖。

URL不變又需要多次請求,且每次請求到的數(shù)據(jù)可能都是一樣的退敦,比如服務器上的某張圖片粘咖,無論下載多少次,返回的數(shù)據(jù)都是一樣的侈百。這種情況就使用緩存處理瓮下。好處除了節(jié)省用戶流量翰铡,還可以提升程序的響應速度。

使用NSURLCache類進行URL緩存?

* 使用方法讽坏?

每個網(wǎng)絡請求都有一個對應的網(wǎng)絡緩存回應類锭魔,要想對GET請求進行數(shù)據(jù)緩存,只需設置網(wǎng)絡請求對象的緩存策略屬性(判斷有無緩存執(zhí)行不同的操作震缭,包括使用緩存赂毯、重新請求、不再請求等)拣宰,系統(tǒng)就會自動利用NSURLCache將GET請求到的數(shù)據(jù)緩存到內(nèi)存緩存里党涕。記住喲!一定是存儲到了內(nèi)存緩存之中巡社!

* 緩存策略膛堤?

不同的數(shù)據(jù)類型使用不同的緩存策略,需要及時更新的數(shù)據(jù)不能用緩存晌该!比如股票肥荔、彩票數(shù)據(jù)。固定頻率更新的數(shù)據(jù)可以定期更改緩存策略或者清除緩存來提高程序的響應速度朝群。

忽略緩存的存在每次都重新請求
忽略緩存中不存在Data數(shù)據(jù)時才重新請求
要么直接返回失敗要么只使用緩存的Data數(shù)據(jù)燕耿,離線狀態(tài)
緩存策略都是先驗證本地數(shù)據(jù)和遠程數(shù)據(jù)是否相同,同則緩存不同則重新請求姜胖。

* 清除緩存誉帅?

NSURLCache類創(chuàng)建一個單例類對象,調(diào)用相應的Remove方法來消除緩存右莱。

* iOS 5之前只支持內(nèi)存緩存蚜锨,同時支持內(nèi)存緩存和硬盤緩存是什么概念?也就是緩存原理慢蜓?

應用第一次從網(wǎng)絡請求數(shù)據(jù)亚再,手機的硬盤緩存沒有數(shù)據(jù),內(nèi)存緩存中也沒有數(shù)據(jù)晨抡。

進行數(shù)據(jù)請求氛悬,首先會將請求的數(shù)據(jù)進行解析和顯示,只要解析顯示到了屏幕上耘柱,內(nèi)存緩存便有了數(shù)據(jù)如捅,然后將服務器的數(shù)據(jù)緩存到手機的硬盤內(nèi)存也就是沙盒中,只要程序繼續(xù)運行帆谍,內(nèi)存緩存便一直會有數(shù)據(jù)伪朽,除非程序終止關閉。

內(nèi)存緩存通過代碼創(chuàng)建的數(shù)據(jù)庫進行數(shù)據(jù)存儲汛蝙,只要運行在內(nèi)存中的程序讀取了硬盤緩存里的數(shù)據(jù)烈涮,那么內(nèi)存緩存就開始有數(shù)據(jù)朴肺,當然內(nèi)存緩存會隨著程序的關閉而消失。

Library里的Cache文件夾吧坚洽,那里面就是硬盤緩存的位置戈稿,跟NSUserDefault存放在同一個文件夾。

XML解析和Json解析讶舰?

XML解析的兩種不同方式鞍盗,一是DOM樹節(jié)點解析,二是SAX解析跳昼。一個是樹結構般甲,樹節(jié)點解析的本質(zhì)就是根據(jù)XML的數(shù)據(jù)結構來逐層剖析。SAX解析的本質(zhì)就是遍歷字符串的每一個字符遇到特定的字符回調(diào)不同的方法來對XML的數(shù)據(jù)進行加工鹅颊!SAX是按照順序往下一一遍歷敷存,而DOM解析是將元素抽象成數(shù)據(jù)模型,不一定按照順序執(zhí)行堪伍,解析XML通常不使用官方的XML解析器類NSXMLParser锚烦。多使用第三方庫GData來以DOM的方式解析XML。GData解析XML的關鍵就在于找到根節(jié)點元素帝雇,根據(jù)抽象出來的數(shù)據(jù)模型一層一層地查找內(nèi)容涮俄。當然除了層層查找,還有一種XPath語法直接數(shù)組接收某一個具體路徑關鍵詞下的內(nèi)容尸闸。

iOS5以前是沒有Json的原生解析框架的彻亲,iOS5通常使用蘋果的官方JSON序列化類NSJSONSerialization,使用原生Json解析的最大好處就在于不用擔心第三方Json解析庫的沖突問題室叉,過去使用第三方庫解析Json的時候睹栖,很容易沖突硫惕。

什么時候使用枚舉又什么時候使用結構體茧痕?

1、比如獲取數(shù)據(jù)模型里的性別恼除,使用枚舉的本質(zhì)相當于創(chuàng)建了一個新的基礎數(shù)據(jù)類型踪旷。只不過我們定義的性別這個類似整型數(shù)據(jù)只有男或女這兩個值。

2豁辉、當我們想要獲取到生日的時候令野,就必須包含年、月徽级、日這三個基礎數(shù)據(jù)類型气破。

數(shù)據(jù)模型——首先分清楚結構,然后一層結構一個對象餐抢。一個對象就是一個類现使。

其實我發(fā)現(xiàn)最難的還是建立數(shù)據(jù)模型低匙,如何根據(jù)View視圖的需要進行分類,然后提取相應地數(shù)據(jù)模型碳锈。問題的關鍵可能不是對象的創(chuàng)建顽冶,而是類的創(chuàng)建,首先需要創(chuàng)建幾個類這就讓人很迷茫售碳。我該根據(jù)什么東西來創(chuàng)建類呢强重?首先,分析的是要提取的數(shù)據(jù)文件還是分析View視圖的數(shù)據(jù)需要贸人,當然间景,首先考慮視圖的數(shù)據(jù) 需要,根據(jù)視圖來對數(shù)據(jù)的需要進行分類艺智。那么首先面臨的問題就是如何看懂效果圖拱燃,分析它的數(shù)據(jù)模塊,并對相同類型的數(shù)據(jù)模塊進行分類力惯。通過這個累的對象碗誉,進而設置相同的屬性來接受數(shù)據(jù)。傳遞存儲數(shù)據(jù)父晶。

問題來了哮缺?當我遍歷數(shù)組時遇到了字典,我們肯定會對字典進行進一步處理甲喝,但我不會直接在本類里進行尝苇,而是通過下一個類的方法來對字典進一步分析。當然需要把分析完的結果返回到第一個類的對象的屬性里存儲起來埠胖。當然索然返回的只是一個對象糠溜,可是這個對象是一個層次的數(shù)據(jù)的集合,也就是所直撤,第一個類的對象里只有兩個屬性非竿,可是第二個對象里有下一個結構層次的所有數(shù)據(jù)。通過第一個對象可以找到第一層的數(shù)據(jù)谋竖,然后通過一個數(shù)組屬性又可以找到多個第二層次的數(shù)據(jù)红柱。接著再通過第二層次的數(shù)組屬性可以找到第三層次結構的數(shù)據(jù)。那么使用數(shù)據(jù)的時候蓖乘,難道說必須通過第一個類創(chuàng)建的對象锤悄,點語法數(shù)組屬性,在進行遍歷這個屬性又找到那個對象然后又找數(shù)組屬性么嘉抒?當然不用零聚!我們想要第三層次的數(shù)據(jù),直接使用第三層次的屬性所屬的對象的類不就可以,這樣就直接進入第三層次結構的數(shù)據(jù)耶隶症!也就是說容诬,首先要做的時分析數(shù)據(jù)結構,知道有幾個層次沿腰,一個層次使用一個對象去接收览徒,使用數(shù)組去保存。當然通常的下一層數(shù)據(jù)都是以數(shù)組的形式出現(xiàn)颂龙,而對象存儲的東西則通常是一個字典的內(nèi)容习蓬!也就是說,每當考慮用全新的對象去接收下層數(shù)據(jù)的值時措嵌,首先要做的都是將下層數(shù)據(jù)全用數(shù)組接收起來躲叼。

那么問題又來了?為什么將下層數(shù)據(jù)用對象接收后必須通過第一個類的一個全局數(shù)組去接收企巢。按理說枫慷,不用全局數(shù)組呀!問題在于浪规,這個數(shù)組里面包含的不是字典或听,而是對象。我拿到這個已經(jīng)包含下層次數(shù)據(jù)對象的數(shù)組后可以用來干些什么呢笋婿?首先誉裆,我肯定需要對這個數(shù)組進一步分析處理,尋找下一個層次結構的數(shù)據(jù)缸濒,問題就在于足丢,我該如何通過這個裝滿對象的數(shù)組去找到下一個層次的值呢?

通過上面的分析庇配,現(xiàn)在已經(jīng)清楚的知道斩跌,那個數(shù)據(jù)模型的本質(zhì) 其實即使Json文件的結構。究竟如何去看待這個結構又如何設置屬性呢捞慌?很簡單耀鸦,就從數(shù)據(jù)結構的第一層開始,首先少不了一個字典屬性去接收卿闹,那么現(xiàn)在一個最重要的問題出現(xiàn)了揭糕,為什么每次創(chuàng)建數(shù)據(jù)模型的對象都少不了在屬性里創(chuàng)建一個字典屬性萝快,說法是為了將傳入的字典值存儲到屬性本地上锻霎,方便刷新,可是問題來了揪漩,其實根本不需要通過字典這個屬性將字典存儲到本地呀旋恼!唯一行的通的解釋就是在非初始化的函數(shù)里依然能使用到傳入過來的字典參數(shù)值。只能這么理解!否則你說刷新這也根本無影響呀奄容!現(xiàn)在我已弄懂數(shù)據(jù)模型的層次結構了冰更,有什么類型就創(chuàng)建什么屬性产徊。假設傳入的參數(shù)是一個字典,如果字典里有字符串蜀细,就直接使用字符串屬性去接收舟铜,如果字典里有數(shù)組,就直接使用數(shù)組的去接收已經(jīng)遍歷數(shù)組中的元素一個元素存入一個對象中奠衔。本質(zhì)上此時的數(shù)組接收的是一個個存入一個個數(shù)組元素的對象谆刨。畢竟數(shù)組中只有一種數(shù)據(jù)類型。因此將數(shù)組中的元素存儲到一個個對象中归斤,在使用數(shù)組去接收這些對象那個痊夭,就會發(fā)現(xiàn),其實遍歷的那個數(shù)組和接收所有對象的這個屬性數(shù)組脏里,在內(nèi)容存儲上并無太大的差別她我!而且,我發(fā)現(xiàn)在遍歷一個字典是迫横,我們不僅要看到那些字符串或數(shù)組這樣的顯性屬性番舆,更應該看到本身數(shù)組元素的個數(shù)就是一個屬性值。而且大有用處矾踱!

現(xiàn)在已經(jīng)創(chuàng)建好了數(shù)據(jù)模型合蔽,馬上進入UI的創(chuàng)建,我覺得有必要將數(shù)據(jù)模型的思路捋一捋介返,首先拴事。建立數(shù)據(jù)模型的本質(zhì)就是將文件中的數(shù)據(jù)用對象的屬性來實現(xiàn)。那么問題來了圣蝎,一個文件的數(shù)據(jù)是又結構的刃宵,如何根據(jù)結構來處理數(shù)據(jù)是我們建立數(shù)據(jù)屬性的重要指標。比如說:到底應該如何處理不同層次的數(shù)據(jù)徘公,應該如何接收呢牲证?肯定是通過屬性,那么能夠一個對象的屬性接收所有的數(shù)據(jù)么关面?答案是否定的坦袍。但是可以通過屬于不同類的對象的不同屬性來存儲不同結構層次的值。簡單的說等太,就是數(shù)據(jù)是有結構層次的捂齐,存儲在對象的屬性里的值也是有層次的,只不過這個層次聯(lián)系在于缩抡,首先需要在存儲下層數(shù)據(jù)的類里建立一個屬性奠宜,這個屬性其實就是存儲上層數(shù)據(jù)的屬性的所屬類。通過這個屬性就可以等價于上一個對象,接收到上一個對象里所有的值压真。那么問題來了娩嚼。根據(jù)解析JSon數(shù)據(jù)的方法,遇到字典就接收滴肿,遇到數(shù)組就遍歷岳悟。遍歷數(shù)組的過程中對數(shù)組中的字典進行進一步的分析。也就是說泼差,肯定下一個對象里肯定有一個是用來存儲傳過來的字典的屬性竿音。字典包含數(shù)組,數(shù)組遍歷字典拴驮。這就是本質(zhì)春瞬。問題還在于?如何知道這些值究竟用在何處呢套啤?難道是在用的時候在去構造需要的屬性宽气,還是將文件里所有的數(shù)據(jù)都解析出來存入屬性里。當然最好的方法還是通過提前分析的方式先弄清楚可能需要用到的數(shù)據(jù)類型潜沦,然后在對象的屬性里提前構造萄涯。也就是說,最好提前知道需要提取哪些數(shù)據(jù)唆鸡。方便構建屬性值涝影!

用來存儲數(shù)據(jù)的類叫做模型 ,有一個問題就是當建立的數(shù)據(jù)模型里面存在性別的屬性時争占,如何才能表示性別呢燃逻?你說用整型吧!然后0或1臂痕,鬼知道你0或1表示的是男還是女伯襟。同樣如果你使用字符串,問題依然存在握童!所以最好的方式還是使用枚舉姆怪。那么問題又來了,如何使用枚舉呢澡绩?基礎數(shù)據(jù)類型懂么稽揭?就是像int這樣的。那么當你覺得使用int無法用int里面提供的數(shù)字完美地表達性別時肥卡,這時候可以通過枚舉創(chuàng)建一個類似于基礎數(shù)據(jù)類型溪掀。換句話說吧!OC類型的對象召调,可以通過創(chuàng)建自定義類來實現(xiàn)膨桥,對于基礎類型數(shù)據(jù)蛮浑,則可以通過枚舉來創(chuàng)建唠叛。創(chuàng)建的方式就是

typedef enum{

SexMan;

SexWoman;

}Sex;

這樣用可以象int那樣去接收數(shù)據(jù)模型里的0或1了只嚣。只不過當初是使用int這個基本數(shù)據(jù)類型去接收數(shù)據(jù)模型里的1或1,而現(xiàn)在則可以通過Sex這個基本數(shù)據(jù)類型創(chuàng)建的一個變量去接收數(shù)據(jù)模型里的SexMan或SexWoman艺沼。注意基本數(shù)據(jù)類型是非OA對象類型只是寫assign就行册舞,不寫也行。

現(xiàn)在問題又來了障般,就是如果我希望創(chuàng)建一個屬性來接收數(shù)據(jù)模型里的生日调鲸,生日,有年月日挽荡,肯定首先想到的是字符串藐石,但是為什么要使用結構體?使用結構體的意義在哪兒呢定拟?而且結構體的使用就是

typedef struct{

int year;

int mouth;

int day;

}Data;

注意這個結構體也是一個基礎類型于微,使用的時候也把它當成一個int使用就可以了!雖然我不懂使用結構體的意義在哪兒青自?

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末株依,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子延窜,更是在濱河造成了極大的恐慌恋腕,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件逆瑞,死亡現(xiàn)場離奇詭異荠藤,居然都是意外死亡,警方通過查閱死者的電腦和手機获高,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門商源,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人谋减,你說我怎么就攤上這事牡彻。” “怎么了出爹?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵庄吼,是天一觀的道長。 經(jīng)常有香客問我严就,道長总寻,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任梢为,我火速辦了婚禮渐行,結果婚禮上轰坊,老公的妹妹穿的比我還像新娘。我一直安慰自己祟印,他們只是感情好肴沫,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蕴忆,像睡著了一般颤芬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上套鹅,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天站蝠,我揣著相機與錄音,去河邊找鬼卓鹿。 笑死菱魔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的吟孙。 我是一名探鬼主播澜倦,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼拔疚!你這毒婦竟也來了肥隆?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤稚失,失蹤者是張志新(化名)和其女友劉穎栋艳,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體句各,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡吸占,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了凿宾。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矾屯。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖初厚,靈堂內(nèi)的尸體忽然破棺而出件蚕,到底是詐尸還是另有隱情,我是刑警寧澤产禾,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布排作,位于F島的核電站,受9級特大地震影響亚情,放射性物質(zhì)發(fā)生泄漏妄痪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一楞件、第九天 我趴在偏房一處隱蔽的房頂上張望衫生。 院中可真熱鬧裳瘪,春花似錦、人聲如沸罪针。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽站故。三九已至皆怕,卻和暖如春毅舆,著一層夾襖步出監(jiān)牢的瞬間西篓,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工憋活, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留岂津,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓悦即,卻偏偏與公主長得像吮成,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子辜梳,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

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