原创 spring-boot從創建到部署(內含swagger配置)

今天介紹一下spring-boot這個開箱即用的框架,從創建到部署 創建spring-boot項目 首先點擊creat new project 然後點擊spring initializr 輸入組名和項目名 選擇web

原创 mysql桶思想的應用

原來一直沒有想過數組是可以存到mysql中的,當今天真正使用時,才發現了桶思想的強大之處。 什麼是桶思想呢? 桶排序大家一定都知道,這是一個犧牲了空間,來將時間複雜度降低到了線性的算法,而它的特點就是先劃分出一定數量的桶,然後

原创 跨域丟失cookie的問題

2018年的第一篇博客,新的開始,新的起點 前幾天在寫一個利用cookie存儲token的登陸demo時遇到了跨域丟失token的問題,在這裏分享一下解決的方法。 案例分析 前端使用了vue-reource的$http進行請求後

原创 Comparable和Comparator

今天來分析一下Comparable和Comparator的區別,以及源碼的解讀。 Comparable 源碼: public interface Comparable<T> { public int compareTo(T

原创 併發工具包之CountDownLatch|CyclicBarrier|Semaphore

在java的併發包中爲我們提供了三種併發控制的手段,他們分別是CountDownLatch|CyclicBarrier|Semaphore,今天我們分別來講解一下這三種方法以及使用場景 CountDownLatch 特點: 首

原创 java海量數據的簡單清洗

這周接到了一個對爬取數據進行清理的任務,具體需求爲,有一張接近百萬的key值表,每一個key對應一個對象,但是在es中存在大量的相似對象,需要按照相似度清除key值表中重複的對象。 下面簡單的介紹一下本人的思路。 文件準備 因爲百萬級數據

原创 常用排序的java實現

今天來講解一下幾種常用的排序以及java的實現方法 冒泡排序 時間複雜度爲O(n^2) 原理:每次比較相鄰兩個元素,如果順序錯誤就交換 實現 private static int[] bubbleSort(int[] a, int n)

原创 Redis在項目中的幾種使用

今天來講一講項目中使用redis的幾種用法 實現贊踩 可以使用集合或者哈希表來完成贊踩 使用集合的sadd和srem來完成時,首先我們需要創建兩個集合,一個贊集合,一個踩集合 點贊時:向贊集合添加該用戶,刪除踩集合中的該用戶 踩時:向

原创 HashMap源碼分析

今天來分析一下HashMap的實現原理,雖然枯燥但卻是我們java學習的必經之路 HashMap的特點 線程不安全(未使用同步) 可以存儲null的鍵和值(null存儲在數組的第一個元素) 使用數組+鏈表+紅黑樹(1.8新增)實現

原创 分佈式Session

今天我們來講解一下分佈式Session的幾種實現方法 爲什麼要使用分佈式Session 在分佈式場景下,負載均衡會將用戶請求隨機分發,如果單機存儲Session,會造成用戶需要頻繁登陸。 分佈式Session的實現方式 粘性Sessio

原创 Redis發佈訂閱模式淺析

最近寫一個模塊時,用到了緩存,由於是兩個服務之間的通信,所以會遇到數據不一致的情況,最後選擇了使用Redis的發佈訂閱模式進行解決。 什麼是發佈訂閱? 這就如同是我們常用的朋友圈,我們發送朋友圈時就是一個發佈者,而能看到這條朋友圈的人就是

原创 spring-boot+jpa的簡單使用

新手入門Hibernate和Mybatis以及配置繁重的Spring-MVC還有些難度,今天就從實用出發,從零開始搭建一個Spring-Boot+Jpa的服務 什麼是Jpa? Jpa是Java Persistence API的簡稱。 致

原创 ReentranLock重入鎖源碼分析

今天來分析一下重入鎖的源碼 ReentranLock定義 重入鎖ReentranLock是一種支持重進入的鎖,表示該鎖可以支持一個線程對資源重複加鎖,並且分爲公平鎖和非公平鎖 synchronized synchronized大家一定都很

原创 基於kafka+logback的異步持久化日誌

最近一直在忙着攻克個人開源的用戶中心中異步日誌的功能,今天終於完成了這個困擾我許久的問題。 服務器kafka如何配置 當我們沒有修改配置時,會遇到生產者連接服務器失敗的情況 advertised.host.name=47.94.248.3

原创 java虛擬機淺顯分析

普及一下虛擬機中的一些區域,垃圾收集算法,垃圾收集器等。 運行時數據區域 程序計數器 線程私有 一塊較小的內存空間 記錄正在執行的java方法的虛擬機字節碼指令的地址(native方法爲空) 沒有OutOfMemoryError的情況