提高开发效率小技巧

提高开发效率小技巧

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

postman

自动更新环境变量

场景:接口调试过程中,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 协议》,转载必须注明作者和本文链接
本帖由系统于 4周前 自动加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 7

Another Redis DeskTop Manger 免费开源 :smile:

1个月前 评论
TELstatic 1个月前
snakelis (楼主) 1个月前

原来postman还能这么用!!!

1个月前 评论
snakelis (楼主) 1个月前
moxiaomo (作者) 1个月前

isset 和 ?? 谁香

1个月前 评论
幽弥狂 4周前

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

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

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

3周前 评论
snakelis (楼主) 3周前

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

1周前 评论
snakelis (楼主) 1周前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
1
粉丝
2
喜欢
38
收藏
70
排名:1184
访问:1336
私信
所有博文