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/1773579033229983744.htm"
                           title="php 把一个数组分成有n个元素的二维数组的算法" target="_blank">php 把一个数组分成有n个元素的二维数组的算法</a>
                        <span class="text-muted">风清扬-独孤九剑</span>
<a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E7%AE%97%E6%B3%95/1.htm">算法</a>
                        <div>一、第一种解法0){$columns_map[$position]++;//这个地方格外注意,$position与$columns比较$position=($position<$columns-1)?++$position:0;$array_length--;}foreach($columns_mapas$val){$newarray[]=array_splice($array,0,$val);}</div>
                    </li>
                    <li><a href="/article/1773552600176721920.htm"
                           title="1.计算机处理器架构+嵌入式处理器架构及知识" target="_blank">1.计算机处理器架构+嵌入式处理器架构及知识</a>
                        <span class="text-muted">vv 啊</span>
<a class="tag" taget="_blank" href="/search/arm-linux%E5%AD%A6%E4%B9%A0/1.htm">arm-linux学习</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a>
                        <div>目录一:x86-64处理器架构二:Intel80386处理器(i386)1.i3862.i686三:嵌入式Linux知识:1.MinGW2.GNU计划2.1GNU工具链概述此次只分享英特尔和ADM处理器有关于x86的架构,至于嵌入式处理器架构请查看https://en.wikipedia.org/wiki/List_of_ARM_processors一:x86-64处理器架构x86-64,也称为x</div>
                    </li>
                    <li><a href="/article/1773504260386914304.htm"
                           title="通俗易懂:什么是Java虚拟机(JVM)?它的主要作用是什么?" target="_blank">通俗易懂:什么是Java虚拟机(JVM)?它的主要作用是什么?</a>
                        <span class="text-muted">大龄下岗程序员</span>
<a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                        <div>Java虚拟机(JavaVirtualMachine,JVM)是一种软件实现的抽象计算机,它负责执行Java字节码(Bytecode)。Java程序并不是直接在物理计算机上运行,而是先由Java编译器将源代码编译成与平台无关的字节码,然后由JVM负责读取字节码并在实际硬件架构上运行。JVM的主要作用包括以下几个方面:1.跨平台性-JVM是Java语言“一次编写,到处运行”(WriteOnce,Ru</div>
                    </li>
                    <li><a href="/article/1773495447948689408.htm"
                           title="docker怎么端口映射" target="_blank">docker怎么端口映射</a>
                        <span class="text-muted">Lance_mu</span>
<a class="tag" taget="_blank" href="/search/docker/1.htm">docker</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>1、默认固定的端口#Web服务器:WebApache或Nginx通常使用80端口HTTP:80HTTPS:443#数据库服务器MySQL:3306PostgreSQL:5432MongoDB:27017Redis:6379#邮件服务器SMTP:25POP3:110IMAP:143#其他服务SSH:22FTP:21DNS(域名解析):53代理服务器Squid:3128版本控制系统Git:9418(S</div>
                    </li>
                    <li><a href="/article/1773465740763004928.htm"
                           title="第一次用eclipse,导入项目错误Plug-in “org.eclipse.m2e.editor“ was unable to instantiate MavenPomEditor" target="_blank">第一次用eclipse,导入项目错误Plug-in “org.eclipse.m2e.editor“ was unable to instantiate MavenPomEditor</a>
                        <span class="text-muted">zhangfeng1133</span>
<a class="tag" taget="_blank" href="/search/eclipse/1.htm">eclipse</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>第一次用eclipse,导入项目错误Plug-in"org.eclipse.m2e.editor"wasunabletoinstantiateMavenPomEditor。各种项目包,都不存在,maven应该能自动载入类包,比Php的composer方便太多Thecontainer'MavenDependencies'referencesnonexistinglibrary'C:\Users\Ad</div>
                    </li>
                    <li><a href="/article/1773375109130682368.htm"
                           title="Apache Kafka的伸缩性探究:实现高性能、弹性扩展的关键" target="_blank">Apache Kafka的伸缩性探究:实现高性能、弹性扩展的关键</a>
                        <span class="text-muted">i289292951</span>
<a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a>
                        <div>引言ApacheKafka作为当今最流行的消息中间件之一,以其强大的伸缩性著称。在大数据处理、流处理和实时数据集成等领域,Kafka的伸缩性为其在面临急剧增长的数据流量和多样化业务需求时提供了无与伦比的扩展能力。本文将深入探讨Kafka如何通过其独特的架构设计实现高水平的伸缩性,以及在实际部署中如何优化和利用这一特性。一、Kafka伸缩性的核心设计分区(Partitioning)与水平扩展Kafk</div>
                    </li>
                    <li><a href="/article/1773280073802121216.htm"
                           title="php 快速入门(六)" target="_blank">php 快速入门(六)</a>
                        <span class="text-muted">王依硕</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</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>一、前后台交互1.1$_GET用来获取浏览器通过GET方法提交的数据GET方法它是通过把参数数据加在提交表单的action属性所指的URL中,值和表单内每个字段一一对应,然后在URL中可以看到,但是有如下缺点1.安全性不好,在URL中可以看得到2.传送数据量较小,不能大于2KB1.2$_POST用来获取浏览器通过POST方法提交的数据。POST方法它是通过HTTPPOST机制,将表单的各个字段放置</div>
                    </li>
                    <li><a href="/article/1773279947515822080.htm"
                           title="Nginx服务" target="_blank">Nginx服务</a>
                        <span class="text-muted">老伙子53</span>
<a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>Nginx服务一、什么是Nginx1、概念Nginx是一个高性能的开源的HTTP和反向代理服务器,以及邮件(IMAP/POP3)代理服务器。它最初由IgorSysoev创建,并于2004年首次公开发布。Nginx的主要特点包括高性能、低内存占用、高并发处理能力以及高度的可靠性。2、特点高性能Nginx被设计成高性能的服务器软件,能够处理大量并发连接和高流量的请求。它采用了事件驱动的架构,使用异步I</div>
                    </li>
                    <li><a href="/article/1773279695408791552.htm"
                           title="Thinkphp - 详细实现网站系统登录功能,附带 Mysql 数据库设置、Web 前端展示界面、信息校验等(详细代码,即设计过程)" target="_blank">Thinkphp - 详细实现网站系统登录功能,附带 Mysql 数据库设置、Web 前端展示界面、信息校验等(详细代码,即设计过程)</a>
                        <span class="text-muted">王佳斌</span>
<a class="tag" taget="_blank" href="/search/%2B/1.htm">+</a><a class="tag" taget="_blank" href="/search/Thinkphp/1.htm">Thinkphp</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF/1.htm">前端</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>前言登录功能,是我们几乎开发每个系统都必须的模块。登录功能设计思路,主要包括几个方面。用户输入网址展示登录页面用户输入用户名,密码等点击登录进行信息校验校验通过之后,记录用户登录信息,跳转指定页面用户校验失败,提示失败信息页面目录具体功能实现为了快速搭建可用、美观的页面,我们采用一个比较成熟的前端框架Bootstrap。下面我们到Bootstrap的官网Bootsrap官网下载bootstrap。</div>
                    </li>
                    <li><a href="/article/1773187555265675264.htm"
                           title="Kafka、ActiveMQ、RabbitMQ 及 RocketMQ区别比较" target="_blank">Kafka、ActiveMQ、RabbitMQ 及 RocketMQ区别比较</a>
                        <span class="text-muted">木西爷</span>
<a class="tag" taget="_blank" href="/search/kafka/1.htm">kafka</a><a class="tag" taget="_blank" href="/search/activemq/1.htm">activemq</a><a class="tag" taget="_blank" href="/search/rabbitmq/1.htm">rabbitmq</a><a class="tag" taget="_blank" href="/search/%E9%98%BF%E9%87%8C%E4%BA%91/1.htm">阿里云</a><a class="tag" taget="_blank" href="/search/rocketmq/1.htm">rocketmq</a>
                        <div>消息队列中间件是分布式系统中重要的组件,主要解决应用耦合、异步消息、流量削锋等问题。它可以实现高性能、高可用、可伸缩和最终一致性架构,是大型分布式系统不可缺少的中间件。消息队列在电商系统、消息通讯、日志收集等应用中扮演着关键作用,以阿里为例,其研发的消息队列(RocketMQ)在历次天猫“双十一”活动中支撑了万亿级的数据洪峰,为大规模交易提供了有力保障。常见消息中间件对比特性ActiveMQRab</div>
                    </li>
                    <li><a href="/article/1772795036136701952.htm"
                           title="程序员开发技术整理" target="_blank">程序员开发技术整理</a>
                        <span class="text-muted">laizhixue</span>
<a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%89%8D%E7%AB%AF%E6%A1%86%E6%9E%B6/1.htm">前端框架</a>
                        <div>前端技术:vue-前端框架element-前端框架bootstrap-前端框架echarts-图标组件C#后端技术:webservice:soap架构:简单的通信协议,用于服务通信ORM框架:对象关系映射,如EF:对象实体模型,是ado.net中的应用技术soap服务通讯:xml通讯ado.net:OAuth2:登录授权认证:Token认证:JWT:jsonwebtokenJava后端技术:便捷工</div>
                    </li>
                    <li><a href="/article/1772783212230148096.htm"
                           title="日精进" target="_blank">日精进</a>
                        <span class="text-muted">石淑萍</span>

                        <div>【早上好#淑萍#20230605日精进335】分享嘉宾:海明教练社群运营架构专家全域流量孵化教练个人品牌超千万利润打造高手基本的创业者,对于商业模式的设计都是有漏洞的。股权架构今天我们讲的商业模式主要是盈利模式。很多社群运营会做裂变,不会做转化,因为没有后端的设计。不断的去积累,思考有哪些模式,需要去如何设计。政策领域:政府补贴➕大学生技术/大学生创业团队盈利模型——赋能板块核心一:长期锁客—资格</div>
                    </li>
                    <li><a href="/article/1772666269045161984.htm"
                           title="Mysql数据库MariaDB数据库MHA高可用程序" target="_blank">Mysql数据库MariaDB数据库MHA高可用程序</a>
                        <span class="text-muted">yichen_china</span>

                        <div>声明:本次实验使用的是MariaDB数据库,所以本文中所出现的MariaDB与MySQL都是指的是MariaDB!!!MHA(MasterHA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了automatingmasterfailover功能。MHA在监控到master节点故障时,会提升其中拥有最新数据的slave节点成为新的master节点,在此期间,MHA会通过于其它从节</div>
                    </li>
                    <li><a href="/article/1772655059889356800.htm"
                           title="【PHP】通过PHP开启/暂停Apache、MySQL或其他服务" target="_blank">【PHP】通过PHP开启/暂停Apache、MySQL或其他服务</a>
                        <span class="text-muted">下页、再停留</span>
<a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/apache/1.htm">apache</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                        <div>目录一、前言二、代码一、前言有些时候我们需要开启或暂停一些服务,比如说开启Apach或暂停MySQL服务等,最近工作中也开发了这方面的功能,记录下来怎样使用PHP语言来开启或暂停Apache、MySQL服务的运行状态。这种方法也适用其他服务。如果想了解怎么实时监控服务的运行状态,可以看上一篇文章【PHP】通过PHP实时监控Apache、MySQL服务运行状态-CSDN博客二、代码有三个参数需要根据</div>
                    </li>
                    <li><a href="/article/1772654807702634496.htm"
                           title="“异步”是什么意思?" target="_blank">“异步”是什么意思?</a>
                        <span class="text-muted">小林想被监督学习</span>
<a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1%E5%B8%88/1.htm">系统架构设计师</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E5%9F%BA%E7%A1%80/1.htm">计算机基础</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>含义“异步”在计算机科学中,指的是一种操作模式,其中操作被发起后,不必等待该操作完成,可以继续执行其他任务。也就是说异步操作不会去阻塞后续代码的执行,当操作完成时,通常会通过回调函数、事件或其他机制来通知应用程序。例子例如在事件驱动架构风格中,异步通信是核心特性之一。事件的生产者(发布者)发布了事件以后,不会等待任何消费者(订阅者)的响应,继续执行后续的任务。消费者感知到事件触发了以后,就自己安排</div>
                    </li>
                    <li><a href="/article/1772654174425645056.htm"
                           title="基于SSM+Vue企业销售培训系统 企业人才培训系统 企业课程培训管理系统 企业文化培训班系统Java" target="_blank">基于SSM+Vue企业销售培训系统 企业人才培训系统 企业课程培训管理系统 企业文化培训班系统Java</a>
                        <span class="text-muted">计算机程序老哥</span>

                        <div>作者主页:计算机毕业设计老哥有问题可以主页问我一、开发介绍1.1开发环境开发语言:Java数据库:MySQL系统架构:B/S后端:SSM(Spring+SpringMVC+Mybatis)前端:Vue工具:IDEA或者Eclipse,JDK1.8,Maven二、系统介绍2.1图片展示注册登录页面:登陆.png前端页面功能:首页、培训班、在线学习、企业文化、交流论坛、试卷列表、系统公告、留言反馈、个</div>
                    </li>
                    <li><a href="/article/1772389208908955648.htm"
                           title="Nagios安装部署全攻略" target="_blank">Nagios安装部署全攻略</a>
                        <span class="text-muted">weixin_34109408</span>
<a class="tag" taget="_blank" href="/search/memcached/1.htm">memcached</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/1.htm">操作系统</a>
                        <div>概述:公司的生产机器一共有12台,2台LVS(主备)、2台nginx、2台tomcat、1台后台服务器(nginx_tomcat)、3台mysql(主+备+异地灾备)、1台图片服务器、2台memcached.可以看出网站的架构就是基于高可用的原理的,每个层面都做了主备、系统的PV不高,对于并发布,高性能没有那么苛求,对于系统安全、稳定有较高要求,前期已经对系统做了各种日志分析,WAF配置,漏洞扫面</div>
                    </li>
                    <li><a href="/article/1772379138313748480.htm"
                           title="nginx upstream server主动健康监测模块添加https检测功能【上】" target="_blank">nginx upstream server主动健康监测模块添加https检测功能【上】</a>
                        <span class="text-muted">码农心语</span>
<a class="tag" taget="_blank" href="/search/nginx%E5%AD%A6%E4%B9%A0/1.htm">nginx学习</a><a class="tag" taget="_blank" href="/search/c%2B%2B%E5%BC%80%E5%8F%91/1.htm">c++开发</a><a class="tag" taget="_blank" href="/search/LINUX/1.htm">LINUX</a><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/%E8%BF%90%E7%BB%B4/1.htm">运维</a><a class="tag" taget="_blank" href="/search/%E5%81%A5%E5%BA%B7%E6%A3%80%E6%B5%8B/1.htm">健康检测</a><a class="tag" taget="_blank" href="/search/upstream/1.htm">upstream</a><a class="tag" taget="_blank" href="/search/proxy/1.htm">proxy</a>
                        <div>1缘起  前面的《nginxupstreamserver主动健康检测模块ngx_http_upstream_check_module使用和源码分析》系列已经分析了ngx_http_upstream_check_module的实现原理,并且在借助这个模块的框架实现了一个udp健康检测的新功能。  但是ngx_http_upstream_check_module还缺乏基于https监测上游服务器健康状</div>
                    </li>
                    <li><a href="/article/1772377876591607808.htm"
                           title="谈谈我对微服务架构的理解&微服务架构有什么作用" target="_blank">谈谈我对微服务架构的理解&微服务架构有什么作用</a>
                        <span class="text-muted">Layla_c</span>
<a class="tag" taget="_blank" href="/search/web/1.htm">web</a><a class="tag" taget="_blank" href="/search/jave/1.htm">jave</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%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>一、谈谈我对微服务架构的理解微服务架构,一种在现代化软件开发中广泛应用的架构模式,其核心理念在于将大型的、复杂的应用程序拆分为一系列小型的、松耦合的服务。每个服务都围绕着特定的业务功能或领域组件进行构建,并独立地运行在自己的进程中。这些服务通过轻量级的通信机制进行交互,通常使用HTTP/RESTfulAPI,以完成业务逻辑和数据的协同工作。微服务架构的优势主要体现在以下几个方面:首先,它提高了系统</div>
                    </li>
                    <li><a href="/article/1772372716498780160.htm"
                           title="haproxy的无缝热重启的实现原理" target="_blank">haproxy的无缝热重启的实现原理</a>
                        <span class="text-muted">码农心语</span>
<a class="tag" taget="_blank" href="/search/%E9%AB%98%E6%80%A7%E8%83%BD/1.htm">高性能</a><a class="tag" taget="_blank" href="/search/c%2B%2B%E5%BC%80%E5%8F%91/1.htm">c++开发</a><a class="tag" taget="_blank" href="/search/LINUX/1.htm">LINUX</a><a class="tag" taget="_blank" href="/search/haproxy/1.htm">haproxy</a><a class="tag" taget="_blank" href="/search/seamless/1.htm">seamless</a><a class="tag" taget="_blank" href="/search/reload/1.htm">reload</a><a class="tag" taget="_blank" href="/search/%E6%97%A0%E7%BC%9D%E7%83%AD%E9%87%8D%E5%90%AF/1.htm">无缝热重启</a>
                        <div>目录1.引言2.HAPROXY的准无缝热加载方案3.支持零宕机时间、零延迟的热加载方案3.1multibinder的实现3.2HAProxy启动脚本包装器的实现1.引言  在构建高可用的负载均衡架构时,HAProxy(HighAvailabilityProxy)作为一种可靠而强大的解决方案,被广泛应用于各种网络服务负载均衡环境中。HAProxy通过分发请求到多个后端服务器,实现了负载均衡和故障恢复</div>
                    </li>
                    <li><a href="/article/1772360756847771648.htm"
                           title="MineAdmin Swagger结合phpstorm实现快速客户端http调试" target="_blank">MineAdmin Swagger结合phpstorm实现快速客户端http调试</a>
                        <span class="text-muted">明日晴空</span>
<a class="tag" taget="_blank" href="/search/%E5%B7%A5%E5%85%B7%E7%B1%BB/1.htm">工具类</a><a class="tag" taget="_blank" href="/search/PHP/1.htm">PHP</a><a class="tag" taget="_blank" href="/search/phpstorm/1.htm">phpstorm</a><a class="tag" taget="_blank" href="/search/MineAdmin/1.htm">MineAdmin</a><a class="tag" taget="_blank" href="/search/Swagger/1.htm">Swagger</a><a class="tag" taget="_blank" href="/search/http%E8%B0%83%E8%AF%95/1.htm">http调试</a>
                        <div>以下操作,以MineAdmin框架作为演示,其它OpenApi规范文件亦可效果演示:1、打开http.json文件【OpenApi规范】,点击左侧装订线栏按钮2、点击左侧装订线栏按钮后,自动生成generated-requests.http文件,此时即可在phpstorm编辑器中直接调试接口,非常高效方便。一、下载安装MineAdmin1、gitee地址MineAdmin:MineAdmin是基于</div>
                    </li>
                    <li><a href="/article/1772333222470942720.htm"
                           title="git切换分支时,如何保存当前分支的修改(暂时不想提交)" target="_blank">git切换分支时,如何保存当前分支的修改(暂时不想提交)</a>
                        <span class="text-muted">旅行者xy</span>

                        <div>有时候我们在一个分支中修改了部分文件,这时候,有个新的紧急任务,需要马上修改。一个好的想法是切换到一个新的分支,在新的分支上进行修改提交。可是这时候你使用gitcheckoutnew_branch时会提示错误信息:*error:Yourlocalchangestothefollowingfileswouldbeoverwrittenbycheckout:config/database.phpPle</div>
                    </li>
                    <li><a href="/article/1772328429849477120.htm"
                           title="gdb、mdb、docx、xlsx、pdf、图片、txt多格式文件集成预览" target="_blank">gdb、mdb、docx、xlsx、pdf、图片、txt多格式文件集成预览</a>
                        <span class="text-muted">开源GIS地图与信创</span>

                        <div>近期闭关研究了新成果,实现了gdb、mdb、docx、xlsx、pdf、图片、txt多格式文件集成预览。软件采用B/S架构,可代替ArcGISServer、GeoServer、MapServer等多种GIS引擎。软件只有20M大小,可运行于多种老旧Windows电脑以及国产化电脑桌面软件,免安装,双击即启动,叉掉即关闭支持gdb、mdb、docx、xlsx、pdf、txt、png、jpg、gif、</div>
                    </li>
                    <li><a href="/article/1772307893329133568.htm"
                           title="低代码与前端开发架构:重塑软件开发的未来" target="_blank">低代码与前端开发架构:重塑软件开发的未来</a>
                        <span class="text-muted">快乐非自愿</span>
<a class="tag" taget="_blank" href="/search/%E4%BD%8E%E4%BB%A3%E7%A0%81/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%89%8D%E7%AB%AF/1.htm">前端</a>
                        <div>随着技术的不断进步和数字化转型的深入,软件开发领域正经历着一场革命性的变革。在这场变革中,低代码开发平台和前端开发架构扮演着越来越重要的角色。本文将探讨低代码与前端开发架构之间的关系,并分析它们如何共同推动软件开发的创新与发展。低代码开发平台的崛起低代码开发平台(Low-CodeDevelopmentPlatform,LCDP)是一种新型的软件开发方式,它允许开发者通过图形化界面、预构建的模块和模</div>
                    </li>
                    <li><a href="/article/1772295432785952768.htm"
                           title="《论文阅读》EmpDG:多分辨率交互式移情对话生成 COLING 2020" target="_blank">《论文阅读》EmpDG:多分辨率交互式移情对话生成 COLING 2020</a>
                        <span class="text-muted">365JHWZGo</span>
<a class="tag" taget="_blank" href="/search/%E6%83%85%E6%84%9F%E5%AF%B9%E8%AF%9D/1.htm">情感对话</a><a class="tag" taget="_blank" href="/search/%E8%AE%BA%E6%96%87%E9%98%85%E8%AF%BB/1.htm">论文阅读</a><a class="tag" taget="_blank" href="/search/%E5%85%B1%E6%83%85%E5%9B%9E%E5%A4%8D/1.htm">共情回复</a><a class="tag" taget="_blank" href="/search/%E5%9B%9E%E5%A4%8D%E7%94%9F%E6%88%90/1.htm">回复生成</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E8%AF%9D%E7%B3%BB%E7%BB%9F/1.htm">对话系统</a><a class="tag" taget="_blank" href="/search/%E5%A4%9A%E5%88%86%E8%BE%A8%E7%8E%87/1.htm">多分辨率</a><a class="tag" taget="_blank" href="/search/%E5%AF%B9%E6%8A%97%E5%AD%A6%E4%B9%A0/1.htm">对抗学习</a>
                        <div>《论文阅读》EmpDG:多分辨率交互式移情对话生成COLING2020前言简介模型架构共情生成器交互鉴别器损失函数前言亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦~无抄袭,无复制,纯手工敲击键盘~今天为大家带来的是《EmpDG:Multi-resolutionInteractiveEmpatheticDialogueGeneration》出版:COLING时间:2020类型:共情回复关</div>
                    </li>
                    <li><a href="/article/1772199758383874048.htm"
                           title="Centos 7 yum安装php5.6.X" target="_blank">Centos 7 yum安装php5.6.X</a>
                        <span class="text-muted">DomyloveR</span>

                        <div>检查当前安装的PHP包yumlistinstalled|grepphp如果有安装的PHP包,先删除他们yumremovephp.x86_64php-cli.x86_64php-common.x86_64php-gd.x86_64php-ldap.x86_64php-mbstring.x86_64php-mcrypt.x86_64php-mysql.x86_64php-pdo.x86_64配置yum</div>
                    </li>
                    <li><a href="/article/1772197632614137856.htm"
                           title="https在win7的环境下如何配置" target="_blank">https在win7的环境下如何配置</a>
                        <span class="text-muted">ddddwd--1</span>
<a class="tag" taget="_blank" href="/search/https/1.htm">https</a><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/http/1.htm">http</a>
                        <div>https在win7的环境下如何配置?在Windows7环境下配置https,需要完成以下步骤:1)安装Web服务器软件可以选择安装常用的Web服务器软件,如Apache、Nginx或IIS,这些服务器软件都支持https。2)获取SSL证书并安装要启用https,需要获取有效的SSL证书,找到合适的证书提交申请,待证书颁发之后就可以安装到服务器上。3)配置Web服务器软件对于Web服务器,需要编</div>
                    </li>
                    <li><a href="/article/1772182654712610816.htm"
                           title="基于nodejs+vue智慧农业小程序python-flask-django-php" target="_blank">基于nodejs+vue智慧农业小程序python-flask-django-php</a>
                        <span class="text-muted">QQ_1963288475</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">小程序</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
                        <div>根据此问题,研发一套智慧农业小程序,既能够大大提高信息的检索、变更与维护的工作效率,也能够方便微信小程序的管理运用,从而减少信息管理成本,提高效率。该微信小程序主要设计并完成了管理过程中的用户注册登录、个人信息修改、用户信息、知识科普、土壤信息、水质信息、购物商城等功能。该微信小程序操作简便,界面设计简洁,不但可以基本满足本行业的日常管理工作,同时又可以有效减少人员成本和时间成本,为智慧农业管理工</div>
                    </li>
                    <li><a href="/article/1772176109706739712.htm"
                           title="nodejs+vue的街道办管理系统python-flask-django-php" target="_blank">nodejs+vue的街道办管理系统python-flask-django-php</a>
                        <span class="text-muted">QQ_1963288475</span>
