Tomcat學(xué)習(xí)筆記

Tomcate筆記

最后模塊作業(yè)是手寫代碼,實(shí)現(xiàn)tomcat的加載webapp目錄下的項(xiàng)目宣渗,根據(jù)訪問路徑進(jìn)行訪問servlet和靜態(tài)資源,通過加載子項(xiàng)目的web.xml和自定義classLoader万牺,反射关顷,最終完成。每個(gè)作業(yè)都附帶視頻講解始衅。


https://gitee.com/baiheai/code

1.Tomcat 系統(tǒng)架構(gòu)與原理剖析

通常配置conf下的server.xml;web.xml是全局的冷蚂,以各項(xiàng)目配置的為準(zhǔn)缭保;work文件夾是jsp編譯、存放蝙茶、運(yùn)行的文件夾艺骂。

瀏覽器訪問服務(wù)器的流程


Tomcat處理流程及架構(gòu):

Tomcat的兩個(gè)重要身份1)http服務(wù)器,實(shí)現(xiàn)核心是連接器(Connector)隆夯,而連接器的核心是Coyote

2)Tomcat是?個(gè)Servlet容器钳恕,核心是容器(Container),而容器的核心是Container

Coyote功能:

Coyote 是Tomcat 中連接器的組件名稱 , 是對(duì)外的接?蹄衷∮嵌睿客戶端通過Coyote與服務(wù)器建?連接、發(fā)送請求并接受響應(yīng) 愧口。a.Coyote 封裝了底層的?絡(luò)通信(Socket 請求及響應(yīng)處理)b.Coyote 使Catalina 容器(容器組件)與具體的請求協(xié)議及IO操作?式完全解耦c.Coyote 將Socket 輸?轉(zhuǎn)換封裝為 Request 對(duì)象宙址,進(jìn)?步封裝后交由Catalina 容器進(jìn)?處理,處理請求完成后, Catalina 通過Coyote 提供的Response 對(duì)象將結(jié)果寫?輸出流d.Coyote 負(fù)責(zé)的是具體協(xié)議(應(yīng)?層)和IO(傳輸層)相關(guān)內(nèi)容

Tomcat體系結(jié)構(gòu)


Tomcat Servlet容器處理流程(簡)

1)HTTP服務(wù)器會(huì)把請求信息使?ServletRequest對(duì)象封裝起來2)進(jìn)?步去調(diào)?Servlet容器中某個(gè)具體的Servlet3)在 2)中调卑,Servlet容器拿到請求后抡砂,根據(jù)URL和Servlet的映射關(guān)系,找到相應(yīng)的Servlet4)如果Servlet還沒有被加載恬涧,就?反射機(jī)制創(chuàng)建這個(gè)Servlet注益,并調(diào)?Servlet的init?法來完成初始化5)接著調(diào)?這個(gè)具體Servlet的service?法來處理請求,請求處理結(jié)果使?ServletResponse對(duì)象封裝6)把ServletResponse對(duì)象返回給HTTP服務(wù)器溯捆,HTTP服務(wù)器會(huì)把響應(yīng)發(fā)送給客戶端

Tomcat Servlet容器處理流程及組件說明(詳)

1.http服務(wù)器接收到用戶請求丑搔,Coyote中的EndPoint進(jìn)行接收處理,EndPoint是通信端點(diǎn)提揍,即通信監(jiān)聽的接?啤月,是具體Socket接收和發(fā)送處理器,是對(duì)傳輸層的抽象劳跃,因此EndPoint?來實(shí)現(xiàn)TCP/IP協(xié)議的

2.Processor接收來?EndPoint的Socket谎仲,讀取字節(jié)流解析成Tomcat Request和Response對(duì)象,并通過Adapter將其提交到容器處理刨仑,Processor是對(duì)應(yīng)?層協(xié)議的抽象Processor 是Coyote 協(xié)議處理接? 郑诺,如果說EndPoint是?來實(shí)現(xiàn)TCP/IP協(xié)議的,那么Processor?來實(shí)現(xiàn)HTTP協(xié)議杉武,

