Java終極篇

上期回顧

上期我們重點(diǎn)介紹了Java工程師進(jìn)階所需要掌握的一些技術(shù)內(nèi)容。特別對(duì)于即將參加校招的同學(xué)來(lái)說(shuō)创南,最重要的也是這部分內(nèi)容伦忠,你需要了解JVM虛擬機(jī)原理,Java并發(fā)原理稿辙,并且熟悉JDK的部分源碼昆码,了解這些API的底層實(shí)現(xiàn)。

之所以把這部分放在Java Web項(xiàng)目之后來(lái)講邻储,是因?yàn)槲矣X(jué)得赋咽,一開始做項(xiàng)目的時(shí)候你不可能已經(jīng)掌握好上述內(nèi)容了,所以你完全可以帶著問(wèn)題去做項(xiàng)目吨娜,再花時(shí)間去學(xué)習(xí)底層原理脓匿,這樣你可以很好地結(jié)合你之前實(shí)踐過(guò)的代碼去理解那些底層技術(shù)了。

本期主題

本期主要介紹的是Java后端技術(shù)比較“高端”的一些內(nèi)容宦赠,也就是我們經(jīng)常聊的分布式陪毡,架構(gòu),緩存勾扭,消息隊(duì)列等內(nèi)容毡琉,另外我們也會(huì)介紹一些大后端相關(guān)的技術(shù),比如云計(jì)算(OpenStack和docker)妙色,大數(shù)據(jù)(hadoop生態(tài))桅滋,以及一些常用的后端技術(shù)。

這些內(nèi)容其實(shí)離我們并不遠(yuǎn)燎斩,只不過(guò)在平時(shí)的項(xiàng)目中可能用的比較少虱歪,所以作為學(xué)生黨一般也只能通過(guò)一些文章或者書本去學(xué)習(xí)理論知識(shí)。那么基于這么一個(gè)情況栅表,我們來(lái)談?wù)勗趺磳W(xué)習(xí)這部分的內(nèi)容吧笋鄙。

01 Web后端架構(gòu)

Web后端架構(gòu)

后端進(jìn)階第一步,先把Web架構(gòu)相關(guān)的技術(shù)學(xué)好吧怪瓶,因?yàn)橹按蠹叶甲鲞^(guò)Java Web項(xiàng)目萧落,想必對(duì)這塊內(nèi)容還是比較熟悉的吧。我們需要了解Web架構(gòu)演化的歷史洗贰,了解為什么要做服務(wù)器集群找岖,為什么要用緩存,為什么要做拆分敛滋,做主從许布,以及為什么要有分布式。

推薦資源:《深入分析Java Web技術(shù)內(nèi)幕》绎晃,《大型網(wǎng)站技術(shù)架構(gòu)》

兩本都是阿里大佬出的書蜜唾,兩位都是淘寶系的技術(shù)大牛。前一本書主要講述的Java Web的一些技術(shù)基礎(chǔ)庶艾,關(guān)于Web架構(gòu)的內(nèi)容比較少袁余。

后一本則是李智慧大佬寫的架構(gòu)科普書籍,用非常簡(jiǎn)單易懂的語(yǔ)言寫出了大型Web項(xiàng)目架構(gòu)之美咱揍,分別著眼于高可用颖榜,高性能,高擴(kuò)展等方面講解了很多設(shè)計(jì)結(jié)構(gòu)的原則和方法煤裙。這本書應(yīng)該是Web架構(gòu)小白最好的入門書籍了掩完。

02 分布式理論基礎(chǔ)

由于下面的內(nèi)容或多或少都會(huì)涉及到分布式相關(guān)的知識(shí),所以這一部分我們主要介紹一下有關(guān)分布式的基礎(chǔ)知識(shí)硼砰。筆者對(duì)分布式的學(xué)習(xí)主要也停留在理論上藤为,所以這里講的也是一些理論的東西。

推薦資源:《從Paxos到zookeeper分布式一致性原理與實(shí)踐》

這本書比較好地科普了分布式基礎(chǔ)知識(shí)夺刑,也介紹了zookeeper的原理和使用缅疟。了解zookeeper是了解分布式技術(shù)很重要的一個(gè)環(huán)節(jié)。

