Tomcat是一个开源的Java EE服务器,想弄明白其中原理还有很长路要走,但是对于有Apache,Nginx经验的我们来说部署它还是没有问题的,下面我们来一步步的构建这些基本的功能吧。

实验环境:rhel 5.8,SElinux已经关闭

一.构建一个基本的Tomcat服务器

不需要额外服务器配合,自己可以直接响应请求。

规划:

  1. 172.16.1.22  .cat.laoguang.me

1.1 下载安装jdk

下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html 选择适合你的平台

  1. rpm -ivh jdk-7u9-linux-i586.rpm   ##默认安装在/usr/java中

1.2 声明JAVA_HOME变量,并为了使用方便将生成的命令加入PATH中

  1. vi /etc/profile.d/java.sh
  2. JAVA_HOME=/usr/java/latest
  3. PATH=$PATH:/usr/java/lastest/bin
  4. export JAVA_HOME PATH
  5. source /etc/profile.d/java.sh  ##加载刚才的配置
  6. java -version ##显示版本号代表成功

1.3 下载安装tomcat

下载地址:http://tomcat.apache.org

  1. tar xvf apache-tomcat-7.0.33.tar.gz -C /usr/local/
  2. cd /usr/local/
  3. ln -sv apache-tomcat-7.0.33/ tomcat  ##创建软链接

1.4 声明CATALINA_HOME环境变量,为方便使用生成的命令加入到PATH中

  1. vi /etc/profile.d/tomcat.sh
  2. CATALINA_HOME=/usr/local/tomcat/
  3. PATH=$PATH:/usr/local/tomcat/bin
  4. export CATALINA_HOME PATH
  5. source /etc/profile.d/tomcat.sh ##加载刚才配置
  6. 测试是否生效
  7. catalina.sh version  ##如果显示版本号则成功

1.5 查看tomcat的下的文件与目录

  1. bin       ##命令目录
  2. conf      ##配置文件目录
  3. lib       ##类库
  4. logs      ##日志
  5. webapps   ##事例网站所在目录
  6. work      ##编译时用到的工作目录
  7. 配置文件最需要注意的有:
  8. server.xml    ##tomcat 主配置文件
  9. tomcat-users.xml   ##认证文件,过会会讲到
  10. web.xml       ##每个站点部署都需用到web.xml,如果站点有用站点的,没有则用这个默认的

1.6 查看示例站点下的文件与目录

  1. cd /usr/local/tomcat
  2. ls webapps/examples/
  3. index.html  jsp  servlets  WEB-INF  websocket
  4. 其它是自定义的,唯有WEB-INF是私有资源的目录,部署时用到的目录,通常是不允许他人访问的,查看下面的目录文件
  5. ls webapps/examples/WEB-INF/
  6. classes  jsp  jsp2  lib  tags  web.xml
  7. 需要请注意的有:
  8. classes   ##包含所有服务器端类及当前应用程序相关的其它第三方类等
  9. lib       ##包含JSP所用到的JAR文件;
  10. web.xml   ##包含当前webapp的deploy描述符,定义时部署时用到的私有资源

1.7 启动comcat,查看默认站点

  1. catalina.sh configtest    ##配置文件检测有没有语法错误
  2. catalina.sh start         ##启动

1.8 访问测试,默认监听的是8080,这个是在server.xml中定义的

  1. http://172.16.1.22:8080/
  2. 如果能看到那只公猫,就成功了

1.9 添加认证用户,使用页面中的Server Status ,Manager Apps与Host Manager这些管理工具

  1. vi /usr/local/tomcat/conf/tomcat-users.xml 添加如下
  2. <role rolename="manager-gui"/>  ##这个组是tomcat规定可以访问manager的组
  3. <role rolename="admin-gui"/>  ##这个是访问Host Manager的组
  4. <user username="tomcat" password="tomcat" roles="manager-gui,admin-gui"/>  ##你懂得

点击Server Status ,Manager Apps与Host Manager 输入账号tomcat密码tomcat查看后台的管理信息,具体表示找google吧,其中Manager中有个session,这个里面存的是个个站点的session id,一会儿讲session复制内容会用到。

二.自定义一个主机,如www.laoguang.me

2.1 建立一目录,用来存放文档

  1. mkdir -pv /web/apps/WEB-INF

