Tomcat多实例和负载均衡

文章目录

  • Tomcat多实例
    • Tomcat多实例的步骤(理论)
    • Tomcat多实例的具体实验步骤(实操)
  • Nginx+Tomcat负载均衡、动静分离
    • Nginx+Tomcat负载均衡、动静分离的步骤(理论)
    • Nginx+Tomcat负载均衡、动静分离的具体实验步骤(实操)

Tomcat多实例

Tomcat多实例的步骤(理论)

安装好 jdk和安装 tomcat

cd /opt
tar zxvf apache-tomcat-9.0.16.tar.gz
mkdir /usr/local/tomcat
mv apache-tomcat-9.0.16 /usr/local/tomcat/tomcat1
cp -a /usr/local/tomcat/tomcat1 /usr/local/tomcat/tomcat2

配置 tomcat 环境变量

vim /etc/profile.d/tomcat.sh
#tomcat1
export CATALINA_HOME1=/usr/local/tomcat/tomcat1
export CATALINA_BASE1=/usr/local/tomcat/tomcat1
export TOMCAT_HOME1=/usr/local/tomcat/tomcat1

#tomcat2
export CATALINA_HOME2=/usr/local/tomcat/tomcat2
export CATALINA_BASE2=/usr/local/tomcat/tomcat2
export TOMCAT_HOME2=/usr/local/tomcat/tomcat2
source /etc/profile.d/tomcat.sh

修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号

vim /usr/local/tomcat/tomcat2/conf/server.xml
"8006" shutdown="SHUTDOWN">		#22行,修改Server prot,默认为8005 -> 修改为8006
"8081" protocol="HTTP/1.1"		#69行,修改Connector port,HTTP/1.1  默认为8080 -> 修改为8081
"8010" protocol="AJP/1.3" redirectPort="8443" />	#116行,修改Connector port AJP/1.3,默认为8009 -> 修改为8010

修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量

vim /usr/local/tomcat/tomcat1/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
##添加以下内容
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

vim /usr/local/tomcat/tomcat1/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE1
export CATALINA_HOME=$CATALINA_HOME1
export TOMCAT_HOME=$TOMCAT_HOME1

vim /usr/local/tomcat/tomcat2/bin/startup.sh 
# -----------------------------------------------------------------------------
# Start Script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2
vim /usr/local/tomcat/tomcat2/bin/shutdown.sh
# -----------------------------------------------------------------------------
# Stop script for the CATALINA Server
# -----------------------------------------------------------------------------
export CATALINA_BASE=$CATALINA_BASE2
export CATALINA_HOME=$CATALINA_HOME2
export TOMCAT_HOME=$TOMCAT_HOME2

启动各 tomcat 中的 /bin/startup.sh

/usr/local/tomcat/tomcat1/bin/startup.sh 
/usr/local/tomcat/tomcat2/bin/startup.sh 

netstat -natp | grep java

浏览器访问测试

http://192.168.80.10:8080
http://192.168.80.10:8081

Tomcat多实例的具体实验步骤(实操)

第一步:放入安装关闭防火墙和selinux
Tomcat多实例和负载均衡_第1张图片
第二步:安装JDK并设置环境变量
安装JKD
Tomcat多实例和负载均衡_第2张图片
编写java脚本设置JDK环境变量
在这里插入图片描述
运行脚本文件,然后查看jdk版本
在这里插入图片描述
第三步:安装tomcat
解压缩tomcat
在这里插入图片描述
创建tomcat多实例的目录,并移动复制文件
在这里插入图片描述
第四步:配置tomcat环境变量
编写脚本
Tomcat多实例和负载均衡_第3张图片
运行脚本文件
在这里插入图片描述
第五步:修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号
修改主配置文件,修改Server prot,默认为8005 -> 修改为8006
Tomcat多实例和负载均衡_第4张图片
修改Connector port,HTTP/1.1 默认为8080 -> 修改为8081
在这里插入图片描述
修改Connector port AJP/1.3,默认为8009 -> 修改为8010
在这里插入图片描述
第六步:修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量
修改tomcat1的startup.sh
Tomcat多实例和负载均衡_第5张图片
修改tomcat1的shutdown.sh
Tomcat多实例和负载均衡_第6张图片
修改tomcat2的startup.sh
Tomcat多实例和负载均衡_第7张图片
修改tomcat2的shutdown.sh
Tomcat多实例和负载均衡_第8张图片
第七步:启动各 tomcat 中的 /bin/startup.sh
Tomcat多实例和负载均衡_第9张图片
第八步:浏览器中访问测试
Tomcat多实例和负载均衡_第10张图片

Nginx+Tomcat负载均衡、动静分离

Nginx+Tomcat负载均衡、动静分离的步骤(理论)

Nginx 服务器:192.168.80.10:80
Tomcat服务器1:192.168.80.100:80
Tomcat服务器2:192.168.80.101:8080 192.168.80.101:8081

部署Nginx 负载均衡器

systemctl stop firewalld
setenforce 0

yum -y install pcre-devel zlib-devel openssl-devel gcc gcc-c++ make

useradd -M -s /sbin/nologin nginx

cd /opt
tar zxvf nginx-1.12.0.tar.gz -C /opt/

cd nginx-1.12.0/
./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-file-aio --with-http_stub_status_module --with-http_gzip_static_module --with-http_flv_module

make && make install
ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

vim /lib/systemd/system/nginx.service
[Unit]
Description=nginx
After=network.target
[Service]
Type=forking
PIDFile=/usr/local/nginx/logs/nginx.pid
ExecStart=/usr/local/nginx/sbin/nginx
ExecrReload=/bin/kill -s HUP $MAINPID
ExecrStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
chmod 754 /lib/systemd/system/nginx.service
systemctl start nginx.service
systemctl enable nginx.service

部署2台Tomcat 应用服务器

systemctl stop firewalld
setenforce 0

tar zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/

vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.8.0_91
export JRE_HOME=${
     JAVA_HOME}/jre
export CLASSPATH=.:${
     JAVA_HOME}/lib:${
     JRE_HOME}/lib
export PATH=${
     JAVA_HOME}/bin:$PATH
source /etc/profile

tar zxvf apache-tomcat-8.5.16.tar.gz

mv /opt/apache-tomcat-8.5.16/ /usr/local/tomcat

/usr/local/tomcat/bin/shutdown.sh 
/usr/local/tomcat/bin/startup.sh

netstat -ntap | grep 8080

动静分离配置
Tomcat1 server 配置

mkdir /usr/local/tomcat/webapps/test
vim /usr/local/tomcat/webapps/test/index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>


JSP test1 page<<span class="token operator">/</span>title>   <span class="token comment">#指定为 test1 页面</span>
<<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">"动态页面 1,http://www.test1.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>
</code></pre> 
  <pre><code class="prism language-powershell">vim <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>conf<span class="token operator">/</span>server<span class="token punctuation">.</span>xml
</code></pre> 
  <p>#由于主机名 name 配置都为 localhost,需要删除前面的 HOST 配置</p> 
  <pre><code class="prism language-powershell"><Host name=<span class="token string">"localhost"</span> appBase=<span class="token string">"webapps"</span> unpackWARs=<span class="token string">"true"</span> autoDeploy=<span class="token string">"true"</span> xmlValidation=<span class="token string">"false"</span> xmlNamespaceAware=<span class="token string">"false"</span>>
	<Context docBase=<span class="token string">"/usr/local/tomcat/webapps/test"</span> path=<span class="token string">""</span> reloadable=<span class="token string">"true"</span>>
	<<span class="token operator">/</span>Context>
<<span class="token operator">/</span>Host>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>bin<span class="token operator">/</span>shutdown<span class="token punctuation">.</span>sh 
<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>bin<span class="token operator">/</span>startup<span class="token punctuation">.</span>sh 
</code></pre> 
  <p>Tomcat2 server 配置</p> 
  <pre><code class="prism language-powershell">mkdir <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>tomcat1<span class="token operator">/</span>webapps<span class="token operator">/</span>test <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>tomcat2<span class="token operator">/</span>webapps<span class="token operator">/</span>test

vim <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>tomcat1<span class="token operator">/</span>webapps<span class="token operator">/</span>test<span class="token operator">/</span>index<span class="token punctuation">.</span>jsp
</code></pre> 
  <pre><code class="prism language-powershell"><<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 test2 page<<span class="token operator">/</span>title>   <span class="token comment">#指定为 test2 页面</span>
<<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">"动态页面 2,http://www.test2.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>


