20171106 Tomcat(一)

  • Java語(yǔ)言介紹
  • Java EE和Tomcat
  • Tomcat的主要配置
  • Tomcat的管理工具
  • Tomcat的反向代理

一、Java語(yǔ)言介紹

(一)Java的特征

  • 面向?qū)ο?/li>
  • write once, run anywhere:一次編譯,任何處運(yùn)行
  • jdk:包含類庫(kù)(API)、開發(fā)工具(javac)关噪、JVM

(二)Java的三個(gè)方向

  • JAVA SE:標(biāo)準(zhǔn)版
  • JAVA EE:企業(yè)版,可以視為JAVA SE增加一些企業(yè)級(jí)功能模塊
  • JAVA ME:移動(dòng)版

(三)jdk與openjdk

  • 2006年Sun開源了jdk,建立了openjdk組織
  • openjdk與jdk接口兼容烟具,可以按照需求選擇
  • 當(dāng)前有openjdk 1.6, 1.7, 1.8版本,對(duì)應(yīng)oracle jdk的相應(yīng)版本

(四)Java代碼的運(yùn)行

  • *.java(source code) --> javac --> *.class(bytecode)
    javac程序?qū)ava源碼文件編譯為字節(jié)碼的java類文件
  • jvm:class loader闻牡,加載程序的類文件净赴,及程序的類文件依賴到的其它的類文件而后運(yùn)行; 整個(gè)運(yùn)行表現(xiàn)為一個(gè)jvm進(jìn)程

(五)java技術(shù)體系

  • Java編程語(yǔ)言
  • Java Class文件格式
  • Java API
  • Java VM

(六)JVM運(yùn)行時(shí)區(qū)域

  • 方法區(qū):線程共享罩润, 用于存儲(chǔ)被JVM加載的class信息玖翅、常量、靜態(tài)變量割以、方法等
  • 堆:用于存儲(chǔ)對(duì)象金度,是jvm所管理的內(nèi)存中占用空間最大的一部分,也是GC(垃圾回收)管理的主要區(qū)域严沥;
  • Java棧:線程私有猜极,存儲(chǔ)線程自己的局部變量
  • PC寄存器:線程私有的內(nèi)存空間,程序的指令指針
  • 本地方法棧:

(七)jdk的安裝

(1)openjdk的安裝
  • java-VERSION-openjdk:核心包
  • java-VERSION-openjdk-headless:運(yùn)行時(shí)環(huán)境包
  • java-VERSION-openjdk-devel:開發(fā)包
yum install java-1.8.0-openjdk-devel
java -version     // 查看當(dāng)前java環(huán)境
(2)oracle jdk的安裝
rpm -ivh jdk-8u151-linux-x64.rpm
vim /etc/profile.d/java.sh
export JAVA_HOME=/usr/java/latest
export PATH=$JAVA_HOME/bin:$PATH
. /etc/profile.d/java.sh 
java -version

二消玄、Java EE和Tomcat

(一)Java EE中的關(guān)鍵模塊

  • Servlet:Java編寫的服務(wù)器端程序跟伏,主要功能在于交互式地瀏覽和修改數(shù)據(jù),生成動(dòng)態(tài)Web內(nèi)容

    • servlet container:容器翩瓜,提供servlet功能的服務(wù)器
    • servlet engine:實(shí)現(xiàn)具體功能的servlet實(shí)例
  • JSP:Java Server Pages受扳,是一種實(shí)現(xiàn)普通靜態(tài)HTML 和動(dòng)態(tài) HTML 混合編碼的技術(shù);

    • 特點(diǎn):借助內(nèi)容和外觀的分離兔跌,頁(yè)面制作中不同性質(zhì)的任務(wù)可以方便地分開:由頁(yè)面設(shè)計(jì)者進(jìn)行 HTML設(shè)計(jì)勘高,同時(shí)留出供 Servlet 程序員插入動(dòng)態(tài)內(nèi)容的空間
    <html>
    <title>TITLE</title>
    <body>
    <h1>...</h1>
    <%
    ... java code...          // 插入動(dòng)態(tài)內(nèi)容,實(shí)現(xiàn)前端與后端的分離
    %>
    </body>
    </html>
    
  • jsp與servlet的轉(zhuǎn)換關(guān)系:
    .jsp -->jasper--> .java --> javac --> .class --> jvm

    • 基于jasper將靜態(tài)輸出的數(shù)據(jù)轉(zhuǎn)為java代碼進(jìn)行輸出坟桅,結(jié)果為servlet規(guī)范的代碼
    • javac工具將servlet代碼編譯為類文件华望,再把類文件加載到j(luò)vm中運(yùn)行
    • jsp的作用在于解決servlet處理html時(shí)的復(fù)雜性,將前端與后端的工作分離仅乓。運(yùn)行時(shí)通過(guò)jasper將jsp翻譯為標(biāo)準(zhǔn)的java源代碼赖舟,再按照標(biāo)準(zhǔn)的java代碼運(yùn)行過(guò)程工作。