2.2 建立一个测试页面

  1. vi /web/apps/index.jsp
  2. <%@ page language="java" %>
  3. <%@ page import="java.util.*" %>
  4. <html>
  5. <head>
  6. <title>JSP test page.</title>
  7. </head>
  8. <body>
  9. <% out.println("Hello,world!"); %>
  10. </body>
  11. </html>

2.3 编辑tomcat的配置文件 /usr/local/tomcat/conf/server.xml 定义虚拟主机,在默认Host上添加如下(不要添加到另外的host中哦)

  1. <Host name="www.laoguang.me"  appBase="/web/apps"
  2. unpackWARs="true" autoDeploy="true">
  3. <Context path="" docBase="/web/apps" reloadable="true" />
  4. </Host>

2.4 下面简单说说server.xml中一些标签的意思,注意:server.xml区分大小写的

  1. <Server port="8005" shutdown="SHUTDOWN">    ##最大的容器server,端口号8005可用来管理Server
  2. <Service name="Catalina">   ##service开始定义,名字Catalina
  3. <Connector port="8080" protocol="HTTP/1.1" />   ##http连接器,看到了吧端口号8080
  4. <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> ##ajp连接器,端口号8009
  5. <Engine name="Catalina" defaultHost="localhost"> ##定义引擎,与默认主机
  6. <Realm className="org.apache.catalina.realm.LockOutRealm"> ##关于认证的类
  7. <Host name="" appBase="" unpackWARs="" autoDeploy=""></Host>
  8. ##定义一个主机appBase主机的目录,相当于apache的DocumentRoot,upackWARs自动解压WAR包,autoDeploy自动部署
  9. <Context path="" docBase="" />
  10. ##Context 上下文,相当于apache的Aliase,path=""后面跟的是URI,docBase访问path的URI即访问的目录
  11. <Valve className="org.apache.catalina.valves.AccessLogValve" />  ##过滤器

2.5 测试

  1. catalina.sh stop ##先关闭catalina
  2. catalina.sh configtest ##查看有没有语法错误
  3. catalina.sh start ##启动tomcat会自动部署
  4. 更改window的hosts文件,添加解析
  5. 172.16.1.22     www.laoguang.me
  6. 访问www.laoguang.me:8080测试,如果显示hello world!就成功了

三.部署JspRun测试

或许一个简单的测试页面不能满足你的胃口,那我们部署个论坛吧

3.1 下载安装 JspRun

下载地址:http://www.jsprun.com/downloads/JspRun/6.0.0/JspRun!_6.0.0_GBK.zip

  1. unzip JspRun\!_6.0.0_GBK.zip
  2. mv upload/ /web/jsprun

3.2 编辑/usr/local/tomcat/conf/tomcat-users.xml 再添加一虚拟主机

  1. <Host name="jsprun.laoguang.me"  appBase="/web/jsprun"
  2. unpackWARs="true" autoDeploy="true">
  3. <Context path="" docBase="/web/jsprun" />
  4. </Host>

3.3 编辑windows的hosts,添加解析

  1. 172.16.1.22     jsprun.laoguang.me

3.4 安装Mysql,因为该jsprun需要,为了简单yum 安装吧

  1. yum -y install mysql-server
  2. service mysqld start

3.5 为jsprun建立账号

  1. mysql
  2. mysql> create database jsprun;
  3. mysql> grant all on jsprun.* to 'jsprun'@'localhost' identified by 'redhat';
  4. mysql> flush privileges;

3.6 编缉jsprun的配置文件,修改mysql以下信息

  1. dbhost = localhost
  2. dbport=3306
  3. dbuser = jsprun
  4. dbpw = redhat
  5. dbname = jsprun

3.7 访问http://jsprun.laoguang.me:8080/install.jsp 安装

根据提示安装即可

四.apache做前端代理,基于mod_proxy模块与Tomcat连接

4.1 编译安装apache

过程见http://laoguang.blog.51cto.com/6013350/1039208

唯一的区别是在编译时额外加上

  1. --enable-proxy --enable-proxy-http --enable-proxy-ajp
  2. --enable-proxy  ##启用代理
  3. --enable-proxy-http ##启用http代理模块
  4. --enable-proxy-ajp ##启用ajp代理模块

4.2 编缉/etc/httpd/httpd.conf

  1. vi /etc/httpd/httpd.conf
  2. LoadModule slotmem_shm_module modules/mod_slotmem_shm.so      ##启用该模块
  3. #DocumentRoot "/usr/local/apache/htdocs"   ##注释掉,我们启用虚拟主机
  4. Include /etc/httpd/extra/httpd-vhosts.conf  ##我们用虚拟主机

