原创 springboot實現商品秒殺功能

秒殺系統的實現主要有兩步: 1.分佈式限流 :使用消息隊列的方式,來實現削峯 2.分佈式鎖 分佈式鎖的實現方式 1.基於數據庫來實現分佈式鎖 2.基於redis中的實現分佈式鎖 3.基於zookeeper實現分佈式鎖 這裏以red

原创 Java項目中Excel百萬級別的導入導出

在Excel文件導入過程中實際上有兩個問題 (採用apche poi的方式) * xls的文件限制了不能一次性導出65536條數據 * 實際過程中Excel文件的解析有可能會造成內存溢出的問題 * mybatis(mysql)批量

原创 java中的set

常見的的set類型 HashSet: HashSet是採用hash表算法來實現的,其中的元素沒有按順序排列。(遍歷時輸出的元素的順序是不可控的) TreeSet:採用的紅黑樹算法,進行排序。(遍歷時輸出的元素的順序是默認是從小到

原创 java中的hashmap

Java hashmap原理 線性表:存儲在連續的內存地址,查詢快,插入和刪除慢。 鏈式表:存儲在間斷的,大小不固定,插入和刪除快,但是查詢的速度慢。 hashmap是以上兩種者折中的解決方案,插入或者刪除只需要動一部分即可。 H

原创 深入探索ES之關於Elasticsearch的基本瞭解

關於Elasticsearch的基本瞭解 Elasticsearch是實時的分佈式索引分析引擎,內部使用Lucene做索引與搜索。 實時:指的是新增的數據會很快被檢索到; 分佈式:可以動態調整集羣規模,彈性擴容。 Lucene:是

原创 常見的排序方法及其java實現

常見排序方法及其時間複雜度 1. 冒泡排序 n^2 2. 選擇排序 n^2 (尋找局部最小數) 3. 直接插入排序 n^2 (有序數組) 4. 希爾排序 nlogn (二分+直接插

原创 springboot中使用線程池

關於線程池 爲什麼需要線程池? 線程是處理器調度的基本單位。我們會爲每一個請求都獨立創建一個線程,而操作系統創建線程、切換線程狀態、結束線程都要使用CPU進行調度。 線程池的實現: ScheduledThreadPoolExec

原创 Go語言之基礎知識

Go語言的出現是爲了解決當下編程語言以下的問題: 對併發支持不友好 編譯速度慢 編程複雜 Go語言能幹什麼事? 服務器編程,以前你如果使用C或者C++做的那些事情,用Go來做很合適,例如處理日誌、數據打包、虛擬機處理、文件系

原创 面試中的集合算法題

1.使用Set 確保集合元素的唯一性 public void test(){ Set <Integer>set =new HashSet<>(); w

原创 springboot項目中使用rabbitmq

第一步:安裝RabbitMq Rabbit安裝 入門安裝: https://www.cnblogs.com/liaojie970/p/6138278.html 後臺管理: https://blog.csdn.net/weixin_

原创 redis令牌桶限流

常見的限流算法: 漏桶算法:能夠強行限制數據的傳輸速率,但是由於流速是恆定的,對突發特性的流量是無法處理的 (nginx限流使用的是漏桶算法,藉助limit_conn_zone模塊進行限流) 令牌桶算法 :能夠在限制數據的平均

原创 java項目中數據字典的實現

數據字典的使用 藉助redis進行緩存來處理字典值替換。 依賴 <!--redis--> <dependency> <groupId>org.springframework.boot</groupId> <artifact

原创 java中的mysql優化

Mysql優化 a.設計合理Schema(表結構) 通常來說把可爲NULL的列改爲NOT NULL不會對性能提升有多少幫助,只是如果計劃在列上創建索引,就應該將該列設置爲NOT NULL。 對整數類型指定寬度,比如INT(11)

原创 Java項目常用的工具類

使用常見的工具類來完成常見的細節操作: IOUtils IOUtils: Apache Commons IO用來處理輸入-輸出流 詳情介紹: https://blog.csdn.net/l2580258/article/detai

原创 java項目中布隆過濾器和布穀鳥過濾器

布隆過濾器 布隆過濾器是一個叫“布隆”的人提出的,它本身是一個很長的二進制向量,既然是二進制的向量,那麼顯而易見的,存放的不是0,就是1。 現在我們新建一個長度爲16的布隆過濾器,默認值都是0,就像下面這樣: 通過使用多個不同的哈