(二)Tomcat

  • Tomcat是一個(gè)servlet container方灾,實(shí)現(xiàn)了Java EE中servlet, jsp部分建蹄,故其只是Java EE的部分實(shí)現(xiàn)
  • Tomcat是由Sun開發(fā)的Java Web Server(Java EE的最早實(shí)現(xiàn))與ASF開發(fā)的JServ項(xiàng)目合并后產(chǎn)生的
  • 當(dāng)前的Tomcat項(xiàng)目是在Tomcat 4.0(代號(hào):Catalina)的基礎(chǔ)上不斷完善發(fā)展起來(lái)的碌更,故Tomcat中很多地方仍舊能夠看到單詞catalina的痕跡

(三)Java EE的實(shí)現(xiàn)簡(jiǎn)介

  • 商業(yè)實(shí)現(xiàn):
    WebSphere, WebLogic, Oc4j, Glassfish, Geronimo, JOnAS, JBoss
  • 開源實(shí)現(xiàn):
    Tomcat, Jetty, Resin

(四)Tomcat的安裝

(1)yum安裝
yum install tomcat tomcat-docs-webapp tomcat-admin-webapps tomcat-webapps
systemctl start tomcat
(2)官網(wǎng)下載二進(jìn)制壓縮包,解壓縮安裝
tar xf apache-tomcat-7.0.82.tar.gz -C /usr/local/
cd /usr/local/
ln -sv apache-tomcat-7.0.82/ tomcat
useradd tomcat
setfacl -R -m u:tomcat:rwx ./tomcat/
vim /etc/profile.d/tomcat.sh
  export CATALINA_BASE=/usr/local/tomcat
  export PATH=$CATALINA_BASE/bin:$PATH
. /etc/profile.d/tomcat.sh 
. catalina.sh start     // tomcat由java編寫洞慎,使用腳本運(yùn)行將tomcat運(yùn)行在jvm中

(五)Tomcat的程序環(huán)境

(1)tomcat的目錄結(jié)構(gòu)

bin:腳本及啟動(dòng)時(shí)用到的類
conf:配置文件目錄
lib:庫(kù)文件痛单,Java類庫(kù),jar
logs:日志文件目錄
temp:臨時(shí)文件目錄
webapps:webapp的默認(rèn)目錄
work:工作目錄劲腿,存放編譯后的字節(jié)碼文件

(2)catalina.sh --help

run:前臺(tái)模式啟動(dòng)
run -security:帶安全管理的前臺(tái)模式啟動(dòng)
start:后臺(tái)模式啟動(dòng)
start -security:帶安全管理的后臺(tái)模式啟動(dòng)
stop:關(guān)閉
stop n:等待n秒后關(guān)閉
stop -force:強(qiáng)行關(guān)閉
stop n -force:等待n秒后旭绒,強(qiáng)行關(guān)閉
configtest:檢查配置
version:查詢版本

(3)rpm包安裝的程序環(huán)境
  • 配置文件目錄:/etc/tomcat
  • 主配置文件:server.xml
  • webapps存放位置:/var/lib/tomcat/webapps/
    examples
    manager
    host-manager
    docs
  • Unit File:tomcat.service
  • 環(huán)境配置文件:/etc/sysconfig/tomcat

三、Tomcat的主要配置

(一)tomcat的配置文件構(gòu)成

  • server.xml:主配置文件
  • web.xml:每個(gè)webapp只有“部署”后才能被訪問(wèn)焦人,它的部署方式通常由web.xml進(jìn)行定義挥吵,其存放位置為WEB-INF/目錄中;此文件為所有的webapps提供默認(rèn)部署相關(guān)的配置
  • context.xml:每個(gè)webapp都可以使用的配置文件花椭,它通常由專用的配置文件context.xml來(lái)定義忽匈,其存放位置為WEB-INF/目錄中;此文件為所有的webapps提供默認(rèn)配置
  • tomcat-users.xml:用戶認(rèn)證的賬號(hào)和密碼文件矿辽;角色(role)丹允,用戶(user);此文件在tomcat啟動(dòng)時(shí)被裝入內(nèi)存
  • catalina.policy:當(dāng)使用-security選項(xiàng)啟動(dòng)tomcat時(shí)袋倔,用于為tomcat設(shè)置安全策略
  • catalina.properties:Java屬性的定義文件雕蔽,用于設(shè)定類加載器路徑,以及一些與JVM調(diào)優(yōu)相關(guān)參數(shù)
  • logging.properties:日志系統(tǒng)相關(guān)的配置

