經典bug以及問題收集
程式設計工具問題
1. Could not read from remote repository
在IntelliJ IDEA中使用git出現錯誤資訊為: Could not read from remote repository問題,使用git push,git pull,或者是git clone一個新的project全都失敗。解決辦法如下:
在Settings->Version Control->Git中,將SSH executable設定為Native即可,如圖:
2. git原生代碼和github上的format不一樣
https://blog.csdn.net/echo_follow_heart/article/details/48314523
程式碼問題
後端
1.把不必要的資料庫操作放到了for迴圈裡面做
一個真實發生在我們的產品裡的例子:
public ResponseEntity<List<PubCustomer>> getAllPubCustomer(String expand, String q, Integer pageSize, Integer pageNumber, String... sortBy) { ... Iterable<BP> bpCustomer = bpRepository.findAll(queryConditions, pageRequest); ... if (bpCustomer != null) { bpCustomer.forEach(bp -> { ... if (allExpandParamStatus.get(DEFAULT_ADDRESS) || allExpandParamStatus.get("all")) { Address defauleAddress = addressRepository.findByOwnerIdAndIsDefault(bp.getPkId(), true); customer.setDefaultAddress(defauleAddress); } customers.add(customer); }); } ... }
問題出在forEach迴圈裡的一個方法呼叫addressRepository.findByOwnerIdAndIsDefault(), 如果拿回來了1000個客戶資訊,那麼這裡就會操作資料庫1000次
前端
1.瀏覽器開啟一個網頁的時候報錯:Caused by: SyntaxError: Unexpected identifier
這個錯誤一般都是由於javascript少寫了逗號或者括號導致的,需要仔細排查。
2.Chrome瀏覽器console不現實error log
在使用chrome瀏覽器開發前端功能的時候,如果網頁出了什麼錯,我們一般都會開啟瀏覽器的控制檯,檢視錯誤資訊,分析程式碼錯誤原因。最近在使用console的時候發現網頁上報錯了,可是開啟控制檯卻一直什麼錯誤都顯示不出來,後來試了一下無意中解決了這個問題
沒有error log的控制檯如下:
並且使用console.log也無法列印資訊,在網上搜索到的答案是更改default level,我試了一下不行,後來發現自己開啟console的時候,Default levels旁邊的filter框裡面就已經有了一個filter的資訊了,所以log資訊都沒顯示出來,將filter的內容清空之後即可:
資料庫
在使用mongodb資料庫查詢資料並排序時,遇到一個bug:
Error: error: {
"$err" : "Executor error: Overflow sort stage buffered data usage of 33558548 bytes exceeds internal limit of 33554432 bytes",
"code" : 17144
}
查閱資料之後發現這是因為mongodb排序有一個限制,即: 參與sort的資料的size最大不能超過32MB限制。
在我的程式碼中,採取瞭如下措施,
- 對查詢加入了filter
- 發現返回的資料本身就是根據時間排序的,於是直接去掉了sort
事實上針對大多數的情況,可以採取如何兩種方式解決
- 加入正確的索引
- 修改預設配置,擴大記憶體
其他問題
1.使用windows git bash工具根據埠號關閉指定的執行中的專案?
使用netstat命令,顯示當前所有程序,獲取要關閉的埠的pid
使用
taskkill /PID 1234
就可以終止對應的程序。
終止成功的資訊如下:
SUCCESS: Sent termination signal to the process with PID 12332.
注意要在windows的cmd執行這個kill命令,在git bash裡面執行就會失敗。