3.接收ProtocolHandler發(fā)送的請求辙诞。由于協(xié)議不同,客戶端發(fā)過來的請求信息也不盡相同轻抱,Tomcat定義了??的Request類來封裝這些請求信息飞涂。ProtocolHandler(由EndPoint和Processor組成)接?負(fù)責(zé)解析請求并?成Tomcat Request類。但是這個(gè)Request對(duì)象不是標(biāo)準(zhǔn)的ServletRequest,不能?Tomcat Request作為參數(shù)來調(diào)?容器较店。Tomcat設(shè)計(jì)者的解決?案是引?CoyoteAdapter志鹃,這是適配器模式的經(jīng)典運(yùn)?,連接器調(diào)?CoyoteAdapter的Sevice?法泽西,傳?的是Tomcat Request對(duì)象曹铃,CoyoteAdapter負(fù)責(zé)將Tomcat Request轉(zhuǎn)成ServletRequest,再調(diào)?容器捧杉。

4.Tomcat 本質(zhì)上就是?款 Servlet 容器陕见, 因?yàn)?Catalina 才是 Tomcat 的核? 。容器接收到ServletRequest后味抖,根據(jù)URL和Servlet的映射關(guān)系评甜,找到相應(yīng)的Servlet。如果Servlet還沒有被加載仔涩,就?反射機(jī)制創(chuàng)建這個(gè)Servlet忍坷,并調(diào)?Servlet的init?法來完成初始化。接著調(diào)?這個(gè)具體Servlet的service?法來處理請求熔脂,請求處理結(jié)果使?ServletResponse對(duì)象封裝佩研。

其中?個(gè)Catalina實(shí)例(容器)對(duì)應(yīng)?個(gè) Server實(shí)例(容器),一個(gè)Server實(shí)例對(duì)應(yīng)多個(gè)Service實(shí)例(容器)霞揉。

Catalina:負(fù)責(zé)解析Tomcat的配置?件(server.xml) , 以此來創(chuàng)建服務(wù)器Server組件并進(jìn)?管理Server:服務(wù)器表示整個(gè)Catalina Servlet容器以及其它組件旬薯,負(fù)責(zé)組裝并啟動(dòng)Servlaet引擎,Tomcat連接器。Server通過實(shí)現(xiàn)Lifecycle接?适秩,提供了?種優(yōu)雅的啟動(dòng)和關(guān)閉整個(gè)系統(tǒng)的?式Service:服務(wù)是Server內(nèi)部的組件绊序,?個(gè)Server包含多個(gè)Service。它將若?個(gè)Connector組件綁定到?個(gè)Container:容器秽荞,負(fù)責(zé)處理?戶的servlet請求骤公,并返回對(duì)象給web?戶的模塊

Container組件下有?種具體的組件,分別是Engine扬跋、Host阶捆、Context和Wrapper。這4種組件(容器)是??關(guān)系胁住。Tomcat通過?種分層的架構(gòu)趁猴,使得Servlet容器具有很好的靈活性刊咳。Engine:表示整個(gè)Catalina的Servlet引擎彪见,?來管理多個(gè)虛擬站點(diǎn),?個(gè)Service最多只能有?個(gè)Engine娱挨,但是?個(gè)引擎可包含多個(gè)HostHost:代表?個(gè)虛擬主機(jī)余指,或者說?個(gè)站點(diǎn),可以給Tomcat配置多個(gè)虛擬主機(jī)地址,??個(gè)虛擬主機(jī)下可包含多個(gè)ContextContext:表示?個(gè)Web應(yīng)?程序酵镜, ?個(gè)Web應(yīng)?可包含多個(gè)WrapperWrapper:表示?個(gè)Servlet碉碉,Wrapper 作為容器中的最底層,不能包含?容器上述組件的配置其實(shí)就體現(xiàn)在conf/server.xml中淮韭。

5.Coyote接收到容器返回的Response 對(duì)象之后進(jìn)行返回給用戶

2.Tomcat 服務(wù)器核?配置詳解

核?配置在tomcat?錄下conf/server.xml?件垢粮,server.xml中包含了 Servlet容器的相關(guān)配置,即 Catalina 的配置靠粪。

