12.15Nginx优化、PHP优化

一、静态资源优化
1.静态资源
2.静态资源缓存
1)配置缓存过期时间
2)配置不走缓存
3.静态资源读取
1)文件高效读取
2)文件高效传输
3)长连接
4)长连接传输
4.静态资源压缩
1)静态资源压缩配置语法
2)压缩配置
3)上传文件
二、防资源盗链
1.配置被盗连的网站
2.配置盗链的网站
3.配置hosts访问测试
4.配置防盗链语法
5.配置防盗链
6.伪造请求头
7.允许多个域名盗链
三、跨域访问
1.盗链和跨域的区别
2.配置被跨域的网站
3.配置跨域网站
4.配置hosts测试
5.测试跨域访问
6.配置允许被跨域
四、CPU亲和
1.查看cpu状态
2.修改nginx配置
3.没有配置亲和的情况
4.配置cpu亲和
1)方式1
2)方式2
3)方式3
5.配置CPU亲和后
五、nginx通用优化文件
1.通用优化配置
2.nginx优化总结
六、PHP优化
1.配置PHP页面
2.php.ini配置文件优化
3.PHP危险函数
4.php-fpm服务配置
1)php-fpm.conf配置优化
2)包含配置文件优化 /etc/php-fpm.d/*.conf
5.php状态页
1)配置php
2)配置nginx
3)访问页面

一、静态资源优化

1.静态资源

12.15Nginx优化、PHP优化_第1张图片

2.静态资源缓存

服务器上:

  • Etag:服务器上的文件唯一标示
  • Last-Modified:服务器上的文件最后修改时间
  • Expires:文件缓存过期时间
  • Cache-Control:文件多久过期
    浏览器上:
  • If-None-Match:浏览器上的文件唯一标示 ===》对应服务器上的Etag
  • If-Modified-Since:浏览器上的文件最后修改时间 ===》对应服务器上的Last-Modified
    1)配置缓存过期时间
#语法
Syntax:	expires [modified] time;
		expires epoch | max | off;
Default:	expires off;
Context:	http, server, location, if in location

#配置
[root@web01 conf.d]# vim linux.cache.com.conf
server {
    listen 80;
    server_name linux.cache.com;

    location ~* \.(png|jpg|gif)$ {
        root /code/cache;
        expires 7d;
    }
}
[root@web01 conf.d]# systemctl restart nginx
[root@web01 conf.d]# cd /code/
[root@web01 code]# mkdir cache
[root@web01 code]# cd cache/
[root@web01 cache]# rz                                                                             
[root@web01 cache]# ll
total 1868
-rw-r--r-- 1 root root  156617 Dec  7 08:54 1.jpg
-rw-r--r-- 1 root root   47542 Dec  7 08:54 2.jpg
-rw-r--r-- 1 root root 1586108 Dec  7 08:54 3.jpg
-rw-r--r-- 1 root root  113900 Dec  7 09:28 4.jpg
[root@web01 cache]# chown -R www.www /code/cache/

2)配置不走缓存

方法一:使用无痕模式
方法二:开启浏览器上面的 Disable cache
方法三:配置nginx关闭缓存
[root@web01 conf.d]# vim linux.cache.com.conf
server {
    listen 80;
    server_name linux.cache.com;

    location ~* \.(png|jpg|gif)$ {
        root /code/cache;
        etag off;
        add_header Cache-Control no-cache;
        if_modified_since off;
    }
}

3.静态资源读取

1)文件高效读取

Syntax:	sendfile on | off;
Default:	sendfile off;
Context:	http, server, location, if in location

2)文件高效传输

#将多个数据打个包,一次推送,大文件适合此配置,需要开启 sendfile
Syntax:	tcp_nopush on | off;
Default:	tcp_nopush off;
Context:	http, server, location

3)长连接

Syntax:	keepalive_timeout timeout [header_timeout];
Default:	keepalive_timeout 75s;
Context:	http, server, location

4)长连接传输

#来一条数据传输一条数据,需要开启 keepalive
Syntax:	tcp_nodelay on | off;
Default:	tcp_nodelay on;
Context:	http, server, location

4.静态资源压缩

1)静态资源压缩配置语法

#开启压缩
Syntax:	gzip on | off;
Default:	gzip off;
Context:	http, server, location, if in location

#指定压缩文件的类型
Syntax:	gzip_types mime-type ...;
Default:	gzip_types text/html;
Context:	http, server, location

#指定压缩的级别,压缩比例
Syntax:	gzip_comp_level level;
Default:	gzip_comp_level 1;   #共1-9个级别,一般我们设置3-5
Context:	http, server, location

#压缩后传输使用的协议
Syntax:	gzip_http_version 1.0 | 1.1;
Default:	gzip_http_version 1.1;
Context:	http, server, location

2)压缩配置

[root@web01 cache]# vim /etc/nginx/conf.d/linux.gzip.com.conf 
server {
    listen 80;
    server_name linux.gzip.com;

    location ~* \.(png|jpg|gif)$ {
        root /code/cache;
        gzip on;
        gzip_types image/jpeg image/gif image/png;
       gzip_comp_level 9;
    }

    location ~* \.txt$ {
        root /code/cache;
        gzip on;
        gzip_types text/plain;
        gzip_comp_level 5;
    }
}

3)上传文件

[root@web01 cache]# ll -h
total 134M
-rw-r--r-- 1 www www 153K Dec  7 08:54 1.jpg
-rw-r--r-- 1 www www 125M Dec 15 09:38 1.png
-rw-r--r-- 1 www www 7.1M Dec 15 09:33 1.txt
-rw-r--r-- 1 www www  47K Dec  7 08:54 2.jpg
-rw-r--r-- 1 www www 1.6M Dec  7 08:54 3.jpg
-rw-r--r-- 1 www www 112K Dec  7 09:28 4.jpg

二、防资源盗链

1.配置被盗连的网站

[root@web01 conf.d]# vim linux.beidaolian.com.conf 
server {
    listen 80;
    server_name linux.beidaolian.com;

    location ~* \.(png|jpg|gif)$ {
        root /code;
        index index.html;
    }
}
[root@web01 ~]# systemctl restart nginx

#准备站点和文件
[root@web01 conf.d]# echo "我是被盗连的机器" > /code/index.html
[root@web01 code]# ll /code/
-rw-r--r--   1 www  www     31962 Dec 14 09:37 404.jpg
-rw-r--r--   1 www  www        25 Dec 15 10:18 index.html

2.配置盗链的网站

[root@lb01 ~]# vim /etc/nginx/conf.d/linux.daolian.com.conf
server {
    listen 80;
    server_name linux.daolian.com;

    location ~* / {
        root /code;
        index index.html;
    }
}
[root@lb01 ~]# systemctl restart nginx

#准备站点
[root@lb01 ~]# vim /code/index.html

	
		"http://linux.beidaolian.com/404.jpg">
	</body>
</html>

3.配置hosts访问测试

10.0.0.4 linux.daolian.com
10.0.0.7 linux.beidaolian.com

#windows访问
http://linux.daolian.com/

4.配置防盗链语法

Syntax:	valid_referers none | blocked | server_names | string ...;
Default:	—
Context:	server, location

none			#nginx日志中referer部分为空
blocked 		#nginx日志中referer部分没有协议
server_names	#nginx日志中referer部分为指定的域名
string			#nginx日志中referer部分为指定的域名(可以使用正则表达式)

5.配置防盗链

[root@web01 conf.d]# vim linux.beidaolian.com.conf 
server {
    listen 80;
    server_name linux.beidaolian.com;

    location / {
        root /code;
        index index.html;
    }

    location ~* \.jpg$ {
        root /code;
        valid_referers none blocked server_names;
        if ($invalid_referer) {
           return 500;
        }
    }
}

6.伪造请求头

#模拟请求头为 http://linux.daolian.com 访问图片
[root@lb01 ~]# curl -e "http://linux.daolian.com" -I http://linux.beidaolian.com/404.jpg
HTTP/1.1 500 Internal Server Error
Server: nginx/1.18.0
Date: Tue, 15 Dec 2020 02:51:41 GMT
Content-Type: text/html; charset=utf8
Content-Length: 177
Connection: close


#模拟请求头为 http://linux.beidaolian.com 访问图片
[root@lb01 ~]# curl -e "http://linux.beidaolian.com" -I http://linux.beidaolian.com/404.jpg
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Tue, 15 Dec 2020 02:52:24 GMT
Content-Type: image/jpeg
Content-Length: 31962
Last-Modified: Mon, 14 Dec 2020 01:37:29 GMT
Connection: keep-alive
ETag: "5fd6c1d9-7cda"
Accept-Ranges: bytes

7.允许多个域名盗链

[root@web01 conf.d]# vim linux.beidaolian.com.conf 
server {
    listen 80;
    server_name linux.beidaolian.com;

    location / {
        root /code;
        index index.html;
    }

    location ~* \.jpg$ {
        root /code;
        valid_referers none blocked server_names *.baidu.com;
        if ($invalid_referer) {
           return 500;
        }
    }
}

[root@lb01 ~]# curl -e "http://www.baidu.com" -I http://linux.beidaolian.com/404.jpg
HTTP/1.1 200 OK
Server: nginx/1.18.0
Date: Tue, 15 Dec 2020 02:58:27 GMT
Content-Type: image/jpeg
Content-Length: 31962
Last-Modified: Mon, 14 Dec 2020 01:37:29 GMT
Connection: keep-alive
ETag: "5fd6c1d9-7cda"
Accept-Ranges: bytes

三、跨域访问

1.盗链和跨域的区别

盗链是由盗链的网站向被盗链的网站发起get请求获取内容
跨域是由跨域的网站向被跨域的网站发起一个完整http请求,甚至是完全跳转

2.配置被跨域的网站

[root@web01 conf.d]# vim linux.beikuayu.com.conf
server {
    listen 80;
    server_name linux.beikuayu.com;

    location / {
        root /code;
        index index.html;
    }   
}

#配置站点
[root@web01 conf.d]# echo "被跨域" > /code/index.html

3.配置跨域网站

[root@lb01 conf.d]# vim linux.kuayu.com.conf 
server {
    listen 80;
    server_name linux.kuayu.com;

    location ~* / {
        root /code;
        index index.html;
    }
}

#配置跨域的站点
[root@lb01 conf.d]# vim /code/index.html 
"en">

        "UTF-8" />
        测试ajax和跨域访问<<span class="token operator">/</span>title>
        <script src=<span class="token string">"http://libs.baidu.com/jquery/2.1.4/jquery.min.js"</span>><<span class="token operator">/</span>script>
<<span class="token operator">/</span>head>
<script <span class="token function">type</span>=<span class="token string">"text/javascript"</span>>
$<span class="token punctuation">(</span>document<span class="token punctuation">)</span><span class="token punctuation">.</span>ready<span class="token punctuation">(</span><span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">{</span>
        $<span class="token punctuation">.</span>ajax<span class="token punctuation">(</span><span class="token punctuation">{</span>
        <span class="token function">type</span>: <span class="token string">"GET"</span><span class="token punctuation">,</span>
        url: <span class="token string">"http://linux.beikuayu.com"</span><span class="token punctuation">,</span>
        success: <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token keyword">data</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
                alert<span class="token punctuation">(</span><span class="token string">"sucess 卧槽 卧槽 卧槽 成功了!!!"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
        <span class="token punctuation">}</span><span class="token punctuation">,</span>
        error: <span class="token keyword">function</span><span class="token punctuation">(</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
                alert<span class="token punctuation">(</span><span class="token string">"fail!!,跨不过去啊,不让进去啊,只能蹭蹭!"</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 operator">/</span>script>
        <body>
                <h1>测试跨域访问<<span class="token operator">/</span>h1>
        <<span class="token operator">/</span>body>
<<span class="token operator">/</span>html>
</code></pre> 
  <h4>4.配置hosts测试</h4> 
  <pre><code class="prism language-powershell"><span class="token comment">#windows的hosts</span>
10<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>4 linux<span class="token punctuation">.</span>kuayu<span class="token punctuation">.</span>com
10<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>7 linux<span class="token punctuation">.</span>beikuayu<span class="token punctuation">.</span>com

<span class="token namespace">[root@web01 conf.d]</span><span class="token comment"># vim /etc/hosts</span>
10<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>4 linux<span class="token punctuation">.</span>kuayu<span class="token punctuation">.</span>com
10<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>7 linux<span class="token punctuation">.</span>beikuayu<span class="token punctuation">.</span>com

<span class="token namespace">[root@lb01 conf.d]</span><span class="token comment"># vim /etc/hosts</span>
10<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>4 linux<span class="token punctuation">.</span>kuayu<span class="token punctuation">.</span>com
10<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>7 linux<span class="token punctuation">.</span>beikuayu<span class="token punctuation">.</span>com
</code></pre> 
  <h4>5.测试跨域访问</h4> 
  <h4>6.配置允许被跨域</h4> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@web01 conf.d]</span><span class="token comment"># vim linux.beikuayu.com.conf </span>
server <span class="token punctuation">{</span>
    listen 80<span class="token punctuation">;</span>
    server_name linux<span class="token punctuation">.</span>beikuayu<span class="token punctuation">.</span>com<span class="token punctuation">;</span>

    location <span class="token operator">/</span> <span class="token punctuation">{</span>
        root <span class="token operator">/</span>code<span class="token punctuation">;</span>
        index index<span class="token punctuation">.</span>html<span class="token punctuation">;</span>
        <span class="token comment">#允许跨域的网站</span>
        add_header Access<span class="token operator">-</span>Control<span class="token operator">-</span>Allow<span class="token operator">-</span>Origin <span class="token operator">*</span><span class="token punctuation">;</span>
        <span class="token comment">#允许跨域网站发起的请求类型</span>
        add_header Access<span class="token operator">-</span>Control<span class="token operator">-</span>Allow<span class="token operator">-</span>Methods <span class="token string">'GET,POST,PUT,DELETE,OPTIONS'</span><span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre> 
  <h2>四、CPU亲和</h2> 
  <h4>1.查看cpu状态</h4> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@web01 ~]</span><span class="token comment"># lscpu</span>
CPU<span class="token punctuation">(</span>s<span class="token punctuation">)</span>:                4
On<span class="token operator">-</span>line CPU<span class="token punctuation">(</span>s<span class="token punctuation">)</span> list:   0<span class="token operator">-</span>3
Thread<span class="token punctuation">(</span>s<span class="token punctuation">)</span> per core:    1
Core<span class="token punctuation">(</span>s<span class="token punctuation">)</span> per socket:    4
NUMA node0 CPU<span class="token punctuation">(</span>s<span class="token punctuation">)</span>:     0<span class="token operator">-</span>3
</code></pre> 
  <h4>2.修改nginx配置</h4> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@web01 ~]</span><span class="token comment"># vim /etc/nginx/nginx.conf </span>
worker_processes  4<span class="token punctuation">;</span>

<span class="token namespace">[root@web01 ~]</span><span class="token comment"># systemctl restart nginx</span>
</code></pre> 
  <h4>3.没有配置亲和的情况</h4> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@web01 ~]</span><span class="token comment"># ps -eo pid,args,psr | grep [n]ginx</span>
  7549 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr<span class="token operator">/</span>   3
  7550 nginx: worker <span class="token keyword">process</span>         2
  7551 nginx: worker <span class="token keyword">process</span>         0
  7552 nginx: worker <span class="token keyword">process</span>         1
  7553 nginx: worker <span class="token keyword">process</span>         1
</code></pre> 
  <h4>4.配置cpu亲和</h4> 
  <p>1)方式1</p> 
  <pre><code class="prism language-powershell">worker_processes    4<span class="token punctuation">;</span>
worker_cpu_affinity 0001 0010 0100 1000<span class="token punctuation">;</span>

worker_processes    16<span class="token punctuation">;</span>
worker_cpu_affinity 0000000000000001 0000000000000010 0000000000000100 0000000000001000 <span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">.</span><span class="token punctuation">;</span>
</code></pre> 
  <p>2)方式2</p> 
  <pre><code class="prism language-powershell">worker_processes    2<span class="token punctuation">;</span>
worker_cpu_affinity 0101 1010<span class="token punctuation">;</span>
</code></pre> 
  <p>3)方式3</p> 
  <pre><code class="prism language-powershell">worker_processes auto<span class="token punctuation">;</span>
worker_cpu_affinity auto<span class="token punctuation">;</span>
</code></pre> 
  <h4>5.配置CPU亲和后</h4> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@web01 ~]</span><span class="token comment"># ps -eo pid,args,psr | grep [n]ginx</span>
  7629 nginx: master <span class="token keyword">process</span> <span class="token operator">/</span>usr<span class="token operator">/</span>   3
  7630 nginx: worker <span class="token keyword">process</span>         0
  7631 nginx: worker <span class="token keyword">process</span>         1
  7632 nginx: worker <span class="token keyword">process</span>         2
  7633 nginx: worker <span class="token keyword">process</span>         3
</code></pre> 
  <h2>五、nginx通用优化文件</h2> 
  <h4>1.通用优化配置</h4> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@nginx ~]</span><span class="token comment"># cat nginx.conf</span>
user www<span class="token punctuation">;</span>									<span class="token comment">#nginx启动用户</span>
worker_processes auto<span class="token punctuation">;</span>						 <span class="token comment">#nginx工作进程数</span>
worker_cpu_affinity auto<span class="token punctuation">;</span>					  <span class="token comment">#开启CPU亲和</span>
error_log <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>log<span class="token operator">/</span>nginx<span class="token operator">/</span>error<span class="token punctuation">.</span>log warn<span class="token punctuation">;</span>	  <span class="token comment">#错误日志,存放路径,记录日志的级别</span>
pid <span class="token operator">/</span>run<span class="token operator">/</span>nginx<span class="token punctuation">.</span>pid<span class="token punctuation">;</span>							<span class="token comment">#指定pid文件位置</span>
worker_rlimit_nofile 35535<span class="token punctuation">;</span>					 <span class="token comment">#指定nginx服务的最大打开文件数</span>

events <span class="token punctuation">{</span>
    use epoll<span class="token punctuation">;</span>								<span class="token comment">#使用epoll网络模型</span>
    worker_connections 10240<span class="token punctuation">;</span>				 <span class="token comment">#worker工作进程的最大连接数</span>
<span class="token punctuation">}</span>

http <span class="token punctuation">{</span>
    include             mime<span class="token punctuation">.</span>types<span class="token punctuation">;</span>				   <span class="token comment">#nginx能识别的文件类型</span>
    default_type        application<span class="token operator">/</span>octet<span class="token operator">-</span>stream<span class="token punctuation">;</span>   <span class="token comment">#nginx不识别的文件类型默认下载</span>
    charset utf<span class="token operator">-</span>8<span class="token punctuation">;</span>								 <span class="token comment">#指定字符集</span>

    log_format  main  <span class="token string">'$remote_addr - $remote_user [$time_local] "$request" '</span>
                      <span class="token string">'$status $body_bytes_sent "$http_referer" '</span>
                      <span class="token string">'"$http_user_agent" "$http_x_forwarded_for"'</span><span class="token punctuation">;</span>			<span class="token comment">#配置日志格式</span>

    access_log  <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>log<span class="token operator">/</span>nginx<span class="token operator">/</span>access<span class="token punctuation">.</span>log  main		<span class="token comment">#指定访问日志路径,调用日志的格式</span>
    server_tokens off<span class="token punctuation">;</span>							  <span class="token comment">#隐藏版本号</span>
    client_max_body_size 200m<span class="token punctuation">;</span>					   <span class="token comment">#上传文件大小限制</span>
    sendfile            on<span class="token punctuation">;</span>						   <span class="token comment">#高效读取</span>
    tcp_nopush          on<span class="token punctuation">;</span>							<span class="token comment">#高效传输</span>
    <span class="token comment">#tcp_nodelay         on;						#实时传输</span>
    keepalive_timeout   65<span class="token punctuation">;</span>							<span class="token comment">#开启长连接</span>
    gzip on<span class="token punctuation">;</span>									  <span class="token comment">#开启压缩</span>
    gzip_disable <span class="token string">"MSIE [1-6]\."</span><span class="token punctuation">;</span>					<span class="token comment">#指定不压缩的浏览器</span>
    gzip_http_version 1<span class="token punctuation">.</span>1<span class="token punctuation">;</span>							<span class="token comment">#压缩后传输的协议</span>
    gzip_comp_level 4<span class="token punctuation">;</span>								<span class="token comment">#压缩的级别</span>
    gzip_buffers 16 8k<span class="token punctuation">;</span>								<span class="token comment">#压缩缓存</span>
    gzip_min_length 1024<span class="token punctuation">;</span>							<span class="token comment">#开启压缩的最小值</span>
    gzip_types text<span class="token operator">/</span>plain text<span class="token operator">/</span>css application<span class="token operator">/</span>json application<span class="token operator">/</span>x<span class="token operator">-</span>javascript text<span class="token operator">/</span>xml application<span class="token operator">/</span>xml application<span class="token operator">/</span>xml<span class="token operator">+</span>rss text<span class="token operator">/</span>javascript image<span class="token operator">/</span>jpeg<span class="token punctuation">;</span>		<span class="token comment">#压缩的文件类型</span>
    include <span class="token operator">/</span>etc<span class="token operator">/</span>nginx<span class="token operator">/</span>conf<span class="token punctuation">.</span>d/<span class="token operator">*</span><span class="token punctuation">.</span>conf<span class="token punctuation">;</span>				<span class="token comment">#包含的配置文件</span>
<span class="token punctuation">}</span>
</code></pre> 
  <p>2.nginx优化总结</p> 
  <pre><code class="prism language-powershell">1、CPU亲和、worker进程数、调整nginx进程打开的文件句柄数
2、使用Epool网络模型、调整每个worker进程的最大连接数
3、文件的高效读取sendfile、nopush
4、文件的传输实时性、nodealy
5、开启tcp长连接,以及长连接超时时间keepalive_timeout
6、开启文件传输压缩gzip
7、开启静态文件expires缓存
8、隐藏nginx版本号
9、禁止通过ip地址访问,禁止恶意域名解析,只允许域名访问
10、配置防盗链、以及跨域访问
11、防DDOS、cc攻击,限制单IP并发连接,以及http请求
12、优雅显示nginx错误页面
13、nginx加密传输https优化
14、nginx proxy_cache、fastcgi_cache、uwsgi_cache 代理缓存,第三方工具(squid、varnish)
</code></pre> 
  <h2>六、PHP优化</h2> 
  <h4>1.配置PHP页面</h4> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@web01 ~]</span><span class="token comment"># vim /etc/nginx/conf.d/php.conf</span>
server <span class="token punctuation">{</span>
    listen 80<span class="token punctuation">;</span>
    server_name linux<span class="token punctuation">.</span>phpserver<span class="token punctuation">.</span>com<span class="token punctuation">;</span>
    root <span class="token operator">/</span>code<span class="token operator">/</span>phpserver<span class="token punctuation">;</span>
    index index<span class="token punctuation">.</span>php<span class="token punctuation">;</span>

    location ~<span class="token operator">*</span> \<span class="token punctuation">.</span>php$ <span class="token punctuation">{</span>
        fastcgi_pass 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1:9000<span class="token punctuation">;</span>
        fastcgi_param SCRIPT_FILENAME <span class="token variable">$document_root</span><span class="token variable">$fastcgi_script_name</span><span class="token punctuation">;</span>
        include fastcgi_params<span class="token punctuation">;</span>
    <span class="token punctuation">}</span>
<span class="token punctuation">}</span>

<span class="token comment">#配置站点</span>
<span class="token namespace">[root@web01 ~]</span><span class="token comment"># mkdir /code/phpserver</span>
<span class="token namespace">[root@web01 ~]</span><span class="token comment"># vim /code/phpserver/index.php </span>
<?php
    phpinfo<span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
</code></pre> 
  <h4>2.php.ini配置文件优化</h4> 
  <pre><code class="prism language-powershell"><span class="token comment">#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</span>
<span class="token comment">#; Error handling and logging ;</span>
<span class="token comment">#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;</span>
expose_php = Off                        <span class="token comment"># 关闭php版本信息</span>
display_error = Off                     <span class="token comment"># 屏幕不显示错误日志(开发环境可以开启 on)</span>
error_reporting = E_ALL                 <span class="token comment"># 记录PHP的每个错误</span>
log_errors = On                         <span class="token comment"># 开启错误日志</span>
error_log = <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>log<span class="token operator">/</span>php_error<span class="token punctuation">.</span>log      <span class="token comment"># 错误日志写入的位置(程序处理代码时的错误)</span>
date<span class="token punctuation">.</span>timezone = Asia<span class="token operator">/</span>Shanghai           <span class="token comment"># 调整时区,默认PRC</span>

<span class="token comment">#;;;;;;;;;;;;;;;;</span>
<span class="token comment">#; File Uploads ;</span>
<span class="token comment">#;;;;;;;;;;;;;;;;</span>
file_uploads = On           <span class="token comment"># 允许文件上传</span>
upload_max_filesize = 300M  <span class="token comment"># 允许上传文件的最大大小</span>
post_max_size = 300M        <span class="token comment"># 允许客户端单个POST请求发送的最大数据</span>
max_file_uploads = 20       <span class="token comment"># 允许同时上传的文件的最大数量</span>
memory_limit = 128M         <span class="token comment"># 每个脚本执行最大内存</span>
</code></pre> 
  <h4>3.PHP危险函数</h4> 
  <pre><code class="prism language-powershell">有时候为了安全我们需要禁掉一些PHP危险函数,整理如下需要的朋友可以参考下 
phpinfo<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:输出 PHP 环境信息以及相关的模块、WEB 环境等信息。 
危险等级:中

passthru<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:允许执行一个外部程序并回显输出,类似于 exec<span class="token punctuation">(</span><span class="token punctuation">)</span>。 
危险等级:高

exec<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:允许执行一个外部程序(如 UNIX Shell 或 CMD 命令等)。 
危险等级:高

system<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:允许执行一个外部程序并回显输出,类似于 passthru<span class="token punctuation">(</span><span class="token punctuation">)</span>。 
危险等级:高

chroot<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:可改变当前 PHP 进程的工作根目录,仅当系统支持 <span class="token function">CLI</span> 模式 
PHP 时才能工作,且该函数不适用于 Windows 系统。 
危险等级:高

scandir<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:列出指定路径中的文件和目录。 
危险等级:中

chgrp<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:改变文件或目录所属的用户组。 
危险等级:高

chown<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:改变文件或目录的所有者。 
危险等级:高

shell_exec<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:通过 Shell 执行命令,并将执行结果作为字符串返回。 
危险等级:高

proc_open<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:执行一个命令并打开文件指针用于读取以及写入。 
危险等级:高

proc_get_status<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:获取使用 proc_open<span class="token punctuation">(</span><span class="token punctuation">)</span> 所打开进程的信息。 
危险等级:高

error_log<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:将错误信息发送到指定位置(文件)。 
安全备注:在某些版本的 PHP 中,可使用 error_log<span class="token punctuation">(</span><span class="token punctuation">)</span> 绕过 PHP safe mode, 
执行任意命令。 
危险等级:低

ini_alter<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:是 ini_set<span class="token punctuation">(</span><span class="token punctuation">)</span> 函数的一个别名函数,功能与 ini_set<span class="token punctuation">(</span><span class="token punctuation">)</span> 相同。 
具体参见 ini_set<span class="token punctuation">(</span><span class="token punctuation">)</span>。 
危险等级:高

ini_set<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:可用于修改、设置 PHP 环境配置参数。 
危险等级:高

ini_restore<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:可用于恢复 PHP 环境配置参数到其初始值。 
危险等级:高

dl<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:在 PHP 进行运行过程当中(而非启动时)加载一个 PHP 外部模块。 
危险等级:高

pfsockopen<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:建立一个 Internet 或 UNIX 域的 socket 持久连接。 
危险等级:高

syslog<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:可调用 UNIX 系统的系统层 syslog<span class="token punctuation">(</span><span class="token punctuation">)</span> 函数。 
危险等级:中

readlink<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:返回符号连接指向的目标文件内容。 
危险等级:中

symlink<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:在 UNIX 系统中建立一个符号链接。 
危险等级:高

popen<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:可通过 popen<span class="token punctuation">(</span><span class="token punctuation">)</span> 的参数传递一条命令,并对 popen<span class="token punctuation">(</span><span class="token punctuation">)</span> 所打开的文件进行执行。 
危险等级:高

stream_socket_server<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:建立一个 Internet 或 UNIX 服务器连接。 
危险等级:中

putenv<span class="token punctuation">(</span><span class="token punctuation">)</span> 
功能描述:用于在 PHP 运行时改变系统字符集环境。在低于 5<span class="token punctuation">.</span>2<span class="token punctuation">.</span>6 版本的 PHP 中,可利用该函数 
修改系统字符集环境后,利用 sendmail 指令发送特殊参数执行系统 SHELL 命令。 
危险等级:高

<span class="token comment">#禁用方法如下: </span>
打开<span class="token operator">/</span>etc<span class="token operator">/</span>php<span class="token punctuation">.</span>ini文件, 
查找到 disable_functions ,添加需禁用的函数名,如下: 
phpinfo<span class="token punctuation">,</span>eval<span class="token punctuation">,</span>passthru<span class="token punctuation">,</span>exec<span class="token punctuation">,</span>system<span class="token punctuation">,</span>chroot<span class="token punctuation">,</span>scandir<span class="token punctuation">,</span>chgrp<span class="token punctuation">,</span>chown<span class="token punctuation">,</span>shell_exec<span class="token punctuation">,</span>proc_open<span class="token punctuation">,</span>proc_get_status<span class="token punctuation">,</span>ini_alter<span class="token punctuation">,</span>ini_alter<span class="token punctuation">,</span>ini_restore<span class="token punctuation">,</span>dl<span class="token punctuation">,</span>p
</code></pre> 
  <h4>4.php-fpm服务配置</h4> 
  <p>1)php-fpm.conf配置优化</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@web02 ~]</span><span class="token comment"># vim /etc/php-fpm.conf</span>
<span class="token namespace">[global]</span>
<span class="token punctuation">;</span>pid = <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>log<span class="token operator">/</span>php<span class="token operator">-</span>fpm<span class="token operator">/</span>php<span class="token operator">-</span>fpm<span class="token punctuation">.</span>pid     	<span class="token comment">#pid文件存放的位置</span>
<span class="token punctuation">;</span>error_log = <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>log<span class="token operator">/</span>php<span class="token operator">-</span>fpm<span class="token operator">/</span>php<span class="token operator">-</span>fpm<span class="token punctuation">.</span>log   <span class="token comment">#错误日志存放的位置(启动时的日志)</span>
<span class="token punctuation">;</span>log_level = error                  	<span class="token comment">#日志级别, alert, error, warning, notice, debug</span>
rlimit_files = 65535                	<span class="token comment">#php-fpm进程能打开的文件句柄数</span>
<span class="token punctuation">;</span>events<span class="token punctuation">.</span>mechanism = epoll           	<span class="token comment">#使用epoll事件模型处理请求</span>
include=<span class="token operator">/</span>etc<span class="token operator">/</span>php<span class="token operator">-</span>fpm<span class="token punctuation">.</span>d/<span class="token operator">*</span><span class="token punctuation">.</span>conf
</code></pre> 
  <p>2)包含配置文件优化 /etc/php-fpm.d/*.conf</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@web02 ~]</span><span class="token comment"># vim /etc/php-fpm.d/www.conf</span>
<span class="token namespace">[www]</span>       				   <span class="token comment">#池名称</span>
user = www  				   <span class="token comment">#进程运行的用户</span>
<span class="token function">group</span> = www 				   <span class="token comment">#进程运行的组</span>
<span class="token punctuation">;</span>listen = <span class="token operator">/</span>dev<span class="token operator">/</span>shm<span class="token operator">/</span>php<span class="token operator">-</span>fpm<span class="token punctuation">.</span>sock <span class="token comment">#监听在本地socket文件</span>
listen = 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1:9000         <span class="token comment">#监听在本地tcp的9000端口</span>
<span class="token punctuation">;</span>listen<span class="token punctuation">.</span>allowed_clients = 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1 <span class="token comment">#允许访问FastCGI进程的IP,any不限制 </span>
pm = dynamic                    <span class="token comment">#管理方式(dynamic为动态,static为静态)</span>
pm<span class="token punctuation">.</span>max_children = 512           <span class="token comment">#最大启动的php-fpm进程数(静态管理,配置dynamic时失效)</span>
pm<span class="token punctuation">.</span>start_servers = 32           <span class="token comment">#动态方式下的起始php-fpm进程数量。</span>
pm<span class="token punctuation">.</span>min_spare_servers = 32       <span class="token comment">#动态方式下的最小php-fpm进程数量。</span>
pm<span class="token punctuation">.</span>max_spare_servers = 64       <span class="token comment">#动态方式下的最大php-fpm进程数量。</span>
pm<span class="token punctuation">.</span>max_requests = 1500          <span class="token comment">#达到这个请求数,子进程会重启,如果是0那就一直接受请求</span>
pm<span class="token punctuation">.</span>process_idle_timeout = 15s<span class="token punctuation">;</span>  <span class="token comment">#没有请求时多久释放一个进程</span>
pm<span class="token punctuation">.</span>status_path = <span class="token operator">/</span>php_status    <span class="token comment">#开启php的状态页面</span>

php_flag<span class="token namespace">[display_errors]</span> = off
php_admin_value<span class="token namespace">[error_log]</span> = <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>log<span class="token operator">/</span>phpfpm_error<span class="token punctuation">.</span>log
php_admin_flag<span class="token namespace">[log_errors]</span> = on
request_slowlog_timeout = 5s    <span class="token comment">#php脚本执行超过5s的文件</span>
slowlog = <span class="token operator">/</span><span class="token keyword">var</span><span class="token operator">/</span>log<span class="token operator">/</span>php_slow<span class="token punctuation">.</span>log <span class="token comment">#记录至该文件中</span>
</code></pre> 
  <h4>5.php状态页</h4> 
  <p>1)配置php</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@web02 ~]</span><span class="token comment"># vim /etc/php-fpm.d/www.conf</span>
pm<span class="token punctuation">.</span>status_path = <span class="token operator">/</span>php_status 		<span class="token comment">#开启php的状态页面</span>

<span class="token namespace">[root@web02 ~]</span><span class="token comment"># systemctl restart php-fpm</span>
</code></pre> 
  <p>2)配置nginx</p> 
  <pre><code class="prism language-powershell"><span class="token namespace">[root@web02 ~]</span><span class="token comment"># cat /etc/nginx/conf.d/php.conf</span>
server <span class="token punctuation">{</span>
	listen 80<span class="token punctuation">;</span>
	server_name linux<span class="token punctuation">.</span>php<span class="token punctuation">.</span>com<span class="token punctuation">;</span>
	root <span class="token operator">/</span>code<span class="token operator">/</span>php<span class="token punctuation">;</span>
	index index<span class="token punctuation">.</span>php<span class="token punctuation">;</span>
	location ~<span class="token operator">*</span> \<span class="token punctuation">.</span>php$ <span class="token punctuation">{</span>
        fastcgi_pass 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1:9000<span class="token punctuation">;</span>
        fastcgi_param SCRIPT_FILENAME <span class="token variable">$document_root</span><span class="token variable">$fastcgi_script_name</span><span class="token punctuation">;</span>
        include fastcgi_params<span class="token punctuation">;</span>
	<span class="token punctuation">}</span>
	location <span class="token operator">/</span>status <span class="token punctuation">{</span>
		stub_status<span class="token punctuation">;</span>
	<span class="token punctuation">}</span>
	location <span class="token operator">/</span>php_status <span class="token punctuation">{</span>
		fastcgi_pass 127<span class="token punctuation">.</span>0<span class="token punctuation">.</span>0<span class="token punctuation">.</span>1:9000<span class="token punctuation">;</span>
        fastcgi_param SCRIPT_FILENAME <span class="token variable">$document_root</span><span class="token variable">$fastcgi_script_name</span><span class="token punctuation">;</span>
        include fastcgi_params<span class="token punctuation">;</span>
	<span class="token punctuation">}</span>	
<span class="token punctuation">}</span>
</code></pre> 
  <p>3)访问页面</p> 
  <pre><code class="prism language-powershell"><span class="token comment">#访问  http://linux.php.com/php_status</span>
pool:                 www							<span class="token comment">#池名称</span>
<span class="token keyword">process</span> manager:      dynamic						<span class="token comment">#动态管理</span>
<span class="token function">start</span> time:           14<span class="token operator">/</span>Sep<span class="token operator">/</span>2020:18:52:12 <span class="token operator">+</span>0800	  <span class="token comment">#启动时间</span>
<span class="token function">start</span> since:          14							<span class="token comment">#启动了多久</span>
accepted conn:        1								<span class="token comment">#连接数</span>
listen queue:         0								<span class="token comment">#等待队列</span>
max listen queue:     0								<span class="token comment">#最大等待队列</span>
listen queue len:     511							<span class="token comment">#等待队列长度</span>
idle processes:       4								<span class="token comment">#空闲的进程数</span>
active processes:     1								<span class="token comment">#活跃的进程数</span>
total processes:      5								<span class="token comment">#总的进程数</span>
max active processes: 1								<span class="token comment">#最大的活跃进程数</span>
max children reached: 0								<span class="token comment">#进程最大的限制连接数</span>
slow requests:        0								<span class="token comment">#慢查询</span>
</code></pre> 
 </div> 
</div>
                            </div>
                        </div>
                    </div>
                    <!--PC和WAP自适应版-->
                    <div id="SOHUCS" sid="1514145163839078400"></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">你可能感兴趣的:(架构,php,nginx)</h4>
        <div id="paradigm-article-related">
            <div class="recommend-post mb30">
                <ul class="widget-links">
                    <li><a href="/article/1947994055896002560.htm"
                           title="php(上传文件)" target="_blank">php(上传文件)</a>
                        <span class="text-muted"></span>

                        <div>1、php文件上传配置指令(1)file_uploads=On/off(是否可以接受文件上传)(2)max_input_time=60在提示错误之前解析输入所花费的最长时间,以秒为单位,如果经常需要传输大文件,这个时限应该设置得合理一些。(3)max_file_uploads=20对可以同时上传文件数设置了一个上限。(4)memory_limit=128M设置脚本可以分配得最大内存,可以防止脚本独</div>
                    </li>
                    <li><a href="/article/1947993424741330944.htm"
                           title="小白带你部署LNMP分布式部署" target="_blank">小白带你部署LNMP分布式部署</a>
                        <span class="text-muted">刘俊涛liu</span>
<a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>目录前言一、概述二、LNMP环境部署三、配置nginx1、yum安装2、编译安装四、安装1、编译安装nginx2、网络源3、稍作优化4、修改配置文件vim/usr/local/nginx/conf/nginx.conf5、书写测试页面五、部署应用前言LNMP平台指的是将Linux、Nginx、MySQL和PHP(或者其他的编程语言,如Python、Perl等)集成在一起的一种Web服务器环境。它是</div>
                    </li>
                    <li><a href="/article/1947987375162454016.htm"
                           title="gRPC深度解析:原理、实践与性能优化指南" target="_blank">gRPC深度解析:原理、实践与性能优化指南</a>
                        <span class="text-muted">亲爱的非洲野猪</span>
<a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a>
                        <div>引言在现代分布式系统架构中,服务间通信的效率直接影响着整体系统的性能。gRPC作为新一代RPC框架,凭借其高性能、跨语言支持和强大的功能特性,已成为微服务通信的事实标准。本文将深入剖析gRPC的核心原理,分享最佳实践,并提供生产环境中的优化建议。一、gRPC核心架构解析1.1ProtocolBuffers:高效的数据交换格式ProtocolBuffers(简称protobuf)是gRPC的接口定义</div>
                    </li>
                    <li><a href="/article/1947985358746611712.htm"
                           title="Spring所有知识点整理" target="_blank">Spring所有知识点整理</a>
                        <span class="text-muted"></span>

                        <div>文章目录一、引言1.1原生web开发中存在哪些问题?二、Spring框架2.1概念2.2访问与下载三、Spring架构组成四、自定义工厂4.1配置文件4.2工厂类五、构建Maven项目5.1新建项目5.2选择Maven目录5.3GAV坐标六、Spring环境搭建6.1pom.xml中引入Spring常用依赖6.2创建Spring配置文件七、Spring工厂编码八、依赖与配置文件详解8.1Sprin</div>
                    </li>
                    <li><a href="/article/1947982583337906176.htm"
                           title="Mysql编译" target="_blank">Mysql编译</a>
                        <span class="text-muted">Neng_Miao</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/adb/1.htm">adb</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>Mysql编译1、编译环境硬件环境:香橙派5aarch64架构软件环境:Ubuntu22.04.3LTS编译版本:mysql-5.7.43.tar.gz编译目录:/data/make_test/mysql_for_make/mysql-5.7.43#根据需要调整,本次测试使用2、编译操作(1)、获取源码包wgethttps://dev.mysql.com/get/Downloads/MySQL-5</div>
                    </li>
                    <li><a href="/article/1947979937034072064.htm"
                           title="IPSAN 共享存储详解:架构、优化与落地实践指南" target="_blank">IPSAN 共享存储详解:架构、优化与落地实践指南</a>
                        <span class="text-muted">Sally璐璐</span>
<a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>一、IPSAN技术定位与核心价值核心价值对比矩阵:维度IPSANFC-SAN实现方案成本端口成本$500端口成本$2000复用IP网络设备传输距离跨地域(VPN/专线)≤10公里两地三中心架构运维效率SNMP/CLI管理Zone/ALPA管理自动化运维工具链协议标准IETFRFC3720专有光纤协议全平台兼容性能指标100GbE(12GB/s)32GFC(3.5GB/s)NVMe/TCP+DPU加</div>
                    </li>
                    <li><a href="/article/1947976788672049152.htm"
                           title="Python爬虫高阶:Selenium+Scrapy+Playwright融合架构,攻克动态页面与高反爬场景" target="_blank">Python爬虫高阶:Selenium+Scrapy+Playwright融合架构,攻克动态页面与高反爬场景</a>
                        <span class="text-muted">程序员威哥</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/%E7%88%AC%E8%99%AB/1.htm">爬虫</a><a class="tag" taget="_blank" href="/search/selenium/1.htm">selenium</a>
                        <div>随着互联网应用的不断发展,越来越多的网站采用JavaScript动态渲染页面,常见的静态页面数据抓取方式逐渐失效。此外,高反爬技术也使得传统爬虫架构面临着更大的挑战,许多网站通过复杂的反爬机制如验证码、IP屏蔽、请求频率限制等来防止数据抓取。为了应对这些挑战,我们需要采用更为先进和灵活的爬虫架构。在此背景下,结合Selenium、Scrapy和Playwright这三种技术,能够帮助我们突破动态页</div>
                    </li>
                    <li><a href="/article/1947975780457836544.htm"
                           title="LINUX 手动搭建wordpress" target="_blank">LINUX 手动搭建wordpress</a>
                        <span class="text-muted">技术栈壳</span>
<a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>操作场景WordPress是一款使用PHP语言开发的博客平台,你可使用通过WordPress搭建属于个人的博客平台。进行搭建WordPress个人博客,你需要熟悉Linux命令,例如CentOS环境下通过YUM安装软件等常用命令,并对所安装软件的使用及版本兼容性比较了解。示例软件版本本文搭建的WordPress个人站点组成版本及说明如下:Linux:Linux操作系统,本文以CentOS7.6为例</div>
                    </li>
                    <li><a href="/article/1947971999905148928.htm"
                           title="JAVA面试宝典 -《DDD实战:从贫血模型到领域事件》" target="_blank">JAVA面试宝典 -《DDD实战:从贫血模型到领域事件》</a>
                        <span class="text-muted"></span>

                        <div>DDD实战:从贫血模型到领域事件引言:为什么从三层架构转向DDD?在传统的三层架构中,我们习惯将系统划分为Controller、Service和Repository层,关注点更多落在“技术职责”而非“业务语义”。然而,随着系统复杂度提高,贫血模型、重复逻辑、脆弱耦合等问题层出不穷。领域驱动设计(DDD)正是为了解决这些问题而生。它强调以业务为中心建模,将“业务行为”作为核心驱动软件设计,帮助系统在</div>
                    </li>
                    <li><a href="/article/1947972000324579328.htm"
                           title="《Spring核心容器源码解密:IOC与事件驱动模型》" target="_blank">《Spring核心容器源码解密:IOC与事件驱动模型》</a>
                        <span class="text-muted"></span>

                        <div>Spring核心容器源码解密:IOC与事件驱动模型引言:Spring容器的核心职责Spring框架的核心容器是其基石,承担着两大关键职责:控制反转(IOC):管理对象生命周期与依赖关系事件驱动模型:实现组件间解耦通信这两大机制共同构建了Spring"高内聚、低耦合"的架构哲学。本文将深入源码层面,揭示IOC容器与事>件模型如何协同工作,并通过实战展示如何构建解耦的业务系统。Spring容器IOC控</div>
                    </li>
                    <li><a href="/article/1947967463320776704.htm"
                           title="解决方案架构手册第三版(二)" target="_blank">解决方案架构手册第三版(二)</a>
                        <span class="text-muted">绝不原创的飞龙</span>
<a class="tag" taget="_blank" href="/search/%E9%BB%98%E8%AE%A4%E5%88%86%E7%B1%BB/1.htm">默认分类</a><a class="tag" taget="_blank" href="/search/%E9%BB%98%E8%AE%A4%E5%88%86%E7%B1%BB/1.htm">默认分类</a>
                        <div>原文:annas-archive.org/md5/767f6c16a82c581ed50af87f92c3fe8f译者:飞龙协议:CCBY-NC-SA4.0第五章:5云原生架构设计模式在数字化转型快速发展的时代,企业越来越多地转向云平台,提供可扩展、具备弹性且具成本效益的解决方案。采用云原生架构正成为寻求敏捷性、创新和运营效率的组织的战略必需。本章将引导您设计和实施云原生架构的旅程,重点介绍架构模</div>
                    </li>
                    <li><a href="/article/1947966833529253888.htm"
                           title="Tabman 2迁移指南:从旧版本升级到全新架构" target="_blank">Tabman 2迁移指南:从旧版本升级到全新架构</a>
                        <span class="text-muted">陆欣瑶</span>

                        <div>Tabman2迁移指南:从旧版本升级到全新架构前言Tabman作为iOS平台上功能强大的分页视图控制器,在2.0版本中进行了全面重构。本文将从技术实现角度,深入解析Tabman2的架构变化,帮助开发者顺利完成迁移工作。环境要求在开始迁移前,请确保开发环境满足以下要求:iOS9及以上系统版本Xcode10及以上开发工具Swift4.2及以上语言版本核心架构变化Tabman2进行了彻底的重构,主要改进</div>
                    </li>
                    <li><a href="/article/1947965194470748160.htm"
                           title="OSPF知识" target="_blank">OSPF知识</a>
                        <span class="text-muted">之凹の鸥</span>
<a class="tag" taget="_blank" href="/search/%E7%BD%91%E7%BB%9C/1.htm">网络</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E8%B7%AF%E7%94%B1%E5%99%A8/1.htm">智能路由器</a>
                        <div>在网络工程师、系统工程师等岗位的面试中,OSPF(OpenShortestPathFirst,开放最短路径优先)是高频考点,尤其是对中高级网络岗位(如网络架构师、运维工程师)。以下是OSPF的核心考点和必须掌握的知识点,按优先级分类整理,帮助你高效备考:一、基础概念与核心机制OSPF的定义与特点定义:OSPF是一种基于链路状态(Link-State)的内部网关协议(IGP),用于在自治系统(AS)</div>
                    </li>
                    <li><a href="/article/1947960908932247552.htm"
                           title="ubuntu20.04.2上安装wordpress+nginx+php+fpm+mysql" target="_blank">ubuntu20.04.2上安装wordpress+nginx+php+fpm+mysql</a>
                        <span class="text-muted">crayon-shin-chan</span>
<a class="tag" taget="_blank" href="/search/surprise/1.htm">surprise</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/wordpress/1.htm">wordpress</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/wp/1.htm">wp</a>
                        <div>1.更新安装源sudoapt-getupdate2.安装nginxsudoaptinstallnginx检查状态servicenginxstatus●nginx.service-AhighperformancewebserverandareverseproxyserverLoaded:loaded(/lib/systemd/system/nginx.service;enabled;vendorpr</div>
                    </li>
                    <li><a href="/article/1947960027142746112.htm"
                           title="Agent架构与工作原理:理解智能体的核心机制" target="_blank">Agent架构与工作原理:理解智能体的核心机制</a>
                        <span class="text-muted">hdzw20</span>
<a class="tag" taget="_blank" href="/search/agent%E5%AD%A6%E4%B9%A0/1.htm">agent学习</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</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/agent/1.htm">agent</a><a class="tag" taget="_blank" href="/search/%E6%99%BA%E8%83%BD%E4%BD%93/1.htm">智能体</a>
                        <div>Agent架构与工作原理:深入理解智能体的核心机制AIAgent的核心组成部分一个完整的AIAgent通常由以下几个核心模块组成:1.规划模块(PlanningModule)规划模块是Agent的"大脑",负责制定行动策略。它接收目标任务,分析当前状态,并制定一系列行动计划。规划可以是:短期规划:针对当前步骤的即时决策长期规划:面向整体目标的战略性规划动态规划:根据执行结果实时调整计划2.记忆模块</div>
                    </li>
                    <li><a href="/article/1947959276400078848.htm"
                           title="深度解析:阿里云服务器ECS计算型c7性能CPU内存、带宽和存储测评" target="_blank">深度解析:阿里云服务器ECS计算型c7性能CPU内存、带宽和存储测评</a>
                        <span class="text-muted">阿腾云</span>

                        <div>深度解析:阿里云服务器ECS计算型c7性能CPU内存、带宽和存储测评,ECS计算型c7实例性能测评,CPU采用第三代IntelXeon可扩展处理器(IceLake),基频2.7GHz,全核睿频3.5GHz,计算性能稳定;c7云服务器依托第三代神龙架构,提供稳定可预期的超高性能。同时通过芯片快速路径加速手段,完成存储、网络性能以及计算稳定性的数量级提升。阿里云服务器网aliyunfuwuqi.com</div>
                    </li>
                    <li><a href="/article/1947959269475282944.htm"
                           title="如何在 Ubuntu 22.04 上安装、配置、使用 Nginx" target="_blank">如何在 Ubuntu 22.04 上安装、配置、使用 Nginx</a>
                        <span class="text-muted">曹瑞曹瑞</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%AF%E4%BB%B6%E9%85%8D%E7%BD%AE/1.htm">软件配置</a><a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a>
                        <div>如何在Ubuntu22.04上安装、配置、使用Nginx?-阿里云开发者社区更新应用sudoaptupdatesudoaptupgrade检查必要依赖并安装sudoaptinstall-ycurlgnupg2ca-certificateslsb-release安装nginxsudoaptinstall-ynginx#启动nginxsudosystemctlstartnginx#开机自启sudosy</div>
                    </li>
                    <li><a href="/article/1947958387106967552.htm"
                           title="JVM基础篇1 - Class的加载" target="_blank">JVM基础篇1 - Class的加载</a>
                        <span class="text-muted">The小可</span>
<a class="tag" taget="_blank" href="/search/JVM/1.htm">JVM</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a>
                        <div>JVM基础篇1-Class的加载JVM基础篇2-指令集JVM进阶篇1-内存模型JVM进阶篇2-GC垃圾回收JVM总览-JVM架构引入jvm面试题:谈谈对jvm的理解?java8虚拟机和之前的变化更新?什么是OOM,什么是栈溢出StackOverFlowError?怎么分析JVM常用的调优参数有哪些?内存快照如何抓取?怎么分析Dump文件?知道吗?谈谈jVM,类加载器的认识?1.什么是JVM?jvm</div>
                    </li>
                    <li><a href="/article/1947958260204105728.htm"
                           title="nginx 配置 https http" target="_blank">nginx 配置 https http</a>
                        <span class="text-muted">R_miss</span>
<a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/https/1.htm">https</a><a class="tag" taget="_blank" href="/search/http/1.htm">http</a>
                        <div>nginx配置https域名访问参考文档https://blog.csdn.net/heng_yan/article/details/938740351.域名已经分配好这时需要和项目进行关联,能通过域名访问连接调通分配的域名:https://xxx.com2个证书文件:xxx.key文件,xxx.pem证书放在服务器上的使用本地命令把文件放在服务器上2.进入liunx服务器先查询服务器是否配置过n</div>
                    </li>
                    <li><a href="/article/1947956744579772416.htm"
                           title="使用C#对象将WinRiver项目文件进行复杂的XML序列化和反序列化实例详解" target="_blank">使用C#对象将WinRiver项目文件进行复杂的XML序列化和反序列化实例详解</a>
                        <span class="text-muted">中游鱼</span>
<a class="tag" taget="_blank" href="/search/C%23/1.htm">C#</a><a class="tag" taget="_blank" href="/search/%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96/1.htm">序列化和反序列化</a><a class="tag" taget="_blank" href="/search/MMT/1.htm">MMT</a><a class="tag" taget="_blank" href="/search/c%23/1.htm">c#</a><a class="tag" taget="_blank" href="/search/xml/1.htm">xml</a><a class="tag" taget="_blank" href="/search/%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96/1.htm">序列化和反序列化</a><a class="tag" taget="_blank" href="/search/%E5%B1%9E%E6%80%A7%E7%9A%84%E5%BA%8F%E5%88%97%E5%8C%96%E5%92%8C%E5%8F%8D%E5%BA%8F%E5%88%97%E5%8C%96/1.htm">属性的序列化和反序列化</a><a class="tag" taget="_blank" href="/search/%E5%AE%8C%E6%95%B4%E5%BA%8F%E5%88%97%E5%8C%96/1.htm">完整序列化</a><a class="tag" taget="_blank" href="/search/ADCP%E5%92%8CWinRiver/1.htm">ADCP和WinRiver</a>
                        <div>使用C#对象将WinRiver项目文件进行XML序列化和反序列化的实例详解一、序列化和反序列化的目的二、WinRiver的项目MMT文件架构示例三、以WinRiver为对象进行C#代码编程3.1声明WinRiver对象3.2声明Project对象3.3声明Site_Information对象3.4声明Site_Discharge对象3.5声明QA_QC、Collect_Data、DisplaySe</div>
                    </li>
                    <li><a href="/article/1947951070240108544.htm"
                           title="YOLO目标检测模型优化技术全景解析" target="_blank">YOLO目标检测模型优化技术全景解析</a>
                        <span class="text-muted"></span>

                        <div>YOLO目标检测模型优化技术全景解析作为实时目标检测领域的标杆算法,YOLO系列模型通过持续的技术革新不断提升性能边界。本文将从模型架构设计、数据优化、注意力机制融合、后处理策略及训练方法等维度,系统剖析YOLO优化领域的关键技术与最新进展。一、模型架构优化:突破性能瓶颈的核心路径多尺度检测层增强针对小目标检测难题,主流方案通过增加浅层检测通道优化特征提取。例如在YOLOv5中引入160×160特</div>
                    </li>
                    <li><a href="/article/1947948171397230592.htm"
                           title="YOLO 目标检测的改进方法" target="_blank">YOLO 目标检测的改进方法</a>
                        <span class="text-muted"></span>

                        <div>YOLO目标检测的改进方法可以从模型架构、训练策略、损失函数等多个方面入手,以下是一些常见的改进方法方向及参考文献:模型架构改进骨干网络替换:使用更轻量或更强大的网络替换原始骨干网络。轻量级网络如MobileNetV3、ShuffleNetV2等适合移动端部署,可提高推理速度;高性能网络如ConvNeXt、SwinTransformer等能提取更丰富的语义特征,提升检测精度。还可添加CBAM、SE</div>
                    </li>
                    <li><a href="/article/1947943884231340032.htm"
                           title="【Linux系列】rsync和mv" target="_blank">【Linux系列】rsync和mv</a>
                        <span class="text-muted">檀越@新空间</span>
<a class="tag" taget="_blank" href="/search/s5/1.htm">s5</a><a class="tag" taget="_blank" href="/search/Linux%E5%AD%A6%E4%B9%A0/1.htm">Linux学习</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%99%A8/1.htm">服务器</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>博客目录1.操作性质不同2.对源文件的影响3.使用场景4.示例对比使用`rsync-a`:使用`mv`:5.注意事项总结rsync-a/data/software/build0713/dist//usr/share/nginx/html/和mv是两种完全不同的操作,主要区别如下:1.操作性质不同rsync-a复制同步:将源目录(/data/software/build0713/dist/)的内容递</div>
                    </li>
                    <li><a href="/article/1947943503422091264.htm"
                           title="【集群】MySQL的主从复制了解吗?会有延迟吗,原因是什么?" target="_blank">【集群】MySQL的主从复制了解吗?会有延迟吗,原因是什么?</a>
                        <span class="text-muted">雪碧聊技术</span>
<a class="tag" taget="_blank" href="/search/Java%E5%85%AB%E8%82%A1%E6%96%87/1.htm">Java八股文</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</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/MySQL%E4%B8%BB%E4%BB%8E%E5%A4%8D%E5%88%B6/1.htm">MySQL主从复制</a>
                        <div>欢迎来到我的Java八股文专栏!各位程序员小伙伴们好呀~我是雪碧聊技术,很高兴能在CSDN与大家相遇!✨专栏介绍这个专栏将专注于分享Java面试中的经典"八股文"知识点,内容涵盖:Java基础核心概念JVM原理与性能调优多线程与并发编程️设计模式实战️常用框架源码解析⚙️系统架构设计思想为什么选择这个专栏?精准定位:直击大厂Java面试高频考点系统全面:从基础到进阶,构建完整知识体系实战导向:理论</div>
                    </li>
                    <li><a href="/article/1947943504202231808.htm"
                           title="【锁】MySQL中有哪几种锁?" target="_blank">【锁】MySQL中有哪几种锁?</a>
                        <span class="text-muted">雪碧聊技术</span>
<a class="tag" taget="_blank" href="/search/Java%E5%85%AB%E8%82%A1%E6%96%87/1.htm">Java八股文</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</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/%E9%94%81/1.htm">锁</a>
                        <div>欢迎来到我的Java八股文专栏!各位程序员小伙伴们好呀~我是雪碧聊技术,很高兴能在CSDN与大家相遇!✨专栏介绍这个专栏将专注于分享Java面试中的经典"八股文"知识点,内容涵盖:Java基础核心概念JVM原理与性能调优多线程与并发编程️设计模式实战️常用框架源码解析⚙️系统架构设计思想为什么选择这个专栏?精准定位:直击大厂Java面试高频考点系统全面:从基础到进阶,构建完整知识体系实战导向:理论</div>
                    </li>
                    <li><a href="/article/1947943505133367296.htm"
                           title="MySQL的Binlog有几种格式?" target="_blank">MySQL的Binlog有几种格式?</a>
                        <span class="text-muted">雪碧聊技术</span>
<a class="tag" taget="_blank" href="/search/Java%E5%85%AB%E8%82%A1%E6%96%87/1.htm">Java八股文</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>欢迎来到我的Java八股文专栏!各位程序员小伙伴们好呀~我是雪碧聊技术,很高兴能在CSDN与大家相遇!✨专栏介绍这个专栏将专注于分享Java面试中的经典"八股文"知识点,内容涵盖:Java基础核心概念JVM原理与性能调优多线程与并发编程️设计模式实战️常用框架源码解析⚙️系统架构设计思想为什么选择这个专栏?精准定位:直击大厂Java面试高频考点系统全面:从基础到进阶,构建完整知识体系实战导向:理论</div>
                    </li>
                    <li><a href="/article/1947941739272663040.htm"
                           title="【QT常用技术讲解】任务栏图标+socket网络服务+开机自启动" target="_blank">【QT常用技术讲解】任务栏图标+socket网络服务+开机自启动</a>
                        <span class="text-muted"></span>

                        <div>前言首先看网络编程的定义:两个不同主机设备之间的进程通信。C/S(Client-Server)是早期非常典型的软件架构,C/S架构虽然简单,但却非常适用于桌面图形化的QT项目。本篇的QT项目是从真实的项目中简化出来,满足很多相似的场景:创建一个TCP服务,接收到消息后,通过多线程执行后台CMD命令行,并且自动把程序放到系统自启动目录中。覆盖到QT的知识点:任务栏托盘、右键菜单、TCP服务、多线程。</div>
                    </li>
                    <li><a href="/article/1947941108378038272.htm"
                           title="【第17章】亿级电商订单系统架构设计-概要设计" target="_blank">【第17章】亿级电商订单系统架构设计-概要设计</a>
                        <span class="text-muted">cherry5230</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BF%E7%BA%A7%E6%B5%81%E9%87%8F%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E4%B8%8E%E8%90%BD%E5%9C%B0/1.htm">亿级流量架构设计与落地</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E4%B8%AD%E9%97%B4%E4%BB%B6/1.htm">中间件</a>
                        <div>1-1本章导学课程概述核心内容:从粗到精细化系统架构设计项目案例:年交易额200亿的B2B电商平台订单系统学习路径1.高层架构设计细化阶段分为两个核心部分:概要设计(本章重点)详细设计2.本章学习目标(1)概要设计方法论理解设计阶段的核心任务掌握具体实施方法建立设计思想指导体系(2)项目实践应用项目工程架构搭建环境配置规范组件关系梳理客户端->网关层->业务层->数据层(3)基础框架构建工程结构初</div>
                    </li>
                    <li><a href="/article/1947939469176926208.htm"
                           title="NX636NX644美光固态闪存NX663NX665" target="_blank">NX636NX644美光固态闪存NX663NX665</a>
                        <span class="text-muted">18922804861</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%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/1.htm">性能优化</a><a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE/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/%E7%BD%91%E7%BB%9C/1.htm">网络</a>
                        <div>美光固态闪存深度解析:NX636、NX644、NX663、NX665全面评测技术架构与核心性能美光NX636、NX644、NX663、NX665系列固态闪存均基于176层3DTLCNAND技术,采用美光自研主控芯片,支持PCIe4.0协议,理论带宽可达16GT/s。其中,NX665作为旗舰型号,连续读取速度突破7.4GB/s,随机写入性能较NX636提升约40%,相当于从“自行车道”升级至“高速公</div>
                    </li>
                    <li><a href="/article/1947939342865461248.htm"
                           title="NX585NX586美光固态闪存NX633NX635" target="_blank">NX585NX586美光固态闪存NX633NX635</a>
                        <span class="text-muted"></span>

                        <div>美光NX系列固态闪存深度解析:技术、性能与市场洞察一、技术架构与核心创新美光NX系列固态闪存(如NX585、NX586、NX633、NX635)的技术根基源于其G9NAND技术平台,通过优化晶体管结构与制程工艺,显著提升存储密度与读写速度。例如,NX585的MT29F8T08GUCAG芯片在顺序读取速度上达到7.4GB/s,相当于每秒传输超过1.4万张高清照片。这一性能表现得益于多通道交互设计和动</div>
                    </li>
                                <li><a href="/article/9.htm"
                                       title="apache ftpserver-CentOS config" target="_blank">apache ftpserver-CentOS config</a>
                                    <span class="text-muted">gengzg</span>
<a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a>
                                    <div><server xmlns="http://mina.apache.org/ftpserver/spring/v1"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="
       http://mina.apache.o</div>
                                </li>
                                <li><a href="/article/136.htm"
                                       title="优化MySQL数据库性能的八种方法" target="_blank">优化MySQL数据库性能的八种方法</a>
                                    <span class="text-muted">AILIKES</span>
<a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                                    <div>1、选取最适用的字段属性   MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的 性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很</div>
                                </li>
                                <li><a href="/article/263.htm"
                                       title="JeeSite 企业信息化快速开发平台" target="_blank">JeeSite 企业信息化快速开发平台</a>
                                    <span class="text-muted">Kai_Ge</span>
<a class="tag" taget="_blank" href="/search/JeeSite/1.htm">JeeSite</a>
                                    <div>JeeSite 企业信息化快速开发平台  
平台简介 
JeeSite是基于多个优秀的开源项目,高度整合封装而成的高效,高性能,强安全性的开源Java EE快速开发平台。 
JeeSite本身是以Spring Framework为核心容器,Spring MVC为模型视图控制器,MyBatis为数据访问层, Apache Shiro为权限授权层,Ehcahe对常用数据进行缓存,Activit为工作流</div>
                                </li>
                                <li><a href="/article/390.htm"
                                       title="通过Spring Mail Api发送邮件" target="_blank">通过Spring Mail Api发送邮件</a>
                                    <span class="text-muted">120153216</span>
<a class="tag" taget="_blank" href="/search/%E9%82%AE%E4%BB%B6/1.htm">邮件</a><a class="tag" taget="_blank" href="/search/main/1.htm">main</a>
                                    <div>原文地址:http://www.open-open.com/lib/view/open1346857871615.html 
使用Java Mail API来发送邮件也很容易实现,但是最近公司一个同事封装的邮件API实在让我无法接受,于是便打算改用Spring Mail API来发送邮件,顺便记录下这篇文章。 【Spring Mail API】 
Spring Mail API都在org.spri</div>
                                </li>
                                <li><a href="/article/517.htm"
                                       title="Pysvn 程序员使用指南" target="_blank">Pysvn 程序员使用指南</a>
                                    <span class="text-muted">2002wmj</span>
<a class="tag" taget="_blank" href="/search/SVN/1.htm">SVN</a>
                                    <div>源文件:http://ju.outofmemory.cn/entry/35762 
这是一篇关于pysvn模块的指南. 
完整和详细的API请参考 http://pysvn.tigris.org/docs/pysvn_prog_ref.html. 
pysvn是操作Subversion版本控制的Python接口模块. 这个API接口可以管理一个工作副本, 查询档案库, 和同步两个. 
该</div>
                                </li>
                                <li><a href="/article/644.htm"
                                       title="在SQLSERVER中查找被阻塞和正在被阻塞的SQL" target="_blank">在SQLSERVER中查找被阻塞和正在被阻塞的SQL</a>
                                    <span class="text-muted">357029540</span>
<a class="tag" taget="_blank" href="/search/SQL+Server/1.htm">SQL Server</a>
                                    <div>SELECT  R.session_id AS BlockedSessionID ,  
        S.session_id AS BlockingSessionID ,  
        Q1.text AS Block</div>
                                </li>
                                <li><a href="/article/771.htm"
                                       title="Intent 常用的用法备忘" target="_blank">Intent 常用的用法备忘</a>
                                    <span class="text-muted">7454103</span>
<a class="tag" taget="_blank" href="/search/.net/1.htm">.net</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/Google/1.htm">Google</a><a class="tag" taget="_blank" href="/search/Blog/1.htm">Blog</a><a class="tag" taget="_blank" href="/search/F%23/1.htm">F#</a>
                                    <div>Intent 
    应该算是Android中特有的东西。你可以在Intent中指定程序 要执行的动作(比如:view,edit,dial),以及程序执行到该动作时所需要的资料 。都指定好后,只要调用startActivity(),Android系统 会自动寻找最符合你指定要求的应用 程序,并执行该程序。 
 
下面列出几种Intent 的用法 
显示网页: 
 
</div>
                                </li>
                                <li><a href="/article/898.htm"
                                       title="Spring定时器时间配置" target="_blank">Spring定时器时间配置</a>
                                    <span class="text-muted">adminjun</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/%E6%97%B6%E9%97%B4%E9%85%8D%E7%BD%AE/1.htm">时间配置</a><a class="tag" taget="_blank" href="/search/%E5%AE%9A%E6%97%B6%E5%99%A8/1.htm">定时器</a>
                                    <div>红圈中的值由6个数字组成,中间用空格分隔。第一个数字表示定时任务执行时间的秒,第二个数字表示分钟,第三个数字表示小时,后面三个数字表示日,月,年,< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />  
测试的时候,由于是每天定时执行,所以后面三个数</div>
                                </li>
                                <li><a href="/article/1025.htm"
                                       title="POJ 2421 Constructing Roads 最小生成树" target="_blank">POJ 2421 Constructing Roads 最小生成树</a>
                                    <span class="text-muted">aijuans</span>
<a class="tag" taget="_blank" href="/search/%E6%9C%80%E5%B0%8F%E7%94%9F%E6%88%90%E6%A0%91/1.htm">最小生成树</a>
                                    <div>来源:http://poj.org/problem?id=2421 
题意:还是给你n个点,然后求最小生成树。特殊之处在于有一些点之间已经连上了边。 
思路:对于已经有边的点,特殊标记一下,加边的时候把这些边的权值赋值为0即可。这样就可以既保证这些边一定存在,又保证了所求的结果正确。 
代码: 
 
#include <iostream>
#include <cstdio></div>
                                </li>
                                <li><a href="/article/1152.htm"
                                       title="重构笔记——提取方法(Extract Method)" target="_blank">重构笔记——提取方法(Extract Method)</a>
                                    <span class="text-muted">ayaoxinchao</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E9%87%8D%E6%9E%84/1.htm">重构</a><a class="tag" taget="_blank" href="/search/%E6%8F%90%E7%82%BC%E5%87%BD%E6%95%B0/1.htm">提炼函数</a><a class="tag" taget="_blank" href="/search/%E5%B1%80%E9%83%A8%E5%8F%98%E9%87%8F/1.htm">局部变量</a><a class="tag" taget="_blank" href="/search/%E6%8F%90%E5%8F%96%E6%96%B9%E6%B3%95/1.htm">提取方法</a>
                                    <div>提取方法(Extract Method)是最常用的重构手法之一。当看到一个方法过长或者方法很难让人理解其意图的时候,这时候就可以用提取方法这种重构手法。 
  
下面是我学习这个重构手法的笔记: 
  
提取方法看起来好像仅仅是将被提取方法中的一段代码,放到目标方法中。其实,当方法足够复杂的时候,提取方法也会变得复杂。当然,如果提取方法这种重构手法无法进行时,就可能需要选择其他</div>
                                </li>
                                <li><a href="/article/1279.htm"
                                       title="为UILabel添加点击事件" target="_blank">为UILabel添加点击事件</a>
                                    <span class="text-muted">bewithme</span>
<a class="tag" taget="_blank" href="/search/UILabel/1.htm">UILabel</a>
                                    <div>    默认情况下UILabel是不支持点击事件的,网上查了查居然没有一个是完整的答案,现在我提供一个完整的代码。 
  
  UILabel *l = [[UILabel alloc] initWithFrame:CGRectMake(60, 0, listV.frame.size.width - 60, listV.frame.size.height)]</div>
                                </li>
                                <li><a href="/article/1406.htm"
                                       title="NoSQL数据库之Redis数据库管理(PHP-REDIS实例)" target="_blank">NoSQL数据库之Redis数据库管理(PHP-REDIS实例)</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/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a><a class="tag" taget="_blank" href="/search/NoSQL/1.htm">NoSQL</a>
                                    <div>一.redis.php 
<?php
      //实例化
      $redis = new Redis();
      //连接服务器
      $redis->connect("localhost");
      //授权
      $redis->auth("lamplijie");
      //相关操</div>
                                </li>
                                <li><a href="/article/1533.htm"
                                       title="SecureCRT使用备注" target="_blank">SecureCRT使用备注</a>
                                    <span class="text-muted">bingyingao</span>
<a class="tag" taget="_blank" href="/search/secureCRT/1.htm">secureCRT</a><a class="tag" taget="_blank" href="/search/%E6%AF%8F%E9%A1%B5/1.htm">每页</a><a class="tag" taget="_blank" href="/search/%E8%A1%8C%E6%95%B0/1.htm">行数</a>
                                    <div>SecureCRT日志和卷屏行数设置 
 
一、使用securecrt时,设置自动日志记录功能。 
 
1、在C:\Program Files\SecureCRT\下新建一个文件夹(也就是你的CRT可执行文件的路径),命名为Logs; 
 
2、点击Options -> Global Options -> Default Session -> Edite Default Sett</div>
                                </li>
                                <li><a href="/article/1660.htm"
                                       title="【Scala九】Scala核心三:泛型" target="_blank">【Scala九】Scala核心三:泛型</a>
                                    <span class="text-muted">bit1129</span>
<a class="tag" taget="_blank" href="/search/scala/1.htm">scala</a>
                                    <div>泛型类 
package spark.examples.scala.generics

class GenericClass[K, V](val k: K, val v: V) {
  def print() {
    println(k + "," + v)
  }
}

object GenericClass {
  def main(args: Arr</div>
                                </li>
                                <li><a href="/article/1787.htm"
                                       title="素数与音乐" target="_blank">素数与音乐</a>
                                    <span class="text-muted">bookjovi</span>
<a class="tag" taget="_blank" href="/search/%E7%B4%A0%E6%95%B0/1.htm">素数</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E5%AD%A6/1.htm">数学</a><a class="tag" taget="_blank" href="/search/haskell/1.htm">haskell</a>
                                    <div>    由于一直在看haskell,不可避免的接触到了很多数学知识,其中数论最多,如素数,斐波那契数列等,很多在学生时代无法理解的数学现在似乎也能领悟到那么一点。 
    闲暇之余,从图书馆找了<<The music of primes>>和<<世界数学通史>>读了几遍。其中素数的音乐这本书与软件界熟知的&l</div>
                                </li>
                                <li><a href="/article/1914.htm"
                                       title="Java-Collections Framework学习与总结-IdentityHashMap" target="_blank">Java-Collections Framework学习与总结-IdentityHashMap</a>
                                    <span class="text-muted">BrokenDreams</span>
<a class="tag" taget="_blank" href="/search/Collections/1.htm">Collections</a>
                                    <div>        这篇总结一下java.util.IdentityHashMap。从类名上可以猜到,这个类本质应该还是一个散列表,只是前面有Identity修饰,是一种特殊的HashMap。 
        简单的说,IdentityHashMap和HashM</div>
                                </li>
                                <li><a href="/article/2041.htm"
                                       title="读《研磨设计模式》-代码笔记-享元模式-Flyweight" target="_blank">读《研磨设计模式》-代码笔记-享元模式-Flyweight</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/ 
 
 
 



import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java</div>
                                </li>
                                <li><a href="/article/2168.htm"
                                       title="PS人像润饰&调色教程集锦" target="_blank">PS人像润饰&调色教程集锦</a>
                                    <span class="text-muted">cherishLC</span>
<a class="tag" taget="_blank" href="/search/PS/1.htm">PS</a>
                                    <div>  1、仿制图章沿轮廓润饰——柔化图像,凸显轮廓 
 
http://www.howzhi.com/course/retouching/ 
  新建一个透明图层,使用仿制图章不断Alt+鼠标左键选点,设置透明度为21%,大小为修饰区域的1/3左右(比如胳膊宽度的1/3),再沿纹理方向(比如胳膊方向)进行修饰。 
  所有修饰完成后,对该润饰图层添加噪声,噪声大小应该和</div>
                                </li>
                                <li><a href="/article/2295.htm"
                                       title="更新多个字段的UPDATE语句" target="_blank">更新多个字段的UPDATE语句</a>
                                    <span class="text-muted">crabdave</span>
<a class="tag" taget="_blank" href="/search/update/1.htm">update</a>
                                    <div>更新多个字段的UPDATE语句 
  
                 
                update tableA a
                   set (a.v1, a.v2, a.v3, a.v4) =   --使用括号确定更新的字段范围
          </div>
                                </li>
                                <li><a href="/article/2422.htm"
                                       title="hive实例讲解实现in和not in子句" target="_blank">hive实例讲解实现in和not in子句</a>
                                    <span class="text-muted">daizj</span>
<a class="tag" taget="_blank" href="/search/hive/1.htm">hive</a><a class="tag" taget="_blank" href="/search/not+in/1.htm">not in</a><a class="tag" taget="_blank" href="/search/in/1.htm">in</a>
                                    <div>本文转自:http://www.cnblogs.com/ggjucheng/archive/2013/01/03/2842855.html 
 
 
当前hive不支持 in或not in 中包含查询子句的语法,所以只能通过left join实现。 
 
假设有一个登陆表login(当天登陆记录,只有一个uid),和一个用户注册表regusers(当天注册用户,字段只有一个uid),这两个表都包含</div>
                                </li>
                                <li><a href="/article/2549.htm"
                                       title="一道24点的10+种非人类解法(2,3,10,10)" target="_blank">一道24点的10+种非人类解法(2,3,10,10)</a>
                                    <span class="text-muted">dsjt</span>
<a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                                    <div>这是人类算24点的方法?!!! 
 
事件缘由:今天晚上突然看到一条24点状态,当时惊为天人,这NM叫人啊?以下是那条状态 
 
朱明西 : 24点,算2 3 10 10,我LX炮狗等面对四张牌痛不欲生,结果跑跑同学扫了一眼说,算出来了,2的10次方减10的3次方。。我草这是人类的算24点啊。。 
 
然后么。。。我就在深夜很得瑟的问室友求室友算 
 
刚出完题,文哥的暴走之旅开始了 
 
5秒后</div>
                                </li>
                                <li><a href="/article/2676.htm"
                                       title="关于YII的菜单插件 CMenu和面包末breadcrumbs路径管理插件的一些使用问题" target="_blank">关于YII的菜单插件 CMenu和面包末breadcrumbs路径管理插件的一些使用问题</a>
                                    <span class="text-muted">dcj3sjt126com</span>
<a class="tag" taget="_blank" href="/search/yii/1.htm">yii</a><a class="tag" taget="_blank" href="/search/framework/1.htm">framework</a>
                                    <div>在使用 YIi的路径管理工具时,发现了一个问题。                    <?php         </div>
                                </li>
                                <li><a href="/article/2803.htm"
                                       title="对象与关系之间的矛盾:“阻抗失配”效应[转]" target="_blank">对象与关系之间的矛盾:“阻抗失配”效应[转]</a>
                                    <span class="text-muted">come_for_dream</span>
<a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%B1%A1/1.htm">对象</a>
                                    <div>概述 
  
“阻抗失配”这一词组通常用来描述面向对象应用向传统的关系数据库(RDBMS)存放数据时所遇到的数据表述不一致问题。C++程序员已经被这个问题困扰了好多年,而现在的Java程序员和其它面向对象开发人员也对这个问题深感头痛。 
  
“阻抗失配”产生的原因是因为对象模型与关系模型之间缺乏固有的亲合力。“阻抗失配”所带来的问题包括:类的层次关系必须绑定为关系模式(将对象</div>
                                </li>
                                <li><a href="/article/2930.htm"
                                       title="学习编程那点事" target="_blank">学习编程那点事</a>
                                    <span class="text-muted">gcq511120594</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%96%E7%A8%8B/1.htm">编程</a><a class="tag" taget="_blank" href="/search/%E4%BA%92%E8%81%94%E7%BD%91/1.htm">互联网</a>
                                    <div>一年前的夏天,我还在纠结要不要改行,要不要去学php?能学到真本事吗?改行能成功吗?太多的问题,我终于不顾一切,下定决心,辞去了工作,来到传说中的帝都。老师给的乘车方式还算有效,很顺利的就到了学校,赶巧了,正好学校搬到了新校区。先安顿了下来,过了个轻松的周末,第一次到帝都,逛逛吧! 
接下来的周一,是我噩梦的开始,学习内容对我这个零基础的人来说,除了勉强完成老师布置的作业外,我已经没有时间和精力去</div>
                                </li>
                                <li><a href="/article/3057.htm"
                                       title="Reverse Linked List II" target="_blank">Reverse Linked List II</a>
                                    <span class="text-muted">hcx2013</span>
<a class="tag" taget="_blank" href="/search/list/1.htm">list</a>
                                    <div>Reverse a linked list from position m to n. Do it in-place and in one-pass. 
For example:Given 1->2->3->4->5->NULL, m = 2 and n = 4, 
return </div>
                                </li>
                                <li><a href="/article/3184.htm"
                                       title="Spring4.1新特性——页面自动化测试框架Spring MVC Test HtmlUnit简介" target="_blank">Spring4.1新特性——页面自动化测试框架Spring MVC Test HtmlUnit简介</a>
                                    <span class="text-muted">jinnianshilongnian</span>
<a class="tag" taget="_blank" href="/search/spring+4.1/1.htm">spring 4.1</a>
                                    <div>目录 
Spring4.1新特性——综述 
Spring4.1新特性——Spring核心部分及其他 
Spring4.1新特性——Spring缓存框架增强 
Spring4.1新特性——异步调用和事件机制的异常处理 
Spring4.1新特性——数据库集成测试脚本初始化 
Spring4.1新特性——Spring MVC增强 
Spring4.1新特性——页面自动化测试框架Spring MVC T</div>
                                </li>
                                <li><a href="/article/3311.htm"
                                       title="Hadoop集群工具distcp" target="_blank">Hadoop集群工具distcp</a>
                                    <span class="text-muted">liyonghui160com</span>

                                    <div>  
  
1. 环境描述 
两个集群:rock 和 stone 
rock无kerberos权限认证,stone有要求认证。 
1. 从rock复制到stone,采用hdfs 
Hadoop distcp -i hdfs://rock-nn:8020/user/cxz/input hdfs://stone-nn:8020/user/cxz/运行在rock端,即源端问题:报版本</div>
                                </li>
                                <li><a href="/article/3438.htm"
                                       title="一个备份MySQL数据库的简单Shell脚本" target="_blank">一个备份MySQL数据库的简单Shell脚本</a>
                                    <span class="text-muted">pda158</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E8%84%9A%E6%9C%AC/1.htm">脚本</a>
                                    <div>  主脚本(用于备份mysql数据库):     该Shell脚本可以自动备份 
数据库。只要复制粘贴本脚本到文本编辑器中,输入数据库用户名、密码以及数据库名即可。我备份数据库使用的是mysqlump 命令。后面会对每行脚本命令进行说明。      
1. 分别建立目录“backup”和“oldbackup”     #mkdir /backup     #mkdir /oldbackup    </div>
                                </li>
                                <li><a href="/article/3565.htm"
                                       title="300个涵盖IT各方面的免费资源(中)——设计与编码篇" target="_blank">300个涵盖IT各方面的免费资源(中)——设计与编码篇</a>
                                    <span class="text-muted">shoothao</span>
<a class="tag" taget="_blank" href="/search/IT%E8%B5%84%E6%BA%90/1.htm">IT资源</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E6%A0%87%E5%BA%93/1.htm">图标库</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E7%89%87%E5%BA%93/1.htm">图片库</a><a class="tag" taget="_blank" href="/search/%E8%89%B2%E5%BD%A9%E6%9D%BF/1.htm">色彩板</a><a class="tag" taget="_blank" href="/search/%E5%AD%97%E4%BD%93/1.htm">字体</a>
                                    <div> 
 A. 免费的设计资源 
 
 
  Freebbble:来自于Dribbble的免费的高质量作品。 
  Dribbble:Dribbble上“免费”的搜索结果——这是巨大的宝藏。 
  Graphic Burger:每个像素点都做得很细的绝佳的设计资源。 
  Pixel Buddha:免费和优质资源的专业社区。 
  Premium Pixels:为那些有创意的人提供免费的素材。 
  </div>
                                </li>
                                <li><a href="/article/3692.htm"
                                       title="thrift总结 - 跨语言服务开发" target="_blank">thrift总结 - 跨语言服务开发</a>
                                    <span class="text-muted">uule</span>
<a class="tag" taget="_blank" href="/search/thrift/1.htm">thrift</a>
                                    <div>官网 
官网JAVA例子 
thrift入门介绍 
IBM-Apache Thrift - 可伸缩的跨语言服务开发框架 
Thrift入门及Java实例演示 
thrift的使用介绍 
  
RPC  
  
POM: 
<dependency>
  <groupId>org.apache.thrift</groupId>
  </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>