1 CAP 和 BASE

談分布式就要談CAP遍愿,一致性存淫,高可用,網(wǎng)絡(luò)分區(qū)容忍性為何只能三選二沼填,為什么網(wǎng)絡(luò)分區(qū)容忍性必須要被考慮桅咆。CAP在實(shí)際應(yīng)用中真的可靠么?

BASE出現(xiàn)的原因坞笙,為什么BASE更容易實(shí)現(xiàn)岩饼,更適合實(shí)際應(yīng)用荚虚,BASE可以通過(guò)哪些技術(shù)去實(shí)現(xiàn)呢?

2 一致性協(xié)議和算法

一致性協(xié)議也是分布式理論的一個(gè)重點(diǎn)籍茧,2PC版述,3PC,分別指的是什么寞冯,其中分別有什么問(wèn)題渴析。3PC解決了2PC的一個(gè)問(wèn)題,卻仍然不完美吮龄。

Paxos和Raft兩種一致性算法俭茧,顯然前者比后者復(fù)雜得多,但是Raft可能更加實(shí)用漓帚。為什么我們需要一致性算法母债,它們又有什么用呢。

3 分布式事務(wù)和最終一致性

分布式事務(wù)是一個(gè)復(fù)雜的概念尝抖,主要指分布式系統(tǒng)中需要強(qiáng)一致場(chǎng)景時(shí)所用到的事務(wù)场斑。理解和實(shí)現(xiàn)它都不是簡(jiǎn)單的事情。

如果我們退而求其次牵署,不要求強(qiáng)一致性漏隐,而選擇最終一致性,則可以用更加靈活的方案奴迅,比如事務(wù)消息青责。

03 常見(jiàn)分布式技術(shù)

推薦資源:《從Paxos到zookeeper分布式一致性原理與實(shí)踐》《深入理解Spring Cloud與微服務(wù)構(gòu)建》,《分布式服務(wù)框架原理與實(shí)踐》取具。

1 zookeeper

上文說(shuō)到zookeeper是分布式技術(shù)很重要的一塊內(nèi)容脖隶,這是因?yàn)閦ookeeper用于管理和協(xié)調(diào)分布式組件,雖然它出自hadoop生態(tài)暇检,卻用于很多應(yīng)用當(dāng)中产阱,基本上有分布式的地方就有zk的存在。

簡(jiǎn)單說(shuō)來(lái)块仆,zk可以提供全局統(tǒng)一的節(jié)點(diǎn)樹結(jié)構(gòu)构蹬,通過(guò)節(jié)點(diǎn)來(lái)管理資源,同時(shí)zk自身是使用集群方式部署的悔据,所以保證自己是高可用的庄敛。根據(jù)這一特點(diǎn),它可以作為服務(wù)注冊(cè)中心科汗,還可以實(shí)現(xiàn)分布式鎖等功能藻烤。

2 分布式服務(wù)

分布式服務(wù)是一個(gè)挺有意思的東西,也很常用,簡(jiǎn)單來(lái)說(shuō)怖亭,就是把服務(wù)組件部署在不同節(jié)點(diǎn)上涎显,通過(guò)rpc的方式訪問(wèn),為了實(shí)現(xiàn)這一功能兴猩,我們需要考慮通信協(xié)議期吓,序列化方式,進(jìn)一步來(lái)說(shuō)峭跳,我們還要了解如何做服務(wù)注冊(cè)和發(fā)現(xiàn)膘婶,以及如何做限流缺前,做服務(wù)熔斷和降級(jí)蛀醉,等等等等。

常見(jiàn)的分布式服務(wù)框架有dubbo衅码,以及Spring Cloud這類產(chǎn)品拯刁,學(xué)會(huì)使用他們,然后了解它們的底層實(shí)現(xiàn)原理逝段,相信會(huì)是一個(gè)很有趣的過(guò)程垛玻。

3 負(fù)載均衡

