1.活著一天,就是有福氣,就該珍惜。當我哭泣我沒有鞋子穿的時候,我發現有人卻沒有腳。
2.寧可自己去原諒別人,莫讓別人來原諒你。
3.世界原本就不是屬于你,因此你用不著拋棄,要拋棄的是一切的執著。萬物皆為我所用,但非我所屬。
4.別人可以違背因果,別人可以害我們,打我們,毀謗我們。可是我們不能因此而憎恨別人,為什么?我們一定要保有一顆完整的本性和一顆清凈的心。
5.你有你的生命觀,我有我的生命觀,我不干涉你。只要我能,我就感化你。如果不能,那我就認命。
6.如果你準備結婚的話,告訴你一句非常重要的哲學名言「你一定要忍耐包容對方的缺點,世界上沒有絕對幸福圓滿的婚姻,幸福只是來自于無限的容忍與互相尊重。
7.我的財富并不是因為我擁有很多,而是我要求的很少。
8.不是某人使我煩惱,而是我拿某人的言行來煩惱自己。
9.活在別人的掌聲中,是禁不起考驗的人。
10.如果你能每天吶喊二十一遍「我用不著為這一點小事而煩惱」,你會發現,你心里有一種不可思議的力量,試試看,很管用的。
11.若能一切隨他去,便是世間自在人。
12.感謝上蒼我所擁有的,感謝上蒼我所沒有的。
13.來是偶然的,走是必然的。所以你必須,隨緣不變,不變隨緣。
14.別人永遠對,我永遠錯,這樣子比較沒煩惱。
15.愚癡的人,一直想要別人了解他。有智慧的人,卻努力的了解自己。
16.對于不可改變的事實,除了認命以外,沒有更好的辦法了。
17.其實愛美的人,只是與自己談戀愛罷了。
18.說一句謊話,要編造十句謊話來彌補,何苦呢?
19.當你用煩惱心來面對事物時,你會覺得一切都是業障,世界也會變得丑陋可恨。
20.根本不必回頭去看咒罵你的人是誰?如果有一條瘋狗咬你一口,難道你也要趴下去反咬他一口嗎?
21.狂妄的人有救,自卑的人沒有救。
22.你什么時候放下,什么時候就沒有煩惱。
23.人之所以痛苦,在于追求錯誤的東西。
24.與其說是別人讓你痛苦,不如說是自己的修養不夠。
25.命運負責洗牌,但是玩牌的是我們自己!
26.過錯是暫時的遺憾,而錯過則是永遠的遺憾!
posted @
2010-04-11 18:52 jadmin 閱讀(91) |
評論 (0) |
編輯 收藏
Tomcat中,為了保證get數據采用UTF8編碼,在server.xml中進行了如下設置:
<Connector port="8080" maxThreads="150" minSpareThreads="25"
maxSpareThreads="75" enableLookups="false" redirectPort="8443"
acceptCount="100" debug="99" connectionTimeout="20000"
disableUploadTimeout="true" URIEncoding="UTF-8"/>
這里指定了get時候的數據編碼。但是,當使用IIS作為webserver轉發servlet/jsp請求給Tomcat時候,這個設置卻失效了。其實原因很簡單:IIS是通過AJP協議,把請求轉發到Tomcat監聽的8009端口上的,所以這里針對8080的設置自然就無效了。正確的方法是進行下面的設置:
<Connector port="8009" enableLookups="false" redirectPort="8443"
debug="0" protocol="AJP/1.3" URIEncoding="UTF-8"/>
posted @
2010-04-10 15:45 jadmin 閱讀(111) |
評論 (0) |
編輯 收藏
一、成熟的人不問過去;聰明的人不問現在;豁達的人不問未來。
二、在人之上,要把人當人;在人之下,要把自己當人。
三、知道看人背后的是君子;知道背后看人的是小人。
四、你犯錯誤時,等別人都來了再罵你的是敵人,等別人都走了罵你的是朋友。
五、人只要能掌握自己,便什么也不會失去。
六、變老并不等于成熟,真正的成熟在于看透。
七、簡單的生活之所以很不容易,是因為要活的簡單,一定不能想的太多。
八、人們常犯最大的錯誤,是對陌生人太客氣,而對親密的人太苛刻,把這個壞習慣改過來,天下太平。
九、我們在夢里走了許多路,醒來后發現自己還在床上。
十、你的丑和你的臉沒有關系。
十一、航海者雖比觀望者要冒更大的風險,但卻有希望到達彼岸。
十二、窮人的苦惱在于沒有選擇,富人的苦惱在于有太多選擇。
十三、不要總覺得被輕視,先問問自己有沒有分量。
十四、一個人的價值,不體現在與別人相同的東西上,而體現在與別人不同的東西上。
十五、靜坐常思己過,閑談莫論人非。
十六、發展是硬道理,但硬發展是沒道理。
十七、人們是看你做什么,不是聽你說什么。
十八、要求別人是很痛苦的,要求自己是很快樂的。
十九、不敢生氣的是懦夫,不去生氣的才是智者。
二十、對于人來說,問心無愧是最舒服的枕頭。
二十一、嫉妒他人,表明他人的成功,被人嫉妒,表明自己成功。
二十二、有些事情,不談是個結,談開了是個疤。
二十三、一口吃不成胖子,但胖子卻是一口一口吃來的。
二十四、喜歡花的人是會去摘花的,然而愛花的人則會去澆水。
1、不要自視清高
天外有天,人上有人,淡泊明志,寧靜致遠。當別人把你當領導時,自己不要把自己當領導,當別人不把你當領導時,自己一定要把自己當領導,權力是一時的,金錢是身外的,身體是自己的,做人是長久的。
2、不要盲目承諾
言而有信。種下行動就會收獲習慣;種下習慣便會收獲性格;種下性格便會收獲命運——習慣造就一個人。
3、不要輕易求人
把自己當別人——減少痛苦、平淡狂喜,把別人當自己——同情不幸,理解需要,把別人當別人——尊重獨立性,不侵犯他人,把自己當自己——珍惜自己,快樂生活。能夠認識別人是一種智慧,能夠被別人認識是一種幸福,能夠自己認識自己是圣者賢人。
4、不要強加于人
人本是人,不必刻意去做人;世本是世,無須精心去處世。人生三種境界:看山是山,看水是水——人之初;看山不是山,看水不是水——人到中年;看山還是山,看水還是水——回歸自然。
5、不要取笑別人
損害他人人格,快樂一時,傷害一生。生命的整體是相互依存的,世界上每一樣東西都依賴其它另一樣東西,學會感恩。感恩大自然的福佑,感恩父母的養育,感恩社會的安定,感恩食之香甜,感恩衣之溫暖,感恩花草魚蟲,感恩苦難逆境。
6、不要亂發脾氣
一傷身體,二傷感情,人與人在出生和去世中都是平等的——哭聲中來,哭聲中去。千萬注意,自己戀戀不舍,而別人早就去意已決,人生應看三座山:井岡山普陀山八寶山,退一步海闊天空,忍一事風平浪靜;牢騷太多防腸斷,風物長宜放眼量。
7、不要信口開河
言多必失,沉默是金,傾聽一種智慧,一種修養、一種尊重、一種心靈的溝通,平靜是一種心態,一種成熟。
8、不要小看儀表
撒播美麗,收獲幸福,儀表是一種心情,儀表是一種力量,在自己審視美的同時,讓別人欣賞美,心靈瑜伽——調適、修煉、超越。
9、不要封閉自己
幫助人是一種崇高,理解人是一種豁達,原諒人是一種美德,服務人是一種快樂,月圓是詩,月缺是花,仰首是春,俯首是秋。
10、不要欺負老實人
同情弱者是一種品德、一種境界、一種和諧,心理健康,才能身體健康,人有一分器量,便多一分氣質,人有一分氣質,便多一分人緣,人有一分人緣,便多一分事業,積善成德、修身養性。
posted @
2010-04-08 21:14 jadmin 閱讀(86) |
評論 (0) |
編輯 收藏
??????多線程的同步依靠的是對象鎖機制,synchronized關鍵字的背后就是利用了封鎖來實現對共享資源的互斥訪問。
??????下面以一個簡單的實例來進行對比分析。實例要完成的工作非常簡單,就是創建10個線程,每個線程都打印從0到99這100個數字,我們希望線程之間不會出現交叉亂序打印,而是順序地打印。
??????先來看第一段代碼,這里我們在run()方法中加入了synchronized關鍵字,希望能對run方法進行互斥訪問,但結果并不如我們希望那樣,這是因為這里synchronized鎖住的是this對象,即當前運行線程對象本身。代碼中創建了10個線程,而每個線程都持有this對象的對象鎖,這不能實現線程的同步。
class MyThread implements java.lang.Runnable
{
???private int threadId;
???public MyThread(int id)
???{
???????this.threadId = id;
???}
???
???public synchronized void run()
???{
???????for (int i = 0; i < 100; ++i)
???????{
???????????System.out.println("Thread ID: " + this.threadId + " : " + i);
???????}
???}
}
public class ThreadDemo
{
???public static void main(String[] args) throws InterruptedException
???{
???????for (int i = 0; i < 10; ++i)
???????{
???????????new Thread(new MyThread(i)).start();
???????????Thread.sleep(1);
???????}
???}
}
??????從上述代碼段可以得知,要想實現線程的同步,則這些線程必須去競爭一個唯一的共享的對象鎖。
??????基于這種思想,我們將第一段代碼修改如下所示,在創建啟動線程之前,先創建一個線程之間競爭使用的Object對象,然后將這個Object對象的引用傳遞給每一個線程對象的lock成員變量。這樣一來,每個線程的lock成員都指向同一個Object對象。我們在run方法中,對lock對象使用synchronzied塊進行局部封鎖,這樣就可以讓線程去競爭這個唯一的共享的對象鎖,從而實現同步。
class MyThread implements java.lang.Runnable
{
???private int threadId;
???private Object lock;
???public MyThread(int id, Object obj)
???{
???????this.threadId = id;
???????this.lock = obj;
???}
???
???publicvoid run()
???{
???????synchronized(lock)
???????{
???????????for (int i = 0; i < 100; ++i)
???????????{
???????????????System.out.println("Thread ID: " + this.threadId + " : " + i);
???????????}
???????}
???}
}
public class ThreadDemo
{
???public static void main(String[] args) throws InterruptedException
???{
???????Object obj = new Object();
???????for (int i = 0; i < 10; ++i)
???????{
???????????new Thread(new MyThread(i, obj)).start();
???????????Thread.sleep(1);
???????}
???}
}
??????從第二段代碼可知,同步的關鍵是多個線程對象競爭同一個共享資源即可,上面的代碼中是通過外部創建共享資源,然后傳遞到線程中來實現。我們也可以利用類成員變量被所有類的實例所共享這一特性,因此可以將lock用靜態成員對象來實現,代碼如下所示:
class MyThread implements java.lang.Runnable
{
???private int threadId;
???private static Object lock = new Object();
???public MyThread(int id)
???{
???????this.threadId = id;
??}
???publicvoid run()
???{
???????synchronized(lock)
???????{
???????????for (int i = 0; i < 100; ++i)
???????????{
???????????????System.out.println("Thread ID: " + this.threadId + " : " + i);
???????????}
???????}
???}
}
public class ThreadDemo
{
???public static void main(String[] args) throws InterruptedException
???{
???????for (int i = 0; i < 10; ++i)
???????{
???????????new Thread(new MyThread(i)).start();
???????????Thread.sleep(1);
???????}
???}
}
??????再來看第一段代碼,實例方法中加入sychronized關鍵字封鎖的是this對象本身,而在靜態方法中加入sychronized關鍵字封鎖的就是類本身。靜態方法是所有類實例對象所共享的,因此線程對象在訪問此靜態方法時是互斥訪問的,從而可以實現線程的同步,代碼如下所示:
class MyThread implements java.lang.Runnable
{
???private int threadId;
???
???public MyThread(int id)
???{
???????this.threadId = id;
???}
???
???publicvoid run()
???{
???????taskHandler(this.threadId);
???}
???private static synchronized void taskHandler(int threadId)
???{
???????for (int i = 0; i < 100; ++i)
???????{
???????????System.out.println("Thread ID: " + threadId + " : " + i);
???????}
???}
}
public class ThreadDemo
{
???public static void main(String[] args) throws InterruptedException
???{
???????for (int i = 0; i < 10; ++i)
???????{
???????????new Thread(new MyThread(i)).start();
???????????Thread.sleep(1);
???????}
???}
}
Java線程同步總結:
1、線程同步的目的是為了保護多個線程反問一個資源時對資源的破壞。
2、線程同步方法是通過鎖來實現,每個對象都有且僅有一個鎖,這個鎖與一個特定的對象關聯,線程一旦獲取了對象鎖,其他訪問該對象的線程就無法再訪問該對象的其他非同步方法。
3、對于靜態同步方法,鎖是針對這個類的,鎖對象是該類的Class對象。靜態和非靜態方法的鎖互不干預。一個線程獲得鎖,當在一個同步方法中訪問另外對象上的同步方法時,會獲取這兩個對象鎖。
4、對于同步,要時刻清醒在哪個對象上同步,這是關鍵。
5、編寫線程安全的類,需要時刻注意對多個線程競爭訪問資源的邏輯和安全做出正確的判斷,對“原子”操作做出分析,并保證原子操作期間別的線程無法訪問競爭資源。
6、當多個線程等待一個對象鎖時,沒有獲取到鎖的線程將發生阻塞。
7、死鎖是線程間相互等待鎖鎖造成的,在實際中發生的概率非常的小。真讓你寫個死鎖程序,不一定好使,呵呵。但是,一旦程序發生死鎖,程序將死掉。
posted @
2010-03-18 01:43 jadmin 閱讀(365) |
評論 (1) |
編輯 收藏
你站在橋上看風景
看風景的人在樓上看你
明月裝飾了你的窗子
你裝飾了別人的夢
posted @
2010-03-16 22:56 jadmin 閱讀(95) |
評論 (0) |
編輯 收藏
有時候將自己的程序打包成jar文件作為類庫調用,出錯時,遇到自己的jar包里的類文件報異常信息時,無法打印出行號,而是(Unknown Source)
解決辦法:在編譯任務中加上如下參數debug="true" debuglevel="lines,vars,source"
例如:
<target name="compile" depends="prepare" description="編繹源碼">
?? <javac encoding="utf-8" destdir="${build.dir}" source="1.5" target="1.5"
??????? deprecation="false" optimize="false" failonerror="true"
??????? debug="true" debuglevel="lines,vars,source">
???? <src refid="src-paths" />
???? <classpath refid="lib-paths" />
?? </javac>
?? <copy todir="${build.dir}" preservelastmodified="true">
???? <fileset dir="${src.dir}">
?????? <include name="**/*.txt"/>
?????? <include name="**/*.xml"/>
?????? <include name="**/*.dtd"/>
?????? <include name="**/*.properties"/>
???? </fileset>
?? </copy>
</target>
posted @
2010-03-14 20:26 jadmin 閱讀(145) |
評論 (0) |
編輯 收藏
CVS介紹
CVS是Concurrent Versions System(并發版本系統)的縮寫,基于Unix體系中成熟的SCCS(Source Code Control System)和RCS(Revision Control System)開發,是一個開放源碼的項目,目前已是版本控制系統的主流軟件。一個很常見的使用CVS的場合,就是開放源碼項目。由于開放源碼項目的開發者的分布性,對于版本管理的要求更加嚴格,而目前大部分的開放源碼項目幾乎都是采用CVS來管理源代碼,CVS的標準性和強大可見一斑。CVS跟微軟的VSS一樣,是源代碼版本控制工具之一,所不同的是CVS屬于開源項目,并且CVS最初是為Linux/Unix設計的,現在已經有Windows下版本,它實現了跨平臺。
CVS采用客戶機/服務器體系,代碼以及各種版本存儲在中心服務器內,每一個個體開發者開發時都首先從服務器上獲得一份自己的拷貝,在此基礎上進行開發,以避免直接影響服務器上的數據。開發者可以隨時把自己的新代碼提交給服務器,并通過更新獲得代碼的最新狀態,保持與其他開發者的一致。
CVS對于網絡是透明的,開發者可以使用客戶端軟件(幾乎所有的平臺上都有相應的客戶端軟件)在任何時候,任何地點通過網絡來獲取最新的代碼。有關Linux下CVS的搭建的資料很多而且很全,在這里就不再介紹。下面主要介紹一下個人在Windows下面搭建CVS的一個過程,或許對你有一定的幫助。
一、需要的軟件
1、CVSNT
CVSNT是目前在Windows平臺上構建CVS服務器最方便的工具,操作簡單,以Windows服務程序的形式運行。目前CVSNT已被移植到其它平臺如Linux上。
選用版本:2.0.58d。
在這里我選用這個版本而不采用最新的2.5.x的原因主要是因為2.5.x版本的CVS改變了History文件的格式,導致無法使用CVSTracNT一起工作。但是如果你不使用CVSTracNT,選用2.5.x也一樣,其操作與2.0.58d基本相同,也是十分的簡單。
CVSNT可以直接到官方站點下載:http://www.cvsnt.org/
2、WinCVS
WinCVS是CVS的一個客戶端程序,當你創建了一個CVS服務器以后,你可以通過WinCVS來訪問CVS服務器,添加數據以及獲取CVS服務器上的文件等。WinCVS同樣擁有Windows版本。
選用版本:2.0.2 (Build2)
客戶端程序版本無所謂,只要與服務器端兼容即可。CVS訪問協議有多種,我們經常用的是pserver,格式是::pserver;username=youname;password=youpass;hostname=192.168.1.22:/cvsroot注意,這里的用戶名以及密碼是你訪問服務器的用戶名以及密碼,對于Windows服務器來講,可以在計算機管理中添加用戶,最后面的cvsroot是CVS服務器數據倉庫的根路徑,與服務器設置要保持一致。
官方下載地址:http://www.wincvs.org
3、Python
要想讓WinCVS運行起來并能夠支持命令行操作,必不可少的就是Python(包含TCL)。
選用版本:2.4.1
在運行CVS客戶端程序的時候,需要Python支持,可以運行WinCVS在命令行中進行操作版本選擇原則是與WinCVS兼容。
官方下載地址:http://www.python.org/
4、CVSTracNT
除了安裝CVS的服務器端以及客戶端程序外,在項目管理中我們還一般會配套安裝CVSTracNT,它是一個基于Web的CVS源代碼跟蹤工具。使用CVSTracNT,我們可以跟蹤源代碼的變更,可以查看提交的記錄,可以對比不同版本之間的異同,允許提交任務單、創建里程碑,并通過Web的方式查看、比較源代碼文件。對于CVS系統本身來說,是一個非常有益的補充,對開發起到很大的幫助。
選用版本:1.1.5 Build20050703多國語言版。
這個版本由cnpack項目組的成員進行了漢化,并添加了許多實用的工具。具體的內容可以參考其中文網站。
官方下載地址:http://www.cnpack.org/
二、安裝過程
1、安裝CVSNT
直接運行CVSNT安裝包。安裝結束后,打開Service Control Panel,配置你的CVS倉庫。點擊Repositories選項頁,添加你的倉庫地址就可以了,不需要重新啟動CVS服務器。這里注意的是,你選擇的數據倉庫路徑是你CVS服務器存儲數據的路徑,并不是你需要用來管理的文件目錄。我們可以指定一個目錄用于存儲。
2、安裝WinCVS
直接運行安裝文件,按照提示Next下去即可。安裝完成以后使用分配的帳號登陸CVS服務器進行相應的操作。詳細使用可以參考WinCVS幫助文檔。
3、安裝Python
直接運行安裝文件。注意要選擇以前裝TCL(使用命令行操作WinCVS時需要TCL的支持),其他一路Next。記得最后在PATH中添加一個Python的安裝目錄。
4、安裝CVSTracNT
直接運行CVSTracNT安裝包。安裝結束后運行CVSTrac配置程序,程序啟動后會自動搜索CVS倉庫,將其添加到CVSTrac數據庫。選中數據庫,點擊瀏覽按鈕,你的瀏覽器應該打開并顯示CVSTrac的頁面了。
CVSTracNT的使用及配置參考 http://www.cnpack.org/ 上的介紹。
三、總結
以上的搭配過程是本人自己第一次搭建的寫照,很多地方可能還不是十分的完整,以后會不斷補充。但是基本的都做完了,而且測試通過。在安裝過程中剛開始的時候可能對CVS帳號的分配會比較迷惑。本人也是通過本次安裝才知道賬號添加試通過計算機管理來實現的,就是添加Windows用戶 :-) 到此為止,一個簡單的CVS環境就培植成功了,接下來的事情是如何添加文件到CVS數據庫中以及如何使用WinCVS進行獲取文件了。
posted @
2010-03-14 02:26 jadmin 閱讀(107) |
評論 (0) |
編輯 收藏
[1]單擊 工具 菜單中的 選項 菜單項,在彈出的 選擇 對話框中選擇 拼寫和語法 選項卡
[2]在 拼寫 選項組中取消 鍵入時檢查拼寫 復選框,在 語法 選項組中取消 鍵入時檢查語法。
[3]選中 拼寫 選項組中的 隱藏文檔中的拼寫錯誤 復選框和 語法 選項組中的 隱藏文檔中的語 法錯誤 復選框。 (此步驟實際上在[2]完成后就已經完成了)
[4]確定
以上方法在Word 2003中測試通過
posted @
2010-03-12 01:36 jadmin 閱讀(93) |
評論 (0) |
編輯 收藏
化冰為水
春已至,冰成水。
寒冬,將水凝。一道冰墻,阻擋在心與心之間。
冰“水為之而寒于水”,連同雜質都凍成心墻。冰在零下便不可一世,低溫是他滋生的溫床,而人與人之間的淡漠使寒氣更重。
一堵心的冰墻,看似無堅不摧無法跨過,但,不要忽視了一樣非常極其有用的東西——熱。當冰度不斷加熱,直至溫度不斷升高,它就會屈服,融化,化成一灘水,有溫度的柔水。雜質便會顯露,沉入水底。但,水亦可滅火,冰化成水時會吸取大量的熱,會澆滅火。因而,包容的燒杯便會出現,將冰化成的水積入杯中,一點一滴。
人與人之間的種種不愉快便是雜質,其種類繁多,仇怨恨等等,而主體冰則是相互之間的不溝通和不包容。一旦冷漠加劇,心溫下降,便會結成冰墻,立在兩人心與心之間不遠的地方,只要稍微給一點熱情,便會化成水,失去靠山的雜質便會隨水流走,洗凈心靈。倘若,心墻很厚,雜質很多,冷漠很多,心就會很冷,人與人阻隔在冰川之中,猶如南極大陸,感覺到的只是冷,看到的除了冰還是冰。
心被冰封在冰層之中,漸漸死去。沒有了知覺的心,沒有心的人能夠稱為人嗎所以,心必須吸收溫暖,必須從陰暗中走出來,去曬一曬太陽。
陽春,冰墻在陽光之下還能放肆嗎只能逐漸消亡,化成一股暖流,在心中匯聚成河,各種各樣的魚蝦于其中歡快,這就是真正的人生。
冬天,寒冷是不可避免的,但只要心中有春,最寒冷的南極也不會凍心。
posted @
2010-03-06 21:46 jadmin 閱讀(72) |
評論 (0) |
編輯 收藏
java異常[java.util.regex.patternsyntaxexception dangling meta character '+' near index]解決
String s="/babalaautomgr.ejs?method=constr";
int i=s.split("?").length;
System.out.println(i);
java.util.regex.PatternSyntaxException: Dangling meta character '?' near index 0
問題出現在加號附近,查詢相關的資料顯示,+、*、|、\等符號在正則表達示中有相應的不同意義。
一般來講只需要加[]、或是\\即可
int i=s.split("[?]").length;或者int i=s.split("\\?").length;
posted @
2009-11-02 20:57 jadmin 閱讀(1305) |
評論 (0) |
編輯 收藏