tomcat

Tomcat基本介绍

JVM基本介绍

Java业务都是运行在Java虚拟机上,Java虚拟机简称为JVM

Java为什么要用虚拟机

① 早期的C语言不支持跨平台,在Windows、Linux等平台运行的时候,需要分别进行编译
② Java则可以跨平台,只需要将源代码进行一次编译,就可以在多处运行
(Java需要在Windows或Linux运行一个jvm,这样就能够将Java编译好的war包在Windows和Linux平台运行起来,无需进行重复编译。)

Java环境中的JRE和JDK的区别

jre是Java运行环境
jdk是Java开发环境,会包含Java的运行环境jre。

总的来说:Tomcat 是基于Java开发一个web服务器软件,和nginx类似。

Tomcat和nginx的区别
nginx仅支持静态资源的解析,而Tomcat则支持Java开发的jsp动态资源
nginx适合做前端负载均衡,而Tomcat适合做后端应用服务处理。
通常情况下,企业会使用nginx+tomcat结合,由nginx处理静态资源,由tomcat处理动态资源。


二、Tomcat安装

安装Tomcat

[root@web01 ~]# yum install java -y
二进制安装tomcat
[root@web01 ~]# mkdir /soft && cd /soft
[root@web01 soft]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.26/bin/apache-tomcat-9.0.26.tar.gz
[root@web01 soft]# tar xf apache-tomcat-9.0.26.tar.gz 
[root@web01 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat
[root@web01 soft]# /soft/tomcat/bin/startup.sh
[root@web01 soft]# netstat -lntp|grep java
tcp6       0      0 :::8009            :::*        LISTEN      8500/java           
tcp6       0      0 :::8080            :::*        LISTEN      8500/java           
tcp6       0      0 127.0.0.1:8005     :::*        LISTEN      8500/java

二进制:
jdk使用二进制
tomcat使用二进制
[root@web01 ~]# mkdir /soft/
[root@web01~]# tar xf jdk-8u60-linux-x64.tar.gz -C /app/
[root@web01 ~]# ln -s /soft/jdk1.8.0_60 /soft/jdk
[root@web01~]# vim /etc/profile
#...最后面添加...
export JAVA_HOME=/app/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[root@web01~]# tar xf apache-tomcat-9.0.26.tar.gz -C /soft
[root@web01 ~]# /soft/apache-tomcat-9.0.26/bin/startup.sh 

Tomcat配置文件详解

一个server表示一个tomcat实例
一个server中包含多个Connector连接器,Connector的主要功能是接受、响应用户请求。
service的作用是:将connector关联至engine(catalina引擎)
一个host就是一个站点,类似于nginx的多站点
context类似于nginx中location的概念

![#### Tomcat基本介绍

JVM基本介绍

Java业务都是运行在Java虚拟机上,Java虚拟机简称为JVM

Java为什么要用虚拟机

① 早期的C语言不支持跨平台,在Windows、Linux等平台运行的时候,需要分别进行编译
② Java则可以跨平台,只需要将源代码进行一次编译,就可以在多处运行
(Java需要在Windows或Linux运行一个jvm,这样就能够将Java编译好的war包在Windows和Linux平台运行起来,无需进行重复编译。)

Java环境中的JRE和JDK的区别

jre是Java运行环境
jdk是Java开发环境,会包含Java的运行环境jre。

总的来说:Tomcat 是基于Java开发一个web服务器软件,和nginx类似。

Tomcat和nginx的区别
nginx仅支持静态资源的解析,而Tomcat则支持Java开发的jsp动态资源
nginx适合做前端负载均衡,而Tomcat适合做后端应用服务处理。
通常情况下,企业会使用nginx+tomcat结合,由nginx处理静态资源,由tomcat处理动态资源。


二、Tomcat安装

安装Tomcat

[root@web01 ~]# yum install java -y
二进制安装tomcat
[root@web01 ~]# mkdir /soft && cd /soft
[root@web01 soft]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.26/bin/apache-tomcat-9.0.26.tar.gz
[root@web01 soft]# tar xf apache-tomcat-9.0.26.tar.gz 
[root@web01 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat
[root@web01 soft]# /soft/tomcat/bin/startup.sh
[root@web01 soft]# netstat -lntp|grep java
tcp6       0      0 :::8009            :::*        LISTEN      8500/java           
tcp6       0      0 :::8080            :::*        LISTEN      8500/java           
tcp6       0      0 127.0.0.1:8005     :::*        LISTEN      8500/java

二进制:
jdk使用二进制
tomcat使用二进制
[root@web01 ~]# mkdir /soft/
[root@web01~]# tar xf jdk-8u60-linux-x64.tar.gz -C /app/
[root@web01 ~]# ln -s /soft/jdk1.8.0_60 /soft/jdk
[root@web01~]# vim /etc/profile
#...最后面添加...
export JAVA_HOME=/app/jdk
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export CLASSPATH=.$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
[root@web01~]# tar xf apache-tomcat-9.0.26.tar.gz -C /soft
[root@web01 ~]# /soft/apache-tomcat-9.0.26/bin/startup.sh 

Tomcat配置文件详解

一个server表示一个tomcat实例
一个server中包含多个Connector连接器,Connector的主要功能是接受、响应用户请求。
service的作用是:将connector关联至engine(catalina引擎)
一个host就是一个站点,类似于nginx的多站点
context类似于nginx中location的概念

image
image

Tomcat配置虚拟主机

[root@web01~]# cat /soft/tomcat/conf/server.xml
<!--tomcat虚拟主机-->
<Host name="tomcat1.oldxu.com"  appBase="/code1"
    unpackWARs="true" autoDeploy="true">

<!--类似于nginx的location  path是访问的路径 ->映射 docBase是真实的路径-->
<Context docBase="/code1/admin" path="/test" reloadable="true"/>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="tomcat1_access_log" suffix=".txt"
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

PS:如果无法启动
         1.替换配置文件:   pkill java  然后在启动
          2.配置文件写错   
          3.虚拟主机是添加,不要修改
          4.context如果写了,一定要有对应的目录,不然整体就报错
          5.查看日志/soft/tomcat/logs/catalina.out

三、项目演示

Tomcat部署博客项目zrlog

  • 配置server.xml文件 ,新增在 engline
[root@web01 ~]# vim /soft/tomcat/conf/server.xml
 <!--zrlog站点-->
<Host name="zrlog.oldxu.com"  appBase="/code/zrlog"
      unpackWARs="true" autoDeploy="true">

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
         prefix="zrlog_access_log" suffix=".txt"
         pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

  • 创建站点目录,上传zrlog的war包
[root@web01 ~]# mkdir /code/zrlog
[root@web01 ~]# cd /code/zrlog/
[root@web01 zrlog]# rz ROOT.war   

PS:包名就命名为ROOT.war

  • 重启Tomcat服务
[root@web01 zrlog]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh && tail -f /soft/tomcat/logs/catalina.out

  • 配置域名劫持
  • 在172.16.1.51的数据库上,创建一个zrlog的库,配置授权访问用户
[root@db01 ~]# mysql -uroot -pwyw.com
MariaDB [(none)]> create database zrlog charset utf8;
<---此前配置过all用户,可以复用
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'wyw.com'; 

Tomcat部署博客项目jpress

  • 配置server.xml文件 ,新增在 engline
[root@web01 ~]# vim /soft/tomcat/conf/server.xml
 <!--jpress站点-->
<Host name="jpress.oldxu.com"  appBase="/code/jpress"
      unpackWARs="true" autoDeploy="true">

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
         prefix="jpress_access_log" suffix=".txt"
         pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

  • 创建站点目录,上传jpress的war包
[root@web01 ~]# mkdir /code/jpress
[root@web01 ~]# cd /code/jpress/
[root@web01 jpress]# rz jpress.war   
[root@web01 jpress]# mv jpress.war ROOT.war
PS:包名就命名为ROOT.war

  • 重启Tomcat服务
[root@web01 jpress]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh && tail -f /soft/tomcat/logs/catalina.out

  • 配置域名劫持
  • 在172.16.1.51的数据库上,创建一个jpress的库,配置授权访问用户
[root@db01 ~]# mysql -uroot -pwyw.com
MariaDB [(none)]> create database jpress charset utf8;
<---此前配置过all用户,可以复用
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'wyw.com'; 

四、Tomcat配置基础认证

开启 Server Status Host Manager页面

  • 配置conf/tomcat-users.xml
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="manager-gui"/>

  • 如果访问还是403,是因为tomcat默认仅运行本地访问该管理页面,需要允许同网段主机访问
[root@web01 ~]# ll /soft/tomcat/webapps/manager/
[root@web01 ~]# ll /soft/tomcat/webapps/host-manager/
[root@es-web01 tomcat]# vim 项目目录下/META-INF/context.xml
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
      #修改为
      allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.0\.0\.\d+" />

  • 启用zrlog的基础认证(Nginx的basic认证) ---> zrlog.oldxu.com/admin
server {
    listen 80;
    server_name zrlog.oldxu.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $http_host;
    }

    location /admin {
        auth_basic           "closed site";
        auth_basic_user_file conf/auth_conf;
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $http_host;
    }
}

[root@es-web01 tomcat]# vim /code/zrlog/ROOT/WEB-INF/web.xml
<web-app>
...
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>zrlog</web-resource-name>
            <url-pattern>/admin/*</url-pattern>
        </web-resource-collection>

        <auth-constraint>
            <role-name>zrlog_role</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>Default</realm-name>
    </login-config>
...
</web-app>
#配置用户名密码,关联对应的角色(多个role不要使用相同用户)
[root@es-node1 tomcat]# vim /soft/tomcat/conf/tomcat-users.xml
<role rolename="zrlog_role"/>
<user username="tomcat" password="123456" roles="zrlog_role"/>
#重启tomcat
[root@web01 ~]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh


五、多节点部署

① tomcat-->mysql

10.0.0.7 ---> 10.0.0.51
10.0.0.8 ---> 10.0.0.51
先在10.0.0.8安装java

  • 安装jdk

[root@web02 ~]# yum install java -y

  • 安装tomcat 部署代码 (scp)
在web01上操作
[root@web01 ~]# scp -rp /soft root@172.16.1.8:/
[root@web01 ~]# scp -rp /code/zrlog root@172.16.1.8:/code/

在web02上操作
[root@web02 soft]# rm -rf /soft/tomcat/
[root@web02 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat
[root@web02 soft]# /soft/tomcat/bin/startup.sh

  • 修改域名解析

② tomcat-->nfs

10.0.0.7 ---> 10.0.0.51
10.0.0.8 ---> 10.0.0.51
10.0.0.31

  • 安装NFS
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# systemctl restart nfs

  • 找到图片资源 推送图片资源至NFS
[root@web01 ~]# scp -rp /code/zrlog/ROOT/attached/* root@172.16.1.31:/data/zrlog/
[root@nfs ~]# chown -R www.www /data/zrlog/         #重新授权

  • 多节点挂载
# mount -t nfs 172.16.1.31:/data/zrlog/ /code/zrlog/ROOT/attached/

tomcat-->负载均衡

10.0.0.7 ---> 10.0.0.5
10.0.0.8 ---> 10.0.0.5

  • 安装nginx[根据官方源码包进行安装]

yum install nginx -y

  • 编辑配置文件(接入负载均衡)
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_zrlog.oldxu.com.conf 
upstream zrlog {
        server 172.16.1.7:8080;
        server 172.16.1.8:8080;
    }

server {
    listen 80;
    server_name zrlog.oldxu.com;

    location / {
        proxy_pass http://zrlog;
        include proxy_params;
    }
}

检查语法:nginx -t

Nginx+Tomcat集群全站Https

[root@lb01 conf.d]# cat proxy_zrlog.oldxu.com.conf 
upstream  zrlog {
    server 172.16.1.7:8080;
    server 172.16.1.8:8080;
}

server {
    listen 443 ssl;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    server_name zrlog.oldxu.com;

    location / {
        proxy_pass http://zrlog;
        include proxy_params;
    }
}
server {
    listen 80;
    server_name zrlog.oldxu.com;
    return 302 https://$http_host$request_uri;
}

  • 重启nginx

[root@lb01 ~]# systemctl restart nginx

image

Tomcat配置虚拟主机

[root@web01~]# cat /soft/tomcat/conf/server.xml
<!--tomcat虚拟主机-->
<Host name="tomcat1.oldxu.com"  appBase="/code1"
    unpackWARs="true" autoDeploy="true">

<!--类似于nginx的location  path是访问的路径 ->映射 docBase是真实的路径-->
<Context docBase="/code1/admin" path="/test" reloadable="true"/>

<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
        prefix="tomcat1_access_log" suffix=".txt"
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

PS:如果无法启动
         1.替换配置文件:   pkill java  然后在启动
          2.配置文件写错   
          3.虚拟主机是添加,不要修改
          4.context如果写了,一定要有对应的目录,不然整体就报错
          5.查看日志/soft/tomcat/logs/catalina.out

三、项目演示

Tomcat部署博客项目zrlog

  • 配置server.xml文件 ,新增在 engline
[root@web01 ~]# vim /soft/tomcat/conf/server.xml
 <!--zrlog站点-->
<Host name="zrlog.oldxu.com"  appBase="/code/zrlog"
      unpackWARs="true" autoDeploy="true">

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
         prefix="zrlog_access_log" suffix=".txt"
         pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

  • 创建站点目录,上传zrlog的war包
[root@web01 ~]# mkdir /code/zrlog
[root@web01 ~]# cd /code/zrlog/
[root@web01 zrlog]# rz ROOT.war   

PS:包名就命名为ROOT.war

  • 重启Tomcat服务
[root@web01 zrlog]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh && tail -f /soft/tomcat/logs/catalina.out

  • 配置域名劫持
  • 在172.16.1.51的数据库上,创建一个zrlog的库,配置授权访问用户
[root@db01 ~]# mysql -uroot -pwyw.com
MariaDB [(none)]> create database zrlog charset utf8;
<---此前配置过all用户,可以复用
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'wyw.com'; 

Tomcat部署博客项目jpress

  • 配置server.xml文件 ,新增在 engline
[root@web01 ~]# vim /soft/tomcat/conf/server.xml
 <!--jpress站点-->
<Host name="jpress.oldxu.com"  appBase="/code/jpress"
      unpackWARs="true" autoDeploy="true">

  <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
         prefix="jpress_access_log" suffix=".txt"
         pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

  • 创建站点目录,上传jpress的war包
[root@web01 ~]# mkdir /code/jpress
[root@web01 ~]# cd /code/jpress/
[root@web01 jpress]# rz jpress.war   
[root@web01 jpress]# mv jpress.war ROOT.war
PS:包名就命名为ROOT.war

  • 重启Tomcat服务
[root@web01 jpress]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh && tail -f /soft/tomcat/logs/catalina.out

  • 配置域名劫持
  • 在172.16.1.51的数据库上,创建一个jpress的库,配置授权访问用户
[root@db01 ~]# mysql -uroot -pwyw.com
MariaDB [(none)]> create database jpress charset utf8;
<---此前配置过all用户,可以复用
MariaDB [(none)]> grant all privileges on *.* to 'all'@'%' identified by 'wyw.com'; 

四、Tomcat配置基础认证

开启 Server Status Host Manager页面

  • 配置conf/tomcat-users.xml
<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="manager-gui"/>

  • 如果访问还是403,是因为tomcat默认仅运行本地访问该管理页面,需要允许同网段主机访问
[root@web01 ~]# ll /soft/tomcat/webapps/manager/
[root@web01 ~]# ll /soft/tomcat/webapps/host-manager/
[root@es-web01 tomcat]# vim 项目目录下/META-INF/context.xml
allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
      #修改为
      allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1|10\.0\.0\.\d+" />

  • 启用zrlog的基础认证(Nginx的basic认证) ---> zrlog.oldxu.com/admin
server {
    listen 80;
    server_name zrlog.oldxu.com;

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $http_host;
    }

    location /admin {
        auth_basic           "closed site";
        auth_basic_user_file conf/auth_conf;
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $http_host;
    }
}

[root@es-web01 tomcat]# vim /code/zrlog/ROOT/WEB-INF/web.xml
<web-app>
...
    <security-constraint>
        <web-resource-collection>
            <web-resource-name>zrlog</web-resource-name>
            <url-pattern>/admin/*</url-pattern>
        </web-resource-collection>

        <auth-constraint>
            <role-name>zrlog_role</role-name>
        </auth-constraint>
    </security-constraint>

    <login-config>
        <auth-method>BASIC</auth-method>
        <realm-name>Default</realm-name>
    </login-config>
...
</web-app>
#配置用户名密码,关联对应的角色(多个role不要使用相同用户)
[root@es-node1 tomcat]# vim /soft/tomcat/conf/tomcat-users.xml
<role rolename="zrlog_role"/>
<user username="tomcat" password="123456" roles="zrlog_role"/>
#重启tomcat
[root@web01 ~]# /soft/tomcat/bin/shutdown.sh && /soft/tomcat/bin/startup.sh


五、多节点部署

① tomcat-->mysql

10.0.0.7 ---> 10.0.0.51
10.0.0.8 ---> 10.0.0.51
先在10.0.0.8安装java

  • 安装jdk

[root@web02 ~]# yum install java -y

  • 安装tomcat 部署代码 (scp)
在web01上操作
[root@web01 ~]# scp -rp /soft root@172.16.1.8:/
[root@web01 ~]# scp -rp /code/zrlog root@172.16.1.8:/code/

在web02上操作
[root@web02 soft]# rm -rf /soft/tomcat/
[root@web02 soft]# ln -s /soft/apache-tomcat-9.0.26 /soft/tomcat
[root@web02 soft]# /soft/tomcat/bin/startup.sh

  • 修改域名解析

② tomcat-->nfs

10.0.0.7 ---> 10.0.0.51
10.0.0.8 ---> 10.0.0.51
10.0.0.31

  • 安装NFS
[root@nfs ~]# groupadd -g 666 www
[root@nfs ~]# useradd -u666 -g666 www
[root@nfs ~]# yum install nfs-utils -y
[root@nfs ~]# cat /etc/exports
/data/zrlog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
[root@nfs ~]# mkdir /data/zrlog
[root@nfs ~]# systemctl restart nfs

  • 找到图片资源 推送图片资源至NFS
[root@web01 ~]# scp -rp /code/zrlog/ROOT/attached/* root@172.16.1.31:/data/zrlog/
[root@nfs ~]# chown -R www.www /data/zrlog/         #重新授权

  • 多节点挂载
# mount -t nfs 172.16.1.31:/data/zrlog/ /code/zrlog/ROOT/attached/

tomcat-->负载均衡

10.0.0.7 ---> 10.0.0.5
10.0.0.8 ---> 10.0.0.5

  • 安装nginx[根据官方源码包进行安装]

yum install nginx -y

  • 编辑配置文件(接入负载均衡)
[root@lb01 ~]# cat /etc/nginx/conf.d/proxy_zrlog.oldxu.com.conf 
upstream zrlog {
        server 172.16.1.7:8080;
        server 172.16.1.8:8080;
    }

server {
    listen 80;
    server_name zrlog.oldxu.com;

    location / {
        proxy_pass http://zrlog;
        include proxy_params;
    }
}

检查语法:nginx -t

Nginx+Tomcat集群全站Https

[root@lb01 conf.d]# cat proxy_zrlog.oldxu.com.conf 
upstream  zrlog {
    server 172.16.1.7:8080;
    server 172.16.1.8:8080;
}

server {
    listen 443 ssl;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    server_name zrlog.oldxu.com;

    location / {
        proxy_pass http://zrlog;
        include proxy_params;
    }
}
server {
    listen 80;
    server_name zrlog.oldxu.com;
    return 302 https://$http_host$request_uri;
}

  • 重启nginx

[root@lb01 ~]# systemctl restart nginx

  • 域名解析
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,185评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,445评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,684评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,564评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,681评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,874评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,025评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,761评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,217评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,545评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,694评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,351评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,988评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,778评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,007评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,427评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,580评论 2 349

推荐阅读更多精彩内容

  • Tomcat基本介绍Tomcat安装项目演示 Tomcat基本介绍 JVM基本介绍 Java业务都是运行在Java...
    静如止水yw阅读 134评论 0 0
  • 转自陈明乾的博客,可能有一定更新。 转原文声明: 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 ...
    LUNJINGJIE阅读 3,967评论 1 33
  • 1.JVM基本介绍 jvm概述java业务都是运行在虚拟机上的,Java虚拟机简称为jvm 为什么java需要jv...
    so_q阅读 302评论 0 0
  • 概述 Tomcat是一个JSP/Servlet容器。其作为Servlet容器,有三种工作模式:独立的Servlet...
    jiangmo阅读 2,227评论 0 13
  • JAVA介绍 Java有很多常见的名词,由于java是通过过java虚拟机运行的,所以在运行java的主机上需要配...
    断尾壁虎V阅读 3,641评论 0 5