tomcat服务&&tomcat多实例部署

tomcat服务&&tomcat多实例部署

文章目录

  • tomcat服务&&tomcat多实例部署
    • 1.简介
    • 2.优缺点
      • 优点:
      • 缺点:
    • 3.工作原理
    • 4.工作流程
    • 5.tomcat服务部署
      • 5.1.java环境安装
      • 5.2.拉取tomcat软件包
      • 5.3.解压部署
      • 5.4.启动tomcat服务
      • 5.5.访问tomcat的web页面
      • 5.6.尝试访问webapps目录中其他项目
    • 6.tomcat多实例部署(在同一台主机上部署多个tomcat服务)
      • 环境说明:
      • 6.1.配置前准备工作
      • 6.3.安装java环境
      • 6.4.拉取tomcat软件包
      • 6.5.解压安装tomcat
      • 6.6.更改端口号
      • 6.7.开启服务
      • 6.8.配置多实例测试网页
      • 6.9.访问测试
    • 总结:

1.简介

Tomcat是一个开源的Java Servlet容器,可以作为Java Web应用程序的运行环境。它是Apache软件基金会的一个重要项目,具有高性能、稳定可靠以及跨平台等特点。它实现了Java Servlet和JavaServer Pages(JSP)规范,并提供了一个运行环境,使得Java代码可以在Web服务器上执行。

tomcat就是传说中的中间件之一,tomcat本身是一个容器,专门用来运行java程序,java语言开发的网页.jsp就应该运行于tomcat中。而tomcat本身的运行也依赖于jdk环境。

2.优缺点

优点:

  1. 开源免费:Tomcat是一个开源项目,可以免费使用,这使得它成为了一个广受欢迎的Java Web应用服务器。
  2. 跨平台:Tomcat可以在各种操作系统上运行,包括Windows、Linux、macOS等。
  3. 轻量级:相比于其他一些Java应用服务器(如WebLogic、WebSphere等),Tomcat相对轻量级,资源占用较少,启动速度也相对较快。
  4. 灵活性:Tomcat可以作为一个独立的Web服务器使用,也可以与其他Web服务器(如Apache)配合使用,形成一个强大的Web服务器架构。

缺点:

  • 功能相对有限:相对于一些商业的Java应用服务器,Tomcat在一些高级特性和功能方面可能有所欠缺,比如分布式事务、集群等方面的支持。
  • 管理界面相对简陋:Tomcat的管理界面相对简单,对于一些高级的管理需求可能不够满足。

3.工作原理

  1. omcat的工作原理基于Java Servlet和JavaServer Pages(JSP)规范,它充当了一个Java Web应用程序的运行环境和Web服务器。以下是Tomcat的工作原理的详细说明:

    1. 启动Tomcat:Tomcat作为一个独立的Java应用程序运行。通常,你会使用命令行或启动脚本来启动Tomcat。一旦Tomcat启动,它开始监听HTTP请求的到达。
    2. 连接器(Connectors):Tomcat通过连接器来监听HTTP请求。连接器是Tomcat的组件,负责处理网络连接和接收HTTP请求。常见的连接器包括HTTP连接器(用于处理HTTP请求)和AJP连接器(用于与其他Web服务器如Apache连接)。每个连接器通常监听一个特定的端口,比如HTTP连接器默认监听8080端口。
    3. 容器(Containers):Tomcat包含了两种主要的容器:引擎(Engine)和主机(Host)。引擎负责处理多个主机,每个主机代表一个独立的域名或虚拟主机。主机包含一个或多个上下文(Context),每个上下文对应一个Web应用程序。容器负责处理Servlet和JSP的生命周期管理、请求分发和响应收集。
    4. Servlet容器:当一个HTTP请求到达Tomcat后,Tomcat会根据请求的URL来确定将请求交给哪个Servlet进行处理。Servlet容器是Tomcat的一部分,它负责管理Servlet的生命周期,包括实例化、初始化、调用和销毁。Servlet容器还负责将请求传递给适当的Servlet,并将Servlet生成的响应返回给客户端。
    5. JSP引擎:Tomcat还包含了一个JSP引擎,用于处理JSP页面。当一个JSP页面被请求时,JSP引擎将JSP编译成Servlet,并交给Servlet容器来处理。生成的Servlet负责处理JSP页面的动态内容生成。
    6. 部署描述符(Deployment Descriptors):每个Web应用程序通常包括一个部署描述符(通常是一个web.xml文件),它包含了关于应用程序的配置信息,包括Servlet映射、过滤器配置、监听器配置等。Tomcat会读取这些描述符以了解如何处理请求。
    7. 请求处理流程
      • Tomcat接收到HTTP请求后,连接器将请求传递给适当的主机和上下文。
      • 主机和上下文确定哪个Servlet应该处理请求,并将请求传递给Servlet容器。
      • Servlet容器实例化和初始化Servlet,调用其service()方法来处理请求。
      • Servlet生成响应并将其返回给Servlet容器。
      • Servlet容器将响应返回给主机和连接器,最终发送给客户端。
    8. 关闭Tomcat:当不再需要Tomcat服务时,你可以通过命令行或脚本来关闭Tomcat。Tomcat会执行关闭过程,释放资源并停止监听HTTP请求。

    总之,Tomcat的工作原理涉及连接器、容器、Servlet容器、JSP引擎以及部署描述符等多个组件,它们协同工作来处理HTTP请求,将请求传递给适当的Servlet或JSP,生成响应并将其返回给客户端。这个过程使得Tomcat成为一个强大的Java Web应用服务器,用于部署和运行Java Web应用程序。

4.工作流程

tomcat的工作原理基于Java Servlet和JSP规范。它充当一个Web服务器,接收HTTP请求并将其传递给合适的Servlet或JSP进行处理。以下是Tomcat的基本工作流程:

  1. 接收请求:Tomcat作为一个Web服务器监听指定的端口(默认为80或8080)。当一个HTTP请求到达时,Tomcat会接收并解析它。
  2. 请求分发:根据URL和部署在Tomcat中的应用程序配置,Tomcat会决定将请求交给哪个Servlet或JSP进行处理。
  3. Servlet处理:如果请求是一个Servlet请求,Tomcat会将请求信息传递给相应的Servlet。Servlet会处理请求并生成响应,然后将其发送回Tomcat。
  4. JSP处理:如果请求是一个JSP请求,Tomcat会将JSP文件编译成一个Servlet,然后将请求信息传递给这个Servlet进行处理。Servlet再生成响应并将其返回给Tomcat。
  5. 响应传递:Tomcat接收到Servlet或JSP生成的响应后,将其传递回客户端。

5.tomcat服务部署

服务器 IP地址 系统版本 tomcat版本
tomcat 192.168.195.137 centos 8 apache-tomcat-9.0.80.tar.gz

首先关闭防火墙和selinux

[root@tomcat ~]# systemctl disable --now firewalld.service 
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@tomcat ~]# setenforce 0
[root@tomcat ~]# vim /etc/selinux/config 
[root@tomcat ~]# grep '^SELINUX=' /etc/selinux/config
SELINUX=disabled

5.1.java环境安装

JDK(Java Development Kit)和JRE(Java Runtime Environment)是Java开发和运行环境的两个重要组成部分,它们之间有以下区别:

JDK:

  1. 功能:JDK是Java开发工具包,提供了开发Java应用程序所需的工具和资源,包括编译器、调试器、开发文档、示例代码等。
  2. 面向开发者:JDK主要面向Java开发者,用于编写、编译和调试Java代码。
  3. 包含内容:JDK包含JRE的所有内容,并且还包含了用于开发Java应用程序的额外工具和库。

JRE:

  1. 功能:JRE是Java运行环境,提供了Java应用程序运行所需的运行时环境和必要的库文件。
  2. 面向用户:JRE主要面向普通用户,用于执行和运行Java应用程序。
  3. 包含内容:JRE包含Java虚拟机(JVM)和Java类库,可以执行Java程序,但不包含用于开发Java应用程序的工具和资源。

简而言之,JDK适用于开发者,提供了编译、调试和开发所需的工具和库。而JRE适用于用户,用于运行Java应用程序,不包含开发工具。如果你只是要运行Java程序,只需要安装JRE即可。如果你要进行Java应用程序的开发,需要安装JDK。

//安装jdk环境
[root@tomcat ~]# rm -rf /etc/yum.repos.d/*
[root@tomcat ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@tomcat ~]# yum makecache
[root@tomcat ~]# yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel wget vim
省略 . . .

//查看安装的版本,能够查看到版本则说明安装成功
[root@tomcat ~]# java -version
openjdk version "1.8.0_312"
OpenJDK Runtime Environment (build 1.8.0_312-b07)
OpenJDK 64-Bit Server VM (build 25.312-b07, mixed mode)

5.2.拉取tomcat软件包

进入tomcat官网

Apache Tomcat® - Welcome!
tomcat服务&&tomcat多实例部署_第1张图片
tomcat服务&&tomcat多实例部署_第2张图片
tomcat服务&&tomcat多实例部署_第3张图片
tomcat服务&&tomcat多实例部署_第4张图片
tomcat服务&&tomcat多实例部署_第5张图片

//拉取tomcat软件包
[root@tomcat ~]# wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz
--2023-10-10 13:41:29--  https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz
Resolving archive.apache.org (archive.apache.org)... 65.108.204.189, 2a01:4f9:1a:a084::2
Connecting to archive.apache.org (archive.apache.org)|65.108.204.189|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 11692853 (11M) [application/x-gzip]
Saving to: ‘apache-tomcat-9.0.80.tar.gz’

apache-tomcat-9.0.80.tar.gz   100%[===============================================>]  11.15M  25.2KB/s    in 5m 55s  

2023-10-10 13:47:25 (32.1 KB/s) - ‘apache-tomcat-9.0.80.tar.gz’ saved [11692853/11692853]

[root@tomcat ~]# ls
anaconda-ks.cfg  apache-tomcat-9.0.80.tar.gz

5.3.解压部署

//解压至指定目录
[root@tomcat ~]# tar xf apache-tomcat-9.0.80.tar.gz -C /usr/local/
[root@tomcat ~]# ls /usr/local/
apache-tomcat-9.0.80  bin  etc  games  include  lib  lib64  libexec  sbin  share  src

