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/1901467397131399168.htm"
                           title="鸿蒙开发2024【面试题库】讲解,近期需要面试的可千万别错过!" target="_blank">鸿蒙开发2024【面试题库】讲解,近期需要面试的可千万别错过!</a>
                        <span class="text-muted">鸿蒙系统小能手Mr.Li</span>
<a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99%E5%BC%80%E5%8F%91/1.htm">鸿蒙开发</a><a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99/1.htm">鸿蒙</a><a class="tag" taget="_blank" href="/search/OpenHarmony/1.htm">OpenHarmony</a><a class="tag" taget="_blank" href="/search/%E9%B8%BF%E8%92%99%E7%B3%BB%E7%BB%9F/1.htm">鸿蒙系统</a><a class="tag" taget="_blank" href="/search/%E7%A8%8B%E5%BA%8F%E5%91%98/1.htm">程序员</a><a class="tag" taget="_blank" href="/search/%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91/1.htm">移动开发</a>
                        <div>1.请简述鸿蒙OS与AndroidOS的主要区别是什么?设备兼容性:鸿蒙OS是一款面向各种设备的分布式操作系统,支持手机、平板电脑、智能手表、智能家居、汽车等多种设备类型,并能在这些设备之间实现无缝切换和共享数据。而Android系统则主要用于移动设备,如手机和平板电脑。系统架构:鸿蒙OS采用分布式技术架构,通过分布式技术实现多设备间的协作和数据共享,更加灵活、安全、高效。而Android则采用单</div>
                    </li>
                    <li><a href="/article/1901466262140153856.htm"
                           title="零信任架构" target="_blank">零信任架构</a>
                        <span class="text-muted">阿湯哥</span>
<a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>零信任架构(ZeroTrustArchitecture,ZTA)零信任架构是一种新型网络安全模型,核心理念是“永不信任,始终验证”(NeverTrust,AlwaysVerify)。它摒弃传统基于边界的安全防护(如防火墙隔离内外部网络),转而通过动态的、细粒度的访问控制,对所有用户、设备和数据流进行持续验证,最小化攻击面并防范内部威胁。一、零信任与传统安全模型的对比维度传统安全模型零信任模型信任基</div>
                    </li>
                    <li><a href="/article/1901463887987929088.htm"
                           title="HarmonyNext实战:基于ArkTS的分布式任务调度系统开发" target="_blank">HarmonyNext实战:基于ArkTS的分布式任务调度系统开发</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/harmonyos-next/1.htm">harmonyos-next</a>
                        <div>HarmonyNext实战:基于ArkTS的分布式任务调度系统开发引言在HarmonyNext生态系统中,分布式任务调度是一个核心且复杂的技术领域。随着设备互联的普及,如何在多设备间高效、可靠地分配和执行任务成为开发者面临的重要挑战。本文将深入探讨如何利用ArkTS语言构建一个高性能的分布式任务调度系统,涵盖从架构设计到代码实现的完整过程。分布式任务调度系统概述分布式任务调度系统的核心目标是将任务</div>
                    </li>
                    <li><a href="/article/1901463742680461312.htm"
                           title="深入理解Spring Cloud中的服务发现与注册" target="_blank">深入理解Spring Cloud中的服务发现与注册</a>
                        <span class="text-muted">weixin_836869520</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/%E6%9C%8D%E5%8A%A1%E5%8F%91%E7%8E%B0/1.htm">服务发现</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a>
                        <div>深入理解SpringCloud中的服务发现与注册大家好,我是微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!服务发现与注册的重要性在微服务架构中,服务发现与注册是确保服务间通信的关键。传统的单体应用程序可能使用硬编码的方式调用其他服务,但在微服务环境中,服务的地址和实例可能动态变化,因此需要一种机制来动态地管理和发现服务。1.SpringCloud与EurekaSpringClo</div>
                    </li>
                    <li><a href="/article/1901463253423288320.htm"
                           title="基于HarmonyNext的ArkTS实战:构建高性能跨平台应用" target="_blank">基于HarmonyNext的ArkTS实战:构建高性能跨平台应用</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/harmonyos-next/1.htm">harmonyos-next</a>
                        <div>基于HarmonyNext的ArkTS实战:构建高性能跨平台应用引言在HarmonyNext生态系统中,ArkTS作为新一代的编程语言,凭借其强大的类型系统和高效的运行时性能,成为开发高性能跨平台应用的首选。本文将深入探讨如何利用ArkTS构建一个复杂的跨平台应用,涵盖从项目架构设计到具体实现的完整流程。我们将通过一个实战案例——构建一个支持多端同步的笔记应用,来展示ArkTS在HarmonyNe</div>
                    </li>
                    <li><a href="/article/1901463250902511616.htm"
                           title="数据库核心技术面试题深度剖析:主从同步、二级索引与Change Buffer" target="_blank">数据库核心技术面试题深度剖析:主从同步、二级索引与Change Buffer</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF%E6%95%B0%E6%8D%AE%E5%BA%93mysql/1.htm">后端数据库mysql</a>
                        <div>在数据库相关岗位的面试中,主从同步、二级索引、ChangeBuffer是高频考察点。本文将从面试题角度拆解这三个技术点,覆盖底层原理、性能优化、设计思想,并结合实际场景与高频追问,助你构建系统性回答框架。一、主从同步:高可用架构的灵魂1.基础问题:主从同步的基本流程是什么?答:核心流程:主库将事务写入Binlog(二进制日志)从库的IO线程拉取Binlog到本地RelayLog从库的SQL线程重放</div>
                    </li>
                    <li><a href="/article/1901461726881181696.htm"
                           title="Ubuntu常用命令" target="_blank">Ubuntu常用命令</a>
                        <span class="text-muted">欲登绝巘</span>