(二)tomcat主配置文件:server.xml

  • 文件結(jié)構(gòu):

    <Server>
      <Service>
        <connector/>
        <connector/>
        ...
        <Engine>
            <Host>
              <Context/>
              <Context/>
              ...
            </Host>
            <Host>
            ...
            </Host>
            ...
        </Engine>
      </Service>
    </Server>
    
  • 每一個(gè)組件都由一個(gè)Java“類”實(shí)現(xiàn)宾娜,這些組件大體可分為以下幾個(gè)類型:
    頂級(jí)組件:Server
    服務(wù)類組件:Service
    連接器組件:http, https, ajp(apache jserv protocol)
    容器類:Engine, Host, Context
    被嵌套類:valve, logger, realm, loader, manager, ...
    集群類組件:listener, cluster, ...

(三)JSP WebAPP的組織結(jié)構(gòu)

index.jsp:主頁(yè)
WEB-INF/:當(dāng)前webapp的私有資源路徑批狐;通常用于存儲(chǔ)當(dāng)前webapp的web.xml和context.xml配置文件
META-INF/:類似于WEB-INF/
classes/:類文件,當(dāng)前webapp所提供的類
lib/:類文件前塔,當(dāng)前webapp所提供的類嚣艇,被打包為jar格式

(四)webapp歸檔格式

.war:webapp
.jar:EJB的類打包文件(類庫(kù))
.rar:資源適配器類打包文件
.ear:企業(yè)級(jí)webapp

(五)部署(deploy)webapp的相關(guān)操作

  • 部署步驟:

    • 將webapp的源文件放置于目標(biāo)目錄(網(wǎng)頁(yè)程序文件存放目錄)
    • 配置tomcat服務(wù)器能夠基于web.xml和context.xml文件中定義的路徑來(lái)訪問(wèn)此webapp
    • 將其特有的類和依賴的類通過(guò)class loader裝載至JVM
  • 部署有兩種方式:

    • 自動(dòng)部署:auto deploy
    • 手動(dòng)部署:
      冷部署:把webapp復(fù)制到指定的位置,而后才啟動(dòng)tomcat
      熱部署:在不停止tomcat的前提下進(jìn)行部署
  • 部署工具:manager, ant腳本, tcd(tomcat client deployer)等

  • undeploy:拆除(反部署)华弓,停止webapp髓废,并從tomcat實(shí)例上卸載webapp

  • 實(shí)驗(yàn)1:實(shí)現(xiàn)一個(gè)最簡(jiǎn)單的webapp部署操作

mkdir -pv /var/lib/tomcat/webapps/test/{WEB-INF,classes,lib}
vim /var/lib/tomcat/webapps/test/index.jsp
<%@ page language="java" %>          // 聲明使用的語(yǔ)言
<%@ page import="java.util.*" %>     // 聲明引用的類
<html>
        <head>
        <title>Test Page</title>
        </head>
        <body>
        <% out.println("hello world");
        %>
        </body>
</html>
service tomcat restart

登錄http:// 192.168.136.229:8080/test,成功顯示預(yù)期結(jié)果

使用tree命令查看/var/cache/tomcat/work/Catalina/localhost/test目錄下的結(jié)構(gòu)该抒,可以看到index.jsp文件先通過(guò)jasper轉(zhuǎn)化為.java源碼文件,繼而通過(guò)javac編譯為.class類文件并被送入jvm中執(zhí)行

(六)tomcat的常用組件配置

(1)Server組件:
  • 代表tomcat instance顶燕,即表現(xiàn)出的一個(gè)java進(jìn)程
  • 監(jiān)聽在8005端口凑保,只接收“SHUTDOWN”——建議將監(jiān)聽端口設(shè)為-1,取消shutdown功能
  • 各server監(jiān)聽的端口不能相同涌攻,因此欧引,在同一物理主機(jī)啟動(dòng)多個(gè)實(shí)例時(shí),需要修改其監(jiān)聽端口為不同的端口
