Time of Update: 2018-12-04
JSF和Tapestry的全面比較為了對JSF和Tapestry進行全面的比較,讓讀者瞭解這兩種架構各自的優缺點,以便於在自己的項目中,根據實際情況,選擇合適的架構,對它們兩者進行比較,總結了如下表分析比較。 JSFTapestry設計架構跳轉模型:Front Controller+組件化編程。頁面模型:Page Controller+組件化編程。編程模型商務邏輯:POJO的編程風格;頁面邏輯:主要是JSP,也可以用HTML風格。商務邏輯:Taperstry4需要繼承基類;但Taperstry5
Time of Update: 2018-12-04
java如何操作access資料庫呢?請看下面的例子:[不知道為什麼,插入代碼時報錯,所以就直接貼出來]package com.ria.utils.common;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.ResultSetMetaData;import java.sql.Statement;import
Time of Update: 2018-12-04
volatile, 用更低的代價替代同步為什麼使用volatile比同步代價更低?同步的代價, 主要由其覆蓋範圍決定, 如果可以降低同步的覆蓋範圍, 則可以大幅提升程式效能. 而volatile的覆蓋範圍僅僅變數層級的. 因此它的同步代價很低.volatile原理是什麼?volatile的語義, 其實是告訴處理器, 不要將我放入工作記憶體, 請直接在主存操作我.(工作記憶體詳見java記憶體模型)因此, 當多核或多線程在訪問該變數時, 都將直接操作主存, 這從本質上,
Time of Update: 2018-12-04
(參考 “ibm nio入門”)在 NIO 庫中,所有資料都是用緩衝區處理的。在讀取資料時,它是直接讀到緩衝區中的。在寫入資料時,它是寫入到緩衝區中的。任何時候訪問 NIO 中的資料,都是將它放到緩衝區中。緩衝區實質上是一個數組。通常它是一個位元組數組,但是也可以使用其他種類的數組。但是一個緩衝區不僅僅是一個數組。緩衝區提供了對資料的結構化訪問,而且還可以跟蹤系統的讀/寫進程。buffer其實只是一個美化了的數組。狀態變數跟蹤資料的狀態情況使buffer可以自己管理資料資源 position:
Time of Update: 2018-12-04
Time of Update: 2018-12-04
今晚用到 ByteBuffer, 我跟 joy 都是初學 java, 文檔裡的中文翻譯實在是看他母親不懂, 暈了半天, 作了幾個測試, 終於把這個類的用法搞清楚了, 順便臆想了哈其工作原理. 先列點程式碼片段: // ... // // 此段代碼功能為從 t.txt 裡複製所有資料到 out_j.txt: // ... 1 FileChannel fcin = new FileInputStream( "d:/t.txt" ).getChannel(); 2 FileChannel fcout
Time of Update: 2018-12-04
一直沒有動手寫過java程式,只是理論,所以決定從第22章開始動手寫程式。但是卻忘了前面學的理論知識,看來還是得從實踐中學習。這是第一篇,閱讀的人應該知道我很菜吧,希望大俠們多多指教、提點!第一個問題:由於獨立建立了一個工具包,所以要參考工具包。時間晚了,只嘗試了在CLASSPATH中設定環境變數這一種方式,有其他方式嗎?求指教。當然我也會繼續探索,明天還要上班,只能明晚了。第二個問題:很幼稚。CLASSPATH環境變數中不能設定成中文的路徑,識別不了。嗯,就遇到這兩個問題。發現自己寫代碼的速度
Time of Update: 2018-12-04
對象群的最高效能選擇依然是傳統的array處於效率考量,java會在運行期進行邊界檢查容器類僅能持有reference,持有對象均為object類別,這裡有一個缺憾,即容器中元素的型別未定而array可以產生直接持有基本型別數值的array,因而array分為primitive array和object
Time of Update: 2018-12-04
C++中未包含這兩種機制,因而其多重繼承機制運用起來比較困難interface就像是一種更abstract的class內含資料成員組成一個常量群,函數有形式無實現interface通過繼承和組合來擴充inner classes 的用途有名稱隱藏,程式碼組織和串連外圍對象將inner classes置於任意程式範疇之內的理由1.實現某種interface然後返回某個引用2.用一個類解決一個複雜的問題,但你又不希望這個類被外界所用額外性質:1.inner
Time of Update: 2018-12-04
對於這個系列裡的問題,每個學Java的人都應該搞懂。當然,如果只是學Java玩玩就無所謂了。如果你認為自己已經超越初學者了,卻不很懂這些問題,請將你自己重歸初學者行列。問題一:我聲明了什麼!String s = "Hello world!";許多人都做過這樣的事情,但是,我們到底聲明了什嗎?回答通常是:一個String,內容是“Hello
Time of Update: 2018-12-04
局部變數表與JAVA記憶體回收以下為書摘。123456public static void main(String[] args){ { byte[] placeholder = new byte[64*1024*1024]; } system.gc();}以上代碼調用後,記憶體回收並沒有回收多少。1234567public static void main(String[] args){ { byte[] placeholder = new
Time of Update: 2018-12-04
補丁總是會一遍又一遍的打,越打越多有時候,就擔心有人不小心把高版本的class打到低版本jre啟動並執行環境中簡單寫了點代碼,檢查檔案夾中class的版本號碼package org.wee.cv;import java.io.File;import java.io.FileInputStream;public class ClassVersion {/** * 檢查class檔案的版本號碼 * @param classFile * @return * 傳回值為:JDK1.4 JDK1.5 ...
Time of Update: 2018-12-04
JAVA在設計介面和類的規則時,有一個明確的規定。JAVA不支援類(實現)的多重繼承,但支援介面(定義)的多重繼承。我已經無從瞭解這個設計的初衷,但這樣的規定隱含了以下的意義。介面是設計的產物,即在需求設計時定義的對軟體功能的定義。而類是實現的產物,它是在實現過程中根據實現的具體情況而完成的。如果用代碼來說明就是:在設計時我需要我設計的“模組”提供兩個功能:1.提供兩個整數相加的功能。2.提供兩個字串串連的功能。 我是一個偉大的設計師,為了不影響我的整體思路,我不會在這時停下來去實現它,所以我
Time of Update: 2018-12-04
前段時間做動態無侵入攔截的工作,對於“即時載入”新類有了一些較深入的理解,已經寫出兩篇文章在這裡。我們已經解決了“如何修改”的問題,但是另一個問題是“能修改成什麼樣子”。利用Instrumentation來動態redefine的類,只能修改方法,即在原有的方法代碼插入代碼來實現我們需要的邏輯。卻無法增加,刪除方法和欄位,即修改類定義的結構。 目前真正能做到“即時”載入結構已經被修改的新的class的工具就是javarebel.但這個工具是一個收費的(免費的功能有限)工具,其它還沒見到有相同功能的
Time of Update: 2018-12-04
1、核對lib包 commons-fileupload-1.2.1.jar,commons-io-1.3.2.jarcommons-logging-1.0.4.jarfreemarker-2.3.16.jarognl-3.0.jarstruts2-core-2.2.1.jarxwork-core-2.2.1.jar) 注意2.1以前是沒有commons-fileupload-1.2.1.jar, 2、如果struts2版本是2.1以前web.xml配置過濾器的時候應該是這樣:<filter
Time of Update: 2018-12-04
在Java類庫中出現的第一個關聯的集合類是 Hashtable。 Hashtable 提供了一種便於使用的、安全執行緒的、關聯的map功能。然而,執行緒安全性付出代價是――Hashtable 的所有方法都是同步的。Hashtable 的後繼者HashMap 是作為JDK1.2中的集合架構的一部分出現的,它通過提供一個不同步的基類和一個同步的封裝器Collections.synchronizedMap
Time of Update: 2018-12-04
一個簡單的java輸入輸出執行個體,包含了最常用的輸入輸出函數。package com.xujin;import java.util.Date;import java.util.Scanner;public class MyTest{static Scanner cin = new Scanner(System.in);public static void main(String[] args){System.out.print("input your name:");String name =
Time of Update: 2018-12-04
繼承關係兩個類之間存在三種關係:依賴,uses-a,如果一個類的方法操縱另一個對象,我們就說一個類依賴於另一個類。彙總(關聯),has-a,一個對象包含另外一個對象,彙總關係意味著類A的對象包含類B的對象。繼承,is-a,如果兩個類之間存在明顯的is-a(是)關係,例如每個經理都是僱員,那這兩個類有繼承關係。例如:class Manager extends Employee{
Time of Update: 2018-12-04
映射表是一種資料結構,用於存放索引值對。如果提供了鍵,就能尋找到值。Map介面的方法:Modifier and TypeMethod and Descriptionvoidclear()Removes all of the mappings from this map (optional operation).booleancontainsKey(Object key)Returns true if this map contains a mapping for the specified
Time of Update: 2018-12-04
java中多線程協同工作是經常的事,眾所周知這種協同大多是通過wait()和notify()或者notifyAll()來實現的,然而在這個實現中有一點還是值得注意的。請看下面的樣本:thread1:synchronized(sharedMonitor){ someCondition = false; sharedMonitor.notify();}thread2:while(someCondition){//point 1synchronized(sharedMonitor)