Time of Update: 2017-01-18
final: 繼承的弊端:打破了代碼的封裝性,final的出現正好彌補了這一弊端 final關鍵字: 1-final是一個修飾符,可以修飾類,方法,變數; 2-final修飾的類不能被繼承 3-final修飾的方法不可以被覆蓋 4-final修飾的變數是一個常數,只能被賦值一次並且要在定義時就將其賦予某值 規則: 被定義final的常量要用大寫字母表示,各單詞之間用底線_來隔開. 執行個體一: class Father01{ final String FATHER01_NAME = "張三";
Time of Update: 2017-01-18
一個朋友的項目裡用到了fusionchart,同時需要提供多個報表的word下載功能。 毫無疑問,只是一個很棘手的問題。 fusionchart提供了服務端和用戶端產生圖片的功能,都是基於client端展示了flash以後做的。 朋友的項目是基於linux的,office本身的那套com機制是沒辦法通過jacob調用了。 純java的操作word,POI和docx4j,可以產生word文檔,table,插入圖片。
Time of Update: 2017-01-18
儘管我們通常認為通過JAVA的反射機制來訪問其它類的私人欄位和私人方法是可行的,其實並沒有那麼困難。 注釋:只有在單獨的JAVA程式中運行該代碼才有效,就像你做一些單元測試或者常規的程式。如果你嘗試在JAVA APPLET內使用該方法,你需要稍稍修改SecurityManager。但是,因為你不是經常需要與它打交道,這裡也就不再贅述了。 這裡是本次內容的列表: 1.訪問私人欄位。 2.訪問私人方法。 訪問私人欄位:
Time of Update: 2017-01-18
一、遞迴函式,通俗的說就是函數本身自己調用自己... 如:n!=n(n-1)! 你定義函數f(n)=nf(n-1)而f(n-1)又是這個定義的函數。。這就是遞迴二、為什麼要用遞迴:遞迴的目的是簡化程式設計,使程式易讀 三、遞迴的弊端:雖然非遞迴函式效率高,但較難編程,可讀性較差。遞迴函式的缺點是增加了系統開銷,也就是說,每遞迴一次,棧記憶體就多佔用一截 四、遞迴的條件:需有完成任務的語句,需滿足遞迴的要求(減小而不是發散) 五、遞迴進階: 1.用遞迴算n的階乘:
Time of Update: 2017-01-18
一、代理模式 代理模式是常用的java設計模式,特徵是代理類與委託類有同樣的介面,代理類主要負責為委託類預先處理訊息、過濾訊息、把訊息轉寄給委託類,以及事後處理訊息等。 代理類與委託類之間通常會存在關聯關係,一個代理類的對象與一個委託類的對象關聯,代理類的對象本身並不真正實現服務,而是通過調用委託類的對象的相關方法,來提供特定的服務。 按照代理的建立時期,代理類可以分為兩種: 靜態代理:由程式員建立或特定工具自動產生原始碼再對其編譯。在程式運行前代理類的.class檔案就已經存在了。 動態代理:
Time of Update: 2017-01-18
針對JSON 返回String 類型 兩次格式化就行了,例如: Java代碼 複製代碼 代碼如下: String s = "2012-08-25"; SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy年M月d日"); try { System.out.println(sdf2.format(sdf1.parse(s))); }
Time of Update: 2017-01-18
眾所周知,一般情況下我們使用android中的monkeyrunner進行自動化測試時,使用的是python語言來寫測試指令碼。不過,最近發現可以用java調用monkeyrunner Api,用java語言寫測試指令碼。 於是,就簡單研究了一下。這裡做一些總結。希望有對在研究的午飯可以有所用處。開始時,搜素到一些零碎的教程,說使用java調用monkeyrunner時,需要匯入android
Time of Update: 2017-01-18
String : 字串類型 一、建構函式 複製代碼 代碼如下: String(byte[ ] bytes):通過byte數組構造字串對象。 String(char[ ] value):通過char數組構造字串對象。 String(Sting original):構造一個original的副本。即:拷貝一個original。 String(StringBuffer buffer):通過StringBuffer數組構造字串對象。 例如: 複製代碼 代碼如下: byte[] b = {'a','b'
Time of Update: 2017-01-18
java註解是附加在代碼中的一些元資訊,用於一些工具在編譯、運行時進行解析和使用,起到說明、配置的功能。 註解不會也不能影響代碼的實際邏輯,僅僅起到輔助性的作用。包含在 java.lang.annotation 包中。 1、元註解 元註解是指註解的註解。包括 @Retention @Target @Document @Inherited四種。 1.1、@Retention: 定義註解的保留原則 Java代碼 複製代碼 代碼如下:
Time of Update: 2017-01-18
最近因為項目的國際化的需要,需要對整個項目的100來個外掛程式做國際化,這是一件痛苦的事情,因為純體力勞動。為了省點工作量,想著能不能寫個程式批處理了,減少點工作量,於是就有了下面的代碼。 1.讀取指定的(.java)檔案: 複製代碼 代碼如下: public static String readFile(String path) throws IOException { File f = new File(path); StringBuffer res = new StringBuffer()
Time of Update: 2017-01-18
在java多線程程式中,所有線程都不允許拋出未捕獲的checked exception,也就是說各個線程需要自己把自己的checked exception處理掉。這一點是通過java.lang.Runnable.run()方法聲明(因為此方法聲明上沒有throw exception部分)進行了約束。但是線程依然有可能拋出unchecked
Time of Update: 2017-01-18
Android由於其代碼是放在dalvik虛擬機器上的Managed 程式碼,所以能夠很容易的將其反編譯為我們可以識別的代碼。之前我寫過一篇文章反編譯Android的apk包到smali檔案 然後再重新編譯簽名後打包實現篡改apk的功能。最近又有一種新的方法來實現直接從Android
Time of Update: 2017-01-18
通過反射構造內部類對象首先在 javalang 包下寫一個包含內部類的類:package javalang;public class Outer { public static class Inner1{}}注意這個類是 public static,後面我們慢慢把這些修飾符去掉。要想通過反射來建立 Inner1 對象,首先要獲得 Inner1 的 Class 對象。我們在 Outer 中寫上 main 方法:public class Outer { public static class
Time of Update: 2017-01-18
java selenium 智能等待頁面載入完成我們經常會碰到用selenium操作頁面上某個元素的時候, 需要等待頁面載入完成後, 才能操作。 否則頁面上的元素不存在,會拋出異常。 或者碰到AJAX非同步載入,我們需要等待元素載入完成後, 才能操作selenium 中提供了非常簡單,智能的方法,來判斷元素是否存在. 閱讀目錄 執行個體要求 隱式等待 顯式等待執行個體要求 執行個體:set_timeout.html 下面的html
Time of Update: 2017-01-18
java.util.ConcurrentModificationException 解決方案在使用iterator.hasNext()操作迭代器的時候,如果此時迭代的對象發生改變,比如插入了新資料,或者有資料被刪除。則使用會報以下異常:Java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793) at
Time of Update: 2017-01-18
在JSP裡,擷取用戶端的IP地址的方法是:request.getRemoteAddr(),這種方法在大部分情況下都是有效。但是在通過了Apache,Squid,nginx等反向 Proxy軟體就不能擷取到用戶端的真實IP地址了。如果使用了反向 Proxy軟體,將http://192.168.1.110:2046/ 的URL反向 Proxy為 http://www.jb51.net / 的URL時,用request.getRemoteAddr()方法擷取的IP地址是:127.0.0.1 或 192
Time of Update: 2017-01-18
運行下面這段代碼,其結果是什嗎?package com.test;public class Example { String str = new String("good"); char[] ch = { 'a', 'b', 'c' }; public static void main(String[] args) { Example ex = new Example(); ex.change(ex.str, ex.ch);
Time of Update: 2017-01-18
對於JAVA的Pattern類 和 Matcher類可參考網址 http://www.ibm.com/developerworks/cn/java/l-regp/part2/Regex中的特殊字元: \\ 反斜線 \t 間隔 ('\u0009') \n 換行 ('\u000A') \r 斷行符號 ('\u000D') \d 數字等價於[0-9] \D 非數字等價於[^0-9] \s 空白符號
Time of Update: 2017-01-18
最近在用jsp做一個網站,其間涉及到java變數和javascript變數之間的互換,雖然網上資料眾多,但是眾說紛紜,並且很多都是帶有誤導性,做了許多嘗試,終於比較清楚的搞懂了這個問題。通俗一點來講,就是說java代碼是運行在伺服器上的,返回的值只是靜態存在於頁面,而javascript是指令碼語言,是運行在用戶端的!它們是兩種完全不同的語言,變數不能直接進行交換,但是通過一定的方式,變數可以傳遞。 java變數傳遞給javascript變數,這個比較簡單,就是平時的普通方法就好: 複製代碼
Time of Update: 2017-01-18
沒有規矩不成方圓,一個優秀的代碼架構不僅易於開發和維護,而且是一門管理與執行的藝術。這幾年來經曆了很多項目,對代碼之間的強耦合及書寫不規範,維護性差等問題深惡痛絕。在這裡,通過仔細分析後,結合自己的編碼習慣總結了一套適用於javaweb項目的前端書寫規範,與大家分享一下。ps:感謝阿海的創意,後期整理如下(附檔案下載):一、項目結構這裡和其他項目區別不大,我將模板抽離出來,更容易分析和理解:解釋一下:js主要包括extends(引入第三方的js)、module(項目模組自己的js)、lib(引用