热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:Memcached高性能内存对象缓存系统

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Memcached高性能内存对象缓存系统相关的知识,希望对你有一定的参考价值。一、Memcached概述

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Memcached高性能内存对象缓存系统相关的知识,希望对你有一定的参考价值。



一、Memcached概述





  • Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。Memcached基于一个存储键/值对的hashmap。其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信。

  • 传统数据都保存在关系型数据库管理系统中(RDBMS关系型数据库管理系统),客户端请求时会从RDBMS中读取数据并在浏览器中显示,这样当访问量过大时或集中时,导致RSBMS负担过重,数据库响应恶化,浏览器中显示延迟等严重问题

  • Memcached 是一套分布式内存对象缓存系统,主要通过缓存数据库查询结果,减少数据库访问次数,以提高动态 Web 应用的响应速度、提高可扩展性


二、Memcached缓存方式





  • 与APC等本地缓存方式不同,Memcached是分布式的,也就是说它不是本地的;它基于网络连接(当然它也可以使用localhost)方式完成服务,本身它是一个独立于应用的程序或守护进程(Daemon方式)

  • Memcached使用libevent库(程序库,封装了linux的epoll、BSD类操作系统的kqueue等事件处理功能)实现网络连接服务,理论上可以处理无限多的连接,但是它和Apache不同,它更多的时候是面向稳定的持续连接的,所以它实际的并发能力是有限制的;在保守情况下memcached的最大同时连接数为200,这和Linux线程能力有关系,当然这个数值是可以调整的

  • Memcached内存使用方式也和APC不同。APC是基于共享内存和MMAP(将一个文件或者其它对象映射进内存)的,memcachd有自己的内存分配算法和管理方式,它和共享内存没有关系,也没有共享内存的限制,通常情况下,每个memcached进程可以管理2GB的内存空间,如果需要更多的空间,可以增加进程数
    技术分享图片


1.Memcached内存算法



  • Memcached使用[slab allocation][1]机制分配和管理内存,按照预先规定的大小,将分配的内存分割成特定长度的内存块,再把尺寸相同的内存块分成组,数据在存放时,根据键值大小去匹配slab大小,找就近的slab存放


2.Memcached缓存策略



  • LRU(最近最少使用)加上到期失效策略,当在memcached内存储数据项时,可指定它在缓存的失效时间,默认为永久;当memcached服务器用完分配的内存时,失效的数据被首先替换,然后是最近未使用的数据

  • LRU中,memcached使用的是一种Lazy Expiration策略(为给定key设置生存时间,当key过期时(生存时间为 0),它会被自动删除),自己不会监控存入的key/vlue对是否过期,而是在获取key值时查看记录的时间戳,检查key/value对空间是否过期,这样可减轻服务器的负载


3.Memcached失效策略


Lazy expiration + LRU



  • Lazy expiration作用:假如所存储的数据项相当多的时候,在这时候进行监控的话,花费的代价是相当大的,所以memcached不会在过期监视上耗费过多的CPU时间,从而在性能方面也起到一定的优化作用

  • LRU:memcached会优先使用已超时的空间,但是还是会有追加信息时空间不足的状态,这时候会使用Least Recently Used(LRU)机制来分配空间,就从最近未被使用的记录中搜索,并将其空间分配给新的记录


4.Memcached分布式算法


当向memcached集群存入/取出key/value时,memcache客户端会根据一定算法计算存入那台服务器(第一步:选择服务器,第二步:存取数据)



  • 余数算法:先求得键的整数散列值,再除以服务器数量,根据余数存储那台服务器(特点:简单、高效;但是扩展性差,服务器数量变更时,几乎所有的缓存都会失效)

  • 散列算法:先计算memcached的散列值,并将其分布在0—2^32的圆上,然后用同样的方法算出存储数据键的散列值并映射至圆上,最后从数据映射到的位置开始顺顺时针查找,将数据保存在查找到的第一台服务器,如果超过2^32还是找不到,则将数据保存在第一台memcached服务器上;如果添加一台memcached服务器,则只在圆上添加的逆时针方向的第一台服务器上的键会受到影响
    一次性哈系原理


技术分享图片


添加一台服务器后


技术分享图片


