情况是这样的, 用php写了个身份证签到客户端, 网页打开当前页面, 搜索传递的中文传递给本地程序, 本地程序在转换后发送给真实的接口, 其中中文名搜索出现了点小尴尬

本地客户端php就写了几个php文件, 接受参数都是直接用的 $_REQUEST['search_value'] 接收, 直接var_dump() 可以正常打印中文名, 但是转发请求调用接口就不行了, 且接收端做了处理了, 比如对收到的参数执行了 urldecode() 

后来问题还是解决了, 本地的php发放在转发参数值, 需要将中文参数执行 urlencode() 对应的参数值即可

  • 查看已安装的软件列表
yum list installed
  • 管道方式直接覆盖文件, 免除输入yes
[root@localhost b]# yes | cp -rf file1 c/
cp:是否覆盖'c/file1'? [root@localhost b]#
  • mkdir递归创建目录
mkdir –vp 目录1/目录2/目录3
  • cp
显示文件列表且在文件名两边加上双引号, 且过滤很多文件
ls -Qa | grep -v ./ | grep -v ../ | grep -v .git | grep -v old_version | grep -v develop_h5.sh
考虑文件且过滤部分文件, 注意执行的目录下不能有带空格的文件名
cp -rf `ls -qa | grep -v ./ | grep -v ../ | grep -v .git | grep -v old_version | grep -v develop_h5.sh` ./old_version 
  • 防火墙
# 查看防火墙状态
firewall-cmd --state
# 停止firewall
systemctl stop firewalld.service
# 禁止firewall开机启动
systemctl disable firewalld.service
# 开放80端口
firewall-cmd --permanent --zone=public --add-port=80/tcp
# 关闭80端口
firewall-cmd --permanent --zone=public --remove-port=80/tcp
# 重启防火墙服务后生效
systemctl restart firewalld.service
# 查询指定端口开放状态
firewall-cmd --query-port=80/tcp
  • 一条命令实现修改密码
echo 密码 | passwd --stdin 用户名;
  • scp
# 跨机器拷贝文件
scp /usr/lib/systemd/system/etcd.service root@k8s-node1:/usr/lib/systemd/system/
# 免于输入密码拷贝文件
yum -y install sshpass
sshpass -p mima  scp /usr/lib/systemd/system/etcd.service root@k8s-node1:/usr/lib/systemd/system/
  • unzip
# 安装
// --force-yes 需要提示确认的也给自动确认
apt-get install zip -y --force-yes 


# -o解压无法无提示
unzip -o laravel_vendor.zip -d ./

unzip命令常用参数
1、-l:显示压缩文件内所包含的文件;
2、-t:检查压缩文件是否正确;
3、-o:不必先询问用户,unzip执行后覆盖原有的文件;
4、-n:解压缩时不要覆盖原有的文件;
5、-q:执行时不显示任何信息;
6、-d<目录>:指定文件解压缩后所要存储的目录;
  • 下载文件

# curl下载文件 -o隐藏内容细节的打印
curl -o laravel_vendor.zip https://fhx-data-backup.oss-cn-shanghai.aliyuncs.com/vendor/laravel/laravel_live.zip 
# wget下载文件
wget -O laravel_vendor.zip https://fhx-data-backup.oss-cn-shanghai.aliyuncs.com/vendor/laravel/laravel_live.zip

  • 在对应的字段上拼接 \t 即可
select id,mobile,`name`,concat("\t",idcard) as idcard from users
  • 如果用户无授权, 给的是拼接小星星的字符串
select id
,IF(mobile IS NULL,'',CONCAT(LEFT(mobile,3),'******',RIGHT(mobile,2))) AS mobile
,IF(name IS NULL,'',CONCAT(LEFT(name,1),'**')) AS name
,IF(idcard IS NULL,'',CONCAT(LEFT(idcard,3),'******',RIGHT(idcard,2))) AS idcard 
from users
  • 将身份证除了前面6位和最后4位显示, 其余替换为*
SELECT INSERT('1234567890abcdefg',7,LENGTH('1234567890abcdefg')-10,REPEAT('*',LENGTH('1234567890abcdefg')-10))

时间范围

  • (当数据库字段中存储的是yyyy-MM-dd格式,即date类型;用between and查询参数yyyy-MM-dd格式时,包含头尾,相当于x>=y && x<=z.
  • 当是yyyy-MM-dd HH:mm:ss格式,即datetime类型;用between and查询参数yyyy-MM-dd  HH:mm:ss格式时,包含头尾,x>=y && x<=z。参数yyyy-MM-dd格式时,只包含头,相当于x>=y && x<z。)
查询参数格式与数据库类型相对应时,between and包含头尾,否则依情况

case when 自定义排序时的使用

CASE 
    WHEN t2.status = 4
    AND t2.expire_time>UNIX_TIMESTAMP()
    AND t2.expire_time<UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL 60 DAY)) THEN 4
        WHEN `status` = 2  THEN 3
        WHEN `status` = 3 THEN 2
        WHEN t2.status = 4
        AND t2.expire_time>UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL 60 DAY))
        AND t2.expire_time<UNIX_TIMESTAMP(DATE_ADD(NOW(),INTERVAL 1 YEAR)) THEN 1
    ELSE 0
    END sort     
$query->orderBy('sort desc ,t2.expire_time desc,t2.created_at desc');

当colume 与condition 条件相等时结果为result

case colume 
    when condition then result
    when condition then result
    when condition then result
else result
end

当满足某一条件时,执行某一result

case  
    when condition then result
    when condition then result
    when condition then result
else result
end