關(guān)于負(fù)載均衡,說(shuō)起來(lái)其實(shí)很簡(jiǎn)單奶躯,就是把一組請(qǐng)求分成多組帚桩,按照某種規(guī)則分發(fā)到多臺(tái)服務(wù)器上。

但是負(fù)載均衡也涉及很多內(nèi)容嘹黔,包括負(fù)載均衡的算法账嚎,負(fù)載均衡的實(shí)現(xiàn)方式,我們需要了解它到底是在哪一層實(shí)現(xiàn)的儡蔓。

一般來(lái)說(shuō)郭蕉,常用的負(fù)載均衡方式有nginx和lvs兩種,分別是7層和4層的負(fù)載均衡喂江,一個(gè)基于域名進(jìn)行負(fù)載均衡召锈,一個(gè)基于端口號(hào)做負(fù)載均衡。了解它們的實(shí)現(xiàn)原理获询,會(huì)讓你更好地理解這部分內(nèi)容涨岁。

4 分布式session和分布式鎖

這兩個(gè)組件也是分布式項(xiàng)目中經(jīng)常要用到的,了解它們的使用和實(shí)現(xiàn)原理吉嚣,有助于以后在項(xiàng)目中的實(shí)踐卵惦。

分布式session一般有多種實(shí)現(xiàn)方式,可以存數(shù)據(jù)庫(kù)或者緩存瓦戚,也可以單獨(dú)部署成一個(gè)服務(wù)沮尿,總之最重要的一點(diǎn)就是,性能要好,并且要高可用畜疾。

分布式鎖則用于一些需要一致性的場(chǎng)景中赴邻,比如訂單生成這種全局唯一的功能,分布式鎖通撤却罚可以用緩存或者數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)姥敛,但為了保證高性能,并且避免死鎖瞎暑,我們一般采用Redis或者zookeeper來(lái)實(shí)現(xiàn)彤敛。

04 緩存

講到緩存,我們說(shuō)的最多的就是Redis了赌,所以我們要講的也是Redis墨榄。學(xué)習(xí)Redis,除了學(xué)會(huì)使用簡(jiǎn)單的api之外勿她,最好還要了解它的實(shí)現(xiàn)原理袄秩。

推薦資源:《Redis設(shè)計(jì)與實(shí)現(xiàn)》

這里我們主要介紹三部分內(nèi)容,也是我個(gè)人認(rèn)為比較重要的三塊內(nèi)容逢并。

1 數(shù)據(jù)結(jié)構(gòu)和底層實(shí)現(xiàn)

Redis的數(shù)據(jù)結(jié)構(gòu)比較豐富之剧,但更有意思的是這些數(shù)據(jù)結(jié)構(gòu)背后的底層實(shí)現(xiàn),也就是作者如何用c語(yǔ)言來(lái)實(shí)現(xiàn)這些結(jié)構(gòu)的砍聊。其中會(huì)有你熟悉的數(shù)組背稼,鏈表,還有一些有意思的結(jié)構(gòu)比如跳表玻蝌,哈希表蟹肘。

2 持久化方式

持久化方式主要分兩種,aof和rdb灶伊,前者基于追加日志的方式來(lái)實(shí)現(xiàn)日志持久化疆前,后者則是使用備份數(shù)據(jù)的方式來(lái)實(shí)現(xiàn)持久化。

3 分布式方案

這是Redis最有趣也最復(fù)雜的部分聘萨。 首先竹椒,Redis可以使用主從的方式部署,其中“哨兵”這一組件用于故障切換米辐。

基于哨兵的主從部署后來(lái)發(fā)展為Redis cluster的部署方式胸完,也就是Redis集群,通過(guò)分片的方式來(lái)部署Redis集群翘贮,并且集群中任一節(jié)點(diǎn)都可以用來(lái)對(duì)外提供服務(wù)赊窥。

當(dāng)然,除了Redis集群之外狸页,還有codis的分布式方案锨能,codis基于代理的方式來(lái)實(shí)現(xiàn)扯再,表面上還是使用原來(lái)的Redis API,但實(shí)際上訪問(wèn)的卻是一個(gè)Redis集群址遇。

05 消息隊(duì)列

