记录学习的过程,优秀的文章转载

文章来源 01号实验田

经常搞Linux的人都知道,Linux有很多发行版,比如:Ubuntu、Debian、Fedora、Arch Linux、openSUSE,不同版的软件源的定义方法是不一样的,我们知道,最近CentOS6已经停止更新支持,同时官方也把yum源删除了,目前CentOS 6系统使用yum命令安装软件包基本都是失败,我的执行搜索和安装软件包都是报错:[Errno 14] PYCURL ERROR 22,这是软件源失效的原因,因此需要更换yum源。

默认情况下,yum安装源位置是在/etc/yum.repos.d/这个文件夹下的,其中有多个配置文件,每一个配置文件中都可以配置一个或多个repository, 最终会被合并为一个交给系统。其实,上面的问题,用下面这个源就能解决
1。下载并更新新的yum源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://file.kangle.odata.cc/repo/Centos-6.repo
wget -O /etc/yum.repos.d/epel.repo http://file.kangle.odata.cc/repo/epel-6.repo
2。重新生成metadata:
yum makecache

1.备份全部数据库

mysqldump -q -uroot -ppassword --add-drop-table --all-databases > /backup/all.sql

2.关闭mysql服务

// 不同服务器环境可能命令不一样, 以下仅供参考
service mysql stop  // centos7 以下 
systemctl stop mysql  // centos7 及以上

3.mysql 添加配置

// mysqld 配置下添加配置
[mysqld]
innodb_file_per_table=1

4.检测是否配置成功

// 首先启动mysql 
service mysql start  // centos7 以下 
systemctl start mysql  // centos7 及以上
// 查看配置
show variables like '%per_table%';
// 确认 innodb_file_per_table 的值为 ON 就配置好了

5.关闭mysql, 然后删除mysql目录下的 ibdata1 和 ib_logfile* 文件

// 关闭 mysql 参考步骤2
// mysql 目录可能会因安装方式或者其他原因在其他目录下, 默认目录参考: /var/lib/mysql

6.启动数据库, 最后导入第一步备份的数据库

// 启动数据库参考步骤3前面部分, 下面是导入备份的数据库
mysql -uroot -ppassword < /backup/all.sql

至此, 所有操作就完成了

文章转自:PHP笔记 - E度笔记

/**
 * 十进制数转换成62进制
 *
 * @param integer $num
 * @return string
 */
function to62($num) {
    $to = 62;
    $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $ret = '';
    do {
        $ret = $dict[bcmod($num, $to)] . $ret;
        $num = bcdiv($num, $to);
    } while ($num > 0);
    return $ret;
}
/**
 * 62进制数转换成十进制数
 *
 * @param string $num
 * @return string
 */
function from62($num) {
    $from = 62;
    $num = strval($num);
    $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $len = strlen($num);
    $dec = 0;
    for($i = 0; $i < $len; $i++) {
        $pos = strpos($dict, $num[$i]);
        $dec = bcadd(bcmul(bcpow($from, $len - $i - 1), $pos), $dec);
    }
    return $dec;
}
/**
 * 十进制数转换成其它进制
 * 可以转换成2-62任何进制
 *
 * @param integer $num
 * @param integer $to
 * @return string
 */
function dec_to($num, $to = 62) {
    if ($to == 10 || $to > 62 || $to < 2) {
        return $num;
    }
    $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $ret = '';
    do {
        $ret = $dict[bcmod($num, $to)] . $ret;
        $num = bcdiv($num, $to);
    } while ($num > 0);
    return $ret;
}
/**
 * 其它进制数转换成十进制数
 * 适用2-62的任何进制
 *
 * @param string $num
 * @param integer $from
 * @return number
 */
function dec_from($num, $from = 62) {
    if ($from == 10 || $from > 62 || $from < 2) {
        return $num;
    }
    $num = strval($num);
    $dict = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $len = strlen($num);
    $dec = 0;
    for($i = 0; $i < $len; $i++) {
        $pos = strpos($dict, $num[$i]);
        if ($pos >= $from) {
            continue; // 如果出现非法字符,会忽略掉。比如16进制中出现w、x、y、z等
        }
        $dec = bcadd(bcmul(bcpow($from, $len - $i - 1), $pos), $dec);
    }
    return $dec;
}
/**
 * 当然,利用上面两个函数,可以进行任何进制之间相互转换:
 * 数字的任意进制转换
 *
 * @param integer|string $number
 * @param integer $to 目标进制数
 * @param integer $from 源进制数
 * @return string
 */
function radix($number, $to = 62, $from = 10) {
    // 先转换成10进制
    $number = dec_from($number, $from);
    // 再转换成目标进制
    $number = dec_to($number, $to);
    return $number;
}

// 查mysql实时记录是否开启及保存路径
SHOW VARIABLES LIKE "general_log%";
// 开启实时记录
SET GLOBAL general_log = 'ON';
// 关闭实时记录
SET GLOBAL general_log = 'OFF';
// 修改保存记录
SET GLOBAL general_log_file = '/var/log/mysql/general_log.log';

