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/1950233199242178560.htm"
                           title="x86-64汇编语言训练程序与实战" target="_blank">x86-64汇编语言训练程序与实战</a>
                        <span class="text-muted">十除以十等于一</span>

                        <div>本文还有配套的精品资源,点击获取简介:汇编语言是一种低级语言,与机器代码紧密相关,特别适用于编写系统级代码及性能要求高的应用。nasm编译器是针对x86和x86-64架构的汇编语言编译器,支持多种语法风格和指令集。项目Euler提供数学和计算机科学问题,鼓励编程技巧应用,前100个问题的答案可共享。x86-64架构扩展了寄存器数量并引入新指令,提升了数据处理效率。学习汇编语言能够深入理解计算机底层</div>
                    </li>
                    <li><a href="/article/1950232316974526464.htm"
                           title="(二)SAP Group Reporting (GR) 核心子模块功能及数据流向架构解析" target="_blank">(二)SAP Group Reporting (GR) 核心子模块功能及数据流向架构解析</a>
                        <span class="text-muted"></span>

                        <div>数据如何从子公司流转到合并报表的全过程,即数据采集→合并引擎→报表输出,特别是HANA内存计算如何优化传统ETL瓶颈。SAPGroupReporting(GR)核心模块功能及数据流向的架构解析,涵盖核心组件、数据处理流程和关键集成点,适用于S/4HANA1809+版本:一、核心功能模块概览模块功能关键事务码/FioriApp数据采集(DataCollection)整合子公司财务数据(SAP/非SA</div>
                    </li>
                    <li><a href="/article/1950228031117258752.htm"
                           title="深入解析JVM工作原理:从字节码到机器指令的全过程" target="_blank">深入解析JVM工作原理:从字节码到机器指令的全过程</a>
                        <span class="text-muted"></span>

                        <div>一、JVM概述Java虚拟机(JVM)是Java平台的核心组件,它实现了Java"一次编写,到处运行"的理念。JVM是一个抽象的计算机器,它有自己的指令集和运行时内存管理机制。JVM的主要职责:加载:读取.class文件并验证其正确性存储:管理内存分配和垃圾回收执行:解释或编译字节码为机器指令安全:提供沙箱环境限制恶意代码二、JVM架构详解JVM由三个主要子系统组成:1.类加载子系统类加载过程分为</div>
                    </li>
                    <li><a href="/article/1950228032513961984.htm"
                           title="ARM 和 AMD 架构的区别" target="_blank">ARM 和 AMD 架构的区别</a>
                        <span class="text-muted">m0_69576880</span>
<a class="tag" taget="_blank" href="/search/arm%E5%BC%80%E5%8F%91/1.htm">arm开发</a><a class="tag" taget="_blank" href="/search/windows/1.htm">windows</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>ARM架构和AMD架构是两种不同的计算机处理器架构,它们有以下几个主要区别:设计出发点、兼容性、性能特点、市场定价。设计出发点:①ARM构架:ARM架构最初是为嵌入式系统设计的,旨在提供低功耗和高效能的解决方案。它主要应用于移动设备、嵌入式系统和物联网设备②AMD架构:AMD架构是基于x86架构的扩展,旨在提供与Intel架构兼容的处理器。它主要用于台式机、服务器和工作站等计算机系统。兼容性:AR</div>
                    </li>
                    <li><a href="/article/1950226517397139456.htm"
                           title="JVM 内存模型深度解析:原子性、可见性与有序性的实现" target="_blank">JVM 内存模型深度解析:原子性、可见性与有序性的实现</a>
                        <span class="text-muted">练习时长两年半的程序员小胡</span>
<a class="tag" taget="_blank" href="/search/JVM/1.htm">JVM</a><a class="tag" taget="_blank" href="/search/%E6%B7%B1%E5%BA%A6%E5%89%96%E6%9E%90%EF%BC%9A%E4%BB%8E%E9%9D%A2%E8%AF%95%E8%80%83%E7%82%B9%E5%88%B0%E7%94%9F%E4%BA%A7%E5%AE%9E%E8%B7%B5/1.htm">深度剖析:从面试考点到生产实践</a><a class="tag" taget="_blank" href="/search/jvm/1.htm">jvm</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%86%85%E5%AD%98%E6%A8%A1%E5%9E%8B/1.htm">内存模型</a>
                        <div>在了解了JVM的基础架构和类加载机制后,我们需要进一步探索Java程序在多线程环境下的内存交互规则。JVM内存模型(JavaMemoryModel,JMM)定义了线程和主内存之间的抽象关系,它通过规范共享变量的访问方式,解决了多线程并发时的数据一致性问题。本文将从内存模型的核心目标出发,详解原子性、可见性、有序性的实现机制,以及volatile、synchronized等关键字在其中的作用。一、J</div>
                    </li>
                    <li><a href="/article/1950225255079407616.htm"
                           title="企业级区块链平台Hyperchain核心原理剖析" target="_blank">企业级区块链平台Hyperchain核心原理剖析</a>
                        <span class="text-muted">boyedu</span>
<a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E5%8C%BA%E5%9D%97%E9%93%BE/1.htm">区块链</a><a class="tag" taget="_blank" href="/search/%E4%BC%81%E4%B8%9A%E7%BA%A7%E5%8C%BA%E5%9D%97%E9%93%BE%E5%B9%B3%E5%8F%B0/1.htm">企业级区块链平台</a><a class="tag" taget="_blank" href="/search/Hyperchain/1.htm">Hyperchain</a>
                        <div>Hyperchain作为国产自主可控的企业级联盟区块链平台,其核心原理围绕高性能共识、隐私保护、智能合约引擎及可扩展架构展开,通过多模块协同实现企业级区块链网络的高效部署与安全运行。以下从核心架构、关键技术、性能优化、安全机制、应用场景五个维度展开剖析:一、核心架构:分层解耦与模块化设计Hyperchain采用分层架构,将区块链功能解耦为独立模块,支持灵活组合与扩展:P2P网络层由验证节点(VP)</div>
                    </li>
                    <li><a href="/article/1950224877067759616.htm"
                           title="车载刷写架构 --- 整车刷写中为何增加了ECU 队列刷写策略?" target="_blank">车载刷写架构 --- 整车刷写中为何增加了ECU 队列刷写策略?</a>
                        <span class="text-muted">汽车电子实验室</span>
<a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%AD%90%E7%94%B5%E5%99%A8%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E5%88%B7%E5%86%99%E6%96%B9%E6%A1%88/1.htm">电子电器架构——刷写方案</a><a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E7%94%B5%E5%AD%90%E7%94%B5%E6%B0%94%E6%9E%B6%E6%9E%84/1.htm">车载电子电气架构</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E8%AF%8A%E6%96%AD%E8%BF%9B%E9%98%B6%E7%AF%87/1.htm">车载诊断进阶篇</a><a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6%E4%B8%AD%E5%A4%AE%E6%8E%A7%E5%88%B6%E5%8D%95%E5%85%83HPC%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84/1.htm">汽车中央控制单元HPC软件架构</a><a class="tag" taget="_blank" href="/search/%E5%85%B3%E4%BA%8E%E7%BD%91%E5%85%B3%E8%BD%AC%E5%8F%91%E6%80%A7%E8%83%BD%E5%BC%95%E8%B5%B7%E7%9A%84%E6%80%9D%E8%80%83/1.htm">关于网关转发性能引起的思考</a>
                        <div>我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧!旧人不知我近况,新人不知我过往,近况不该旧人知,过往不与新人讲。纵你阅人何其多,再无一人恰似我。时间不知不觉中,来到新的一年。2025开始新的忙碌。成年人的我也不知道去哪里渡</div>
                    </li>
                    <li><a href="/article/1950224872688906240.htm"
                           title="车载诊断架构 ---面向售后的DTC应该怎么样填写?" target="_blank">车载诊断架构 ---面向售后的DTC应该怎么样填写?</a>
                        <span class="text-muted">汽车电子实验室</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E7%94%B5%E5%AD%90%E7%94%B5%E6%B0%94%E6%9E%B6%E6%9E%84/1.htm">车载电子电气架构</a><a class="tag" taget="_blank" href="/search/%E6%BC%AB%E8%B0%88UDS%E8%AF%8A%E6%96%AD%E5%8D%8F%E8%AE%AE%E7%B3%BB%E5%88%97/1.htm">漫谈UDS诊断协议系列</a><a class="tag" taget="_blank" href="/search/EV%EF%BC%88%E7%94%B5%E5%8A%A8%E6%B1%BD%E8%BD%A6%EF%BC%89%E5%B8%B8%E8%A7%84%E7%9F%A5%E8%AF%86%E5%BF%85%E5%A4%87/1.htm">EV(电动汽车)常规知识必备</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E5%90%91%E5%94%AE%E5%90%8E%E7%9A%84DTC/1.htm">面向售后的DTC</a><a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E8%AF%8A%E6%96%AD%E6%9E%B6%E6%9E%84/1.htm">车载诊断架构</a><a class="tag" taget="_blank" href="/search/OEM%E6%80%8E%E4%B9%88%E6%8E%8C%E6%8F%A1%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E8%83%BD%E5%8A%9B/1.htm">OEM怎么掌握软件开发能力</a><a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E9%80%9A%E4%BF%A1%E7%BD%91%E7%BB%9C%E6%A7%AA%E8%BF%B0/1.htm">车载通信网络槪述</a><a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/ZEVonUDS-J1979/1.htm">ZEVonUDS-J1979</a>
                        <div>我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身边有这样灵性的人,一定要好好珍惜他们眼中有神有光,干净,给人感觉很舒服,有超强的感知能力有形的无形的感知力很强,能感知人的内心变化喜欢独处,好静,</div>
                    </li>
                    <li><a href="/article/1950224746352275456.htm"
                           title="车载诊断架构 --- 关于诊断时间参数P4的浅析" target="_blank">车载诊断架构 --- 关于诊断时间参数P4的浅析</a>
                        <span class="text-muted">汽车电子实验室</span>
<a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E7%94%B5%E5%AD%90%E7%94%B5%E6%B0%94%E6%9E%B6%E6%9E%84/1.htm">车载电子电气架构</a><a class="tag" taget="_blank" href="/search/%E6%BC%AB%E8%B0%88UDS%E8%AF%8A%E6%96%AD%E5%8D%8F%E8%AE%AE%E7%B3%BB%E5%88%97/1.htm">漫谈UDS诊断协议系列</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%85%B3%E4%BA%8E%E7%BD%91%E5%85%B3%E8%BD%AC%E5%8F%91%E6%80%A7%E8%83%BD%E5%BC%95%E8%B5%B7%E7%9A%84%E6%80%9D%E8%80%83/1.htm">关于网关转发性能引起的思考</a><a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6%E4%B8%AD%E5%A4%AE%E6%8E%A7%E5%88%B6%E5%8D%95%E5%85%83HPC%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84/1.htm">汽车中央控制单元HPC软件架构</a><a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E8%AF%8A%E6%96%AD%E8%BF%9B%E9%98%B6%E7%AF%87/1.htm">车载诊断进阶篇</a>
                        <div>关于诊断时间参数P4的浅析我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的豁达,往不幸上面喷“香水”来掩盖问题。无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事.而不是让内心的烦</div>
                    </li>
                    <li><a href="/article/1950224745421139968.htm"
                           title="车载刷写架构 --- 刷写思考扩展" target="_blank">车载刷写架构 --- 刷写思考扩展</a>
                        <span class="text-muted">汽车电子实验室</span>
<a class="tag" taget="_blank" href="/search/%E7%94%B5%E5%AD%90%E7%94%B5%E5%99%A8%E6%9E%B6%E6%9E%84%E2%80%94%E2%80%94%E5%88%B7%E5%86%99%E6%96%B9%E6%A1%88/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%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/%E5%85%B3%E4%BA%8E%E7%BD%91%E5%85%B3%E8%BD%AC%E5%8F%91%E6%80%A7%E8%83%BD%E5%BC%95%E8%B5%B7%E7%9A%84%E6%80%9D%E8%80%83/1.htm">关于网关转发性能引起的思考</a><a class="tag" taget="_blank" href="/search/%E6%B1%BD%E8%BD%A6%E4%B8%AD%E5%A4%AE%E6%8E%A7%E5%88%B6%E5%8D%95%E5%85%83HPC%E8%BD%AF%E4%BB%B6%E6%9E%B6%E6%9E%84/1.htm">汽车中央控制单元HPC软件架构</a><a class="tag" taget="_blank" href="/search/%E8%BD%A6%E8%BD%BD%E8%AF%8A%E6%96%AD%E8%BF%9B%E9%98%B6%E7%AF%87/1.htm">车载诊断进阶篇</a>
                        <div>我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师:做到欲望极简,了解自己的真实欲望,不受外在潮流的影响,不盲从,不跟风。把自己的精力全部用在自己。一是去掉多余,凡事找规律,基础是诚信;二是系统思考、大胆设计、小心求证;三是“一张纸制度”,也就是无论多么复杂的工作内容,要在一张纸上描述清楚;四是要坚决反对虎头蛇尾,反对繁文缛节,反对老</div>
                    </li>
                    <li><a href="/article/1950224490331959296.htm"
                           title="通义万相2.2:开启高清视频生成新纪元" target="_blank">通义万相2.2:开启高清视频生成新纪元</a>
                        <span class="text-muted">Liudef06小白</span>
<a class="tag" taget="_blank" href="/search/%E7%89%B9%E6%AE%8A%E4%B8%93%E6%A0%8F/1.htm">特殊专栏</a><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/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a><a class="tag" taget="_blank" href="/search/%E9%80%9A%E4%B9%89%E4%B8%87%E7%9B%B82.2/1.htm">通义万相2.2</a><a class="tag" taget="_blank" href="/search/%E5%9B%BE%E7%94%9F%E8%A7%86%E9%A2%91/1.htm">图生视频</a>
                        <div>通义万相2.2:开启高清视频生成新纪元2025年7月28日,中国AI领域迎来里程碑时刻——通义万相团队正式开源其革命性视频生成模型Wan2.2的核心权重,这标志着开源社区首次获得支持720P高清视频生成的先进模型架构。一、架构革新:混合专家系统1.1MoE视频扩散架构通义万相2.2首次将混合专家(MoE)架构引入视频扩散模型,通过双专家系统实现计算效率与模型容量的平衡:classMoEVideoD</div>
                    </li>
                    <li><a href="/article/1950219953118441472.htm"
                           title="编程算法:技术创新的引擎与业务增长的核心驱动力" target="_blank">编程算法:技术创新的引擎与业务增长的核心驱动力</a>
                        <span class="text-muted"></span>

                        <div>在数字经济时代,算法已成为推动技术创新与业务增长的隐形引擎。从存内计算突破冯·诺依曼瓶颈,到动态规划优化万亿级金融交易,编程算法正在重塑产业竞争格局。一、存内计算:突破冯·诺依曼瓶颈的算法革命1.1存内计算的基本原理传统计算架构中90%的能耗消耗在数据搬运上。存内计算(Processing-in-Memory)通过直接在存储单元执行计算,实现能效10-100倍提升:#传统计算vs存内计算能耗模型i</div>
                    </li>
                    <li><a href="/article/1950218819616174080.htm"
                           title="基于redis的Zset实现作者的轻量级排名" target="_blank">基于redis的Zset实现作者的轻量级排名</a>
                        <span class="text-muted">周童學</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/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/%E7%BC%93%E5%AD%98/1.htm">缓存</a>
                        <div>基于redis的Zset实现轻量级作者排名系统在今天的技术架构中,Redis是一种广泛使用的内存数据存储系统,尤其在需要高效检索和排序的场景中表现优异。在本篇博客中,我们将深入探讨如何使用Redis的有序集合(ZSet)构建一个高效的笔记排行榜系统,并提供相关代码示例和详细的解析。1.功能背景与需求假设我们有一个笔记分享平台,用户可以发布各种笔记,系统需要根据用户发布的笔记数量来生成一个实时更新的</div>
                    </li>
                    <li><a href="/article/1950213272120651776.htm"
                           title="Redis + Caffeine 实现高效的两级缓存架构" target="_blank">Redis + Caffeine 实现高效的两级缓存架构</a>
                        <span class="text-muted">周童學</span>
<a class="tag" taget="_blank" href="/search/Java/1.htm">Java</a><a class="tag" taget="_blank" href="/search/%E7%BC%93%E5%AD%98/1.htm">缓存</a><a class="tag" taget="_blank" href="/search/redis/1.htm">redis</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>Redis+Caffeine实现高效的两级缓存架构引言在现代高并发系统中,缓存是提升系统性能的关键组件之一。传统的单一缓存方案往往难以同时满足高性能和高可用性的需求。本文将介绍如何结合Redis和Caffeine构建一个高效的两级缓存系统,并通过三个版本的演进展示如何逐步优化代码结构。项目源代码:github地址、gitee地址两级缓存架构概述两级缓存通常由本地缓存(如Caffeine)和分布式缓</div>
                    </li>
                    <li><a href="/article/1950209236877242368.htm"
                           title="严重的DDoS 攻击澳大利亚主要宽带提供商" target="_blank">严重的DDoS 攻击澳大利亚主要宽带提供商</a>
                        <span class="text-muted">Fancy1816575412</span>

                        <div>本周早些时候,澳大利亚最大的固定无线宽带运营商CirrusCommunications遭受了一次重大的DDoS攻击,导致其一半以上的网络瘫痪。该公司在其网站上声称:“强大的架构、数百个传输站点以及光纤和微波回程的使用使其能够以非常高的正常运行时间提供高速”。CirrusCommunications表示,它覆盖了澳大利亚十大人口中心以及几个主要的区域中心,主要为企业和政府客户提供服务。然而,据The</div>
                    </li>
                    <li><a href="/article/1950207854388506624.htm"
                           title="深入理解 Tomcat Wrapper 原理" target="_blank">深入理解 Tomcat Wrapper 原理</a>
                        <span class="text-muted">北漂老男人</span>
<a class="tag" taget="_blank" href="/search/Tomcat/1.htm">Tomcat</a><a class="tag" taget="_blank" href="/search/tomcat/1.htm">tomcat</a><a class="tag" taget="_blank" href="/search/java/1.htm">java</a>
                        <div>深入理解TomcatWrapper原理一、引言在Tomcat的分层容器架构中,Wrapper作为最底层的容器,专门负责管理单个Servlet的生命周期及请求分发。每一个Servlet(包括JSP、Filter等)都对应一个Wrapper。Wrapper是Servlet规范与Tomcat容器实现之间的桥梁,直接关系到请求的分发效率、Servlet的加载与重用、安全隔离等。本文将系统剖析Wrapper</div>
                    </li>
                    <li><a href="/article/1950201675771867136.htm"
                           title="分布式链路追踪系统架构设计:从理论到企业级实践" target="_blank">分布式链路追踪系统架构设计:从理论到企业级实践</a>
                        <span class="text-muted">ma451152002</span>
<a class="tag" taget="_blank" href="/search/java/1.htm">java</a><a class="tag" taget="_blank" href="/search/%E5%88%86%E5%B8%83%E5%BC%8F/1.htm">分布式</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a>
                        <div>分布式链路追踪系统架构设计:从理论到企业级实践本文深入探讨分布式链路追踪系统的架构设计原理、关键技术实现和企业级应用实践,为P7架构师提供完整的技术方案参考。目录引言:分布式链路追踪的重要性核心概念与技术原理系统架构设计数据模型与协议标准核心组件架构设计性能优化与扩展性设计企业级实施策略技术选型与对比分析监控与运维体系未来发展趋势P7架构师面试要点引言:分布式链路追踪的重要性微服务架构下的挑战在现</div>
                    </li>
                    <li><a href="/article/1950200414989250560.htm"
                           title="面试必考题:Android Binder 机制详解" target="_blank">面试必考题:Android Binder 机制详解</a>
                        <span class="text-muted">大模型大数据攻城狮</span>
<a class="tag" taget="_blank" href="/search/android/1.htm">android</a><a class="tag" taget="_blank" href="/search/binder/1.htm">binder</a><a class="tag" taget="_blank" href="/search/%E9%9D%A2%E8%AF%95/1.htm">面试</a><a class="tag" taget="_blank" href="/search/react/1.htm">react</a><a class="tag" taget="_blank" href="/search/native/1.htm">native</a><a class="tag" taget="_blank" href="/search/kotlin/1.htm">kotlin</a><a class="tag" taget="_blank" href="/search/dalvik/1.htm">dalvik</a><a class="tag" taget="_blank" href="/search/retrofit/1.htm">retrofit</a>
                        <div>目录第一章:Binder的基本概念什么是Binder?多角度解读Binder第二章:Binder的工作机制Binder的整体流程服务注册:从零到有的第一步服务查询:找到目标的“地图”服务调用:请求与响应的旅程Binder驱动的幕后功劳为什么Binder这么快?第三章:Binder在系统架构中的角色Activity:界面背后的通信枢纽Binder的角色实例分析Service:后台任务的跨进程支柱Bi</div>
                    </li>
                    <li><a href="/article/1950197387460931584.htm"
                           title="基于DeepSeek的下一代大型游戏开发革命:架构、核心技术与项目管理实践" target="_blank">基于DeepSeek的下一代大型游戏开发革命:架构、核心技术与项目管理实践</a>
                        <span class="text-muted">Liudef06小白</span>
<a class="tag" taget="_blank" href="/search/%E7%89%B9%E6%AE%8A%E4%B8%93%E6%A0%8F/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/AIGC/1.htm">AIGC</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/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/deepseek/1.htm">deepseek</a>
                        <div>基于DeepSeek的下一代大型游戏开发革命:架构、核心技术与项目管理实践DeepSeek大模型正重塑游戏开发范式,本文将深入解析如何利用这一革命性技术构建下一代大型游戏,涵盖从架构设计到项目管理的全流程实践。目录DeepSeek游戏引擎核心架构1.1神经符号系统融合架构1.2动态世界生成引擎智能NPC与剧情系统2.1角色人格建模技术2.2动态叙事生成算法大型项目管理体系3.1敏捷-AI混合开发流</div>
                    </li>
                    <li><a href="/article/1950197388496924672.htm"
                           title="魔搭平台实战:手把手教你训练SDXL模型,解锁AI绘画新纪元" target="_blank">魔搭平台实战:手把手教你训练SDXL模型,解锁AI绘画新纪元</a>
                        <span class="text-muted">Liudef06小白</span>
<a class="tag" taget="_blank" href="/search/%E7%89%B9%E6%AE%8A%E4%B8%93%E6%A0%8F/1.htm">特殊专栏</a><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/AI%E4%BD%9C%E7%94%BB/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><a class="tag" taget="_blank" href="/search/AIGC/1.htm">AIGC</a>
                        <div>魔搭平台实战:手把手教你训练SDXL模型,解锁AI绘画新纪元随着多模态AI技术的爆发式发展,StableDiffusionXL(SDXL)等文生图模型正在彻底重塑创意产业工作流。本文将深入解析如何在魔搭平台高效训练SDXL模型,并探讨AI绘画技术对设计行业的革命性影响。一、SDXL模型架构解析1.1双文本编码器设计SDXL采用双文本编码器架构,显著提升提示词理解能力:#SDXL文本编码器结构示意c</div>
                    </li>
                    <li><a href="/article/1950193733681082368.htm"
                           title="基于Python的AI健康助手:开发与部署全攻略" target="_blank">基于Python的AI健康助手:开发与部署全攻略</a>
                        <span class="text-muted">AI算力网络与通信</span>
<a class="tag" taget="_blank" href="/search/AI%E7%AE%97%E5%8A%9B%E7%BD%91%E7%BB%9C%E4%B8%8E%E9%80%9A%E4%BF%A1%E5%8E%9F%E7%90%86/1.htm">AI算力网络与通信原理</a><a class="tag" taget="_blank" href="/search/AI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%9E%B6%E6%9E%84/1.htm">AI人工智能大数据架构</a><a class="tag" taget="_blank" href="/search/python/1.htm">python</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/%E5%BC%80%E5%8F%91%E8%AF%AD%E8%A8%80/1.htm">开发语言</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>基于Python的AI健康助手:开发与部署全攻略关键词:Python、AI健康助手、机器学习、自然语言处理、Flask、部署、健康管理摘要:本文将详细介绍如何使用Python开发一个AI健康助手,从需求分析、技术选型到核心功能实现,再到最终部署上线的完整过程。我们将使用自然语言处理技术理解用户健康咨询,通过机器学习模型提供个性化建议,并展示如何用Flask框架构建Web应用接口。文章包含大量实际代</div>
                    </li>
                    <li><a href="/article/1950193605276659712.htm"
                           title="Flutter权限插件详解:permission_handler使用指南" target="_blank">Flutter权限插件详解:permission_handler使用指南</a>
                        <span class="text-muted">AI移动开发前沿</span>
<a class="tag" taget="_blank" href="/search/AI%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%BC%80%E5%8F%91%E5%AE%9D%E5%85%B8/1.htm">AI移动端开发宝典</a><a class="tag" taget="_blank" href="/search/flutter/1.htm">flutter</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>Flutter权限插件详解:permission_handler使用指南关键词:Flutter、权限插件、permission_handler、权限管理、移动开发摘要:本文围绕Flutter开发中常用的权限插件permission_handler展开详细介绍。首先阐述了在Flutter应用开发中处理权限的背景和重要性,接着深入解析permission_handler的核心概念、架构以及工作原理,通</div>
                    </li>
                    <li><a href="/article/1950193607310897152.htm"
                           title="神经形态计算如何突破冯·诺依曼架构限制?" target="_blank">神经形态计算如何突破冯·诺依曼架构限制?</a>
                        <span class="text-muted">AI算力网络与通信</span>
<a class="tag" taget="_blank" href="/search/AI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E4%B8%8E%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%8A%80%E6%9C%AF/1.htm">AI人工智能与大数据技术</a><a class="tag" taget="_blank" href="/search/AI%E7%AE%97%E5%8A%9B%E7%BD%91%E7%BB%9C%E4%B8%8E%E9%80%9A%E4%BF%A1%E5%8E%9F%E7%90%86/1.htm">AI算力网络与通信原理</a><a class="tag" taget="_blank" href="/search/AI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD%E5%A4%A7%E6%95%B0%E6%8D%AE%E6%9E%B6%E6%9E%84/1.htm">AI人工智能大数据架构</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>神经形态计算如何突破冯·诺依曼架构限制?关键词:神经形态计算、冯·诺依曼架构、内存墙、存算一体、脉冲神经网络、类脑芯片、低功耗计算摘要:本文将从“冯·诺依曼架构的前世今生”讲起,用“图书馆管理员搬书”的生活案例类比其核心矛盾,再通过“人脑神经元工作模式”的比喻引入神经形态计算的核心原理。我们将一步步拆解冯·诺依曼架构的三大限制(内存墙、高功耗、非结构化数据处理弱),并对应解析神经形态计算的三大突破</div>
                    </li>
                    <li><a href="/article/1950192847256875008.htm"
                           title="数据中台中的数据科学工作台:Jupyter集成方案" target="_blank">数据中台中的数据科学工作台:Jupyter集成方案</a>
                        <span class="text-muted">AI大数据智能洞察</span>
<a class="tag" taget="_blank" href="/search/%E5%A4%A7%E6%95%B0%E6%8D%AE%E4%B8%8EAI%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">大数据与AI人工智能</a><a class="tag" taget="_blank" href="/search/jupyter/1.htm">jupyter</a><a class="tag" taget="_blank" href="/search/%E4%BF%A1%E6%81%AF%E5%8F%AF%E8%A7%86%E5%8C%96/1.htm">信息可视化</a><a class="tag" taget="_blank" href="/search/ide/1.htm">ide</a><a class="tag" taget="_blank" href="/search/ai/1.htm">ai</a>
                        <div>数据中台中的数据科学工作台:Jupyter集成方案关键词:数据中台、数据科学工作台、JupyterNotebook、数据科学、机器学习、数据可视化、协作开发摘要:本文深入探讨了在数据中台架构中集成JupyterNotebook作为数据科学工作台的完整解决方案。我们将从数据中台的基本概念出发,详细分析Jupyter在数据科学工作流中的核心作用,介绍多种集成方案和技术实现细节,并通过实际案例展示如何构</div>
                    </li>
                    <li><a href="/article/1950190326673108992.htm"
                           title="Spark SQL架构及高级用法" target="_blank">Spark SQL架构及高级用法</a>
                        <span class="text-muted">Aurora_NeAr</span>
<a class="tag" taget="_blank" href="/search/spark/1.htm">spark</a><a class="tag" taget="_blank" href="/search/sql/1.htm">sql</a><a class="tag" taget="_blank" href="/search/%E6%9E%B6%E6%9E%84/1.htm">架构</a>
                        <div>SparkSQL架构概述架构核心组件API层(用户接口)输入方式:SQL查询;DataFrame/DatasetAPI。统一性:所有接口最终转换为逻辑计划树(LogicalPlan),进入优化流程。编译器层(Catalyst优化器)核心引擎:基于规则的优化器(Rule-BasedOptimizer,RBO)与成本优化器(Cost-BasedOptimizer,CBO)。处理流程:阶段输入输出关键动</div>
                    </li>
                    <li><a href="/article/1950186798126788608.htm"
                           title="【三桥君】MCP中台,究竟如何实现多模型、多渠道、多环境的统一管控?如何以MCP为核心设计AI应用架构?" target="_blank">【三桥君】MCP中台,究竟如何实现多模型、多渠道、多环境的统一管控?如何以MCP为核心设计AI应用架构?</a>
                        <span class="text-muted">三桥君</span>
<a class="tag" taget="_blank" href="/search/%E3%80%8A%E4%B8%89%E6%A1%A5%E5%90%9B/1.htm">《三桥君</a><a class="tag" taget="_blank" href="/search/MCP%E8%90%BD%E5%9C%B0%E6%96%B9%E6%B3%95%E8%AE%BA%E3%80%8B/1.htm">MCP落地方法论》</a><a class="tag" taget="_blank" href="/search/%E3%80%8A%E4%B8%89%E6%A1%A5%E5%90%9B/1.htm">《三桥君</a><a class="tag" taget="_blank" href="/search/AI%E5%A4%A7%E6%A8%A1%E5%9E%8B%E8%90%BD%E5%9C%B0%E6%96%B9%E6%B3%95%E8%AE%BA%E3%80%8B/1.htm">AI大模型落地方法论》</a><a class="tag" taget="_blank" href="/search/%23/1.htm">#</a><a class="tag" taget="_blank" href="/search/%E3%80%8A%E4%B8%89%E6%A1%A5%E5%90%9B/1.htm">《三桥君</a><a class="tag" taget="_blank" href="/search/AI%E4%BA%A7%E5%93%81%E6%96%B9%E6%B3%95%E8%AE%BA%E3%80%8B/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><a class="tag" taget="_blank" href="/search/AI%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86/1.htm">AI产品经理</a><a class="tag" taget="_blank" href="/search/MCP/1.htm">MCP</a><a class="tag" taget="_blank" href="/search/API/1.htm">API</a><a class="tag" taget="_blank" href="/search/%E4%B8%89%E6%A1%A5%E5%90%9B/1.htm">三桥君</a><a class="tag" taget="_blank" href="/search/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84/1.htm">系统架构</a><a class="tag" taget="_blank" href="/search/llama/1.htm">llama</a>
                        <div>你好,我是✨三桥君✨本文介绍>>一、引言随着人工智能技术的快速发展,越来越多的企业开始引入大语言模型(LLM)以提升用户体验和运营效率。然而,如何高效、稳定地将这些AI能力落地到生产环境呢?传统的系统架构往往难以应对AI应用的高并发、低延迟和灵活扩展需求,因此,从整体架构角度设计AI应用架构显得尤为重要。本文三桥君将深入探讨以MCP为核心的AI应用架构,并分析多种部署方式的优劣势,为企业在AI落地</div>
                    </li>
                    <li><a href="/article/1950185537319006208.htm"
                           title="新手如何通过github pages静态网站托管搭建个人网站和项目站点" target="_blank">新手如何通过github pages静态网站托管搭建个人网站和项目站点</a>
                        <span class="text-muted">vvandre</span>
<a class="tag" taget="_blank" href="/search/Web%E6%8A%80%E6%9C%AF/1.htm">Web技术</a><a class="tag" taget="_blank" href="/search/github/1.htm">github</a>
                        <div>一、githubpages静态网站托管介绍githubpages它是一个免费快捷的静态网站托管服务。对比传统建站,它有哪些优点呢?在传统方式中,首先要租用服务器,服务器上需要运行外部程序,还需要再购买域名,要配置SSL证书,最后还要配置DNS,将域名解析到服务器。这一套繁琐操作,基本上就把小白劝退了。graphTDA[租用服务器]-->B[部署Web应用(运行外部程序,如Nginx)]B-->C[</div>
                    </li>
                    <li><a href="/article/1950185411020124160.htm"
                           title="mac os 10.9 mysql_MAC OSX 10.9 apache php mysql 环境配置" target="_blank">mac os 10.9 mysql_MAC OSX 10.9 apache php mysql 环境配置</a>
                        <span class="text-muted">AY05</span>
<a class="tag" taget="_blank" href="/search/mac/1.htm">mac</a><a class="tag" taget="_blank" href="/search/os/1.htm">os</a><a class="tag" taget="_blank" href="/search/10.9/1.htm">10.9</a><a class="tag" taget="_blank" href="/search/mysql/1.htm">mysql</a>
                        <div>#终端内运行sudoapachectlstart#启动Apachesudoapachectlrestart#重启Apachesudoapachectlstop#停止Apache#配置Apachesudovi/private/etc/apache2/httpd.conf#将里面的这一行去掉前面的##LoadModulephp5_modulelibexec/apache2/libphp5.so#配置P</div>
                    </li>
                    <li><a href="/article/1950181882679324672.htm"
                           title="深入理解卷积神经网络(CNN)与循环神经网络(RNN)" target="_blank">深入理解卷积神经网络(CNN)与循环神经网络(RNN)</a>
                        <span class="text-muted">CodeJourney.</span>
<a class="tag" taget="_blank" href="/search/cnn/1.htm">cnn</a><a class="tag" taget="_blank" href="/search/rnn/1.htm">rnn</a><a class="tag" taget="_blank" href="/search/%E4%BA%BA%E5%B7%A5%E6%99%BA%E8%83%BD/1.htm">人工智能</a>
                        <div>在当今的人工智能领域,神经网络无疑是最为璀璨的明珠之一。而卷积神经网络(ConvolutionalNeuralNetworks,CNN)和循环神经网络(RecurrentNeuralNetworks,RNN)作为神经网络家族中的重要成员,各自有着独特的架构和强大的功能,广泛应用于众多领域。本文将深入探讨这两种神经网络的原理、特点以及应用场景,为对深度学习感兴趣的读者提供全面的知识讲解。一、卷积神经</div>
                    </li>
                    <li><a href="/article/1950180118609588224.htm"
                           title="HikariCP调试日志深度解析:生产环境故障排查完全指南" target="_blank">HikariCP调试日志深度解析:生产环境故障排查完全指南</a>
                        <span class="text-muted"></span>

                        <div>HikariCP调试日志深度解析:生产环境故障排查完全指南更新时间:2025年7月4日|作者:资深架构师|适用版本:HikariCP5.x+|难度等级:中高级前言在生产环境中,数据库连接池往往是系统性能的关键瓶颈。HikariCP作为当前最流行的Java连接池,其调试日志包含了丰富的运行时信息,能够帮助我们快速定位和解决各种连接池相关问题。本文将深入解析HikariCP的日志体系,提供一套完整的故</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>