vim <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>tomcat1<span class="token operator">/</span>conf<span class="token operator">/</span>server<span class="token punctuation">.</span>xml
</code></pre> 
  <p>删除前面的 HOST 配置</p> 
  <pre><code class="prism language-powershell"><Host name=<span class="token string">"localhost"</span> appBase=<span class="token string">"webapps"</span> unpackWARs=<span class="token string">"true"</span> autoDeploy=<span class="token string">"true"</span> xmlValidation=<span class="token string">"false"</span> xmlNamespaceAware=<span class="token string">"false"</span>>
	<Context docBase=<span class="token string">"/usr/local/tomcat/tomcat1/webapps/test"</span> path=<span class="token string">""</span> reloadable=<span class="token string">"true"</span> <span class="token operator">/</span>>
<<span class="token operator">/</span>Host>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>tomcat1<span class="token operator">/</span>bin<span class="token operator">/</span>shutdown<span class="token punctuation">.</span>sh 
<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>tomcat1<span class="token operator">/</span>bin<span class="token operator">/</span>startup<span class="token punctuation">.</span>sh 


vim <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>tomcat2<span class="token operator">/</span>webapps<span class="token operator">/</span>test<span class="token operator">/</span>index<span class="token punctuation">.</span>jsp
</code></pre> 
  <pre><code class="prism language-powershell"><<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 test3 page<<span class="token operator">/</span>title>   <span class="token comment">#指定为 test3 页面</span>
<<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">"动态页面 3,http://www.test3.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>
</code></pre> 
  <pre><code class="prism language-powershell">vim <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>tomcat2<span class="token operator">/</span>conf<span class="token operator">/</span>server<span class="token punctuation">.</span>xml
</code></pre> 
  <p>#删除前面的 HOST 配置</p> 
  <pre><code class="prism language-powershell"><Host name=<span class="token string">"localhost"</span> appBase=<span class="token string">"webapps"</span> unpackWARs=<span class="token string">"true"</span> autoDeploy=<span class="token string">"true"</span> xmlValidation=<span class="token string">"false"</span> xmlNamespaceAware=<span class="token string">"false"</span>>
	<Context docBase=<span class="token string">"/usr/local/tomcat/tomcat2/webapps/test"</span> path=<span class="token string">""</span> reloadable=<span class="token string">"true"</span> <span class="token operator">/</span>>
<<span class="token operator">/</span>Host>
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>tomcat2<span class="token operator">/</span>bin<span class="token operator">/</span>shutdown<span class="token punctuation">.</span>sh 
<span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>tomcat<span class="token operator">/</span>tomcat2<span class="token operator">/</span>bin<span class="token operator">/</span>startup<span class="token punctuation">.</span>sh 
</code></pre> 
  <p>Nginx server 配置<br> #准备静态页面和静态图片</p> 
  <pre><code class="prism language-powershell"><span class="token function">echo</span> <span class="token string">'<html><body><h1>这是静态页面</h1></body></html>'</span> > <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>nginx<span class="token operator">/</span>html<span class="token operator">/</span>index<span class="token punctuation">.</span>html
mkdir <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>nginx<span class="token operator">/</span>html<span class="token operator">/</span>img
<span class="token function">cp</span> <span class="token operator">/</span>root<span class="token operator">/</span>game<span class="token punctuation">.</span>jpg <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>nginx<span class="token operator">/</span>html<span class="token operator">/</span>img

vim <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>nginx<span class="token operator">/</span>conf<span class="token operator">/</span>nginx<span class="token punctuation">.</span>conf
</code></pre> 
  <pre><code class="prism language-powershell"><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
