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

文章转自: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

原文地址 : http://www.nowamagic.net/librarys/veda/detail/2407

以下文字并没有非常多的技术词汇,所以只要对PHP感兴趣的人都可以看看。

PHPer是草根吗?
从PHP诞生之日起,PHP就开始在Web应用方面为广大的程序员服务。同时,作为针对Web开发量身定制的脚本语言,PHP一直秉承简单、开源的思想,这也使得PHP得以快速的发展,并且大力地推动Web2.0的出现与发展。但是,长期以来,PHPer(PHP Programmers)被认为是处于草根阶层的程序员,被认为是技术含量少,层次低的程序员。这点在国内尤其突出。

- 阅读全部 -