Server標(biāo)簽:port:關(guān)閉服務(wù)器的監(jiān)聽端?蜡吧;shutdown:關(guān)閉服務(wù)器的指令字符串

Service 標(biāo)簽:該標(biāo)簽?于創(chuàng)建 Service 實(shí)例,默認(rèn)使? org.apache.catalina.core.StandardService占键。默認(rèn)情況下昔善,Tomcat 僅指定了Service 的名稱, 值為 "Catalina"畔乙。Service ?標(biāo)簽為 : Listener君仆、Executor、Connector牲距、Engine返咱,其中:Listener ?于為Service添加?命周期監(jiān)聽器,Executor ?于配置Service 共享線程池牍鞠,Connector ?于配置Service 包含的鏈接器洛姑,Engine ?于配置Service中鏈接器對(duì)應(yīng)的Servlet 容器引擎

Executor 標(biāo)簽:默認(rèn)情況下,Service 并未添加共享線程池配置皮服。 如果我們想添加?個(gè)線程池楞艾, 可以在<Service> 下添加如下配置:name:線程池名稱,?于 Connector中指定namePrefix:所創(chuàng)建的每個(gè)線程的名稱前綴龄广,?個(gè)單獨(dú)的線程名稱為namePrefix+threadNumbermaxThreads:池中最?線程數(shù)minSpareThreads:活躍線程數(shù)硫眯,也就是核?池線程數(shù),這些線程不會(huì)被銷毀择同,會(huì)?直存在maxIdleTime:線程空閑時(shí)間两入,超過該時(shí)間后,空閑線程會(huì)被銷毀敲才,默認(rèn)值為6000(1分鐘)裹纳,單位毫秒maxQueueSize:在被執(zhí)?前最?線程排隊(duì)數(shù)?,默認(rèn)為Int的最?值紧武,也就是?義的?限剃氧。除?特殊情況,這個(gè)值 不需要更改阻星,否則會(huì)有請求不會(huì)被處理的情況發(fā)?prestartminSpareThreads:啟動(dòng)線程池時(shí)是否啟動(dòng) minSpareThreads部分線程朋鞍。默認(rèn)值為false,即不啟動(dòng)threadPriority:線程池中線程優(yōu)先級(jí),默認(rèn)值為5滥酥,值從1到10className:線程池實(shí)現(xiàn)類更舞,未指定情況下,默認(rèn)實(shí)現(xiàn)類為org.apache.catalina.core.StandardThreadExecutor坎吻。如果想使??定義線程池?先需要實(shí)現(xiàn)org.apache.catalina.Executor接?

Connector 標(biāo)簽:默認(rèn)情況下缆蝉,server.xml 配置了兩個(gè)鏈接器,?個(gè)?持HTTP協(xié)議瘦真,?個(gè)?持AJP協(xié)議?多數(shù)情況下返奉,我們并不需要新增鏈接器配置,只是根據(jù)需要對(duì)已有鏈接器進(jìn)?優(yōu)化

Engine 標(biāo)簽:表示 Servlet 引擎

Host 標(biāo)簽:?于配置?個(gè)虛擬主機(jī)

Context 標(biāo)簽:?于配置?個(gè)Web應(yīng)?


3.Tomcat 源碼構(gòu)建及核?流程源碼剖析

tomcate啟動(dòng)流程圖:


Tomcat執(zhí)行流程:



4.Tomcat 類加載機(jī)制剖析



JVM 的類加載機(jī)制:


當(dāng) JVM 運(yùn)?過程中吗氏,?戶?定義了類加載器去加載某些類時(shí)芽偏,會(huì)按照下?的步驟(?類委托機(jī)制)  1) ?戶??的類加載器,把加載請求傳給?加載器弦讽,?加載器再傳給其?加載器污尉,?直到加載器樹的頂層  2 )最頂層的類加載器?先針對(duì)其特定的位置加載,如果加載不到就轉(zhuǎn)交給?類  3 )如果?直到底層的類加載都沒有加載到往产,那么就會(huì)拋出異常 ClassNotFoundException 因此被碗,按照這個(gè)過程可以想到,如果同樣在 classpath 指定的?錄中和???作?錄中存放相同的class仿村,會(huì)優(yōu)先加載 classpath ?錄中的?件锐朴。