// 查mysql查询时间
show variables like "%pro%";
// 查看最近使用sql执行时间
show profiles;
// 打开最近使用sql执行时间计算
set profiling = 1
// 关闭最近使用sql执行时间计算
set profiling = 0

function http_post_json($url, $jsonStr)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonStr);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array(
            'Content-Type: application/json; charset=utf-8',
            'Content-Length: ' . strlen($jsonStr)
        )
    );
    $response = curl_exec($ch);
    return $response;
}

文章地址:koukousky

server {
    listen       80;#80和443端口同时监听
    listen       443 ssl;
    server_name  www.koukousky.com koukousky.com;
    index index.html index.htm index.php;
    root  /apps/koukousky;

    #ssl on;
    ssl_certificate    /etc/ssl/koukousky.com.pem;
    ssl_certificate_key   /etc/ssl/koukousky/koukousky.com.key;
    ssl_session_timeout 5m;
    #ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
    ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !kECDH !DSS !MD5 !RC4 !EXP !PSK !SRP !CAMELLIA !SEED !3DES';
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    ssl_prefer_server_ciphers on;
    //不是www过来的跳转到带www的域名
    if ($http_host !~ "^www.koukousky.com$") {
        rewrite  ^(.*)    http://www.koukousky.com$1 permanent;
    }
    //防盗链图片
    location ~* \.(gif|jpg|png|bmp|zip|pdf)$ {
        valid_referers none blocked *.koukousky.com;
        if ($invalid_referer) {
                return 403;
         }
    }
    //缓存图片
    location ~ .*\.(?:jpg|jpeg|gif|png|ico|cur|gz|svg)$
    {
        expires      7d;
    }
    //缓存js css
    location ~ .*\.(?:js|css)$
    {
        expires      7d;
    }
    }
    //隐藏index.php
    location / {
        if (!-e  $request_filename) {
                rewrite  ^/(.*)$  /index.php/$1  last;
                break;
        }

       index  index.php;

    }
    //解析php
    location ~ \.php {
        //如果是进程文件请换成 fastcgi_pass   unix:/tmp/php-cgi.sock;
        fastcgi_pass   127.0.0.1:9000;

        fastcgi_index  index.php;
        fastcgi_read_timeout 300;
        set $real_script_name $fastcgi_script_name;
        if ($fastcgi_script_name ~ "^(.+?\.php)(/.+)$") {
                set $real_script_name $1;
                set $path_info $2;
        }
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param SCRIPT_NAME $real_script_name;
        fastcgi_param PATH_INFO $path_info;
        include        fastcgi_params;
    }
}

知道什么是蛇形命名法(snake case)和驼峰命名法(camel case)吗?
snake case类似于这样: file_name、 line_number、 my_first_program
camel case类似于这样: fileName、 lineNumber、 myFirstProgram

使用PHP内置函数实现

// 蛇形命名转换为驼峰命名
function SnakeToLowerCamel($value){
    $value = ucwords(str_replace(['_', '-'], ' ', $value));
    $value = str_replace(' ', '', $value);
    return lcfirst($value);
}

// 驼峰命名转换为蛇形命名
function CamelToSnake($value){
    // 以 UTF-8 模式删除空字符
    $value = preg_replace('/\s+/u', '', $value);
    // “?=”为正向预查,在任何开始匹配圆括号内的正则表达式模式的位置来匹配搜索字符串
    // 这里的正则表达式匹配所有大写字符的前一个字符
    $value = strtolower(preg_replace('/(.)(?=[A-Z])/u', "$1_", $value));
    return $value;
}

// 附加一个:蛇形命名转换为大驼峰命名(首字母大写 如: FileName、 LineNumber、 MyFirstProgram)
function SnakeToUpperCamel($value){
    $value = ucwords(str_replace(['_', '-'], ' ', $value));
    $value = str_replace(' ', '', $value);
    return $value;
}

// 主要是我目前没常用但又比较实用的,记录方便之后用到查询~

// 查询某个字段的值 (value 方法查询结果不存在,返回 null)
$user_name = Db::name('users')->where('id','1')->value('name');

// 查询某一列的值可以用 (column 方法查询结果不存在,返回空数组)
// 该查询跟field链式操作方法区别是该方法查询结果中二维数据的键是查询数据中的主键
// field链式操作方法结果的二维数据主键是从0自增
$users = Db::name('users')->where('sex','1')->column('id,name,sex');

// 数据集分批处理
// 该方法一次获取结果集的一小块,然后填充每一小块数据到要处理的闭包
// 此方法在处理大量数据库的时候非常实用
Db::name('users')->chunk(100, function($users) {
    foreach ($users as $user) {
        // 处理每次取出的结果集
        p($user['id']);
    }
    p("--------------------");
});

1.先卸载pip

yum remove python-pip # 如果是ubuntu系统就是 apt-get remove python-pip

2.打开pip官网下载最新版

https://pypi.python.org/pypi/pip

3.解压

tar -xzvf pip-xxxxxx.tar.gz # 名字为你所下载的版本

4.安装pip

python setup.py install