整理一下自己開發過程中使用到,且認為能提高開發銷量的小技巧,工具、編碼、資料庫等都列舉了一些,希望能對你們有幫助。
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客戶端)
-
其他
阿里雲日誌 查詢字串中需要轉義
* | 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 協議》,轉載必須註明作者和本文連結