三、Memcached使用场景





  • Memcached应使用在需要"分布式"场合,不需要"共享"的或服务器规模小都不适用;如果将Memcached用于向本地缓存方式使用,速度比php的APC慢几十倍

  • 一般Memcached都用于作为数据库前端Cache(减少磁盘开销、SQL解析),并且Memcached是使用内存缓存数据的,比用户直接访问数据库拥有更高的性能,那么在大型系统中,如访问数据频繁的,Memcached可大大降低数据库压力、提高效率

  • 并且Memcached不光用于数据库缓存,除了php中的资源不能存,其它的数据都能存储(字符串、数值、数组、对象、布尔值、null、二进制(图片、视频))
    注:但注意,由于Memcached使用内存缓存,而内存拥有易失性(断电数据丢失),因此Memcached不能持久保存数据

  • 那么Memcached瓶颈在哪里呢?Memcached瓶颈在于网络,由于Memcached采用"分布式",需要大量数据交换,所以网络带宽会经常满负荷



  1. Memcached不适用于PV不大的网站

  2. Memcached不适用于数据改动频繁,但数据一改动就需要入库的情况

  3. Memcached适用于数据改动频繁、查询频繁的情况

  4. Memcached适用于数据库改动不频率、查询频繁的情况


四、Memcached原理




1.Memcached无缓存



  • 客户端访问Web服务器

  • Web服务器调用Memcache客户端程序库接口,连接Memcached服务器

  • 如果Memcached没有缓存客户端所请求数据,则Memcache客户端程序将请求转发到数据库服务器

  • 数据库服务器将数据返回给Memcache客户端程序

  • Memcache客户端程序收到数据后会通过分布式算法决定将数据缓存到指定Memcached服务器,以供下次使用

  • Memcached缓存完毕后,Memcache客户端程序将数据返回给Web客户端,Web客户端再将数据返回给客户端

技术分享图片


2.Memcached有缓存



  • 客户端访问Web服务器

  • Web服务器调用Memcache客户端程序库接口,连接Memcached服务器

  • 当Memcached中缓存客户端所需数据,则Memcached将数据库返回给Memcache客户端程序

  • Memcache客户端再将数据交给Web服务器

  • Web服务器将数据返回给客户端

技术分享图片


Memcached会在内存里维护一张巨大的hash表,存储经常被读写的一些数组与文件,在Server端启动服务进程,在启动时可以指定监听的ip,自己的端口号,所使用的内存大小等几个关键参数(采用了单进程,单线程,异步I/O,基于事件 (event_based) 的服务方式)使用libevent作为事件通知实现;每个Server只是对自己的数据进行管理Client端通过指定Server端的ip地址;数据以key -->value形式,key的值通过hash进行转换,然后通过分布式算法确定对哪台Sever存储/获取数据



五、案例:LAMP+Memcached






























主机系统IP网卡软件
LAMP+Memcache(Client)Centos 6.7 64Bit192.168.1.10vmnet1LAMP、memcache
Memcached(Server)Centos 6.7 64Bit192.168.1.100vmnet1libevent memcached

Memcached(Server)


1.环境准备(Memcached)

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 //网卡名称
TYPE=Ethernet //网卡类型为以太网
OnBOOT=yes //开机自启该网卡
NM_COnTROLLED=no //关闭NetworkManager
BOOTPROTO=static //网卡设置为静态方式
IPADDR=192.168.1.100 //IP地址配置
NETMASK=255.255.255.0 //子网掩码配置

/etc/init.d/network restart //重启网络服务

2.安装memcached(Memcached)

安装libevent
libevent是memcached 所依赖的异步时间通知库,作为Memcached的依赖需要先完成安装

tar -zxvf libevent-1.4.9-stable.tar.gz -C /usr/src/

cd /usr/src/libevent-1.4.9-stable/

./configure --prefix=/usr/local/libevent

make && make install

安装Memcached

tar -zxvf memcached-1.2.6.tar.gz -C /usr/src/

cd /usr/src/memcached-1.2.6/

./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent

选项:
--with-libevent:指定libevent事件库位置

make && make install

echo "PATH=$PATH:/usr/local/memcached/bin">>/etc/profile

source /etc/profile

memcached -d -m 32m -p 11211 -u root //启动Memcached服务

参数说明:
-d:启动为守护进程
-m :分配给Memcached使用的内存数量,单位是MB,默认为64MB
-u :运行Memcached的用户,仅当作为root运行时
-l :(小写L)监听的服务器IP地址,默认为环境变量INDRR_ANY的值
-p :设置Memcached监听的端口,最好是1024以上的端口
-c :设置最大并发连接数,默认为1024
-P :设置保存Memcached的pid文件,与-d选择同时使用


注:启动过程中会出现"memcached : error while loading shared libraries: libevent-1.4.so.2: cannot open shared object file: No such file or directory"错误,这是由于Memcached没有寻找到libevent库,需在系统中增加libevent库文件位置
解决方案:
vim /etc/ld.so.conf //打开系统额外加载库定义文件
/usr/local/libevent/lib //增加libevent事件库文件夹路径
ldconfig //重新读取/etc/ld.so.conf文件内容
memcached -d -m 32m -p 11211 -u root //无报错
netstat -utpln | grep 11211 //查看Memcahced监听端口


