診斷Java代碼: Fictitious Implementation錯誤模式,第1部分

Java 語言介面是一種強大的工具。它具有多繼承的很多優點,而沒有什麼問題。為客戶希望使用的所有服務指定一個介面,使得在需要時插進這種介面的不同實現成為可能。遺憾的是,規範中可以被表達的部分只有方法說明。對任何實現來說,很可能還有很多其它不變數希望被掌握,但是 Java 語言沒有提供檢查它們的工具。臆想錯誤模式由於這種限制,很可能“實現”了一個介面而實際上沒有滿足預期的語義。由這種 Fictitious

診斷Java代碼::Split Cleaner錯誤模式

Java 程式設計語言的一個特色是儲存自動管理,它把程式員從很容易出錯的釋放使用後的記憶體的工作中解放出來。儘管如此,許多程式還是得處理資源問題,例如檔案和資料庫連接,這些都必須在使用之後明確地釋放掉。跟手工管理儲存一樣,程式員在手工管理資源時也會犯很多錯誤。其中一個就是本周專欄的主題 ― Split

診斷Java代碼:孤線程(Orphaned Thread)錯誤模式

在多線程代碼中,使用驅動其它線程所負責的動作的單個主線程是常見的。這個主線程發送訊息,通常是通過把它們放到一個隊列中,然後其它線程處理這些訊息。但是如果主線程拋出一個異常,那麼剩餘的線程會繼續運行,等待更多輸入到該隊列,導致程式凍結。在診斷 Java 代碼的這一部分中,專職 Java 開發人員兼兼職捉蟲者 Eric Allen

診斷Java代碼:設計可擴充的應用程式,第1部分

隨著對能應付日益增長的各種資訊處理任務的軟體系統需求的增長,找到能降低新的代碼項目的生產成本的辦法對軟體公司是一種誘惑。最明顯的辦法之一是提高其它項目的代碼的可重用程度。在程式員設計一個新系統時,由此出現的更常見的問題中的兩個是:系統應該有多大的可擴充性?我能使系統具有多大的可擴充性?如果原始系統被設計成可擴充的,那麼重用代碼是最佳的辦法。否則,重用代碼時碰到的困難可以容易地抵消任何已獲得的生產率。但是,要設計成可擴充的,在軟體設計中就要考慮各種各樣的新問題。我將在本文討論一些辦法,這些辦法能使

J2EE 探索者: 用JAAS和JSSE實現Java安全性

從早期所謂的 Java 沙箱到 JDK 1.4 引入的健壯的、全功能的安全體繫結構,安全性一直是 Java 平台的基本組件。從那時到現在,Java 語言的設計者收到了來自團體的大量關於安全的 Java 應用程式(或者企業環境)可以做什麼和不做什麼的意見,他們自己也添加了若干技巧。可以說隨著 J2EE Web 應用程式安全體繫結構的引入,我們不斷從近 10 年的反覆實驗有所收穫,事實也表明了這一點。J2EE 安全架構由三個 API 組成:Java 認證和授權服務(JAAS)、Java

Comparator(Java 2 Platform SE 5.0)

public interface Comparator<T>比較函數強行對某些對象 collection 進行整體排序。可以將 Comparator 傳遞給 sort 方法(如 Collections.sort),從而允許在排序次序上實現精確控制。還可以使用 Comparator 來控制某些資料結構(如 TreeSet 或 TreeMap)的順序。若且唯若對於一組元素 S 中的每個 e1 和 e2 而言,(compare((Object)e1, (Object)e2)==0) 與

j2ee最小化資源壓力測試法則

前面看到有人講j2ee的效能調優,雖然這塊不是自己的專長,但是豬養多了,也忍不住跳出來說幾句。雖然幾乎每本講效能調優的書籍開篇都會提,沒必要的情況下就不要做調優,但是我個人還是認為,所有系統在上線前,都應該做一次基本的壓力測試並對相關的效能問題進行檢測, 但是迫於資源壓力,很多項目都無法做正規的壓力測試,一直到系統上線出現問題,才倒回來找原因。

