Time of Update: 2017-01-19
多發和使用者驗證下面先來介紹如何?將郵件發送給多個收件者和如何利用Authenticators對象實現使用者驗證。 指定收件者的時候,我們可以有兩種方法來指定。上篇部落格是在發送郵件的時候臨時指定收件者,其實還可以在Message對象中指定。message.addRecipient(Message.RecipientType.TO,new InternetAddress(” 995812509@99.com ”));
Time of Update: 2017-01-19
先講述一下Java中的應用程式和進程相關的概念知識,然後再闡述如何建立線程以及如何建立進程。下面是本文的目錄大綱:一.Java中關於應用程式和進程相關的概念二.Java中如何建立線程三.Java中如何建立進程一.Java中關於應用程式和進程相關的概念在Java中,一個應用程式對應著一個JVM執行個體(也有地方稱為JVM進程),一般來說名字預設為java.exe或者javaw.exe(windows下可以通過工作管理員查看)。Java採用的是單線程編程模型,即在我們自己的程式中如果沒有主動建立線程
Time of Update: 2017-01-19
一個 Java 方法是為了執行某個操作的一些語句的組合。舉個例子來說,當你調用 System.out.println 方法時,系統實際上會執行很多語句才能在控制台上輸出資訊。現在你將學習怎麼建立你自己的方法,他們可以有傳回值也可以沒有傳回值,可以有參數,也可以沒有參數,重載方法要使用相同的方法名稱,並在程式設計中利用抽象的方法。建立方法我們用下面的例子來解釋方法的文法:public static int funcName(int a, int b) { // body}在這裡 public
Time of Update: 2017-01-19
在前兩篇文章中, 我們實現了同步/非同步傳送簡訊以及限制傳送簡訊頻率.這一篇, 我們介紹一下限制每日向同一個使用者(根據手機號和ip判斷)傳送簡訊的次數1、資料表結構由於需要記錄整天的發送記錄, 因此這裡我們將資料儲存到資料庫中. 資料表結構如下:type為驗證碼的類型, 比如註冊, 重設密碼等.sendTime的預設值為目前時間.2、限制日發送次數我們這裡需要用到上一篇中提到的介面和實體類.DailyCountFilter.javapublic class DailyCountFilter
Time of Update: 2017-01-19
本篇是傳送簡訊的第二部分, 這裡我們介紹一下如何限制向同一個使用者(根據手機號和ip)傳送簡訊的頻率。1、使用session如果是web程式, 那麼在session中記錄上次發送的時間也可以, 但是可以被繞過去. 最簡單的, 直接重啟瀏覽器 或者 清除cache等可以標記session的資料, 那麼就可以繞過session中的記錄. 雖然很多人都不是電腦專業的, 也沒學過這些. 但是我們需要注意的是, 之所以限制發送頻率, 是為了防止"簡訊炸彈",
Time of Update: 2017-01-19
本篇本章是傳送簡訊的第一部分, 說一下同步/非同步傳送簡訊的代碼, 以後幾篇我們稍微完善一下功能, 添加發送頻率的限制和日發送次數的限制.傳送簡訊的方法可能不少, 我們的方法是使用服務商提供的服務. 一般來說, 這些服務都是和語言無關的, 這裡我們使用java寫樣本程式.1、傳送簡訊的介面根據自己的情況選擇服務商。2、開發文檔從開發文檔中我們可以看到. 可以直接使用http請求也可以使用WebService請求傳送簡訊.
Time of Update: 2017-01-19
周五閑來無事,基於上一篇關於淺析12306售票演算法(java版)理論,進行了java編碼實踐供各位讀者參考(以下為相關代碼的簡單描述)1.訂票工具類1.1初始化一列車廂的票據資訊/*** 產生Ticket資訊** @param train* @return*/public static List<Ticket> initTicketList(Train train) {List<Ticket> result = new ArrayList<Ticket>()
Time of Update: 2017-01-19
下文通過幾種方法給大家介紹java數組數字出現次數,具體內容如下所示:方法一:數組排序,然後中間值肯定是要尋找的值。
Time of Update: 2017-01-19
很多正則引擎都支援命名分組,java是在java7中才引入這個特性,文法與.Net類似(.Net允許同一運算式出現名字相同的分組,java不允許)。命名分組很好理解,就是給分組進行命名。下面簡單示範一下java中如何使用以及注意事項。1.正則中定義名為NAME的分組(?<NAME>X)這裡X為我們要匹配的內容,注意,在這個命名不能重複,名字也不能以數字開頭!2.反向引用NAME組所匹配到的內容\k<NAME>注意,反向引用是針對組所匹配到的內容,而非組的運算式。3
Time of Update: 2017-01-19
數字通常情況下,當我們處理數字時,使用未經處理資料類型,如 byte,int,long,double 等。樣本int i = 5000;float gpa = 13.65;byte mask = 0xaf;然而,在開發中,我們會遇到需要使用對象而不是未經處理資料類型的情況。為了實現這個, Java 為每個未經處理資料類型提供封裝類。所有的封裝類 (Integer, Long, Byte, Double, Float, Short) 是抽象類別 Number
Time of Update: 2017-01-19
定義與結構
Time of Update: 2017-01-19
定義:給定一種語言,定義他的文法的一種表示,並定義一個解譯器,該解譯器使用該表示來解釋語言中句子。類型:行為類模式類圖:解譯器模式是一個比較少用的模式,本人之前也沒有用過這個模式。下面我們就來一起看一下解譯器模式。 解譯器模式的結構抽象解譯器:聲明一個所有具體運算式都要實現的抽象介面(或者抽象類別),介面中主要是一個interpret()方法,稱為解釋操作。具體解釋任務由它的各個實作類別來完成,具體的解譯器分別由終結符解譯器TerminalExpression和非終結符解譯器Nonte
Time of Update: 2017-01-19
定義:提供一種方法訪問一個容器物件中各個元素,而又不暴露該對象的內部細節。類型:行為類模式類圖:如果要問java中使用最多的一種模式,答案不是單例模式,也不是原廠模式,更不是策略模式,而是迭代器模式,先來看一段代碼吧:public static void print(Collection coll){ Iterator it = coll.iterator(); while(it.hasNext()){ String str = (String)it.next();
Time of Update: 2017-01-19
定義:定義一組演算法,將每個演算法都封裝起來,並且使他們之間可以互換。類型:行為類模式類圖:策略模式是對演算法的封裝,把一系列的演算法分別封裝到對應的類中,並且這些類實現相同的介面,相互之間可以替換。在前面說過的行為類模式中,有一種模式也是關注對演算法的封裝——模版方法模式,對照類圖可以看到,策略模式與模版方法模式的區別僅僅是多了一個單獨的封裝類Context,它與模版方法模式的區別在於:在模版方法模式中,調用演算法的主體在抽象的父類中,而在策略模式中,調用演算法的主體則是封裝到了封裝類Cont
Time of Update: 2017-01-19
定義:使多個對象都有機會處理請求,從而避免了請求的寄件者和接收者之間的耦合關係。將這些對象連成一條鏈,並沿著這條鏈傳遞該請求,直到有對象處理它為止。類型:行為類模式類圖:首先來看一段代碼:public void test(int i, Request request){ if(i==1){ Handler1.response(request); }else if(i == 2){ Handler2.response(request); }else if(i == 3)
Time of Update: 2017-01-19
本文針對java動態代理進行知識點整理,具體內容如下一. JAVA的動態代理(比較官方說法) 代理模式是常用的java設計模式,他的特徵是代理類與委託類有同樣的介面,代理類主要負責為委託類預處 理訊息、過濾訊息、把訊息轉寄給委託類,以及事後處理訊息等。 代理類與委託類之間通常會存在關聯關係,一個代理類的對象與一個委託類的對象關聯,代理類的 對象本身並不真正實現服務,而是通過調用委託類的對象的相關方法,來提 供特定的服務。 按照代理的建立時期,代理類可以分為兩種。
Time of Update: 2017-01-19
本文討論的重點在於多線程應用程式的效能問題。我們會先給效能和擴充性下一個定義,然後再仔細學習一下Amdahl法則。下面的內容我們會考察一下如何用不同的技術方法來減少鎖競爭,以及如何用代碼來實現。1、效能我們都知道,多線程可以用來提高程式的效能,背後的原因在於我們有多核的CPU或多個CPU。每個CPU的核心都可以自己完成任務,因此把一個大的任務分解成一系列的可彼此獨立啟動並執行小任務就可以提高程式的整體效能了。可以舉個例子,比如有個程式用來將硬碟上某個檔案夾下的所有圖片的尺寸進行修改,應用多線程技
Time of Update: 2017-01-19
在寫代碼的時候有個問題:包內定義了一個介面類,另外一個包要實現它,這裡採用介面隔離與依賴倒置原則,將兩個包的依賴關係倒置過來。但是,這裡就遇到了一個問題,實作類別採用原廠模式來執行個體化,所以實作類別就不想暴露給包外,但是實作類別還要實現public介面。所以這裡有產生了一個疑問,如果類是default類型,成員函數是public類型,那麼訪問限制是怎樣的呢?實現驗證1. 先在一個包中定義一個介面類:package mytest public interface
Time of Update: 2017-01-19
今天我們來一起瞭解一下Java語言中的存取權限控制。在討論存取權限控制之前,先來討論一下為何需要存取權限控制。考慮兩個情境: 情境1:工程師A編寫了一個類ClassA,但是工程師A並不希望ClassA被該應用中其他所用的類都訪問到,那麼該如何處理? 情境2:如果工程師A編寫了一個類ClassA,其中有兩個方法fun1、fun2,工程師只想讓fun1對外可見,也就是說,如果別的工程師來調用ClassA,只可以調用方法fun1,那麼該怎麼處理? 此時,存取權限控制便可以起到作用了。 在Jav
Time of Update: 2017-01-19
定義:將一個請求封裝成一個對象,從而讓你使用不同的請求把用戶端參數化,對請求排隊或者記錄請求日誌,可以提供命令的撤銷和恢複功能。類型:行為類模式類圖:命令模式的結構