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/1759841685791141888.htm"
                           title="五、RHCE--Web服务器" target="_blank">五、RHCE--Web服务器</a>
                        <span class="text-muted">Fly`</span>
<a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/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>五、RHCE--Web服务器1、web服务器简介(1)什么是www(2)网址及HTTP简介2、web服务器的类型(1)仅提供用户浏览的单向静态网页(2)提供用户互动接口的动态网站3、虚拟主机配置实战3.1搭建静态网站——基于http协议的静态网站4.2搭建静态网站----基于https协议的静态网站:1、web服务器简介(1)什么是wwwwww是worldwideweb的缩写,也就是全球信息广播的</div>
                    </li>
                    <li><a href="/article/1759645298566721536.htm"
                           title="RHCE练习" target="_blank">RHCE练习</a>
                        <span class="text-muted">起名字好楠啊</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>需求1、显示/etc/rc.d/rc.sysinit文件中以不区分大小的h开头的行;2、显示/etc/passwd中以sh结尾的行;3、显示/etc/fstab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行;4、查找/etc/rc.d/rc.local中包含“以to开始并以to结尾”的字串行;5、查找/etc/inittab中含有“以s开头,并以d结尾的单词”模式的行;6、查</div>
                    </li>
                    <li><a href="/article/1755259773294493696.htm"
                           title="微服务笔记27:容器调度与服务编排" target="_blank">微服务笔记27:容器调度与服务编排</a>
                        <span class="text-muted">胖琪的升级之路</span>

                        <div>容器调度有一部分带需要发布服务的机器,但是在发布服务的时候应该选择哪些机器部署,这就是调度需要解决的问题。机器少量的时候,认为选择还是可以支持,如果数量多大上百台,上千台,那么就不能人肉运维了。三个解决方案:Docker原声的Swarm,以及Mesos,和谷歌开源的k8s.容器调度解决的问题主机过滤存活过滤:选择的节点必须是可用的。硬件过滤:Web集群与大数据集群。集群类别不同需要的资源不同,We</div>
                    </li>
                    <li><a href="/article/1755175133577756672.htm"
                           title="Keepalived热备、Keepalived+LVS、HAProxy监控及后端服务器健康检查、负载均衡调度器对比" target="_blank">Keepalived热备、Keepalived+LVS、HAProxy监控及后端服务器健康检查、负载均衡调度器对比</a>
                        <span class="text-muted">Mick方</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/lvs/1.htm">lvs</a><a class="tag" taget="_blank" href="/search/%E8%B4%9F%E8%BD%BD%E5%9D%87%E8%A1%A1/1.htm">负载均衡</a>
                        <div>KeepAlived高可用集群keepalived用于实现高可用集群它的工作原理就是VRRP(虚拟冗余路由协议)配置高可用的web集群环境说明:web1:eth0->192.168.88.100/24web2:eth0->192.168.88.200/24配置keepalived#在两台web服务器上安装keepalived[root@pubservercluster]#vim07-install</div>
                    </li>
                    <li><a href="/article/1753492465148510208.htm"
                           title="IT界的黄金认证RedHat认证工程师(RHCE)(转)" target="_blank">IT界的黄金认证RedHat认证工程师(RHCE)(转)</a>
                        <span class="text-muted">cuikeng1956</span>

                        <div>IT界的黄金认证RedHat认证工程师(RHCE)(转)[@more@]RedHat是全世界Linux厂商中的龙头老大,其市场占有率从1999年起就超过了50%,并在业界得到广泛好评。而RedHat认证工程师(RHCE)也是业界公认的最权威的Linux认证之一。有了RHCE证书,代表您拥有Linux顶级专家的水平。RHCE是RedHatCertifiedEngineer的简称,始于1999年3月。</div>
                    </li>
                    <li><a href="/article/1753118342601785344.htm"
                           title="IT行业含金量高的证书有哪些?" target="_blank">IT行业含金量高的证书有哪些?</a>
                        <span class="text-muted">猪仔搬砖</span>
<a class="tag" taget="_blank" href="/search/%E8%AF%81%E4%B9%A6/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>目录前言1、操作系统与运维2、项目管理3、数据库与大数据4、云计算与虚拟化5、信息安全方向6、网络和通信方向结语前言众所周知,IT行业的认证众多,我们每个人都或多或少的拥有几个证书,证书越多对我们求职帮助更大,对个人能力发展也越大,接下来我们从几个方向简单介绍下。1、操作系统与运维RHCE(RedHatCertifiedEngineer)、RHCA(RedHatCertifiedArchitect</div>
                    </li>
                    <li><a href="/article/1752558292334297088.htm"
                           title="RHCE定时任务" target="_blank">RHCE定时任务</a>
                        <span class="text-muted">寻959</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>
                        <div>1.atd和crond两个任务管理程序的区别at只能执行一次任务,而crond可以循环执行多次2.指定在2022/08/2609:00将时间写入testmail.txt文件中首先创建一个shell脚本文件,来执行将时间写入文件的操作写好之后:wq保存并退出执行crontab-e命令来选定定时执行的任务按要求写入4月15日9点0分用bash执行test1文件里的写入日期操作用crontab-l命令查</div>
                    </li>
                    <li><a href="/article/1752558292883750912.htm"
                           title="RHCE---时间服务器、ssh免密登录" target="_blank">RHCE---时间服务器、ssh免密登录</a>
                        <span class="text-muted">寻959</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/ssh/1.htm">ssh</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>1.配置ntp时间服务器,确保客户端主机能和服务主机同步时间首先进入服务端,配置好时间镜像源,本次使用的是阿里的时间镜像源重启服务查看服务是否正常重启配置好之后,进入客户端主机,一样的进入chrony.conf文件进行编辑修改第三行为server服务类型,接上服务器主机的ip地址重启chronyd服务查看服务状态是否开启对比之后可以看到服务器和客户端(时差是因为截图时间不同)2.配置ssh免密登陆</div>
                    </li>
                    <li><a href="/article/1752557268412416000.htm"
                           title="RHCE---web服务器的搭建" target="_blank">RHCE---web服务器的搭建</a>
                        <span class="text-muted">寻959</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>1.基于域名www.epenlab.com可以访问网站内容为welcometoopenlab!!!·2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student网站访问学生信息,www.openlab.com/data网站访问教学资料www.openlab.com/money网站访问缴费网站3.要求(1)学生信息网站只有song和tian两人可</div>
                    </li>
                    <li><a href="/article/1752288920701255680.htm"
                           title="RHCE DNS域名解析服务器" target="_blank">RHCE DNS域名解析服务器</a>
                        <span class="text-muted">周湘zx</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/open/1.htm">open</a><a class="tag" taget="_blank" href="/search/Euler/1.htm">Euler</a><a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a>
                        <div>目录一、概述1、作用2、连接方式3、因特网的域名结构1)拓扑2)分类3)域名服务器类型划分二、DNS域名解析过程1、分类递归解析迭代解析2、解析图一、概述1、作用域名解析:DNS服务将域名解析成相应的IP地址。正向解析:域名->IP反向解析:IP->域名域名管理:DNS服务管理互联网上的所有域名,包括注册、续费、修改、删除等操作。负载均衡:DNS服务可以将请求分发到不同的服务器上,实现负载均衡和高</div>
                    </li>
                    <li><a href="/article/1752288278951772160.htm"
                           title="RHCE 搭建DNS域名解析服务器" target="_blank">RHCE 搭建DNS域名解析服务器</a>
                        <span class="text-muted">周湘zx</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a>
                        <div>目录一、前述1、BIND(BerkeleyInternetNameDomain)2、bind服务中三个关键文件1)主配置文件/etc/named.conf2)区域配置文件/etc/named.rfc1912.zones正向解析反向解析3)数据配置文件目录/var/named/正向解析资源文件/var/named/named.localhost反向解析资源文件/var/named/named.loo</div>
                    </li>
                    <li><a href="/article/1752237168157278208.htm"
                           title="程序人生系列1-2021年通过私活累积收益1.5w" target="_blank">程序人生系列1-2021年通过私活累积收益1.5w</a>
                        <span class="text-muted">只是甲</span>
<a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E4%BA%BA%E7%94%9F/1.htm">程序人生</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98%E6%8E%A5%E5%8D%95/1.htm">程序员接单</a><a class="tag" taget="_blank" href="/search/%E7%A7%81%E6%B4%BB/1.htm">私活</a><a class="tag" taget="_blank" href="/search/%E7%95%99%E5%AD%A6%E7%94%9F%E8%AF%BE%E7%A8%8B%E4%BD%9C%E4%B8%9A/1.htm">留学生课程作业</a>
                        <div>博主在B站更新了接私活的视频,感兴趣的可以移步到我的B站:博主私活记录一.个人介绍  2011年毕业,计算机专业科班出身,10年及以上金融信贷、通信行业数据库运维管理、数据仓库及大数据相关工作经验,持有OracleOCP和LinuxRHCE认证证书。  毕业第一份工作很幸运的成为了一个OracleDBA,刚毕业就开始维护TB级的数据。在知道自身实力不足的情况下,报名培训机构,相继考了OracleO</div>
                    </li>
                    <li><a href="/article/1752154255143223296.htm"
                           title="RHCE 练习3" target="_blank">RHCE 练习3</a>
                        <span class="text-muted">拾壹贰</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>1、基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为welcometoopenlab!!!下载hpptddnfinstall-yhttpd进入vim/etc/httpd/conf.d/vhosts.conf更改网址OptionsIndexesFollowSymLinksAllowOverrideNoneRequireallgrantedD</div>
                    </li>
                    <li><a href="/article/1752152974911619072.htm"
                           title="RHCE练习3" target="_blank">RHCE练习3</a>
                        <span class="text-muted">雪I霁</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>1.基于域名www.openlab.com可以访问网站内容为welcometoopenlab2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student网站访问学生信息,www.openlab.com/data网站访问教学资料www.openlab.com/money网站访问缴费网站3.要求(1)学生信息网站只有song和tian两人可以访问,</div>
                    </li>
                    <li><a href="/article/1751388605764354048.htm"
                           title="RHCE 给openlab搭建web网站" target="_blank">RHCE 给openlab搭建web网站</a>
                        <span class="text-muted">周湘zx</span>
<a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>目录网站需求:一、准备工作二、创建www.openlab.com三、创建教学资料子网站www.openlab.com/data四、创建学生信息子网站http://www.openlab.com/student/五、创建缴费子网站www.openlab.com/money网站需求:1.基于域名www.epenlab.com可以访问网站内容为welcometoopenlab!!!2.给该公司创建三个子</div>
                    </li>
                    <li><a href="/article/1751388606603214848.htm"
                           title="RHCE项目:使用LNMP搭建私有云存储" target="_blank">RHCE项目:使用LNMP搭建私有云存储</a>
                        <span class="text-muted">周湘zx</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a><a class="tag" taget="_blank" href="/search/openeuler/1.htm">openeuler</a>
                        <div>目录一、准备工作1、关闭防火墙、安全软件2、搭建LNMP环境3、上传软件4、设置nextcloud安装命令权限二、数据库1、设置数据库2、重启数据库三、配置nginx四、安装nextcloud五、内网穿透1、创建内网映射2、linux系统安装花生壳客户端3、重新打开浏览器,输入http://b.oray.com,完成账户登录,激活(SN登录)六、花生壳的域名信任七、测试一、准备工作1、关闭防火墙、</div>
                    </li>
                    <li><a href="/article/1751383996685631488.htm"
                           title="RHCE 部署Ubuntu系统(ubuntu-23.10-live-server-amd64.iso)" target="_blank">RHCE 部署Ubuntu系统(ubuntu-23.10-live-server-amd64.iso)</a>
                        <span class="text-muted">周湘zx</span>
<a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</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>目录一、新建虚拟机二、安装系统1、选择安装语言,默认【English】,直接回车2、选择键盘,默认回车3、安装的服务器版本,根据需求自行选择,本次安装选择【UbuntuServer】4、网络设置,此处默认使用DHCP5、Proxy(代理配置)用于访问安装程序环境和已安装系统中的包存储库和snap存储库,不用配置6、设置镜像源地址,配置阿里云(http://mirrors.aliyun.com/ub</div>
                    </li>
                    <li><a href="/article/1751020386708897792.htm"
                           title="RHCE第四次实验" target="_blank">RHCE第四次实验</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><a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>要求:架设一台NFS服务器,并按照以下要求配置1、开放/nfs/shared目录,供所有用户查询资料2、开放/nfs/upload目录,为192.168.100.0/24网段主机可以上传目录,并将所有用户及所属的组映射为nfs-upload,其UID和GID均为2103、将/home/tom目录仅共享给192.168.100.136这台主机,并只有用户tom可以完全访问该目录1.服务端及客户端的准</div>
                    </li>
                    <li><a href="/article/1751020386247524352.htm"
                           title="RHCE第三次作业(web服务器)" target="_blank">RHCE第三次作业(web服务器)</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><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>网站需求:1.基于域名www.openlab.com可以访问网站内容为welcometoopenlab!!!2.给该公司创建三个网站目录分别显示学生信息,教学资料和缴费网站,基于www.openlab.com/student网站访问学生信息,www.openlab.com/data网站访问教学资料www.openlab.com/money网站访问缴费网站。3.要求(1)学生信息网站只有song和t</div>
                    </li>
                    <li><a href="/article/1750857364682063872.htm"
                           title="四、RHCE--远程连接服务器" target="_blank">四、RHCE--远程连接服务器</a>
                        <span class="text-muted">Fly`</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>四、RHCE--远程连接服务器1、远程连接服务器简介2、连接加密技术简介(1)版本协商阶段(2)密钥和算法协商阶段(3)认证阶段3、ssh服务配置4、用户登录ssh服务器1、远程连接服务器简介(1)什么是远程连接服务器远程连接服务器通过文字或图形接口方式来远程登录系统,让你在远程终端前登录linux主机以取得可操作主机接口(shell),而登录后的操作感觉就像是坐在系统前面一样。(2)远程连接服务</div>
                    </li>
                    <li><a href="/article/1750856982723575808.htm"
                           title="五、RHCE--NFS服务器" target="_blank">五、RHCE--NFS服务器</a>
                        <span class="text-muted">Fly`</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                        <div>五、RHCE--NFS服务器1、简介2、nfs配置3、配置autofs自动挂载1、简介NFS(NetworkFileSystem,网络文件系统)是FreeBSD支持的文件系统中的一种,它允许网络中的计算机(不同的计算机、不同的操作系统)之间通过TCP/IP网络共享资源,主要在unix系列操作系统上使用。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地</div>
                    </li>
                    <li><a href="/article/1750844358426378240.htm"
                           title="关于RHCE考试和准备看这一篇就够了" target="_blank">关于RHCE考试和准备看这一篇就够了</a>
                        <span class="text-muted">GLAB-Mary</span>
<a class="tag" taget="_blank" href="/search/RHCE/1.htm">RHCE</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/RHCSA/1.htm">RHCSA</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/RHCA/1.htm">RHCA</a>
                        <div>一、文章大纲认证机构课程体系面向人群证书有效期备考学习周期考试内容证书领取证书样例二、认证机构RHCE全称为红帽认证工程师(RedHatCertifiedEngineer),其认证机构为红帽。红帽可以说是Linux发行版中的龙头老大,我们日常中接触CentOS就是依据企业版红帽开源代码编译而来,在国内还是占有率挺高,不过随着红帽调整CentOS后续发行策略(以前CentOS是根据RHEL稳定版本源</div>
                    </li>
                    <li><a href="/article/1750580567184785408.htm"
                           title="RHCE练习1" target="_blank">RHCE练习1</a>
                        <span class="text-muted">雪I霁</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>1.atd和crond两个任务管理程序的区别atd是在指定的时间只能执行一次任务,crond可以循环重复的执行定时任务2.指定在2024/01/2318:12将时间写入testmail.txt文件中3.指定每天凌晨4:00将该时间点之前的日志信息备份到目录下(/var/log/messages),备份后日志文件名显示格式logfileYYYY-MM-DD-HH:MM:SS</div>
                    </li>
                    <li><a href="/article/1750580567629381632.htm"
                           title="RHCE练习2" target="_blank">RHCE练习2</a>
                        <span class="text-muted">雪I霁</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>一、配置ntp时间服务器,确保客户端主机能和服务主机同步时间服务主机配置修改配置文件vim/etc/chrony.conf将①处代码改为serverntp时间服务器地址iburst将②处代码改为allow客户端主机地址保存退出重启服务systemctlrestartchronyd测试chronycsources-v客户端主机配置修改配置文件vim/etc/chrony.conf将①处代码改为ser</div>
                    </li>
                    <li><a href="/article/1750352460360204288.htm"
                           title="RHCE.2021.学习笔记.03篇" target="_blank">RHCE.2021.学习笔记.03篇</a>
                        <span class="text-muted">开源大熊</span>

                        <div>RedHatEnterpriseLinux常用命令RHCE.2021.学习笔记RHCE.2021.学习笔记RHCE.2021.学习笔记RHCE.2021.学习笔记RHCE.2021.学习笔记RHCE.2021.学习笔记RHCE.2021.学习笔记RHCE.2021.学习笔记RHCE.2021.学习笔记</div>
                    </li>
                    <li><a href="/article/1750161735983054848.htm"
                           title="RHCE——第三次作业" target="_blank">RHCE——第三次作业</a>
                        <span class="text-muted">pdxdhmk318</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>架设一台NFS服务器,并按照以下要求配置1、开放/nfs/shared目录,供所有用户查询资料2、开放/nfs/upload目录,为192.168.xxx.0/24网段主机可以上传目录,并将所有用户及所属的组映射为nfs-upload,其UID和GID均为2103、将/home/tom目录仅共享给192.168.xxx.xxx这台主机,并只有用户tom可以完全访问该目录一、服务器:[root@lo</div>
                    </li>
                    <li><a href="/article/1750161609583509504.htm"
                           title="RHCE——DNS主从服务器配置" target="_blank">RHCE——DNS主从服务器配置</a>
                        <span class="text-muted">pdxdhmk318</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>服务端:192.168.11.130客户端:192.168.11.131一、正向解析1.安装DNS服务软件bind[root@localhost~]#systemctlstopfirewalld[root@localhost~]#setenforce0[root@localhost~]#yuminstallbind-y2.更改主配置文件[root@localhost~]#vim/etc/named</div>
                    </li>
                    <li><a href="/article/1750161481149726720.htm"
                           title="RHCE——第二次作业" target="_blank">RHCE——第二次作业</a>
                        <span class="text-muted">pdxdhmk318</span>
<a class="tag" taget="_blank" href="/search/apache/1.htm">apache</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>1.基于域名[www.openlab.com](http://www.openlab.com)可以访问网站内容为welcometoopenlab!!#首先关闭防火墙[root@localhost~]#systemctlstopfirewalld[root@localhost~]#setenforce0[root@localhost~]#getenforcePermissive[root@local</div>
                    </li>
                    <li><a href="/article/1750160842134929408.htm"
                           title="RHCE——第五次作业" target="_blank">RHCE——第五次作业</a>
                        <span class="text-muted">pdxdhmk318</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>1.写一个脚本,完成如下功能传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一;(1)如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc-20160613.tar.gz;(2)如果参数1的值为bzip2,则使用tar和bzip2归档压缩/etc目录至/backups目录中,并命名为/backups/etc-2</div>
                    </li>
                    <li><a href="/article/1750042610845630464.htm"
                           title="RHCE chrony服务器" target="_blank">RHCE chrony服务器</a>
                        <span class="text-muted">周湘zx</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/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/OpenEuler/1.htm">OpenEuler</a>
                        <div>前言:由于IT系统中,准确的计时非常重要,有很多种原因需要准确计时:在网络传输中,数据包括和日志需要准确的时间戳各种应用程序中,如订单信息,交易信息等都需要准确的时间戳目录一、Linux时钟1、硬件时钟RTC(RealTimeClock)2、系统时钟(SystemClock)3、设置日期时间二、安装配置1、安装2、配置3、重启服务4、时间同步5、查看时间是否同步三、chronyc命令1、查看时间服</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>