Time of Update: 2018-07-26
行為模式主要是責任和演算法的抽象化。行為模式不僅僅是關於類和對象的,而且是關於它們之間的相互作用的。行為模式分為類的行為模式和對象的行為模式兩種。 類的行為模式 類的行為模式使用繼承關係在幾個類之間分配行為。對象的行為模式 對象的行為模式則使用對象的彙總來分配行為。 行為模式包括: 策略模式 模板方法模式 觀察者模式 迭代器模式 責任鏈模式 命令模式 備忘錄模式
Time of Update: 2018-07-26
定義:為其他對象提供一種代理以控制對這個對象的訪問。 類型:對象結構型模式 類圖: Proxy模式涉及的角色 抽象主題角色(Subject):聲明了代理主題和真實主題的公用介面,使任何需要真實主題的地方都能用代理主題代替。
Time of Update: 2018-07-26
ScheduledExecutorService擴充了ExecutorService介面,提供定時執行任務的功能(類似Timer)。 API 說明 Method Desc schedule(Callable<V> callable, long delay, TimeUnit unit) 建立並執行在給定延遲後啟用的 ScheduledFuture。
Time of Update: 2018-07-26
最近在研究Android AsyncTask 源碼的時候,發現用到了很多JAVA SE 多線程的知識,於是回過頭來查閱JDK 文檔複習了一下Java多線程的相關知識,做一個筆記方便以後尋找。 JDK API 中關於Callable介紹 Callable 介面類似於 Runnable,兩者都是為那些其執行個體可能被另一個線程執行的類設計的。但是Runnable 不會返回結果,並且無法拋出經過檢查的異常。
Time of Update: 2018-07-26
定義:給定一種語言,定義他的文法的一種表示,並定義一個解譯器,該解譯器使用該表示來解釋語言中句子。 類型:類行為型模式 類圖: 解譯器模式的結構 抽象解譯器:聲明一個所有具體運算式都要實現的抽象介面(或者抽象類別),介面中主要是一個interpret()方法,稱為解釋操作。具體解釋任務由它的各個實作類別來完成,具體的解譯器分別由終結符解譯器TerminalExpression和非終結符解譯器NonterminalExpression完成。
Time of Update: 2018-07-26
在寫架構時 經常需要掃描classpath指定包路徑下帶有某個Annotation的類,自己整理了一下 封裝成一個工具類了,供大家參考。 原始碼 ClassPathResourceScanner.java 如下: package com.bytebeats.jupiter.ioc;import com.bytebeats.jupiter.util.ClassHelper;import org.slf4j.Logger;import
Time of Update: 2018-07-26
定義:提供一種方法順序訪問一個彙總對象中各個元素,而又不暴露該對象的內部細節。 類型:對象行為型模式 類圖: 如果要問java中使用最多的一種模式,答案不是單例模式,也不是原廠模式,更不是策略模式,而是迭代器模式,先來看一段代碼吧: [java] view plain copy
Time of Update: 2018-07-26
定義:封裝某些作用於某種資料結構中各元素的操作,它可以在不改變資料結構的前提下定義作用於這些元素的新的操作。 類型:對象行為型模式 類圖: 訪問者模式可能是行為類模式中最複雜的一種模式了,但是這不能成為我們不去掌握它的理由。我們首先來看一個簡單的例子,代碼如下: [java] view plain copy
Time of Update: 2018-07-26
public static void main(String[] args) { createMark("e://image//a.gif","e://image//b.jpg"); } /** * 在圖片上添加浮水印圖片和文字 * @param filePath 原圖片檔案路徑 * @param
Time of Update: 2018-07-26
平時習慣了通過IDE來建立maven項目,比如Eclipse 使用Maven命令建立Maven項目,需要用到Maven Archetype Plugin, The Archetype Plugin allows the user to create a Maven project from an existing template called an archetype. It also allows the user to create an archetype
Time of Update: 2018-07-26
package com.example.decript;import java.io.UnsupportedEncodingException;import java.security.InvalidKeyException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import
Time of Update: 2018-07-26
最近在項目中使用HttpClient時,遇到這樣的問題,異常資訊如下: 資訊: Retrying connect 2013-1-23 16:36:31 org.apache.http.impl.client.DefaultRequestDirector tryConnect 資訊: I/O exception (java.net.SocketException) caught when connecting to the target host: No buffer space
Time of Update: 2018-07-26
在JDK1.5 中新增java.util.concurrent(J.U.C) 包,它建立在CAS之上。CAS是非阻塞演算法的一種常見實現,相對於synchronized這種阻塞演算法,它的效能更好。 樂觀鎖 樂觀鎖( Optimistic Locking)其實是一種思想。相對悲觀鎖而言,樂觀鎖假設認為資料一般情況下不會造成衝突,所以在資料進行提交更新的時候,才會正式對資料的衝突與否進行檢測,如果發現衝突了,則讓返回使用者錯誤的資訊,讓使用者決定如何去做。
Time of Update: 2018-07-26
基本概念 樹 除了根節點之外,每個節點只要一個父節點,根節點沒有父節點。除了分葉節點之外,所有節點都有一個或者多個節點,分葉節點沒有子節點。父節點和子節點之間用指標相連。 二叉樹 所謂二叉樹是樹的一種特殊結構,在二叉樹中每個節點最多隻能擁有兩個子節點。 二叉樹具有以下性質: 非空二叉樹的第n層上至多有2^(n-1)個元素。 深度為h的二叉樹至多有2^h-1個結點。 資料結構定義 public class BTNode { int
Time of Update: 2018-07-26
最近的工作中需要使用GZIP格式壓縮文本以縮減檔案大小,於是乎接觸到了GZIPInputStream/GZIPOutputStream這兩個類,還有ByteArrayOutputStream這個類。這裡寫了一個簡單的範例程式碼記錄一下,以備不時之需。 package com.ricky.java.test.junit;import java.io.ByteArrayOutputStream;import
Time of Update: 2018-07-26
一 FreeMarker簡介 Apache FreeMarker是一個Java模板引擎庫,官網:http://freemarker.incubator.apache.org/。 Apache FreeMarker is a template engine: a Java library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based
Time of Update: 2018-07-26
最近接觸Solr比較多,感覺Solr提供的外掛程式式開發方式很酷,Solr對開發人員提供了一個核心api jar包,開發人員如果想擴充Solr某一項功能 比如 中文分詞,只需要繼承Solr提供的分詞介面添加自己的實現,然後把自己的分詞jar包拷貝到Solr指定目錄,並在solr設定檔中配置,重啟即可生效。 本文會涉及到自訂類載入,所以先介紹一下java類載入器的原理和工作機制,熟悉的同學可以直接跳過。 java類載入器
Time of Update: 2018-07-26
最近項目中有一個需求:在自增的id後加上N位隨機數,提高安全性,自己寫了一個簡單的實現方式。 思路: 通過JDK 的Math.random()函數產生一個[0,1]範圍內的隨機數,將這個隨機數乘以 9,然後再加1 就構成了[1,10]範圍的一個隨機數了(1位隨機數)。依次類推,要產生2位的隨機數只需要將Math.random()乘以 90,然後加上10就可以了。 實現代碼: /** * 產生4位隨機數 * @return */
Time of Update: 2018-07-26
最近項目中需要對電話號碼進行過濾,去掉IP號("1790", "1791", "1793", "1795","1796", "1797", "1799"),+86等首碼,跟大家分享一下。 package com.example.offline;public class TrimNumberTest {private static final
Time of Update: 2018-07-26
一Java異常體繫結構 java.lang.Object ----java.lang.Throwable --------java.lang.Exception ------------java.lang.RuntimeException --------java.lang.Error ------------java.lang.ThreadDeath Throwable類是 Java 語言中所有錯誤或異常的超類。只有當對象是此類(或其子類之一)的執行個體時,才能通過 JAVA