(2)Service組件:
  • 用于實(shí)現(xiàn)將一個(gè)或多個(gè)connector組件關(guān)聯(lián)至一個(gè)engine組件
(3)Connector組件:
  • 負(fù)責(zé)接收請(qǐng)求恳谎,常見的有三類http/https/ajp(apache jserv protocol)

  • 進(jìn)入tomcat的請(qǐng)求可分為兩類:
    (1) standalone : 請(qǐng)求來(lái)自于客戶端瀏覽器
    (2) 由其它的web server反代:來(lái)自前端的反代服務(wù)器
    nginx --> http connector --> tomcat
    httpd(proxy_http_module) --> http connector --> tomcat
    httpd(proxy_ajp_module) --> ajp connector --> tomcat

  • 屬性:

    • 默認(rèn)存在
      port="8080"
      protocol="HTTP/1.1"
      connectionTimeout="20000" // 單位:毫秒
      address:監(jiān)聽的IP地址芝此;默認(rèn)為本機(jī)所有可用地址
    • 可以添加的屬性
      maxThreads:最大并發(fā)連接數(shù)憋肖,默認(rèn)為200
      enableLookups:是否啟用DNS查詢功能,建議關(guān)閉
      acceptCount:等待隊(duì)列的最大長(zhǎng)度
      secure
      sslProtocol
(4)Engine組件:
  • Servlet實(shí)例婚苹,即servlet引擎岸更,其內(nèi)部可以一個(gè)或多個(gè)host組件來(lái)定義站點(diǎn);通常需要通過(guò)defaultHost來(lái)定義默認(rèn)的虛擬主機(jī)

  • 屬性:
    name
    defaultHost
    jvmRoute:與基于cookie的session sticky有關(guān)

(5)Host組件:
  • 位于engine內(nèi)部用于接收請(qǐng)求并進(jìn)行相應(yīng)處理的主機(jī)或虛擬主機(jī)膊升,示例:

  • 常用屬性說(shuō)明:
    (1) appBase:此Host的webapps的默認(rèn)存放目錄怎炊,指存放非歸檔的web應(yīng)用程序的目錄或歸檔的WAR文件目錄路徑;可以使用基于$CATALINA_BASE變量所定義的路徑的相對(duì)路徑
    (2) autoDeploy:在Tomcat處于運(yùn)行狀態(tài)時(shí)廓译,將某webapp放置于appBase所定義的目錄中時(shí)评肆,是否自動(dòng)將其部署至tomcat

  • 實(shí)驗(yàn)2:實(shí)現(xiàn)在非默認(rèn)webapps部署目錄存放webapp文件

vim /etc/tomcat/server.xml     // 創(chuàng)建虛擬主機(jī)
<Host name="test.hellopeiyang.com"  appBase="/app/webapps" unpackWARs="true" autoDeploy="true"/>

mkdir -pv /app/webapps/ROOT/{WEB-INF,lib,classes}
vim /app/webapps/ROOT/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
        <head>
        <title>Test Page</title>
        </head>
        <body>
        <% out.println("hellopeiyang test page");
        %>
        </body>
</html>
service tomcat restart
(6)Context組件:
  • 實(shí)現(xiàn)別名的功能:如下,當(dāng)url為/PATH時(shí)非区,自動(dòng)尋找磁盤上/PATH/TO/SOMEDIR的文件
    <Context path="/PATH" docBase="/PATH/TO/SOMEDIR" reloadable=""/>

  • 實(shí)驗(yàn)3:在實(shí)驗(yàn)2的基礎(chǔ)上瓜挽,實(shí)現(xiàn)使用context組件

cp -r /app/webapps/ROOT/ /app/data/

vim /etc/tomcat/server.xml
<Host name="test.hellopeiyang.com"  appBase="/app/webapps" unpackWARs="true" autoDeploy="true">
        <Context path="/testpage" docBase="/app/data" reloadable="" />
</Host>

vim /app/data/index.jsp
<%@ page language="java" %>
<%@ page import="java.util.*" %>
<html>
        <head>
        <title>Test Page</title>
        </head>
        <body>
        <% out.println("hellopeiyang another test page");
        %>
        </body>
</html>

service tomcat restart
(7)Valve組件:
  • 定義訪問(wèn)日志:org.apache.catalina.valves.AccessLogValve
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="localhost_access_log" suffix=".txt"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
  • 定義訪問(wèn)控制:org.apache.catalina.valves.RemoteAddrValve
