web集群-web服务器--tomcat

简介

1、Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。
2、Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
3、Tomcat和Nginx、Apache(httpd)、lighttpd等Web服务器一样,具有处理HTML页面的功能,另外它还是一个Servlet和JSP容器,独立的Servlet容器是Tomcat的默认模式。不过,Tomcat处理静态HTML的能力不如Nginx/Apache服务器。
4、目前Tomcat最新版本为9.0。Java容器还有resin、weblogic等。
5、Tomcat官网: http://tomcat.apache.org

安装Tomcat

部署环境

[root@node1 ~]# uname -r
3.10.0-1062.el7.x86_64
[root@node1 ~]# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)

安装Tomcat和JDK

由于tomcat是用java写的,所以运行需要JRE,就是JAVA运行时刻环境,所以必须通过安装JDK来得到这个运行环境。
JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。
JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

tomcat下载链接

1、安装jdk包
[root@node1 ~]# yum install jdk-8u144-linux-x64.rpm  -y

2、检测java安装是否成功
[root@node1 ~]# java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
[root@node1 ~]# jps
1869 Jps

3、将包解压到/usr/local目录下
[root@node1 ~]# tar xf apache-tomcat-8.5.63.tar.gz -C /usr/local/

4、进入该目录下创建软连接
[root@node1 ~]# cd /usr/local/
[root@node1 local]# ln -sv apache-tomcat-8.5.63/ tomcat
"tomcat" -> "apache-tomcat-8.5.63/"

5、检查tomcat安装是否成功
[root@node1 local]# /usr/local/tomcat/bin/version.sh 
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:   
Server version: Apache Tomcat/8.5.63
Server built:   Jan 29 2021 11:21:49 UTC
Server number:  8.5.63.0
OS Name:        Linux
OS Version:     3.10.0-1062.el7.x86_64
Architecture:   amd64
JVM Version:    1.8.0_144-b01
JVM Vendor:     Oracle Corporation

Tomcat目录结构

[root@node1 ~]# cd /usr/local/tomcat/
[root@node1 tomcat]# tree -L 1
.
├── bin					# 存放tomcat管理脚本
├── BUILDING.txt		# 存放tomcat 配置文件存
├── conf
├── CONTRIBUTING.md
├── lib					# web应用调用的jar包存放路径
├── LICENSE
├── logs				# tomcat 日志存放目录,catalina.out 为主要输出日志
├── NOTICE
├── README.md
├── RELEASE-NOTES
├── RUNNING.txt
├── temp				# 存放临时文件
├── webapps				# web程序存放目录
└── work				# 存放编译产生的.java与.class文件

[root@node1 ~]# cd /usr/local/tomcat/webapps/
[root@node1 webapps]# tree -L 1 
.
├── docs				# tomcat 帮助文档
├── examples			# web应用实例
├── host-manager		# 主机管理
├── manager				# 管理
└── ROOT				# 默认站点根目录

[root@node1 webapps]# cd /usr/local/tomcat/conf/
[root@node1 conf]# tree -L 1 
.
├── catalina.policy
├── catalina.properties
├── context.xml
├── jaspic-providers.xml
├── jaspic-providers.xsd
├── logging.properties
├── server.xml			# tomcat 主配置文件
├── tomcat-users.xml	# tomcat 管理用户配置文件
├── tomcat-users.xsd
└── web.xml

Tomcat操作

1、启动停止

方法一:命令启动停止

启动:/usr/local/tomcat/bin/startup.sh 
停止:/usr/local/tomcat/bin/shutdown.sh 

测试:
[root@node1 ~]# /usr/local/tomcat/bin/startup.sh 
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:   
Using CATALINA_PID:    /usr/local/tomcat/tomcat.pid
Tomcat started.
[root@node1 ~]# netstat -lnupt | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      4274/java   

方法二:脚本启动停止

1、配置tomcat环境变量
[root@node1 ~]# vim /etc/profile.d/tomcat.sh
# TOMCAT
export CATALINA_HOME=/usr/local/tomcat
# PATH
export PATH=$PATH:$CATALINA_HOME/bin
[root@node1 ~]# source /etc/profile.d/tomcat.sh 

2、设置tomcat pid和java 启动参数
[root@node1 ~]# vim /usr/local/tomcat/bin/setenv.sh
#add tomcat pid
CATALINA_PID="$CATALINA_HOME/tomcat.pid"
#add java opts
JAVA_OPTS="-server -XX:PermSize=256M -XX:MaxPermSize=1024m -Xms1024M -Xmx1024M -XX:MaxNewSize=256m"

3、编辑服务脚本
[root@node1 ~]# vim /usr/lib/systemd/system/tomcat.service
[Unit]
Description=Apache Tomcat Web Application 		#描述信息
ContainerAfter=syslog.target network.target 	#等待网络启动之后再启动

[Service]
Type=forking									#类型
PIDFile=/usr/local/tomcat/tomcat.pid			
ExecStart=/usr/local/tomcat/bin/catalina.sh start	#启动命令
ExecReload=/bin/kill -s HUP MAINPID					#加载命令
ExecStop=/bin/kill−s QUIT MAINPID					#停止命令
PrivateTmp=true										#自动解压

[Install]
WantedBy=multi-user.target							#运行级别:多用户模式

[root@node1 ~]# systemctl daemon-reload 

4、测试启动停止与开机自启
[root@node1 ~]# netstat -lnupt | grep 8080
tcp6       0      0 :::8080                 :::*                    LISTEN      4053/java  
[root@node1 ~]# systemctl stop tomcat.service 
[root@node1 ~]# netstat -lnupt | grep 8080
[root@node1 ~]# systemctl enable tomcat.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/tomcat.service to /usr/lib/systemd/system/tomcat.service.

2、Tomcat日志文件

/usr/local/tomcat/logs/catalina.out

Tomcat日志–解决启动慢

发现耗时在这里:是session引起的随机数问题导致的。
Tocmat的Session ID是通过SHA1算法计算得到的,计算Session ID的时候必须有一个密钥。
为了提高安全性Tomcat在启动的时候会通过随机生成一个密钥。

查看是否有足够的熵来用于产生随机数

[root@node1 ~]# cat /proc/sys/kernel/random/entropy_avail 
1802

解决方法:
[root@node1 ~]# yum install rng-tools -y
[root@node1 ~]# systemctl start rngd
[root@node1 ~]# systemctl enable rngd

测试:
[root@node1 ~]# cat /proc/sys/kernel/random/entropy_avail 
3111
重启测试,查看日志
[root@node1 ~]# tail -1  /usr/local/tomcat/logs/catalina.out 
21-Feb-2021 19:30:19.556 信息 [main] org.apache.catalina.startup.Catalina.start Server startup in 585 ms

Tomcat web管理功能

建议不要再生产环境中使用
该功能用于对Tomcat自身以及部署在Tomcat上的应用进行管理的web应用。在默认情况下是处于禁用状态的。如果需要开启这个功能,就需要配置管理用户。

1、配置tomcat-users.xml 文件,添加以下几行
[root@node1 ~]# vim /usr/local/tomcat/conf/tomcat-users.xml 
"admin-gui"/>
"admin-script"/>
"manager-gui"/>
"manager-jmx"/>
"manager-script"/>
"manager-status"/>
"tomcat" password="tomcat" roles="admin-gui,manager-gui,manager- jmx,manager-script,manager-status,admin-script"/>
</tomcat-users> #前面加上以上几行,注意,不要添加到注释里面去。

2、允许方式Manager APP
[root@node1 ~]# vim /usr/local/tomcat/webapps/manager/META-INF/context.xml 
  "org.apache.catalina.valves.RemoteAddrValve"   allow="^.*$" />
	   <!-- allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /-->

3、允许访问Host Manager
[root@node1 ~]# vim /usr/local/tomcat/webapps/host-manager/META-INF/context.xml 
  "org.apache.catalina.valves.RemoteAddrValve"  allow="^.*$" />
       <!--  allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" /-->
       
4、修改完毕,重启tomcat
[root@node1 ~]# systemctl restart tomcat.service 

web集群-web服务器--tomcat_第1张图片

web集群-web服务器--tomcat_第2张图片
web集群-web服务器--tomcat_第3张图片
web集群-web服务器--tomcat_第4张图片

Tomcat 配置文件

server.xml组件类别

顶级组件:位于整个配置的顶层,如server。
容器类组件:可以包含其它组件的组件,如service、engine、host、context。
连接器组件:连接用户请求至tomcat,如connector。
被嵌套类组件:位于一个容器当中,不能包含其他组件,如Valve、logger。

engine-----核心容器组件,catalina引擎,负责通过connector接收用户请求,并处理请求,将请求转至对应的虚拟主机host。
host-------类似于httpd中的虚拟主机,一般而言支持基于FQDN的虚拟主机。
context----定义一个应用程序,是一个最内层的容器类组件(不能再嵌套)。
		   配置context的主要目的指定对应对的webapp的根目录,类似于httpd的alias,其还能为webapp指定额外 的属性,如部署方式等。
connector--接收用户请求,类似于httpd的listen配置监听端口的。
service----将connector关联至engine,因此一个service内部可以有多个connector,但只能有一个引擎engine。
		   service内部有两个connector,一个engine。
		   因此,一般情况下一个server内部只有一个service,一个service内部只有一个engine,但一个service内部可以有多个connector。
server-----表示一个运行于JVM中的tomcat实例。
Valve------阀门,拦截请求并在将其转至对应的webapp前进行某种处理操作,可以用于任何容器中,比如记录日志(access log valve)、基于IP做访问控制(remote address filter valve)。
logger-----日志记录器,用于记录组件内部的状态信息,可以用于除context外的任何容器中。
realm------可以用于任意容器类的组件中,关联一个用户认证库,实现认证和授权。
		   可以关联的认证库有两种:UserDatabaseRealm、MemoryRealm和JDBCRealm。
UserDatabaseRealm---使用JNDI自定义的用户认证库。
MemoryRealm--认证信息定义在tomcat-users.xml中。
JDBCRealm----认证信息定义在数据库中,并通过JDBC连接至数据库中查找认证用户。

Connector主要参数说明

    "8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