注:停止Memcached,可使用"pkill memcahced"及"killall memcached"等其它相关方式


LAMP+Memcache(Client)


1.环境准备(LAMP+Memcache)

vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0 //网卡名称
TYPE=Ethernet //网卡类型为以太网
OnBOOT=yes //开机自启该网卡
NM_COnTROLLED=no //关闭NetworkManager
BOOTPROTO=static //网卡设置为静态方式
IPADDR=192.168.1.10 //IP地址配置
NETMASK=255.255.255.0 //子网掩码配置

/etc/init.d/network restart //重启网络服务

yum -y install zlib-devel libxml2-devel libtool-ltdl-devel //安装依赖包

2.安装LAMP(LAMP+Memcache)

安装httpd

rpm -e httpd httpd-manual webalizer subversion mod_python mod_ssl mod_perl system-config-httpd php php-cli php-ldap php-common mysql dovecot --nodeps
//忽略依赖关系卸载系统已安装的RPM包软件(如果有的话,最好输入确认下)

tar -zxvf httpd-2.2.17.tar.gz -C /usr/src/

cd /usr/src/httpd-2.2.17/

./configure --prefix=/usr/local/httpd --enable-so --enable-rewrite --enable-charset-lite --enable-cgi

选项:
--enable-so:启动动态加载模块支持
--enable-rewrite:启动网页地址重写功能
--enable-charset-lite:启用字符集支持,以支持使用各种字符集编码的网页
--enable-cgi:启用CGI脚本程序支持

make && make install

echo "PATH=$PATH:/usr/local/httpd/bin">>/etc/profile

source /etc/profile

cp /usr/local/httpd/bin/apachectl /etc/init.d/httpd

vim /etc/init.d/httpd
# chkconfig:35 67 55
# description: Apache Service

chkconfig --add httpd

安装MySQL

rpm -e mysql-server mysql /卸载使用RPM方式安装MySQL软件包

yum -y install ncurses-devel cmake //安装依赖软件包

useradd -M -s /sbin/nologin mysql //新建程序用户并加入mysql组,不允许登陆系统

tar -zxvf mysql-5.5.22.tar.gz -C /usr/src/

cd /usr/src/mysql-5.5.22/

cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=all -DSYSCOnFDIR=/etc

选项:
-DCMAKE_INSTALL_PREFIX:指定MySQL安装位置
-DDEFAULT_CHARSET:指定默认字符集编码
-DDEFAULT_COLLATION:指定默认使用字符集校对规则
-DWITH-EXTRA-CHARSETS:指定额外支持的其他字符集编码
-DSYSCONFDIR:配置文件存储位置

make && make install

chown -R mysql:mysql /usr/local/mysql/

cp support-files/my-medium.cnf /etc/my.cnf

/usr/local/mysql/scripts/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/ //执行初始化脚本

选项:
--user:指定运行用户
--basedir:指定MySQL数据库位置
--datadir:指定MySQL数据存储位置

echo "PATH=$PATH:/usr/local/mysql/bin">>/etc/profile
//添加MySQL到搜索路径,方便执行命令

source /etc/profile //立即让profile文件内容生效

cp support-files/mysql.server /etc/init.d/mysqld
//拷贝服务脚本文件到/etc/rc.d/init.d位置

chmod +x /etc/init.d/mysqld

chkconfig --level 35 mysqld on

/etc/init.d/mysqld start 或 service mysqld start

netstat -utpln | grep mysqld

安装PHP加密工具

rpm -e php php-cli php-ldap php-common php-mysql --nodeps
//忽略依赖关系卸载系统已安装的RPM包软件(如果有的话,最好输入确认下)

tar -zxvf libmcrypt-2.5.8.tar.gz -C /usr/src/

cd /usr/src/libmcrypt-2.5.8/

./configure && make && make install

ln -s /usr/local/lib/libmcrypt.* /usr/lib/

tar -zxvf mhash-0.9.9.9.tar.gz -C /usr/src/

cd /usr/src/mhash-0.9.9.9/

./configure && make && make install

ln -s /usr/local/lib/libmhash.* /usr/lib/

tar -zxvf mcrypt-2.6.8.tar.gz -C /usr/src/

cd /usr/src/mcrypt-2.6.8/

export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH

./configure && make && make install

安装PHP

tar -zxvf php-5.3.28.tar.gz -C /usr/src/