<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="172\.16\.100\.67"/>
  • 實(shí)驗(yàn)4:在實(shí)驗(yàn)3的基礎(chǔ)上,使用valve組件實(shí)現(xiàn)定制訪問(wèn)日志和訪問(wèn)控制
vim /etc/tomcat/server.xml     // 位置在Host組件語(yǔ)句塊中
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
prefix="node1_access_log." suffix=".log"
pattern="%h %l %u %t &quot;%r&quot; %s %b" />
<Valve className="org.apache.catalina.valves.RemoteAddrValve" deny="192\.168\.136\.129"/>

service tomcat restart
tail /var/log/tomcat/node1_access_log.2017-11-07.log

日志內(nèi)容存放在/var/log/tomcat/下定義名稱的日志文件中

192.168.136.129的主機(jī)無(wú)法訪問(wèn)

非192.168.136.129的主機(jī)可以訪問(wèn)

四征绸、Tomcat的管理工具

(一)tomcat管理工具的使用角色(role)

  • manager-gui:允許查看圖形管理界面和服務(wù)器狀態(tài)界面
  • manager-script:允許通過(guò)文本接口管理和查看服務(wù)器狀態(tài)界面
  • manager-jmx :允許通過(guò)JMX代理管理和查看服務(wù)器狀態(tài)界面
  • manager-status:只允許查看服務(wù)器狀態(tài)界面

(二)授權(quán)用戶manager-gui角色

vim /etc/tomcat/tomcat-users.xml 
<role rolename="manager-gui"/>
<user username="hellopeiyang" password="centos" roles="manager-gui"/>

service tomcat restart

紅框中的為三個(gè)管理工具頁(yè)面的連接久橙,從上之下依次為:服務(wù)器狀態(tài), 管理應(yīng)用歹垫,虛擬主機(jī)管理

網(wǎng)絡(luò)應(yīng)用管理頁(yè)面

服務(wù)器狀態(tài)管理頁(yè)面

(三)授權(quán)用戶admin-gui角色

vim /etc/tomcat/tomcat-users.xml 
service tomcat restart
<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<user username="hellopeiyang" password="centos" roles="manager-gui,admin-gui"/>     // 用戶hellopeiyang同時(shí)擁有manager-gui和admin-gui角色

虛擬主機(jī)管理頁(yè)面

五剥汤、Tomcat的反向代理

(一)nginx反向代理至tomcat

  • 轉(zhuǎn)發(fā)過(guò)程:client (http) --> nginx (reverse proxy)(http) --> tomcat (http connector)
vim /etc/nginx/nginx.conf
server {
        listen       80 default_server;
        index        index.jsp index.html;
        root         /usr/share/tomcat/webapps/ROOT;
        location ~* \.(jsp|do)$  {
                proxy_pass http://127.0.0.1:8080;
        }
    }

nginx -t
nginx -s reload

直接登錄192.168.136.230,通過(guò)80端口成功訪問(wèn)tomcat服務(wù)器

(二)httpd通過(guò)http協(xié)議反向代理至tomcat

  • 轉(zhuǎn)發(fā)過(guò)程:client (http) --> httpd (proxy_http_module)(http) --> tomcat (http connector)
vim /etc/httpd/conf.d/tomcat.conf
<VirtualHost *:80>
        ServerName node1.hellopeiyang.com
        ProxyRequests Off
        ProxyVia On
        ProxyPreserveHost On
        <Proxy *>
                Require all granted
        </Proxy>
        ProxyPass / http://127.0.0.1:8080/
        ProxyPassReverse / http://127.0.0.1:8080/
        <Location />
                Require all granted
        </Location>
</VirtualHost>
httpd -t
systemctl restart httpd

直接登錄192.168.136.230排惨,通過(guò)80端口成功訪問(wèn)tomcat服務(wù)器

(三)httpd通過(guò)ajp協(xié)議反向代理至tomcat

  • 轉(zhuǎn)發(fā)過(guò)程:client (http) --> httpd (proxy_ajp_module)(ajp) --> tomcat (ajp connector)
cp /etc/httpd/conf.d/tomcat.conf /etc/httpd/conf.d/ajp-tomcat.conf
mv /etc/httpd/conf.d/tomcat.conf /etc/httpd/conf.d/tomcat.conf.bak
vim /etc/httpd/conf.d/ajp-tomcat.conf 
<VirtualHost *:80>
        ServerName node1.hellopeiyang.com
        ProxyRequests Off
        ProxyVia On
        ProxyPreserveHost On
        <Proxy *>
                Require all granted
        </Proxy>
        ProxyPass / ajp://127.0.0.1:8009/
        ProxyPassReverse / ajp://127.0.0.1:8009/
        <Location />
                Require all granted
        </Location>