http <span class="token punctuation">{
     </span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
	<span class="token comment">#gzip on;</span>
	
	<span class="token comment">#配置负载均衡的服务器列表,weight参数表示权重,权重越高,被分配到的概率越大</span>
	upstream tomcat_server <span class="token punctuation">{
     </span>
		server 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>80<span class="token punctuation">.</span>100:8080 weight=1<span class="token punctuation">;</span>
		server 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>80<span class="token punctuation">.</span>101:8080 weight=1<span class="token punctuation">;</span>
		server 192<span class="token punctuation">.</span>168<span class="token punctuation">.</span>80<span class="token punctuation">.</span>101:8081 weight=1<span class="token punctuation">;</span>
	<span class="token punctuation">}</span>
	
	server <span class="token punctuation">{
     </span>
		listen 80<span class="token punctuation">;</span>
		server_name www<span class="token punctuation">.</span>kgc<span class="token punctuation">.</span>com<span class="token punctuation">;</span>
	
		charset utf<span class="token operator">-</span>8<span class="token punctuation">;</span>
	
		<span class="token comment">#access_log logs/host.access.log main;</span>
		
		<span class="token comment">#配置Nginx处理动态页面请求,将 .jsp文件请求转发到Tomcat 服务器处理</span>
		location ~ <span class="token punctuation">.</span><span class="token operator">*</span>\<span class="token punctuation">.</span>jsp$ <span class="token punctuation">{
     </span>
			proxy_pass http:<span class="token operator">/</span><span class="token operator">/</span>tomcat_server<span class="token punctuation">;</span>
<span class="token comment">#设置后端的Web服务器可以获取远程客户端的真实IP</span>
<span class="token comment">##设定后端的Web服务器接收到的请求访问的主机名(域名或IP、端口),默认HOST的值为proxy_pass指令设置的主机名。如果反向代理服务器不重写该请求头的话,那么后端真实服务器在处理时会认为所有的请求都来在反向代理服务器,如果后端有防攻击策略的话,那么机器就被封掉了。</span>
			proxy_set_header HOST <span class="token variable">$host</span><span class="token punctuation">;</span>
<span class="token comment">##把$remote_addr赋值给X-Real-IP,来获取源IP</span>
			proxy_set_header X<span class="token operator">-</span>Real<span class="token operator">-</span>IP <span class="token variable">$remote_addr</span><span class="token punctuation">;</span>
<span class="token comment">##在nginx 作为代理服务器时,设置的IP列表,会把经过的机器ip,代理机器ip都记录下来</span>
			proxy_set_header X<span class="token operator">-</span>Forwarded<span class="token operator">-</span><span class="token keyword">For</span> <span class="token variable">$proxy_add_x_forwarded_for</span><span class="token punctuation">;</span>
		<span class="token punctuation">}</span>
		
		<span class="token comment">#配置Nginx处理静态图片请求</span>
		location ~ <span class="token punctuation">.</span><span class="token operator">*</span>\<span class="token punctuation">.</span><span class="token punctuation">(</span>gif<span class="token punctuation">|</span>jpg<span class="token punctuation">|</span>jpeg<span class="token punctuation">|</span>png<span class="token punctuation">|</span>bmp<span class="token punctuation">|</span>swf<span class="token punctuation">|</span>css<span class="token punctuation">)</span>$ <span class="token punctuation">{
     </span>
			root <span class="token operator">/</span>usr<span class="token operator">/</span>local<span class="token operator">/</span>nginx<span class="token operator">/</span>html<span class="token operator">/</span>img<span class="token punctuation">;</span>
			expires 10d<span class="token punctuation">;</span>
		<span class="token punctuation">}</span>
		
		location <span class="token operator">/</span> <span class="token punctuation">{
     </span>
			root html<span class="token punctuation">;</span>
			index index<span class="token punctuation">.</span>html index<span class="token punctuation">.</span>htm<span class="token punctuation">;</span>
		<span class="token punctuation">}</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
	<span class="token punctuation">}</span>
<span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span>
<span class="token punctuation">}</span>
</code></pre> 
  <blockquote> 
   <p>测试效果<br> 测试静态页面效果<br> 浏览器访问 http://192.168.80.10/<br> 浏览器访问 http://192.168.80.10/game.jpg</p> 
  </blockquote> 
  <blockquote> 
   <p>测试负载均衡效果,不断刷新浏览器测试<br> 浏览器访问 http://192.168.80.10/index.jsp</p> 
  </blockquote> 
  <h2>Nginx+Tomcat负载均衡、动静分离的具体实验步骤(实操)</h2> 
  <p>第一步:准备好Nginx服务器(192.168.80.100)<br> <a href="http://img.e-com-net.com/image/info8/e19c39f239134aea8f177f0dac142e2f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/e19c39f239134aea8f177f0dac142e2f.jpg" alt="Tomcat多实例和负载均衡_第11张图片" width="650" height="145" style="border:1px solid black;"></a><br> 第二步:准备好tomcat服务器(192.168.80.150:8080)<br> <a href="http://img.e-com-net.com/image/info8/a3a0197ff016460588c87cdfb7b87725.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a3a0197ff016460588c87cdfb7b87725.jpg" alt="Tomcat多实例和负载均衡_第12张图片" width="650" height="263" style="border:1px solid black;"></a><br> 第三步:准备好tomcat服务器的两个实例(192.168.80.200:8080和192.168.80.200:8081),具体步骤参考本文第一段<br> <a href="http://img.e-com-net.com/image/info8/51846835bd06410f9d91ca2266920d9e.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/51846835bd06410f9d91ca2266920d9e.jpg" alt="Tomcat多实例和负载均衡_第13张图片" width="650" height="289" style="border:1px solid black;"></a><br> 第四步:动静分离Tomcat1 server 配置<br> 配置Tomcat1的动态网页显示内容<br> <a href="http://img.e-com-net.com/image/info8/8234035ad05c44bf95999fff13d5b441.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/8234035ad05c44bf95999fff13d5b441.jpg" alt="Tomcat多实例和负载均衡_第14张图片" width="650" height="149" style="border:1px solid black;"></a><br> 添加新的host内容<br> <a href="http://img.e-com-net.com/image/info8/34aa117286d6478ea746d9b27c167571.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/34aa117286d6478ea746d9b27c167571.jpg" alt="Tomcat多实例和负载均衡_第15张图片" width="650" height="295" style="border:1px solid black;"></a><br> 重启服务<br> <a href="http://img.e-com-net.com/image/info8/b055819f241145fea92d08bc7589fc91.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/b055819f241145fea92d08bc7589fc91.jpg" alt="Tomcat多实例和负载均衡_第16张图片" width="650" height="180" style="border:1px solid black;"></a><br> 第五步:Tomcat2 server 配置(实例一)<br> 创建Tomcat实例1和Tomcat实例2的网页测试目录test和测试网页文件<br> <a href="http://img.e-com-net.com/image/info8/40623c2160b245f69fa77436aa623a83.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/40623c2160b245f69fa77436aa623a83.jpg" alt="Tomcat多实例和负载均衡_第17张图片" width="650" height="179" style="border:1px solid black;"></a><br> Tomcat1主配置删除前面的 HOST 配置,添加新的HOST配置<br> <a href="http://img.e-com-net.com/image/info8/4ff4d7ab22434944a62c58c00ad7eded.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/4ff4d7ab22434944a62c58c00ad7eded.jpg" alt="Tomcat多实例和负载均衡_第18张图片" width="650" height="298" style="border:1px solid black;"></a><br> 重启服务<br> <a href="http://img.e-com-net.com/image/info8/ede667975c8344d1b66e8a46caa104ab.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/ede667975c8344d1b66e8a46caa104ab.jpg" alt="Tomcat多实例和负载均衡_第19张图片" width="650" height="156" style="border:1px solid black;"></a><br> 第五步:Tomcat2 server 配置(实例二)<br> 创建Tomcat实例2的测试网页文件<br> <a href="http://img.e-com-net.com/image/info8/6cbd6b878bbe473d8facb534c7af1367.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/6cbd6b878bbe473d8facb534c7af1367.jpg" alt="Tomcat多实例和负载均衡_第20张图片" width="650" height="183" style="border:1px solid black;"></a><br> Tomcat2主配置删除前面的 HOST 配置,添加新的HOST配置<br> <a href="http://img.e-com-net.com/image/info8/5a965ae722824670bb2f5a8678b18a74.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/5a965ae722824670bb2f5a8678b18a74.jpg" alt="Tomcat多实例和负载均衡_第21张图片" width="650" height="288" style="border:1px solid black;"></a><br> 重启服务<br> <a href="http://img.e-com-net.com/image/info8/9fc9be6e16134bef8afb39718b493d89.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9fc9be6e16134bef8afb39718b493d89.jpg" alt="Tomcat多实例和负载均衡_第22张图片" width="650" height="165" style="border:1px solid black;"></a><br> 第六步:Nginx server 配置(192.168.80.100)<br> 准备网页显示相关内容<br> <a href="http://img.e-com-net.com/image/info8/58ca8b4a7adf421eac95441fad779b76.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/58ca8b4a7adf421eac95441fad779b76.jpg" alt="Tomcat多实例和负载均衡_第23张图片" width="650" height="130" style="border:1px solid black;"></a><br> 修改配置<br> <a href="http://img.e-com-net.com/image/info8/222301f236a94668a5dfc676f13c647f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/222301f236a94668a5dfc676f13c647f.jpg" alt="Tomcat多实例和负载均衡_第24张图片" width="650" height="230" style="border:1px solid black;"></a><br> 添加新的HOST<br> <a href="http://img.e-com-net.com/image/info8/744ba2b5ca14441ba6eb25f78ab90d1f.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/744ba2b5ca14441ba6eb25f78ab90d1f.jpg" alt="Tomcat多实例和负载均衡_第25张图片" width="650" height="277" style="border:1px solid black;"></a><br> 重新服务<br> <a href="http://img.e-com-net.com/image/info8/5de1cb38bb3d4f128c0d26ba8f54c7c3.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/5de1cb38bb3d4f128c0d26ba8f54c7c3.jpg" alt="在这里插入图片描述" width="650" height="52"></a><br> 第七步:浏览器中进行测试,动态页面测试进行不断刷新即可<br> 测试结果一:静态页面<br> <a href="http://img.e-com-net.com/image/info8/6d181971b1584fbe9f2209da2cc81a63.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/6d181971b1584fbe9f2209da2cc81a63.jpg" alt="Tomcat多实例和负载均衡_第26张图片" width="483" height="299" style="border:1px solid black;"></a><br> 测试结果二:动态页面test1<br> <a href="http://img.e-com-net.com/image/info8/9120220f26bc4360957ef1b09bb9cc17.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/9120220f26bc4360957ef1b09bb9cc17.jpg" alt="Tomcat多实例和负载均衡_第27张图片" width="304" height="214" style="border:1px solid black;"></a><br> 测试结果二:动态页面test3<br> <a href="http://img.e-com-net.com/image/info8/a29292b3acd54bf2a8d03e836ee48780.jpg" target="_blank"><img src="http://img.e-com-net.com/image/info8/a29292b3acd54bf2a8d03e836ee48780.jpg" alt="Tomcat多实例和负载均衡_第28张图片" width="322" height="342" style="border:1px solid black;"></a></p> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1461233451469451264"></div>
                    <script type="text/javascript" src="/views/front/js/chanyan.js"></script>
                    <!-- 文章页-底部 动态广告位 -->
                    <div class="youdao-fixed-ad" id="detail_ad_bottom"></div>
                </div>
                <div class="col-md-3">
                    <div class="row" id="ad">
                        <!-- 文章页-右侧1 动态广告位 -->
                        <div id="right-1" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_1"> </div>
                        </div>
                        <!-- 文章页-右侧2 动态广告位 -->
                        <div id="right-2" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_2"></div>
                        </div>
                        <!-- 文章页-右侧3 动态广告位 -->
                        <div id="right-3" class="col-lg-12 col-md-12 col-sm-4 col-xs-4 ad">
                            <div class="youdao-fixed-ad" id="detail_ad_3"></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <div class="container">
        <h4 class="pt20 mb15 mt0 border-top">你可能感兴趣的:(Tomcat多实例和负载均衡)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1901121146724610048.htm"
                           title="pyhon基于django/flask网上摄影工作室Django-SpringBoot-php-Node.js-flask" target="_blank">pyhon基于django/flask网上摄影工作室Django-SpringBoot-php-Node.js-flask</a>
                        <span class="text-muted">QQ_511008285</span>