消息隊(duì)列的作用一般來(lái)說(shuō)就是削峰熄阻,控流,解耦合倔约,目前業(yè)界也有很多的消息隊(duì)列產(chǎn)品秃殉,在很多公司都會(huì)使用,當(dāng)然浸剩,它們各有各的優(yōu)缺點(diǎn)钾军,我們也不必全都了解,這里我們大概介紹3種消息隊(duì)列绢要,它們各自的特點(diǎn)都比較鮮明吏恭,值得大家去了解一番。

1 RabbitMQ

筆者剛開始接觸的消息隊(duì)列是rabbitmq袖扛,它的使用方法比較簡(jiǎn)單砸泛。 RabbitMQ是一個(gè)由erlang開發(fā)的AMQP(Advanced Message Queue )的開源實(shí)現(xiàn)十籍,主要有以下特點(diǎn):

安裝部署簡(jiǎn)單蛆封,上手門檻低,功能豐富勾栗,符合AMQP標(biāo)準(zhǔn)惨篱;

企業(yè)級(jí)消息隊(duì)列,經(jīng)過(guò)大量實(shí)踐考驗(yàn)的高可靠围俘;

集群易擴(kuò)展砸讳,可以輕松的增減集群節(jié)點(diǎn);

有強(qiáng)大的WEB管理頁(yè)面界牡。

2 Kafka

與其他MQ相比較簿寂,Kafka有一些優(yōu)缺點(diǎn),主要如下

優(yōu)點(diǎn):

可擴(kuò)展宿亡。Kafka集群可以透明的擴(kuò)展常遂,增加新的服務(wù)器進(jìn)集群。

高性能挽荠。Kafka性能遠(yuǎn)超過(guò)傳統(tǒng)的ActiveMQ克胳、RabbitMQ等,Kafka支持Batch操作圈匆。

容錯(cuò)性漠另。Kafka每個(gè)Partition數(shù)據(jù)會(huì)復(fù)制到幾臺(tái)服務(wù)器,當(dāng)某個(gè)Broker失效時(shí)跃赚,Zookeeper將通知生產(chǎn)者和消費(fèi)者從而使用其他的Broker笆搓。

缺點(diǎn):

重復(fù)消息。Kafka保證每條消息至少送達(dá)一次,雖然幾率很小满败,但一條消息可能被送達(dá)多次窘奏。

消息亂序。Kafka某一個(gè)固定的Partition內(nèi)部的消息是保證有序的葫录,如果一個(gè)Topic有多個(gè)Partition着裹,partition之間的消息送達(dá)不保證有序。

復(fù)雜性米同。Kafka需要Zookeeper的支持骇扇,Topic一般需要人工創(chuàng)建,部署和維護(hù)比一般MQ成本更高面粮。

RocketMQ

RocketMQ是一個(gè)純java少孝、分布式、隊(duì)列模型的開源消息中間件熬苍,前身是Metaq稍走,當(dāng) Metaq 3.0發(fā)布時(shí),產(chǎn)品名稱改為 RocketMQ柴底。

具有以下特點(diǎn):

1婿脸、能夠保證嚴(yán)格的消息順序

2、提供豐富的消息拉取模式

3柄驻、高效的訂閱者水平擴(kuò)展能力

4狐树、實(shí)時(shí)的消息訂閱機(jī)制

5、億級(jí)消息堆積能力

除此之外鸿脓,它還有一個(gè)優(yōu)點(diǎn)抑钟,就是支持事務(wù)消息,讓分布式事務(wù)的實(shí)現(xiàn)變得簡(jiǎn)單

05 分布式數(shù)據(jù)庫(kù)

這里說(shuō)的分布式”數(shù)據(jù)庫(kù)“野哭,其實(shí)指的是數(shù)據(jù)庫(kù)的分布式方案在塔,更具體來(lái)說(shuō),主要指的是數(shù)據(jù)庫(kù)的主從部署拨黔,以及分庫(kù)蛔溃,分表。

1 主從復(fù)制和讀寫分離

