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
volatile, 用更低的代價替代同步為什麼使用volatile比同步代價更低?同步的代價, 主要由其覆蓋範圍決定, 如果可以降低同步的覆蓋範圍, 則可以大幅提升程式效能. 而volatile的覆蓋範圍僅僅變數層級的. 因此它的同步代價很低.volatile原理是什麼?volatile的語義, 其實是告訴處理器, 不要將我放入工作記憶體, 請直接在主存操作我.(工作記憶體詳見java記憶體模型)因此, 當多核或多線程在訪問該變數時, 都將直接操作主存, 這從本質上,
Time of Update: 2018-12-04
import java.io.*;import java.util.*;import java.math.*;public class Main{ public static void main(String[] args)//終於發現java有很大的好處在處理大數的時候 { int t; BigInteger a, b; b = BigInteger.valueOf(0);//初始化為0 Scanner cin = new Scanner(System.in); t =
Time of Update: 2018-12-04
項目發布到Production伺服器上,經過一段時間跟蹤探索服務器上項目的記憶體佔有量在緩慢增長,但是在本地做壓力時卻沒有發現這個問題,或者雖然做了壓力測試單由於環境的差異記憶體增長不明顯所以沒有注意。於是就下載了JProfilter安裝到本地的測試伺服器上,運行測試發現有些類的個數竟然大於並發線程的個數,很是奇怪,經分析發現原來這並發線程都使用New Class來實現一些對底層資料或對象的操作,代碼如下: public void run() { try
Time of Update: 2018-12-04
陷阱7:正確使用靜態同步方法Java語言規定:任何線程進入同步方法,同步代碼塊之前,必須先擷取同步方法,同步代碼塊對應的同步監視器。對於同步代碼塊而言,程式必須顯示為它指定同步監視器;對於同步非靜態方法而言,該方法的同步監視器是this-即調用該方法的Java對象;對於靜態同步方法而言,該方法的同步監視器不是this,而是該類本身。class SynchronizedStatic implements Runnable {static boolean flag = true;public
Time of Update: 2018-12-04
將串口通訊的傳統型程式變為網頁程式時候,藉助了myeclipse,可是讓我鬱悶的是,在同一台電腦上,傳統型程式運行正確,而在myeclipse中的工程總是報nosuchportexception。那jdk的環境配置肯定是沒問題的,那問題到底是出在哪裡呢。找了半天,忽然想起,myeclipse中的jdk是IDE內建的,而不是本地的jdk.所以,只要將運行環境變為本地應該就正確了。window-preference-java-installed
Time of Update: 2018-12-04
目前在用java相關技術實現oj系統,在實現中。核心在完成中(針對java語言的編譯運行判斷已基本完成,運行安全及支援其他語言等在探索中)。對此方面,感興趣的,歡迎交流,wnemail'at'126.com。安全限制方面,針對Java程式,Java
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
更改的core java的一個程式,利用了GregorianCalendar這個類。輸入年份以及月份,列印出指定月份的日曆。package com.xujin;import java.text.DateFormatSymbols;import java.util.Calendar;import java.util.GregorianCalendar;import java.util.Locale;import java.util.Scanner;public class Test
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
之前我寫過的一片博文講過了散列表(Hash Table),而散列表可以用來實現散列集(HashSet)和散列映射表(HashMap)。HashSetHashSet<T>類有四種建構函式:Constructor and DescriptionHashSet()Constructs a new, empty set; the backing HashMap instance has default initial capacity (16) and load factor (0.75).
Time of Update: 2018-12-04
自動類型轉換在運行程式的時候,經常需要類型轉換,Java會在以下情況下,自動做資料類型的轉換。轉換前的資料類型與轉換後的類型相容。轉換後的資料類型的表示範圍比轉換前的類型大。在可以轉換的前提下,a->b,即使b的表示範圍大於a的表示範圍,但如果b的精度不夠,則最終的結果會喪失一些精度。以下轉換不會喪失精度:byte->shortshort->intchar->intint->longint->doublefloat->double而以下可能會有精度損失:
Time of Update: 2018-12-04
雖然這些隨便在網上suo一下,就有,但是我還是把它收集起來,別人不看,自己總可以看看吧!?【java--MySQL】
Time of Update: 2018-12-04
InfoQ發布了一個關於規則引擎的介紹Real-World Rule Engines,原文 http://www.infoq.com/articles/Rule-Engines ONJava上也有兩篇文章:Give Your Business Logic a Framework with Drools http://www.onjava.com/lpt/a/6093Using Drools in Your Enterprise Java Application
Time of Update: 2018-12-04
java中多線程協同工作是經常的事,眾所周知這種協同大多是通過wait()和notify()或者notifyAll()來實現的,然而在這個實現中有一點還是值得注意的。請看下面的樣本:thread1:synchronized(sharedMonitor){ someCondition = false; sharedMonitor.notify();}thread2:while(someCondition){//point 1synchronized(sharedMonitor)
Time of Update: 2018-12-04
java ACMJava做ACM-ICPC的特點: (1) 在一般比賽中,Java程式會有額外的時間和空間,而實際上經過實驗,在執行計算密集任務的時候Java並不比C/C++慢多少,只是IO操作較慢而已。 (2) Java 簡單而功能強大,有些東西用Java實現起來更為方便,比如高精度。 (3) 用Java不易犯細微的錯誤,比如C/C++中的指標, “if (n = m) ... ” 等 (4)
Time of Update: 2018-12-04
對於Android開發人員來說深入瞭解Java的集合類很有必要主要是從Collection和Map介面衍生出來的,目前主要提供了List、Set和Map這三大類的集合,今天Android123就他們的子類在標準情況和多線程下的效能做簡單的分析。 Collection介面主要有兩種子類分別為List和Set,區別主要是List儲存的對象可以重複,而Set不可以重複,而Map一般為key-value這樣的對應關係,比如我們常用的HashMap。 一、List