</VirtualHost>
systemctl restart httpd

直接登錄192.168.136.230吭敢,通過(guò)80端口成功訪問(wèn)tomcat服務(wù)器。
進(jìn)入Server Status管理頁(yè)面暮芭,可以看到此時(shí)ajp協(xié)議開始工作鹿驼,證明現(xiàn)在通過(guò)ajp協(xié)議轉(zhuǎn)發(fā)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市辕宏,隨后出現(xiàn)的幾起案子畜晰,更是在濱河造成了極大的恐慌,老刑警劉巖瑞筐,帶你破解...
    沈念sama閱讀 217,406評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凄鼻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡聚假,警方通過(guò)查閱死者的電腦和手機(jī)块蚌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評(píng)論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)膘格,“玉大人峭范,你說(shuō)我怎么就攤上這事”窦” “怎么了纱控?”我有些...
    開封第一講書人閱讀 163,711評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵辆毡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我甜害,道長(zhǎng)舶掖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,380評(píng)論 1 293
  • 正文 為了忘掉前任唾那,我火速辦了婚禮访锻,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘闹获。我一直安慰自己期犬,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評(píng)論 6 392
  • 文/花漫 我一把揭開白布避诽。 她就那樣靜靜地躺著龟虎,像睡著了一般。 火紅的嫁衣襯著肌膚如雪沙庐。 梳的紋絲不亂的頭發(fā)上鲤妥,一...
    開封第一講書人閱讀 51,301評(píng)論 1 301
  • 那天,我揣著相機(jī)與錄音拱雏,去河邊找鬼棉安。 笑死,一個(gè)胖子當(dāng)著我的面吹牛铸抑,可吹牛的內(nèi)容都是我干的贡耽。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼鹊汛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蒲赂!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起刁憋,我...
    開封第一講書人閱讀 39,008評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤滥嘴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后至耻,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體若皱,經(jīng)...
    沈念sama閱讀 45,443評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評(píng)論 3 334
  • 正文 我和宋清朗相戀三年尘颓,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了是尖。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,795評(píng)論 1 347
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡泥耀,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛔添,到底是詐尸還是另有隱情痰催,我是刑警寧澤兜辞,帶...
    沈念sama閱讀 35,501評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站夸溶,受9級(jí)特大地震影響逸吵,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜缝裁,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評(píng)論 3 328
  • 文/蒙蒙 一扫皱、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捷绑,春花似錦韩脑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至壮吩,卻和暖如春进苍,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背鸭叙。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工觉啊, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沈贝。 一個(gè)月前我還...
    沈念sama閱讀 47,899評(píng)論 2 370
  • 正文 我出身青樓杠人,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缀程。 傳聞我的和親對(duì)象是個(gè)殘疾皇子搜吧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評(píng)論 2 354

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

  • 轉(zhuǎn)自陳明乾的博客,可能有一定更新杨凑。 轉(zhuǎn)原文聲明:原創(chuàng)作品滤奈,允許轉(zhuǎn)載,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章 原始出處 撩满、...
    C86guli閱讀 4,684評(píng)論 6 72
  • 轉(zhuǎn)自陳明乾的博客蜒程,可能有一定更新。 轉(zhuǎn)原文聲明:原創(chuàng)作品伺帘,允許轉(zhuǎn)載昭躺,轉(zhuǎn)載時(shí)請(qǐng)務(wù)必以超鏈接形式標(biāo)明文章 原始出處 、...
    C86guli閱讀 2,689評(píng)論 1 37
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,810評(píng)論 6 342
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法伪嫁,類相關(guān)的語(yǔ)法领炫,內(nèi)部類的語(yǔ)法,繼承相關(guān)的語(yǔ)法张咳,異常的語(yǔ)法帝洪,線程的語(yǔ)...
    子非魚_t_閱讀 31,630評(píng)論 18 399
  • 1 前天下班回家似舵,經(jīng)過(guò)樂購(gòu)門口的紅綠燈,突然看見一位男子從駕駛室走了下來(lái)葱峡,我下意識(shí)看了看自己的車門砚哗,按下了鎖扣。 ...
    它看起來(lái)很好吃閱讀 206評(píng)論 0 1