<a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/laravel/1.htm">laravel</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
                        <div>目录技术栈介绍具体实现截图系统设计研究方法:设计步骤设计流程核心代码部分展示研究方法详细视频演示试验方案论文大纲源码获取/详细视频演示技术栈介绍Django-SpringBoot-php-Node.js-flask本课题的研究方法和研究步骤基本合理,难度适中,本选题是学生所学专业知识的延续,符合学生专业发展方向,对于提高学生的基本知识和技能以及钻研能力有益。该学生能够在预定时间内完成该课题的设计。</div>
                    </li>
                    <li><a href="/article/1901120894537887744.htm"
                           title="智能化编程新时代,DeepSeek加持下的开发革命" target="_blank">智能化编程新时代,DeepSeek加持下的开发革命</a>
                        <span class="text-muted">ObsidianRaven13</span>

                        <div>最新接入DeepSeek-V3模型,点击下载最新版本InsCodeAIIDE标题:智能化编程新时代,DeepSeek加持下的开发革命随着人工智能技术的飞速发展,编程领域正迎来一场前所未有的变革。从传统的手动编码到如今的智能辅助开发,这一过程不仅极大地提升了开发效率,还让编程变得更加简单和高效。在众多新兴工具中,基于DeepSeek模型的智能编程助手正在成为开发者的新宠。今天,我们将探讨这种工具如何</div>
                    </li>
                    <li><a href="/article/1901120641919152128.htm"
                           title="智能化开发新时代:DeepSeek加持下的编程革命" target="_blank">智能化开发新时代:DeepSeek加持下的编程革命</a>
                        <span class="text-muted">MoonbeamOwl67</span>

                        <div>最新接入DeepSeek-V3模型,点击下载最新版本InsCodeAIIDE标题:智能化开发新时代:DeepSeek加持下的编程革命在当今快速发展的科技时代,软件开发已经成为推动社会进步的重要动力。然而,对于许多开发者而言,编写高质量的代码仍然是一项充满挑战的任务。从复杂的算法设计到繁琐的调试过程,每一个环节都需要耗费大量的时间和精力。而随着人工智能技术的迅猛发展,一种全新的编程方式正在悄然改变这</div>
                    </li>
                    <li><a href="/article/1901120136564240384.htm"
                           title="RISC-V与ARM" target="_blank">RISC-V与ARM</a>
                        <span class="text-muted">IT_Beijing_BIT</span>
<a class="tag" taget="_blank" href="/search/ARM%E7%B3%BB%E5%88%97/1.htm">ARM系列</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%9F%A5%E8%AF%86/1.htm">小知识</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F/1.htm">嵌入式</a>
                        <div>RISC-V与ARMRISC-V架构RISC-V架构特点ARM架构RISC-V与ARM指令集架构(ISA)基本上是汇编级程序员,或编译器编写者可见的机器部分。ISA是软件与硬件相遇的地方。ISA定义了机器及其微架构本身可以理解的命令/指令,它还定义了如何存储、访问和实施指令。我们使用计算机可以理解的语言向计算机的硬件发出指令。计算机语言由称为指令的词组成,词汇表称为指令集。指令集告诉我们每条指令的</div>
                    </li>
                    <li><a href="/article/1901119883941310464.htm"
                           title="解密Arm Neoverse V1 和 Neoverse N2 平台 为下一代基础设施带来计算变革" target="_blank">解密Arm Neoverse V1 和 Neoverse N2 平台 为下一代基础设施带来计算变革</a>
                        <span class="text-muted">CSDN云计算</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>在去年9月更新的产品路线图基础上,Arm近日公开了Arm®Neoverse™V1和N2平台的产品细节。为满足基础设施应用的各种需求,这两个平台的设计旨在解决当前正在运行的各种工作负载和应用问题,并分别带来50%¹和40%¹的性能提升。此外,Arm也同时发布了CMN-700,作为构建基于NeoverseV1和N2平台高性能SoC的关键部件。Arm基础设施事业部高级副总裁兼总经理ChrisBergey</div>
                    </li>
                    <li><a href="/article/1901119755956318208.htm"
                           title="Oracle 数据库基础入门(七):触发器与事务的深度探究" target="_blank">Oracle 数据库基础入门(七):触发器与事务的深度探究</a>
                        <span class="text-muted">Aphelios380</span>
<a class="tag" taget="_blank" href="/search/Oracle/1.htm">Oracle</a><a class="tag" taget="_blank" href="/search/oracle/1.htm">oracle</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a>
                        <div>在Oracle数据库的生态系统中,触发器与事务是构建可靠、高效数据处理流程的关键组件。触发器能够自动响应特定数据库事件执行预设操作,而事务则确保一组数据库操作的原子性、一致性、隔离性和持久性。对于Java全栈开发者而言,深入理解并熟练运用触发器与事务,不仅能提升数据库操作的精细化程度,还能为构建稳健的企业级应用提供坚实支撑。让我们一同深入探索Oracle数据库中的触发器与事务。目录一、触发器(一)</div>
                    </li>
                    <li><a href="/article/1901118118588116992.htm"
                           title="深入解析LTE-A到5G的系统消息架构与功能演进" target="_blank">深入解析LTE-A到5G的系统消息架构与功能演进</a>
                        <span class="text-muted">罗博深</span>

                        <div>本文还有配套的精品资源,点击获取简介:系统消息是移动通信网络中,UE与网络间信息交换的核心,涵盖了网络状态、服务信息与系统配置。文章深入分析了4GLTE-A到5G网络中系统消息的组成、作用及其演进,包括MIB和SIBs的功能与内容,以及5G对系统消息的优化和新技术的引入,如动态调度、网络切片和针对物联网设备的特定参数配置。5G系统消息还通过机器学习和大数据分析实现智能化分发,增强了网络灵活性、智能</div>
                    </li>
                    <li><a href="/article/1901117740534525952.htm"
                           title="ARM N2微架构介绍" target="_blank">ARM N2微架构介绍</a>
                        <span class="text-muted">「已注销」</span>
<a class="tag" taget="_blank" href="/search/CPU%E5%BE%AE%E6%9E%B6%E6%9E%84/1.htm">CPU微架构</a><a class="tag" taget="_blank" href="/search/verilog/1.htm">verilog</a>
                        <div>简介之前在“ARMV2处理器微架构介绍”一文中介绍了面向服务器、云计算等应用的ARMV2处理器微架构,V系列具有更强性能,N系列强调性能和功耗等方向的平衡,本文就将介绍一下ARMN2处理器微架构相比较前代的一些提升。尽管ARM还具备一代N1/V1的服务器端处理器,但严格意义讲N2是ARM相对成熟的第一代服务器端处理器IP。前端Front-End前端的设计相比较前代可以说是巨大提升,预测和取指依然是</div>
                    </li>
                    <li><a href="/article/1901115977685331968.htm"
                           title="TRAE与Cursor AI编程工具综合对比(截至2025年3月)" target="_blank">TRAE与Cursor AI编程工具综合对比(截至2025年3月)</a>
                        <span class="text-muted">xinxiyinhe</span>
<a class="tag" taget="_blank" href="/search/AI%E7%BC%96%E7%A8%8B/1.htm">AI编程</a><a class="tag" taget="_blank" href="/search/AI%E7%BC%96%E7%A8%8B/1.htm">AI编程</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>一、核心定位与差异化Trae(字节跳动)本土化优先:专为中文开发者设计,提供全中文界面、中文代码注释及语义优化,例如可直接用中文描述需求(如“实现带登录功能的网页”)生成完整代码框架。免费策略:完全免费,集成Claude3.5和GPT-4o双模型,支持私有化部署及企业级数据隔离。开发环境:构建完整的AI原生IDE,注重项目全流程管理,支持从需求到部署的端到端开发。Cursor(Anysphere)</div>
                    </li>
                    <li><a href="/article/1901115851415810048.htm"
                           title="默默的学python——两个重要的函数dir()、help()" target="_blank">默默的学python——两个重要的函数dir()、help()</a>
                        <span class="text-muted">xiaoli_panpan</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/python%E5%9F%BA%E7%A1%80/1.htm">python基础</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>一、dir()函数dir()函数在Python中用于返回一个对象的所有属性和方法的列表,当你对一个函数使用dir()时,它会返回函数对象的所有可访问的属性和方法的名字列表。具体的说,dir()函数获取的内容包括:1.特殊方法和魔法方法如call、code、defaults、doc、globals、__name__等,这些方法和属性是函数对象的一部分,提供了对函数元数据的访问。2.基础自基类的属性和</div>
                    </li>
                    <li><a href="/article/1901115221611704320.htm"
                           title="用 Verilog 实现 0 到 18 计数器:从原理到实践的全解析" target="_blank">用 Verilog 实现 0 到 18 计数器:从原理到实践的全解析</a>
                        <span class="text-muted">君临天下.鑫</span>
<a class="tag" taget="_blank" href="/search/modelsim/1.htm">modelsim</a><a class="tag" taget="_blank" href="/search/%E6%B3%A2%E5%BD%A2%E4%BB%BF%E7%9C%9F/1.htm">波形仿真</a><a class="tag" taget="_blank" href="/search/verilog/1.htm">verilog</a><a class="tag" taget="_blank" href="/search/fpga%E5%BC%80%E5%8F%91/1.htm">fpga开发</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/%E7%BB%8F%E9%AA%8C%E5%88%86%E4%BA%AB/1.htm">经验分享</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E8%BE%91%E5%99%A8/1.htm">编辑器</a>
                        <div>在数字电路设计中,计数器是极为重要的基础部件,广泛应用于各类数字系统。本次实验聚焦于设计一个从0到18计数的计数器,通过深入探索计数器的工作原理、利用组合逻辑控制计数范围,进一步加深对数字电路和Verilog语言的理解与应用。一、实验目的理解计数器通用原理:全面掌握计数器的基本工作原理,包括计数的方式、状态的转换以及与外部信号的交互等,为设计特定功能的计数器奠定理论基础。运用组合逻辑控制计数范围:</div>
                    </li>
                    <li><a href="/article/1901114086058422272.htm"
                           title="ros如何编译python文件_(二)ROS入门——4.如何编写ROS的第一个程序hello_world" target="_blank">ros如何编译python文件_(二)ROS入门——4.如何编写ROS的第一个程序hello_world</a>
                        <span class="text-muted">weixin_39935903</span>