J2EE基礎:Servlet實現Proxy 伺服器功能

J2EE基礎:Servlet實現Proxy 伺服器功能。import java.io.*;import java.net.*;import javax.servlet.*;import javax.servlet.http.*;  public class Proxy extends HttpServlet{ public void doGet(HttpServletRequest request,HttpServletResponse response)throws

J2EE 1.4平台和Web服務

本文是J2EE Web服務開發系列文章的第七篇,在本系列文章的前面各主題中,著重介紹了在J2EE1.3平台下使用各種技術或者工具進行Web服務開發。從本文開始,將介紹J2EE1.4平台下的Web服務開發。本文首先介紹了J2EE1.4平台中Web服務的構架,然後分別介紹了J2EE1.4平台中Web服務的最新規範和最新技術,接下來介紹了開發Web服務使用的API以及J2EE Web服務開發步驟,最後介紹了Web服務的開發工具。J2EE1.4

診斷Java代碼: 連續初始化器錯誤模式

您經常會看到代碼不是僅僅通過調用建構函式對類進行初始化,它還通過一些緊接著的意在設定各個域的動作對類進行初始化。不幸的是,這樣緊接著的動作是錯誤的高發地帶,會帶來連續初始化(run-on

診斷Java代碼: 平台相關性“gotcha問題”

一次編寫,隨處運行。這是承諾,但 Java 語言有時候並不能做到。誠然,JVM 把跨平台互通性的程度提到了前所未有的高度,然而,規範和實現層級上的一些小毛病卻使得程式無法在多平台上表現出正確的行為。用 Java 編程的主要優點之一是它給您帶來的很大程度的平台無關性。您只要將您的產品編譯成位元組碼,然後分發到任何帶有 JVM 的平台就行了,而不必為每個目標平台構建一個獨立的構建版。或者說,至少事情應該是這樣的。但事情並沒有那麼簡單。儘管通過對多平台的支援,Java

診斷Java代碼: 深度優先訪問器和中斷的指派

設計模式最多隻能對快速集中到一個項目的簡單設計提供很大協助。但是,在一個特定環境中實現一種設計模式的最簡單方法並不一定是顯而易見的 ― 要做到這一點,有許多種方法。這個月,我們將討論應用公用設計模式來產生簡單、簡短且健壯的代碼的一些方法。首先,讓我們看一下兩種模式,它們適用於許多不同的環境。在 設計模式(Erich Gamma 等,也稱為“四從組(Gang of Four)”著,它介紹了該主題的一些基礎知識(請參閱

診斷Java代碼: 使用靜態類型的理由

靜態類型 ― 多數程式員喜歡它或憎恨它。支援者誇耀說靜態類型讓他們寫出更乾淨更可靠的代碼,沒有它們則做不到這麼好。批評者埋怨說靜態類型增加了程式的複雜性。是的,靜態類型不是免費午餐;有時候,它們用起來很乏味。然而,如果我們主要關心的是使代碼沒有錯誤,那麼,總的說來,Java 編程還是擁有並使用靜態類型好些。為什嗎?靜態類型檢查:通過早期錯誤偵測,提高健壯性通過在最佳的時候作所需的檢查,提高效能彌補單元測試的缺點我們來更仔細地分析這些原因,並看一看靜態類型檢查和結對程式設計(pair

診斷Java代碼: 提高Java代碼的效能

很多演算法用尾遞迴方法表示會顯得格外簡明。編譯器會自動把這種方法轉換成迴圈,以提高程式的效能。但在 Java 語言規範中,並沒有要求一定要作這種轉換,因此,並不是所有的 JAVA 虛擬機器(JVM)都會做這種轉換。這就意味著在 Java 語言中採用尾遞迴方法將導致巨大的記憶體佔用,而這並不是我們期望的結果。Eric Allen

診斷Java代碼: “殺手組合”― mixin、Jam和單元測試

在 Java 語言中獲得單繼承編程的安全性需要付出極大的代價:有時必須沿著繼承階層中的多條路徑複製代碼。要重新獲得單繼承 Java 代碼中所失去的大多數表示,我們可以將 mixin整合為一個擴充。本月,Eric Allen 解釋了 mixin(那些由它們的父類參數化類別)的概念,以及它們如何能協助單元測試。他還描述了基於 mixin 編程的工具,並討論了將 mixin 添加到您的 Java 代碼中的可能方法。自從物件導向的編程出現以來,OO

診斷Java代碼: 消除包間的耦合關聯

測試優先編程(test-first programming)中反覆遇到的一個問題是,似乎不可能對程式的許多部分進行自動化的測試。尤其當程式在很大程度上要利用外部資源和庫時,似乎很難對它進行測試,因為沒有很好的方法來類比程式與這些外部資源的串連。然而,雖然只使用 Java 代碼很難測試這樣的程式,但有一種類型的編程(帶有開發工具)可以解決這個問題 ― 基於組件的編程。基於組件的編程和 Java 語言我所說的基於組件的編程是指什嗎?我只是指,編程時程式的各個單元處於分布狀態,而不是象

診斷Java代碼: 懸掛複合錯誤類型

null 指標到處都有!在一個 Java 程式員所能遇到的所有異常中,null 指標異常屬於最恐怖的,這是因為:它是程式能給出的資訊最少的異常。例如,不像一個類轉型異常,null 指標異常不給出它所需要的內容的任何資訊,只有一個null 指標。此外,它並不指出在代碼的何處這個null 指標被賦值。在許多null

診斷Java代碼: 在規範鋼絲上行走

要構建可靠的軟體,程式規範很關鍵。沒有良好定義的規範,很難診斷軟體系統的異常行為。但是很多軟體系統的程式規範定義得很差勁。而且更糟的,是許多軟體系統根本就沒有規範。直觀的看,程式規範是對程式行為的一種描述。它可以採取許多形式,但無論採取何種形式,都有一條主線貫穿所有執行個體:必須有某種類型的系統規範,因為您得依靠它來判斷系統是否運轉正常。規範可以形式化也可以鬆散地定義,這取決於開發中系統的穩定性和危險程度,還與開發完畢後修改系統的容易程度有關。我們將通過討論規範為什麼重要、為什麼會經常被忽略以及

診斷Java代碼: 輕鬆掌握 Java 泛型,第4部分

至此,在這個討論 JSR-14 和 Tiger 中泛型型別的微型系列中,我們已經探討了:泛型型別及被設計成支援它們的即將發布的功能基本類型、受約束的泛型以及多態方法上的限制幾個強加給這些 Java 擴充的限制這些擴充語言的編譯器所用的實現策略如何使這些限制成為必需在泛型型別中添加對“裸”型別參數的 new 操作的支援所帶來的影響本月,我們將探討在可以處理 mixin(可能被期望是泛型型別中最強大的功能)之前需要先解決的問題,以此來結束對 Java

診斷Java代碼: 輕鬆掌握Java泛型,第3部分

這一系列主要討論在 Java 編程中添加泛型型別,本文是其中的一篇,將研究還未討論過的有關使用泛型的兩個限制之一,即添加對裸型別參數的 new 操作的支援(如類 C<T> 中的 new T() )。正如我 上個月所提到的那樣,Tiger 和 JSR-14 通過使用“類型消除(type erasure)”對 Java 語言實現泛型型別。使用類型消除(type erasure),泛型型別僅用於類型檢查;然後,用它們的上界替換它們。由此定義可知:消除將與如 new

總頁數: 4058 1 .... 2755 2756 2757 2758 2759 .... 4058 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.