提高开发效率小技巧
提高开发效率小技巧
整理一下自己开发过程中使用到,且认为能提高开发效率的小技巧,工具、编码、数据库等都列举了一些,希望能对你们有帮助。
postman
关于Postman的Runner(更新时间 2021-03-24 15:53:35)
场景:需求开发过程中可能依赖于一部分业务数据的生成,通过runner可以一键执行多个接口。例:生成订单数据提供后续使用(下单、支付 两个接口)
常规操作:先调用下单接口 然后获取订单号 再手动调用支付接口
解决方式:使用到postman 的runner 、环境变量、tests
步骤
- 导入下单接口和支付接口
- 修改下单接口tests,这样可以下单之后动态修改订单号的环境变量
- 使用runner功能设置需要跑的接口和循环次数、延时
- 调整好接口顺序并执行
自动更新环境变量
场景:接口调试过程中,token过期导致
常规方法:单个接口修改token参数。
解决方法:接口参数使用环境变量{{token}}。token过期后,调用一次获取token接口,自动更新环境变量即可。
变量定义:
变量使用:
自动更新环境变量:
var data = JSON.parse(responseBody);
pm.environment.set("token", data.data.token);
导入请求
场景:联调或调试接口bug时,参数很复杂或者特定参数才能复现。
常规方法:手动修改接口参数调试
解决方法:导入接口请求,参数、headr头等全部保持一致。
导入:
1.浏览器->F12->选择对应请求,右键->copy->copy as curl (bash)
2.postman->import->Raw Text
获取请求curl:
导入postman:
请求抓包
场景:接口抓包之后筛选需要的接口请求记录数据和复现。
chrome安装Postman Interceptor扩展
postman 打开 Capture requests and cookies、选择 Request ->Interceptor。(INTERCEPTOR CONNECTED 后面的点点绿色即连接成功)
建立连接之后选择抓包的域名
postman form-data参数转换为json
老接口使用的forn-data形式传参,写单元测试或者需要模拟数据的时候希望使用json,然后转换成数组的场景。
挂一个我自己写的转换脚本页面:json.whereku.club/
纯前端代码。需要的自己copy到本地跑也行phpstorm
暂存/恢复 代码(开发中切换分支)
场景:开发过程中修改了部分代码,临时需要切换其他分支,但是本地代码还不能提交。
VCS -> git -> stash changes(暂存) 、unstash changes(恢复)
xdebug调试,快速定位断点
ctrl +shift + F8(xdebug)
拼写错误提示
使用有些字符串但是不是英文单词,例如:wechat、alipay 等
编辑器 ->Proofreading ->spelling ->accepted Words ->add
查看当前行代码提交记录
场景:排查部分行代码 (bug甩锅 hhh)
镜像
阿里巴巴开源镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
docker 阿里云镜像加速器地址
阿里云->容器镜像服务-> 镜像加速器
PHP编码
isset — 检测变量是否已设置并且非 NULL、
## 如果 json 无法被解码, 或者编码数据深度超过了递归限制的话,将会返回NULL 。
## json_decode 字符串 返回null,int正常返回
$redis_data = RedisService::getInstance()->hMGet('test', [1, 2, 3]);
foreach ($redis_data as $value) {
$check['result'] = json_decode($value);
if (isset($check['test'])) {
print_r(1);
} else {
print_r(2);
}
die;
}
PHP循环引用,保持unset习惯
$arr = [
'a', 'b',
'c', 'd',
];
foreach ($arr as &$each){
echo $each;
}
echo PHP_EOL;
foreach ($arr as $each){
echo $each;
}
## 输出结果
abcd
abcc
二维数组根据某个字段进行排序
一个字段排序
array_multisort(array_column($data, 'sort'), SORT_DESC, $data);
多个字段排序
array_multisort(array_column($data, 'sort1'), SORT_DESC, array_column($data, 'sort2'), SORT_DESC, $data);
二维数据根据某个key当键名
array_column($arr,$column_name,$key_name)
mysql
Mysql order by 不唯一字段】与【limit】混用的坑
但当使用不唯一的字段排序时,分两页查询的数据可能出现同一条数据,并丢失数据!(当排序和分页结合时,一定要非常警觉,order by 后应采用唯一的字段或字段组合)
-- 表结构
CREATE TABLE `test_sort` (
`id` int(11) NOT NULL,
`sort` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 模拟数据
INSERT INTO `test`.`test_sort` (`id`, `sort`) VALUES ('1', '1');
INSERT INTO `test`.`test_sort` (`id`, `sort`) VALUES ('2', '2');
INSERT INTO `test`.`test_sort` (`id`, `sort`) VALUES ('3', '1');
INSERT INTO `test`.`test_sort` (`id`, `sort`) VALUES ('4', '1');
INSERT INTO `test`.`test_sort` (`id`, `sort`) VALUES ('5', '1');
INSERT INTO `test`.`test_sort` (`id`, `sort`) VALUES ('6', '1');
-- 测试sql
SELECT * FROM `test_sort` ORDER BY sort asc limit 1,1;
SELECT * FROM `test_sort` ORDER BY sort asc limit 4,1;
延时关联(覆盖索引) limit 分页查询
测试数据为我本地数据库,就不贴出来了,需要用到的自己测试一下。
覆盖索引:
# 演示数据 - 性能测试数据库:**** 订单数量 300W
SELECT SQL_NO_CACHE count(*) FROM tb_user_order;
#优化前
SELECT SQL_NO_CACHE * FROM tb_user_order ORDER BY gmt_created DESC,id desc LIMIT 100000,10;
#优化后
SELECT SQL_NO_CACHE * FROM tb_user_order AS a INNER JOIN (SELECT id FROM tb_user_order ORDER BY gmt_created DESC,id desc LIMIT 100000,10
) AS b USING (id);
执行时间分析
工具/软件
- everything
Everything 基于名称快速定位文件和文件夹
- vimum
Vimium 为 Chrome 浏览器增加了使用类似 Linux 系统的 vim 编辑器快捷键功能。你可以通过快捷键直接访问网页中的某个链接。
- RedisDesktopManager(windows redis客户端)
- oneinstack(linux 自动安装服务器环境)
- API返回json格式出参格式化:jsonView
其他
阿里云日志 查询字符串中需要转义
* | select * where contents like '%{"status":0%' limit 100 * | select * where contents like '%CDbCommand%' limit 100
chrome页面截全屏
F12 -> ctrl+shift+p -> capture full size screenshot
本作品采用《CC 协议》,转载必须注明作者和本文链接
Another Redis DeskTop Manger 免费开源 :smile:
原来postman还能这么用!!!
isset 和 ?? 谁香
@看上隔壁小花了啦
$a ?? 0 等同于 isset($a) ? $a : 0。 如果要实现 isset 存在但是取值不去$a 就不行了 如下
查看当前行代码提交记录,可以安装一个插件叫 GitBox 很方便的就可以查看提交记录
不错, 好记性不如烂笔头啊, 善于总结, 非常优秀!
好东西,mark下