cd /usr/src/php-5.3.28/

./configure --prefix=/usr/local/php --with-mcrypt --with-apxs2=/usr/local/httpd/bin/apxs --with-config-file-path=/usr/local/php --enable-mbstring --with-mysql=/usr/local/mysql/

选项:
--with-mcrypt:加载数据加密等扩展工具支持
--with-apxs2:设置Apache HTTP Server提供的apxs模块支持程序的文件位置
--with-config-file-path:设置PHP的配置文件php.ini将要存放的位置
--enable-mbstring:启动多字节字符串功能,以便支持中文等代码
--with-mysql:设置MySQL数据库服务程序的安装位置

make && make install

PHP配置(LAMP+Memcache)

cp /usr/src/php-5.3.28/php.ini-development /usr/local/php/php.ini
//拷贝PHP模板文件到PHP工作目录

vim /usr/local/php/php.ini
226 short_open_tag = On //允许识别PHP短语法标记,即
784 default_charset = "utf-8" //设置默认字符集为utf-8,注意删除前面";"

tar -zxvf ZendGuardLoader-php-5.3-linux-glibc23-x86_64.tar.gz -C /usr/src/

cd /usr/src/ZendGuardLoader-php-5.3-linux-glibc23-x86_64/

cp php-5.3.x/ZendGuardLoader.so /usr/local/php/lib/php/

vim /usr/local/php/php.ini
zend_extension=/usr/local/php/lib/php/ZendGuardLoader.so
zend_loader.enable=1

vim /usr/local/httpd/conf/httpd.conf
310 AddType application/x-httpd-php .php
167 DirectoryIndex index.php index.html

httpd -t

/etc/init.d/httpd start

vim /usr/local/httpd/htdocs/test1.php //测试PHP网页能否正确显示
phpinfo();
?>

vim /usr/local/httpd/htdocs/test3.php
$link=mysql_connect(‘localhost‘,‘root‘,‘‘);
if($link) echo "恭喜你,数据库连接成功啦!";
mysql_close();
?>

3.安装Memcache(LAMP+Memcache)

tar -zxvf memcache-2.2.7.tgz -C /usr/src/

cd /usr/src/memcache-2.2.7/

/usr/local/php/bin/phpize //根据系统信息生成对应的configure文件

若出现报错:
……
Cannot find autoconf. Please check your autoconf installation and the $PHP_AUTOCONF environment variable. Then, rerun this script.
解决方法:
yum -y install autoconf
注:以上为解决方案,只当执行"/usr/local/php/bin/phpize"报错时使用


./configure --enable-memcache --with-php-cOnfig=/usr/local/php/bin/php-config

make && make install
Build complete.
Don‘t forget to run ‘make test‘.
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/ //复制扩展目录

vim /usr/local/php/php.ini
819 extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20090626/" //指定目录
820 extension = memcache.so //启动扩展模块

/etc/init.d/httpd restart

vim /usr/local/httpd/htdocs/test2.php
$memcache = new Memcache();
$memcache->connect(‘192.168.1.100‘,11211);
$memcache->set(‘key‘,‘Memcache test successful!‘,0,60);
$result = $memcache->get(‘key‘);
unset($memecache);
echo $result;
?>
//测试调用memcache程序接口来测试memcached服务器与客户端系统工作是否正常

六、Memcached的使用



Memcached每个被存取的对象都有唯一的标识符key,存取操作均通过key进行,例如可以把后端数据库中的select操作提取出来,然后对相应的SQL进行hash计算得出key,然后以这个key在memcached中查找数据,如果数据不存在,说明其尚未被写入缓存中,缓存不存在时将key存储在缓存中,并设置一个失效时间(比如1小时),在失效时间内的数据都是从缓存中提取,这样就有效地减少了数据库的压力
数据存取命令:



  • set:保存一个数据到服务器上,如已存在则覆盖

  • add:添加一个数据到服务器,但是服务器必须这个key是不存在的,能够保证数据不会被覆盖

  • replace:替换一个已经存在的数据,如果数据不存在,就是类似set功能

  • get:格式是:get <键>key;一个不为空的字符串组合,发送这个指令以后,等待服务器的返回;如果服务器端没有任何数据,则返回"END",证明没有不存在这个key,没有任何数据,如果存在数据,则返回指定格式:VALUE <键><标记><数据长度>

  • delete:删除指令;delete <键><超时时间><超时时间> - timeout

  • flush_all:这个指令执行后,服务器上所有缓存的数据都被删除,并且返回

  • stats:显示当前所有 Memcache 服务器运行的状态信息

如果只是想获取部分项目的信息,可以指定参数,格式:stats <参数>:这个指令将只返回指定参数的项目状态信息
参数:

