原创 遞歸回調的實現

背景 異步樹展開如果要實現展開回調比較困難,因爲展開的過程是異步的。 前端:js引擎雖然是單線程執行,但是操作ui的線程是單獨的,樹的展開過程,就經歷了js引擎線程+ui線程的過程,展開代碼和展開回調的代碼在不同時機執行的,本質上就是異步的

原创 js同步http請求並加緩存的實現

緩存實現 背景:有時候接口返回的數據短期內是不會改變的,可以對http接口返回的數據加緩存,即減少了後端請求,又加快了前端性能,真是一舉兩得! 實現原理:用js的Object對象即可實現緩存,{} 表示一個js對象,對象屬性名是唯一的可以作

原创 element-ui tree 手動進行展開(異步樹也可以)

背景 項目中用到了vue的element-ui框架,用到了el-tree組件。由於數據量很大,使用了數據懶加載模式,即異步樹。異步樹採用複選框進行結點選擇的時候,沒法自動展開,官方文檔找了半天也沒有找到好的辦法! 找不到相關的配置,或者方法

原创 FeignClient設置超時時間(包括方法級別)

一、簡介Spring Cloud Feign Client 是一個方便的聲明式 REST 客戶端,我們用它來實現微服務之間的通信。 在這個簡短的教程中,我們將展示如何設置自定義的 Feign 客戶端連接超時,包括全局和每個客戶端。 2. 默

原创 Timer和ScheduledThreadPoolExecutor的區別及源碼分析

Timer 基於單線程、系統時間實現的延時、定期任務執行類。具體可以看下面紅色標註的代碼。 public class Timer { /** * The timer task queue. This data stru

原创 數字正則式(包含整數、小數、負數)

/^-?(0|([1-9][0-9]*))(\.[\d]+)?$/

原创 寫了一個簡易的本地緩存fastmap

背景: 一般我們可以用HashMap做本地緩存,但是HashMap功能比較弱,不支持Key過期,不支持數據範圍查找等。故在此實現了一個簡易的本地緩存,取名叫fastmap。   功能: 1.支持數據過期 2.支持等值查找 3.支持範圍查找

原创 java基於TreeMap或ConcurrentSkipListMap實現數據的範圍查找

背景 等值查找,有數組、列表、HashMap等,已經足夠了,範圍查找,該用什麼數據結構呢?下面介紹java中非常好用的兩個類TreeMap和ConcurrentSkipListMap。   TreeMap的實現基於紅黑樹     每一棵紅黑

原创 java spi實現案例

簡介 SPI(Service Provider Interface),是JDK內置的一種 服務提供發現機制,可以用來擴展和替換組件,主要是被框架的開發人員使用。   核心代碼 spi接口定義 public interface UserS

原创 寫了一個開源的JAVA項目openapi,尋有緣人一起參與

最近花了兩週時間寫了一個JAVA開源項目openapi, 項目是爲了解決接口之間調用的加解密和驗籤問題。 項目地址:https://github.com/hdwang123/openapi 項目介紹: openapi 致力於提供一個能夠快速

原创 基於非對稱加密和驗籤實現接口的安全開放(openapi的實現)

背景 對外服務的接口爲了安全起見,往往需要進行相應的安全處理:數據加密傳輸和身份認證。數據加密傳輸有對稱加密和非對稱加密兩種,爲了更加安全起見採用非對稱加密比較好些,身份認證則採用數字簽名可以實現。   程序流程       核心代碼 客

原创 第一次發佈jar包到maven中央倉庫

1.github上上傳項目(略) 2.在sonatype上註冊賬號 https://issues.sonatype.org/secure/Dashboard.jspa 注意記住用戶名和密碼 3.在sonatype創建問題        4

原创 基於hutool實現非對稱加密(RSA和國密SM2)的加解密和加簽驗籤

背景 對外服務的接口爲了安全起見,往往需要進行相應的安全處理:數據加密傳輸和身份認證。數據加密傳輸有對稱加密和非對稱加密兩種,爲了更加安全起見採用非對稱加密比較好些,身份認證則採用數字簽名可以實現。 非對稱加密缺點:加解密速度慢、RSA有最

原创 使用hutool切換Excel默認激活的sheet

Workbook workbook = WorkbookUtil.createBook(file); workbook.setActiveSheet(workbook.getSheetIndex(sheetName)); ExcelWri

原创 wps獲取excel文件中所有的sheet數量和名稱

一、獲取所有的sheet數量 1.點擊:開發工具->WPS宏編輯器    2.新增宏代碼 function SHEETS() { return Worksheets.Count }       3.按Ctrl+S 保存宏,另