//设置tomcat软链接,方便后续如果更换tomcat版本后也能直接使用
[root@tomcat ~]# cd //usr/local/
[root@tomcat local]# ll
total 0
drwxr-xr-x  9 root root 220 Oct 10 13:49 apache-tomcat-9.0.80
drwxr-xr-x. 2 root root   6 Aug 12  2018 bin
drwxr-xr-x. 2 root root   6 Aug 12  2018 etc
drwxr-xr-x. 2 root root   6 Aug 12  2018 games
drwxr-xr-x. 2 root root   6 Aug 12  2018 include
drwxr-xr-x. 2 root root   6 Aug 12  2018 lib
drwxr-xr-x. 2 root root   6 Aug 12  2018 lib64
drwxr-xr-x. 2 root root   6 Aug 12  2018 libexec
drwxr-xr-x. 2 root root   6 Aug 12  2018 sbin
drwxr-xr-x. 5 root root  49 Jul 20 11:24 share
drwxr-xr-x. 2 root root   6 Aug 12  2018 src
[root@tomcat local]# ln -s apache-tomcat-9.0.80 tomcat
[root@tomcat local]# ll
total 0
drwxr-xr-x  9 root root 220 Oct 10 13:49 apache-tomcat-9.0.80
drwxr-xr-x. 2 root root   6 Aug 12  2018 bin
drwxr-xr-x. 2 root root   6 Aug 12  2018 etc
drwxr-xr-x. 2 root root   6 Aug 12  2018 games
drwxr-xr-x. 2 root root   6 Aug 12  2018 include
drwxr-xr-x. 2 root root   6 Aug 12  2018 lib
drwxr-xr-x. 2 root root   6 Aug 12  2018 lib64
drwxr-xr-x. 2 root root   6 Aug 12  2018 libexec
drwxr-xr-x. 2 root root   6 Aug 12  2018 sbin
drwxr-xr-x. 5 root root  49 Jul 20 11:24 share
drwxr-xr-x. 2 root root   6 Aug 12  2018 src
lrwxrwxrwx  1 root root  20 Oct 10 13:51 tomcat -> apache-tomcat-9.0.80
[root@tomcat local]# cd tomcat/
[root@tomcat tomcat]# pwd
//usr/local/tomcat
[root@tomcat tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@tomcat tomcat]# ls bin/
bootstrap.jar       ciphers.sh                    daemon.sh     setclasspath.bat  startup.sh            version.bat
catalina.bat        commons-daemon.jar            digest.bat    setclasspath.sh   tomcat-juli.jar       version.sh
catalina.sh         commons-daemon-native.tar.gz  digest.sh     shutdown.bat      tomcat-native.tar.gz
catalina-tasks.xml  configtest.bat                makebase.bat  shutdown.sh       tool-wrapper.bat
ciphers.bat         configtest.sh                 makebase.sh   startup.bat       tool-wrapper.sh

上述的bin目录中我们能够用到的catalina.sh、shutdown.sh、version.sh、startup.sh、configtest.sh
这几个执行文件,用途分别是:
catalina.sh 能够关闭和开启服务(常用)
shutdown.sh 只能关闭服务(不是关闭主机)
startup.sh 只能开启服务
version.sh 查看tomcat版本
configtest.sh 测试配置文件是否存在错误,检查配置文件

//将tomcat的lib位置存放在/etc/ld.so.conf/d/下面,命名一个自身名字的文件,方便查找
[root@tomcat tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@tomcat tomcat]# vim /etc/ld.so.conf.d/tomcat.conf
[root@tomcat tomcat]# cat /etc/ld.so.conf.d/tomcat.conf
/usr/local/tomcat/lib
[root@tomcat tomcat]# ldconfig -v
ldconfig: Can't stat /libx32: No such file or directory
ldconfig: Path `/usr/lib' given more than once
ldconfig: Path `/usr/lib64' given more than once
ldconfig: Can't stat /usr/libx32: No such file or directory
/usr/lib64//bind9-export:
	libisccfg-export.so.163 -> libisccfg-export.so.163.0.4
	libisc-export.so.1104 -> libisc-export.so.1104.0.0
	libirs-export.so.161 -> libirs-export.so.161.0.0
	libdns-export.so.1107 -> libdns-export.so.1107.1.0
/usr/local/tomcat/lib:
/lib:
/lib64:

5.4.启动tomcat服务

//使用绝对路径执行/usr/local/tomcat/bin/下面的脚本,tomcat不能写进环境变量,放置后续更改tomcat版本后环境变量仍是之前的tomcat版本
[root@tomcat tomcat]# pwd
//usr/local/tomcat
[root@tomcat tomcat]# cd bin
[root@tomcat bin]# pwd
//usr/local/tomcat/bin
[root@tomcat bin]# ./catalina.sh start
Using CATALINA_BASE:   //usr/local/tomcat
Using CATALINA_HOME:   //usr/local/tomcat
Using CATALINA_TMPDIR: //usr/local/tomcat/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       //usr/local/tomcat/bin/bootstrap.jar://usr/local/tomcat/bin/tomcat-juli.jar
Using CATALINA_OPTS:   
Tomcat started.
[root@tomcat bin]# ss -antl
State          Recv-Q         Send-Q                      Local Address:Port                 Peer Address:Port        
LISTEN         0              128                               0.0.0.0:22                        0.0.0.0:*           
LISTEN         0              1                      [::ffff:127.0.0.1]:8005                            *:*           
LISTEN         0              100                                     *:8080                            *:*           
LISTEN         0              128                                  [::]:22                           [::]:*
[root@tomcat test]# ps -ef | grep tomcat       //查看tomcat进程
root        1585       1  0 14:02 pts/0    00:00:06 /usr/bin/java -Djava.util.logging.config.file=//usr/local/tomcat/conf/logging.properties -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djdk.tls.ephemeralDHKeySize=2048 -Djava.protocol.handler.pkgs=org.apache.catalina.webresources -Dorg.apache.catalina.security.SecurityListener.UMASK=0027 -Dignore.endorsed.dirs= -classpath //usr/local/tomcat/bin/bootstrap.jar://usr/local/tomcat/bin/tomcat-juli.jar -Dcatalina.base=//usr/local/tomcat -Dcatalina.home=//usr/local/tomcat -Djava.io.tmpdir=//usr/local/tomcat/temp org.apache.catalina.startup.Bootstrap start
root        1640    1455  0 14:22 pts/0    00:00:00 grep --color=auto tomcat

服务启动成功

5.5.访问tomcat的web页面

tomcat服务&&tomcat多实例部署_第6张图片

在部署tomcat过程中,网页存放目录在/usr/local/tomcat/webapps中,里面可以存放我们的网页,也可以放置app软件,而我们上述所访问到的页面则来自webapp目录中的ROOT目录中的项目

[root@tomcat tomcat]# ls
bin           conf             lib      logs    README.md      RUNNING.txt  webapps
BUILDING.txt  CONTRIBUTING.md  LICENSE  NOTICE  RELEASE-NOTES  temp         work
[root@tomcat tomcat]# cd webapps/
[root@tomcat webapps]# ls
docs  examples  host-manager  manager  ROOT

我们新建一个项目目录进行测试

[root@tomcat webapps]# mkdir test && cd test
[root@tomcat test]# vim index.jsp
[root@tomcat test]# cat index.jsp 


        test page<<span class="token operator">/</span>title>