這是數(shù)據(jù)庫(kù)高可用的基礎(chǔ)蓉驹。MySQL數(shù)據(jù)庫(kù)會(huì)使用日志來(lái)完成主從復(fù)制城榛,先寫主庫(kù),然后再同步到從庫(kù)态兴。讀寫分離則一般是指的是:從庫(kù)負(fù)責(zé)讀狠持,主庫(kù)負(fù)責(zé)寫。

2 分庫(kù)分表方案

分庫(kù)分表是解決大表性能瓶頸的一種方法瞻润,當(dāng)然也分為橫向拆分和縱向拆分喘垂,橫向拆分指的就是減少單表的數(shù)據(jù)量甜刻,放到其他表或者其他庫(kù)中≌眨縱向拆分則一般指按照業(yè)務(wù)來(lái)拆分得院,把不必要的字段放到其他表中。

分庫(kù)分表可以在應(yīng)用層做章贞,通過(guò)對(duì)id或者其他字段進(jìn)行hash以便映射到對(duì)應(yīng)的表中祥绞。當(dāng)然也可以通過(guò)數(shù)據(jù)庫(kù)中間件來(lái)完成,例如mycat這種中間件鸭限,通過(guò)代理的方式實(shí)現(xiàn)分庫(kù)分表蜕径,非常方便。

06 大后端相關(guān)技術(shù)

這部分的內(nèi)容筆者也只是略知一二败京,所以這里只是拋磚引玉兜喻,做一個(gè)簡(jiǎn)單的科普罷了。畢竟咱們學(xué)技術(shù)的人都是先講深度再來(lái)談廣度赡麦。當(dāng)你對(duì)之前的內(nèi)容掌握得比較好的時(shí)候朴皆,再去看看大后端的一些其他技術(shù),也會(huì)感覺(jué)挺有意思的泛粹。

下面這些技術(shù)主要是我自己學(xué)習(xí)路上接觸過(guò)的一些內(nèi)容遂铡,所以比較熟悉,才拿出來(lái)分享戚扳,至于適不適合大家的口味忧便,可能就見(jiàn)仁見(jiàn)智了族吻。

Hadoop生態(tài)

筆者之前參與過(guò)數(shù)據(jù)倉(cāng)庫(kù)相關(guān)的項(xiàng)目帽借,所以稍微了解了這方面的內(nèi)容,感覺(jué)hadoop生態(tài)還是挺有意思的超歌。

大家不妨去了解一下其中的基本組件砍艾,然后打一個(gè)集群自己玩玩看。 常見(jiàn)的組件有:hdfs巍举,hbase脆荷,hive,zookeeper懊悯,flume蜓谋,sqoop,yarn炭分。

推薦資源:《大數(shù)據(jù)技術(shù)原理與應(yīng)用》

對(duì)于入門hadoop生態(tài)來(lái)說(shuō)桃焕,這本書完全足夠了,如果你要做大數(shù)據(jù)平臺(tái)開發(fā)或者是數(shù)據(jù)研發(fā)工程師捧毛,可能需要非常全面地了解這些組件的底層原理观堂。

云計(jì)算初探

項(xiàng)目中主要接觸到的是OpenStack让网,docker以及kubenetes,OpenStack是一個(gè)私有云生態(tài)师痕,內(nèi)部結(jié)構(gòu)對(duì)于我們來(lái)說(shuō)還是比較復(fù)雜的溃睹,不過(guò)最根本的虛擬化技術(shù)還是基于kvm虛擬化來(lái)實(shí)現(xiàn)的。

docker則是現(xiàn)在非常流行的一種容器胰坟,用于快速部署應(yīng)用因篇。

kubenetes也借著docker的東風(fēng)火了起來(lái),可以理解為是基于容器的分布式調(diào)度系統(tǒng)笔横。

這些技術(shù)在企業(yè)中也是比較常用的惜犀,只不過(guò)對(duì)于研發(fā)同學(xué)來(lái)說(shuō),更多時(shí)候扮演的是工具的角色狠裹。

推薦資源:《Docker技術(shù)入門與實(shí)戰(zhàn)》虽界,《kubenetes權(quán)威指南》

其他常見(jiàn)后端技術(shù)