connector-----接收用户请求,类似于httpd的listen配置监听端口.
port----------指定服务器端要创建的端口号,并在这个端口监听来自客户端的请求。
address-------指定连接器监听的地址,默认为所有地址(即0.0.0.0)
protocol------连接器使用的协议,支持HTTP和AJP。AJP(Apache Jserv Protocol)专用于tomcat与apache建立通信的,在httpd反向代理用户请求至tomcat时使用(可见Nginx反向代理时不可用AJP协议)。
minProcessors--服务器启动时创建的处理请求的线程数
maxProcessors--最大可以创建的处理请求的线程数
enableLookups--如果为true,则可以通过调用request.getRemoteHost()进行DNS查询来得到远程客户端的实际主机名,若为false则不进行DNS查询,而是返回其ip地址
redirectPort---指定服务器正在处理http请求时收到了一个SSL传输请求后重定向的端口号
acceptCount----指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理
connectionTimeout---指定超时的时间数(以毫秒为单位)

host参数详解

      "localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

host-----表示一个虚拟主机
name-----指定主机名
appBase-------应用程序基本目录,即存放应用程序的目录.一般为appBase="webapps" ,相对于CATALINA_HOME而言的,也可以写绝对路径。
unpackWARs----如果为true,则tomcat会自动将WAR文件解压,否则不解压,直接从WAR文件中运行应用程序autoDeploy 在tomcat启动时,是否自动部署。
xmlValidation------是否启动xml的校验功能,一般xmlValidation="false"。
xmlNamespaceAware--检测名称空间,一般xmlNamespaceAware="false"

Context参数说明

Context---表示一个web应用程序,通常为WAR文件
docBase---应用程序的路径或者是WAR文件存放的路径,也可以使用相对路径,起始路径为此Context所属Host中appBase定义的路径。
path------表示此web应用程序的url的前缀,这样请求的url为http://localhost:8080/path/
reloadable--为true,则tomcat会自动检测应用程序的/WEB-INF/lib和/WEB-INF/classes目录的变化,自动装载新的应用程序,可以在不重启tomcat的情况下改变应用程序

Web站点部署

1、部署开源站点(jpress)

jpress官网:http://jpress.io
下载地址:https://github.com/JpressProjects/jpress

1、安装数据库并初始化
[root@node1 ~]# yum install -y mariadb-server 
[root@node1 ~]# systemctl enable mariadb.service --now
[root@node1 ~]# mysql -e "create database jpress default character set utf8;" 
[root@node1 ~]# mysql -e "grant all on jpress.* to jpress@'localhost' identified by '123456';"

2、将jpress的war传到/usr/local/tomcat/webapps/目录下,并查看
[root@node1 ~]# ll /usr/local/tomcat/webapps/
总用量 70004
drwxr-x---. 15 root root     4096 2月  21 18:51 docs
drwxr-x---.  7 root root       99 2月  21 18:51 examples
drwxr-x---.  6 root root       79 2月  21 18:51 host-manager
drwxr-x---.  6 root root       86 2月  21 20:29 jpress-v3.3.0
-rw-r--r--.  1 root root 71677863 2月  21 13:52 jpress-v3.3.0.war
drwxr-x---.  6 root root      114 2月  21 18:51 manager
drwxr-x---.  3 root root      223 2月  21 18:51 ROOT

web安装jpress

点击进入该目录
web集群-web服务器--tomcat_第5张图片
web集群-web服务器--tomcat_第6张图片
web集群-web服务器--tomcat_第7张图片
web集群-web服务器--tomcat_第8张图片
web集群-web服务器--tomcat_第9张图片
web集群-web服务器--tomcat_第10张图片
其他操作:
若想直接通过IP进行访问Jpress站点,将/usr/local/tomcat/webapps/目录下的jpress目录放入到同级的ROOT目录中,并将ROOT目录中的文件删除或备份到其他地方。

[root@node1 ~]# ll /usr/local/tomcat/webapps/
总用量 70004
drwxr-x---. 15 root root     4096 2月  21 18:51 docs
drwxr-x---.  7 root root       99 2月  21 18:51 examples
drwxr-x---.  6 root root       79 2月  21 18:51 host-manager
drwxr-x---.  6 root root       86 2月  21 20:29 jpress-v3.3.0
-rw-r--r--.  1 root root 71677863 2月  21 13:52 jpress-v3.3.0.war
drwxr-x---.  6 root root      114 2月  21 18:51 manager
drwxr-x---.  3 root root      223 2月  21 18:51 ROOT

[root@node1 webapps]# mkdir ROOT.bak
[root@node1 webapps]# mv ROOT/* ROOT.bak/
[root@node1 webapps]# mv jpress-v3.3.0/* ROOT/

修改为80端口:注意,端口不能冲突。
[root@node1 tomcat]# vim conf/server.xml 
    "80" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

测试:
web集群-web服务器--tomcat_第11张图片

2、部署开源站点(jspRUN)

[root@node1 ~]# yum install unzip.x86_64 -y
[root@node1 ~]# unzip JspRun\!_6_GBK.zip 
[root@node1 ~]# mv JspRun\!_6.0.0_GBK/upload/ /usr/local/tomcat/webapps/jsp
[root@node1 jsp]# cd /usr/local/tomcat/webapps/jsp/
[root@node1 jsp]# vim config.properties 
dbhost = localhost
dbport=3306
dbuser = jsp
dbpw = 123456
dbname = jsprun
pconnect = 0

tablepre = jrun_

database = mysql
dbcharset =
charset = gbk
headercharset = 0
tplrefresh = 1
version=5.1

[root@node1 ~]# mysql -e "create database jsprun  default character set gbk;" 
[root@node1 ~]# mysql -e "grant all on jsprun.* to jsp@'localhost' identified by '123456';"

**web安装JspRun **

web集群-web服务器--tomcat_第12张图片
web集群-web服务器--tomcat_第13张图片

web集群-web服务器--tomcat_第14张图片
web集群-web服务器--tomcat_第15张图片
web集群-web服务器--tomcat_第16张图片
web集群-web服务器--tomcat_第17张图片

Tomcat虚拟主机

[root@node1 ~]# cd /usr/local/tomcat/conf/
[root@node1 conf]# cp server.xml server.xml.bak

1、修改配置文件,添加host主机配置
[root@node1 conf]# vim server.xml
      "www.aaa.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        "/web/aaa" path="" reloadable="flase" />
        "org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="www.aaa.com_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

      </Host>

      "www.bbb.com"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        "/web/bbb" path="" reloadable="flase" />
        "org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="www.bbb.com_access_log" suffix=".txt"
               pattern="%h %l %u %t "%r" %s %b" />

      </Host>

2、创建访问的网站页面
[root@node1 conf]# mkdir -p /web/{aaa,bbb}
[root@node1 conf]# vim /web/aaa/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
 
	 
	JSP a 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">"Welocome to test site,http://www.aaa.com"</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@node1 conf]</span><span class="token comment"># vim /web/bbb/index.jsp</span>
<<span class="token operator">%</span>@ page language=<span class="token string">"java"</span> import=<span class="token string">"java.util.*"</span> pageEncoding=<span class="token string">"UTF-8"</span><span class="token operator">%</span>> 
<html> 
	<head> 
	<title>JSP a 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">"Welocome to test site,http://www.bbb.com"</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>

3、添加本地dns解析
<span class="token namespace">[root@node1 conf]</span><span class="token comment"># vim /etc/hosts</span>
127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1   localhost localhost<span class="token punctuation">.</span>localdomain localhost4 localhost4<span class="token punctuation">.</span>localdomain4
::1         localhost localhost<span class="token punctuation">.</span>localdomain localhost6 localhost6<span class="token punctuation">.</span>localdomain6
192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>16<span class="token punctuation">.</span>11 www<span class="token punctuation">.</span>aaa<span class="token punctuation">.</span>com www<span class="token punctuation">.</span>bbb<span class="token punctuation">.</span>com 

4、测试
<span class="token namespace">[root@node1 conf]</span><span class="token comment"># curl www.aaa.com:8080</span>
 
<html> 
	<head> 
	<title>JSP a page<<span class="token operator">/</span>title>
	<<span class="token operator">/</span>head> 
	<body>
		Welocome to test site<span class="token punctuation">,</span>http:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>aaa<span class="token punctuation">.</span>com
 
	<<span class="token operator">/</span>body> 
<<span class="token operator">/</span>html>
<span class="token namespace">[root@node1 conf]</span><span class="token comment"># curl www.bbb.com:8080</span>
 
<html> 
	<head> 
	<title>JSP a page<<span class="token operator">/</span>title>
	<<span class="token operator">/</span>head> 
	<body>
		Welocome to test site<span class="token punctuation">,</span>http:<span class="token operator">/</span><span class="token operator">/</span>www<span class="token punctuation">.</span>bbb<span class="token punctuation">.</span>com
 
	<<span class="token operator">/</span>body> 
<<span class="token operator">/</span>html>

<span class="token namespace">[root@node1 ~]</span><span class="token comment"># yum install elinks.x86_64 -y</span>
<span class="token namespace">[root@node1 ~]</span><span class="token comment"># elinks www.aaa.com:8080</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/a6cf84be81444b96afb26cda4de596ed.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a6cf84be81444b96afb26cda4de596ed.jpg" alt="web集群-web服务器--tomcat_第18张图片" width="650" height="220" style="border:1px solid black;"></a></p> 
  <h2>Tomcat监控</h2> 
  <p><strong>方法一:开发java监控页面</strong></p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@node1 ~]</span><span class="token comment"># vim /web/aaa/meminfo.jsp</span>
<<span class="token operator">%</span>
Runtime rtm = Runtime<span class="token punctuation">.</span>getRuntime<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
long mm = rtm<span class="token punctuation">.</span>maxMemory<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">/</span>1024<span class="token operator">/</span>1024<span class="token punctuation">;</span> 
long tm = rtm<span class="token punctuation">.</span>totalMemory<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">/</span>1024<span class="token operator">/</span>1024<span class="token punctuation">;</span> 
long fm = rtm<span class="token punctuation">.</span>freeMemory<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token operator">/</span>1024<span class="token operator">/</span>1024<span class="token punctuation">;</span> 