<a class="tag" taget="_blank" href="/search/ubuntu/1.htm">ubuntu</a><a class="tag" taget="_blank" href="/search/linux/1.htm">linux</a><a class="tag" taget="_blank" href="/search/%E8%BF%90%E7%BB%B4/1.htm">运维</a>
                        <div>以下是一些常用的Ubuntu命令,可以帮助您在终端中进行各种任务和操作:文件和目录操作:ls:列出当前目录下的文件和目录。cd:切换目录。pwd:显示当前工作目录的路径。mkdir:创建新目录。rm:删除文件或目录。cp:复制文件和目录。mv:移动文件和目录。系统信息和管理:uname-a:显示系统信息,包括内核版本和硬件架构。top:实时显示系统资源使用情况和运行进程。free:显示内存使用情况</div>
                    </li>
                    <li><a href="/article/1901460971302481920.htm"
                           title="Transformer 架构深度剖析" target="_blank">Transformer 架构深度剖析</a>
                        <span class="text-muted">时光旅人01号</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E6%8A%80%E6%9C%AF%E7%A7%91%E6%99%AE/1.htm">人工智能技术科普</a><a class="tag" taget="_blank" href="/search/transformer/1.htm">transformer</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/conda/1.htm">conda</a><a class="tag" taget="_blank" href="/search/opencv/1.htm">opencv</a><a class="tag" taget="_blank" href="/search/%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%86%E8%A7%89/1.htm">计算机视觉</a>
                        <div>一、Transformer架构核心设计1.1整体架构Transformer由编码器(Encoder)和解码器(Decoder)堆叠而成,每个层包含:多头自注意力(Multi-HeadSelf-Attention)前馈网络(Feed-ForwardNetwork,FFN)残差连接(ResidualConnection)和层归一化(LayerNorm)关键特性:完全基于注意力机制,摒弃了循环和卷积结构</div>
                    </li>
                    <li><a href="/article/1901460850829488128.htm"
                           title="批量检查微信小程序是否被封的Go代码" target="_blank">批量检查微信小程序是否被封的Go代码</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/%E5%BE%AE%E4%BF%A1%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F/1.htm">微信微信小程序</a>
                        <div>概述:这段Go代码通过请求接口https://api.52an.fun/xcx/checkxcx.php?appid={appid},批量检查多个微信小程序是否被封禁。接口返回的JSON数据中包含code字段,code为1表示小程序正常,code为0表示小程序被封禁,并且会返回封禁原因。程序会根据返回结果输出每个小程序的状态。Go代码示例:packagemainimport("encoding/j</div>
                    </li>
                    <li><a href="/article/1901458700699234304.htm"
                           title="嵌入式SDIO 总线面试题及参考答案" target="_blank">嵌入式SDIO 总线面试题及参考答案</a>
                        <span class="text-muted">大模型大数据攻城狮</span>
