Time of Update: 2017-02-27
線程池的作用:線程池作用就是限制系統中執行線程的數量。根據系統的環境情況,可以自動或 手動設定線程數量,達到啟動並執行最佳效果;少了浪費了系統資源,多了造成系統擁擠效率不高。用線程池控制 線程數量,其他線程排隊等候。一個任務執行完畢,再從隊列的中取最前面的任務開始執行。若隊列中沒有等 待進程,線程池的這一資源處於等待。當一個新任務需要運行時,如果線程池中有等待的背景工作執行緒,就可以開 始運行了;否則進入等待隊列。為什麼要用線程池:減少了建立和銷毀線程的次數,每個工作
Time of Update: 2017-02-27
為了提高I/O效能,主要基於以下原則:(1)能少訪問磁碟盡量少訪問(2)能少訪問底層操 作系統盡量少訪問底層作業系統(3)能少方法調用盡量少方法調用(4)能少個別的處理位元組 字元盡量少個別處理。技巧1:能用緩衝盡量使用緩衝來進行訪問比如基於字元的有 BufferedReader,基於位元組的有BufferedInputStream。或者用塊讀取方法來提高效能。技巧2:
Time of Update: 2017-02-27
理解 Ajax 編程的基本知識 是重要的,但是如果正在構建複雜的使用者介面,那麼能夠在更高層次的抽象上工作也很重要。在面向 Java 開發人員的 Ajax 系列的第 3 篇文章中,我在上個月的 Ajax 的資料序列化技術 基礎之上,介紹一種可以避免繁瑣的 Java 對象序列化細節的技術。在 上一篇文章 中,我介紹了如何用 JavaScript 對象標註(JSON)以一種在客戶機上容易轉化成 JavaScript 對象的格式對資料進行序列化。有了這個設定,就可以用 JavaScript
Time of Update: 2017-02-27
鄰接表無向圖的介紹鄰接表無向圖是指通過鄰接表表示的無向圖。上面的圖G1包含了"A,B,C,D,E,F,G"共7個頂點,而且包含了"(A,C),(A,D),(A,F),(B,C),(C,D),(E,G),(F,G)"共7條邊。上圖右邊的矩陣是G1在記憶體中的鄰接表示意圖。每一個頂點都包含一條鏈表,該鏈表記錄了"該頂點的鄰接點的序號"。例如,第2個頂點(頂點C)包含的鏈表所包含的節點的資料分別是"0,1,3";而這&qu
Time of Update: 2017-02-27
IBM® WebSphere® Application Server V7 交付了對其 Java™ Persistence API (JPA) 實現的增強,支援對 IBM® DB2 資料服務器資料訪問的最佳化,以提高安全性,並具備顯著降低 資料訪問開銷的潛力。實現最佳化的方式是通過使用 WebSphere JPA 與 IBM Data Studio pureQuery 運行 時之間的內建整合來支援靜態 SQL
Time of Update: 2017-02-27
R資源, 是本地xml資源的引用列表, 修改時, 有可能Gradle沒有產生, 相應的R資源;則會出現R資源未找到的錯; 導致Java檔案異常, 報錯.可以使用: Sync Project with Gradle Files, 即同步項目;如果未成功, 則應該清除緩衝(Catches), 重啟項目. 即: File->Invalidate Caches / Restart...具體參見:
Time of Update: 2017-02-27
我曾經在剛入行的時候做過一個小的swing程式,用到了java SE,swing,Thread等東東,當初經驗少 也沒有做過嚴格的效能測試,布到生產環境用了一段時間後發現那個小程式有時候會拋 java.lang.OutofMemoryError異常,就是java的記憶體溢出。當時也上網查了不少資料,試過一些辦法,代 碼也稍微做了些最佳化,但是有一個問題我始終是找不到解決的方案 - 不知為什麼子表單關閉後java的垃
Time of Update: 2017-02-27
布局管理器有四邊和中間地區的概念。當我們增加一些事物到使用BorderLayout的面板上時我們必須使用add()方法將一個字串對象作為它的第一個自變數,並且字串必須指定(正確的大寫)“North”(上),“South”(下),“west”(左),“East”(右)或者“Center”。如果我們拼字錯誤或沒有大寫,就會得到一個編譯時間的錯誤,並且程式片不會像你所期望的那樣運行。
Time of Update: 2017-02-27
在C和C++中,sizeof()運算子能滿足我們的一項特殊需要:獲知為資料項目分配的字元數量。在C和C++中,size()最常見的一種應用就是“移植”。不同的資料在不同的機器上可能有不同的大小,所以在進行一些對大小敏感的運算時,程式員必須對那些類型有多大做到心中有數。例如,一台電腦可用32位來儲存整數,而另一台只用16位儲存。顯然,在第一台機器中,程式可儲存更大的值。正如您可能已經想到的那樣,移植是令C和C++程式員頗為頭痛的一個問題。Java不需要sizeof()運算子
Time of Update: 2017-02-27
使用運算子的一個缺點是括弧的運用經常容易搞錯。即使對一個運算式如何計算有絲毫不確定的因素,都容易混淆括弧的用法。這個問題在Java裡仍然存在。在C和C++中,一個特別常見的錯誤如下:while(x = y)
Time of Update: 2017-02-27
這種運算子比較罕見,因為它有三個運算對象。但它確實屬於運算子的一種,因為它最終也會產生一個值。這與本章後一節要講述的普通if-else語句是不同的。運算式採取下述形式:布林運算式 ?
Time of Update: 2017-02-27
邏輯運算子AND(&&)、OR(||)以及NOT(!)能產生一個布爾值(true或false)——以自變數的邏輯關係為基礎。下面這個例子向大家展示了如何使用關係和邏輯運算子。 //: Bool.java// Relational and logical operatorsimport java.util.*;public class Bool { public static void main(String[] args) {
Time of Update: 2017-02-27
和C類似,Java提供了豐富的快捷運算方式。這些快捷運算可使代碼更清爽,更易錄入,也更易讀者辨讀。兩種很不錯的快捷運算方式是遞增和遞減運算子(常稱作“自動遞增”和“自動遞減”運算子)。其中,遞減運算子是“--”,意為“減少一個單位”;遞增運算子是“++”,意為“增加一個單位”。舉個例子來說,假設A是一個int(整數)值,則運算式++A就等價於(A =
Time of Update: 2017-02-27
之前寫過一篇.NET應用監控的博文,其實那個比較潦草,我自己感覺描述的不夠細緻,SCOM的應用監控功能是一個很有力的賣點(至少我這麼覺得),這次特地拿一個Java應用監控做講解,我自己在調試的時候也遇到了一些惱人的小毛病,導致進度無法順利進行,在這裡也跟大家分享一下,希望可以協助那些遇到同樣問題的朋友,好了廢話不多說,開整~!SCOM支援Java平台下的tomcat、weblogic、websphere、jboss;我這個環境拿tomcat來測一下,因為畢竟這個應用也是非常非常普及的首先我們來準
Time of Update: 2017-02-27
除嵌入HTML和@see引用之外,方法還允許使用針對參數、傳回值以及違例的文檔標記。1. @param格式如下:@param 參數名 說明其中,“參數名”是指參數列表內的標識符,而“說明”代表一些可延續到後續行內的解說文字。一旦遇到一個新文檔標記,就認為前一個說明結束。可使用任意數量的說明,每個參數一個。2. @return格式如下:@return 說明其中,“說明”是指傳回值的含義。它可延續到後面的行內。3.
Time of Update: 2017-02-27
Java裡有兩種類型的注釋。第一種是傳統的、C語言風格的注釋,是從C++繼承而來的。這些注釋用一個“/*”起頭,隨後是注釋內容,並可跨越多行,最後用一個“*/”結束。注意許多程式員在連續注釋內容的每一行都用一個“*”開頭,所以經常能看到象下面這樣的內容:/* 這是* 一段注釋,* 它跨越了多個行*/但請記住,進行編譯時間,/*和*/之間的所有東西都會被忽略,所以上述注釋與下面這段注釋並沒有什麼不同:/*
Time of Update: 2017-02-27
最後,讓我們正式編一個程式(注釋⑤)。它能列印出與當前啟動並執行系統有關的資料,並利用了來自Java標準庫的System對象的多種方法。注意這裡引入了一種額外的注釋樣式:“//”。它表示到本行結束前的所有內容都是注釋: // Property.javaimport java.util.*;public class Property { public static void main(String[] args) { System.out.println(
Time of Update: 2017-02-27
在所有程式設計語言裡,一個不可避免的問題是對名字或名稱的控制。假設您在程式的某個模組裡使用了一個名字,而另一名程式員在另一個模組裡使用了相同的名字。此時,如何區分兩個名字,並防止兩個名字互相衝突呢?這個問題在C語言裡特別突出。因為程式未提供很好的名字管理方法。C++的類(即Java類的基礎)嵌套使用類裡的函數,使其不至於同其他類裡的嵌套函數名衝突。然而,C++仍然允許使用全域資料以及全域函數,所以仍然難以避免衝突。為解決這個問題,C++用額外的關鍵字引入了“命名空間”的概
Time of Update: 2017-02-27
自變數列表規定了我們傳送給方法的是什麼資訊。正如大家或許已猜到的那樣,這些資訊——如同Java內其他任何東西——採用的都是對象的形式。因此,我們必須在自變數列表裡指定要傳遞的物件類型,以及每個對象的名字。正如在Java其他地方處理對象時一樣,我們實際傳遞的是“控制代碼”(注釋④)。然而,控制代碼的類型必須正確。倘若希望自變數是一個“字串”,那麼傳遞的必須是一個字串。④:對於前面提及的“特殊
Time of Update: 2017-02-27
迄今為止,我們一直用“函數”(Function)這個詞指代一個已命名的子常式。但在Java裡,更常用的一個詞卻是“方法”(Method),代表“完成某事的途徑”。儘管它們表達的實際是同一個意思,但從現在開始,本書將一直使用“方法”,而不是“函數”。Java的“方法”決定了一個對象能夠接收的訊息。通過本節的學習,大家會知道方法的定義有多麼簡單!方法的基本組