提高开发效率小技巧

提高开发效率小技巧

整理一下自己开发过程中使用到,且认为能提高开发效率的小技巧,工具、编码、数据库等都列举了一些,希望能对你们有帮助。

postman

关于Postman的Runner(更新时间 2021-03-24 15:53:35)

场景:需求开发过程中可能依赖于一部分业务数据的生成,通过runner可以一键执行多个接口。例:生成订单数据提供后续使用(下单、支付 两个接口)
常规操作:先调用下单接口 然后获取订单号 再手动调用支付接口
解决方式:使用到postman 的runner 、环境变量、tests

步骤

  1. 导入下单接口和支付接口
  2. 修改下单接口tests,这样可以下单之后动态修改订单号的环境变量
  3. 使用runner功能设置需要跑的接口和循环次数、延时
  4. 调整好接口顺序并执行

自动更新环境变量

场景:接口调试过程中,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 协议》,转载必须注明作者和本文链接
本帖由系统于 5年前 自动加精
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 7

Another Redis DeskTop Manger 免费开源 :smile:

5年前 评论
未定义 5年前
snakelis (楼主) 5年前

原来postman还能这么用!!!

5年前 评论
snakelis (楼主) 5年前
寞小陌 (作者) 5年前

isset 和 ?? 谁香

5年前 评论
幽弥狂 5年前

@看上隔壁小花了啦
$a ?? 0 等同于 isset($a) ? $a : 0。 如果要实现 isset 存在但是取值不去$a 就不行了 如下

 if(isset($a['key'])){ $result = 1; }else{ $result = 2; }
5年前 评论

查看当前行代码提交记录,可以安装一个插件叫 GitBox 很方便的就可以查看提交记录

5年前 评论
snakelis (楼主) 5年前

不错, 好记性不如烂笔头啊, 善于总结, 非常优秀!

5年前 评论
snakelis (楼主) 5年前