<a class="tag" taget="_blank" href="/search/fpga%E5%BC%80%E5%8F%91/1.htm">fpga开发</a><a class="tag" taget="_blank" href="/search/%E5%B5%8C%E5%85%A5%E5%BC%8F%E9%9D%A2%E7%BB%8F/1.htm">嵌入式面经</a><a class="tag" taget="_blank" href="/search/SPI/1.htm">SPI</a><a class="tag" taget="_blank" href="/search/USB%E6%8E%A5%E5%8F%A3/1.htm">USB接口</a><a class="tag" taget="_blank" href="/search/SD%E6%80%BB%E7%BA%BF/1.htm">SD总线</a><a class="tag" taget="_blank" href="/search/SDIO%E6%80%BB%E7%BA%BF/1.htm">SDIO总线</a><a class="tag" taget="_blank" href="/search/%E7%89%9B%E5%AE%A2%E7%BD%91/1.htm">牛客网</a>
                        <div>目录SDIO总线与SD总线的核心区别是什么?(附框架图)简述SDIO总线物理接口的组成及其功能(CLK、CMD、DAT0-DAT3)。SDIO总线支持的最大数据传输位宽是多少?如何配置?解释SDIO总线中的主从模式架构及通信流程。SDIO卡的功能类型有哪些(如Wi-Fi、蓝牙、GPS)?SDIO总线时钟信号(CLK)的作用及典型频率范围SDIO协议中的OCR寄存器作用是什么?如何通过CMD5获取卡</div>
                    </li>
                    <li><a href="/article/1901455681932816384.htm"
                           title="HarmonyOS Next ohpm-repo实战案例——搭建企业级私有仓库" target="_blank">HarmonyOS Next ohpm-repo实战案例——搭建企业级私有仓库</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/harmonyos/1.htm">harmonyos</a>
                        <div>在企业级开发环境中,搭建一个稳定、高效且安全的HarmonyOSNextohpm-repo私有仓库至关重要。它不仅能集中管理项目依赖的三方库,还能提升开发效率、保障代码安全。接下来,我们将从部署架构设计、包管理优化以及访问控制等方面,详细介绍企业级ohpm-repo私有仓库的搭建指南。企业级ohpm-repo部署架构设计(私有仓库+反向代理+多实例高可用架构)私有仓库ohpm-repo作为私有仓库</div>
                    </li>
                    <li><a href="/article/1901455173381844992.htm"
                           title="批量检查QQ域名是否被封的C++代码示例" target="_blank">批量检查QQ域名是否被封的C++代码示例</a>
                        <span class="text-muted"></span>
<a class="tag" taget="_blank" href="/search/qq/1.htm">qq</a>
                        <div>概述:此C++代码示例展示了如何批量请求指定的API接口,检查QQ域名的状态。根据API返回的status值,status为1表示域名正常,status为0表示域名被封禁。我们将使用libcurl来进行HTTP请求,使用jsoncpp解析返回的JSON数据。目标:通过C++编写代码,批量请求https://api.52an.fun/qq/api.php?url=接口,检查多个QQ域名的封禁状态,并</div>
                    </li>
                    <li><a href="/article/1901454544886362112.htm"
                           title="【技术实测】单一世界承载数万单位无分片同步!全球低延迟互动DEMO开放测试" target="_blank">【技术实测】单一世界承载数万单位无分片同步!全球低延迟互动DEMO开放测试</a>
                        <span class="text-muted">微网兔子</span>