<a class="tag" taget="_blank" href="/search/python/1.htm">python</a><a class="tag" taget="_blank" href="/search/vue.js/1.htm">vue.js</a><a class="tag" taget="_blank" href="/search/flask/1.htm">flask</a><a class="tag" taget="_blank" href="/search/django/1.htm">django</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/node.js/1.htm">node.js</a>
                        <div>在此基础上,结合现有街道办管理体系的特点,运用新技术,构建了以nodejs为基础的街道办管理信息化管理体系。首先,以需求为依据,根据需求分析结果进行了系统的设计,并将其划分为管理员和用户二种角色和多个主要模块:用户、住户信息、流动人口、住户居住、住户迁出、缴费信息、投诉维修理、处理信息、评价评分、核酸采样、预约信息等。使用目前市场主流的技术express框架进行项目构建,基于MVC开发模式,使用n</div>
                    </li>
                    <li><a href="/article/1772164152710725632.htm"
                           title="利用K8S Statefulset搭建Etcd集群 - 本地存储" target="_blank">利用K8S Statefulset搭建Etcd集群 - 本地存储</a>
                        <span class="text-muted">夜晓码农</span>
<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/Docker/1.htm">Docker</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/etcd/1.htm">etcd</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a>
                        <div>目录概述测试环境yaml配置service.yamlcluster.yamlQ&A参考链接概述公司因项目需要使用K8S部署ETCD集群供其他业务调用,网上搜索了解了下,一般K8S搭建ETCD集群大部分都是使用EtcdOperator来搭建。但是公司的项目运行在离线ARM架构平台,直接使用网上EtcdOperator代码,他们提供的镜像都是x86_64架构,经过Opeartor编译等尝试,最后都以失</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>