4.3 编缉/etc/httpd/extra/httpd-vhosts.conf

  1. <VirtualHost *:80>
  2. ServerName jsprun.laoguang.me
  3. ProxyVia Off   ##不让代理在http首部中显示
  4. ProxyRequests Off   ##关闭正向代理
  5. ProxyPass /     http://jsprun.laoguang.me:8080/ ##访问/则代理到jsprun中
  6. ProxyPa***everse /      http://jsprun.laoguang.me:8080/ ##不让tomcat直接响应客端
  7. <Proxy *>
  8. Require all granted
  9. </Proxy>
  10. <Location />
  11. Require all granted
  12. </Location>
  13. ErrorLog "logs/laoguang-error_log"
  14. CustomLog "logs/laoguang-access_log" common
  15. </VirtualHost>

4.4 修改linux的/etc/hosts为jsprun.laoguang.me解析

  1. vi /etc/hosts
  2. 172.16.1.22     jsprun.laoguang.me      jsprun

4.5 访问http://jsprun.laoguang.me测试

4.6 基于ajp协议与tomcat连接,与http的基本相同,只修改协议与端口即可,其它的一样

  1. ProxyPass /     ajp://jsprun.laoguang.me:8009/
  2. ProxyPa***everse /      ajp://jsprun.laoguang.me:8009/

五.apache做前端代理,基于mod_jk模块与Tomcat连接

4.1 编译安装mod_jk模块,下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache//tomcat/tomcat-connectors/jk/

  1. tar xvf tomcat-connectors-1.2.37-src.tar.gz
  2. cd tomcat-connectors-1.2.37-src
  3. cd native/
  4. ./configure --with-apxs=/usr/local/apache/bin/apxs
  5. make && make install

