提高開發銷量小技巧

打好備註我是李順發表於2021-01-28

整理一下自己開發過程中使用到,且認為能提高開發銷量的小技巧,工具、編碼、資料庫等都列舉了一些,希望能對你們有幫助。

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 後面的點點綠色即連線成功)
  • 建立連線之後選擇抓包的域名

phpstorm

暫存/恢復 程式碼(開發中切換分支)

場景:開發過程中修改了部分程式碼,臨時需要切換其他分支,但是原生程式碼還不能提交。

    VCS -> git -> stash changes(暫存) 、unstash changes(恢復)

xdebug除錯,快速定位斷點

     ctrl +shift + F8(xdebug)

拼寫錯誤提示

使用有些字串但是不是英文單詞,例如:wechat、alipay 等
編輯器 -> splling ->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 自動安裝伺服器環境)

    其他

  • 阿里雲日誌 查詢字串中需要轉義

      * | 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 協議》,轉載必須註明作者和本文連結

相關文章