<a class="tag" taget="_blank" href="/search/ros%E5%A6%82%E4%BD%95%E7%BC%96%E8%AF%91python%E6%96%87%E4%BB%B6/1.htm">ros如何编译python文件</a>
                        <div>ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便。我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS基础知识进行详细的讲解,给不熟悉ROS的朋友起到一个抛砖引玉的作用。本章节主要内容:1.ROS是什么2.ROS系统整体架构3.在ubuntu16.04中安装ROSkinetic4.如何编写ROS的第一个程序</div>
                    </li>
                    <li><a href="/article/1901113959382052864.htm"
                           title="XPath简介——完整入门和详解" target="_blank">XPath简介——完整入门和详解</a>
                        <span class="text-muted">葡萄架子</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C%E5%8D%8F%E8%AE%AE/1.htm">网络协议</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>XPath简介——完整入门和详解**XPath的用法场景****XPath的基本语法****1.树型结构概念****2.XPath基本路径语法****定位方式及详细语法讲解**示例HTML结构:**1.路径选择****基础语法:层级表示法****查询所有匹配的节点****2.位置选取语法****单个节点索引选择****结合多个位置过滤****3.属性条件过滤**属性查询示例:含动态匹配:**4.文</div>
                    </li>
                    <li><a href="/article/1901113077328310272.htm"
                           title="5个冷门的Adobe系列软件小技巧" target="_blank">5个冷门的Adobe系列软件小技巧</a>
                        <span class="text-muted">reddingtons</span>
<a class="tag" taget="_blank" href="/search/adobe/1.htm">adobe</a>
                        <div>在当今数字化时代,教育邮箱为学生和教职工提供了许多福利,其中最受欢迎的莫过于免费使用Adobe系列软件。只需使用学校的教育邮箱,便可获取Adobe全系列软件的使用权限,包括一些收费软件。这使得用户能够使用Adobe的各种热门软件,如Photoshop、Illustrator和PremierePro等。然而,本文将重点介绍一些相对冷门的Adobe软件技巧,可能会涉及一些收费软件,免费用户需注意。1.</div>
                    </li>
                    <li><a href="/article/1901112195064852480.htm"
                           title="js中的export、import、export default等导入导出全解" target="_blank">js中的export、import、export default等导入导出全解</a>
                        <span class="text-muted">庸懒</span>
<a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>前端因为规范不同,所以不同的环境会有不同的导入导出方法,因为经常弄混所以特地记一下方便以后查阅记忆,本笔记都是自己总结或查阅资料得出,如有错误请帮忙指出。因为前端的导入导出主要分为commonjs和ES6modules两种标准,其中commonjs主要用于node环境,而ES6modules主要用于浏览器环境,但是ES6modules是兼容commonjs标准的,所以这就很容易让人弄混,本文也将从</div>
                    </li>
                    <li><a href="/article/1901111187303624704.htm"
                           title="C++ 接口(抽象类)" target="_blank">C++ 接口(抽象类)</a>
                        <span class="text-muted">阳光向日葵向阳</span>