4.2 apache要使用mod_jk连接器,需要在启动时加载此连接器模块。为了便于管理与mod_jk模块相关的配置,这里使用一个专门的配置文件/etc/httpd/extra/httpd-jk.conf来保存相关指令及其设置。其内容如下:

  1. vi /etc/httpd/extra/httpd-jk.conf
  2. # Load the mod_jk
  3. LoadModule  jk_module  modules/mod_jk.so
  4. JkWorkersFile  /etc/httpd/extra/workers.properties
  5. JkLogFile  logs/mod_jk.log
  6. #JkLogLevel  debug
  7. JkMount  /*  laoguang
  8. JkMount  /status/  status

4.3 建立mod_jk需要的配置文件

  1. vi /etc/httpd/extra/workers.properties
  2. worker.list=laoguang,status
  3. worker.laoguang.port=8009
  4. worker.laoguang.host=172.16.1.22
  5. worker.laoguang.type=ajp13
  6. worker.laoguang.lbfactor=1
  7. worker.status.type = status

4.4 在/etc/httpd/httpd.conf中把/etc/httpd/extra/httpd-jk.conf 包含进来,并注释掉虚拟主机,与其中的代理会冲突的哦

  1. vi /etc/httpd/httpd.conf
  2. #Include /etc/httpd/extra/httpd-vhosts.conf
  3. Include /etc/httpd/extra/httpd-jk.conf
  4. ##重启httpd
  5. service httpd restart

4.5 访问http://jsprun.laoguang.me/测试,能否能看到jsprun

五.基于mod_proxy构建负载均衡

为了实现负载均衡,我们增加一台服务器

  1. 172.16.1.21 tom.laoguang.me

5.1 安装jdk与上相同

5.2 安装tomcat与上相同

5.3.1 增加一虚拟主机,并添加engine的jvmRoute

  1. mkdir -pv /web/balance/WEB-INF
  2. vi /usr/local/tomcat/conf/server.xml
  3. <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatA">  ##找到Engine添加
  4. <Host name="balance.laoguang.me"  appBase="/web/balance"
  5. unpackWARs="true" autoDeploy="true">
  6. <Context path="" docBase="/web/balance" />
  7. </Host>

5.3.2 添加一测试页面

  1. vi /web/balance/index.jsp
  2. <%@ page language="java" %>
  3. <html>
  4. <head><title>TomcatA</title></head>
  5. <body>
  6. <h1><font color="red">TomcatA </font></h1>
  7. <table align="centre" border="1">
  8. <tr>
  9. <td>Session ID</td>
  10. <% session.setAttribute("abc","abc"); %>
  11. <td><%= session.getId() %></td>
  12. </tr>
  13. <tr>
  14. <td>Created on</td>
  15. <td><%= session.getCreationTime() %></td>
  16. </tr>
  17. </table>
  18. </body>
  19. </html>

5.3.2 重启catalina 声明:修改tomcat配置文件后需重启以后不再说明了

  1. catalina stop
  2. catalina start

5.3.2 添加windows的hosts解析

  1. 172.16.1.21     balance.laoguang.me

5.3.3 访问http://balance.laoguang.me:8080/ 查看是否成功

5.4.1 同样在原来cat服务器上也增加同样的虚拟主机,方法同上,engine的jvmroute改为TomcatB,为了方便查看修改index.jsp显示的颜色

  1. vi /usr/local/tomcat/conf/server.xml
  2. <Engine name="Catalina" defaultHost="localhost" jvmRoute="TomcatB">  ##找到Engine添加
  3. vi /web/balance/index.jsp
  4. <%@ page language="java" %>
  5. <html>
  6. <head><title>TomcatB</title></head>
  7. <body>
  8. <h1><font color="green">TomcatB </font></h1>
  9. <table align="centre" border="1">
  10. <tr>
  11. <td>Session ID</td>
  12. <% session.setAttribute("abc","abc"); %>
  13. <td><%= session.getId() %></td>
  14. </tr>
  15. <tr>
  16. <td>Created on</td>
  17. <td><%= session.getCreationTime() %></td>
  18. </tr>
  19. </table>
  20. </body>
  21. </html>

5.4.2 重启catalina

5.4.3 修改刚添加的windows的hosts测试这个主机

  1. 172.16.1.22     balance.laoguang.me

5.4.4 访问http://balance.laoguang.me:8080/测试

5.5.下面来配置前端apache来实现后端负载均衡

apache是在cat上安装的,注意的是基于mod_proxy的负载均衡必须在中心主机中配置

5.5.1 编缉apache配置文件/etc/httpd/httpd.conf

  1. vi /etc/httpd/httpd.conf
  2. #Include /etc/httpd/extra/httpd-jk.conf  ##注释掉原来的jk
  3. ServerName balance.laoguang.com:80
  4. #DocumentRoot "/usr/local/apache/htdocs"  ##不注释也可以,在下面添加
  5. ProxyRequests Off
  6. <Proxy balancer://lbcluster>
  7. BalancerMember ajp://172.16.1.21:8009 loadfactor=10 route=TomcatA
  8. BalancerMember ajp://172.16.1.22:8009 loadfactor=10 route=TomcatB
  9. </Proxy>
  10. ProxyPass / balancer://lbcluster/
  11. ProxyPa***everse / balancer://lbcluster/

5.5.2 重启httpd访问http://balance.laoguang.me/测试,如果页面能切换代表ok

5.6 当然也可以用http协议与tomcat连接,更改协议与端口即可

  1. BalancerMember http://172.16.1.21:8080 loadfactor=10 route=TomcatA
  2. BalancerMember httpp://172.16.1.22:8080 loadfactor=10 route=TomcatB

六.基于mod_jk实现负载均衡

6.1 注释刚才添加的基于proxy_mod的配置,启用已添加的mod_jk配置

  1. #ProxyRequests Off
  2. #<Proxy balancer://lbcluster>
  3. #       BalancerMember ajp://172.16.1.21:8009 loadfactor=10 route=TomcatA
  4. #       BalancerMember ajp://172.16.1.22:8009 loadfactor=10 route=TomcatB
  5. #</Proxy>
  6. #ProxyPass / balancer://lbcluster/
  7. #ProxyPa***everse / balancer://lbcluster/
  8. Include /etc/httpd/extra/httpd-jk.conf

6.2 修改 /etc/httpd/extra/httpd-jk.conf

  1. vi /etc/httpd/extra/httpd-jk.conf
  2. # Load the mod_jk
  3. LoadModule  jk_module  modules/mod_jk.so
  4. JkWorkersFile  /etc/httpd/extra/workers.properties
  5. JkLogFile  logs/mod_jk.log
  6. #JkLogLevel  debug
  7. JkMount  /*  cluster1
  8. JkMount  /status/  status

6.3 修改/etc/httpd/workers.properties

  1. worker.list = cluster1,status
  2. worker.TomcatA.type = ajp13
  3. worker.TomcatA.host = 172.16.1.21
  4. worker.TomcatA.port = 8009
  5. worker.TomcatA.lbfactor = 5
  6. worker.TomcatB.type = ajp13
  7. worker.TomcatB.host = 172.16.1.22
  8. worker.TomcatB.port = 8009
  9. worker.TomcatB.lbfactor = 5
  10. worker.cluster1.type = lb
  11. worker.cluster1.sticky_session = 0    ##如果为1会绑定session
  12. worker.cluster1.balance_workers = TomcatA, TomcatB
  13. worker.status.type = status

6.4 测试访问 http://balance.laoguang.me/

七.构建基于内存session复制的tomcat集群
为了防止由于节点故障导致的session丢失,我们来构建基于内存session复制的集群,在刚才的的负载均衡中你或许已经发现网页显示的session id一直是变动的,这个session id 就是通过jsp获得的此次会话的id,我们发现会话id一直是变动的,TomcatA中一直是TomcatA的session id,下面我们来构建吧。

7.1 修改172.16.1.21的server.xml,在engine下添加如下

  1. vi /usr/local/tomcat/conf/server.xml
  2. <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
  3. channelSendOptions="8">
  4. <Manager className="org.apache.catalina.ha.session.DeltaManager"
  5. expireSessionsOnShutdown="false"
  6. notifyListenersOnReplication="true"/>
  7. <Channel className="org.apache.catalina.tribes.group.GroupChannel">
  8. <Membership className="org.apache.catalina.tribes.membership.McastService"
  9. address="227.50.10.1"   bind="172.16.1.21"   port="45564"
  10. frequency="500"  dropTime="3000"/>
  11. <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
  12. address="172.16.1.21"   port="4000"  autoBind="100"
  13. selectorTimeout="5000"   maxThreads="6"/>
  14. <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
  15. <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
  16. </Sender>
  17. <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
  18. <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
  19. </Channel>
  20. <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
  21. filter=".*\.gif;.*\.js;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"/>
  22. <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
  23. <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
  24. tempDir="/tmp/war-temp/" deployDir="/tmp/war-deploy/"
  25. watchDir="/tmp/war-listen/"  watchEnabled="false"/>
  26. <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
  27. <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
  28. </Cluster>

7.2 修改balance虚拟主机的部署文件web.xml

我们建立的balance时没有建立web.xml,我们继承的是/usr/local/tomcat/conf/web.xml的,我们现在需要修改部署文件,所以拷贝到/web/balance/WEB-INF中修改,在<web-app> </web-app>中添加 <distributable/>,部份如下

  1. cp /usr/local/tomcat/conf/web.xml /web/apps/WEB-INF/
  2. vi /web/apps/WEB-INF/web.xml
  3. <welcome-file-list>
  4. <welcome-file>index.html</welcome-file>
  5. <welcome-file>index.htm</welcome-file>
  6. <welcome-file>index.jsp</welcome-file>
  7. </welcome-file-list>
  8. <distributable/>
  9. </web-app>

7.3 修改172.16.1.22 的server.xml 基本与172.16.1.21的相同,只修改多播ip与接收ip即可,为了不浪费51blog的存储空间,就不完全显示了

  1. <Membership className="org.apache.catalina.tribes.membership.McastService"
  2. address="227.50.10.1"   bind="172.16.1.22"   port="45564"
  3. frequency="500"  dropTime="3000"/>
  4. <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
  5. address="172.16.1.22"   port="4000"  autoBind="100"
  6. selectorTimeout="5000"   maxThreads="6"/>

7.4 对balance虚拟主机部署文件修改与172.16.1.21相同

7.5 测试访问 http://balance.laoguang.me/ 查看session id变化情况

到此构建结束,过程并不难,但要熟练使用tomcat必须得去了解java啊,还有好长的路要走,不要以为会构建了tomcat就觉的会tomcat了,其实还不到10%,所以加油,写给你们,也写给自己。

转载于:https://blog.51cto.com/laoguang/1086329

Tomcat一步步实现反向代理、负载均衡、内存复制相关推荐

  1. Tomcat集群+Nginx反向代理+负载均衡

    Tomcat集群 所谓tomcat集群,就是向外提供并行服务的多台机器,任何一台服务器宕机,其他服务器还可以代替它向外提供服务,从而不影响用户访问 为了提高tomcat集群的高可用性,还需要实现ngi ...

  2. nginx 反向代理负载均衡 tomcat集群应用

    nginx 反向代理负载均衡 tomcat集群应用 环境介绍: 系统:centos5.8_64 192.168.0.201:nginx服务器 192.168.0.202:tomcat服务器 192.1 ...

  3. Nginx 反向代理 负载均衡 虚拟主机

    Nginx 反向代理 负载均衡 虚拟主机配置 通过本章你将学会利用Nginx配置多台虚拟主机,清楚代理服务器的作用,区分正向代理和反向代理的区别,搭建使用Nginx反向搭理和负载均衡,了解Nginx常 ...

  4. Nginx总结(安装,使用,正向代理,反向代理,负载均衡)

    目录 Nginx介绍与安装 一.Nginx简介 1.什么是ngnix 2.nginx应用场景 二.Nginx安装与启动 Nginx静态网站部署 一.静态⽹站的部署 二.配置虚拟主机 1.端⼝绑定 2. ...

  5. Nginx反向代理 负载均衡sky

    Nginx服务部署 Nginx简介 Nginx (engine x) 是一个轻量级的.高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器.Nginx是由伊戈尔·赛索耶夫为俄罗 ...

  6. Nginx反向代理负载均衡虚拟主机动静分离UrlRewrite防盗链

    文章目录 1. Nginx简介 1.1 Nginx背景 1.2 Nginx的优点 1.3 Nginx的功能特性及常用功能 2.Nginx安装 2.1 下载上传解压 1.2 安装 3.nginx核心概念 ...

  7. Nginx特性验证-反向代理/负载均衡/页面缓存/URL重定向

    原文发表于cu:2016-08-25 参考文档: Nginx 反向代理.负载均衡.页面缓存.URL重写等:http://freeloda.blog.51cto.com/2033581/1288553 ...

  8. 编译安装nginx并实现反向代理负载均衡和缓存功能

    一.编译安装nginx 1.下载 [root@ns1 ~]# wget http://nginx.org/download/nginx-1.10.0.tar.gz 2.解压 [root@ns1 ~]# ...

  9. Nginx 反向代理+负载均衡

    一.Nginx 的引入背景 ● 公司产品出现瓶颈? 我们公司项目刚刚上线的时候,并发量小,用户使用的少,所以在低并发的情况下,一个jar包启动应用就够了,然后内部tomcat返回内容给用户. 用户少, ...

最新文章

  1. TensorFlow六种激活函数
  2. card样式 layui_layui样式修改
  3. HTML5将重塑Web世界?,互联网营销
  4. 文献学习(part90)--How Can Machine Learning and Optimization Help Each Other Better?
  5. 西欧八国调查:25%受访者宁要AI政府也不要民选政治家
  6. Jmeter系列之常用组件(二)
  7. php正则表达式 包含特殊字符,php正则表达式的特殊字符含义
  8. Linux之apache服务搭建以及浅析web安全
  9. python天天向上代码解析-python列表解析和生成器表达式
  10. Linux查找命令与find命令详解
  11. 压力测试 JMeter 使用教程(三分钟拿下)
  12. 车牌识别算法实践(二):基础算法
  13. 上海计算机在职专业硕士学校,专业硕士计算机类可以报考上海哪些学校?
  14. CSS特效八:开关按钮
  15. 什么是虚拟主机管理系统?
  16. 你为什么始终做不好会议营销?「会议营销」电子书免费下载
  17. 小程序中的页面导航(页面跳转)
  18. 大学十年---林锐(转)
  19. 【web前端】小人行走
  20. CAD中插入外部参照字体会变繁体_为什么CAD插入外部参照时会提示错误无效?

热门文章

  1. Mysql多表查询(两张独立表,一张关系表)
  2. MongoDB学习笔记三:查询
  3. 关于 mysql.test 数据库
  4. springMVC_数据的处理过程
  5. 线段树专辑——pku 3667 Hotel
  6. WinForm中使用Excel控件
  7. 中文字符匹配java_java正则匹配HTML中a标签里的中文字符示例
  8. wxpython使用方法_python图形界面开发之wxPython树控件使用方法详解
  9. 惠新宸php教程_惠新宸:PHP在百度的应用现状及展望
  10. 策略模式在jdk Arrays 中使用