原创 nginx 訪問 nodejs 慢的問題

1.問題現象 通過nginx 訪問 nodejs 訪問特別慢。但是通過nodejs 直接訪問速度很快響應。 2.日誌錯誤 upstream timed out (10060: A connection attempt failed beca

原创 mysql 自定義函數寫法

1.業務場景 有時候我們希望通過sql語句解決一些複雜的問題,比如根據一個ID 查詢組織的路徑。這個時候我們可以使用函數來實現。 2.函數編寫 CREATE FUNCTION getGroupById(groupid varchar(2

原创 解析HTML字符串成AST樹

1. 如何將一個字符傳轉換成一個AST樹結構。 直接上代碼: const attribute = /^\s*([^\s"'<>\/=]+)(?:\s*(=)\s*(?:"([^"]*)"+|'([^']*)'+|([^\s"'=<>`

原创 使用 wireshark 捕獲 請求包

1.出錯場景 今天遇到一個問題,在用戶登錄時,發現用戶在登錄的時候,一個用戶登錄正常,一個用戶登錄報錯,報錯的原因時400錯誤,分析對比發現一個用戶的分配用戶組多,一個分配的少,其中多的那個出錯了。 2. 解決辦法 後來同事通過直接在IDE

原创 OAuth2 當前登錄用戶修改

1.業務說明 有些情況下,我們希望用戶登錄後,可以修改用戶的某些信息,比如修改當前的公司信息。 2.實現方法 @Resource TokenStore tokenStore; public JsonResult updateCurrent

原创 spring 使用異步任務

1.說明 在springboot 中使用 @Async 實現異步任務處理,下面介紹一下如何實現這個。 2.實現代碼 2.1 增加@EnableAsync @EnableAsync public class Demo1Application

原创 arthas 通過stack 命令查看堆棧調用

https://arthas.gitee.io/stack.html 很多時候我們都知道一個方法被執行,但這個方法被執行的路徑非常多,或者你根本就不知道這個方法是從那裏被執行了,此時你需要的是 stack 命令。 在 arthas 命令行執

原创 使用阿里的ARTHAS跟蹤方法耗時

使用命令跟蹤一個方法的耗時 在arthas 命令行下輸入命令 trace 類全路徑 監控的方法  trace com.redxun.bpm.core.service.BpmInstServiceImpl doStartProcess  tr

原创 redis 使用lua 生成流水號

在實際的業務場景中,我們會用到流水號。 之前的流水號做法是,使用redis的全局鎖。然後對數據庫進行更新,數據庫更新 這個也會有一些問題,比如對於同一個流水號,多個線程去更新,由於事務比較長,那麼就會導致數據庫被鎖定。 這個可以使用redi

原创 nvm node版本管理

1.說明 NVM是NODE JS的版本管理工具,可以安裝nodejs切換nodejs版本。 2.安裝NVM https://github.com/coreybutler/nvm-windows/releases 直接下一步安裝。 3.安

原创 vue前端面試題

1.vue 的響應式原理是什麼? const data={ name:"ray", age:29, friend:{ friendName:"小王" } }const oldArrayProto

原创 ARTHAS 使用

1.概述 ARTHAS是阿里巴巴 出品的一款java監控工具,本文介紹以下他的基本使用方法。 2.基本操作 2.1 啓動 java -jar arthas-boot.jar 2.2 基礎命令 命令 說明 dashboard 顯

原创 國內低代碼平臺

  1.道一 https://wbg.do1.com.cn/xueyuan/20897.html?sidebar-menu-id=471 2.天翎 http://www.teemlink.com/video.jsp 3.奧哲 氚雲 http

原创 數據庫不推薦使用外鍵約束

爲什麼不推薦使用外鍵約束。 比如訂單和訂單明細表,明細表通過訂單ID和訂單表進行關聯。 額外的檢查 在插入訂單明細的時候需要額外檢查訂單是否存在。 併發問題 外鍵約束會啓用行級鎖,在寫入訂單明細時,如果有事務對訂單表進行更新,那麼就會產生死

原创 線上排除問題流程

 排查CPU佔用高的代碼   1. 編寫代碼 public class Demo { public static void main(String[] args) { System.err.println("測試開