<a class="tag" taget="_blank" href="/search/%E5%BE%8C%E7%AB%AF%E6%8A%80%E8%A1%93/1.htm">後端技術</a><a class="tag" taget="_blank" href="/search/c%2B%2B/1.htm">c++</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/unity/1.htm">unity</a><a class="tag" taget="_blank" href="/search/%E5%90%8E%E7%AB%AF/1.htm">后端</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a>
                        <div>核心突破分散式同步引擎`实现三大关键指标:✅无分片架构-全域实体即时同步✅毫秒级延迟-跨洲网路优化✅万级货运-秒登入不排队万人单一世界最新技术测试影片目前,我们已实现一定的技术突破,并希望收集开发者的回馈,以确定下一步的优化方向。为了验证这项技术,我们部署了一个测试环境,具体情况如下:3万名玩家的即时互动3D测试环境(512×512平方米)已部署12,000个模拟客户端,开放18,000个名额给开</div>
                    </li>
                    <li><a href="/article/1901454165452845056.htm"
                           title="Spring Cloud Eureka快速搭建:微服务注册中心的配置步骤" target="_blank">Spring Cloud Eureka快速搭建:微服务注册中心的配置步骤</a>
                        <span class="text-muted">勤劳兔码农</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/eureka/1.htm">eureka</a><a class="tag" taget="_blank" href="/search/%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">微服务</a>
                        <div>SpringCloudEureka快速搭建:微服务注册中心的配置步骤目录引言SpringCloud微服务架构概述什么是Eureka?EurekaServer的搭建步骤4.1创建EurekaServer项目4.2配置EurekaServer4.3启动EurekaServer4.4多实例EurekaServer的搭建EurekaClient的配置步骤5.1创建EurekaClient项目5.2配置Eu</div>
                    </li>
                    <li><a href="/article/1901446852155338752.htm"
                           title="计算机毕业设计springboot教务管理系统 0k1c1源码+系统+程序+lw文档+部署" target="_blank">计算机毕业设计springboot教务管理系统 0k1c1源码+系统+程序+lw文档+部署</a>
                        <span class="text-muted">呦呦网络</span>
<a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                        <div>计算机毕业设计springboot教务管理系统0k1c1源码+系统+程序+lw文档+部署计算机毕业设计springboot教务管理系统0k1c1源码+系统+程序+lw文档+部署本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQL5</div>
                    </li>
                    <li><a href="/article/1901440548498108416.htm"
                           title="从LLM出发:由浅入深探索AI开发的全流程与简单实践(全文3w字)" target="_blank">从LLM出发:由浅入深探索AI开发的全流程与简单实践(全文3w字)</a>
                        <span class="text-muted">码事漫谈</span>
<a class="tag" taget="_blank" href="/search/AI/1.htm">AI</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>文章目录第一部分:AI开发的背景与历史1.1人工智能的起源与发展1.2神经网络与深度学习的崛起1.3Transformer架构与LLM的兴起1.4当前AI开发的现状与趋势第二部分:AI开发的核心技术2.1机器学习:AI的基础2.1.1机器学习的类型2.1.2机器学习的流程2.2深度学习:机器学习的进阶2.2.1神经网络基础2.2.2深度学习的关键架构2.3Transformer架构:现代LLM的核</div>
                    </li>
                    <li><a href="/article/1901434624509276160.htm"
                           title="基于GPT架构的视频生成工具(VideoGPT)" target="_blank">基于GPT架构的视频生成工具(VideoGPT)</a>
                        <span class="text-muted">deepdata_cn</span>
<a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E7%94%9F%E6%88%90/1.htm">视频生成</a><a class="tag" taget="_blank" href="/search/%E9%9F%B3%E8%A7%86%E9%A2%91/1.htm">音视频</a><a class="tag" taget="_blank" href="/search/%E8%A7%86%E9%A2%91%E7%94%9F%E6%88%90/1.htm">视频生成</a>
                        <div>VideoGPT是基于GPT架构的视频生成工具,支持从文本生成视频。最初,研究人员尝试将自然语言处理中的GPT架构思想引入视频处理领域,开始探索如何利用其强大的语言理解和生成能力来处理视频的时空信息。模型改进与创新:如VideoGPT+模型结合了先进的图像编码器和视频编码器,克服了传统方法在处理视频时的局限,在捕捉丰富空间细节和理解复杂时间动态上展现出卓越性能。iVideoGPT采用新颖的压缩to</div>
                    </li>
                    <li><a href="/article/1901432356040929280.htm"
                           title="DeepSeek 在代码生成方面的优势解析" target="_blank">DeepSeek 在代码生成方面的优势解析</a>
                        <span class="text-muted">草莓屁屁我不吃</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/ai/1.htm">ai</a><a class="tag" taget="_blank" href="/search/chatgpt/1.htm">chatgpt</a>
                        <div>在AI代码生成领域,DeepSeek通过其DeepSeek-Coder模型展现出强大的能力,与OpenAI的Codex、Meta的CodeLlama、Google的AlphaCode等国际领先模型同台竞争。文章将详细解析DeepSeek在代码生成方面的优势,包括模型架构、数据训练、优化策略、编程语言支持、推理效率等核心技术点。1.DeepSeek-Coder的模型架构优化DeepSeek-Code</div>
                    </li>
                    <li><a href="/article/1901432356552634368.htm"
                           title="Google Gemini 大模型技术架构剖析" target="_blank">Google Gemini 大模型技术架构剖析</a>
                        <span class="text-muted">musicml</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>▼最近直播超级多,预约保你有收获近期直播:《从原理到实践教你做出一个Gemini/ChatGPT》—1—Gemini技术架构剖析Google新的多模态模型家族Gemini,它在文本、图像、音频、视频等方面具有卓越的能力。Gemini系列包括Ultra、Pro和Nano三种尺寸,适用于从复杂的推理任务到设备内存受限的应用场景。GeminiUltra是最强大的模型,可在各种高度复杂的任务(包括推理和多</div>
                    </li>
                    <li><a href="/article/1901432357039173632.htm"
                           title="使用OpenResty(基于Nginx和Lua)优化Web服务性能" target="_blank">使用OpenResty(基于Nginx和Lua)优化Web服务性能</a>
                        <span class="text-muted">随风九天</span>
<a class="tag" taget="_blank" href="/search/%E9%83%A8%E7%BD%B2%E8%BF%90%E7%BB%B4/1.htm">部署运维</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E6%80%A7%E8%83%BD%E4%B9%9D%E9%98%B4%E7%99%BD%E9%AA%A8%E7%88%AA/1.htm">性能九阴白骨爪</a><a class="tag" taget="_blank" href="/search/openresty/1.htm">openresty</a><a class="tag" taget="_blank" href="/search/nginx/1.htm">nginx</a><a class="tag" taget="_blank" href="/search/lua/1.htm">lua</a>
                        <div>引言1.1OpenResty简介OpenResty是一个基于Nginx和Lua的高性能Web应用平台。它通过将Lua脚本嵌入到Nginx中,提供了强大的动态处理能力,适用于构建高性能的Web服务、API网关、动态内容生成等场景。1.2Nginx与Lua结合的优势高性能:Nginx本身就是一个高性能的HTTP和反向代理服务器,而Lua的嵌入使得动态处理能力大大增强。低资源消耗:Lua脚本的执行效率高</div>
                    </li>
                    <li><a href="/article/1901428064982724608.htm"
                           title="深入解析两大AI模型的架构与功能" target="_blank">深入解析两大AI模型的架构与功能</a>
                        <span class="text-muted">草莓屁屁我不吃</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/chatgpt/1.htm">chatgpt</a>
                        <div>在人工智能(AI)领域,自然语言处理(NLP)一直是研究的热点之一。随着技术的不断进步,我们见证了从简单的聊天机器人到复杂语言模型的演变。其中,Google的Gemini和OpenAI的ChatGPT作为两大代表性模型,各自在技术和应用上展现出了卓越的性能。本文将详细解析Gemini和ChatGPT的系统架构、功能特性及其背后的技术原理。Gemini模型详解技术背景与架构Gemini,顾名思义,意</div>
                    </li>
                    <li><a href="/article/1901426174429556736.htm"
                           title="SpringBoot实践(三十二):5分钟搭建springboot单体应用开发框架" target="_blank">SpringBoot实践(三十二):5分钟搭建springboot单体应用开发框架</a>
                        <span class="text-muted">A叶子叶</span>
<a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/SpringBoot%E4%B8%8E%E5%BE%AE%E6%9C%8D%E5%8A%A1/1.htm">SpringBoot与微服务</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>熟悉语言和开发工具上基础快速使用框架构建应用是个机械工作,5分钟完成开发准备工作,没有冗余动作。目录准备工作开发框架搭建spring初始化常规依赖其他依赖规范化开发目录结构依赖适配代码生成器响应体封装github代码准备工作后端开发需要数据持久化,数据库使用mysql,这也是生产环境大部分的选择,本地开发如果没有mysql可以直接在idea上创建h2数据库,具体创建方式可以参考:使用IDEA创建H</div>
                    </li>
                    <li><a href="/article/1901417728665776128.htm"
                           title="探索未来架构:基于AWS的响应式微服务框架" target="_blank">探索未来架构:基于AWS的响应式微服务框架</a>
                        <span class="text-muted">柏赢安Simona</span>

                        <div>探索未来架构:基于AWS的响应式微服务框架reactive-refarch-cloudformationReactiveMicroservicesArchitectureswithAmazonECS,AWSLambda,AmazonKinesisStreams,AmazonElastiCache,andAmazonDynamoDB项目地址:https://gitcode.com/gh_mirror</div>
                    </li>
                    <li><a href="/article/1901416971283525632.htm"
                           title="展望 AIGC 前景:通义万相 2.1 与蓝耘智算平台共筑 AI 生产力高地" target="_blank">展望 AIGC 前景:通义万相 2.1 与蓝耘智算平台共筑 AI 生产力高地</a>
                        <span class="text-muted">accurater</span>
<a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C/1.htm">神经网络</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0/1.htm">深度学习</a>
                        <div>喜欢可以到主页订阅专栏引言人工智能生成内容(AIGC)技术正在重塑内容创作、影视制作、广告设计等行业的底层逻辑。作为该领域的革命性技术代表,通义万相2.1凭借其开源特性、多模态生成能力和技术突破,成为全球视频生成模型的标杆。而蓝耘智算平台则通过高性能算力支持与分布式架构优化,为AIGC技术的规模化应用提供了基础设施保障。两者的协同不仅推动了AI生产力的跃迁,更开启了从技术研发到商业落地的全链条创新</div>
                    </li>
                    <li><a href="/article/1901414574024880128.htm"
                           title="PHP与数据库连接常见问题及解决办法" target="_blank">PHP与数据库连接常见问题及解决办法</a>
                        <span class="text-muted">奥顺互联_老张</span>
<a class="tag" taget="_blank" href="/search/php%E6%95%99%E7%A8%8B/1.htm">php教程</a><a class="tag" taget="_blank" href="/search/php/1.htm">php</a><a class="tag" taget="_blank" href="/search/%E6%95%B0%E6%8D%AE%E5%BA%93/1.htm">数据库</a>
                        <div>PHP与数据库连接常见问题及解决办法在现代Web开发中,PHP与数据库的连接是不可或缺的一部分。无论是构建动态网站、内容管理系统(CMS)还是电子商务平台,PHP与数据库的交互都是核心功能之一。然而,在实际开发过程中,开发者常常会遇到各种与数据库连接相关的问题。本文将探讨PHP与数据库连接中的常见问题,并提供相应的解决办法。1.数据库连接失败问题描述在PHP中,连接数据库时最常见的错误是无法连接到</div>
                    </li>
                    <li><a href="/article/1901412304969330688.htm"
                           title="AJAX PHP:深入理解与实际应用" target="_blank">AJAX PHP:深入理解与实际应用</a>
                        <span class="text-muted">wjs2024</span>
<a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a>
                        <div>AJAXPHP:深入理解与实际应用引言随着互联网技术的不断发展,前端与后端交互变得更加频繁。AJAX(AsynchronousJavaScriptandXML)和PHP(HypertextPreprocessor)作为两种流行的技术,在实现动态网页和应用程序方面扮演着重要角色。本文将深入探讨AJAXPHP的工作原理、应用场景以及实际开发中的注意事项。AJAXPHP概述AJAXAJAX是一种基于Ja</div>
                    </li>
                    <li><a href="/article/1901409534006587392.htm"
                           title="K8S学习之基础二十八:k8s中的configMap" target="_blank">K8S学习之基础二十八:k8s中的configMap</a>
                        <span class="text-muted">云上艺旅</span>
<a class="tag" taget="_blank" href="/search/K8S%E5%AD%A6%E4%B9%A0/1.htm">K8S学习</a><a class="tag" taget="_blank" href="/search/kubernetes/1.htm">kubernetes</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a><a class="tag" taget="_blank" href="/search/%E5%AE%B9%E5%99%A8/1.htm">容器</a><a class="tag" taget="_blank" href="/search/%E4%BA%91%E5%8E%9F%E7%94%9F/1.htm">云原生</a>
                        <div>k8s中的configMapconfigMap是k8s的资源对象,简称cm,用于保存非机密性的配置,数据可以用key/value键值对形式保存,也可以通过文件形式保存在部署服务的时候,每个服务都有自己的配置文件,如果一台服务器上部署多个服务:nginx、tomcat、apache等,那么这些配置都存在这个节点上,假如一台服务器不能满足线上高并发的要求,需要对服务器扩容,扩容之后的服务器还是需要部署</div>
                    </li>
                    <li><a href="/article/1901407894306353152.htm"
                           title="Spring Boot 多级缓存实战:基于 Redis+Redisson 构建高并发解决方案" target="_blank">Spring Boot 多级缓存实战:基于 Redis+Redisson 构建高并发解决方案</a>
                        <span class="text-muted">Isaac_Gao</span>
<a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/boot/1.htm">boot</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a>
                        <div>SpringBoot多级缓存实战:基于Redis+Redisson构建高并发解决方案本文适合人群:中高级Java开发工程师、系统架构师、对高并发场景优化感兴趣的技术人员一、为什么需要多级缓存?在百万级并发的电商系统中,我们曾遇到这样的性能瓶颈:本地缓存导致各节点数据不一致单纯依赖Redis造成带宽瓶颈缓存雪崩导致DB被打挂多级缓存架构通过结合本地缓存与分布式缓存的优势,实现了:热点数据纳秒级访问分</div>
                    </li>
                    <li><a href="/article/1901406884695437312.htm"
                           title="Dubbo、SpringCloud框架学习" target="_blank">Dubbo、SpringCloud框架学习</a>
                        <span class="text-muted">种豆走天下</span>
<a class="tag" taget="_blank" href="/search/dubbo/1.htm">dubbo</a><a class="tag" taget="_blank" href="/search/spring/1.htm">spring</a><a class="tag" taget="_blank" href="/search/cloud/1.htm">cloud</a><a class="tag" taget="_blank" href="/search/%E5%AD%A6%E4%B9%A0/1.htm">学习</a>
                        <div>学习Dubbo和SpringCloud框架是微服务架构的一个重要部分。这两个框架在分布式系统中起着重要的作用,分别是阿里巴巴和Spring团队开发的。下面我将为你提供一些基础知识和学习路线,帮助你更好地理解和掌握这两个框架。1.Dubbo框架学习1.1什么是DubboDubbo是阿里巴巴开源的一款高性能的微服务框架。它提供了RPC(远程过程调用)、服务注册与发现、负载均衡、容错、监控等功能。Dub</div>
                    </li>
                    <li><a href="/article/1901404739938086912.htm"
                           title="鲲鹏920 7265 (128C)@3.0GHz处理器全解析" target="_blank">鲲鹏920 7265 (128C)@3.0GHz处理器全解析</a>
                        <span class="text-muted">facaixxx2024</span>
<a class="tag" taget="_blank" href="/search/%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8/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/CPU/1.htm">CPU</a>
                        <div>鲲鹏9207265(128C)@3.0GHz:鲲鹏9207265处理器,通常是单芯片64核,当使用2路处理器时可达128核,主频3.0GHz,服务器百科网fwqbk.com分享鲲鹏920处理器:鲲鹏920处理器基本参数架构:ARMv8.2制造工艺:7nm内存:支持8通道DDR4内存,内存速率可达2933MT/s缓存:L1为64KB指令缓存和数据缓存;L2为512KB每核独立缓存;L3为24-64M</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>