原创 防止按鈕被快速多次點擊,防止多次提交

一開始試了把ansyc設置成false,但是並沒有用,在網上找了下,發現可以用以下方式解決。beforeSend:請求發送前,complete:請求完成(不管請求成功還是失敗)   $.ajax({ async:true

原创 JDK1.8新特性之接口類的新關鍵字default

寫在前面:發現這個新特性是在看容器類源碼時,看到Iterator類的時候發現接口類竟然有方法體,開始懷疑自己對接口定義的概念,於是又查了一下,才發現這是jdk1.8的新特性(好吧我承認我發現的有點晚T.T)public interface

原创 java 單鏈表反轉

將單向鏈表發轉方向,頭變尾,尾變頭,將鏈表調個個兒。 思路:定義三個引用,pre爲上一結點,cur爲當前節點,nex爲下一結點。 把cur的下一節點暫存到nex中,然後將cur的下一節點指向pre,再將pre指向cur,cur指向nex。

原创 用策略模式重構工作中的代碼

策略模式: 所謂策略模式,其思想是針對一組算法,將每一種算法都封裝到具有共同接口的獨立的類中,從而是它們可以相互替換。策略模式的最大特點是使得算法可以在不影響客戶端的情況下發生變化,從而改變不同的功能。 實際項目中,重構前的代碼: if

原创 JAVA中對CAS算法的應用

CAS算法:Compare and Swap比較並交換。總共由三個操作數,一個內存值v,一個線程本地內存舊值a(期望操作前的值)和一個新值b,在操作期間先拿舊值a和內存值v比較有沒有發生變化,如果沒有發生變化,才能內存值v更新成新值b,發

原创 在實際工作中理解樂觀鎖和悲觀鎖

先把需求提出:在用戶提交表單數據後,保存表單數據之前,通過切面手段或硬編碼生成一個表單編號放入表單數據中。生成編號的規則是A3501047800002009120003A+12位單位編碼+年月+四位順序號(按照A+12位單位編碼+年月去查

原创 關於HashSet,LinkedHashSet ,TreeSet

HashSet這個類,表面上是Set接口的實現類,繼承自Collection,但卻是基於HashMap來實現的。之所以和List、Queue同屬於Collection子類,我想是因爲他們都是線性結構的吧。而Map類Key的唯一性正好適用於

原创 java多線程模擬死鎖問題

什麼時死鎖呢?來自百度百科的解釋:死鎖是指兩個或兩個以上的進程在執行過程中,由於競爭資源或者由於彼此通信而造成的一種阻塞的現象,若無外力作用,它們都將無法推進下去。用比較好理解的大白話來說就時線程A拿到了資源1對象的鎖,接下來準備要再拿資

原创 SpringCloud之註冊服務提供者和註冊服務消費者

上篇文章講到了如何利用SpringBoot快速搭建一個SpringCloud的Eureka Server集羣。這篇來講一下如何創建並向Eureka Server集羣註冊一個或多個服務提供者、服務消費者。服務消費端這是我們開發環境中的目錄結

原创 SpringCloud之高可用註冊中心Eureka Server集羣搭建

Spring Cloud的Eureka Server的高可用實際上就是將自己作爲服務向其他服註冊中心註冊自己,形成一組互相註冊的服務註冊中心,以實現服務清單的互相同步,達到高可用的效果。接下來介紹下如何搭建一個服務註冊中心集羣。下圖是文件

原创 SpringCloud之服務治理機制

服務提供者服務註冊:服務提供者在啓動的時候通過發送Rest請求的方式將自己註冊到Eureka Server上,同時帶上了自身服務的一些元數據信息。Eureka Server在收到這個請求後,將元數據信息存儲在一個雙層結構Map中,第一層的

原创 HashMap底層分析

最近整理HashMap的知識,發現HashMap的底層數據結構在jdk1.8版本之後發生了變化,在1.8版本之前,和散列表的一樣,是由散列桶(數組)+鏈表組成的。在1.8版本之後,結構如下圖所示,由散列桶(數組)+鏈表+紅黑樹實現。先貼出

原创 java8 JDK1.8 stream 對數據分組操作

之前想對數據進行分組統計之類的操作,需要使用關係型數據庫的group by等操作來實現。但這兩天工作中碰到一個問題,數據從其他系統獲取而不再是我從數據庫中取了,也就是說我沒法使用關係型數據庫提供的操作方法了。瞭解了一下java8中stre

原创 爲什麼覆蓋equals時也要覆蓋hashCode方法

看了《effective java》第九條。特此對equals方法和hashCode方法做此總結現在假設我們有一個矩形類Rectangle public class Rectangle { private int length;

原创 java中volatile關鍵字

volatile提供可見性支持,但是不能控制併發。在說volatile關鍵字之前,要先提一下JMM(java內存模型)對java線程之間通信的控制,線程之間的共享變量存儲在主內存(Main Memory)中,每個線程都有一個私有的本地內存