<<span class="token operator">/</span>head>
<body>
        <<span class="token operator">%</span>
            out<span class="token punctuation">.</span>println<span class="token punctuation">(</span><span class="token string">"Hellow World"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token operator">%</span>>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>
<span class="token namespace">[root@tomcat test]</span><span class="token comment"># </span>
</code></pre> 
  <p><strong>访问test项目</strong></p> 
  <p>访问那个项目就在端口后加哪个项目名,不加则默认是ROOT<br> <a href="http://img.e-com-net.com/image/info8/f97a5081b35d49eaa7b2a47def7aa02a.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/f97a5081b35d49eaa7b2a47def7aa02a.jpg" alt="tomcat服务&&tomcat多实例部署_第7张图片" width="650" height="176" style="border:1px solid black;"></a></p> 
  <h4>5.6.尝试访问webapps目录中其他项目</h4> 
  <p><a href="http://img.e-com-net.com/image/info8/badd6658493d466191edb5d1fb047107.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/badd6658493d466191edb5d1fb047107.jpg" alt="tomcat服务&&tomcat多实例部署_第8张图片" width="650" height="127" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/db39b89b5bd0453ba794c6055598a818.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/db39b89b5bd0453ba794c6055598a818.jpg" alt="在这里插入图片描述" width="650" height="100"></a></p> 
  <p><a href="http://img.e-com-net.com/image/info8/301d0139a58440fd829dfdab47b82adc.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/301d0139a58440fd829dfdab47b82adc.jpg" alt="tomcat服务&&tomcat多实例部署_第9张图片" width="650" height="351" style="border:1px solid black;"></a></p> 
  <p>解决方法:</p> 
  <pre><code class="prism language-powershell">进入tomcat的conf目录中修改tomcat-user<span class="token punctuation">.</span>xml文件
<span class="token namespace">[root@tomcat tomcat]</span><span class="token comment"># cd conf/</span>
<span class="token namespace">[root@tomcat conf]</span><span class="token comment"># ls</span>
Catalina         catalina<span class="token punctuation">.</span>properties  jaspic-providers<span class="token punctuation">.</span>xml  logging<span class="token punctuation">.</span>properties  tomcat-users<span class="token punctuation">.</span>xml  web<span class="token punctuation">.</span>xml
catalina<span class="token punctuation">.</span>policy  context<span class="token punctuation">.</span>xml          jaspic-providers<span class="token punctuation">.</span>xsd  server<span class="token punctuation">.</span>xml          tomcat-users<span class="token punctuation">.</span>xsd
<span class="token namespace">[root@tomcat conf]</span><span class="token comment"># vim tomcat-users.xml</span>
<span class="token namespace">[root@tomcat conf]</span><span class="token comment"># tail -3 tomcat-users.xml</span>
<role rolename=<span class="token string">"manager-gui"</span><span class="token operator">/</span>>              <span class="token operator">/</span><span class="token operator">/</span>设置角色
<user username=<span class="token string">"tomcat"</span> password=<span class="token string">"tomcat123"</span> roles=<span class="token string">"manager-gui"</span><span class="token operator">/</span>>  <span class="token operator">/</span><span class="token operator">/</span>设置用户,密码,并指定角色
<<span class="token operator">/</span>tomcat-users>

进入tomcat的项目文件(webapps)中任选一个项目
<span class="token namespace">[root@tomcat conf]</span><span class="token comment"># cd ../webapps/</span>
<span class="token namespace">[root@tomcat webapps]</span><span class="token comment"># ls</span>
docs  examples  host-manager  manager  ROOT  test
<span class="token namespace">[root@tomcat webapps]</span><span class="token comment"># cd manager/</span>
<span class="token namespace">[root@tomcat manager]</span><span class="token comment"># ls</span>
css  images  index<span class="token punctuation">.</span>jsp  META-INF  status<span class="token punctuation">.</span>xsd  WEB-INF  xform<span class="token punctuation">.</span>xsl
<span class="token namespace">[root@tomcat manager]</span><span class="token comment"># cd META-INF/</span>
<span class="token namespace">[root@tomcat META-INF]</span><span class="token comment"># ls</span>
context<span class="token punctuation">.</span>xml
<span class="token namespace">[root@tomcat META-INF]</span><span class="token comment"># vim context.xml   //在allow中加入本机的ip网段</span>
<span class="token namespace">[root@tomcat META-INF]</span><span class="token comment"># grep -A1 '<Valve className=' context.xml</span>
  <Valve className=<span class="token string">"org.apache.catalina.valves.RemoteAddrValve"</span>
         allow=<span class="token string">"192\.168\.195\.\d+|127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"</span> <span class="token operator">/</span>>

<span class="token operator">/</span><span class="token operator">/</span>修改配置文件后重启服务
<span class="token namespace">[root@tomcat META-INF]</span><span class="token comment"># /usr/local/tomcat/bin/catalina.sh stop</span>
<span class="token keyword">Using</span> CATALINA_BASE:   <span class="token operator">/</span>usr/local/tomcat
<span class="token keyword">Using</span> CATALINA_HOME:   <span class="token operator">/</span>usr/local/tomcat
<span class="token keyword">Using</span> CATALINA_TMPDIR: <span class="token operator">/</span>usr/local/tomcat/temp
<span class="token keyword">Using</span> JRE_HOME:        <span class="token operator">/</span>usr
<span class="token keyword">Using</span> CLASSPATH:       <span class="token operator">/</span>usr/local/tomcat/bin/bootstrap<span class="token punctuation">.</span>jar:<span class="token operator">/</span>usr/local/tomcat/bin/tomcat-juli<span class="token punctuation">.</span>jar
<span class="token keyword">Using</span> CATALINA_OPTS:   
<span class="token namespace">[root@tomcat META-INF]</span><span class="token comment"># ss -antl</span>
State          Recv-Q         <span class="token function">Send-Q</span>                   Local Address:Port                   Peer Address:Port         
LISTEN         0              128                            0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:22                          0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:<span class="token operator">*</span>            
LISTEN         0              128                               <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:22                             <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:<span class="token operator">*</span>            
<span class="token namespace">[root@tomcat META-INF]</span><span class="token comment"># ps -ef | grep tomcat</span>
<span class="token function">ps</span> <span class="token operator">-</span>ef <span class="token punctuation">|</span> grep tomcat
root        1839    1455  0 15:06 pts/0    00:00:00 grep <span class="token operator">--</span>color=auto tomcat
<span class="token namespace">[root@tomcat META-INF]</span><span class="token comment"># /usr/local/tomcat/bin/catalina.sh start</span>
<span class="token keyword">Using</span> CATALINA_BASE:   <span class="token operator">/</span>usr/local/tomcat
<span class="token keyword">Using</span> CATALINA_HOME:   <span class="token operator">/</span>usr/local/tomcat
<span class="token keyword">Using</span> CATALINA_TMPDIR: <span class="token operator">/</span>usr/local/tomcat/temp
<span class="token keyword">Using</span> JRE_HOME:        <span class="token operator">/</span>usr
<span class="token keyword">Using</span> CLASSPATH:       <span class="token operator">/</span>usr/local/tomcat/bin/bootstrap<span class="token punctuation">.</span>jar:<span class="token operator">/</span>usr/local/tomcat/bin/tomcat-juli<span class="token punctuation">.</span>jar
<span class="token keyword">Using</span> CATALINA_OPTS:   
Tomcat started<span class="token punctuation">.</span>
<span class="token namespace">[root@tomcat META-INF]</span><span class="token comment"># ss -antl</span>
State          Recv-Q         <span class="token function">Send-Q</span>                      Local Address:Port                 Peer Address:Port        
LISTEN         0              128                               0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:22                        0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:<span class="token operator">*</span>           
LISTEN         0              1                      <span class="token punctuation">[</span>::ffff:127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1<span class="token punctuation">]</span>:8005                            <span class="token operator">*</span>:<span class="token operator">*</span>           
LISTEN         0              100                                     <span class="token operator">*</span>:8080                            <span class="token operator">*</span>:<span class="token operator">*</span>           
LISTEN         0              128                                  <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:22                           <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:<span class="token operator">*</span>           
<span class="token namespace">[root@tomcat META-INF]</span><span class="token comment"># ps -ef | grep tomcat</span>
<span class="token function">ps</span> <span class="token operator">-</span>ef <span class="token punctuation">|</span> grep tomcat
root        1852       1 11 15:06 pts/0    00:00:01 <span class="token operator">/</span>usr/bin/java <span class="token operator">-</span>Djava<span class="token punctuation">.</span>util<span class="token punctuation">.</span>logging<span class="token punctuation">.</span>config<span class="token punctuation">.</span>file=<span class="token operator">/</span>usr/local/tomcat/conf/logging<span class="token punctuation">.</span>properties <span class="token operator">-</span>Djava<span class="token punctuation">.</span>util<span class="token punctuation">.</span>logging<span class="token punctuation">.</span>manager=org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>juli<span class="token punctuation">.</span>ClassLoaderLogManager <span class="token operator">-</span>Djdk<span class="token punctuation">.</span>tls<span class="token punctuation">.</span>ephemeralDHKeySize=2048 <span class="token operator">-</span>Djava<span class="token punctuation">.</span>protocol<span class="token punctuation">.</span>handler<span class="token punctuation">.</span>pkgs=org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>webresources <span class="token operator">-</span>Dorg<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>security<span class="token punctuation">.</span>SecurityListener<span class="token punctuation">.</span>UMASK=0027 <span class="token operator">-</span>Dignore<span class="token punctuation">.</span>endorsed<span class="token punctuation">.</span>dirs= <span class="token operator">-</span>classpath <span class="token operator">/</span>usr/local/tomcat/bin/bootstrap<span class="token punctuation">.</span>jar:<span class="token operator">/</span>usr/local/tomcat/bin/tomcat-juli<span class="token punctuation">.</span>jar <span class="token operator">-</span>Dcatalina<span class="token punctuation">.</span>base=<span class="token operator">/</span>usr/local/tomcat <span class="token operator">-</span>Dcatalina<span class="token punctuation">.</span>home=<span class="token operator">/</span>usr/local/tomcat <span class="token operator">-</span>Djava<span class="token punctuation">.</span>io<span class="token punctuation">.</span>tmpdir=<span class="token operator">/</span>usr/local/tomcat/temp org<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>catalina<span class="token punctuation">.</span>startup<span class="token punctuation">.</span>Bootstrap <span class="token function">start</span>
root        1883    1455  0 15:06 pts/0    00:00:00 grep <span class="token operator">--</span>color=auto tomcat
</code></pre> 
  <p><strong>再次访问</strong><br> <a href="http://img.e-com-net.com/image/info8/20a955b5a4ea44abb9fe1792963fa25e.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/20a955b5a4ea44abb9fe1792963fa25e.jpg" alt="tomcat服务&&tomcat多实例部署_第10张图片" width="650" height="176" style="border:1px solid black;"></a></p> 
  <p><a href="http://img.e-com-net.com/image/info8/1ffd488e47f94570b0bdd0a0da6ce3ef.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/1ffd488e47f94570b0bdd0a0da6ce3ef.jpg" alt="tomcat服务&&tomcat多实例部署_第11张图片" width="650" height="341" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/ee35aec090bb4ad7831c369f2ea87eec.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/ee35aec090bb4ad7831c369f2ea87eec.jpg" alt="tomcat服务&&tomcat多实例部署_第12张图片" width="650" height="345" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/f0c87210ffda4d6899b46d19e75715c0.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/f0c87210ffda4d6899b46d19e75715c0.jpg" alt="tomcat服务&&tomcat多实例部署_第13张图片" width="650" height="101" style="border:1px solid black;"></a></p> 
  <p><strong>其他项目目录亦是如此,找到项目文件中的context.xml文件添加本机IP网段即可</strong><br> <a href="http://img.e-com-net.com/image/info8/3d1b80f42e8a48a4a6dd60dfb95a4536.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/3d1b80f42e8a48a4a6dd60dfb95a4536.jpg" alt="tomcat服务&&tomcat多实例部署_第14张图片" width="650" height="111" style="border:1px solid black;"></a><br> <a href="http://img.e-com-net.com/image/info8/59711be330ff4585b53736469ef0c215.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/59711be330ff4585b53736469ef0c215.jpg" alt="tomcat服务&&tomcat多实例部署_第15张图片" width="650" height="161" style="border:1px solid black;"></a></p> 
  <h3>6.tomcat多实例部署(在同一台主机上部署多个tomcat服务)</h3> 
  <h4>环境说明:</h4> 
  <table> 
   <thead> 
    <tr> 
     <th align="center">tomcat实例</th> 
     <th align="center">tomcat版本</th> 
     <th align="center">端口号</th> 
    </tr> 
   </thead> 
   <tbody> 
    <tr> 
     <td align="center">tomcat-1</td> 
     <td align="center">tomcat-9.0.80</td> 
     <td align="center">8005、8080、8443</td> 
    </tr> 
    <tr> 
     <td align="center">tomcat-2</td> 
     <td align="center">tomcat-9.0.80</td> 
     <td align="center">8006、8081、8444</td> 
    </tr> 
   </tbody> 
  </table> 
  <h4>6.1.配置前准备工作</h4> 
  <p><strong>关闭防火墙和seliunx</strong></p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@tomcat ~]</span><span class="token comment"># systemctl disable --now firewalld.service </span>
Removed <span class="token operator">/</span>etc/systemd/system/multi-user<span class="token punctuation">.</span>target<span class="token punctuation">.</span>wants/firewalld<span class="token punctuation">.</span>service<span class="token punctuation">.</span>
Removed <span class="token operator">/</span>etc/systemd/system/dbus-org<span class="token punctuation">.</span>fedoraproject<span class="token punctuation">.</span>FirewallD1<span class="token punctuation">.</span>service<span class="token punctuation">.</span>
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># setenforce 0</span>
</code></pre> 
  <p><strong>配置yum源,建议使用阿里云的centos8的源</strong></p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@tomcat ~]</span><span class="token comment"># rm -rf /etc/yum.repos.d/*</span>
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo</span>
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># yum clean all</span>
Updating Subscription Management repositories<span class="token punctuation">.</span>
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management<span class="token punctuation">.</span> You can use subscription-manager to register<span class="token punctuation">.</span>
12 files removed
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># yum makecache</span>
</code></pre> 
  <h4>6.3.安装java环境</h4> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@tomcat ~]</span><span class="token comment"># yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel wget vim</span>
</code></pre> 
  <h4>6.4.拉取tomcat软件包</h4> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@tomcat ~]</span><span class="token comment"># wget https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.80/bin/apache-tomcat-9.0.80.tar.gz</span>