除此之外,想必大家還了解過(guò)很多其他的技術(shù)涛菠,只不過(guò)不同的業(yè)務(wù)用到的組件往往不一樣莉御,所以并不是每個(gè)東西你都需要去了解。

比如搜索引擎技術(shù)Lucene俗冻,基于它的兩款產(chǎn)品solr和elasticsearch礁叔,通常出現(xiàn)在需要搜索功能的項(xiàng)目中。

再比如流式計(jì)算技術(shù)迄薄,如storm和spark streaming等等琅关,通常都用于大數(shù)據(jù)部門,用作實(shí)時(shí)數(shù)據(jù)采集讥蔽。

又如ELK實(shí)現(xiàn)的分布式日志系統(tǒng)涣易,多用于分析和定位系統(tǒng)問(wèn)題,經(jīng)常會(huì)出現(xiàn)在一些比較重要的應(yīng)用當(dāng)中冶伞。

當(dāng)然新症,也有現(xiàn)在大火的人工智能,還有太多的技術(shù)我們沒(méi)機(jī)會(huì)去了解和使用响禽,我們能做的也就是在自己能力范圍內(nèi)把需要做的東西做到最好了徒爹。

所以,這些內(nèi)容并不是每一樣你都需要知道芋类,但是如果有時(shí)間去了解一下的話隆嗅,還是建議多了解一點(diǎn)的。

07 總結(jié)

總結(jié)

1 Web架構(gòu) 2 分布式基礎(chǔ)理論 3 常見(jiàn)分布式技術(shù) 4 緩存 5 消息隊(duì)列 6 數(shù)據(jù)的分布式方案 7 大后端相關(guān)技術(shù)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末侯繁,一起剝皮案震驚了整個(gè)濱河市胖喳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌巫击,老刑警劉巖禀晓,帶你破解...
    沈念sama閱讀 211,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件精续,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡粹懒,警方通過(guò)查閱死者的電腦和手機(jī)重付,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)凫乖,“玉大人确垫,你說(shuō)我怎么就攤上這事∶毖浚” “怎么了删掀?”我有些...
    開封第一講書人閱讀 157,435評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)导街。 經(jīng)常有香客問(wèn)我披泪,道長(zhǎng),這世上最難降的妖魔是什么搬瑰? 我笑而不...
    開封第一講書人閱讀 56,509評(píng)論 1 284
  • 正文 為了忘掉前任款票,我火速辦了婚禮,結(jié)果婚禮上泽论,老公的妹妹穿的比我還像新娘艾少。我一直安慰自己,他們只是感情好翼悴,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,611評(píng)論 6 386
  • 文/花漫 我一把揭開白布缚够。 她就那樣靜靜地躺著,像睡著了一般鹦赎。 火紅的嫁衣襯著肌膚如雪谍椅。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,837評(píng)論 1 290
  • 那天钙姊,我揣著相機(jī)與錄音毯辅,去河邊找鬼。 笑死煞额,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的沾谜。 我是一名探鬼主播膊毁,決...
    沈念sama閱讀 38,987評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼基跑!你這毒婦竟也來(lái)了婚温?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,730評(píng)論 0 267
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤媳否,失蹤者是張志新(化名)和其女友劉穎栅螟,沒(méi)想到半個(gè)月后荆秦,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,194評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡力图,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,525評(píng)論 2 327
  • 正文 我和宋清朗相戀三年步绸,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片吃媒。...
    茶點(diǎn)故事閱讀 38,664評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡瓤介,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赘那,到底是詐尸還是另有隱情刑桑,我是刑警寧澤,帶...
    沈念sama閱讀 34,334評(píng)論 4 330
  • 正文 年R本政府宣布募舟,位于F島的核電站祠斧,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏拱礁。R本人自食惡果不足惜梁肿,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,944評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望觅彰。 院中可真熱鬧吩蔑,春花似錦、人聲如沸填抬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)飒责。三九已至赘娄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宏蛉,已是汗流浹背遣臼。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留拾并,地道東北人揍堰。 一個(gè)月前我還...
    沈念sama閱讀 46,389評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像嗅义,于是被迫代替她去往敵國(guó)和親屏歹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,554評(píng)論 2 349

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