stats
Pid:memcache 服务器的进程 ID
uptime:服务器已经运行的秒数
Time:服务器当前的 unix 时间戳
version:memcache 版本
pointer_size:当前操作系统的指针大小(32 位系统一般是 32bit)
rusage_user:进程的累计用户时间
rusage_system:进程的累计系统时间
curr_items:服务器当前存储的 items 数量
Total_items:从服务器启动以后存储的 items 总数量
Bytes:当前服务器存储 items 占用的字节数
curr_connections:当前打开着的连接数
Total_connections:从服务器启动以后曾经打开过的连接数
connection_structures:服务器分配的连接构造数
cmd_get:get 命令(获取)总请求次数
cmd_set:set 命令(保存)总请求次数
get_hits:总命中次数
get_misses:总未命中次数
evictions:为获取空闲内存而删除的items数(分配给memcache的空间用满后需要删除旧的items来得到空间分配给新的items)
Bytes_read:总读取字节数(请求字节数)
Bytes_written:总发送字节数(结果字节数)
Limit_maxbytes:分配给 memcache 的内存大小(字节)
threads:当前线程数
quit:退出

1.案例(Memcached)

yum -y install telnet

telnet 192.168.1.100 11211 //连接Memcached的11211端口
Trying 192.168.1.100...
Connected to 192.168.1.100.
Escape character is ‘^]‘.
set key 0 60 2
he //设置保存key的值
STORED //服务器返回结果,该处代表保存成功
get key //获取key对应的键值
VALUE key 0 2
he
END
stats //显示当前所有 Memcache 服务器运行的状态信息
STAT pid 12863 //memcached 启动的进程 ID
STAT uptime 4008 //到目前为止启动了多少秒
STAT time 1464713917 //Unix时间(从1970年1月1日开始统计的秒数)
STAT version 1.2.6 //memcached 的版本信息
STAT pointer_size 64 //当前操作系统的指针大小
STAT rusage_user 0.278957 //进程的累计用户时间
STAT rusage_system 0.371943 //进程的累计系统时间
STAT curr_items 1 //服务器当前存储的items数量
STAT total_items 2 //从服务器启动以后存储的items总数量
STAT bytes 79 //当前服务器存储items占用的字节数
STAT curr_connections 2 //当前的并发连接数
STAT total_connections 4 //总的连接数
STAT connection_structures 3 //服务器分配的连接构造数
STAT cmd_get 2 //执行 get 命令的次数
STAT cmd_set 2 //执行 set 命令的次数
STAT get_hits 2 //get 的命中次数
STAT get_misses 0 //get 的非命中数
STAT evictions 0 //为获取空闲内存而删除的 items 数
STAT bytes_read 98 //总读取字节数(请求字节数)
STAT bytes_written 97 //总发送字节数(结果字节数)
STAT limit_maxbytes 33554432 //允许使用的最大内存容量
STAT threads 1 //当前线程数
END
quit //退出
Connection closed by foreign host.

2.总结

错误
Memcache 的协议的错误部分主要是三个错误提示之提示指令



  • 普通错误信息:ERROR

  • 客户端错误:CLIENT_ERROR <错误信息>

  • 服务器端错误:SERVER_ERROR <错误信息>

数据保存指令



  • 数据保存是基本的功能,就是客户端通过命令把数据返回过来,服务器端接收后进行处理

指令格式


<命令><键><标记><有效期><数据长度>

set key 0 60 10


服务器端的返回



  • 数据保存成功(STORED)

  • 数据保存失败(NOT_STORED),一般是因为服务器端这个数据key已经存在了

  • set后如无任何返回,一般为设置的数据长度未使用完,服务器等待使用完毕


推荐阅读
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
  • 本文介绍了2020年计算机二级MSOffice的选择习题及答案,详细解析了操作系统的五大功能模块,包括处理器管理、作业管理、存储器管理、设备管理和文件管理。同时,还解答了算法的有穷性的含义。 ... [详细]
  • 服务器上的操作系统有哪些,如何选择适合的操作系统?
    本文介绍了服务器上常见的操作系统,包括系统盘镜像、数据盘镜像和整机镜像的数量。同时,还介绍了共享镜像的限制和使用方法。此外,还提供了关于华为云服务的帮助中心,其中包括产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题和视频帮助等技术文档。对于裸金属服务器的远程登录,本文介绍了使用密钥对登录的方法,并提供了部分操作系统配置示例。最后,还提到了SUSE云耀云服务器的特点和快速搭建方法。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
author-avatar
青烟_I乀n-a_396
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有