原创 快速失敗(fail-fast)與安全失敗(fail-safe)

fail-fast與fail-safe 在Collection集合的各個類中,有線程安全和線程不安全這2大類的版本。 對於線程不安全的類,併發情況下可能會出現fail-fast情況;而線程安全的類,可能出現fail-safe的情況。 一、併

原创 JVM內存模型與運行時數據區域

一、java內存模型 java定義內存模型的目的是:爲了屏蔽各種硬件和操作系統的內存訪問之間的差異。 java內存模型規定了所有的變量都存儲在主內存中,每條線程擁有自己的工作內存,工作內存保存了主內存中變量的副本。 線程對變量操作只能在

原创 Java中線程的5種狀態

線程的狀態 參考資料:https://www.cnblogs.com/happy... 參考JVM虛擬機一書的內容,進行總結。 關於線程的理解,我們將一個線程看成是一個任務task,這樣應該更好理解。 每一個線程就是一個任務,我們要執行一

原创 Java中的Set

Set接口的實現類 HashSet與LinkedHashSet HashSet與LinkedHashSet的關係就如同HashMap和LinkedHashMap一樣。HashSet內部保存了一個HashMap對象來存儲。 利用Map對象,

原创 Java中的泛型T

Java中的泛型T 一、問題: public static <T> List<T> filter(List<T> list) {...} 這個方法簽名中有3個T,乍一看第2、3個T都能理解,就是第一個T是什麼意思呢? 答案: 其實第2、3個

原创 Java中的動態代理

動態代理 1、先談靜態代理 對於靜態代理,我們已經很熟悉了。我們擁有一個抽象類,真實類繼承自抽象類並重寫其業務方法,代理類持有真實類的對象實例,在重寫業務方法中通過調用真實類的方法,並且添加自己的邏輯。這樣代理類就實現了對真實類的行爲代理。

原创 Java中的序列化tips

序列化Serializable 作用 1.當2個進程在進行遠程通信時,相互發送數據,數據都是以二進制的形式傳送的。如果我們要傳輸對象的話,就需要把對象轉化爲字節數組(二進制數據),接收方接收後反序列成對象。目的在於,傳送對象的狀態,也就是

原创 tomcat與nginx的反向代理

一、在linux上部署運行多個tomcat 1、以前的我們 雖然說是在linux上,但是windows上也是同樣的道理,只不過我們服務器都是選用linux罷了。 原先,自己有多個項目需要部署在linux上時,我的做法(新手的做法)是:在li

原创 Java中的queue

Queue接口的實現類 queue作爲隊列,java在實現的時候,直接實現了雙端隊列deque。這樣雙端隊列就囊括了隊列、雙端隊列、堆棧這3種角色的功能。所以我們在使用的時候使用的是Deque接口的實現類,當然Deque接口繼承自Queue

原创 Java中的map

Map散列表 hashmap1.7與1.8 JDK1.8的HashMap 因爲現在都用1.8了,所以還是以1.8的爲準。 關於HashMap以及ConcurrentHashMap,網上的分析已經很透徹了。這裏就提幾個點吧。 1.關於容量,H

原创 Java中的List集合

List接口的實現類 List表示有序的集合(元素可以重複),根據索引來尋找元素,放入其中的元素的存儲順序和放入順序是一致的。 ArrayList 0.繼承自AbstractList,擁有通用的方法如Iterator迭代器。實現List接

原创 JSON - 前後端數據交互的標準

JSON 一、介紹 官方JSON介紹 WIKI百科。 JavaScript object notation(記號法)。 JSON: JSON數據具有2種形式,一種是無序的key-value對的集合(對象),另一種是有序的值的集合(數組)。