當(dāng)某個(gè)類加載器需要加載某個(gè).class?件時(shí),它?先把這個(gè)任務(wù)委托給他的上級(jí)類加載器蔼囊,遞歸這個(gè)操作焚志,如果上級(jí)的類加載器沒有加載,??才會(huì)去加載這個(gè)類畏鼓。

防?重復(fù)加載同?個(gè).class酱酬。通過委托去向上?問?問,加載過了云矫,就不?再加載?遍膳沽。保證數(shù)據(jù)安全。保證核?.class不能被篡改让禀。通過委托?式挑社,不會(huì)去篡改核?.class,即使篡改也不會(huì)去加載巡揍,即使加載也不會(huì)是同?個(gè).class對(duì)象了痛阻。不同的加載器加載同?個(gè).class也不是同?個(gè).class對(duì)象。這樣保證了class執(zhí)?安全(如果?類加載器先加載吼肥,那么我們可以寫?些與java.lang包中基礎(chǔ)類同名的類录平, 然后再定義?個(gè)?類加載器麻车,這樣整個(gè)應(yīng)?使?的基礎(chǔ)類就都變成我們??定義的類了缀皱。)Object類 -----> ?定義類加載器(會(huì)出現(xiàn)問題的斗这,那么真正的Object類就可能被篡改了)

Tomcat的類加載:

引導(dǎo)類加載器 和 擴(kuò)展類加載器 的作?不變系統(tǒng)類加載器正常情況下加載的是 CLASSPATH 下的類,但是 Tomcat 的啟動(dòng)腳本并未使?該變量啤斗,?是加載tomcat啟動(dòng)的類表箭,?如bootstrap.jar,通常在catalina.bat或者catalina.sh中指定钮莲。位于CATALINA_HOME/bin下Common 通?類加載器加載Tomcat使?以及應(yīng)?通?的?些類免钻,位于CATALINA_HOME/lib下,?如servlet-api.jarCatalina ClassLoader ?于加載服務(wù)器內(nèi)部可?類崔拥,這些類應(yīng)?程序不能訪問Shared ClassLoader ?于加載應(yīng)?程序共享類极舔,這些類服務(wù)器不會(huì)依賴Webapp ClassLoader,每個(gè)應(yīng)?程序都會(huì)有?個(gè)獨(dú)???的Webapp ClassLoader链瓦,他?來加載本應(yīng)?程序 /WEB-INF/classes 和 /WEB-INF/lib 下的類拆魏。tomcat 8.5 默認(rèn)改變了嚴(yán)格的雙親委派機(jī)制?先從 Bootstrap Classloader加載指定的類如果未加載到,則從 /WEB-INF/classes加載如果未加載到慈俯,則從 /WEB-INF/lib/*.jar 加載

5.Tomcat 對(duì) Https 的?持及 Tomcat 性能優(yōu)化策略

HTTPS和HTTP的主要區(qū)別HTTPS協(xié)議使?時(shí)需要到電?商務(wù)認(rèn)證授權(quán)機(jī)構(gòu)(CA)申請SSL證書HTTP默認(rèn)使?8080端?渤刃,HTTPS默認(rèn)使?8443端?HTTPS則是具有SSL加密的安全性傳輸協(xié)議,對(duì)數(shù)據(jù)的傳輸進(jìn)?加密贴膘,效果上相當(dāng)于HTTP的升級(jí)版HTTP的連接是?狀態(tài)的卖子,不安全的;HTTPS協(xié)議是由SSL+HTTP協(xié)議構(gòu)建的可進(jìn)?加密傳輸刑峡、身份認(rèn)證的?絡(luò)協(xié)議洋闽,?HTTP協(xié)議安全

Tomcat對(duì)HTTPS的支持



1) 使? JDK 中的 keytool ?具?成免費(fèi)的秘鑰庫?件(證書)。

keytool -genkey -alias lagou -keyalg RSA -keystore lagou.keystore


2) 配置conf/server.xml

<Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"

maxThreads="150" schema="https" secure="true" SSLEnabled="true"><SSLHostConfig><Certificate

certificateKeystoreFile="/Users/yingdian/workspace/servers/apache-tomcat-

8.5.50/conf/lagou.keystore" certificateKeystorePassword="lagou123" type="RSA"

/></SSLHostConfig></Connector>

3)使?https協(xié)議訪問8443端?(https://localhost:8443

Tomcat 性能優(yōu)化策略

系統(tǒng)性能的衡量指標(biāo)突梦,主要是響應(yīng)時(shí)間和吞吐量喊递。1)響應(yīng)時(shí)間:執(zhí)?某個(gè)操作的耗時(shí);2) 吞吐量:系統(tǒng)在給定時(shí)間內(nèi)能夠?持的事務(wù)數(shù)量阳似,單位為TPS(Transactions PerSecond的縮寫骚勘,也就是事務(wù)數(shù)/秒,?個(gè)事務(wù)是指?個(gè)客戶機(jī)向服務(wù)器發(fā)送請求然后服務(wù)器做出反應(yīng)的過程撮奏。Tomcat優(yōu)化從兩個(gè)??進(jìn)?1)JVM虛擬機(jī)優(yōu)化(優(yōu)化內(nèi)存模型)2)Tomcat?身配置的優(yōu)化(?如是否使?了共享線程池俏讹?IO模型?)

虛擬機(jī)運(yùn)?優(yōu)化(參數(shù)調(diào)整):


Java 虛擬機(jī)的運(yùn)?優(yōu)化主要是內(nèi)存分配和垃圾回收策略的優(yōu)化:內(nèi)存直接影響服務(wù)的運(yùn)?效率和吞吐量垃圾回收機(jī)制會(huì)不同程度地導(dǎo)致程序運(yùn)?中斷(垃圾回收策略不同畜吊,垃圾回收次數(shù)和回收效率都是不同的)

JAVA_OPTS="-server -Xms2048m -Xmx2048m -XX:MetaspaceSize=256m -XX:MaxMetaspaceSize=512m"



垃圾回收(GC)策略垃圾回收性能指標(biāo)吞吐量:?作時(shí)間(排除GC時(shí)間)占總時(shí)間的百分?泽疆, ?作時(shí)間并不僅是程序運(yùn)?的時(shí)間,還包含內(nèi)存分配時(shí)間玲献。暫停時(shí)間:由垃圾回收導(dǎo)致的應(yīng)?程序停?響應(yīng)次數(shù)/時(shí)間殉疼。垃圾收集器串?收集器(Serial Collector)單線程執(zhí)?所有的垃圾回收?作梯浪, 適?于單核CPU服務(wù)器?作進(jìn)程-----|(單線程)垃圾回收線程進(jìn)?垃圾收集|---?作進(jìn)程繼續(xù)并?收集器(Parallel Collector)參數(shù) 描述-XX:+UseSerialGC 啟?串?收集器-XX:+UseParallelGC啟?并?垃圾收集器,配置了該選項(xiàng)瓢娜,那么 -XX:+UseParallelOldGC默認(rèn)啟?-XX:+UseParNewGC年輕代采?并?收集器挂洛,如果設(shè)置了 -XX:+UseConcMarkSweepGC選項(xiàng),?動(dòng)啟?-XX:ParallelGCThreads年輕代及?年代垃圾回收使?的線程數(shù)眠砾。默認(rèn)值依賴于JVM使?的CPU個(gè)數(shù)-XX:+UseConcMarkSweepGC(CMS)對(duì)于?年代虏劲,啟?CMS垃圾收集器。 當(dāng)并?收集器?法滿?應(yīng)?的延遲需求是褒颈,推薦使?CMS或G1收集器柒巫。啟?該選項(xiàng)后, -XX:+UseParNewGC?動(dòng)啟?谷丸。-XX:+UseG1GC啟?G1收集器堡掏。 G1是服務(wù)器類型的收集器, ?于多核刨疼、?內(nèi)存的機(jī)器泉唁。它在保持?吞吐量的情況下,?概率滿?GC暫停時(shí)間的?標(biāo)币狠。?作進(jìn)程-----|(多線程)垃圾回收線程進(jìn)?垃圾收集|---?作進(jìn)程繼續(xù)?稱為吞吐量收集器(關(guān)注吞吐量)游两, 以并?的?式執(zhí)?年輕代的垃圾回收, 該?式可以顯著降低垃圾回收的開銷(指多條垃圾收集線程并??作漩绵,但此時(shí)?戶線程仍然處于等待狀態(tài))贱案。適?于多處理器或多線程硬件上運(yùn)?的數(shù)據(jù)量較?的應(yīng)?并發(fā)收集器(Concurrent Collector)以并發(fā)的?式執(zhí)??部分垃圾回收?作,以縮短垃圾回收的暫停時(shí)間止吐。適?于那些響應(yīng)時(shí)間優(yōu)先于吞吐量的應(yīng)?宝踪, 因?yàn)樵撌占麟m然最?化了暫停時(shí)間(指?戶線程與垃圾收集線程同時(shí)執(zhí)?,但不?定是并?的,可能會(huì)交替進(jìn)?)碍扔, 但是會(huì)降低應(yīng)?程序的性能CMS收集器(Concurrent Mark Sweep Collector)并發(fā)標(biāo)記清除收集器瘩燥, 適?于那些更愿意縮短垃圾回收暫停時(shí)間并且負(fù)擔(dān)的起與垃圾回收共享處理器資源的應(yīng)?G1收集器(Garbage-First Garbage Collector)適?于?容量內(nèi)存的多核服務(wù)器, 可以在滿?垃圾回收暫停時(shí)間?標(biāo)的同時(shí)不同, 以最?可能性實(shí)現(xiàn)?吞吐量(JDK1.7之后)

在bin/catalina.sh的腳本中 , 追加如下配置 :JAVA_OPTS="-XX:+UseConcMarkSweepGC"

Tomcat 配置調(diào)優(yōu):

調(diào)整tomcat線程池


調(diào)整tomcat的連接器


禁? AJP 連接器


調(diào)整 IO 模式


動(dòng)靜分離

可以使?Nginx+Tomcat相結(jié)合的部署?案厉膀,Nginx負(fù)責(zé)靜態(tài)資源訪問,Tomcat負(fù)責(zé)Jsp等動(dòng)態(tài)資源訪問處理(因?yàn)門omcat不擅?處理靜態(tài)資源)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末二拐,一起剝皮案震驚了整個(gè)濱河市服鹅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌百新,老刑警劉巖企软,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饭望,居然都是意外死亡仗哨,警方通過查閱死者的電腦和手機(jī)形庭,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來厌漂,“玉大人萨醒,你說我怎么就攤上這事∽眩” “怎么了验靡?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵倍宾,是天一觀的道長雏节。 經(jīng)常有香客問我,道長高职,這世上最難降的妖魔是什么钩乍? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮怔锌,結(jié)果婚禮上寥粹,老公的妹妹穿的比我還像新娘。我一直安慰自己埃元,他們只是感情好涝涤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岛杀,像睡著了一般阔拳。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上类嗤,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天糊肠,我揣著相機(jī)與錄音,去河邊找鬼遗锣。 笑死货裹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的精偿。 我是一名探鬼主播弧圆,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼笔咽!你這毒婦竟也來了搔预?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤拓轻,失蹤者是張志新(化名)和其女友劉穎斯撮,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體扶叉,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勿锅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年帕膜,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溢十。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡垮刹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出张弛,到底是詐尸還是另有隱情荒典,我是刑警寧澤,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布吞鸭,位于F島的核電站寺董,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏刻剥。R本人自食惡果不足惜遮咖,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望造虏。 院中可真熱鬧御吞,春花似錦、人聲如沸漓藕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽享钞。三九已至揍诽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間嫩与,已是汗流浹背寝姿。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留划滋,地道東北人饵筑。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像处坪,于是被迫代替她去往敵國和親根资。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355