黑猫的博客

Linux: grep多个关键字

或操作:

grep -E '123|abc' filename  // 找出文件(filename)中包含123或者包含abc的行  
egrep '123|abc' filename    // 用egrep同样可以实现  
awk '/123|abc/' filename   // awk 的实现方式

与操作:

grep pattern1 files | grep pattern2 //显示既匹配 pattern1 又匹配 pattern2 的行。

其他操作:

grep -i pattern files   //不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files   //只列出匹配的文件名,
grep -L pattern files   //列出不匹配的文件名,
grep -w pattern files  //只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files //匹配的上下文分别显示[number]行,

 

redis的持久化

redis的数据本身是保存在内存里面的,但是redis提供了持久化的功能,可以把数据保存在磁盘上,下一次启动redis服务的时候,会自动的把磁盘上的数据载入到内存里面。

当两种方式同时开启时,数据恢复Redis会优先选择AOF恢复。

redis安全问题

  1. 不放在公网,只在内网使用(局域网)
  2. 公网(防火墙规则)
  3. redis作为数据库是登录密码的存在(默认是关闭)。

Redis常用命令以及基础操作

redis是一个nosql的产品,支持的存储数据的类型(value)很多,常见的类型有

string 字符串、

link 链表、

hash(类似php里面关联数组)、

set一组数据的集合(无序性、唯一性、确定性)、

sorted set:对无序集合的一个升级,里面的集合元素需要按照一定的权值(按照某个规则来排序)来排序

所有redis也叫作结构化的nosql数据库。

php 函数使用可变数量的参数

在php5.6以上版本可以使用…语法实现:

参数列表可以包含 标记,表示该函数接受可变数量的参数。参数将作为数组传递给给定变量。

Css3动画

python3基础之数据类型

数据类型

计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值。但是,计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,不同的数据,需要定义不同的数据类型。在Python中,能够直接处理的数据类型有以下几种:整数、浮点数、字符串、布尔值、空值、变量

centos7下安装python3,与python2共存

centos系统本身默认安装有python2.x,可通过 python –V 或 python –version 查看系统自带的python版本。有一些系统命令时需要用到python2,所以python2不能卸载。

一个PHP的jwt类

hash_do($h . $p . md5($this->KEY), $header['alg']);
            $sign = $h. '.' . $p . '.' . $s;
            return $sign;
        }
        return null;
    }

    public function check_token($jwt){
        if (empty($jwt)){
            return false;
        }
        $tokens = explode('.', $jwt);
        if (count($tokens)!==3){
            return false;
        }
        list($header64, $payload64, $sign) = $tokens;

        $header = json_decode(base64_decode($header64), TRUE);
        if (!isset($header['alg'])){
            return false;
        }

        $s = $this->hash_do($header64 . $payload64 . md5($this->KEY), $header['alg']);
        if ($s !== $sign){
            return false;
        }

        $payload = json_decode(base64_decode($payload64), TRUE);
        $time = time();
        if (isset($payload['iat']) && $payload['iat'] > $time){
            return false;
        }
        if (isset($payload['exp']) && $payload['exp'] < $time){
            return false;
        }
        return true;
    }

}

使用式:

public function auth_token(){
    $over = config('TOKEN_OVER_TIME'); // 生存时间
    $time = time();
    $time_over = $time + $over;
    $header = [
        'typ' => 'JWT',
        'alg' => 'HS256'
    ];
    $payload = [
        'iss' => 'admin_name',
        'iat' => $time,
        'exp' => $time_over,
        'uid' => 12 
    ];

    $j = new Jwt();
    $sign = $j->create_token($header, $payload);
    return $sign;
}





 public function check(){
 	$jwt = 'jwtxxxxxxxx';
    
 	$j = new Jwt();
    $b = $j->check_token($jwt);
 	dump($b);
 }

 

linux下php安装扩展–以swoole为例

①需要把php扩展对应的源码包拉到linux中
②解压并进入解压后的目录
③在解压的目录中,找到php的安装目录中找到phpize指令并执行。
说明:phpize是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块
执行完后会在解压的目录生成一个configure的文件,用于后续的操作
④在解压目录执行./configure脚本, 并且指定php安装目录的php-config脚本文件路径
⑤编译和安装make && make install ,执行完毕后会在php相应的目录生成一个.so的动态库文件
⑥在php配置文件php.ini中指定.so的动态库文件的路径
⑦重启,写个phpinfo的函数进行测试有没有对应的扩展出现