<a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>接口描述了类的行为和功能,而不需要完成类的特定实现。C++接口是使用抽象类来实现的,抽象类与数据抽象互不混淆,数据抽象是一个把实现细节与相关的数据分离开的概念。如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。纯虚函数是通过在声明中使用"=0"来指定的,如下所示:classBox{public://纯虚函数virtualdoublegetVolume()=0;private:double</div>
                    </li>
                    <li><a href="/article/1901111185533628416.htm"
                           title="基于 Golang 的微服务开发实践:使用 Gin 和 GORM 构建 RESTful API" target="_blank">基于 Golang 的微服务开发实践:使用 Gin 和 GORM 构建 RESTful API</a>
                        <span class="text-muted">全栈探索者chen</span>
<a class="tag" taget="_blank" href="/search/%E7%9F%A5%E8%AF%86%E5%88%86%E4%BA%AB/1.htm">知识分享</a><a class="tag" taget="_blank" href="/search/golang/1.htm">golang</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/gin/1.htm">gin</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E5%AE%89%E5%85%A8/1.htm">安全</a>
                        <div>基于Golang的微服务开发实践:使用Gin和GORM构建RESTfulAPI前言在微服务架构时代,高性能、易扩展和维护的API服务成为构建企业级系统的关键。Golang(Go)以其高效的执行速度、内置并发模型和优秀的性能表现,正逐渐成为后端微服务开发的热门选择。本文将详细介绍如何使用Gin框架与GORMORM构建一个RESTfulAPI微服务。我们将从项目初始化、数据模型设计、路由与控制器开发,</div>
                    </li>
                    <li><a href="/article/1901110807526174720.htm"
                           title="解决约束多目标优化问题的新方法:MOEA/D-DAE算法深度解析" target="_blank">解决约束多目标优化问题的新方法:MOEA/D-DAE算法深度解析</a>
                        <span class="text-muted">木子算法</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%9B%AE%E6%A0%87%E4%BC%98%E5%8C%96/1.htm">多目标优化</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%9B%AE%E6%A0%87/1.htm">多目标</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>解决约束多目标优化问题的新方法:MOEA/D-DAE算法深度解析在工程优化、机器学习等众多领域,约束多目标优化问题(CMOPs)广泛存在。传统方法在处理这类问题时,常因可行区域不连通或约束违反局部极小点陷入停滞。近期,IEEETransactionsonEvolutionaryComputation上的一篇论文提出了一种新颖的解决方案——MOEA/D-DAE算法,通过结合检测-逃逸策略(DAE)和</div>
                    </li>
                    <li><a href="/article/1901109296423301120.htm"
                           title="基于深度学习的个性化新闻推荐系统设计与实现计算机毕设" target="_blank">基于深度学习的个性化新闻推荐系统设计与实现计算机毕设</a>
                        <span class="text-muted">sj52abcd</span>
<a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E8%AF%BE%E7%A8%8B%E8%AE%BE%E8%AE%A1/1.htm">课程设计</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%AF%95%E4%B8%9A%E8%AE%BE%E8%AE%A1/1.htm">毕业设计</a>
                        <div>博主介绍:✌专注于VUE,小程序,安卓,Java,python,物联网专业,有17年开发经验,长年从事毕业指导,项目实战✌选取一个适合的毕业设计题目很重要。✌关注✌私信我✌具体的问题,我会尽力帮助你。研究的背景:随着互联网技术的发展和普及,人们越来越依赖互联网获取信息。然而,随着信息量的不断增加,用户在查找新闻时面临着信息过载的问题。为了解决这个问题,个性化新闻推荐系统被广泛应用。个性化新闻推荐系</div>
                    </li>
                    <li><a href="/article/1901108540295147520.htm"
                           title="芯谷78M05:三端正电压调节器的稳定之选" target="_blank">芯谷78M05:三端正电压调节器的稳定之选</a>
                        <span class="text-muted">青牛科技实业01</span>
<a class="tag" taget="_blank" href="/search/%E8%8A%AF%E8%B0%B7/1.htm">芯谷</a><a class="tag" taget="_blank" href="/search/%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">单片机</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E7%A1%AC%E4%BB%B6/1.htm">嵌入式硬件</a><a class="tag" taget="_blank" href="/search/%E6%95%A3%E7%83%AD%E9%A3%8E%E6%89%87/1.htm">散热风扇</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E5%AE%B6%E5%B1%85/1.htm">智能家居</a><a class="tag" taget="_blank" href="/search/%E7%A7%91%E6%8A%80/1.htm">科技</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E9%A2%91%E9%99%90%E5%B9%85/1.htm">音频限幅</a><a class="tag" taget="_blank" href="/search/%E4%BE%BF%E6%90%BA%E5%BC%8F%E9%9F%B3%E9%A2%91/1.htm">便携式音频</a>
                        <div>在电子电路设计中,稳定的电源供应是确保系统正常运行的关键因素之一。78M05作为一款经典的三端正电压调节器,以其简单、可靠和高效的特性,成为了众多工程师在5V电源设计中的首选。本文将深入探讨芯谷78M05的特性、电气参数、典型应用电路以及使用注意事项,帮助读者全面了解这一经典芯片。一、产品概述芯谷78M05是一款三端正电压调节器,属于78MXX系列固定电压调节器集成电路的一员。该芯片能够提供稳定的</div>
                    </li>
                    <li><a href="/article/1901107531510509568.htm"
                           title="Android Framework中Launcher的启动流程分析" target="_blank">Android Framework中Launcher的启动流程分析</a>
                        <span class="text-muted">数据科学引擎</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>AndroidFramework中Launcher的启动流程分析Launcher是Android系统中负责管理应用程序显示和启动的组件。在这篇文章中,我们将深入分析AndroidFramework中Launcher的启动流程,并通过代码示例来说明。Launcher的启动过程可以分为以下几个关键步骤:用户点击应用图标或按下Home键触发Launcher启动。Launcher的入口是Launcher应</div>
                    </li>
                    <li><a href="/article/1901106271432536064.htm"
                           title="Autoleaders控制组——51单片机学习笔记(2)" target="_blank">Autoleaders控制组——51单片机学习笔记(2)</a>
                        <span class="text-muted">Autoleaders控制组 邓翔</span>
<a class="tag" taget="_blank" href="/search/51%E5%8D%95%E7%89%87%E6%9C%BA/1.htm">51单片机</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E7%AC%94%E8%AE%B0/1.htm">笔记</a>
                        <div>51单片机学习(2)1.模块化编程1.1模块化编程的意义在学习单片机的途中,随着我们的知识不断扩展,我们能写出的代码也越来越复杂,越来越长了,有时我们自己写出的很长的代码,出现了错误,需要调试,但奈何自己的代码实在是太长了,真的不好分析到底是哪里出错了。这是因为我们将太多的函数和代码放在一个main.c的文件里,导致代码过度堆积。如果我们能够条理清晰地去将不同作用的代码和函数放在不同的xxx.c文</div>
                    </li>
                    <li><a href="/article/1901105641284497408.htm"
                           title="html-to-image的使用及图片变形和无图问题修复" target="_blank">html-to-image的使用及图片变形和无图问题修复</a>
                        <span class="text-muted">庸懒</span>
<a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>html-to-image的使用及图片变形和无图问题修复最近迭代的时候因为新增了一个需求,需要前端提供素材及样式给后端,后端同步渲染,但是因为部分样式问题后端无法实现所以决定前端将页面生成图片然后传递给后端使用,本文记录一下使用的过程及遇到的部分问题。技术调研现在将页面元素转换成图片的插件有很多,普遍使用的技术原理都是利用canvas或者SVG将页面元素转换成画布或者svg元素,然后再转成图片。这</div>
                    </li>
                    <li><a href="/article/1901105389223604224.htm"
                           title="Python 在人工智能领域的实际6大案例" target="_blank">Python 在人工智能领域的实际6大案例</a>
                        <span class="text-muted">Solomon_肖哥弹架构</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</a>
                        <div>Python作为一种功能强大且易于学习的编程语言,在人工智能(AI)领域得到了广泛的应用。从机器学习到深度学习,从自然语言处理到计算机视觉,Python提供了丰富的库和框架,使得开发者能够快速实现各种AI应用。本文将通过多个实际案例,展示Python在人工智能领域的强大功能和应用前景。二、案例一:手写数字识别(MNIST)1.背景介绍手写数字识别是机器学习领域的经典入门项目,MNIST数据集包含了</div>
                    </li>
                    <li><a href="/article/1901105262106832896.htm"
                           title="JAVA从万级QPS到亿级吞吐,如何用非阻塞模型突破传统架构的性能瓶颈" target="_blank">JAVA从万级QPS到亿级吞吐,如何用非阻塞模型突破传统架构的性能瓶颈</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%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>本人详解作者:王文峰,参加过CSDN2020年度博客之星,《Java王大师王天师》公众号:JAVA开发王大师,专注于天道酬勤的Java开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯山峯转载说明:务必注明来源(注明:作者:王文峰哦)JAVA从万级QPS到亿级吞吐,如何用非阻塞模型突破传统架构的性能瓶颈学习教程(传送门)引言:当线程池成为瓶颈——某视频平台春节</div>
                    </li>
                    <li><a href="/article/1901105134667100160.htm"
                           title="ROS2——C++新特性" target="_blank">ROS2——C++新特性</a>
                        <span class="text-muted">A_lvvx</span>
<a class="tag" taget="_blank" href="/search/ROS2/1.htm">ROS2</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ROS2/1.htm">ROS2</a>
                        <div>1.自动类型推导auto,可以自行将定义的变量赋值为整形、浮点型、字符型.....2.智能指针c++11提供了三种类型的智能指针:std::unique_ptr、std::shared_ptr和std::weak_ptr。在同一个程序中将某个资源使用智能共享指针进行管理,那么该数据无论在多少个函数内进行传递,都不会发生资源的复制,运行效率会大大提高。当所有的程序使用完毕后,还会自动收回,不会造成内</div>
                    </li>
                    <li><a href="/article/1901105135791173632.htm"
                           title="Android Framework 之了解系统启动流程二" target="_blank">Android Framework 之了解系统启动流程二</a>
                        <span class="text-muted">Bonnie_cat</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a>
                        <div>AndroidFramework源码阅读系列篇章有:系统启动流程一之init进程和zygote进程启动分析系统启动流程二之SystemServer进程启动分析1.SystemServer进程启动分析在系统启动流程一之init进程和zygote进程启动分析中分析zygote进程时,我们知道了zygote调用forkSystemServer()方法fork了SystemServer进程。看一下fork</div>
                    </li>
                    <li><a href="/article/1901103749863108608.htm"
                           title="软件需求-软件客户需求权利书" target="_blank">软件需求-软件客户需求权利书</a>
                        <span class="text-muted">workflower</span>
<a class="tag" taget="_blank" href="/search/UML%E5%BB%BA%E6%A8%A1/1.htm">UML建模</a><a class="tag" taget="_blank" href="/search/%E9%9C%80%E6%B1%82%E5%88%86%E6%9E%90/1.htm">需求分析</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E9%9C%80%E6%B1%82/1.htm">软件需求</a><a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B/1.htm">软件工程</a><a class="tag" taget="_blank" href="/search/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                        <div>权利#1:要求分析人员使用符合客户语言习惯的表达需求讨论应集中于业务需要和任务,故要使用业务术语,你应将其教给分析人员,而你不一定要懂得计算机的行业术语。权利#2:要求分析人员了解客户的业务及目标通过与用户交流来获取用户需求、分析人员才能更好地了解你的业务任务和怎样才能使产品更好地满足你的需要。这将有助于开发人员设计出真正满足你的需要并达到你期望的优秀软件。为帮助开发人员和分析人员,可以考虑邀请他</div>
                    </li>
                    <li><a href="/article/1901103623081881600.htm"
                           title="深入探究YOLO系列的骨干网路" target="_blank">深入探究YOLO系列的骨干网路</a>
                        <span class="text-muted">编码实践</span>
<a class="tag" taget="_blank" href="/search/YOLO/1.htm">YOLO</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a>
                        <div>深入探究YOLO系列的骨干网路YOLO系列是目标检测领域中非常知名的算法。其通过将整个图像作为输入,并且直接在图像上通过一个单独的神经网络输出每个检测框的类别预测和边界框信息。为了更好地理解YOLO系列,我们需要先了解它所使用的骨干网路。骨干网络是深度学习模型中的核心部分,负责提取图像的特征。如今常用的骨干网络有VGG、ResNet和MobileNet等。YOLO系列算法采用的是Darknet骨干</div>
                    </li>
                    <li><a href="/article/1901102488602341376.htm"
                           title="如何用deepseek炒股" target="_blank">如何用deepseek炒股</a>
                        <span class="text-muted">Real Man★</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/1.htm">机器学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>使用DeepSeek进行炒股的核心思路是利用其强大的数据处理和预测能力,辅助投资决策。以下是具体的应用方法和步骤:一、数据收集与处理获取市场数据股票数据:通过API(如Tushare、YahooFinance)获取历史股价、成交量、财务数据等。新闻与舆情:使用DeepSeek的NLP能力分析新闻、社交媒体和公告,提取市场情绪和事件影响。宏观经济数据:收集GDP、利率、通胀等数据,分析其对股市的影响</div>
                    </li>
                                <li><a href="/article/12.htm"
                                       title="eclipse maven" target="_blank">eclipse maven</a>
                                    <span class="text-muted">IXHONG</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</a>
                                    <div>eclipse中使用maven插件的时候,运行run as maven build的时候报错 
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match. 
  
可以设一个环境变量M2_HOME指</div>
                                </li>
                                <li><a href="/article/139.htm"
                                       title="timer cancel方法的一个小实例" target="_blank">timer cancel方法的一个小实例</a>
                                    <span class="text-muted">alleni123</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%9A%E7%BA%BF%E7%A8%8B/1.htm">多线程</a><a class="tag" taget="_blank" href="/search/timer/1.htm">timer</a>
                                    <div>package com.lj.timer;

import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;

public class MyTimer extends TimerTask
{

	private int a;
	
	private Timer timer;
	
	pub</div>
                                </li>
                                <li><a href="/article/266.htm"
                                       title="MySQL数据库在Linux下的安装" target="_blank">MySQL数据库在Linux下的安装</a>
                                    <span class="text-muted">ducklsl</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>1.建好一个专门放置MySQL的目录 
/mysql/db数据库目录 
/mysql/data数据库数据文件目录 
 
2.配置用户,添加专门的MySQL管理用户 
 
>groupadd mysql ----添加用户组
>useradd -g mysql mysql ----在mysql用户组中添加一个mysql用户 
3.配置,生成并安装MySQL 
 
>cmake -D</div>
                                </li>
                                <li><a href="/article/393.htm"
                                       title="spring------>>cvc-elt.1: Cannot find the declaration of element" target="_blank">spring------>>cvc-elt.1: Cannot find the declaration of element</a>
                                    <span class="text-muted">Array_06</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/bean/1.htm">bean</a>
                                    <div>将-------- 
 
<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3</div>
                                </li>
                                <li><a href="/article/520.htm"
                                       title="maven发布第三方jar的一些问题" target="_blank">maven发布第三方jar的一些问题</a>
                                    <span class="text-muted">cugfy</span>
<a class="tag" taget="_blank" href="/search/maven/1.htm">maven</a>
                                    <div>maven中发布 第三方jar到nexus仓库使用的是 deploy:deploy-file命令 
 
有许多参数,具体可查看 
 
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html 
 
以下是一个例子: 
 
mvn  deploy:deploy-file -DgroupId=xpp3 </div>
                                </li>
                                <li><a href="/article/647.htm"
                                       title="MYSQL下载及安装" target="_blank">MYSQL下载及安装</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>    好久没有去安装过MYSQL,今天自己在安装完MYSQL过后用navicat for mysql去厕测试链接的时候出现了10061的问题,因为的的MYSQL是最新版本为5.6.24,所以下载的文件夹里没有my.ini文件,所以在网上找了很多方法还是没有找到怎么解决问题,最后看到了一篇百度经验里有这个的介绍,按照其步骤也完成了安装,在这里给大家分享下这个链接的地址</div>
                                </li>
                                <li><a href="/article/774.htm"
                                       title="ios TableView cell的布局" target="_blank">ios TableView cell的布局</a>
                                    <span class="text-muted">张亚雄</span>
<a class="tag" taget="_blank" href="/search/tableview/1.htm">tableview</a>
                                    <div>  cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:[indexPath row]]]; 
    
  
    CGSize itemSize = CGSizeMake(60, 50); 
 
  &nbs</div>
                                </li>
                                <li><a href="/article/901.htm"
                                       title="Java编码转义" target="_blank">Java编码转义</a>
                                    <span class="text-muted">adminjun</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A0%81%E8%BD%AC%E4%B9%89/1.htm">编码转义</a>
                                    <div>    import java.io.UnsupportedEncodingException;

    /**
    * 转换字符串的编码
    */
    public class ChangeCharset {
    /** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
    public static final Strin</div>
                                </li>
                                <li><a href="/article/1028.htm"
                                       title="Tomcat 配置和spring" target="_blank">Tomcat 配置和spring</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                                    <div>简介 
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。最重要的配置文件:server.xml 。要配置tomcat,基本上了解server.xml,context.xml和web.xml。 
 
 Server.xml --  tomcat主</div>
                                </li>
                                <li><a href="/article/1155.htm"
                                       title="Java打印当前目录下的所有子目录和文件" target="_blank">Java打印当前目录下的所有子目录和文件</a>
                                    <span class="text-muted">ayaoxinchao</span>
<a class="tag" taget="_blank" href="/search/%E9%80%92%E5%BD%92/1.htm">递归</a><a class="tag" taget="_blank" href="/search/File/1.htm">File</a>
                                    <div>其实这个没啥技术含量,大湿们不要操笑哦,只是做一个简单的记录,简单用了一下递归算法。 
  
import java.io.File;

/**
 * @author Perlin
 * @date 2014-6-30
 */
public class PrintDirectory {
	
	public static void printDirectory(File f</div>
                                </li>
                                <li><a href="/article/1282.htm"
                                       title="linux安装mysql出现libs报冲突解决" target="_blank">linux安装mysql出现libs报冲突解决</a>
                                    <span class="text-muted">BigBird2012</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>linux安装mysql出现libs报冲突解决 
安装mysql出现 
file /usr/share/mysql/ukrainian/errmsg.sys from install of MySQL-server-5.5.33-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.61-4.el6.i686 
 </div>
                                </li>
                                <li><a href="/article/1409.htm"
                                       title="jedis连接池使用实例" target="_blank">jedis连接池使用实例</a>
                                    <span class="text-muted">bijian1013</span>
<a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/jedis%E8%BF%9E%E6%8E%A5%E6%B1%A0/1.htm">jedis连接池</a><a class="tag" taget="_blank" href="/search/jedis/1.htm">jedis</a>
                                    <div>实例代码: 
package com.bijian.study;

import java.util.ArrayList;
import java.util.List;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoo</div>
                                </li>
                                <li><a href="/article/1536.htm"
                                       title="关于朋友" target="_blank">关于朋友</a>
                                    <span class="text-muted">bingyingao</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%8B%E5%8F%8B/1.htm">朋友</a><a class="tag" taget="_blank" href="/search/%E5%85%B4%E8%B6%A3%E7%88%B1%E5%A5%BD/1.htm">兴趣爱好</a><a class="tag" taget="_blank" href="/search/%E7%BB%B4%E6%8C%81/1.htm">维持</a>
                                    <div>  成为朋友的必要条件: 
   志相同,道不合,可以成为朋友。譬如马云、周星驰一个是商人,一个是影星,可谓道不同,但都很有梦想,都要在各自领域里做到最好,当他们遇到一起,互相欣赏,可以畅谈两个小时。   
  志不同,道相合,也可以成为朋友。譬如有时候看到两个一个成绩很好每次考试争做第一,一个成绩很差的同学是好朋友。他们志向不相同,但他</div>
                                </li>
                                <li><a href="/article/1663.htm"
                                       title="【Spark七十九】Spark RDD API一" target="_blank">【Spark七十九】Spark RDD API一</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a>
                                    <div>aggregate 
package spark.examples.rddapi

import org.apache.spark.{SparkConf, SparkContext}

//测试RDD的aggregate方法
object AggregateTest {
  def main(args: Array[String]) {
    val conf = new Spar</div>
                                </li>
                                <li><a href="/article/1790.htm"
                                       title="ktap 0.1 released" target="_blank">ktap 0.1 released</a>
                                    <span class="text-muted">bookjovi</span>
<a class="tag" taget="_blank" href="/search/kernel/1.htm">kernel</a><a class="tag" taget="_blank" href="/search/tracing/1.htm">tracing</a>
                                    <div>Dear,

I'm pleased to announce that ktap release v0.1, this is the first official
release of ktap project, it is expected that this release is not fully
functional or very stable and we welcome bu</div>
                                </li>
                                <li><a href="/article/1917.htm"
                                       title="能保存Properties文件注释的Properties工具类" target="_blank">能保存Properties文件注释的Properties工具类</a>
                                    <span class="text-muted">BrokenDreams</span>
<a class="tag" taget="_blank" href="/search/properties/1.htm">properties</a>
                                    <div>        今天遇到一个小需求:由于java.util.Properties读取属性文件时会忽略注释,当写回去的时候,注释都没了。恰好一个项目中的配置文件会在部署后被某个Java程序修改一下,但修改了之后注释全没了,可能会给以后的参数调整带来困难。所以要解决这个问题。 
    &nb</div>
                                </li>
                                <li><a href="/article/2044.htm"
                                       title="读《研磨设计模式》-代码笔记-外观模式-Facade" target="_blank">读《研磨设计模式》-代码笔记-外观模式-Facade</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/%E8%AE%BE%E8%AE%A1%E6%A8%A1%E5%BC%8F/1.htm">设计模式</a>
                                    <div>声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/ 
 
 



/*
 * 百度百科的定义:
 * Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,
 * 隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
 * 
 * 可简单地</div>
                                </li>
                                <li><a href="/article/2171.htm"
                                       title="After Effects教程收集" target="_blank">After Effects教程收集</a>
                                    <span class="text-muted">cherishLC</span>
<a class="tag" taget="_blank" href="/search/After+Effects/1.htm">After Effects</a>
                                    <div>1、中文入门 
 
http://study.163.com/course/courseMain.htm?courseId=730009 
 
 2、videocopilot英文入门教程(中文字幕) 
 
http://www.youku.com/playlist_show/id_17893193.html 
英文原址: 
http://www.videocopilot.net/basic/ 
素</div>
                                </li>
                                <li><a href="/article/2298.htm"
                                       title="Linux Apache 安装过程" target="_blank">Linux Apache 安装过程</a>
                                    <span class="text-muted">crabdave</span>
<a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a>
                                    <div>Linux Apache 安装过程 
  
下载新版本: 
apr-1.4.2.tar.gz(下载网站:http://apr.apache.org/download.cgi) 
apr-util-1.3.9.tar.gz(下载网站:http://apr.apache.org/download.cgi) 
httpd-2.2.15.tar.gz(下载网站:http://httpd.apac</div>
                                </li>
                                <li><a href="/article/2425.htm"
                                       title="Shell学习 之 变量赋值和引用" target="_blank">Shell学习 之 变量赋值和引用</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/shell/1.htm">shell</a><a class="tag" taget="_blank" href="/search/%E5%8F%98%E9%87%8F%E5%BC%95%E7%94%A8/1.htm">变量引用</a><a class="tag" taget="_blank" href="/search/%E8%B5%8B%E5%80%BC/1.htm">赋值</a>
                                    <div>本文转自:http://www.cnblogs.com/papam/articles/1548679.html 
 
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则: 
 
首个字符必须为字母(a-z,A-Z) 
中间不能有空格,可以使用下划线(_) 
不能使用标点符号 
不能使用bash里的关键字(可用help命令查看保留关键字) 
需要给变量赋值时,可以这么写: 
 
</div>
                                </li>
                                <li><a href="/article/2552.htm"
                                       title="Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)" target="_blank">Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/jdk/1.htm">jdk</a>
                                    <div>Java SE 第一讲: 
 
Java SE:Java Standard Edition 
Java ME: Java Mobile Edition 
Java EE:Java Enterprise Edition 
 
Java是由Sun公司推出的(今年初被Oracle公司收购)。 
 
收购价格:74亿美金 
 
J2SE、J2ME、J2EE 
 
JDK:Java Development </div>
                                </li>
                                <li><a href="/article/2679.htm"
                                       title="YII给用户登录加上验证码" target="_blank">YII给用户登录加上验证码</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a>
                                    <div>1、在SiteController中添加如下代码: 
    /**
     * Declares class-based actions.
     */
    public function actions() {
        return array(
            // captcha action renders the CAPTCHA image displ</div>
                                </li>
                                <li><a href="/article/2806.htm"
                                       title="Lucene使用说明" target="_blank">Lucene使用说明</a>
                                    <span class="text-muted">dyy_gusi</span>
<a class="tag" taget="_blank" href="/search/Lucene/1.htm">Lucene</a><a class="tag" taget="_blank" href="/search/search/1.htm">search</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E8%AF%8D%E5%99%A8/1.htm">分词器</a>
                                    <div>Lucene使用说明 
1、lucene简介 
1.1、什么是lucene 
    Lucene是一个全文搜索框架,而不是应用产品。因此它并不像baidu或者googleDesktop那种拿来就能用,它只是提供了一种工具让你能实现这些产品和功能。 
1.2、lucene能做什么 
    要回答这个问题,先要了解lucene的本质。实际</div>
                                </li>
                                <li><a href="/article/2933.htm"
                                       title="学习编程并不难,做到以下几点即可!" target="_blank">学习编程并不难,做到以下几点即可!</a>
                                    <span class="text-muted">gcq511120594</span>
<a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/1.htm">数据结构</a><a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                                    <div>不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。 
1、确定目标 
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到</div>
                                </li>
                                <li><a href="/article/3060.htm"
                                       title="Java面试十问之三:Java与C++内存回收机制的差别" target="_blank">Java面试十问之三:Java与C++内存回收机制的差别</a>
                                    <span class="text-muted">HNUlanwei</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/C%2B%2B/1.htm">C++</a><a class="tag" taget="_blank" href="/search/finalize%28%29/1.htm">finalize()</a><a class="tag" taget="_blank" href="/search/%E5%A0%86%E6%A0%88/1.htm">堆栈</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98%E5%9B%9E%E6%94%B6/1.htm">内存回收</a>
                                    <div>大家知道, Java 除了那 8 种基本类型以外,其他都是对象类型(又称为引用类型)的数据。 JVM 会把程序创建的对象存放在堆空间中,那什么又是堆空间呢?其实,堆( Heap)是一个运行时的数据存储区,从它可以分配大小各异的空间。一般,运行时的数据存储区有堆( Heap)和堆栈( Stack),所以要先看它们里面可以分配哪些类型的对象实体,然后才知道如何均衡使用这两种存储区。一般来说,栈中存放的</div>
                                </li>
                                <li><a href="/article/3187.htm"
                                       title="第二章 Nginx+Lua开发入门" target="_blank">第二章 Nginx+Lua开发入门</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/lua/1.htm">lua</a>
                                    <div>Nginx入门 
本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章: 
nginx启动、关闭、重启 
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html 
agentzh 的 Nginx 教程 
http://openresty.org/download/agentzh-nginx-tutor</div>
                                </li>
                                <li><a href="/article/3314.htm"
                                       title="MongoDB windows安装 基本命令" target="_blank">MongoDB windows安装 基本命令</a>
                                    <span class="text-muted">liyonghui160com</span>

                                    <div>  
windows安装 
  
 安装目录: 
  
D:\MongoDB\ 
  
新建目录 
  
D:\MongoDB\data\db 
  
4.启动进城: 
  
cd D:\MongoDB\bin 
  
mongod -dbpath D:\MongoDB\data\db 
  
&n</div>
                                </li>
                                <li><a href="/article/3441.htm"
                                       title="Linux下通过源码编译安装程序" target="_blank">Linux下通过源码编译安装程序</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a>
                                    <div>一、程序的组成部分     Linux下程序大都是由以下几部分组成:     二进制文件:也就是可以运行的程序文件     库文件:就是通常我们见到的lib目录下的文件     配置文件:这个不必多说,都知道     帮助文档:通常是我们在linux下用man命令查看的命令的文档      
二、linux下程序的存放目录     linux程序的存放目录大致有三个地方:     /etc, /b</div>
                                </li>
                                <li><a href="/article/3568.htm"
                                       title="WEB开发编程的职业生涯4个阶段" target="_blank">WEB开发编程的职业生涯4个阶段</a>
                                    <span class="text-muted">shw3588</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/Web/1.htm">Web</a><a class="tag" taget="_blank" href="/search/%E5%B7%A5%E4%BD%9C/1.htm">工作</a><a class="tag" taget="_blank" href="/search/%E7%94%9F%E6%B4%BB/1.htm">生活</a>
                                    <div>觉得自己什么都会 
2007年从学校毕业,凭借自己原创的ASP毕业设计,以为自己很厉害似的,信心满满去东莞找工作,找面试成功率确实很高,只是工资不高,但依旧无法磨灭那过分的自信,那时候什么考勤系统、什么OA系统、什么ERP,什么都觉得有信心,这样的生涯大概持续了约一年。 
 
根本不是自己想的那样 
2008年开始接触很多工作相关的东西,发现太多东西自己根本不会,都需要去学,不管是asp还是js,</div>
                                </li>
                                <li><a href="/article/3695.htm"
                                       title="遭遇jsonp同域下变作post请求的坑" target="_blank">遭遇jsonp同域下变作post请求的坑</a>
                                    <span class="text-muted">vb2005xu</span>
<a class="tag" taget="_blank" href="/search/jsonp/1.htm">jsonp</a><a class="tag" taget="_blank" href="/search/%E5%90%8C%E5%9F%9Fpost/1.htm">同域post</a>
                                    <div>今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段 
$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv '])); 
 贴出我前端代码片段: 
$.aj</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>