out<span class="token punctuation">.</span>println<span class="token punctuation">(</span><span class="token string">"JVM memory detail info :<br>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
out<span class="token punctuation">.</span>println<span class="token punctuation">(</span><span class="token string">"Max memory:"</span><span class="token operator">+</span>mm<span class="token operator">+</span><span class="token string">"MB"</span><span class="token operator">+</span><span class="token string">"<br>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
out<span class="token punctuation">.</span>println<span class="token punctuation">(</span><span class="token string">"Total memory:"</span><span class="token operator">+</span>tm<span class="token operator">+</span><span class="token string">"MB"</span><span class="token operator">+</span><span class="token string">"<br>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
out<span class="token punctuation">.</span>println<span class="token punctuation">(</span><span class="token string">"Free memory:"</span><span class="token operator">+</span>fm<span class="token operator">+</span><span class="token string">"MB"</span><span class="token operator">+</span><span class="token string">"<br>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
out<span class="token punctuation">.</span>println<span class="token punctuation">(</span><span class="token string">"Available memory can be used is :"</span><span class="token operator">+</span><span class="token punctuation">(</span>mm<span class="token operator">+</span>fm<span class="token operator">-</span>tm<span class="token punctuation">)</span><span class="token operator">+</span><span class="token string">"MB"</span><span class="token operator">+</span><span class="token string">"<br>"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> 
<span class="token operator">%</span>>

测试:
<span class="token namespace">[root@node1 ~]</span><span class="token comment"># elinks www.aaa.com:8080/meminfo.jsp</span>
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/a4ea63e97fd643b6b5d23825f7321ea1.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a4ea63e97fd643b6b5d23825f7321ea1.jpg" alt="web集群-web服务器--tomcat_第19张图片" width="650" height="138" style="border:1px solid black;"></a><br> <strong>方法二:使用jps命令进行监控</strong></p> 
  <pre><code class="prism language-powershell">1、修改配置文件,开启远程监控
<span class="token namespace">[root@node1 ~]</span><span class="token comment"># vim /usr/local/tomcat/bin/catalina.sh </span>
CATALINA_OPTS=<span class="token string">"<span class="token variable">$CATALINA_OPTS</span> -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=2222 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.16.11"</span>

2、重启服务
<span class="token namespace">[root@node1 ~]</span><span class="token comment"># systemctl restart tomcat.service </span>

3、测试
<span class="token namespace">[root@node1 ~]</span><span class="token comment"># netstat -lnupt | grep 2222</span>
tcp6       0      0 :::2222                 :::<span class="token operator">*</span>                    LISTEN      3470<span class="token operator">/</span>java           
<span class="token namespace">[root@node1 ~]</span><span class="token comment"># netstat -lnupt | grep 8080</span>
tcp6       0      0 :::8080                 :::<span class="token operator">*</span>                    LISTEN      3470<span class="token operator">/</span>java 
</code></pre> 
  <p>测试:<br> windwos安装jdk环境,运行jconsole.exe或jvisualvm.exe进行监控</p> 
  <h2>Tomcat安全优化</h2> 
  <h3>1、telnet管理端口保护(强制)</h3> 
  <p>建议配置,要求端口配置在8000~8999之间;</p> 
  <pre><code>1、修改默认的8005管理端口为不易猜测的端口(大于1024);
2、修改SHUTDOWN指令为其他字符串;
</code></pre> 
  <h3>2、ajp连接端口保护(推荐)</h3> 
  <p>保护此端口的目的在于防止线下的测试流量被mod_jk转发至线上tomcat服务器;</p> 
  <pre><code>1、修改默认的ajp 8009端口为不易冲突的大于1024端口;
2、通过iptables规则限制ajp端口访问的权限仅为线上机器;
<Connector port="8528" protocol="AJP/1.3"/>
</code></pre> 
  <h3>3、禁用管理端(强制)</h3> 
  <p>对于前段web模块,Tomcat管理端属于tomcat 的高危安全隐患,一 旦被攻破,黑客通过上传web shell的方式将会直接取得服务器的控制权,后果极其严重;</p> 
  <pre><code>1、 删除默认的{Tomcat安装目 录}/conf/tomcat-users.xml文 件,重启tomcat后将会自动生 成新的文件; 
2、 删除{Tomcat 安装目录}/webapps下默认的所有目录和文件; 
3、将tomcat 应用根目录配置为tomcat安装目录以外的目录;
<Context path="" docBase="/home/work/local/tomcat_webapps"debug="0"reloadable="false"crossContext="true"/>
</code></pre> 
  <h3>4、tomcat降权启动</h3> 
  <p>避免一旦tomcat服务被入侵,黑客直接获取高级用户权限危害整个server的安全;</p> 
  <pre><code>1、tomcat启动用户权限必须为非root权限,尽量降低tomcat启动用户的目录访问权限;
2、如需直接对外使用80端口,可通过普通账号启动后,配置iptables规则进行转发;
</code></pre> 
  <p><strong>操作:</strong></p> 
  <pre><code class="prism language-powershell">1、创建一个普通用户tomcat
<span class="token namespace">[root@node2 ~]</span><span class="token comment"># groupadd -g 777 tomcat</span>
<span class="token namespace">[root@node2 ~]</span><span class="token comment"># useradd -u 777 -g 777 -s /sbin/nologin -d /usr/local/tomcat/ tomcat</span>

2、修改服务脚本  User=tomcat
<span class="token namespace">[root@node2 system]</span><span class="token comment"># vim /usr/lib/systemd/system/tomcat.service </span>
User=tomcat

3、修改权限 <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat
<span class="token namespace">[root@node2 ~]</span><span class="token comment"># chown -R tomcat /usr/local/tomcat/*</span>
<span class="token namespace">[root@node2 ~]</span><span class="token comment"># ll /usr/local/tomcat/</span>
总用量 132
drwxr<span class="token operator">-</span>x-<span class="token operator">--</span><span class="token punctuation">.</span> 2 tomcat root  4096 2月  21 23:12 bin
<span class="token operator">-</span>rw<span class="token operator">-</span>r-<span class="token operator">--</span>-<span class="token operator">-</span><span class="token punctuation">.</span> 1 tomcat root 19318 1月  29 19:25 BUILDING<span class="token punctuation">.</span>txt
drwx-<span class="token operator">--</span>-<span class="token operator">--</span><span class="token punctuation">.</span> 3 tomcat root   254 2月  21 22:56 conf
<span class="token operator">-</span>rw<span class="token operator">-</span>r-<span class="token operator">--</span>-<span class="token operator">-</span><span class="token punctuation">.</span> 1 tomcat root  5586 1月  29 19:25 CONTRIBUTING<span class="token punctuation">.</span>md
drwxr<span class="token operator">-</span>x-<span class="token operator">--</span><span class="token punctuation">.</span> 2 tomcat root  4096 2月  21 22:52 lib
<span class="token operator">-</span>rw<span class="token operator">-</span>r-<span class="token operator">--</span>-<span class="token operator">-</span><span class="token punctuation">.</span> 1 tomcat root 57011 1月  29 19:25 LICENSE
drwxr<span class="token operator">-</span>x-<span class="token operator">--</span><span class="token punctuation">.</span> 2 tomcat root   197 2月  21 22:56 logs
<span class="token operator">-</span>rw<span class="token operator">-</span>r-<span class="token operator">--</span>-<span class="token operator">-</span><span class="token punctuation">.</span> 1 tomcat root  1726 1月  29 19:25 NOTICE
<span class="token operator">-</span>rw<span class="token operator">-</span>r-<span class="token operator">--</span>-<span class="token operator">-</span><span class="token punctuation">.</span> 1 tomcat root  3257 1月  29 19:25 README<span class="token punctuation">.</span>md
<span class="token operator">-</span>rw<span class="token operator">-</span>r-<span class="token operator">--</span>-<span class="token operator">-</span><span class="token punctuation">.</span> 1 tomcat root  7136 1月  29 19:25 RELEASE<span class="token operator">-</span>NOTES
<span class="token operator">-</span>rw<span class="token operator">-</span>r-<span class="token operator">--</span>-<span class="token operator">-</span><span class="token punctuation">.</span> 1 tomcat root 16507 1月  29 19:25 RUNNING<span class="token punctuation">.</span>txt
drwxr<span class="token operator">-</span>x-<span class="token operator">--</span><span class="token punctuation">.</span> 2 tomcat root    30 2月  21 22:52 temp
<span class="token operator">-</span>rw<span class="token operator">-</span>r-<span class="token operator">--</span>-<span class="token operator">-</span><span class="token punctuation">.</span> 1 tomcat root     5 2月  21 23:12 tomcat<span class="token punctuation">.</span>pid
drwxr<span class="token operator">-</span>x-<span class="token operator">--</span><span class="token punctuation">.</span> 7 tomcat root    81 1月  29 19:24 webapps
drwxr<span class="token operator">-</span>x-<span class="token operator">--</span><span class="token punctuation">.</span> 3 tomcat root    22 2月  21 22:56 work
<span class="token namespace">[root@node2 ~]</span><span class="token comment"># systemctl daemon-reload </span>
<span class="token namespace">[root@node2 ~]</span><span class="token comment"># systemctl start tomcat.service </span>
</code></pre> 
  <h3>5、文件列表访问控制</h3> 
  <pre><code>1、/usr/local/tomcat/conf/web.xml 文件中default部分listings的配置必须为false;
            
            <param-name>listings</param-name>
            <param-value>false</param-value>
</code></pre> 
  <p>false为不列出目录文件,true为允许列出,默认为false;</p> 
  <h3>6、隐藏版本信息</h3> 
  <p>在配置中对一些常见错误进行重定向,避免当出现错误时tomcat 默认显示的错误页面暴露服务器和版本信 息;必须确保程序根目录下的错误页面已经存在;</p> 
  <pre><code>1、修改/usr/local/tomcat/conf/web.xml,重 定向403、404以及500等错误到指定的错误页面;
2、也可以通过修改应用程 序目录下的WEB- INF/web.xml下的配置进 行错误页面的重定向;

403/forbidden.jsp404/notfound.jsp</location500/systembusy.jsp
</code></pre> 
  <h2>Tomcat性能优化:增加tomcat处理线程数</h2> 
  <p>配置:<code>/usr/local/tomcat/conf/server.xml</code> 文件</p> 
  <pre><code class="prism language-powershell">参数说明:
maxThreads-<span class="token operator">--</span>-<span class="token operator">--</span>-<span class="token operator">--</span><span class="token operator">-</span>Tomcat使用线程来处理接收的每个请求。这个值表示Tomcat可创建的最大的线程数。
acceptCount-<span class="token operator">--</span>-<span class="token operator">--</span>-<span class="token operator">--</span>指定当所有可以使用的处理请求的线程数都被使用时,可以放到处理队列中的请求数,超过这个数的请求将不予处理。
connectionTimeout-<span class="token operator">--</span>网络连接超时,单位:毫秒。设置为0表示永不超时,这样设置有隐患的。通常可设置为30000毫秒。
minSpareThreads-<span class="token operator">--</span>-<span class="token operator">-</span>Tomcat初始化时创建的线程数。
maxSpareThreads-<span class="token operator">--</span>-<span class="token operator">-</span>一旦创建的线程超过这个值,Tomcat就会关闭不再需要的socket线程。
</code></pre> 
  <pre><code class="prism language-powershell"><Connector port=<span class="token string">"8080"</span> maxHttpHeaderSize=<span class="token string">"8192"</span> maxThreads=<span class="token string">"150"</span> minSpareThreads=<span class="token string">"30"</span> maxSpareThreads=<span class="token string">"75"</span> enableLookups=<span class="token string">"false"</span> redirectPort=<span class="token string">"8443"</span> acceptCount=<span class="token string">"100"</span>  disableUploadTimeout=<span class="token string">"true"</span> <span class="token operator">/</span>>
</code></pre> 
  <h2>常见内存错误:</h2> 
  <p>1、java.lang.OutOfMemoryError: Java heap space</p> 
  <blockquote> 
   <p>整体意思是超出内存堆空间的错误使用Java程序从数据库中查询大量的数据时出现异常在JVM中如果98%的时间是用于GC(Garbage Collection)且可用的Heap size 不足2%的时候将抛出此异常信息。</p> 
  </blockquote> 
  <p>2、java.lang.OutOfMemoryError: PermGen space</p> 
  <blockquote> 
   <p>PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的。如果你的WEB APP下都用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)那么就会产生此错误信息了。</p> 
  </blockquote> 
  <p>3、OutOfMemoryError: unable to create new native thread.</p> 
  <blockquote> 
   <p>无法创建新的线程。</p> 
  </blockquote> 
  <p>4、java “Too small initial heap” 错误</p> 
  <blockquote> 
   <p>Xmx设置小了。</p> 
  </blockquote> 
  <h4>具体解决方法:</h4> 
  <blockquote> 
   <p>#生产环境设置,假设内存空间为8G,在 <strong>/usr/local/tomcat/logs/catalina.out</strong> 在文件头部的注释下面,加入下面的内容:<br> export JAVA_OPTS=’-server –Xms4096m –Xmx4096m -Xmn256m -XX:PermSize=256m -XX:MaxNewSize=512m -XX:MaxPermSize=512m ’</p> 
  </blockquote> 
  <p>##Tomcat-Apache整合<br> ##Tomcat-nginx整合</p> 
  <h2>Tomcat多实例</h2> 
  <h4>1、单机多实例实现方法</h4> 
  <blockquote> 
   <p>1、复制Tomcat到不同的目录,更改server.xml等配置文件<br> 2、部署不停应用实例到webapps目录下或直接将多项目部署到同一Tomcat实例中</p> 
  </blockquote> 
  <h4>2、简单部署</h4> 
  <pre><code class="prism language-powershell">1、安装jdk与tomcat包
<span class="token namespace">[root@node2 ~]</span><span class="token comment"># yum install jdk-8u144-linux-x64.rpm -y</span>
<span class="token namespace">[root@node2 ~]</span><span class="token comment"># tar xf apache-tomcat-8.5.63.tar.gz -C /usr/locala/</span>

2、将tomcat复制分成两个程序目录
<span class="token namespace">[root@node2 ~]</span><span class="token comment"># cd /usr/local/</span>
<span class="token namespace">[root@node2 local]</span><span class="token comment"># mv apache-tomcat-8.5.63/ tomcat1</span>
<span class="token namespace">[root@node2 local]</span><span class="token comment"># cp -a tomcat1 tomcat2</span>

3、修改其中一个tomcat的配置文件中的端口号
<span class="token namespace">[root@node2 tomcat2]</span><span class="token comment"># vim conf/server.xml</span>
	<Server port=<span class="token string">"8015"</span> shutdown=<span class="token string">"SHUTDOWN"</span>>
	
    <Connector port=<span class="token string">"8180"</span> protocol=<span class="token string">"HTTP/1.1"</span> connectionTimeout=<span class="token string">"20000"</span> redirectPort=<span class="token string">"8443"</span> <span class="token operator">/</span>>

4、启动服务
<span class="token namespace">[root@node2 local]</span><span class="token comment"># /usr/local/tomcat1/bin/startup.sh </span>
<span class="token namespace">[root@node2 local]</span><span class="token comment"># /usr/local/tomcat2/bin/startup.sh</span>

5、关闭防火墙
<span class="token namespace">[root@node2 tomcat]</span><span class="token comment"># systemctl stop firewalld.service </span>

6、测试:
</code></pre> 
  <p><a href="http://img.e-com-net.com/image/info8/eeb80eb569414b4694d90080080612cb.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/eeb80eb569414b4694d90080080612cb.jpg" alt="web集群-web服务器--tomcat_第20张图片" width="650" height="386" style="border:1px solid black;"></a></p> 
  <p><a href="http://img.e-com-net.com/image/info8/494eeeacab2b431fbead4431805fe8f6.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/494eeeacab2b431fbead4431805fe8f6.jpg" alt="web集群-web服务器--tomcat_第21张图片" width="650" height="415" style="border:1px solid black;"></a></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1683416391065088000"></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">你可能感兴趣的:(web集群,RHCE)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1937792327703654400.htm"
                           title="Linux-高性能Web集群实践 day02" target="_blank">Linux-高性能Web集群实践 day02</a>
                        <span class="text-muted">胖可仃</span>
<a class="tag" taget="_blank" href="/search/Linux/1.htm">Linux</a>
                        <div>Linux-高性能Web集群实践Day02.中小规模Web集群规划与环境准备1.集群概念2.企业网站集群架3.网站集群架构搭建规划3.1中小规模基础网站集群架构规划3.2网站集群搭建顺序规划3.3主机IP及主机名规划表3.4安装及配置路径等规划4.网站集群架构系统优化4.1集群节点模板机统一基础优化4.2集群节点模板机统一扩展优化4.3集群节点模板机统一优化总结Day02.中小规模Web集群规划与</div>
                    </li>
                    <li><a href="/article/1934631942020460544.htm"
                           title="红帽认证工程师(RHCE):掌握Linux自动化的关键" target="_blank">红帽认证工程师(RHCE):掌握Linux自动化的关键</a>
                        <span class="text-muted">IT运维大本营</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%87%AA%E5%8A%A8%E5%8C%96/1.htm">自动化</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a>
                        <div>特别是在Linux系统管理领域,红帽认证工程师(RHCE)因其专业技能而备受青睐。本文将深入探讨RHCE的定义、考试内容以及职业发展的重要性,帮助读者更好地理解这一认证的价值。01、什么是红帽认证工程师(RHCE)红帽认证工程师(RHCE®)是红帽公司提供的一项专业认证,主要面向已经获得红帽认证系统管理员(RHCSA®)认证的IT专业人士。RHCE认证的取得,意味着网络管理员不仅掌握了基本的Lin</div>
                    </li>
                    <li><a href="/article/1934267247912611840.htm"
                           title="linux查看开关机记录 centos,CentOS linux 详细开机流程" target="_blank">linux查看开关机记录 centos,CentOS linux 详细开机流程</a>
                        <span class="text-muted">weixin_39770416</span>
<a class="tag" taget="_blank" href="/search/linux%E6%9F%A5%E7%9C%8B%E5%BC%80%E5%85%B3%E6%9C%BA%E8%AE%B0%E5%BD%95/1.htm">linux查看开关机记录</a><a class="tag" taget="_blank" href="/search/centos/1.htm">centos</a>
                        <div>小弟接触Linux刚好一个月多,特意找了注册很久的51cto写第一篇博客来整理整理知识。内容很多都是参考《鸟哥私房菜基础篇》、《RHCE培训》文档等等。。。恩,肯定有很多不足的地方,有什么不对的,请大家指出,小弟在这里感谢每一位看过这博客的人今天我要讲的主题是:《linux开机流程》相信很多刚学linux的人,都会觉得linux开机怎么这么复杂,像Windows,MacOS多方便啊,一键就能打开电</div>
                    </li>
                    <li><a href="/article/1930542092157775872.htm"
                           title="解锁 REDHAT 架构核心技术,实现 Linux 服务器故障秒级诊断修复" target="_blank">解锁 REDHAT 架构核心技术,实现 Linux 服务器故障秒级诊断修复</a>
                        <span class="text-muted">····懂···</span>
<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/linux/1.htm">linux</a>
                        <div>红帽架构师认证是红帽公司推出的一系列用于评估和认可技术专业人员在红帽相关技术领域专业能力的证书,在Linux和开源技术领域具有较高的权威性和认可度认证方向红帽认证系统管理员(RHCSA):主要针对Linux系统的基础管理,包括系统安装、用户管理、文件系统管理、网络配置等基础操作,是红帽认证体系中的初级认证。红帽认证工程师(RHCE):在RHCSA的基础上,更侧重于系统的高级管理和运维,如服务器的部</div>
                    </li>
                    <li><a href="/article/1930188792333922304.htm"
                           title="【Linux 】centos8搭建nextcloud全过程" target="_blank">【Linux 】centos8搭建nextcloud全过程</a>
                        <span class="text-muted">xmweisi02</span>
<a class="tag" taget="_blank" href="/search/linux%E6%8A%80%E6%9C%AF%E4%B8%93%E6%A0%8F-%E5%BE%AE%E6%80%9D%E7%BD%91%E7%BB%9C/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><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a><a class="tag" taget="_blank" href="/search/RHCA/1.htm">RHCA</a>
                        <div>原创:厦门微思网络红帽认证|RHCE认证课程红帽认证|RHCA认证课程(进阶云计算与自动化)开启端口firewall-cmd--zone=public--add-port=80/tcp--permanentfirewall-cmd--zone=public--add-port=22/tcp--permanentfirewall-cmd--reloadsystemctlrestartfirewall</div>
                    </li>
                    <li><a href="/article/1929840405503864832.htm"
                           title="Haproxy搭建Web群集" target="_blank">Haproxy搭建Web群集</a>
                        <span class="text-muted">w王大头w</span>
<a class="tag" taget="_blank" href="/search/lvs/1.htm">lvs</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><a class="tag" taget="_blank" href="/search/web/1.htm">web</a>
                        <div>目录一、理论1、Haproxy集群2、特点3、策略4、优势二、搭建web集群一、理论1、Haproxy集群HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web</div>
                    </li>
                    <li><a href="/article/1929837249160081408.htm"
                           title="2024:CSDN上的收获与蜕变——我的技术成长之旅" target="_blank">2024:CSDN上的收获与蜕变——我的技术成长之旅</a>
                        <span class="text-muted">江湖有缘</span>
<a class="tag" taget="_blank" href="/search/%E5%88%9B%E4%BD%9C%E5%8F%8A%E6%84%9F%E6%82%9F/1.htm">创作及感悟</a><a class="tag" taget="_blank" href="/search/%E5%B9%B4%E5%BA%A6%E6%80%BB%E7%BB%93/1.htm">年度总结</a><a class="tag" taget="_blank" href="/search/CSDN/1.htm">CSDN</a>
                        <div>2024:CSDN上的收获与蜕变——我的技术成长之旅前言数据见证:2024年的创作足迹荣誉殿堂:各平台的创作证书与认可社区共建:行业贡献与互动交流展望未来:2025年的目标与计划结语前言博主简介:江湖有缘在技术的广袤天地里,我们因缘相聚。我是博主“江湖有缘”,一位拥有十年企业基础架构运维经验的技术探索者。持有华为HCIE云计算、红帽RHCE以及华为数通HCIP等多项权威认证,专注于云计算、Linu</div>
                    </li>
                    <li><a href="/article/1929059452342824960.htm"
                           title="负载均衡集群--Haproxy群集" target="_blank">负载均衡集群--Haproxy群集</a>
                        <span class="text-muted">把梦想藏在蘑菇里</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>文章目录WEB集群调度器HaproxyHaproxy概述Haproxy应用Haproxy常用调度算法SH(SourceHashing)leastconnroundrobin:动态算法,(加权)轮询;Haproxy日志管理Haproxy参数优化使用Haproxy搭建web群集案例环境服务配置配置步骤配置内容haproxy代理调度配置haproxy日志管理相关软件WEB集群调度器目前常见的Web集群调</div>
                    </li>
                    <li><a href="/article/1928562332938596352.htm"
                           title="RHCE之seLinux和防火墙" target="_blank">RHCE之seLinux和防火墙</a>
                        <span class="text-muted">小白lhd</span>
<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/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>目录SELinux:SELinux工作原理:常用的SELinux的几种文件类型:1、文件类型(filetype):用于限制文件的访问。2、进程类型(processtype):用于限制进程的行为。常见的类型包括:3、端口类型(porttype):用于限制网络端口的访问。常见的类型包括:SELinux的三种模式:修改安全上下文:1、chcon命令例子:使用nginx服务演示安全上下文值的设定2、sem</div>
                    </li>
                    <li><a href="/article/1928208025315766272.htm"
                           title="Web集群架构-Nginx深入(二)" target="_blank">Web集群架构-Nginx深入(二)</a>
                        <span class="text-muted">阿里云架构师-取经版</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a>
                        <div>nginx访问网站流程使用域名访问网站流程:DNS解析:域名IP地址连接80端口:tcp3次握手与网站的80端口建立连接http请求豹纹:请求方法,URI,HOST等信息GET/index.htmlHOST:cxk.oldboylinux.cnUser-Agent:Chrome/xxxngx处理:http请求,http区域处理不同的server{}区域(子配置文件)处理.端口域名:用户请求的域名与</div>
                    </li>
                    <li><a href="/article/1927299862559256576.htm"
                           title="综合实现案例 LVS keepalived mysql 等" target="_blank">综合实现案例 LVS keepalived mysql 等</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/%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><a class="tag" taget="_blank" href="/search/lvs/1.htm">lvs</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>基于企业级高可用架构的Linux案例,整合Nginx、HTTPS、LVS、Keepalived、MySQL等服务,实现Web服务的负载均衡、高可用性及数据持久化。案例场景:高可用Web服务架构目标构建高可用Web集群,支持负载均衡和故障自动切换。实现HTTPS加密访问,保障数据传输安全。使用MySQL主从复制实现数据库高可用和读写分离。前提配置环境1.负载均衡与Web服务合并(2台主机)角色复用:</div>
                    </li>
                    <li><a href="/article/1924812916696084480.htm"
                           title="RHCE NFS服务器" target="_blank">RHCE NFS服务器</a>
                        <span class="text-muted">周雨濛</span>
<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><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>第五章nfs服务器MySQL端口3306nfs无固定端口,一般是20491、简介NFS(NetworkFileSystem,网络文件系统)是FreeBSD支持的文件系统中的一种,它允许网络中的计算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源,主要在unix系列操作系统上使用。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一</div>
                    </li>
                    <li><a href="/article/1924812033581182976.htm"
                           title="rhce-nfs" target="_blank">rhce-nfs</a>
                        <span class="text-muted">秃头泥猴</span>
<a class="tag" taget="_blank" href="/search/rhce/1.htm">rhce</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/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/unix/1.htm">unix</a>
                        <div>NFS(NetworkFileSystem,网络文件系统)是FreeBSD支持的文件系统中的一种,它允许网络中的计算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源,主要在unix系列操作系统上使用。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。NFS(NetworkFileSystem,网络文件系统)是FreeBSD支</div>
                    </li>
                    <li><a href="/article/1919352444345708544.htm"
                           title="RHCE 第十三天 SELINUX" target="_blank">RHCE 第十三天 SELINUX</a>
                        <span class="text-muted">GGGGGGGG!</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/ssh/1.htm">ssh</a>
                        <div>文章目录selinuxselinux的作用及权限管理机制selinux基本概念布尔值selinux图形化管理界面selinuxSELinux(Security-EnhancedLinux)是美国国家安全局(NSA)对于强制访问控制的实现,是Linux历史上最杰出的新安全子系统。SELinux提供了一种灵活的强制访问控制(MAC)系统,且内嵌于LinuxKernel中。SELinux定义了系统中每个</div>
                    </li>
                    <li><a href="/article/1919350302654394368.htm"
                           title="RHCE-第七章:SELinux" target="_blank">RHCE-第七章:SELinux</a>
                        <span class="text-muted">obboda</span>
<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><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>
                        <div>一、selinux的说明SELinux是Security-EnhancedLinux的缩写,意思是安全强化的linux。SELinux主要由美国国家安全局(NSA)开发,当初开发的目的是为了避免资源的误用。系统资源都是通过程序进行访问的,如果将/var/www/html/权限设置为777,代表所有程序均可对该目录访问,如果已经启动www服务器软件,那么该软件触发的进程将可以写入该目录,而该进程是对</div>
                    </li>
                    <li><a href="/article/1919348537766768640.htm"
                           title="RHCE第六章:DNS域名解析服务器" target="_blank">RHCE第六章:DNS域名解析服务器</a>
                        <span class="text-muted">Forget_8550</span>
<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>一、DNS域名解析服务器1.作用正向解析:通过域名解析成IP地址访问服务反向解析:通过IP地址解析成域名访问服务2.连接方式DNS使用53端口监听网络3.域名服务器根域名服务器:全球总计只有十三台服务器,记录所有顶级域名服务器地址(如:*.com,*.net,*.uk,*.cn······)顶级域名服务器:记录所有权威域名服务器地址(如:*.baidu.com,*.taobao.com······</div>
                    </li>
                    <li><a href="/article/1919348411404972032.htm"
                           title="RHCE第五章:NFS服务器" target="_blank">RHCE第五章:NFS服务器</a>
                        <span class="text-muted">Forget_8550</span>
<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>一、NFS(networkfilesystem)网络文件系统:在互联网中共享服务器中的文件资源(用于Linux主机共享文件的协议)。使用nfs服务需要安装:nfs-utils以及rpcbindnfs-utils:提供nfs服务的程序rpcbind:管理nfs所有进程端口号的程序二、实验1:服务器与客户端共享文件(1)[root@Server~]#dnfinstallnfs-utils#在服务器安装</div>
                    </li>
                    <li><a href="/article/1915705847044960256.htm"
                           title="实战教程:如何在CentOS7中使用Docker部署Keepalived和Nginx构建高可用Web集群" target="_blank">实战教程:如何在CentOS7中使用Docker部署Keepalived和Nginx构建高可用Web集群</a>
                        <span class="text-muted">江湖有缘</span>
<a class="tag" taget="_blank" href="/search/Linux%E6%8A%80%E6%9C%AF%E5%AD%A6%E4%B9%A0/1.htm">Linux技术学习</a><a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/Keepalived/1.htm">Keepalived</a>
                        <div>实战教程:如何在CentOS7中使用Docker部署Keepalived和Nginx构建高可用Web集群一、keepalived介绍1.1keepalived简介1.2keepalived主要特点和功能1.3使用场景二、本地环境介绍2.1本地环境规划2.2本次实践介绍三、本地环境检查3.1检查Docker服务状态3.2检查Docker版本3.3检查dockercompose版本四、创建实验环境4.</div>
                    </li>
                    <li><a href="/article/1912491706364784640.htm"
                           title="2021 年 12 月大学英语四级考试真题(第 2 套)——解析版" target="_blank">2021 年 12 月大学英语四级考试真题(第 2 套)——解析版</a>
                        <span class="text-muted">fo安方</span>
<a class="tag" taget="_blank" href="/search/%E8%8B%B1%E8%AF%AD%E2%80%94%E5%9B%9B%E7%BA%A7CET4/1.htm">英语—四级CET4</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%9B%9B%E7%BA%A7/1.htm">四级</a><a class="tag" taget="_blank" href="/search/%E8%8B%B1%E8%AF%AD/1.htm">英语</a>
                        <div>个人主页:fo安方的博客✨个人简历:大家好,我是fo安方,目前中南大学MBA在读,也考取过HCIECloudComputing、CCIESecurity、PMP、CISP、RHCE、CCNPRS、PEST3等证书。兴趣爱好:b站天天刷,题目常常看,运动偶尔做,学习需劳心,寻觅些乐趣。欢迎大家:这里是CSDN,是我记录我的日常学习,偶尔生活的地方,喜欢的话请一键三连,有问题请评论区讨论。导读页:这是</div>
                    </li>
                    <li><a href="/article/1909116520135454720.htm"
                           title="红帽RHCE认证报名全流程指南" target="_blank">红帽RHCE认证报名全流程指南</a>
                        <span class="text-muted">博睿谷IT99_</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E7%BA%A2%E5%B8%BD%E8%AE%A4%E8%AF%81/1.htm">红帽认证</a><a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a><a class="tag" taget="_blank" href="/search/RHCSA/1.htm">RHCSA</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/1.htm">系统</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E8%AE%A1%E7%AE%97/1.htm">云计算</a>
                        <div>红帽RHCE(RedHatCertifiedEngineer)是Linux领域含金量最高的中级认证之一,2024年考试版本为RHEL9,重点考察Ansible自动化运维能力。红帽认证考试流程指导。以下是详细报名步骤与注意事项:一、报名前准备确认资格要求:强制条件:需先通过RHCSA(红帽认证系统管理员考试(考试代码EX200)。无强制培训要求,但建议参加官方课程(RH134+RH294)。考试版本</div>
                    </li>
                    <li><a href="/article/1904455506064371712.htm"
                           title="RHCE综合实验" target="_blank">RHCE综合实验</a>
                        <span class="text-muted">Girrzy</span>
<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/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>任务需求:客户端通过访问www.nihao.com后,能够通过dns域名解析,访问到nginx服务中由nfs共享的首页文件,内容为:Verygood,youhavesuccessfullysetupthesystem.各个主机能够实现时间同步,并且都开启防火墙来保证服务安装。作用系统IP主机名软件web服务器redhat9.5192.168.121.8webnginx,nfs-utilsnfs服务</div>
                    </li>
                    <li><a href="/article/1902917323782680576.htm"
                           title="2020 年 9 月大学英语四级考试真题(第 1 套)——纯享题目版" target="_blank">2020 年 9 月大学英语四级考试真题(第 1 套)——纯享题目版</a>
                        <span class="text-muted">fo安方</span>
<a class="tag" taget="_blank" href="/search/%E8%8B%B1%E8%AF%AD%E2%80%94%E5%9B%9B%E7%BA%A7CET4/1.htm">英语—四级CET4</a><a class="tag" taget="_blank" href="/search/%E5%9B%9B%E7%BA%A7/1.htm">四级</a><a class="tag" taget="_blank" href="/search/%E8%8B%B1%E8%AF%AD/1.htm">英语</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>个人主页:fo安方的博客✨个人简历:大家好,我是fo安方,目前中南大学MBA在读,也考取过HCIECloudComputing、CCIESecurity、PMP、CISP、RHCE、CCNPRS、PEST3等证书。兴趣爱好:b站天天刷,题目常常看,运动偶尔做,学习需劳心,寻觅些乐趣。欢迎大家:这里是CSDN,是我记录我的日常学习,偶尔生活的地方,喜欢的话请一键三连,有问题请评论区讨论。导读页:这是</div>
                    </li>
                    <li><a href="/article/1901880418039296000.htm"
                           title="Linux系统运维工程师入门绝招放送" target="_blank">Linux系统运维工程师入门绝招放送</a>
                        <span class="text-muted">云计算运维工程师</span>
<a class="tag" taget="_blank" href="/search/%E8%B5%84%E8%AE%AF/1.htm">资讯</a>
                        <div>运维是干嘛的?安装服务器系统?重装系统再装系统?背锅的?我就稀里糊涂的,这样报着必死的决心,考下RHCE认证,走上了Linux运维的道路,成为了一名linux运维工程师。有些心得跟大家分享下,避免小白多走冤路。Linux运维必须要掌握的工具,我列出这几方面,这样的话入门就基本没问题。Linux系统学习可以选用redhat或者centos,特别是centos在企业中用得最多,当然还会有其它版本的,以</div>
                    </li>
                    <li><a href="/article/1900846929881919488.htm"
                           title="LVS、Haproxy、Nginx区别" target="_blank">LVS、Haproxy、Nginx区别</a>
                        <span class="text-muted">SHISHIZHIZHI</span>
<a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>LVS、Haproxy、Nginx区别一、Haproxy调度算法1.常见的web集群调度器2.Haproxy应用分析3.Haproxy调度算法原理4.Haproxy的主要特性5.Haproxy的优点6、LVS.Haproxy、Nginx区别二、Haproxy优化三、Haproxy日志1.修改主配置文件2.修改rsyslog配置一、Haproxy调度算法1.常见的web集群调度器目前常见的web集群</div>
                    </li>
                    <li><a href="/article/1899579548907925504.htm"
                           title="RHCE-web篇" target="_blank">RHCE-web篇</a>
                        <span class="text-muted">2022计科一班唐文</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>一.web服务器Web服务器是一种软件或硬件系统,用于接收、处理和响应来自客户端(通常是浏览器)的HTTP请求。它的主要功能是存储和提供网站内容,比如HTML页面、图像、视频等。Web服务器的主要功能处理请求:当用户在浏览器中输入网址时,浏览器会发送一个HTTP请求到Web服务器。服务器接收到请求后,处理该请求并生成响应。提供内容:Web服务器根据请求的资源类型(例如HTML、CSS、JavaSc</div>
                    </li>
                    <li><a href="/article/1899275984855691264.htm"
                           title="新的一年,新的感受和成长" target="_blank">新的一年,新的感受和成长</a>
                        <span class="text-muted">是小天才哦</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E9%AB%98%E8%81%8C%E7%94%9F%E9%97%B2%E8%B0%88/1.htm">高职生闲谈</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>本人现在是工作快2年的打工人,我是前年7月份毕业的大专生。其实我在大学刚开始的时候因为体验过社会的毒打,所以发誓一定要好好学习,而我也的确好好学习了,在学校2年时间里,大部分时间都是在图书馆里面看书,主要为啥天天在图书馆很大原因是本专业的课程自己不是非常喜欢(我是人工智能专业,人工智能专业大专学历出来基本也是打框的无聊活)所以我就自己学习了系统运维方向,这个过程也考取了RHCE认证,也是因为这个认</div>
                    </li>
                    <li><a href="/article/1898680654950887424.htm"
                           title="RHCE——笔记" target="_blank">RHCE——笔记</a>
                        <span class="text-muted">tan &</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</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>
                        <div>Web服务器1,web服务器简介(1)什么是www是全球信息广播的意思。通常说的上网就是使用www来查询用户所需要的信息。www可以结合文字、图形、影像以及声音等多媒体,并通过可以让鼠标单击超链接的方式将信息以Internet传递到世界各处去(2)网址及HTTP简介web服务器提供的这些数据大部分都是文件,那么我们需要在服务器端先将数据文件写好,并且放置在某个特殊的目录下面,这个目录就是我们整个网</div>
                    </li>
                    <li><a href="/article/1897756660630351872.htm"
                           title="rhce第二次笔记" target="_blank">rhce第二次笔记</a>
                        <span class="text-muted">Eoip_zacb</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>第二章:时间服务器东八区:UTC+8=CST(北京时间)应用层的时间协议:NTP(网络时间协议):udp/端口:123Chrony软件:由chronyd(客户端)和chronyc(服务器)两个程序组成chronyd相当于一个守护者,守护进程;chronyc用于监测性能及配置1、软件安装(1)先配置好yum的相关文件#本地源[root@localhost~]#cat/etc/yum.repos.d/</div>
                    </li>
                    <li><a href="/article/1897706827416662016.htm"
                           title="RHCE---第二部分" target="_blank">RHCE---第二部分</a>
                        <span class="text-muted">Chen_l916</span>
<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/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>第二部分shell脚本编程一、shell基本知识shell程序的特点:1、简单易学2、解释性语言,不需要编译即可执行Shell又称命令解释器,它能识别用户输入的各种命令,并传递给操作系统。它的作用类似于Windows操作系统中的命令行,但是,Shell的功能远比命令行强大的多。在UNIX或者localhost中,Shell既是用户交互的界面,也是控制系统的脚本语言。shell的分类·BourneS</div>
                    </li>
                    <li><a href="/article/1896039705644953600.htm"
                           title="web集群(LVS-DR)" target="_blank">web集群(LVS-DR)</a>
                        <span class="text-muted">Spike()</span>
<a class="tag" taget="_blank" href="/search/lvs/1.htm">lvs</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>LVS是LinuxVirtualServer的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org。现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须要重新编译内核以支持LVS功能模块,但是从Linux2.4内核以后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,</div>
                    </li>
                                <li><a href="/article/50.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/eclipse/1.htm">eclipse</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/c/1.htm">c</a><a class="tag" taget="_blank" href="/search/encapsulatopn/1.htm">encapsulatopn</a>
                                    <div>       最近一段时间看了很多的视频却忘记总结了,现在只能想到什么写什么了,希望能起到一个回忆巩固的作用。 
    1、final关键字 
      译为:最终的 
       &</div>
                                </li>
                                <li><a href="/article/177.htm"
                                       title="F5与集群的区别" target="_blank">F5与集群的区别</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/weblogic/1.htm">weblogic</a><a class="tag" taget="_blank" href="/search/%E9%9B%86%E7%BE%A4/1.htm">集群</a><a class="tag" taget="_blank" href="/search/F5/1.htm">F5</a>
                                    <div>        http请求配置不是通过集群,而是F5;集群是weblogic容器的,如果是ejb接口是通过集群。 
        F5同集群的差别,主要还是会话复制的问题,F5一把是分发http请求用的,因为http都是无状态的服务,无需关注会话问题,类似</div>
                                </li>
                                <li><a href="/article/304.htm"
                                       title="LeetCode[Math] - #7 Reverse Integer" target="_blank">LeetCode[Math] - #7 Reverse Integer</a>
                                    <span class="text-muted">Cwind</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%A2%98%E8%A7%A3/1.htm">题解</a><a class="tag" taget="_blank" href="/search/Math/1.htm">Math</a><a class="tag" taget="_blank" href="/search/LeetCode/1.htm">LeetCode</a><a class="tag" taget="_blank" href="/search/Algorithm/1.htm">Algorithm</a>
                                    <div>原题链接:#7 Reverse Integer 
  
要求: 
按位反转输入的数字 
例1: 输入 x = 123, 返回 321 
例2: 输入 x = -123, 返回 -321 
  
难度:简单 
  
分析: 
对于一般情况,首先保存输入数字的符号,然后每次取输入的末位(x%10)作为输出的高位(result = result*10 + x%10)即可。但</div>
                                </li>
                                <li><a href="/article/431.htm"
                                       title="BufferedOutputStream" target="_blank">BufferedOutputStream</a>
                                    <span class="text-muted">周凡杨</span>

                                    <div>     首先说一下这个大批量,是指有上千万的数据量。 
     例子: 
     有一张短信历史表,其数据有上千万条数据,要进行数据备份到文本文件,就是执行如下SQL然后将结果集写入到文件中! 
     select t.msisd</div>
                                </li>
                                <li><a href="/article/558.htm"
                                       title="linux下模拟按键输入和鼠标" target="_blank">linux下模拟按键输入和鼠标</a>
                                    <span class="text-muted">被触发</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 
设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键,比如KEY_0,KEY-Z等,所以需要用到按键 模拟,具体方法就是操作/dev/input/event1文件,向它写入个input_event结构体就可以模拟按键的输入了。 
 
linux/in</div>
                                </li>
                                <li><a href="/article/685.htm"
                                       title="ContentProvider初体验" target="_blank">ContentProvider初体验</a>
                                    <span class="text-muted">肆无忌惮_</span>
<a class="tag" taget="_blank" href="/search/ContentProvider/1.htm">ContentProvider</a>
                                    <div>ContentProvider在安卓开发中非常重要。与Activity,Service,BroadcastReceiver并称安卓组件四大天王。 
在android中的作用是用来对外共享数据。因为安卓程序的数据库文件存放在data/data/packagename里面,这里面的文件默认都是私有的,别的程序无法访问。 
如果QQ游戏想访问手机QQ的帐号信息一键登录,那么就需要使用内容提供者COnte</div>
                                </li>
                                <li><a href="/article/812.htm"
                                       title="关于Spring MVC项目(maven)中通过fileupload上传文件" target="_blank">关于Spring MVC项目(maven)中通过fileupload上传文件</a>
                                    <span class="text-muted">843977358</span>
<a class="tag" taget="_blank" href="/search/mybatis/1.htm">mybatis</a><a class="tag" taget="_blank" href="/search/spring+mvc/1.htm">spring mvc</a><a class="tag" taget="_blank" href="/search/%E4%BF%AE%E6%94%B9%E5%A4%B4%E5%83%8F/1.htm">修改头像</a><a class="tag" taget="_blank" href="/search/%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB%B6/1.htm">上传文件</a><a class="tag" taget="_blank" href="/search/upload/1.htm">upload</a>
                                    <div>Spring MVC 中通过fileupload上传文件,其中项目使用maven管理。 
  
1.上传文件首先需要的是导入相关支持jar包:commons-fileupload.jar,commons-io.jar 
因为我是用的maven管理项目,所以要在pom文件中配置(每个人的jar包位置根据实际情况定) 
<!-- 文件上传 start by zhangyd-c --&g</div>
                                </li>
                                <li><a href="/article/939.htm"
                                       title="使用svnkit api,纯java操作svn,实现svn提交,更新等操作" target="_blank">使用svnkit api,纯java操作svn,实现svn提交,更新等操作</a>
                                    <span class="text-muted">aigo</span>
<a class="tag" taget="_blank" href="/search/svnkit/1.htm">svnkit</a>
                                    <div> 原文:http://blog.csdn.net/hardwin/article/details/7963318 
  
import java.io.File;  
  
import org.apache.log4j.Logger;  
import org.tmatesoft.svn.core.SVNCommitInfo;  
import org.tmateso</div>
                                </li>
                                <li><a href="/article/1066.htm"
                                       title="对比浏览器,casperjs,httpclient的Header信息" target="_blank">对比浏览器,casperjs,httpclient的Header信息</a>
                                    <span class="text-muted">alleni123</span>
<a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/crawler/1.htm">crawler</a><a class="tag" taget="_blank" href="/search/header/1.htm">header</a>
                                    <div>		@Override
		protected void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
		{
			String type=req.getParameter("type");
			Enumeration es=re</div>
                                </li>
                                <li><a href="/article/1193.htm"
                                       title="java.io操作 DataInputStream和DataOutputStream基本数据流" target="_blank">java.io操作 DataInputStream和DataOutputStream基本数据流</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%B5%81/1.htm">流</a>
                                    <div>1,java中如果不保存整个对象,只保存类中的属性,那么我们可以使用本篇文章中的方法,如果要保存整个对象  先将类实例化  后面的文章将详细写到 
  
  
2,DataInputStream 是java.io包中一个数据输入流允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。应用程序可以使用数据输出流写入稍后由数据输入流读取的数据。</div>
                                </li>
                                <li><a href="/article/1320.htm"
                                       title="车辆保险理赔案例" target="_blank">车辆保险理赔案例</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%A6%E9%99%A9/1.htm">车险</a>
                                    <div>理赔案例: 
一货运车,运输公司为车辆购买了机动车商业险和交强险,也买了安全生产责任险,运输一车烟花爆竹,在行驶途中发生爆炸,出现车毁、货损、司机亡、炸死一路人、炸毁一间民宅等惨剧,针对这几种情况,该如何赔付。 
赔付建议和方案: 
客户所买交强险在这里不起作用,因为交强险的赔付前提是:“机动车发生道路交通意外事故”; 
如果是交通意外事故引发的爆炸,则优先适用交强险条款进行赔付,不足的部分由商业</div>
                                </li>
                                <li><a href="/article/1447.htm"
                                       title="学习Spring必学的Java基础知识(5)—注解" target="_blank">学习Spring必学的Java基础知识(5)—注解</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>        文章来源:http://www.iteye.com/topic/1123823,整理在我的博客有两个目的:一个是原文确实很不错,通俗易懂,督促自已将博主的这一系列关于Spring文章都学完;另一个原因是为免原文被博主删除,在此记录,方便以后查找阅读。 
  
        有必要对</div>
                                </li>
                                <li><a href="/article/1574.htm"
                                       title="【Struts2一】Struts2 Hello World" target="_blank">【Struts2一】Struts2 Hello World</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/Hello+world/1.htm">Hello world</a>
                                    <div>Struts2 Hello World应用的基本步骤 
创建Struts2的Hello World应用,包括如下几步: 
1.配置web.xml 
2.创建Action 
3.创建struts.xml,配置Action 
4.启动web server,通过浏览器访问 
  配置web.xml 
<?xml version="1.0" encoding="</div>
                                </li>
                                <li><a href="/article/1701.htm"
                                       title="【Avro二】Avro RPC框架" target="_blank">【Avro二】Avro RPC框架</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/rpc/1.htm">rpc</a>
                                    <div>1. Avro RPC简介 1.1. RPC 
 
 RPC逻辑上分为二层,一是传输层,负责网络通信;二是协议层,将数据按照一定协议格式打包和解包 
 从序列化方式来看,Apache Thrift 和Google的Protocol Buffers和Avro应该是属于同一个级别的框架,都能跨语言,性能优秀,数据精简,但是Avro的动态模式(不用生成代码,而且性能很好)这个特点让人非常喜欢,比较适合R</div>
                                </li>
                                <li><a href="/article/1828.htm"
                                       title="lua set get cookie" target="_blank">lua set get cookie</a>
                                    <span class="text-muted">ronin47</span>
<a class="tag" taget="_blank" href="/search/lua+cookie/1.htm">lua cookie</a>
                                    <div>lua:
local access_token = ngx.var.cookie_SGAccessToken
if access_token then
    ngx.header["Set-Cookie"] = "SGAccessToken="..access_token.."; path=/;Max-Age=3000"
end</div>
                                </li>
                                <li><a href="/article/1955.htm"
                                       title="java-打印不大于N的质数" target="_blank">java-打印不大于N的质数</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                                    <div>

public class PrimeNumber {

	/**
	 * 寻找不大于N的质数
	 */
	public static void main(String[] args) {
		int n=100;
		PrimeNumber pn=new PrimeNumber();
		pn.printPrimeNumber(n);
		System.out.print</div>
                                </li>
                                <li><a href="/article/2082.htm"
                                       title="Spring源码学习-PropertyPlaceholderHelper" target="_blank">Spring源码学习-PropertyPlaceholderHelper</a>
                                    <span class="text-muted">bylijinnan</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>今天在看Spring 3.0.0.RELEASE的源码,发现PropertyPlaceholderHelper的一个bug 
当时觉得奇怪,上网一搜,果然是个bug,不过早就有人发现了,且已经修复: 
详见: 
http://forum.spring.io/forum/spring-projects/container/88107-propertyplaceholderhelper-bug 
 
</div>
                                </li>
                                <li><a href="/article/2209.htm"
                                       title="[逻辑与拓扑]布尔逻辑与拓扑结构的结合会产生什么?" target="_blank">[逻辑与拓扑]布尔逻辑与拓扑结构的结合会产生什么?</a>
                                    <span class="text-muted">comsci</span>
<a class="tag" taget="_blank" href="/search/%E6%8B%93%E6%89%91/1.htm">拓扑</a>
                                    <div> 
   如果我们已经在一个工作流的节点中嵌入了可以进行逻辑推理的代码,那么成百上千个这样的节点如果组成一个拓扑网络,而这个网络是可以自动遍历的,非线性的拓扑计算模型和节点内部的布尔逻辑处理的结合,会产生什么样的结果呢? 
 
   是否可以形成一种新的模糊语言识别和处理模型呢?  大家有兴趣可以试试,用软件搞这些有个好处,就是花钱比较少,就算不成</div>
                                </li>
                                <li><a href="/article/2336.htm"
                                       title="ITEYE 都换百度推广了" target="_blank">ITEYE 都换百度推广了</a>
                                    <span class="text-muted">cuisuqiang</span>
<a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a><a class="tag" taget="_blank" href="/search/AdSense/1.htm">AdSense</a><a class="tag" taget="_blank" href="/search/%E7%99%BE%E5%BA%A6%E6%8E%A8%E5%B9%BF/1.htm">百度推广</a><a class="tag" taget="_blank" href="/search/%E5%B9%BF%E5%91%8A/1.htm">广告</a><a class="tag" taget="_blank" href="/search/%E5%A4%96%E5%BF%AB/1.htm">外快</a>
                                    <div>以前ITEYE的广告都是谷歌的Google AdSense,现在都换成百度推广了。 
  
为什么个人博客设置里面还是Google AdSense呢? 
  
都知道Google AdSense不好申请,这在ITEYE上也不是讨论了一两天了,强烈建议ITEYE换掉Google AdSense。至少,用一个好申请的吧。 
  
什么时候能从ITEYE上来点外快,哪怕少点</div>
                                </li>
                                <li><a href="/article/2463.htm"
                                       title="新浪微博技术架构分析" target="_blank">新浪微博技术架构分析</a>
                                    <span class="text-muted">dalan_123</span>
<a class="tag" taget="_blank" href="/search/%E6%96%B0%E6%B5%AA%E5%BE%AE%E5%8D%9A/1.htm">新浪微博</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                                    <div>新浪微博在短短一年时间内从零发展到五千万用户,我们的基层架构也发展了几个版本。第一版就是是非常快的,我们可以非常快的实现我们的模块。我们看一下技术特点,微博这个产品从架构上来分析,它需要解决的是发表和订阅的问题。我们第一版采用的是推的消息模式,假如说我们一个明星用户他有10万个粉丝,那就是说用户发表一条微博的时候,我们把这个微博消息攒成10万份,这样就是很简单了,第一版的架构实际上就是这两行字。第</div>
                                </li>
                                <li><a href="/article/2590.htm"
                                       title="玩转ARP攻击" target="_blank">玩转ARP攻击</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/r/1.htm">r</a>
                                    <div>我写这片文章只是想让你明白深刻理解某一协议的好处。高手免看。如果有人利用这片文章所做的一切事情,盖不负责。 网上关于ARP的资料已经很多了,就不用我都说了。 用某一位高手的话来说,“我们能做的事情很多,唯一受限制的是我们的创造力和想象力”。 ARP也是如此。 以下讨论的机子有 一个要攻击的机子:10.5.4.178 硬件地址:52:54:4C:98</div>
                                </li>
                                <li><a href="/article/2717.htm"
                                       title="PHP编码规范" target="_blank">PHP编码规范</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A0%81%E8%A7%84%E8%8C%83/1.htm">编码规范</a>
                                    <div>一、文件格式 
1. 对于只含有 php 代码的文件,我们将在文件结尾处忽略掉 "?>" 。这是为了防止多余的空格或者其它字符影响到代码。例如:<?php$foo = 'foo';2. 缩进应该能够反映出代码的逻辑结果,尽量使用四个空格,禁止使用制表符TAB,因为这样能够保证有跨客户端编程器软件的灵活性。例</div>
                                </li>
                                <li><a href="/article/2844.htm"
                                       title="linux 脱机管理(nohup)" target="_blank">linux 脱机管理(nohup)</a>
                                    <span class="text-muted">eksliang</span>
<a class="tag" taget="_blank" href="/search/linux+nohup/1.htm">linux nohup</a><a class="tag" taget="_blank" href="/search/nohup/1.htm">nohup</a>
                                    <div>脱机管理 nohup 
转载请出自出处:http://eksliang.iteye.com/blog/2166699 
nohup可以让你在脱机或者注销系统后,还能够让工作继续进行。他的语法如下 
nohup [命令与参数]   --在终端机前台工作
nohup [命令与参数] & --在终端机后台工作 
  
但是这个命令需要注意的是,nohup并不支持bash的内置命令,所</div>
                                </li>
                                <li><a href="/article/2971.htm"
                                       title="BusinessObjects Enterprise Java SDK" target="_blank">BusinessObjects Enterprise Java SDK</a>
                                    <span class="text-muted">greemranqq</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/BO/1.htm">BO</a><a class="tag" taget="_blank" href="/search/SAP/1.htm">SAP</a><a class="tag" taget="_blank" href="/search/Crystal+Reports/1.htm">Crystal Reports</a>
                                    <div>最近项目用到oracle_ADF  从SAP/BO 上调用 水晶报表,资料比较少,我做一个简单的分享,给和我一样的新手 提供更多的便利。 
  
首先,我是尝试用JAVA JSP 去访问的。 
  
官方API:http://devlibrary.businessobjects.com/BusinessObjectsxi/en/en/BOE_SDK/boesdk_ja</div>
                                </li>
                                <li><a href="/article/3098.htm"
                                       title="系统负载剧变下的管控策略" target="_blank">系统负载剧变下的管控策略</a>
                                    <span class="text-muted">iamzhongyong</span>
<a class="tag" taget="_blank" href="/search/%E9%AB%98%E5%B9%B6%E5%8F%91/1.htm">高并发</a>
                                    <div>假如目前的系统有100台机器,能够支撑每天1亿的点击量(这个就简单比喻一下),然后系统流量剧变了要,我如何应对,系统有那些策略可以处理,这里总结了一下之前的一些做法。 
1、水平扩展 
这个最容易理解,加机器,这样的话对于系统刚刚开始的伸缩性设计要求比较高,能够非常灵活的添加机器,来应对流量的变化。 
2、系统分组 
假如系统服务的业务不同,有优先级高的,有优先级低的,那就让不同的业务调用提前分组</div>
                                </li>
                                <li><a href="/article/3225.htm"
                                       title="BitTorrent DHT 协议中文翻译" target="_blank">BitTorrent DHT 协议中文翻译</a>
                                    <span class="text-muted">justjavac</span>
<a class="tag" taget="_blank" href="/search/bit/1.htm">bit</a>
                                    <div>前言 
做了一个磁力链接和BT种子的搜索引擎 {Magnet & Torrent},因此把 DHT 协议重新看了一遍。 
 
 BEP: 5Title: DHT ProtocolVersion: 3dec52cb3ae103ce22358e3894b31cad47a6f22bLast-Modified: Tue Apr 2 16:51:45 2013 -070</div>
                                </li>
                                <li><a href="/article/3352.htm"
                                       title="Ubuntu下Java环境的搭建" target="_blank">Ubuntu下Java环境的搭建</a>
                                    <span class="text-muted">macroli</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a>
                                    <div>配置命令: 
  $sudo apt-get install ubuntu-restricted-extras 
  再运行如下命令: 
  $sudo apt-get install sun-java6-jdk 
  待安装完毕后选择默认Java. 
  $sudo update- alternatives --config java 
  安装过程提示选择,输入“2”即可,然后按回车键确定。 </div>
                                </li>
                                <li><a href="/article/3479.htm"
                                       title="js字符串转日期(兼容IE所有版本)" target="_blank">js字符串转日期(兼容IE所有版本)</a>
                                    <span class="text-muted">qiaolevip</span>
<a class="tag" taget="_blank" href="/search/TO/1.htm">TO</a><a class="tag" taget="_blank" href="/search/Date/1.htm">Date</a><a class="tag" taget="_blank" href="/search/String/1.htm">String</a><a class="tag" taget="_blank" href="/search/IE/1.htm">IE</a>
                                    <div>	/**
	 * 字符串转时间(yyyy-MM-dd HH:mm:ss)
	 * result (分钟)
	 */
	stringToDate : function(fDate){
		var fullDate = fDate.split(" ")[0].split("-");
		var fullTime = fDate.split("</div>
                                </li>
                                <li><a href="/article/3606.htm"
                                       title="【数据挖掘学习】关联规则算法Apriori的学习与SQL简单实现购物篮分析" target="_blank">【数据挖掘学习】关联规则算法Apriori的学习与SQL简单实现购物篮分析</a>
                                    <span class="text-muted">superlxw1234</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E6%8C%96%E6%8E%98/1.htm">数据挖掘</a><a class="tag" taget="_blank" href="/search/%E5%85%B3%E8%81%94%E8%A7%84%E5%88%99/1.htm">关联规则</a>
                                    <div>关联规则挖掘用于寻找给定数据集中项之间的有趣的关联或相关关系。 
关联规则揭示了数据项间的未知的依赖关系,根据所挖掘的关联关系,可以从一个数据对象的信息来推断另一个数据对象的信息。 
例如购物篮分析。牛奶 ⇒ 面包 [支持度:3%,置信度:40%]  支持度3%:意味3%顾客同时购买牛奶和面包。   置信度40%:意味购买牛奶的顾客40%也购买面包。   规则的支持度和置信度是两个规则兴</div>
                                </li>
                                <li><a href="/article/3733.htm"
                                       title="Spring 5.0 的系统需求,期待你的反馈" target="_blank">Spring 5.0 的系统需求,期待你的反馈</a>
                                    <span class="text-muted">wiselyman</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>        
       Spring 5.0将在2016年发布。Spring5.0将支持JDK 9。 
  
       Spring 5.0的特性计划还在工作中,请保持关注,所以作者希望从使用者得到关于Spring 5.0系统需求方面的反馈。 
 </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>