- 浏览: 2546598 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (676)
- linux运维 (157)
- php (65)
- mysql (78)
- nginx (27)
- apche (18)
- framework (6)
- windows (9)
- IDE工具 (23)
- struts2 (7)
- java (13)
- 移动互联网 (14)
- memcache redis (23)
- shell基础/命令/语法 (37)
- shell (50)
- puppet (4)
- C (11)
- python (9)
- 产品经理 (27)
- Sphinx (4)
- svn (12)
- 设计构建 (12)
- 项目管理 (44)
- SEO (1)
- 网站架构 (26)
- 审时度势 (42)
- 网络 (14)
- 激发事业[书&视频] (81)
- 其它 (12)
- 摄影 (8)
- android (21)
最新评论
-
zhongmin2012:
原文的书在哪里
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
renzhengzhi:
你好,请问个问题,从master同步数据到slave的时候,s ...
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
ibc789:
你好,看了你的文章,我想请教个问题, 我在用 redis的时候 ...
redis 的两种持久化方式及原理 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器 -
iijjll:
写得非常好
数据库水平切分的实现原理解析---分库,分表,主从,集群,负载均衡器
APC主要有两个作用,一是将php的编译缓存保存在共享内存中,简单理解就是使用了APC以后,省去了需要每次将 PHP源代码编译为PHP Opcode的时间,提高了性能,只要下次PHP源代码没有任何修改,则就不需要重新编译了。另一方面的作用是类似Memcached的功能,APC是将数据保存到共享内存中,Memcached也是将数据保存在内存中,不过Memcached支持分布式,而APC不支持分布式。
1.安装APC
从http://pecl.php.net/package/apc找到最新的apc稳定版本
[root@CentOS_Test_Server software]# wget http://pecl.php.net/get/APC-3.0.19.tgz
--17:47:42-- http://pecl.php.net/get/APC-3.0.19.tgz
Resolving pecl.php.net... 216.92.131.66
Connecting to pecl.php.net|216.92.131.66|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 115735 (113K) [application/octet-stream]
Saving to: `APC-3.0.19.tgz'
100%[=====================================================================================>] 115,735 50.1K/s in 2.3s
17:47:48 (50.1 KB/s) - `APC-3.0.19.tgz' saved [115735/115735]
[root@CentOS_Test_Server software]# tar xzvf APC-3.0.19.tgz
[root@CentOS_Test_Server APC-3.0.19]# cd APC-3.0.19
[root@CentOS_Test_Server APC-3.0.19]# /usr/local/webserver/php/bin/phpize
Configuring for:
PHP Api Version: 20041225
Zend Module Api No: 20060613
Zend Extension Api No: 220060519
./configure --enable-apc-mmap --enable-filehits --enable-apc
make
make install
**********************************************
--enable-filehits主要用于函数apc_cache_info中,说明如下
array apc_cache_info ([ string $cache_type [, bool $limited=false ]] )
cache_type
If cache_type is "user", information about the user cache will be returned.
If cache_type is "filehits", information about which files have been served from the bytecode cache for the current request will be returned. This feature must be enabled at compile time using --enable-filehits.
If an invalid or no cache_type is specified, information about the system cache (cached files) will be returned.
**********************************************
[root@CentOS_Test_Server APC-3.0.19]# make install
Installing shared extensions: /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/
apc.so文件已经生成
[root@CentOS_Test_Server APC-3.0.19]# ll /usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/
total 4072
-rwxr-xr-x 1 root root 416983 Sep 24 18:00 apc.so
-rwxr-xr-x 1 root root 172209 May 17 19:07 db4.so
-rwxr-xr-x 1 root root 517843 Apr 28 20:55 eaccelerator.so
-rwxr-xr-x 1 root root 748762 Jul 22 03:30 imagick.so
-rwxr-xr-x 1 root root 185627 Apr 28 20:38 memcache.so
-rwxr-xr-x 1 root root 118580 Apr 28 22:23 pdo_mysql.so
-rwxr-xr-x 1 root root 1308827 Jul 8 19:10 xapian.so
-rwxr-xr-x 1 root root 620251 Aug 5 03:41 xdebug.so
2.APC的相关配置
相关配置
---------------------------------
vi /usr/local/webserver/php/etc/php.ini,加入如下的一行
extension = "apc.so"
然后执行php -m | grep apc,发现已经出现apc模块了,证明apc已经生效了
[root@CentOS_Test_Server APC-3.0.19]# php -m | grep apc
apc
上面只是命令行生效了,为了让web服务器也生效,必须要重启php-fpm(我的环境是Nginx+fastcgi方式执行的php)
[root@CentOS_Test_Server APC-3.0.19]# /usr/local/webserver/php/sbin/php-fpm restart
Shutting down php_fpm . done
Starting php_fpm done
vi index.php,输入如下的内容
<?php
phpinfo()
?>
在浏览器执行index.php即可看到模块apc已经生效
下面的输出是在php.ini中没有加任何apc的配置时的输出值
apc
APC Support enabled
Version 3.0.19
MMAP Support Enabled
MMAP File Mask /tmp/apc.wyt8Ah
Locking type pthread mutex Locks
Revision $Revision: 3.154.2.5 $
Build Date Sep 25 2009 02:13:20
Directive Local Value Master Value
apc.cache_by_default On On
apc.coredump_unmap Off Off
apc.enable_cli Off Off
apc.enabled On On
apc.file_update_protection 2 2
apc.filters no value no value
apc.gc_ttl 3600 3600
apc.include_once_override Off Off
apc.max_file_size 1m 1m
apc.mmap_file_mask /tmp/apc.wyt8Ah /tmp/apc.wyt8Ah
apc.num_files_hint 1000 1000
apc.report_autofilter Off Off
apc.rfc1867 Off Off
apc.rfc1867_freq 0 0
apc.rfc1867_name APC_UPLOAD_PROGRESS APC_UPLOAD_PROGRESS
apc.rfc1867_prefix upload_ upload_
apc.shm_segments 1 1
apc.shm_size 64 64
apc.slam_defense 0 0
apc.stat Off Off
apc.stat_ctime Off Off
apc.ttl 7200 7200
apc.user_entries_hint 4096 4096
apc.user_ttl 7200 7200
apc.write_lock On On
另外apc可以在php.ini文件中进行相关的配置,详细的配置可以看apc的配置与测试
或者可以查看php官方的英文配置说明http://cn.php.net/manual/en/apc.configuration.php
我在这儿引用一下几个比较关键的配置
apc.cache_by_default = on
;sys
; 是否默认对所有文件启用缓冲。
; 若设为off并与以加号开头的apc.filters指令一起用,则文件仅在匹配过滤器时才被缓存。
apc.enable_cli = off
;sys
; 是否为cli版本启用apc功能,仅用于测试和调试目的才打开此指令。
apc.enabled = on
; 是否启用apc,如果apc被静态编译进php又想禁用它,这是唯一的办法。
;apc.filters =
;sys
; 一个以逗号分隔的posix扩展正则表达式列表。
; 如果源文件名与任意一个模式匹配,则该文件不被缓存。
; 注意,用来匹配的文件名是传递给include/require的文件名,而不是绝对路径。
; 如果正则表达式的第一个字符是"+"则意味着任何匹配表达式的文件会被缓存,
; 如果第一个字符是"-"则任何匹配项都不会被缓存。"-"是默认值,可以省略掉。
apc.max_file_size = 1m
;sys
; 禁止大于此尺寸的文件被缓存。
apc.shm_segments = 1
;sys
; 为编译器缓冲区分配的共享内存块数量(建议值为1)。
; 如果apc耗尽了共享内存,并且已将apc.shm_size指令设为系统允许的最大值,
; 你可以尝试增大此值。
apc.shm_size = 30
;sys
; 每个共享内存块的大小(以mb为单位,建议值为128~256)。
; 有些系统(包括大多数bsd变种)默认的共享内存块大小非常少。
apc.stat = on
;sys
; 是否启用脚本更新检查。
; 改变这个指令值要非常小心。
; 默认值 on 表示apc在每次请求脚本时都检查脚本是否被更新,
; 如果被更新则自动重新编译和缓存编译后的内容。但这样做对性能有不利影响。
; 如果设为 off 则表示不进行检查,从而使性能得到大幅提高。
; 但是为了使更新的内容生效,你必须重启web服务器。
; 这个指令对于include/require的文件同样有效。但是需要注意的是,
; 如果你使用的是相对路径,apc就必须在每一次include/require时都进行检查以定位文件。
; 而使用绝对路径则可以跳过检查,所以鼓励你使用绝对路径进行include/require操作。
apc.localcache = Off
;SYS
; 是否使用非锁定本地进程shadow-cache ,它可以减少了向缓冲区写入时锁之间的竞争。
apc.localcache.size = 512
;SYS
; 本地进程的shadow-cache,应当设为一个足够大的值,大约相当于num_files_hint的一半。
apc.write_lock = On
;SYS
; 是否启用写入锁。
; 在非常繁忙的服务器上,无论是启动服务还是修改文件,
; 都可能由于多个进程企图同时缓存一个文件而导致竞争条件。
; 启用该指令可以避免竞争条件的出现。
apc.num_files_hint = 1000
;SYS
; Web服务器上可能被包含或被请求的不同脚本源代码文件的大致数量(建议值为1024~4096)。
; 如果你不能确定,则设为 0 ;此设定主要用于拥有数千个源文件的站点。
vi /usr/local/webserver/php/etc/php.ini,加入如下的几行
[APC]
apc.cache_by_default = on
apc.enabled = on
apc.max_file_size = 1m
apc.shm_segments = 3
apc.shm_size = 50
apc.stat = on
apc.write_lock = On
然后重启php-fpm进程
在php.ini中已经修改的配置在phpinfo页面中已经生效了
apc.shm_segments 3 3
apc.shm_size 50 50
同时发现了一个问题,发现apc与eAccelerator冲突,如果在php中同时安装了apc与 eAccelerator,则apc的缓存文件的功能不会生效(或者你安装了其它的php加速器如xCache,Zend Optimizer,如果apc的系统缓存没有生效,则试着禁止这些看看效果)
;[eaccelerator]
;zend_extension="/usr/local/webserver/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
;eaccelerator.shm_size="128"
;eaccelerator.cache_dir="/usr/local/webserver/eaccelerator_cache"
;eaccelerator.enable="1"
;eaccelerator.optimizer="1"
;eaccelerator.check_mtime="1"
;eaccelerator.debug="0"
;eaccelerator.filter=""
;eaccelerator.shm_max="0"
;eaccelerator.shm_ttl="300"
;eaccelerator.shm_prune_period="120"
;eaccelerator.shm_only="0"
;eaccelerator.compress="1"
;eaccelerator.compress_level="9"
3.测试APC缓存用户数据的功能(类似于Memcached)
在apc的安装目录里面有一个apc.php文件,拷贝它到Web服务器所在目录下,这个程序可以监控apc的各种状态数据
[root@CentOS_Test_Server www]# cd /home/software/APC-3.0.19
[root@CentOS_Test_Server APC-3.0.19]# cp apc.php /home/htdocs/www/
vi apc1.php,输入如下的内容
<?php
define("LINE", "<br />\n");
$apc_cached = ini_get('apc.cache_by_default');
echo "aa:$apc_cached";
echo $apc_cached ? 'apc cache file' : 'apc not cache file';
echo LINE;
function microtime_float()
{
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$time_start = microtime_float();
$key = 'name';
$value = 'caihuafeng';
//调用apc_add时对应的key已经存在,则不会覆盖,函数的返回值是false
$ret = apc_add($key, $value);
echo "ret:$ret<br />\n";
$ret2 = apc_add($key, $value);
echo "ret2:$ret2<br />\n";
//调用apc_store时如果对应的key已经存在,则直接覆盖
$ret3 = apc_store($key, $value);
echo "ret3:$ret3<br />\n";
for ($i = 0; $i < 100; $i++) {
apc_store($i, $i);
}
//删除指定的键对应的内容
//apc_delete($key);
$cache_type = $_REQUEST['cache_type'] ? $_REQUEST['cache_type'] : 'user';
echo "cache_type:", $cache_type, LINE;
/*
array apc_cache_info ([ string $cache_type [, bool $limited=false ]] )
Retrieves cached information and meta-data from APC's data store.
cache_type
If cache_type is "user", information about the user cache will be returned.
If cache_type is "filehits", information about which files have been served from the bytecode cache for the current request will be returned. This feature must be enabled at compile time using --enable-filehits.
If an invalid or no cache_type is specified, information about the system cache (cached files) will be returned.
*/
echo 'apc_cache_info';
var_dump(apc_cache_info($cache_type));
/*
bool apc_clear_cache ([ string $cache_type ] )
Clears the user/system cache.
cache_type
If cache_type is "user", the user cache will be cleared; otherwise, the system cache (cached files) will be cleared.
*/
//apc_clear_cache($cache_type);
echo 'name:' . apc_fetch('name') . "<br />\n";
echo "<hr />\n";
$constants = array(
'ONE' => 1,
'TWO' => 2,
'THREE' => 3,
);
apc_define_constants('numbers', $constants);
echo 'one, two, three:', ONE, TWO, THREE, LINE;
$constants = array(
'ONE' => 1,
'TWO' => 2,
'THREE' => 3,
);
apc_define_constants('numbers', $constants);
apc_load_constants('numbers');
echo 'one, two, three:', ONE, TWO, THREE, LINE;
/*
array apc_sma_info ([ bool $limited=false ] )
Retrieves APC's Shared Memory Allocation information.
limited
When set to FALSE (default) apc_sma_info() will return a detailed information about each segment.
*/
echo 'apc_sam_info';
var_dump(apc_sma_info(false));
echo 'Request time:', $_SERVER['REQUEST_TIME'], LINE;
$time_end = microtime_float();
$time = $time_end - $time_start;
echo "Spend time in $time seconds", LINE;
?>
输出结果就不在此写出来了
vi apc2.php,输入如下的内容
<?php
define("LINE", "<br />\n");
echo 'name:' . apc_fetch('name') . "<br />\n";
?>
输出:name:caihuafeng
我们看到apc2.php文件中只有apc_fetch,而没有apc_add或apc_store的操作,说明数据已经保存到共享内存中去了
lsof | grep apc时有如下的输出,不止下面这些;通过浏览器执行完程序你会发现,/tmp/apc*这些文件根本上是不存在的,可能是进程执行完了以后就立即删除了,DEL应该就是表示删除的意思
php-cgi 29349 www DEL REG 3,1 32854 /tmp/apc.khQ6VN
php-cgi 29350 www mem REG 3,1 416983 224539 /usr/local/webserver/php/lib/php/extensions/no-debug-n
on-zts-20060613/apc.so
php-cgi 29350 www DEL REG 3,1 32854 /tmp/apc.khQ6VN
php-cgi 29351 www mem REG 3,1 416983 224539 /usr/local/webserver/php/lib/php/extensions/no-debug-n
on-zts-20060613/apc.so
php-cgi 29351 www DEL REG 3,1 32854 /tmp/apc.khQ6VN
php-cgi 29352 www mem REG 3,1 416983 224539 /usr/local/webserver/php/lib/php/extensions/no-debug-n
on-zts-20060613/apc.so
[root@CentOS_Test_Server etc]# ls /tmp/
gconfd-root keyring-lJxrr7 keyring-vcAy69 keyring-Z3N4md mysql.sock VMwareDnD
keyring-9zOctR keyring-mPfuTA keyring-vD5JCr keyring-zcyUaJ scim-helper-manager-socket-root vmware-root
keyring-ayJSKz keyring-T5LSOn keyring-vYf2v8 mapping-root scim-panel-socket:0-root xdebug
keyring-AZF1bf keyring-T6jLxb keyring-x3Jeeh memcached.pid scim-socket-frontend-root
keyring-fkCrUe keyring-tMima3 keyring-XhEixk mysqlslow.log virtual-root.xJQE1h
[root@CentOS_Test_Server etc]# ls /tmp/ | grep apc.*
通过ipcs命令查看共享内存的内容也没有什么变化,这就有点奇怪了,这个问题以后再来研究
[root@CentOS_Test_Server etc]# ipcs
------ Shared Memory Segments --------
key shmid owner perms bytes nattch status
0x00000000 32768 gdm 600 393216 2 dest
------ Semaphore Arrays --------
key semid owner perms nsems
------ Message Queues --------
key msqid owner perms used-bytes messages
4.测试APC缓存系统数据的功能(也就是缓存文件的编译结果)
a.启动缓存系统数据的功能
[APC]
apc.cache_by_default = On
apc.enabled = On
apc.max_file_size = 1m
apc.shm_segments = 1
apc.shm_size = 64
apc.stat = Off
apc.write_lock = On
apc.mmap_file_mask = /tmp/apc.XXXXXX
apc.ttl = 7200
apc.user_ttl = 7200
apc.gc_ttl=3600
apc.num_filters_hint = 1024
apc1.php在启用apc功能的时候的请求时间
apc enabled
Spend time in 0.0270249843597 seconds
Spend time in 0.0296368598938 seconds
Spend time in 0.0324420928955 seconds
Spend time in 0.0270788669586 seconds
Spend time in 0.0330448150635 seconds
APC编译数据缓存统计,index.php因为是第一次访问,因此Hits为0,其它的文件均不是第一次访问,因此Hits均大于0。
b.禁止缓存系统数据的功能
将apc.cache_by_default的值设为Off,其它的值不变
为了保证测试结果的准确,将php-fpm及Web服务器nginx均重启
[root@CentOS_Test_Server etc]# ../sbin/php-fpm restart
Shutting down php_fpm done
Starting php_fpm done
[root@CentOS_Test_Server etc]# killall nginx
[root@CentOS_Test_Server etc]# ../../nginx/sbin/nginx
此时查看apc.php的输出结果中的值,说明此时共享内存中没有缓存任何数据
File Cache Information
Cached Files 0 ( 0.0 Bytes)
Hits 1
Misses 0
User Cache Information
Cached Variables 0 ( 0.0 Bytes)
Hits 0
Misses 0
再次测试apc1.php的程序执行时间,当然也有可能禁止了系统缓存以后程序执行时间比启动系统缓存以后程序执行时间还要短,当然这里面有其它的因素影响,比如恰好是服务器最繁忙的时候,那我们来计算一下平均值,这样可能更加准确一点,看看下面的数据我们就知道 APC的系统缓存起作用了,如果php程序的业务逻辑更加复杂,估计效果更加明显。
apc disabled
Spend time in 0.02969789505 seconds
Spend time in 0.127185106277 seconds(比启用系统缓存时5次测试的任何一次都要长)
Spend time in 0.0369350910187 seconds(比启用系统缓存时5次测试的任何一次都要长)
Spend time in 0.0839560031891 seconds(比启用系统缓存时5次测试的任何一次都要长)
Spend time in 0.0326659679413 seconds(比启用系统缓存时5次测试的任何一次都要长)
至少有一点,现在看apc.php中的统计信息也表明系统缓存生效了
File Cache Information
Cached Files 2 (379.5 KBytes)
Hits 52
Misses 2
Cached Variables 102 ( 9.6 KBytes)
Hits 16
Misses 0
5.测试系统数据缓存的其它方法
测试apc的系统数据缓存是否生效还有一个方法,那就是修改php的源代码
比如apc1.php中开始的几行原来为
$apc_cached = ini_get('apc.cache_by_default');
echo $apc_cached ? 'apc cache file' : 'apc not cache file';
现改为
$apc_cached = ini_get('apc.cache_by_default');
echo "New added:$apc_cached";
echo $apc_cached ? 'apc cache file' : 'apc not cache file';
按ctrl+f5强制刷新页面,页面的输出中完全没有new added的字样,这就可以说明apc的系统缓存已经生效了(也就是执行的是编译结果的缓存)
apc not cache file
ret:
ret2:
ret3:1
cache_type:user
apc_cache_info
......
......
有的人在这里可能会有疑问了,要是我的php程序修改了,而apc的系统缓存又在生效中,那我要看最新的执行结果怎么办?
有如下的几种方法:
a.用apc_compile_file编译修改过的文件,我们可以参考一下facebook的代码
$path = '/path/to/source';
$exclude = $path.'/www/admin/';
$expr = '.*\\.php';
$files = split(' ', exec("find -L $path -regex '$expr'
| grep -v '$exclude' | xargs"));
// prime php files
foreach($files as $file) {
apc_compile_file($file);
}
b.重启web服务器后所有的用户数据缓存及系统数据缓存都将失效,这样我们通过浏览器访问php程序时当然是最新的php程序返回的结果。
c.将apc.stat设为on,表示apc在每次请求脚本时都检查脚本是否被更新,如果被更新则自动重新编译和缓存编译后的内容。但这样做对性能有不利影响。
d.如果apc.ttl的值不为0(比如3600,表示1小时),则在web服务器不重启的情况下,则只能等待缓存失效了,如果要求比较及时,就只能采用方法a。提示php.ini中与ttl有关的配置只是对系统缓存有效,而用户缓存是通过函数apc_store或apc_add中的第三个参数ttl来控制的。
apc.ttl = 0
;sys
; 缓存条目在缓冲区中允许逗留的秒数。0 表示永不超时。建议值为7200~36000。
; 设为 0 意味着缓冲区有可能被旧的缓存条目填满,从而导致无法缓存新条目。
apc.user_ttl = 0
;sys
; 类似于apc.ttl,只是针对每个用户而言,建议值为7200~36000。
; 设为 0 意味着缓冲区有可能被旧的缓存条目填满,从而导致无法缓存新条目。
apc.gc_ttl = 3600
;sys
; 缓存条目在垃圾回收表中能够存在的秒数。
; 此值提供了一个安全措施,即使一个服务器进程在执行缓存的源文件时崩溃,
; 而且该源文件已经被修改,为旧版本分配的内存也不会被回收,直到达到此ttl值为止。
; 设为零将禁用此特性。
个人认为比较好的方法是a(此时将apc.stat设为off),如果有哪些php文件修改,就重新编译它,如果有多台Web服务器,则通过rsync之类的软件自动同步即可,如果要求比较及时的话,则只能手动通过scp之类的命令同步了,因为rsync多少有些延迟。
参考:
http://cn.php.net/manual/en/apc.configuration.php
http://hi.baidu.com/tim_today/blog/item/60743580c6e10cde9123d98a.html
http://pecl.php.net/package/apc
http://blog.csdn.net/bmywindy/archive/2009/08/03/4404033.aspx
http://topic.csdn.net/u/20080117/15/89b2a4c5-9bcb-4660-8ae2-87f410d16ffd.html
发表评论
-
设置sudo为不需要密码
2015-04-17 09:04 10520有时候我们只需要执 ... -
haproxy 安装配置和负载实例
2015-03-27 11:49 11539一、环境说明实验环境 OS CentOS5.4 192.1 ... -
/dev/mapper/VolGroup00-LogVol00 100% 如何处理
2015-03-03 10:51 8228服务器磁盘跑满了, 命令查看 如下 [root@lo ... -
Tsar开源:淘宝内部大量使用的系统监控工具
2014-08-07 09:51 980Tsar是淘宝的一个用来收集服务器系统和应用信息的采集报告 ... -
wamp 升级php apache mysql
2014-02-18 14:30 1203wamp对于日常开发来说会增添非常大的方便 但是对于集成 ... -
Linux运维常用命令 (转载)
2013-01-31 10:23 25341 删除0字节文件find-type f - ... -
linux恢复 rm -rf 删除的文件:extundelete
2013-01-24 15:47 8923http://blog.csdn.net/pang6013 ... -
网站排障分析常用的命令
2013-01-21 18:17 1406------------------------------- ... -
迁移vmware服务器后Device eth0 does not seem to be present
2013-01-21 10:58 2257用VMware 安装 linux 6.0 ... -
LoadRunner如何监控Linux系统资源 : rpc.rstatd
2012-12-17 14:49 10311一 简述:LoadRunner监控Linux资源时弹出如下错误 ... -
僵尸Z进程和D进程
2012-12-10 16:47 13162-------------- 1 关于ZOMBIE进 ... -
Unix操作系统硬链接与符号链接的区别
2012-12-10 16:08 2029Unix操作系统有很多值得 ... -
nagios配置参数详解
2012-12-04 14:12 9459# Nagios return codes#定 ... -
nagios自定义监控nginx php和ip_conn
2012-12-03 17:57 3176自定义ip_conn.sh :http://zhume ... -
【汇总】shell show收藏
2012-11-29 14:03 1295================== shell从文本取对应的 ... -
Kickstart+PXE+DHCP+TFTP+NFS自动安装Centos5
2012-11-29 11:34 1611http://5ydycm.blog.51cto.com/11 ... -
haproxy+keepalived高可用负载均衡(七层)
2012-11-29 10:36 4014HAproxy是一款基于TCP( ... -
LVS+Keepalived
2012-11-29 10:10 1740http://www.linuxvirtualserver.o ... -
haproxy & LVS*(keepalived和heartbeat) & ng的比较
2012-11-29 10:04 7608http://network.51cto.com/art/ ... -
运维架构师-并不遥远的彼岸
2012-11-28 17:45 1742在百度里搜索运维架构师,你会发现招聘的职位还不少并且月薪、年 ...
相关推荐
2025职业教育知识竞赛题库(含答案).pptx
"SOA海鸥算法优化下的KELM核极限学习机分类MATLAB代码详解:传感器故障诊断数据集应用与本地EXCEL数据读取功能",(SOA-KELM)海鸥算法SOA优化KELM核极限学习机分类MATLAB代码 代码注释清楚。 main为运行主程序,可以读取本地EXCEL数据。 很方便,容易上手。 (以传感器故障诊断数据集为例) ,核心关键词:SOA-KELM;海鸥算法优化;核极限学习机分类;MATLAB代码;代码注释清楚;main程序;读取本地EXCEL数据;传感器故障诊断数据集。,SOA-KELM分类算法MATLAB代码:海鸥优化核极限学习机,轻松上手,读取EXCEL数据集进行传感器故障诊断
内容概要:本文由世界经济论坛与Capgemini联合发布,主要阐述了AI代理从简单程序演变为复杂自主系统的进程,强调了它们在现代各行业如医疗保健、教育及金融服务等方面所发挥的作用,并讨论了其潜在收益以及伴随的风险和挑战。文中详细介绍了AI代理的发展历程、核心技术趋势(深度学习、强化学习)、多种类型的AI代理及其系统架构,同时对未来的发展方向——多智能体系统进行了展望,探讨了提高生产力、优化资源配置的新机会。 适合人群:对人工智能感兴趣的各界人士,尤其是关注技术创新对企业和社会长远影响的决策者和技术领导者,如商业领袖、政府官员及其他利益相关方。 使用场景及目标:①帮助政策制定者理解AI代理的功能和应用场景;②为企业管理者提供关于部署和管理AI系统的指导;③为研究者指明未来科研方向并探讨伦理和社会责任等问题;④为技术人员揭示当前最先进技术和最佳实践案例。 其他说明:文中还提到了随着更加先进的AI代理不断涌现,确保安全性和有效监管将是未来发展的重要议题之一。此外,跨行业的共识对于将AI代理顺利整合到各个部门至关重要。文章指出需要建立稳健治理机制来保障AI技术健康发展并服务于公共利益最大化的目标。
2025网络安全理论知识考试题(含答案).pptx
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
基于FATFS系统的STM32F407 SD卡升级Bootloader程序:自动检测与升级流程,stm32f407 SD卡升级 bootloader程序 基于sdio fatfs系统的stm32 bootloader程序 功能简介: 本程序使用fatfs系统读取bin文件。 开机后会自动检测sd卡,检测到sd卡后,再读取固定名称的bin文件,之后会对bin文件进行首包校验,判断该升级包的起始地址是否正确,正确的话,就循环读取bin文件并写入到flash中。 完成升级。 详细流程请看流程图 ,stm32f407; SD卡升级; bootloader程序; fatfs系统读取bin文件; 检测SD卡; 首包校验; 循环写入flash。,STM32F407 SD卡升级Bootloader程序:基于SDIO FATFS系统实现自动升级功能
2025网络与信息安全技术题库及答案.doc
C# WinForm通用软件开发框架源码,基于VS2019 .NET与DevExpress 21,WebApi连接SQLServer2014数据库,互联网化数据访问模式,C# 源码 WinForm?通用软件开发框架平台源码 基于:C#Winform+ WebApi +SQLServer2014数据库 基于:VS2019.NET? DevExpress 21.2.6控件 基于:SQLServer2014?数据库 客户端通过Http访问WebApi获得json数据的模式,本系统走互联网,只需要把WebApi发布在公网即可。 说明:此框架源码除系统管理功能外,其它无源码 ,C#源码; WinForm; WebApi; SQLServer2014; VS2019.NET; DevExpress控件; 互联网模式; 系统管理功能; 发布。,C# WinForm开发框架:基于DevExpress与WebApi的通用软件平台源码
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
基于SqueezeNet迁移学习算法的滚动轴承故障诊断方法研究——在MATLAB r2021b环境下的应用与拓展至多元信号领域的研究,MATLAB环境下一种基于sqeezenet网络迁移学习的滚动轴承故障诊断方法。 算法运行环境为MATLAB r2021b,该代码展示了如何使用深度学习(迁移学习)方法对滚动轴承进行故障诊断,演示了如何将一维轴承振动信号转为二维尺度图图像并使用预训练网络应用迁移学习对轴承故障进行分类。 迁移学习显著减少了传统轴承诊断方法特征提取和特征选择所花费的时间,并在小型数据集中获得了良好的准确性。 算法可迁移至金融时间序列,地震 微震信号,机械振动信号,声发射信号,电压 电流信号,语音信号,声信号,生理信号(ECG,EEG,EMG)等信号。 ,MATLAB环境; SqueezeNet网络; 迁移学习; 滚动轴承故障诊断; 算法运行环境; 一维轴承振动信号转换; 二维尺度图图像; 特征提取和选择; 信号分析;迁移至其他类型信号 (以分号隔开),基于SqueezeNet迁移学习在MATLAB的滚动轴承故障诊断算法优化
基于弱形式PDE建模的COMSOL不相溶两相流渗流水驱油模拟研究,comsol不相溶两相流渗流模拟,水驱油,基于弱形式PDE建模,模型已验证。 ,核心关键词:comsol; 不相溶两相流; 渗流模拟; 水驱油; 弱形式PDE建模; 模型验证。,"基于弱形式PDE建模的COMSOL两相流渗流模拟:验证水驱油模型"
Tiled for Mac是一款功能强大的开源地图编辑器,适用于macOS系统。它支持正交、等距和六边形地图类型,可创建无限大小的地图,并支持多图层编辑。用户可以通过直观的界面快速添加、修改地图元素,使用像素精度放置对象,并支持图块动画和碰撞编辑。Tiled的TMX格式易于理解,支持多种插件扩展,兼容多种游戏引擎,如RPG和平台游戏。它还提供撤销/重做功能,方便用户调整和优化地图。
太阳能光伏MPPT控制蓄电池三阶段充电模型仿真说明文档(附扰动观测法仿真模型,R2015b版),充电控制器,太阳能光伏MPPT控制蓄电池充电模型。 其中,光伏MPPT控制采用扰动观测法(P&O法),蓄电池充电采用三阶段充电控制。 仿真模型附加一份仿真说明文档,便于理解和修改参数。 版本: R2015b ,充电控制器; 光伏MPPT控制; 扰动观测法(P&O法); 蓄电池充电控制; 三阶段充电控制; 仿真模型; 仿真说明文档; 版本:R2015b,"R2015b版:太阳能光伏MPPT三阶段充电控制仿真模型及说明"
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
2025医院收费员考试题题库(含答案).docx
"欧姆龙PLC编程新手宝典:标准程序案例集,包括CP1H脉冲编程与触摸屏实战应用",欧姆龙PLC程序欧姆龙案例欧姆龙标准程序 本产品适用于新手或者在校生 本程序包括有欧姆龙CP1H脉冲程序案例,威纶通触摸屏程序,电子版讲义 程序涉及方面广,适合新手入门学习,掌握了这些以后欧姆龙脉冲程序基本通吃,编程起来无压力 本程序设计到CP1H各个轴的程序编写具体用了ACC PLS2 INI等众多指令, 每个轴的程序都是单独的,包括触摸屏在内,您可以直接调用程序套到直接的程序上,只需要把地址稍微改动即可。 本程序适用于新手、自动化专业在校生学习和提高,另外额外赠送主流的CAD电气原理图纸,包含各种主流的PLC接线原理图,各种成功案例,是每个电气工程师学习和提高最必不可少的资料 ,欧姆龙PLC程序; 欧姆龙案例; 欧姆龙标准程序; 新手学习; 在校生; CP1H脉冲程序案例; 威纶通触摸屏程序; 电子版讲义; 编程指令; 程序设计; PLC接线原理图; 成功案例。,欧姆龙PLC入门宝典:从新手到专业工程师的实用指南
"基于Simulink的锂电池SOC估计模型研究:卡尔曼滤波算法的参数辨识与模型优化",锂电池SOC估计模型 simulink SOC估算卡尔曼滤波估算 SOC电池参数辨识模型10个; 卡尔曼滤波算法锂电池SOC估算估算模型15个; 卡尔曼滤波31个; ,锂电池SOC估计模型; Simulink; SOC估算; 卡尔曼滤波估算; 电池参数辨识模型; 锂电池SOC卡尔曼滤波估算模型; 卡尔曼滤波,基于Simulink的锂电池SOC估计与卡尔曼滤波算法研究
苍鹰算法优化BP神经网络参数:多输入单输出预测建模及效果展示 注:此程序为matlab编写,可直接运行出多种预测结果图与评价指标。效果图为测试数据展示,具体预测效果以个人数据为准。,苍鹰优化算法NGO优化BP神经网络的软值和阈值参数做多输入单输出的拟合预测建模。 程序内注释详细直接替数据就可以使用。 程序语言为matlab。 程序直接运行可以出拟合预测图,迭代优化图,线性拟合预测图,多个预测评价指标。 PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据为准。 2.由于每个人的数据都是独一无二的,因此无法做到可以任何人的数据直接替就可以得到自己满意的效果。 ,核心关键词: 苍鹰优化算法; NGO优化; BP神经网络; 软值和阈值参数; 多输入单输出拟合预测建模; 程序内注释; MATLAB程序语言; 拟合预测图; 迭代优化图; 线性拟合预测图; 预测评价指标。,基于苍鹰优化算法的NGO-BP神经网络模型:多输入单输出拟合预测建模与评估
项目已获导师指导并通过的高分毕业设计项目,可作为课程设计和期末大作业,下载即用无需修改,项目完整确保可以运行。 包含:项目源码、数据库脚本、软件工具等,该项目可以作为毕设、课程设计使用,前后端代码都在里面。 该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用价值。 项目都经过严格调试,确保可以运行!可以放心下载 技术组成 语言:java 开发环境:idea 数据库:MySql8.0 部署环境:Tomcat(建议用 7.x 或者 8.x 版本),maven 数据库工具:navicat
GTP4ALL的安装文件