MySQL中的加密与压缩算法

Encryption and Compression Functions:

Name Description
AES_DECRYPT() Decrypt using AES
AES_ENCRYPT() Encrypt using AES
COMPRESS() Return result as a binary string
DECODE() Decodes a string encrypted using ENCODE()
DES_DECRYPT() Decrypt a string
DES_ENCRYPT() Encrypt a string
ENCODE() Encode a string
ENCRYPT() Encrypt a string
MD5() Calculate MD5 checksum
OLD_PASSWORD() Return the value of the pre-4.1 implementation of PASSWORD
PASSWORD() Calculate and return a password string
SHA1()SHA() Calculate an SHA-1 160-bit checksum
SHA2() Calculate an SHA-2 checksum
UNCOMPRESS() Uncompress a string compressed
UNCOMPRESSED_LENGTH() Return the length of a string before compression


人类免疫缺陷病毒(HIV)不同传播途径的感染率

        人类免疫缺陷病毒(human immunodeficiency virus,HIV)是一种感染人类免疫系统细胞的慢病毒,属逆转录病毒的一种。普遍认为,人类免疫缺陷病毒的感染导致艾滋病,艾滋病是后天性细胞免疫功能出现缺陷而导致严重随机感染及/或继发肿瘤并致命的一种疾病。艾滋病自1981年在美国被识别并发展为全球大流行至2003年底,已累计导致两千余万人死亡。人类免疫缺陷病毒通常也俗称为“艾滋病病毒”或“艾滋病毒”。

        人类免疫缺陷病毒作为逆转录病毒,在感染后会整合入宿主细胞的基因组中,而目前的抗病毒治疗并不能将病毒根除。在2004年底,全球有约四千万被感染并与人类免疫缺陷病毒共同生存的人,该年并有三百余万人死于艾滋病;流行状况最为严重的仍是撒哈拉以南非洲,其次是南亚与东南亚,但该年成长幅度最快的地区是东亚、东欧及中亚。

        在人类免疫缺陷病毒感染病程的一些时期,特别是早期及末期,具有感染性的病毒颗粒会存在于含有免疫细胞、血浆、淋巴液或组织液的某些体液中,如血液、精液、 前列腺液、阴道分泌液、乳汁或伤口分泌液;另一方面,病毒在体外环境中极不稳定。因此,人类免疫缺陷病毒的传播途径主要是不安全的性接触、静脉注射、输血、分娩、哺乳等;而通常的工作、学习、社交、或家庭接触,比如完整皮肤间的接触、共用坐便器、接触汗液等,不会传播人类免疫缺陷病毒;与唾液或泪液的通常接触(如社交吻礼或短暂接吻)也未有导致传播人类免疫缺陷病毒的报告;但美国疾病控制与预防中心说已感染病毒的母亲,可将病毒透过先嚼过的食物(唾液内含血液)传给孩子。

        艾滋病毒是透过交换体液来传播的,特别是精液和血液。最常见的传染途径是:进行阴道或肛门性交,共用沾污了的针筒,受病毒感染的母亲传播给婴儿。另外,亦有越来越多个案显示,感染了病毒的母亲可经喂母乳而把病毒传给婴儿。

        传播途径:任何带有足量病毒的体液交换

估计通过各种感染途径(单次行为)
获得HIV病毒风险概率(以美国为例)[3]
感染途径 估计感染几率
输血 90%[1]
分娩(传给胎儿) 25%[2]
注射性毒品使用共用针头 0.67%[3]
经皮针扎 0.30%[4]
肛交受方* 0.50%[5][6]
肛交插入者* 0.065%[5][6]
阴茎阴道交媾女方* 0.10%[5][6][7]
阴茎阴道交媾男方* 0.05%[5][6]
口交接受者  0.01%[6]
口交插入者 0.005%[6]
* 假设未使用安全套
§ 资料指的口交
是男性作出的

310109898.png

PDO使用初探

PDO一是PHP数据对象(PHP Data Object)的缩写。

连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);?>

注意:如果有任何连接错误,将抛出一个 PDOException 异常对象。

处理链接错误

<?phptry {
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    foreach($dbh->query('SELECT * from FOO') as $row) {
        print_r($row);
    }
    $dbh = null;} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();}
?>

连接数据成功后,返回一个 PDO 类的实例给脚本,此连接在 PDO 对象的生存周期中保持活动。

要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 NULL 值给对象变量。

如果不这么做,PHP 在脚本结束时会自动关闭连接。

关闭一个链接

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);// 在此使用连接


// 现在运行完成,在此关闭连接
$dbh = null;?>

很多 web 应用程序通过使用到数据库服务的持久连接获得好处。

持久连接在脚本结束后不会被关闭,且被缓存,当另一个使用相同凭证的脚本连接请求时被重用。

持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快。

持久化链接

<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass, array(
    PDO::ATTR_PERSISTENT => true));?>

