Time of Update: 2018-12-03
一轉眼幾個月過去了。。真是忙碌的幾個月,最近在弄CAS
Time of Update: 2018-12-03
以前對Enum只有一個模糊的概念,最近項目中要用,所以就專門研究了一下:java的Enum枚舉類型終於在j2se1.5出現了。之前覺得它只不過是雞肋而已,可有可無。畢竟這麼多年來,沒有它,大家不都過得很好嗎?今日看《Thinking in Java》4th edition,裡面有一句話“有時恰恰因為它,你才能夠"優雅而乾淨"地解決問題。優雅與清晰很重要,正式它們區別了成功的解決方案與失敗的解決方案。而失敗的解決方案就是因為其他人無法理他。"使用Enum枚舉類型,可以將以前笨拙的代碼變得優雅簡單?
Time of Update: 2018-12-03
轉自:http://blog.csdn.net/hu_shengyang/article/details/80214351. 在web容器中設定(此處以tomcat為例)在tomcat-5.0.28\conf\web.xml中設定,以下是tomcat 5.0中的預設配置:[html] view plaincopy<!-- ==================== Default Session Configuration ================= --> &
Time of Update: 2018-12-03
大家使用多線程無非是為了提高效能,但如果多線程使用不當,不但效能提升不明顯,而且會使得資源消耗更大。下面列舉一下可能會造成多線程效能問題的點:死結過多序列化過多鎖競爭切換上下文記憶體同步下面分別解析以上效能隱患死結關於死結,我們在學習作業系統的時候就知道它產生的原因和危害,這裡就不從原理上去累述了,可以從下面的代碼和圖示重溫一下死結產生的原因:public class LeftRightDeadlock { private final Object left = new Object();
Time of Update: 2018-12-03
很多程式員對一個共用變數初始化要注意可見度和安全發布(安全地構建一個對象,並其他線程能正確訪問)等問題不是很理解,認為Java是一個屏蔽記憶體細節的平台,連對象回收都不需要關心,因此談到可見度和安全發布大多不知所云。其實關鍵在於對Java儲存模型,可見度和安全發布的問題是起源於Java的儲存結構。Java儲存模型原理有很多書和文章都講解過Java儲存模型,其中一個圖很清晰地說明了其儲存結構:由可知, jvm系統中存在一個主記憶體(Main Memory或Java Heap
Time of Update: 2018-12-03
Java代碼編譯是由Java源碼編譯器來完成,流程圖如下所示:Java位元組碼的執行是由JVM執行引擎來完成,流程圖如下所示: Java代碼編譯和執行的整個過程包含了以下三個重要的機制:Java源碼編譯機制類載入機制類執行機制Java源碼編譯機制Java源碼編譯由以下三個過程組成:分析和輸入到符號表註解處理語義分析和產生class檔案流程圖如下所示:最後產生的class檔案由以下部分組成:結構資訊。包括class檔案格式版本號碼及各部分的數量與大小的資訊中繼資料。對應於Java源碼中聲明與常量的
Time of Update: 2018-12-03
/* 初學者請注意: * 1:先建立一個access檔案a1.mdb,並放在D:/下; * 2:在資料庫檔案a1.mdb中建立一個表Table1; * 3:為Table1添加一列,並插入至少一條記錄; * 4:本文是一個完整的類,直接拿去運行就可以。 */ import java.sql.*; public class ConnectAccess {10. public static void main(String args[])
Time of Update: 2018-12-03
在SYBASE12.5或者更久以前的版本都是不支援函數,但是有些時候我們又需要一些函數,而不僅僅是過程,這裡有可以採用JAVA實現,並且寫JAVA肯定比寫預存程序要好多了,JAVA處理資料的能力或者是類型,會讓SYBASE增不少光彩。以下是網上找到的一篇文章,詳細介紹如何在SYBASE中使用JAVA,但我先說明一點,我現在用的是12.5.4這個版本,也提示開啟JAVA功能成功,但是去不能夠將JAR檔案提交到資料庫,也許這樣與作業系統或者是資料庫版本的問題。-------------------
Time of Update: 2018-12-03
Java應用,特別是大型的Java應用,往往都需要動態載入類或Jar,URLClassLoader提供了這個功能,它讓我們可以通過以下幾種方式進行載入: * 檔案: (從檔案系統目錄載入) * jar包: (從Jar包進行載入) * Http:
Time of Update: 2018-12-03
由於反射涉及動態解析的類型,某些Java虛擬機器的最佳化不能被執行,所以導致了一定的效能的問題,特別是在JDK6以前特別嚴重,有時甚至達到數百倍,但是在JDK6以後,據說效能差別就不是哪麼大了,JDK對此做了最佳化。但是總還是有那麼數10倍的效能差異,那我們就讓他跑得再快點吧。我們通常情況下寫反射都是這樣寫:SomeObject someObject = new SomeObject();Class<? extends SomeObject> cls =
Time of Update: 2018-12-03
通過JAVA、JDBC驅動為JTDS1.2調用SYBASE12.5預存程序的時候,老是報該過程只允許在"Unchained"模式下運,通過命令sp_procxmode查看的時候,該過程也是"Unchained"模式,Hibernate報運行命令"set chained off"即可將當前庫的預存程序運行模式改為"Unchianed",但執行後也不行;後面在一個國外的網站查到,將其運行模式改為"anymode"即可,採用命令:sp_procxmode 過程名 'anymode' ,但要修改所有與
Time of Update: 2018-12-03
使用ASM包進行Class File修改真是很方便,不過可惜的是ASM不提供現成的工具,那我們就利用它提供的強大的位元組碼操作能力,自己來做一個吧:基本思路如下:假設操作類為A, 假設要加的屬性為PA,我們為了操作上方便,構造類B,將類B的PA屬性加到A上就可以了,有了這個思路即可快速實現如下代碼:----------------------------------------------------------------------------------------------------
Time of Update: 2018-12-03
以下是關於HashCode的官方文檔定義:hashcode方法返回該對象的雜湊碼值。支援該方法是為雜湊表提供一些優點,例如,java.util.Hashtable 提供的雜湊表。 hashCode 的常規協定是: 在 Java 應用程式執行期間,在同一對象上多次調用 hashCode 方法時,必須一致地返回相同的整數,前提是對象上 equals 比較中所用的資訊沒有被修改。從某一應用程式的一次執行到同一應用程式的另一次執行,該整數無需保持一致。 如果根據 equals(Object)
Time of Update: 2018-12-03
1、比較兩個浮點型是否相等,包括float及double,不要採用等號"=="進行比較,因為浮點計算可能涉及到舍入計算。如果是需要值比較準確的比較,如貨幣金額等,可以考慮使用固定精度的類型,如BigDecimal的。對於不需要精確的值,考慮比較平等一些範圍內,例如:如果(Math.abs(x - y的)<.0000001)。如:if(x==y){}可以修改為if(Math.abs(x -
Time of Update: 2018-12-03
There are 2 tool set combinations for java bytecode editing. 1. ASM + JASMIN First use ASM to disassemble the bytecode class file to assemble file.(see command line under ASM folder) Then use JASMIN language specification to rewrite this
Time of Update: 2018-12-03
String和StringBuffer的區別,網上資料可以說是數不勝數,但是看到這篇文章,感覺裡面做的小例子很有代表性,所以轉一下,並自己做了一點總結。 在java中有3個類來負責字元的操作。 1.Character 是進行單個字元操作的,2.String 對一串字元進行操作。不可變類。3.StringBuffer
Time of Update: 2018-12-03
JAVA中用於處理字串的“三兄弟”JAVA中用於處理字串常用的有三個類:java.lang.String、java.lang.StringBuffer、java.lang.StringBuilder,這三者的共同之處都是final類,不允許被繼承,這主要是從效能和安全性上考慮的,因為這幾個類都是經常被使用著的,且考慮到防止其中的參數被修改影響到其它的應用。StringBuffer與StringBuilder兩個基本上差不多,只是StringBuffer是安全執行緒,可以不需要額外的同步用於多線程
Time of Update: 2018-12-03
By using this combination, you will find that first we'll use ASM decompile the specified class and then rewite the specified class in JASMIN grammar, then compile this assemble source code file into java class file, first we'll show you the basic
Time of Update: 2018-12-03
在大家平時的開發中,由於代碼與部署都是自己親自做的,未必感覺到調試的困難,但是如果代碼是他人編寫部署而在沒有原始碼的情況下進行除錯處理(譬如維護),難度是可想而知的,如何進行有效軟體調試顯得尤為重要,如何快速高效地定位錯誤並且快速地FIX這個BUG更是擺在大家面前的話題。 這裡簡單介紹目前的常用的幾個調試工具:1. JDB, 這個是JDK
Time of Update: 2018-12-03
轉自:http://www.softhouse.com.cn/news/show/104219.htmlJava平台上進行多線程編程的缺陷 Java 語言的並發編程