<span class="token operator">--</span>2023-10-11 10:29:26-<span class="token operator">-</span>  https:<span class="token operator">/</span><span class="token operator">/</span>archive<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>org/dist/tomcat/tomcat-9/v9<span class="token punctuation">.</span>0<span class="token punctuation">.</span>80/bin/apache-tomcat-9<span class="token punctuation">.</span>0<span class="token punctuation">.</span>80<span class="token punctuation">.</span>tar<span class="token punctuation">.</span>gz
Resolving archive<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>org <span class="token punctuation">(</span>archive<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>org<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> 65<span class="token punctuation">.</span>108<span class="token punctuation">.</span>204<span class="token punctuation">.</span>189<span class="token punctuation">,</span> 2a01:4f9:1a:a084::2
Connecting to archive<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>org <span class="token punctuation">(</span>archive<span class="token punctuation">.</span>apache<span class="token punctuation">.</span>org<span class="token punctuation">)</span><span class="token punctuation">|</span>65<span class="token punctuation">.</span>108<span class="token punctuation">.</span>204<span class="token punctuation">.</span>189<span class="token punctuation">|</span>:443<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> connected<span class="token punctuation">.</span>
HTTP request sent<span class="token punctuation">,</span> awaiting response<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span> 200 OK
Length: 11692853 <span class="token punctuation">(</span>11M<span class="token punctuation">)</span> <span class="token namespace">[application/x-gzip]</span>
Saving to: ‘apache-tomcat-9<span class="token punctuation">.</span>0<span class="token punctuation">.</span>80<span class="token punctuation">.</span>tar<span class="token punctuation">.</span>gz’

apache-tomcat-9<span class="token punctuation">.</span>0<span class="token punctuation">.</span>80<span class="token punctuation">.</span>tar<span class="token punctuation">.</span>gz   100%<span class="token punctuation">[</span>===============================================><span class="token punctuation">]</span>  11<span class="token punctuation">.</span>15M   358KB/s    in 57s     

2023-10-11 10:30:25 <span class="token punctuation">(</span>199 KB/s<span class="token punctuation">)</span> <span class="token operator">-</span> ‘apache-tomcat-9<span class="token punctuation">.</span>0<span class="token punctuation">.</span>80<span class="token punctuation">.</span>tar<span class="token punctuation">.</span>gz’ saved <span class="token punctuation">[</span>11692853/11692853<span class="token punctuation">]</span>

<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># ls</span>
anaconda-ks<span class="token punctuation">.</span>cfg  apache-tomcat-9<span class="token punctuation">.</span>0<span class="token punctuation">.</span>80<span class="token punctuation">.</span>tar<span class="token punctuation">.</span>gz
</code></pre> 
  <h4>6.5.解压安装tomcat</h4> 
  <pre><code class="prism language-powershell"><span class="token operator">/</span><span class="token operator">/</span>安装tomcat-1
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># ls</span>
anaconda-ks<span class="token punctuation">.</span>cfg  apache-tomcat-9<span class="token punctuation">.</span>0<span class="token punctuation">.</span>80<span class="token punctuation">.</span>tar<span class="token punctuation">.</span>gz
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># tar xf apache-tomcat-9.0.80.tar.gz</span>
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># mv apache-tomcat-9.0.80 /usr/local/tomcat-1</span>
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># ll -d /usr/local/tomcat-1</span>
drwxr-xr-x<span class="token punctuation">.</span> 9 root root 220 Oct 11 10:32 <span class="token operator">/</span>usr/local/tomcat-1

<span class="token operator">/</span><span class="token operator">/</span>安装tomcat-2
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># ls</span>
anaconda-ks<span class="token punctuation">.</span>cfg  apache-tomcat-9<span class="token punctuation">.</span>0<span class="token punctuation">.</span>80<span class="token punctuation">.</span>tar<span class="token punctuation">.</span>gz
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># tar xf apache-tomcat-9.0.80.tar.gz</span>
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># mv apache-tomcat-9.0.80 /usr/local/tomcat-2</span>
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># ll -d /usr/local/tomcat-2</span>
drwxr-xr-x<span class="token punctuation">.</span> 9 root root 220 Oct 11 10:33 <span class="token operator">/</span>usr/local/tomcat-2
</code></pre> 
  <h4>6.6.更改端口号</h4> 
  <p><strong>修改tomcat-2的端口,防止与tomcat-1的端口冲突,tomcat-1保持默认</strong></p> 
  <pre><code class="prism language-powershell"><span class="token operator">/</span><span class="token operator">/</span>默认的tomcat关闭端口为8005,访问端口为8080,下列命令中我们只用将tomcat-2的关闭端口和访问端口更改为其他空闲端口即可

<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># cd /usr/local/tomcat-2/conf/</span>
<span class="token namespace">[root@tomcat conf]</span><span class="token comment"># ls</span>
catalina<span class="token punctuation">.</span>policy      context<span class="token punctuation">.</span>xml           jaspic-providers<span class="token punctuation">.</span>xsd  server<span class="token punctuation">.</span>xml        tomcat-users<span class="token punctuation">.</span>xsd
catalina<span class="token punctuation">.</span>properties  jaspic-providers<span class="token punctuation">.</span>xml  logging<span class="token punctuation">.</span>properties    tomcat-users<span class="token punctuation">.</span>xml  web<span class="token punctuation">.</span>xml
<span class="token namespace">[root@tomcat conf]</span><span class="token comment"># vim server.xml </span>
<span class="token namespace">[root@tomcat conf]</span><span class="token comment"># grep -A3 'Server port=' server.xml</span>
<Server port=<span class="token string">"8006"</span> shutdown=<span class="token string">"SHUTDOWN"</span>>
  <Listener className=<span class="token string">"org.apache.catalina.startup.VersionLoggerListener"</span> <span class="token operator">/</span>>
  <<span class="token operator">!</span><span class="token operator">--</span> Security listener<span class="token punctuation">.</span> Documentation at <span class="token operator">/</span>docs/config/listeners<span class="token punctuation">.</span>html
  <Listener className=<span class="token string">"org.apache.catalina.security.SecurityListener"</span> <span class="token operator">/</span>>
<span class="token namespace">[root@tomcat conf]</span><span class="token comment"># grep -A3 '<Connector port=' server.xml</span>
    <Connector port=<span class="token string">"8081"</span> protocol=<span class="token string">"HTTP/1.1"</span>
               connectionTimeout=<span class="token string">"20000"</span>
               redirectPort=<span class="token string">"8444"</span>
               maxParameterCount=<span class="token string">"1000"</span>
</code></pre> 
  <h4>6.7.开启服务</h4> 
  <pre><code class="prism language-powershell"><span class="token operator">/</span><span class="token operator">/</span>开启tomcat-1服务
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># /usr/local/tomcat-1/bin/catalina.sh start</span>
<span class="token keyword">Using</span> CATALINA_BASE:   <span class="token operator">/</span>usr/local/tomcat-1
<span class="token keyword">Using</span> CATALINA_HOME:   <span class="token operator">/</span>usr/local/tomcat-1
<span class="token keyword">Using</span> CATALINA_TMPDIR: <span class="token operator">/</span>usr/local/tomcat-1/temp
<span class="token keyword">Using</span> JRE_HOME:        <span class="token operator">/</span>usr
<span class="token keyword">Using</span> CLASSPATH:       <span class="token operator">/</span>usr/local/tomcat-1/bin/bootstrap<span class="token punctuation">.</span>jar:<span class="token operator">/</span>usr/local/tomcat-1/bin/tomcat-juli<span class="token punctuation">.</span>jar
<span class="token keyword">Using</span> CATALINA_OPTS:   
Tomcat started<span class="token punctuation">.</span>
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># ss -antl</span>
State          Recv-Q         <span class="token function">Send-Q</span>                      Local Address:Port                 Peer Address:Port        
LISTEN         0              128                               0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:22                        0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:<span class="token operator">*</span>           
LISTEN         0              1                      <span class="token punctuation">[</span>::ffff:127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1<span class="token punctuation">]</span>:8005                            <span class="token operator">*</span>:<span class="token operator">*</span>           
LISTEN         0              100                                     <span class="token operator">*</span>:8080                            <span class="token operator">*</span>:<span class="token operator">*</span>           
LISTEN         0              128                                  <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:22                           <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:<span class="token operator">*</span>

<span class="token operator">/</span><span class="token operator">/</span>开启tomcat-2服务
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># /usr/local/tomcat-2/bin/catalina.sh start</span>
<span class="token keyword">Using</span> CATALINA_BASE:   <span class="token operator">/</span>usr/local/tomcat-2
<span class="token keyword">Using</span> CATALINA_HOME:   <span class="token operator">/</span>usr/local/tomcat-2
<span class="token keyword">Using</span> CATALINA_TMPDIR: <span class="token operator">/</span>usr/local/tomcat-2/temp
<span class="token keyword">Using</span> JRE_HOME:        <span class="token operator">/</span>usr
<span class="token keyword">Using</span> CLASSPATH:       <span class="token operator">/</span>usr/local/tomcat-2/bin/bootstrap<span class="token punctuation">.</span>jar:<span class="token operator">/</span>usr/local/tomcat-2/bin/tomcat-juli<span class="token punctuation">.</span>jar
<span class="token keyword">Using</span> CATALINA_OPTS:   
Tomcat started<span class="token punctuation">.</span>
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># ss -antl</span>
State          Recv-Q         <span class="token function">Send-Q</span>                      Local Address:Port                 Peer Address:Port        
LISTEN         0              128                               0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:22                        0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0:<span class="token operator">*</span>           
LISTEN         0              1                      <span class="token punctuation">[</span>::ffff:127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1<span class="token punctuation">]</span>:8005                            <span class="token operator">*</span>:<span class="token operator">*</span>           
LISTEN         0              1                      <span class="token punctuation">[</span>::ffff:127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1<span class="token punctuation">]</span>:8006                            <span class="token operator">*</span>:<span class="token operator">*</span>           
LISTEN         0              100                                     <span class="token operator">*</span>:8080                            <span class="token operator">*</span>:<span class="token operator">*</span>           
LISTEN         0              100                                     <span class="token operator">*</span>:8081                            <span class="token operator">*</span>:<span class="token operator">*</span>           
LISTEN         0              128                                  <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:22                           <span class="token punctuation">[</span>::<span class="token punctuation">]</span>:<span class="token operator">*</span>
</code></pre> 
  <h4>6.8.配置多实例测试网页</h4> 
  <pre><code class="prism language-powershell"><span class="token operator">/</span><span class="token operator">/</span>配置tomcat-1的测试网页index<span class="token punctuation">.</span>jsp
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># cd /usr/local/tomcat-1/webapps/</span>
<span class="token namespace">[root@tomcat webapps]</span><span class="token comment"># mkdir test && cd test</span>
<span class="token namespace">[root@tomcat test]</span><span class="token comment"># vim index.jsp</span>
<span class="token namespace">[root@tomcat test]</span><span class="token comment"># cat index.jsp</span>
<html>
<head>
     <title>test page<<span class="token operator">/</span>title>
<<span class="token operator">/</span>head>
<body>
     <<span class="token operator">%</span>
        out<span class="token punctuation">.</span>println<span class="token punctuation">(</span><span class="token string">"my name is tomcat-1"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
     <span class="token operator">%</span>>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>

<span class="token operator">/</span><span class="token operator">/</span>配置tomcat-2的测试页面
<span class="token namespace">[root@tomcat ~]</span><span class="token comment"># cd /usr/local/tomcat-2/webapps/</span>
<span class="token namespace">[root@tomcat webapps]</span><span class="token comment"># mkdir test && cd test</span>
<span class="token namespace">[root@tomcat test]</span><span class="token comment"># vim index.jsp</span>
<span class="token namespace">[root@tomcat test]</span><span class="token comment"># cat index.jsp</span>
<html>
<head>
     <title>test page<<span class="token operator">/</span>title>
<<span class="token operator">/</span>head>
<body>
     <<span class="token operator">%</span>
        out<span class="token punctuation">.</span>println<span class="token punctuation">(</span><span class="token string">"my name is tomcat-2"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
     <span class="token operator">%</span>>
<<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>
</code></pre> 
  <h4>6.9.访问测试</h4> 
  <p>访问tomcat-1的8080端口<br> <a href="http://img.e-com-net.com/image/info8/8f12e14b7d2c4d94a41f5d814d968c57.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/8f12e14b7d2c4d94a41f5d814d968c57.jpg" alt="tomcat服务&&tomcat多实例部署_第16张图片" width="650" height="348" style="border:1px solid black;"></a></p> 
  <p>访问tomcat-2的8081端口<br> <a href="http://img.e-com-net.com/image/info8/70b1100f70f54caca73da64ecdfec16b.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/70b1100f70f54caca73da64ecdfec16b.jpg" alt="tomcat服务&&tomcat多实例部署_第17张图片" width="650" height="344" style="border:1px solid black;"></a></p> 
  <h3>总结:</h3> 
  <p>Tomcat是一个可靠、轻量级、跨平台的Java We关闭b应用服务器,适用于许多中小型应用程序。它的工作原理基于Java Servlet和JSP规范,通过将请求分发给相应的Servlet或JSP来处理HTTP请求。虽然Tomcat在一些高级功能方面可能相对有限,但它作为一个开源项目,提供了一个可靠的基础,使得Java Web应用程序可以在其中运行。</p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1712614259835351040"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(tomcat,java,运维,linux)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1773603578330546176.htm"
                           title="Flink中的SQL Client和SQL Gateway" target="_blank">Flink中的SQL Client和SQL Gateway</a>
                        <span class="text-muted">BigDataMLApplication</span>
<a class="tag" taget="_blank" href="/search/flink/1.htm">flink</a><a class="tag" taget="_blank" href="/search/flink/1.htm">flink</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/gateway/1.htm">gateway</a>
                        <div>Flink中的SQLClient和SQLGateway对比目录定义基本原理适用场景主要区别常用运维命令示例官方链接正文1.定义SQLClient:FlinkSQLClient是一种用于提交和执行FlinkSQL语句的命令行界面或图形界面工具。SQLGateway:FlinkSQLGateway是一个独立的服务,它允许客户端通过RESTfulAPI将SQL查询提交到Flink集群。2.基本原理SQL</div>
                    </li>
                    <li><a href="/article/1773602697044361216.htm"
                           title="浪潮 M5系列服务器IPMI无法监控存储RAID卡问题." target="_blank">浪潮 M5系列服务器IPMI无法监控存储RAID卡问题.</a>
                        <span class="text-muted">Songxwn</span>
<a class="tag" taget="_blank" href="/search/%E7%A1%AC%E4%BB%B6%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">硬件服务器</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>简介浪潮的M5代服务器,可能有WebBMC无法查看存储RAID/SAS卡状态的情况,可以通过以下方式修改。修改完成后重启BMC即可生效。ESXiIPMITools使用:https://songxwn.com/ESXi8_IPMI/(Linux也可以直接使用)Linux/ESXiIPMITool下载:https://songxwn.com/file/ipmitoolWindows下载:https:/</div>
                    </li>
                    <li><a href="/article/1773597535798099968.htm"
                           title="unblock with ‘mysqladmin flush-hosts‘ 解决方法" target="_blank">unblock with ‘mysqladmin flush-hosts‘ 解决方法</a>
                        <span class="text-muted">祈祷平安,加油</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98/1.htm">数据库常见问题</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>MySqlHostisblockedbecauseofmanyconnectionerrors;unblockwith'mysqladminflush-hosts'解决方法环境:linux,mysql5.5.21错误:Hostisblockedbecauseofmanyconnectionerrors;unblockwith'mysqladminflush-hosts'原因:同一个ip在短时间内产</div>
                    </li>
                    <li><a href="/article/1773582305621770240.htm"
                           title="华为OD机试 - 单向链表中间节点(Java & JS & Python & C & C++)" target="_blank">华为OD机试 - 单向链表中间节点(Java & JS & Python & C & C++)</a>
                        <span class="text-muted">华为OD题库</span>
<a class="tag" taget="_blank" href="/search/%E5%8D%8E%E4%B8%BAod/1.htm">华为od</a><a class="tag" taget="_blank" href="/search/%E9%93%BE%E8%A1%A8/1.htm">链表</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>须知哈喽,本题库完全免费,收费是为了防止被爬,大家订阅专栏后可以私信联系退款。感谢支持文章目录须知题目描述输出描述解析代码题目描述给定一个单链表L,请编写程序输出L中间结点保存的数据。如果有两个中间结点,则输出第二个中间结点保存的数据。例如:给定L为1→7→5,则输出应该为7;给定L为1→2→3→4,则输出应该为3;输入描述每个输入包含1个测试用例。每个测试用例:第一行给出链表首结点的地址、结点总</div>
                    </li>
                    <li><a href="/article/1773578026081124352.htm"
                           title="学习JavaEE的日子 Day32 线程池" target="_blank">学习JavaEE的日子 Day32 线程池</a>
                        <span class="text-muted">A 北枝</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0JavaEE/1.htm">学习JavaEE</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/java-ee/1.htm">java-ee</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0/1.htm">线程池</a>
                        <div>Day32线程池1.引入一个线程完成一项任务所需时间为:创建线程时间-Time1线程中执行任务的时间-Time2销毁线程时间-Time32.为什么需要线程池(重要)线程池技术正是关注如何缩短或调整Time1和Time3的时间,从而提高程序的性能。项目中可以把Time1,T3分别安排在项目的启动和结束的时间段或者一些空闲的时间段线程池不仅调整Time1,Time3产生的时间段,而且它还显著减少了创建</div>
                    </li>
                    <li><a href="/article/1773552600176721920.htm"
                           title="1.计算机处理器架构+嵌入式处理器架构及知识" target="_blank">1.计算机处理器架构+嵌入式处理器架构及知识</a>
                        <span class="text-muted">vv 啊</span>
<a class="tag" taget="_blank" href="/search/arm-linux%E5%AD%A6%E4%B9%A0/1.htm">arm-linux学习</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a>
                        <div>目录一:x86-64处理器架构二:Intel80386处理器(i386)1.i3862.i686三:嵌入式Linux知识:1.MinGW2.GNU计划2.1GNU工具链概述此次只分享英特尔和ADM处理器有关于x86的架构,至于嵌入式处理器架构请查看https://en.wikipedia.org/wiki/List_of_ARM_processors一:x86-64处理器架构x86-64,也称为x</div>
                    </li>
                    <li><a href="/article/1773528182234873856.htm"
                           title="springboot集成logback-spring.xml文件" target="_blank">springboot集成logback-spring.xml文件</a>
                        <span class="text-muted">RT_0114</span>
<a class="tag" taget="_blank" href="/search/SpringBoot/1.htm">SpringBoot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/logback/1.htm">logback</a>
                        <div>彩色日志日志分debug和error文件输出,方便开发人员运维日志限制最大保管天数日志限制总量大小占用量GB日志限制单个文件大小MB日志显示最大保留天数屏蔽没用的日志${CONSOLE_LOG_PATTERN}${log.path}/debug.log${log.path}/%d{yyyy-MM-dd,aux}/debug.%d{yyyy-MM-dd}.%i.log.gz1024MB50GB365</div>
                    </li>
                    <li><a href="/article/1773510684068347904.htm"
                           title="请简单介绍一下Shiro框架是什么?Shiro在Java安全领域的主要作用是什么?Shiro主要提供了哪些安全功能?" target="_blank">请简单介绍一下Shiro框架是什么?Shiro在Java安全领域的主要作用是什么?Shiro主要提供了哪些安全功能?</a>
                        <span class="text-muted">AaronWang94</span>
<a class="tag" taget="_blank" href="/search/shiro/1.htm">shiro</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>请简单介绍一下Shiro框架是什么?Shiro框架是一个强大且灵活的开源安全框架,为Java应用程序提供了全面的安全解决方案。它主要用于身份验证、授权、加密和会话管理等功能,可以轻松地集成到任何JavaWeb应用程序中,并提供了易于理解和使用的API,使开发人员能够快速实现安全特性。Shiro的核心组件包括Subject、SecurityManager和Realms。Subject代表了当前与应用</div>
                    </li>
                    <li><a href="/article/1773505900905037824.htm"
                           title="linux基础命令(一)" target="_blank">linux基础命令(一)</a>
                        <span class="text-muted">运维搬运工</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                        <div>Linux基础命令1、设置主机名1.1、hostname查看主机名[root@ansible~]#cat/etc/hostnameansible或[root@ansible~]#hostnameansible注意:主机名中不允许使用下划线“_”,可以用短横线“-”1.2、hostname临时修改主机名#临时修改直接修改的是内存中的,重启会失效[root@ansible~]#hostnameansi</div>
                    </li>
                    <li><a href="/article/1773504260386914304.htm"
                           title="通俗易懂:什么是Java虚拟机(JVM)?它的主要作用是什么?" target="_blank">通俗易懂:什么是Java虚拟机(JVM)?它的主要作用是什么?</a>
                        <span class="text-muted">大龄下岗程序员</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                        <div>Java虚拟机(JavaVirtualMachine,JVM)是一种软件实现的抽象计算机,它负责执行Java字节码(Bytecode)。Java程序并不是直接在物理计算机上运行,而是先由Java编译器将源代码编译成与平台无关的字节码,然后由JVM负责读取字节码并在实际硬件架构上运行。JVM的主要作用包括以下几个方面:1.跨平台性-JVM是Java语言“一次编写,到处运行”(WriteOnce,Ru</div>
                    </li>
                    <li><a href="/article/1773495574226599936.htm"
                           title="3、JavaWeb-Ajax/Axios-前端工程化-Element" target="_blank">3、JavaWeb-Ajax/Axios-前端工程化-Element</a>
                        <span class="text-muted">所谓远行Misnearch</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/JavaWeb/1.htm">JavaWeb</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/ajax/1.htm">ajax</a><a class="tag" taget="_blank" href="/search/elementui/1.htm">elementui</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a>
                        <div>P34Ajax介绍Ajax:AsynchroousJavaScriptAndXML,异步的JS和XMLJS网页动作,XML一种标记语言,存储数据,作用:数据交换:通过Ajax给服务器发送请求,并获取服务器响应的数据异步交互:在不重新加载整个页面的情况下,与服务器交换数据并实现更新部分网页的技术,例如:搜索联想、用户名是否可用的校验等等。同步与异步:同步:服务器在处理中客户端要处于等待状态,输入域名</div>
                    </li>
                    <li><a href="/article/1773489909345091584.htm"
                           title="docker基础(一)" target="_blank">docker基础(一)</a>
                        <span class="text-muted">运维搬运工</span>
<a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8-docker/1.htm">容器-docker</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>相关概念介绍Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖到一个可移植的容器中,然后发布到任何流行的linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,互相之间不会有任何接口。Docker有几个重要概念:dockerfile,配置文件,用来生成dockerimagedockerimage,交付部署的最小单元docker命令与API,定义命令与接口,支持第三方系统集</div>
                    </li>
                    <li><a href="/article/1773471029155397632.htm"
                           title="网络安全(黑客)——自学2024" target="_blank">网络安全(黑客)——自学2024</a>
                        <span class="text-muted">小言同学喜欢挖漏洞</span>
<a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8/1.htm">信息安全</a><a class="tag" taget="_blank" href="/search/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/1.htm">渗透测试</a>
                        <div>01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。02怎样规划网络安全如果你是一</div>
                    </li>
                    <li><a href="/article/1773470776930926592.htm"
                           title="黑客(网络安全)技术自学30天" target="_blank">黑客(网络安全)技术自学30天</a>
                        <span class="text-muted">一个迷人的黑客</span>
<a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8/1.htm">信息安全</a><a class="tag" taget="_blank" href="/search/%E6%B8%97%E9%80%8F%E6%B5%8B%E8%AF%95/1.htm">渗透测试</a>
                        <div>01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。02怎样规划网络安全如果你是一</div>
                    </li>
                    <li><a href="/article/1773436409693143040.htm"
                           title="枚举使用笔记" target="_blank">枚举使用笔记</a>
                        <span class="text-muted">万变不离其宗_8</span>
<a class="tag" taget="_blank" href="/search/%E9%A1%B9%E7%9B%AE%E7%AC%94%E8%AE%B0/1.htm">项目笔记</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>1.java枚举怎么放在方法上面的注释里面/***保存*@paramuserId用户id*@paramtype见枚举{@linkcom.common.enums.TypeEnum}*@return*/voidsave(LonguserId,Stringtype);</div>
                    </li>
                    <li><a href="/article/1773413750980804608.htm"
                           title="linux安装docker及docker-compose 部署spring boot项目" target="_blank">linux安装docker及docker-compose 部署spring boot项目</a>
                        <span class="text-muted">时而有事儿</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a>
                        <div>linux系统环境:centos5.14本篇描述的是在centos系统版本下安装docker,如果是ubuntu版本,请看这篇文章:linuxubuntu20安装docker和docker-compose-CSDN博客正文:安装docker和docker-compose安装docker---------运行命名等待安装完成遇到选择直接输入yyuminstall-yyum-utilsdevice-m</div>
                    </li>
                    <li><a href="/article/1773406951456178176.htm"
                           title="检测usb口HotPlug-netlink" target="_blank">检测usb口HotPlug-netlink</a>
                        <span class="text-muted">cany1000</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>为了完成内核空间与用户空间通信,Linux提供了基于Socket的NetLink通信机制。SELinux,Linux系统的防火墙分为内核态的netfilter和用户态的iptables,netfilter与iptables的数据交换就是通过Netlink机制完成。下面看一个检测usb口的例子:s32InitUsbHotPlug(void){s32nSockFd=0;//套接字地址structsoc</div>
                    </li>
                    <li><a href="/article/1773403175781466112.htm"
                           title="Python dict字符串转json对象,小数精度丢失问题" target="_blank">Python dict字符串转json对象,小数精度丢失问题</a>
                        <span class="text-muted">朝如青丝 暮成雪</span>
<a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>一前言JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式,dict是Python的一种数据格式。本篇介绍一个float数据转换时精度丢失的案例。二问题描述importjsontest_str1='{"π":3.1415926535897932384626433832795028841971}'test_str2='{"value":10.00000}'print</div>
                    </li>
                    <li><a href="/article/1773382031552610304.htm"
                           title="java实体中返回前端的double类型四舍五入(格式化)" target="_blank">java实体中返回前端的double类型四舍五入(格式化)</a>
                        <span class="text-muted">婲落ヽ紅顏誶</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>根据业务,需要通过后端给前端返回部分double类型的数值,一般需要保留两位小数,使用jackson转换对象packagecom.ruoyi.common.core.config;importcom.fasterxml.jackson.core.JsonGenerator;importcom.fasterxml.jackson.databind.JsonSerializer;importcom.f</div>
                    </li>
                    <li><a href="/article/1773377374927257600.htm"
                           title="Linux学习系列之vim编辑器(一)" target="_blank">Linux学习系列之vim编辑器(一)</a>
                        <span class="text-muted">llibertyll</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>vi编辑器的操作模式输入模式—aio等—>命令模式<—:键—末行模式从输入/末行模式切换到命令模式都是需要按ESC键注:a光标后输入,i光标前输入,o直接向下加一行输入,O向上加一行输入在vi编辑器中光标的移动(命令行模式下)键组合(命令)光标的移动$光标移动到当前行的结尾0(零)光标移动到当前行的开始GG光标移动到最后一行gg光标移动到第一行在命令行模式下删除与复制的操作键组合(命令)含义dd删</div>
                    </li>
                    <li><a href="/article/1773359500359696384.htm"
                           title="Java中HashMap底层数据结构及主要参数?" target="_blank">Java中HashMap底层数据结构及主要参数?</a>
                        <span class="text-muted">山间漫步人生路</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>在Java中,HashMap的底层数据结构主要基于数组和链表,同时在Java8及以后的版本中,当链表长度超过一定阈值时,链表会转换为红黑树来优化性能。这种结构结合了数组和链表的优点,既提供了快速的随机访问,又允许动态地扩展存储桶的大小。HashMap的主要参数包括:初始容量(InitialCapacity):这是HashMap在创建时设定的桶数组的大小。默认值为16。这个值可以根据预计存储的键值对</div>
                    </li>
                    <li><a href="/article/1773351821931249664.htm"
                           title="Java学习笔记01" target="_blank">Java学习笔记01</a>
                        <span class="text-muted">.wsy.</span>
<a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%B8%B8/1.htm">日常</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>1.1Java简介Java的前身是Oak,詹姆斯·高斯林是java之父。1.2Java体系Java是一种与平台无关的语言,其源代码可以被编译成一种结构中立的中间文件(.class,字节码文件)于Java虚拟机上运行。1.2.3专有名词JDK提供编译、运行Java程序所需要的种种工具及资源。JRE是运行Java所依赖的环境的集合。JVM是一个虚构出来的计算机,通过在实际的计算机上仿真模拟各种计算机功</div>
                    </li>
                    <li><a href="/article/1773347164047605760.htm"
                           title="自学黑客(网络安全)技术——2024最新" target="_blank">自学黑客(网络安全)技术——2024最新</a>
                        <span class="text-muted">九九归二</span>
<a class="tag" taget="_blank" href="/search/web%E5%AE%89%E5%85%A8/1.htm">web安全</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%AE%89%E5%85%A8/1.htm">网络安全</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%AE%89%E5%85%A8/1.htm">信息安全</a>
                        <div>01什么是网络安全网络安全可以基于攻击和防御视角来分类,我们经常听到的“红队”、“渗透测试”等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。无论网络、Web、移动、桌面、云等哪个领域,都有攻与防两面性,例如Web安全技术,既有Web渗透,也有Web防御技术(WAF)。作为一个合格的网络安全工程师,应该做到攻守兼备,毕竟知己知彼,才能百战百胜。02怎样规划网络安全如果你是一</div>
                    </li>
                    <li><a href="/article/1773340995031728128.htm"
                           title="Java回溯知识点(含面试大厂题和源码)" target="_blank">Java回溯知识点(含面试大厂题和源码)</a>
                        <span class="text-muted">一成码农</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>回溯算法是一种通过遍历所有可能的候选解来寻找所有解的算法,如果候选解被确认不是一个解(或至少不是最后一个解),回溯算法会通过在上一步进行一些变化来丢弃这个解,即“回溯”并尝试另一个候选解。回溯法通常用递归方法来实现,在解决排列、组合、选择问题时非常有效。回溯算法的核心要点:路径:也就是已经做出的选择。选择列表:也就是你当前可以做的选择。结束条件:也就是到达决策树底层,无法再做出选择的条件。回溯算法</div>
                    </li>
                    <li><a href="/article/1773337745800888320.htm"
                           title="Azkaban各种类型的Job编写" target="_blank">Azkaban各种类型的Job编写</a>
                        <span class="text-muted">__元昊__</span>

                        <div>一、概述原生的Azkaban支持的plugin类型有以下这些:command:Linuxshell命令行任务gobblin:通用数据采集工具hadoopJava:运行hadoopMR任务java:原生java任务hive:支持执行hiveSQLpig:pig脚本任务spark:spark任务hdfsToTeradata:把数据从hdfs导入TeradatateradataToHdfs:把数据从Te</div>
                    </li>
                    <li><a href="/article/1773326395645165568.htm"
                           title="java基础相关面试题详细总结" target="_blank">java基础相关面试题详细总结</a>
                        <span class="text-muted">。。。。。96</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>1.Java中的数据类型有哪些?答:Java中的数据类型包括基本数据类型(如整数、浮点数、字符等)和引用数据类型(如类、接口、数组等)。2.什么是面向对象编程(OOP)?答:面向对象编程是一种编程范式,它将数据和对数据的操作封装在一起,形成对象。通过对象之间的交互来实现程序的功能。3.解释类和对象的关系。答:类是对象的抽象描述,而对象是类的具体实例。一个类可以创建多个对象,每个对象都具有类中定义的</div>
                    </li>
                    <li><a href="/article/1773302984202059776.htm"
                           title="Linux初学(十)shell脚本" target="_blank">Linux初学(十)shell脚本</a>
                        <span class="text-muted">王依硕</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>一、for循环1.1循环的格式for变量in列表do代码代码....done循环的逻辑:将列表中的每个元素逐一赋值给变量每赋值一次,do和done之间的代码就会执行一次1.2列表的生成方式方法1:直接给出列表元素【用空格分隔多个元素】133129hahabaidu方法2:用通配符来生成元素/home/a*方法3:用命令来生成元素ls/etc/方法4:用{}展开的形式生成元素{3..7}{a..e}</div>
                    </li>
                    <li><a href="/article/1773259809336918016.htm"
                           title="Ubuntu下安装Chrome浏览器(简单,使用)" target="_blank">Ubuntu下安装Chrome浏览器(简单,使用)</a>
                        <span class="text-muted">Starry-sky(jing)</span>
<a class="tag" taget="_blank" href="/search/%5Blinux%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E7%AC%94%E8%AE%B0%5D/1.htm">[linux操作系统笔记]</a><a class="tag" taget="_blank" href="/search/chrome/1.htm">chrome</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>下载安装GoogleChrome浏览器deb包极速下载:下载链接32位wgethttps://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb64位wgethttps://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb安装sudodpk</div>
                    </li>
                    <li><a href="/article/1773256158274977792.htm"
                           title="javascript 日期转换为时间戳,时间戳转换为日期的函数" target="_blank">javascript 日期转换为时间戳,时间戳转换为日期的函数</a>
                        <span class="text-muted">cdcdhj</span>
<a class="tag" taget="_blank" href="/search/javascript%E5%AD%A6%E4%B9%A0%E6%97%A5%E8%AE%B0/1.htm">javascript学习日记</a><a class="tag" taget="_blank" href="/search/javascript/1.htm">javascript</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ecmascript/1.htm">ecmascript</a>
                        <div>日期转化为时间戳,主要用valueOf()来进行转化为毫秒时间戳,getTime()IOS系统无法解析转换,所以都有valueOf()letgetTimestampOrDate=function(timestamp){lettimeStamp='';constregex=/^\d{4}(-|\/)\d{2}(-|\/)\d{2}$/;constregex2=/^\d{4}(-|\/)\d{2}(-</div>
                    </li>
                    <li><a href="/article/1773255151038038016.htm"
                           title="Java面试题:解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用,Java中的多线程是如何实现的,Java垃圾回收机制的基本原理,并讨论常见的垃圾回收算法" target="_blank">Java面试题:解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用,Java中的多线程是如何实现的,Java垃圾回收机制的基本原理,并讨论常见的垃圾回收算法</a>
                        <span class="text-muted">杰哥在此</span>
<a class="tag" taget="_blank" href="/search/Java%E7%B3%BB%E5%88%97/1.htm">Java系列</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a>
                        <div>Java内存模型与多线程的深入探讨在Java的世界里,内存模型和多线程是开发者必须掌握的核心知识点。它们不仅关系到程序的性能和稳定性,还直接影响到系统的可扩展性和可靠性。下面,我将通过三个面试题,带领大家深入理解Java内存模型、多线程以及并发编程的相关原理和实践。面试题一:请解释JVM的内存结构,并描述堆、栈、方法区在内存结构中的角色和作用。关注点:JVM内存结构的基本组成堆、栈、方法区的功能和</div>
                    </li>
                                <li><a href="/article/74.htm"
                                       title="sql统计相同项个数并按名次显示" target="_blank">sql统计相同项个数并按名次显示</a>
                                    <span class="text-muted">朱辉辉33</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>现在有如下这样一个表: 
A表 
ID Name time 
------------------------------ 
0001 aaa 2006-11-18 
0002 ccc 2006-11-18 
0003 eee 2006-11-18 
0004 aaa 2006-11-18 
0005 eee 2006-11-18 
0004 aaa 2006-11-18 
0002 ccc 20</div>
                                </li>
                                <li><a href="/article/201.htm"
                                       title="Android+Jquery Mobile学习系列-目录" target="_blank">Android+Jquery Mobile学习系列-目录</a>
                                    <span class="text-muted">白糖_</span>
<a class="tag" taget="_blank" href="/search/JQuery+Mobile/1.htm">JQuery Mobile</a>
                                    <div>最近在研究学习基于Android的移动应用开发,准备给家里人做一个应用程序用用。向公司手机移动团队咨询了下,觉得使用Android的WebView上手最快,因为WebView等于是一个内置浏览器,可以基于html页面开发,不用去学习Android自带的七七八八的控件。然后加上Jquery mobile的样式渲染和事件等,就能非常方便的做动态应用了。 
  
从现在起,往后一段时间,我打算</div>
                                </li>
                                <li><a href="/article/328.htm"
                                       title="如何给线程池命名" target="_blank">如何给线程池命名</a>
                                    <span class="text-muted">daysinsun</span>
<a class="tag" taget="_blank" href="/search/%E7%BA%BF%E7%A8%8B%E6%B1%A0/1.htm">线程池</a>
                                    <div>        在系统运行后,在线程快照里总是看到线程池的名字为pool-xx,这样导致很不好定位,怎么给线程池一个有意义的名字呢。参照ThreadPoolExecutor类的ThreadFactory,自己实现ThreadFactory接口,重写newThread方法即可。参考代码如下: 
    
public class Named</div>
                                </li>
                                <li><a href="/article/455.htm"
                                       title="IE 中"HTML Parsing Error:Unable to modify the parent container element before the" target="_blank">IE 中"HTML Parsing Error:Unable to modify the parent container element before the</a>
                                    <span class="text-muted">周凡杨</span>
<a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/%E8%A7%A3%E6%9E%90/1.htm">解析</a><a class="tag" taget="_blank" href="/search/error/1.htm">error</a><a class="tag" taget="_blank" href="/search/readyState/1.htm">readyState</a>
                                    <div>  
错误:  IE   中"HTML Parsing Error:Unable to modify the parent container element before the child element is closed"      
  
  
现象:  同事之间几个IE 测试情况下,有的报这个错,有的不报。经查询资料后,可归纳以下原因。</div>
                                </li>
                                <li><a href="/article/582.htm"
                                       title="java上传" target="_blank">java上传</a>
                                    <span class="text-muted">g21121</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>我们在做web项目中通常会遇到上传文件的情况,用struts等框架的会直接用的自带的标签和组件,今天说的是利用servlet来完成上传。 
我们这里利用到commons-fileupload组件,相关jar包可以取apache官网下载:http://commons.apache.org/ 
下面是servlet的代码: 
//定义一个磁盘文件工厂
DiskFileItemFactory fact</div>
                                </li>
                                <li><a href="/article/709.htm"
                                       title="SpringMVC配置学习" target="_blank">SpringMVC配置学习</a>
                                    <span class="text-muted">510888780</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/mvc/1.htm">mvc</a>
                                    <div>spring MVC配置详解 
现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了。不过要想灵活运用Spring MVC来应对大多数的Web开发,就必须要掌握它的配置及原理。 
 
  一、Spring MVC环境搭建:(Spring 2.5.6 + Hi</div>
                                </li>
                                <li><a href="/article/836.htm"
                                       title="spring mvc-jfreeChart 柱图(1)" target="_blank">spring mvc-jfreeChart 柱图(1)</a>
                                    <span class="text-muted">布衣凌宇</span>
<a class="tag" taget="_blank" href="/search/jfreechart/1.htm">jfreechart</a>
                                    <div>第一步:下载jfreeChart包,注意是jfreeChart文件lib目录下的,jcommon-1.0.23.jar和jfreechart-1.0.19.jar两个包即可; 
第二步:配置web.xml; 
web.xml代码如下 
<servlet> 
    <servlet-name>jfreechart</servlet-nam</div>
                                </li>
                                <li><a href="/article/963.htm"
                                       title="我的spring学习笔记13-容器扩展点之PropertyPlaceholderConfigurer" target="_blank">我的spring学习笔记13-容器扩展点之PropertyPlaceholderConfigurer</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/Spring3/1.htm">Spring3</a>
                                    <div>PropertyPlaceholderConfigurer是个bean工厂后置处理器的实现,也就是BeanFactoryPostProcessor接口的一个实现。关于BeanFactoryPostProcessor和BeanPostProcessor类似。我会在其他地方介绍。PropertyPlaceholderConfigurer可以将上下文(配置文件)中的属性值放在另一个单独的标准java P</div>
                                </li>
                                <li><a href="/article/1090.htm"
                                       title="java 线程池使用 Runnable&Callable&Future" target="_blank">java 线程池使用 Runnable&Callable&Future</a>
                                    <span class="text-muted">antlove</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/thread/1.htm">thread</a><a class="tag" taget="_blank" href="/search/Runnable/1.htm">Runnable</a><a class="tag" taget="_blank" href="/search/callable/1.htm">callable</a><a class="tag" taget="_blank" href="/search/future/1.htm">future</a>
                                    <div>1. 创建线程池 
ExecutorService executorService = Executors.newCachedThreadPool(); 
  
2. 执行一次线程,调用Runnable接口实现 
Future<?> future = executorService.submit(new DefaultRunnable());
System.out.prin</div>
                                </li>
                                <li><a href="/article/1217.htm"
                                       title="XML语法元素结构的总结" target="_blank">XML语法元素结构的总结</a>
                                    <span class="text-muted">百合不是茶</span>
<a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/%E6%A0%91%E7%BB%93%E6%9E%84/1.htm">树结构</a>
                                    <div>1.XML介绍1969年   gml (主要目的是要在不同的机器进行通信的数据规范)1985年   sgml  standard generralized markup language1993年   html(www网)1998年  xml   extensible markup language</div>
                                </li>
                                <li><a href="/article/1344.htm"
                                       title="改变eclipse编码格式" target="_blank">改变eclipse编码格式</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A0%81%E6%A0%BC%E5%BC%8F/1.htm">编码格式</a>
                                    <div>1.改变整个工作空间的编码格式 
        改变整个工作空间的编码格式,这样以后新建的文件也是新设置的编码格式。 
        Eclipse->window->preferences->General->workspace-</div>
                                </li>
                                <li><a href="/article/1471.htm"
                                       title="javascript中return的设计缺陷" target="_blank">javascript中return的设计缺陷</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/AngularJS/1.htm">AngularJS</a>
                                    <div>代码1: 
<script>
var gisService = (function(window) 
{ 

    return
    {
        name:function ()
        {
            alert(1);
        }
    };

})(this);

gisService.name();
&l</div>
                                </li>
                                <li><a href="/article/1598.htm"
                                       title="【持久化框架MyBatis3八】Spring集成MyBatis3" target="_blank">【持久化框架MyBatis3八】Spring集成MyBatis3</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Mybatis3/1.htm">Mybatis3</a>
                                    <div>pom.xml配置 
Maven的pom中主要包括: 
 
 MyBatis 
 MyBatis-Spring 
 Spring 
 MySQL-Connector-Java 
 Druid 
 applicationContext.xml配置     
<?xml version="1.0" encoding="UTF-8"?>
&</div>
                                </li>
                                <li><a href="/article/1725.htm"
                                       title="java web项目启动时自动加载自定义properties文件" target="_blank">java web项目启动时自动加载自定义properties文件</a>
                                    <span class="text-muted">bitray</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E7%9B%91%E5%90%AC%E5%99%A8/1.htm">监听器</a><a class="tag" taget="_blank" href="/search/%E7%9B%B8%E5%AF%B9%E8%B7%AF%E5%BE%84/1.htm">相对路径</a>
                                    <div>创建一个类 
public class ContextInitListener implements ServletContextListener 
使得该类成为一个监听器。用于监听整个容器生命周期的,主要是初始化和销毁的。 
 
类创建后要在web.xml配置文件中增加一个简单的监听器配置,即刚才我们定义的类。 
 

    <listener>
        <des</div>
                                </li>
                                <li><a href="/article/1852.htm"
                                       title="用nginx区分文件大小做出不同响应" target="_blank">用nginx区分文件大小做出不同响应</a>
                                    <span class="text-muted">ronin47</span>

                                    <div>昨晚和前21v的同事聊天,说到我离职后一些技术上的更新。其中有个给某大客户(游戏下载类)的特殊需求设计,因为文件大小差距很大——估计是大版本和补丁的区别——又走的是同一个域名,而squid在响应比较大的文件时,尤其是初次下载的时候,性能比较差,所以拆成两组服务器,squid服务于较小的文件,通过pull方式从peer层获取,nginx服务于较大的文件,通过push方式由peer层分发同步。外部发布</div>
                                </li>
                                <li><a href="/article/1979.htm"
                                       title="java-67-扑克牌的顺子.从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大" target="_blank">java-67-扑克牌的顺子.从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的.2-10为数字本身,A为1,J为11,Q为12,K为13,而大</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>package com.ljn.base;

import java.util.Arrays;
import java.util.Random;

public class ContinuousPoker {

    /**
     * Q67 扑克牌的顺子 从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。
     * 2-10为数字本身,A为1,J为1</div>
                                </li>
                                <li><a href="/article/2106.htm"
                                       title="翟鸿燊老师语录" target="_blank">翟鸿燊老师语录</a>
                                    <span class="text-muted">ccii</span>
<a class="tag" taget="_blank" href="/search/%E7%BF%9F%E9%B8%BF%E7%87%8A/1.htm">翟鸿燊</a>
                                    <div>一、国学应用智慧TAT之亮剑精神A 
1. 角色就是人格 
    就像你一回家的时候,你一进屋里面,你已经是儿子,是姑娘啦,给老爸老妈倒怀水吧,你还觉得你是老总呢?还拿派呢?就像今天一样,你们往这儿一坐,你们之间是什么,同学,是朋友。 
    还有下属最忌讳的就是领导向他询问情况的时候,什么我不知道,我不清楚,该你知道的你凭什么不知道</div>
                                </li>
                                <li><a href="/article/2233.htm"
                                       title="[光速与宇宙]进行光速飞行的一些问题" target="_blank">[光速与宇宙]进行光速飞行的一些问题</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E9%97%AE%E9%A2%98/1.htm">问题</a>
                                    <div> 
 
     在人类整体进入宇宙时代,即将开展深空宇宙探索之前,我有几个猜想想告诉大家 
    仅仅是猜想。。。未经官方证实 
 
 
     1:要在宇宙中进行光速飞行,必须首先获得宇宙中的航行通行证,而这个航行通行证并不是我们平常认为的那种带钢印的证书,是什么呢? 下面我来告诉</div>
                                </li>
                                <li><a href="/article/2360.htm"
                                       title="oracle undo解析" target="_blank">oracle undo解析</a>
                                    <span class="text-muted">cwqcwqmax9</span>
<a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a>
                                    <div>oracle undo解析2012-09-24 09:02:01     我来说两句       作者:虫师收藏    我要投稿 
 
Undo是干嘛用的?         &nb</div>
                                </li>
                                <li><a href="/article/2487.htm"
                                       title="java中各种集合的详细介绍" target="_blank">java中各种集合的详细介绍</a>
                                    <span class="text-muted">dashuaifu</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%9B%86%E5%90%88/1.htm">集合</a>
                                    <div>一,java中各种集合的关系图 Collection       接口的接口     对象的集合  ├ List           子接口   &n</div>
                                </li>
                                <li><a href="/article/2614.htm"
                                       title="卸载windows服务的方法" target="_blank">卸载windows服务的方法</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/service/1.htm">service</a>
                                    <div>卸载Windows服务的方法 
在Windows中,有一类程序称为服务,在操作系统内核加载完成后就开始加载。这里程序往往运行在操作系统的底层,因此资源占用比较大、执行效率比较高,比较有代表性的就是杀毒软件。但是一旦因为特殊原因不能正确卸载这些程序了,其加载在Windows内的服务就不容易删除了。即便是删除注册表中的相 应项目,虽然不启动了,但是系统中仍然存在此项服务,只是没有加载而已。如果安装其他</div>
                                </li>
                                <li><a href="/article/2741.htm"
                                       title="Warning: The Copy Bundle Resources build phase contains this target's Info.plist" target="_blank">Warning: The Copy Bundle Resources build phase contains this target's Info.plist</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/ios/1.htm">ios</a><a class="tag" taget="_blank" href="/search/xcode/1.htm">xcode</a>
                                    <div>       
      
http://developer.apple.com/iphone/library/qa/qa2009/qa1649.html 
Excerpt: 
 
 You are getting this warning because you probably added your Info.plist file to your Copy Bundle </div>
                                </li>
                                <li><a href="/article/2868.htm"
                                       title="2014之C++学习笔记(一)" target="_blank">2014之C++学习笔记(一)</a>
                                    <span class="text-muted">Etwo</span>
<a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/Etwo/1.htm">Etwo</a><a class="tag" taget="_blank" href="/search/Etwo/1.htm">Etwo</a><a class="tag" taget="_blank" href="/search/iterator/1.htm">iterator</a><a class="tag" taget="_blank" href="/search/%E8%BF%AD%E4%BB%A3%E5%99%A8/1.htm">迭代器</a>
                                    <div>        已经有很长一段时间没有写博客了,可能大家已经淡忘了Etwo这个人的存在,这一年多以来,本人从事了AS的相关开发工作,但最近一段时间,AS在天朝的没落,相信有很多码农也都清楚,现在的页游基本上达到饱和,手机上的游戏基本被unity3D与cocos占据,AS基本没有容身之处。so。。。最近我并不打算直接转型</div>
                                </li>
                                <li><a href="/article/2995.htm"
                                       title="js跨越获取数据问题记录" target="_blank">js跨越获取数据问题记录</a>
                                    <span class="text-muted">haifengwuch</span>
<a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/json/1.htm">json</a><a class="tag" taget="_blank" href="/search/Ajax/1.htm">Ajax</a>
                                    <div>js的跨越问题,普通的ajax无法获取服务器返回的值。 
 
  第一种解决方案,通过getson,后台配合方式,实现。 
Java后台代码: 
protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
throws ServletException, IOException { 
String ca</div>
                                </li>
                                <li><a href="/article/3122.htm"
                                       title="蓝色jQuery导航条" target="_blank">蓝色jQuery导航条</a>
                                    <span class="text-muted">ini</span>
<a class="tag" taget="_blank" href="/search/JavaScript/1.htm">JavaScript</a><a class="tag" taget="_blank" href="/search/html/1.htm">html</a><a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/html5/1.htm">html5</a>
                                    <div>效果体验:http://keleyi.com/keleyi/phtml/jqtexiao/39.htmHTML文件代码: 
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>jQuery鼠标悬停上下滑动导航条 - 柯乐义<</div>
                                </li>
                                <li><a href="/article/3249.htm"
                                       title="linux部署jdk,tomcat,mysql" target="_blank">linux部署jdk,tomcat,mysql</a>
                                    <span class="text-muted">kerryg</span>
<a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>1、安装java环境jdk: 
    一般系统都会默认自带的JDK,但是不太好用,都会卸载了,然后重新安装。 
   1.1)、卸载: 
     (rpm -qa :查询已经安装哪些软件包; 
       rmp -q 软件包:查询指定包是否已</div>
                                </li>
                                <li><a href="/article/3376.htm"
                                       title="DOMContentLoaded VS onload VS onreadystatechange" target="_blank">DOMContentLoaded VS onload VS onreadystatechange</a>
                                    <span class="text-muted">mutongwu</span>
<a class="tag" taget="_blank" href="/search/jquery/1.htm">jquery</a><a class="tag" taget="_blank" href="/search/js/1.htm">js</a>
                                    <div>1. DOMContentLoaded 在页面html、script、style加载完毕即可触发,无需等待所有资源(image/iframe)加载完毕。(IE9+) 
 
2. onload是最早支持的事件,要求所有资源加载完毕触发。 
 
3. onreadystatechange 开始在IE引入,后来其它浏览器也有一定的实现。涉及以下 document , applet, embed, fra</div>
                                </li>
                                <li><a href="/article/3503.htm"
                                       title="sql批量插入数据" target="_blank">sql批量插入数据</a>
                                    <span class="text-muted">qifeifei</span>
<a class="tag" taget="_blank" href="/search/%E6%89%B9%E9%87%8F%E6%8F%92%E5%85%A5/1.htm">批量插入</a>
                                    <div>hi, 
  自己在做工程的时候,遇到批量插入数据的数据修复场景。我的思路是在插入前准备一个临时表,临时表的整理就看当时的选择条件了,临时表就是要插入的数据集,最后再批量插入到数据库中。 
   
WITH tempT AS (
SELECT
item_id AS combo_id,
item_id,
now() AS create_date
FROM
a</div>
                                </li>
                                <li><a href="/article/3630.htm"
                                       title="log4j打印日志文件 如何实现相对路径到 项目工程下" target="_blank">log4j打印日志文件 如何实现相对路径到 项目工程下</a>
                                    <span class="text-muted">thinkfreer</span>
<a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/log4j/1.htm">log4j</a><a class="tag" taget="_blank" href="/search/%E5%BA%94%E7%94%A8%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">应用服务器</a><a class="tag" taget="_blank" href="/search/%E6%97%A5%E5%BF%97/1.htm">日志</a>
                                    <div>最近为了实现统计一个网站的访问量,记录用户的登录信息,以方便站长实时了解自己网站的访问情况,选择了Apache 的log4j,但是在选择相对路径那块 卡主了,X度了好多方法(其实大多都是一样的内用,还一个字都不差的),都没有能解决问题,无奈搞了2天终于解决了,与大家分享一下 
 
 
需求: 
用户登录该网站时,把用户的登录名,ip,时间。统计到一个txt文档里,以方便其他系统调用此txt。项目名</div>
                                </li>
                                <li><a href="/article/3757.htm"
                                       title="linux下mysql-5.6.23.tar.gz安装与配置" target="_blank">linux下mysql-5.6.23.tar.gz安装与配置</a>
                                    <span class="text-muted">笑我痴狂</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a>
                                    <div>1.卸载系统默认的mysql 
 
[root@localhost ~]# rpm -qa | grep mysql 
mysql-libs-5.1.66-2.el6_3.x86_64
mysql-devel-5.1.66-2.el6_3.x86_64
mysql-5.1.66-2.el6_3.x86_64
[root@localhost ~]# rpm -e mysql-libs-5.1</div>
                                </li>
                </ul>
            </div>
        </div>
    </div>

<div>
    <div class="container">
        <div class="indexes">
            <strong>按字母分类:</strong>
            <a href="/tags/A/1.htm" target="_blank">A</a><a href="/tags/B/1.htm" target="_blank">B</a><a href="/tags/C/1.htm" target="_blank">C</a><a
                href="/tags/D/1.htm" target="_blank">D</a><a href="/tags/E/1.htm" target="_blank">E</a><a href="/tags/F/1.htm" target="_blank">F</a><a
                href="/tags/G/1.htm" target="_blank">G</a><a href="/tags/H/1.htm" target="_blank">H</a><a href="/tags/I/1.htm" target="_blank">I</a><a
                href="/tags/J/1.htm" target="_blank">J</a><a href="/tags/K/1.htm" target="_blank">K</a><a href="/tags/L/1.htm" target="_blank">L</a><a
                href="/tags/M/1.htm" target="_blank">M</a><a href="/tags/N/1.htm" target="_blank">N</a><a href="/tags/O/1.htm" target="_blank">O</a><a
                href="/tags/P/1.htm" target="_blank">P</a><a href="/tags/Q/1.htm" target="_blank">Q</a><a href="/tags/R/1.htm" target="_blank">R</a><a
                href="/tags/S/1.htm" target="_blank">S</a><a href="/tags/T/1.htm" target="_blank">T</a><a href="/tags/U/1.htm" target="_blank">U</a><a
                href="/tags/V/1.htm" target="_blank">V</a><a href="/tags/W/1.htm" target="_blank">W</a><a href="/tags/X/1.htm" target="_blank">X</a><a
                href="/tags/Y/1.htm" target="_blank">Y</a><a href="/tags/Z/1.htm" target="_blank">Z</a><a href="/tags/0/1.htm" target="_blank">其他</a>
        </div>
    </div>
</div>
<footer id="footer" class="mb30 mt30">
    <div class="container">
        <div class="footBglm">
            <a target="_blank" href="/">首页</a> -
            <a target="_blank" href="/custom/about.htm">关于我们</a> -
            <a target="_blank" href="/search/Java/1.htm">站内搜索</a> -
            <a target="_blank" href="/sitemap.txt">Sitemap</a> -
            <a target="_blank" href="/custom/delete.htm">侵权投诉</a>
        </div>
        <div class="copyright">版权所有 IT知识库 CopyRight © 2000-2050 E-COM-NET.COM , All Rights Reserved.
<!--            <a href="https://beian.miit.gov.cn/" rel="nofollow" target="_blank">京ICP备09083238号</a><br>-->
        </div>
    </div>
</footer>
<!-- 代码高亮 -->
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shCore.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shLegacy.js"></script>
<script type="text/javascript" src="/static/syntaxhighlighter/scripts/shAutoloader.js"></script>
<link type="text/css" rel="stylesheet" href="/static/syntaxhighlighter/styles/shCoreDefault.css"/>
<script type="text/javascript" src="/static/syntaxhighlighter/src/my_start_1.js"></script>





</body>

</html>