注意如果想使用持久连接,必须在传递给 PDO 构造函数的驱动选项数组中设置 PDO::ATTR_PERSISTENT 。如果是在对象初始化之后用 PDO::setAttribute() 设置此属性,则驱动程序将不会使用持久连接。

和mysql_connect()对比

<?php                   
define("dbt","mysql");
define("host","localhost");
define("port","3306");
define("user","root");
define("pwd","123456");
define('dbname','cms');
define("dsn",dbt.":host=".host.";dbname=".dbname);
//function conn_db(){//version 5.5 and older for this : mysql_connect()
//      $conn = mysql_connect(url,user,pwd);
//      if($conn){
//              $db_rs = mysql_select_db(dbname,$conn);
//              if(!$db_rs){die("no connection".mysql_error());}
//      }else{
//              die("no connection".mysql_error());
//      }
//      mysql_query("set names UTF8");  
//}
//conn_db();
try{
        $dbh=new PDO(dsn,user,pwd);
        echo print_r($dbh)."</br>connection success!</br>";
        
        //close
        $dbh=null;
}catch(PDOException $e){
        die("Error!:".$e->getMessage()."</br>");
}
//print_r(dsn);
?>


参考: PDO参考手册


手工切换ubuntu16.04不同版本PHP

如果需要更新源:

#vim  /etc/apt/sources.list

在末尾加入

# deb cdrom:[Ubuntu 16.04 LTS _Xenial Xerus_ - Release amd64 (20160420.1)]/ xenial main restricted
deb-src http://archive.ubuntu.com/ubuntu xenial main restricted #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates universe
deb http://mirrors.aliyun.com/ubuntu/ xenial multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-updates multiverse
deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse #Added by software-properties
deb http://archive.canonical.com/ubuntu xenial partner
deb-src http://archive.canonical.com/ubuntu xenial partner
deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted
deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted multiverse universe #Added by software-properties
deb http://mirrors.aliyun.com/ubuntu/ xenial-security universe
deb http://mirrors.aliyun.com/ubuntu/ xenial-security multiverse

#apt-get update

#apt-get upgrade

#apt-get install php5

如果需要安装依赖

# apt-get install php5-fpm php5-gli php5-cgi libapache2-mod-php5filter libapache2-mod-php5

#apt-get install php5

停用原来版本

#a2dismod php7 

启用刚安装的版本

#a2enmod php5

#service apache2 restart

最后用phpinfo()检查

如何查看日志

日 志 文 件 说    明 
/var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 
/var/log/secure 与安全相关的日志信息 
/var/log/maillog 与邮件相关的日志信息 
/var/log/cron 与定时任务相关的日志信息 
/var/log/spooler 与UUCP和news设备相关的日志信息 
/var/log/boot.log 守护进程启动和停止相关的日志消息 
系统: 
# uname -a   # 查看内核/操作系统/CPU信息 
# cat /etc/issue 
# cat /etc/redhat-release # 查看操作系统版本 
# cat /proc/cpuinfo  # 查看CPU信息 
# hostname   # 查看计算机名 
# lspci -tv   # 列出所有PCI设备 
# lsusb -tv   # 列出所有USB设备 
# lsmod    # 列出加载的内核模块 
# env    # 查看环境变量 
资源: 
# free -m   # 查看内存使用量和交换区使用量 
# df -h    # 查看各分区使用情况 
# du -sh <目录名>  # 查看指定目录的大小 
# grep MemTotal /proc/meminfo # 查看内存总量 
# grep MemFree /proc/meminfo # 查看空闲内存量 
# uptime   # 查看系统运行时间、用户数、负载 
# cat /proc/loadavg  # 查看系统负载 
磁盘和分区: 
# mount | column -t  # 查看挂接的分区状态 
# fdisk -l   # 查看所有分区 
# swapon -s   # 查看所有交换分区 
# hdparm -i /dev/hda  # 查看磁盘参数(仅适用于IDE设备) 
# dmesg | grep IDE  # 查看启动时IDE设备检测状况 
网络: 
# ifconfig   # 查看所有网络接口的属性 
# iptables -L   # 查看防火墙设置 
# route -n   # 查看路由表 
# netstat -lntp   # 查看所有监听端口 
# netstat -antp   # 查看所有已经建立的连接 
# netstat -s   # 查看网络统计信息 
进程: 
# ps -ef   # 查看所有进程 
# top    # 实时显示进程状态(另一篇文章里面有详细的介绍) 
用户: 
# w    # 查看活动用户 
# id <用户名>   # 查看指定用户信息 
# last    # 查看用户登录日志 
# cut -d: -f1 /etc/passwd # 查看系统所有用户 
# cut -d: -f1 /etc/group # 查看系统所有组 
# crontab -l   # 查看当前用户的计划任务 
服务: 
# chkconfig –list  # 列出所有系统服务 
# chkconfig –list | grep on # 列出所有启动的系统服务 
程序: 
# rpm -qa   # 查看所有安装的软件包