最近公司要做一個單點登陸的應用,整合論壇和網站。到網上找了好些資料,終於圓滿解決,部落格中記錄一下一面忘掉。 單點登入首先首先要保持資料庫資料的一致性,這個實現方式很多我就不多廢話了。
目錄 基本預備相關知識 對象的銷毀過程 對象重生的例子 對象的finalize的執行順序 何時及如何使用finalize 參考 基本預備相關知識 1 java的GC只負責記憶體相關的清理,所有其它資源的清理必須由程式員手工完成。要不然會引起資源流失,有可能導致程式崩潰。 2 調用GC並不保證GC實際執行。 3
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.FilenameFilter; import java.io.IOException;
集合 集合類存放於java.util包中。 集合類型主要有3種:set(集)、list(列表包含Queue)和map(映射)。 Collection:Collection是集合的基本介面,List、Set、Queue的最基本的介面。 Iterator:迭代器,可以通過迭代器遍曆集合中的資料 Map:是映射表的基礎介面 List 有序集合 Java的List是非常常用的資料類型。List是有序的Collection。Java List一共三個實作類別:
由於項目需要根據日誌來跟蹤瞭解系統資訊,方便查看傳輸資料以及異常資訊,所以打算用log4j來完成這個日誌管理的功能。 可惜的是,在使用中發現log4j在列印異常資訊時,並不能像控制台那樣詳細列印出跟蹤棧StackTrace內的資訊到設定檔指定的記錄檔中去。 可能是我能力有限,網上查了很多資料,嘗試了很多辦法都不行。 後來發現Java API 內建的日誌管理java.util.logging.Logger好像可以滿足要求,於是嘗試了一下,結果如願以償,深感欣慰啊。
第1章 走近Java 1.2 Java技術體系 Java程式設計語言、Java虛擬機器、Java API類庫這三部分統稱為JDK(Java Development Kit),JDK是用於支援Java程式開發的最小環境。 1.4 Java虛擬機器發展史 1.4.1 Sun Classic / Exact VM Exact VM因它使用準確式記憶體管理而得名,即虛擬機器可以知道記憶體中某個位置的資料具體是什麼類型。譬如記憶體中有一個32位的整數123456,
來看一個排列的例子,它所做的工作是將輸入的一個字串中的所有元素進行排序並輸出,例如:你給出的參數是"abc" 則程式會輸出:abc acb bac bca cab cba 這是一個典型的可用遞迴演算法來實現的例子,我們來看一下利用遞迴的2種不同解法。 1.典型遞迴元素交換的演算法 (1)演算法的出口在於:low=high也就是現在給出的排列元素只有一個時。 (2)演算法的逼近過程:先確定排列的第一位元素,也就是迴圈中i所代表的元素。
已應用於實際項目:1.thrift對象與dto之間的互轉 2.pojo與dto之間的互轉
Java Calendar 日曆類的時間操作,這也許是 Java 環境下建立和管理日曆及操作時間最簡單的一個方案了,示範代碼也很簡單。 示範了擷取時間,日期時間的累加和累減,以及日期時間的比較。 原文地址:blog.csdn.net/joyous/article/details/9630893 注意事項: Calendar 的 month 從 0 開始,也就是全年 12 個月由 0 ~ 11 進行表示。 而 Calendar.DAY_OF_WEEK 定義值如下,每周從
package com.ecode.li.date; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectOutputStream; import java.util.Calendar;&n
在Java環境下,對字串數組或者對字串排序都是一件很容易的事情,只要調用java.util包下的Arrays類的sort方法即可對其排序。 有沒有想過,我們自己也可以利用排序演算法編寫一個屬於自己的字串數組和字串排序,我就是這麼做的,我利用了快速排序的思想: * 一趟快速排序是: *1,隨機產生一數列,選取第一個數(這裡也可選其他的數)作為比較的基石,假設這個數為X,這樣X=A[0];設兩個變數i=0,j=n-1;n是這個數列的長度
System.currentTimeMillis():可以提取到目前時間的毫秒數,產生一個當前的毫秒,這個毫秒其實就是自1970年1月1日0時起的毫秒數。 常見作用:一般都是用2個時間的差值來得到已耗用時間的,常用來比較2個演算法的效率。 long start = System.currentTimeMillis(); // 這裡可以加上你要知道的方法啟動並執行時間。。
【前言】看了侯捷大師的文檔,果然很有收穫,嘿嘿(MT總是這樣笑。。。。) package test; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import test2.TestClass; /* * 通過反射調用TestClass的建構函式和一般函數 */ public
原文地址:http://www.pocketdigi.com/20110521/294.html import java.io.UnsupportedEncodingException; import java.util.ArrayList; import java.util.List; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import
現在介紹一種簡單讀取classpath下面的檔案,比如xml設定檔,properties檔案等 比如現在有一個類 package com.ccc;import java.io.InputStream;public class ReadClassPathFile {public static void main(String[] args) {//得到classpath下面com/ssc/readFile/test.properties這個檔案的輸入資料流InputStream
將d:/java目錄下的所有.java檔案複製到d:/jad目錄下,並將原來檔案的副檔名從.java改為.jad import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FilenameFilter; import java.io.InputStream; import java.io.OutputStream; /** * *
/** * 編寫一個程式,將 d:\java目錄下的所有.java 檔案複製到d:\jad目錄下,並將原來檔案的副檔名從.java 改為.jad。 * * :listFiles方法接受一個 FileFilter對象,這個 FileFilter 對象就是過慮的策略對象,不同的人提供不同的 FileFilter 實現,即提供了不同的過濾策略。 * */package test;import java.io.File;import java.io.FileInputStream;import
首先說說我的思路, 要複製一個目錄下的所有檔案到另外的一個目錄下,我們不知道目錄下的結構是怎麼樣的,也不知道目錄有多少層,檔案有多少個,這樣我們會想用迴圈,for! 但是我們不知道有多少層,所以迴圈不能夠滿足我們的需求。 學過遞迴的人,都知道這個用遞迴的思想可以很好解決這個問題的。 遞迴這裡我就不說是什麼東西了,這個自己可以百度,Google。
java記憶體地區與記憶體溢出異常 方法區 Method Area 虛擬機器棧 VM stack 本地方法棧 Native method stack 堆 Heap 程式計數器 PC 方法區和堆是所有線程共用的。 每條線程都有一個獨立的程式計數器,各現成PC互不影響,隔離儲存區 (Isolated Storage),線程私人記憶體 如果線程正在執行的事一個java方法,pc記錄的是正在執行的虛擬機器位元組碼指令地址;如果執行的是Native
首先:system.gc()並不是你調用就馬上執行的, 而是根據虛擬機器的各種演算法來來計算出執行記憶體回收的時間,另外,程式自動結束時不會執行記憶體回收的。 其次:對象被回收時,要經過兩次標記,第一次標記,如果finalize被重寫,或者finalize被調用過,那麼記憶體回收並不會去執行finalize,第二次標記,如果對象不能在finalize中成功拯救自己,那真的就要被回收了。