Time of Update: 2017-01-19
Apache POI 是用Java編寫的免費開源的跨平台的 Java API,Apache POI提供API給Java程式對Microsoft Office格式檔案讀和寫的功能。 項目下載頁:http://poi.apache.org/download.htmlApache POI 是建立和維護操作各種符合Office Open XML(OOXML)標準和微軟的OLE 2複合文檔格式(OLE2)的Java API。用它可以使用Java讀取和建立,修改MS
Time of Update: 2017-01-19
若代理類在程式運行前就已經存在,那麼這種代理方式被成為 靜態代理 ,這種情況下的代理類通常都是我們在Java代碼中定義的。 通常情況下, 靜態代理中的代理類和委託類會實現同一介面或是派生自相同的父類。一、概述1. 什麼是代理我們大家都知道微商代理,簡單地說就是代替廠家賣商品,廠家“委託”代理為其銷售商品。關於微商代理,首先我們從他們那裡買東西時通常不知道背後的廠家究竟是誰,也就是說,“委託者”對我們來說是不可見的;其次,微商代理主要以朋友圈的人為勘探,這就相當於為廠家做了一次對客戶群體的“過濾”
Time of Update: 2017-01-19
我們主要通過兩種形式提交向伺服器發送請求:URL、表單。而表單形式一般都不會出現亂碼問題,亂碼問題主要是在URL上面。通過前面幾篇部落格的介紹我們知道URL向伺服器發送請求編碼過程實在是實在太混亂了。不同的作業系統、不同的瀏覽器、不同的網頁字元集,將導致完全不同的編碼結果。如果程式員要把每一種結果都考慮進去,是不是太恐怖了?有沒有辦法,能夠保證用戶端只用一種編碼方法向伺服器發出請求?有!這裡我主要提供以下幾種方法一、javascript使用javascript編碼不給瀏覽器插手的機會,編碼之後再
Time of Update: 2017-01-19
* String類是不可變類,只要對String進行修改,都會導致新的對象產生。* StringBuffer和StringBuilder都是可變類,任何對字串的改變都不會產生新的對象。在實際使用時,如果經常需要對一個字串進行修改,例如插入、刪除等*
Time of Update: 2017-01-19
java中String、StringBuffer、StringBuilder是編程中經常使用的字串類,他們之間的區別也是經常在面試中會問到的問題。現在總結一下,看看他們的不同與相同。1.可變與不可變 String類中使用字元數組儲存字串,如下就是,因為有“final”修飾符,所以可以知道string對象是不可變的。 private final char
Time of Update: 2017-01-19
本文協助大家掌握Java多線程基礎知識來對應日後碰到的問題,具體內容如下一、Java多線程面試問題1. 進程和線程之間有什麼不同?一個進程是一個獨立(self contained)的運行環境,它可以被看作一個程式或者一個應用。而線程是在進程中執行的一個任務。Java運行環境是一個包含了不同的類和程式的單一進程。線程可以被稱為輕量級進程。線程需要較少的資源來建立和駐留在進程中,並且可以共用進程中的資源。2.
Time of Update: 2017-01-19
解釋:程式調用自身的編程技巧叫做遞迴。程式調用自身的編程技巧稱為遞迴( recursion)。遞迴做為一種演算法在程式設計語言中廣泛應用。 一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞迴策略只需少量的程式就可描述出解題過程所需要的多次重複計算,大大地減少了程式的代碼量。遞迴的能力在於用有限的語句來定義對象的無限集合。遞迴的三個條件:1.邊界條件2.遞迴前進段3.遞迴返回段當邊界條件不滿足時,遞迴前進;
Time of Update: 2017-01-19
java常量池技術java中常量池技術說的通俗點就是java層級的緩衝技術,方便快捷的建立一個對象。當需要一個對象時,從池中去擷取(如果池中沒有,就建立一個並放入池中),當下次需要相同變數的時候,不用重新建立,從而節省空間的。java八種基本類型的封裝類和對象池java中的基本類型的封裝類、其中Byte、Boolean、Short、Character、Integer、Long實現了常量池技術,(除了Boolean,都只對小於128的值才支援)比如,Integer對象Integer i1 = 10
Time of Update: 2017-01-19
在本文中,筆者向大家介紹下Java中一個非常重要也非常有趣的特性,就是自動裝箱與拆箱,並從源碼中解讀自動裝箱與拆箱的原理,同時這種特性也留有一個陷阱。開發人員如果不注意,就會很容易跌入這個陷阱。自動裝箱(Autoboxing)定義大家在平時編寫Java程式時,都常常以以下方式來定義一個Integer對象:Integer i=100;從上面的代碼中,大家可以得知,i為一個Integer類型的引用,100為Java中的基礎資料類型(primitive data
Time of Update: 2017-01-19
在java程式開發中,ftp用的比較多,經常打交道,比如說向FTP伺服器上傳檔案、下載檔案,本文給大家介紹如何利用jakarta commons中的FTPClient(在commons-net包中)實現上傳下載檔案。一、上傳檔案原理就不介紹了,大家直接看代碼吧/** * Description: 向FTP伺服器上傳檔案 * @Version1.0 Jul 27, 2008 4:31:09 PM by 崔紅保(cuihongbao@d-heaven.com)建立 * @param url
Time of Update: 2017-01-19
檔案上傳下載前台:1. 提交方式:post2. 表單中有檔案上傳的表單項: <input type=”file” />3. 指定表單類型:預設類型:enctype="application/x-www-form-urlencoded"檔案上傳類型:multipart/form-dataFileUpload檔案上傳功能開發中比較常用,apache也提供了檔案上傳組件! FileUpload組件:1. 下載源碼2.
Time of Update: 2017-01-19
靜態變數初始化順序1.簡單規則首先先看一段最普遍的JAVA代碼:public class Test{ public static Test1 t = new Test1(); public static int a = 0; public static int b; public static void main(String[] arg) { System.out.println(Test.a); System.out.println(Test.b); }}class Test1{
Time of Update: 2017-01-19
下面我將以兩個例子來充分闡述java中多態的可拓展性,作為一名優秀的程式員,就必須瞭解程式的可拓展性,非常利於程式後續的開發。第一個例子:利用電腦的主板來作為例子,就我們所熟悉的電腦的主板,裡面是不是有很多模組,網卡,音效卡,想要用到這些功能,只能當主板運行起來,再給網卡和音效卡供電就可以,但這用軟體語言怎麼來實現呢?是不是先要主板跑起來,主板再讓音效卡或者網卡跑起來,但這樣做,拓展性不高讓音效卡和網卡跑起來的操作是重複的,而且有很多模組也具備這樣的功能,就單純讓主板上的模組跑起來,這是其一,萬
Time of Update: 2017-01-19
一、java異常總結:異常就是程式運行時出現不正常運行情況1.異常由來:通過java的類的形式對現實事物中問題的描述,並封住成了對象其實就是java對不正常情況描述後的對象體現2.對於問題的劃分有兩種:一種是嚴重的問題,一種是非嚴重的問題對於嚴重的,java通過Error類來描述對於Error一般不編寫針對性的代碼對其進行處理對於非嚴重的,java通過Exception類來描述對於Exception可以使用針對性的處理方式進行處理3.常見的異常有:數組角標越界異常,null
Time of Update: 2017-01-19
BigDecimal簡介 JDK文檔(中文)中的解釋如下: 不可變的、任意精度的有符號十進位數。BigDecimal 由任意精度的整數非標度值 和 32 位的整數標度 (scale) 組成。如果為零或正數,則標度是小數點後的位元。如果為負數,則將該數的非標度值乘以 10 的負 scale 次冪。因此,BigDecimal 表示的數值是 (unscaledValue × 10-scale)。具體解釋 1.“BigDecimal 對象的值是不可變的”。這點在BigDecimal
Time of Update: 2017-01-19
1.引言 借用《Effactive Java》這本書中的話,float和double類型的主要設計目標是為了科學計算和工程計算。他們執行二進位浮點運算,這是為了在廣域數值範圍上提供較為精確的快速近似計算而精心設計的。然而,它們沒有提供完全精確的結果,所以不應該被用於要求精確結果的場合。但是,商業計算往往要求結果精確,這時候BigDecimal就派上大用場啦。2.BigDecimal簡介 BigDecimal 由任意精度的整數非標度值 和32 位的整數標度 (scale)
Time of Update: 2017-01-19
Java開發中使用IDE工具肯定會很大程度的提高開發效率,但是有時候需要用java命令在伺服器上啟動Java工程代碼來完成一系列的功能 ,當然用ANT也非常方便。下面以簡單HelloWorld代碼為例子來記錄,如何使用最基本的Java命令。一、編寫HelloWorld,代碼如下:複製代碼 代碼如下:public class Hello{ public static void main(String[] args) {
Time of Update: 2017-01-19
單例有多種的寫法,本例是懶漢式單例的一種寫法。在高並發環境下需要注意的是:1.單例在並發訪問並調用其相應的getInstance方法的時候也會造成建立多個執行個體對象,加鎖是必要的。2.使用synchronized是比較好的解決方案,優點是代碼簡潔,缺點是在拋出異常的時候不能處理維護使系統處於良好狀態。3.顯示的lock設定是良好的解決方案。使用lock的代碼如下:package demo; import java.util.concurrent.locks.Lock; import
Time of Update: 2017-01-19
針對字串是數字和字母結合而進行的,如"a20"和"a9";比較而得出結果是"a20">"a9"。這種情況直接調用String的compareTo方法得出的結果是不是我們希望的。這個時候就需要寫自己的類並且實現Comarable介面來進行比較。這個是來源一次的面試題目,但是當時只有個思路。 思路: 1.轉換String為包含substring和Integer的list。(這裡用String的spit方法直接拆分不知道怎麼做?) 2.將list的資料進行比較。 3.如果list中的
Time of Update: 2017-01-19
最近在找工作,考官問我一個簡單的題目:“StringBuffer與StringBuilder的區別,它們的應用情境是什嗎?”,下面小編答案分享給大家,方便以後大家學習,以此也做個備錄。其實只要找下Google大神就有答案了:StringBuffer 與 StringBuilder 中的方法和功能完全是等價的,只是StringBuffer 中的方法大都採用了 synchronized 關鍵字進行修飾,因此是安全執行緒的,而 StringBuilder