今天基本上沒(méi)干活 ,呵呵,上午做了個(gè)測(cè)試servlet的例子,感覺(jué)不爽,用了一個(gè)叫 仙人掌 的 web 測(cè)試一框架,鬧半天還得找它自己的運(yùn)行錯(cuò)誤,不用說(shuō)測(cè)試我自己的了,狗日的,不過(guò)測(cè)試技術(shù)還是很重要的,后天開(kāi)始做項(xiàng)目,一定要設(shè)計(jì)一個(gè)好點(diǎn)的,哈哈,爭(zhēng)取能夠上線爽一爽。
發(fā)現(xiàn)google的搜索記錄功能真是好用,可以將以前搜索的東西記錄下來(lái),可以找到很多以前找過(guò)的資料。
這兩天,蒸騰了兩個(gè)例子,聽(tīng)說(shuō)一個(gè)叫struts-menu的框架可以實(shí)現(xiàn)基于struts的菜單,照著網(wǎng)上的例子,自己擺弄了一個(gè),哈哈,這東西好,可以做出不同樣式的菜單,然后又用struts\struts-menu\spring\hibernate\sqlserver2000實(shí)現(xiàn)一個(gè)從數(shù)據(jù)庫(kù)讀取的動(dòng)態(tài)樹(shù)形菜單,好家伙這可折騰死我了,代碼早早的一口氣寫完了,剩下一堆錯(cuò)誤,有些甚至莫名其妙的,大部分時(shí)間都在這上面了,這周在學(xué)junit,看來(lái)很重要,要養(yǎng)成測(cè)試的好習(xí)慣,按照模塊來(lái)測(cè)試,不能一個(gè)程序?qū)懞昧耍龠@找那找錯(cuò),太浪費(fèi)時(shí)間了,這次就是,上來(lái)就給我一個(gè)下馬威,505錯(cuò)誤(網(wǎng)絡(luò)服務(wù)器錯(cuò)誤)actionServlet不可用,檢查struts-config.xml和applicationContext.xml的配置沒(méi)有見(jiàn)檢查出來(lái)不對(duì),想必是spring或者h(yuǎn)ibernate的錯(cuò)誤了,在struts-config.xml解除跟spring的關(guān)聯(lián),直接在action中調(diào)用,spring的dao方法,這下可好,哈哈,出來(lái)一堆錯(cuò)誤,都是不小心的這錯(cuò)那錯(cuò),一通改之后,最后卡在
hibernate java.lang.ClassCastException: [Ljava.lang.Object
上,是hibernate報(bào)的錯(cuò)誤,發(fā)現(xiàn)在查詢后得到的List不知道里面是什么類型,不能強(qiáng)制轉(zhuǎn)換成我的持久類,不能轉(zhuǎn)換成map,那是什么呢,因?yàn)槲业牟樵冋Z(yǔ)句是復(fù)合查詢,最后發(fā)現(xiàn)List是Object[],是個(gè)Object類型的數(shù)組,我見(jiàn)過(guò)List里面是Map,持久類,Object[]了,Map是在spring里面通過(guò)spring的jdbcTemplete返回的List,里面是Map集合,Map的鍵是數(shù)據(jù)庫(kù)表的字段名,后兩個(gè)是在hibernate里,一個(gè)表查詢可能就是返回持久類類型,多個(gè)表查詢就是Object[]類型了?但Object[]里面是什么,我這里發(fā)現(xiàn)里面是每條記錄的值,在網(wǎng)上查到,還有可能是多個(gè)持久類(多表查詢,這個(gè)說(shuō)法我沒(méi)試過(guò)呢),這樣把List里取出的轉(zhuǎn)換成Object[],這個(gè)錯(cuò)誤算是通過(guò)了,還有個(gè)hibernate java.lang.ClassCastException: java.lang.Integer
哈哈,下午沒(méi)上課,今天開(kāi)始的Junit,上午睡了一半的覺(jué),下午無(wú)意中看到一個(gè)利用google翻譯實(shí)現(xiàn)的控制臺(tái)程序,拿過(guò)來(lái),剛學(xué)的ajax,復(fù)制粘貼添加刪除,哈哈就成了,但是有個(gè)小bug,中文翻譯成英文是亂碼,其他語(yǔ)言倒是基本沒(méi)問(wèn)題,哈哈,可能是編碼的問(wèn)題。還不知道怎么解決。
javascript腳本
function doTranslate()
{
var text = document.getElementById("source").value;
var langpair = document.getElementById("langpair_t").value;
if(text=="")
{
return;
}
alert(text);
var requestURL = "http://translate.google.com/translate_t?langpair="+langpair+"&text=" + text;
httpRequest = getHttpRequestObject();
httpRequest.onreadystatechange = processHttpResponse;
httpRequest.open("GET",requestURL,true);
httpRequest.send(null);
}
function parseXMLResponseInText()
{
if(httpRequest.responseText!="")
{
var content = httpRequest.responseText;
var s1 = "<div id=result_box dir=ltr>";
var s2 = "</div>";
var begin = content.indexOf(s1);
var end = content.indexOf(s2,begin);
var restr = content.substring(begin + s1.length,end);
document.getElementById("result_box").innerText = restr;
}
}
function processHttpResponse()
{
if(httpRequest.readyState == 4)
{
if(httpRequest.status == 200)
{
parseXMLResponseInText();
}
}
else
{
document.getElementById("result_box").innerText = "正在翻譯...";
}
}
function getHttpRequestObject()
{
var httpRequestObject;
if (window.XMLHttpRequest)
{
httpRequestObject = new XMLHttpRequest();
}
else
{
if (window.ActiveXObject)
{
try
{
httpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
try
{
httpRequestObject = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e2)
{
alert("您的瀏覽器有問(wèn)題!");
}
}
}
}
return httpRequestObject;
}
明天接著Junit,呵呵。
對(duì)了,剛聽(tīng)說(shuō)一個(gè)struts-menu,回去研究研究,好像以前在.net里見(jiàn)過(guò)一個(gè)實(shí)現(xiàn)類似樹(shù)形框架的控件,還可以實(shí)現(xiàn)權(quán)限控制,這個(gè)也差不多,在網(wǎng)上搜了搜,有好多介紹,等做了例子出來(lái)。
為了一個(gè)用jbuilder2006+weblogic部署webservices,老師弄不出來(lái),而且運(yùn)行jbuilder再加上weblogic機(jī)器慢的要死,一次一次的重試,時(shí)間啊。就是不動(dòng),哈哈。
最后在網(wǎng)上搜到下面的問(wèn)題。說(shuō)是因?yàn)?/span>jbuilder和weblogic的lib文件版本兼容問(wèn)題,還有就是weblogic8.1sp3以前的版本不支持sourcerootforupload,所幸重裝了weblogic,原來(lái)是
Why am I getting the error Unrecognized option or flag, -sourcerootforupload ?
In order to maintain compatibility between the 8.1 and 9.0 version of the plugin I used a new flag on the deployment engine.
The flag was added with service pack 4 on 8.1. If you are not on service pack 4 or later you will see this error. If you send a note
to the mojo mailing list I can create a special version for service pack 3 and earlier.
還有就是如果出現(xiàn)
Build Failed: The failure is due to a known compatibility issue with WebLogic and Ant 1.6 as WebLogic includes an older version of
的錯(cuò)誤就刪除WebLogic安裝目錄下的weblogic81/server/lib/ant下的ant.jar和optional.jar就行了,而我重裝成了weblogic9.2以后也沒(méi)報(bào)這樣的錯(cuò)誤。暈,真讓人暈頭轉(zhuǎn)向。
昨天看effective java第二條,建立單立模式,有兩種方式,兩者都需要構(gòu)造函數(shù)是私有的,一種是,聲明一個(gè)public static final的屬性初始化為這個(gè)類的實(shí)例,然后直接用類名.屬性名返回這個(gè)對(duì)象,另一種是聲明一個(gè)private static final的屬性,在靜態(tài)方法中返回這個(gè)static final 的對(duì)象,這么做的好處就是有回旋的余地,比如不想永遠(yuǎn)只返回一個(gè)相同的對(duì)象了,容易修改。在效率上,兩種方式應(yīng)該是不相上下的,因?yàn)楹玫木幾g器能夠監(jiān)測(cè)到內(nèi)聯(lián)。
時(shí)間在一天一天的過(guò),快過(guò)年了,這個(gè)年不好過(guò)啊。
被熊貓燒香病毒折騰了一中午,我被間接傳染了,我的移動(dòng)硬盤里查到了五個(gè),還好沒(méi)有在我的電腦里感染,在網(wǎng)上下了個(gè)專殺,專殺鏈接。
另:怎樣預(yù)防熊貓燒香系列病毒?
轉(zhuǎn)自:金山毒霸信息安全網(wǎng)
最近那個(gè)熊貓燒香病毒讓所有用電腦的人很生氣,熊貓這個(gè)國(guó)寶似乎不再可愛(ài),而成了人人喊打的過(guò)街老鼠。熊貓變種實(shí)在太多,中招后的損失很嚴(yán)重,殺毒軟件一直在救火中。以下幾招很簡(jiǎn)單易行,幫你預(yù)防熊貓燒香病毒,至少能明顯減少你中招的幾率。
1.立即檢查本機(jī)administrator組成員口令,一定放棄簡(jiǎn)單口令甚至空口令,安全的口令是字母數(shù)字特殊字符的組合,自己記得住,別讓病毒 猜到就行。修改方法,右鍵單擊我的電腦,選擇管理,瀏覽到本地用戶和組,在右邊的窗格中,選擇具備管理員權(quán)限的用戶名,單擊右鍵,選擇設(shè)置密碼,輸入新密 碼就行。
2.利用組策略,關(guān)閉所有驅(qū)動(dòng)器的自動(dòng)播放功能。
步驟:?jiǎn)螕糸_(kāi)始,運(yùn)行,輸入gpedit.msc,打開(kāi)組策略編輯器,瀏覽到計(jì)算機(jī)配置,管理模板,系統(tǒng),在右邊的窗格中選擇關(guān)閉自動(dòng)播 放,該配置缺省是未配置,在下拉框中選擇所有驅(qū)動(dòng)器,再選取已啟用,確定后關(guān)閉。最后,在開(kāi)始,運(yùn)行中輸入gpupdate,確定后,該策略就生效了。
3.修改文件夾選項(xiàng),以查看不明文件的真實(shí)屬性,避免無(wú)意雙擊騙子程序中毒。
步驟:打開(kāi)資源管理器(按windows徽標(biāo)鍵+E),點(diǎn)工具菜單下文件夾選項(xiàng),再點(diǎn)查看,在高級(jí)設(shè)置中,選擇查看所有文件,取消隱藏受保護(hù)的操作系統(tǒng)文件,取消隱藏文件擴(kuò)展名。
4.時(shí)刻保持操作系統(tǒng)獲得最新的安全更新,建議用毒霸的漏洞掃描功能,汗,很可惜,現(xiàn)在光纜還沒(méi)修好,網(wǎng)不通,不好修復(fù)。
5.啟用windows防火墻保護(hù)本地計(jì)算機(jī)。
Today,webservice,axis,jbuilder2006
今天做了兩個(gè)基于Tomcat的webservice,Tomcat本身不支持webservice,需要有一個(gè)axis的插件,說(shuō)白了就是jar包來(lái)支持,webservice利用xml基于soap協(xié)議傳輸來(lái)調(diào)用遠(yuǎn)程方法,在客戶端和服務(wù)器端都有業(yè)務(wù)提供類的一個(gè)接口,他們通過(guò)wsdl語(yǔ)言來(lái)定義提供的哪些服務(wù),客戶端解析服務(wù)器端提供的wsdl生成業(yè)務(wù)類的接口,這樣客戶端就可以遠(yuǎn)程調(diào)用了。
利用jbuilder2006構(gòu)建webservice是很簡(jiǎn)單的,所有復(fù)雜的都自動(dòng)生成了,但其中還是有些一些bug,比如今天遇到的,建立了一個(gè)web應(yīng)用程序用來(lái)提供服務(wù),在通過(guò)向?qū)砑?/span>webservice服務(wù)器端的時(shí)候,就是不出現(xiàn)先前建好的web應(yīng)用,最后在網(wǎng)上查原來(lái)是:在JBuilder 2006中建立WebService的服務(wù)器端程序的時(shí)候,不管怎么試都是卡在建立WEB MODULE這個(gè)地方了。主要是JB2006自帶的TOMCAT的問(wèn)題--------把建立WEB MODULE時(shí)的 SERVLET版本改成SERVLET 2.3,JSP版本改成JSP1.2就不會(huì)卡住了。暈。
昨天看effective java,第一條,試著用靜態(tài)工廠方法替代構(gòu)造函數(shù),原因有:
1、靜態(tài)工廠方法有名字,可以讓人知道這個(gè)對(duì)象構(gòu)造出來(lái)是什么,比如一個(gè)類需要提供幾個(gè)構(gòu)造函數(shù),它們有不同的函數(shù)原形(函數(shù)原型包括函數(shù)名和函數(shù)的參數(shù)但不包括函數(shù)的返回類型),這樣很可能讓用戶不能清楚地知道每個(gè)構(gòu)造函數(shù)是做什么用的,除非去看文檔,而將其中幾個(gè)構(gòu)造函數(shù)用靜態(tài)工廠方法代替,解決了這個(gè)問(wèn)題。
2、靜態(tài)工廠方法可以返回不同的對(duì)象,這特別適用于面向接口編程,按照提供的參數(shù)可以返回接口的不同的實(shí)現(xiàn)。
3、靜態(tài)工廠方法可以不象構(gòu)造函數(shù)那樣每次都創(chuàng)建新的對(duì)象,可以是單立的,也可以不創(chuàng)建重復(fù)的對(duì)象,也就是如果兩個(gè)對(duì)象的屬性值相等就不創(chuàng)建新的返回已經(jīng)存在的。
另外,還提到了靜態(tài)工廠方法的缺點(diǎn),1、如果一個(gè)類將構(gòu)造函數(shù)設(shè)成了private的,用靜態(tài)工廠方法來(lái)創(chuàng)建對(duì)象,那么這個(gè)類將不能被繼承,因?yàn)樽宇惒荒苷{(diào)用父類的構(gòu)造方法(已設(shè)成私有)。2、靜態(tài)工廠方法跟其它靜態(tài)方法沒(méi)有任何區(qū)別,所以必須給它們起一個(gè)合適的名字,比如getInstance().,這種說(shuō)法破壞了已有的規(guī)則,但規(guī)則,對(duì)象都是由構(gòu)造函數(shù)創(chuàng)建的,但使用靜態(tài)工廠方法又有它的獨(dú)到的好處。所以在取舍上,作者這樣說(shuō),在實(shí)際開(kāi)發(fā)中,如果沒(méi)有足夠的理由,還是老老實(shí)實(shí)的使用構(gòu)造方法來(lái)創(chuàng)建對(duì)象,畢竟這是已有的規(guī)則。
今天練習(xí)了dwr與struts和spring集成,其中與struts集成有點(diǎn)小錯(cuò)誤還沒(méi)查出來(lái),在網(wǎng)上找資料也沒(méi)有解決。Spring集成倒是挺爽的,順便回顧了spring的設(shè)置,如果spring和strtus集成,首先無(wú)論哪種方式都需要在struts-config.xml中以插件方式引入spring的一個(gè)加載類ContextLoaderPlugin
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" />
</plug-in>
可以用spring的一個(gè)接口DelegatingRequestProcessor替換org.apache.struts.action.RequestProcessor類,在web.xml中設(shè)置.
還可以將struts的Action類交給spring的代理類來(lái)處理。
還有就是如果只是簡(jiǎn)單web應(yīng)用,不用struts,那么在web.xml配置文件中配置一個(gè)spring監(jiān)聽(tīng)器或者servlet,例如
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
這樣在用到spring Ioc中的對(duì)象時(shí)就用WebApplicationContextUtils來(lái)加載。
在IBM的developerworks網(wǎng)站上看java的基礎(chǔ)教程,將編寫修良java代碼的建議
1是保持類最小,如果你的類有100個(gè)方法,可能就要考慮考慮是不是要設(shè)計(jì)成幾個(gè)對(duì)象。呵呵,100個(gè),還沒(méi)寫過(guò),不過(guò)想象中應(yīng)該有,大型的復(fù)雜系統(tǒng)。
2是保持方法最小,一個(gè)方法只做一件事。
3是給方法取個(gè)好名字,好名字用處太大了,呵呵呵,特別是別人看別人的代碼時(shí),特別是過(guò)了一段時(shí)間以后,再來(lái)看寫的代碼,特別是系統(tǒng)比較大比較復(fù)雜時(shí),我們的腦子沒(méi)計(jì)算機(jī)好使。
4是保持類的數(shù)量最小,有時(shí)間看看極限編程的東西。這句話好象和第一句話有點(diǎn)矛盾,類的數(shù)量少了,類就變大了,類變小了,類的數(shù)量多了,呵呵,這可能具體情況具體分析吧,讓它們之間達(dá)到個(gè)平衡點(diǎn),教程上一句話說(shuō)的好:在不影響清晰度的情況下盡量的減少類。
5是保持注釋的數(shù)量最少,我剛剛看到這一點(diǎn)的時(shí)候,有點(diǎn)吃驚,因?yàn)槲矣龅降睦蠋煻脊膭?lì)我們有良好的注釋習(xí)慣,而且是邊寫代碼邊加注釋,而不是寫完代碼后統(tǒng)一再加注釋,總之是強(qiáng)烈建議寫注釋的,因?yàn)檫@樣便于閱讀代碼,而這里建議我們保持注釋最少,理由是,當(dāng)更新代碼時(shí)維護(hù)代碼時(shí)還要同時(shí)更新注釋,因?yàn)槟切┳⑨屚瑫r(shí)也過(guò)期了,這回徒增工作量,解決辦法是盡可能的使代碼清晰。經(jīng)可能的,想盡一切辦法的。
6是一致的代碼風(fēng)格,C# C++的代碼風(fēng)格好象和java的不太一樣。有人喜歡習(xí)慣這樣有人喜歡那樣。
7是避免switch.優(yōu)先用if,然后再switch.
8是public的,有足夠的理由不是public的,呵呵/作者把最有爭(zhēng)議性的放在了最后.
9是追隨Fower,這是個(gè)人名,寫了本書叫Refactoring,因式分解呵呵,查了查chinpub,中文版叫《重構(gòu):改善既有代碼的設(shè)計(jì)》,明天去逛逛書店。
引用作者的一句話
"
編寫 Java 代碼相當(dāng)簡(jiǎn)單。編寫優(yōu)良的 Java 代碼則是一門手藝。傾力成為一個(gè)手藝人。
"
繼續(xù)作dwr的練習(xí),做了個(gè)動(dòng)態(tài)顯示用戶信息,最后因?yàn)橐粋€(gè)相對(duì)路徑問(wèn)題郁悶了我半天,原來(lái)在用eclipse新建jsp頁(yè)的時(shí)候它給自動(dòng)加了個(gè)<base href="<%=basePath%>">,以至于我的圖片一直顯示不出來(lái),找相對(duì)路徑,想了好多法,最后發(fā)現(xiàn)原來(lái)癥結(jié)在這,刪了它,皆大歡喜,哈哈,圖片讀出來(lái)了,哈哈,是個(gè)小人兒鞠躬的小圖片,一列小人在那鞠躬,哈哈,有成就感,要不早出來(lái)了,以為這么個(gè)小小的問(wèn)題,耽誤了那么多時(shí)間,還有,小郭的那個(gè)更簡(jiǎn)單的錯(cuò)誤,找了半天,最后發(fā)現(xiàn)一個(gè)單詞錯(cuò)了,display寫成display了,好家伙,不仔細(xì)看,還真看不出來(lái)。
明天又休息了,租的房子該到期了,剛在跳蚤市場(chǎng)上轉(zhuǎn)了轉(zhuǎn),有點(diǎn)膽怯,哈哈,怕掉進(jìn)陷阱,呵呵,再有手頭的資金也不寬裕,錢啊。
DWR,哈哈,又是一個(gè)框架,的確讓開(kāi)發(fā)者少寫了很多代碼,又是配置配置,哈哈,一路的東西,dwr的配置,首先引入dwr.jar這個(gè)包,還有兩個(gè)用于生成日志的兩個(gè)包,然后在web.xml中配置啟動(dòng)dwr的servlet,并且配置dwr.xml的路徑,跟struts配置一樣,在dwr.xml文件中配置要映射的類以及方法,然后啟動(dòng)服務(wù)器,在<webroot>/dwr中查看是否配置正確,在這個(gè)頁(yè)面中dwr告訴我們每映射一個(gè)類,就要添加一個(gè)相應(yīng)的js文件引用,之后在自己的js文件中調(diào)用映射的文件就可以了。
今天注冊(cè)中國(guó)移動(dòng)的那個(gè)飛信,氣死我了,說(shuō)我驗(yàn)證碼不正確,打客服,接電話的小姐真實(shí)嘴皮子利落,都不給我插嘴的機(jī)會(huì),移動(dòng)怎么培訓(xùn)的,個(gè)人性格問(wèn)題,先頭打得那個(gè)就比較老實(shí),呵呵呵。
今天做了兩個(gè)ajax的簡(jiǎn)單小例子,領(lǐng)略到javascript查找錯(cuò)誤的困難了,呵呵,真是想象不出那些大型網(wǎng)站的應(yīng)用,那么多的javascript腳本代碼,是怎么調(diào)試的呢,明天看看那個(gè)DWR,看看這能不能帶來(lái)驚喜,呵呵呵,ajax確實(shí)能給用戶帶來(lái)極爽的用戶體驗(yàn),但是編碼麻煩了許多,代碼多了許多,體驗(yàn)了幾個(gè)ajax應(yīng)用的網(wǎng)站,google的在線office,Gmail,yahoo的email也是ajax的了。
以為今天周四了呢,哈哈,過(guò)的真慢,有時(shí)候嫌過(guò)的快,有時(shí)候嫌過(guò)的慢,真難伺候,有人說(shuō)我挺快樂(lè)的還,那語(yǔ)氣好像我正常情況下應(yīng)該是郁悶的,沒(méi)錯(cuò),我就是沉浸在那些代碼里的時(shí)候,暫時(shí)忘掉暫時(shí)不去想那些只能嘆氣的事,所以不想出來(lái),出來(lái)了發(fā)現(xiàn)現(xiàn)實(shí)還是現(xiàn)實(shí),呵呵,我佛保佑,平平靜靜。
看編程思想去。
寫了這么多,回過(guò)頭,也不知所云。
快樂(lè)的秘訣
想快樂(lè)一點(diǎn)嗎?美國(guó)加州大學(xué)心理學(xué)家桑雅‧柳柏莫斯基在幾經(jīng)研究之后,提出八點(diǎn)具體可行的做法:
心存感激:
拿一本「感恩簿」,將三至五件你目前心存感激的事項(xiàng)記下來(lái)。這些可以是俗事(養(yǎng)的牡丹花盛開(kāi)了),可以是驚喜之事(小孩開(kāi)始學(xué)走路了)。每周記錄一次(例如,固定星期日晚間),保持鮮活,內(nèi)容愈常更換愈好。
時(shí)時(shí)行善:
可分隨機(jī)的(排隊(duì)時(shí),讓趕時(shí)間的人排前面),有系統(tǒng)的(每周日固定拿晚餐給鄰居那位老人)。對(duì)朋友或陌生人仁慈一點(diǎn),會(huì)產(chǎn)生積極效果,讓自己感覺(jué)很慷慨、很有能力,也會(huì)贏得別人笑容、贊許及仁慈回饋。這些都會(huì)讓人感覺(jué)快樂(lè)。
品嘗樂(lè)趣:
多注意那些能讓人短暫快樂(lè)及驚喜之事,例如草莓的甜味、陽(yáng)光的和煦。心理學(xué)家建議,不妨將快樂(lè)時(shí)光如照相一般「印存腦海中」,在痛苦時(shí)翻出來(lái)回味。
感謝貴人:
如果有人在你人生走到十字路時(shí),提攜或指導(dǎo)過(guò)你,要趕快向他答謝。越詳盡越好,最好是親自答謝。
學(xué)習(xí)諒解:
如果有人傷害你、誤會(huì)你,就寫封信給他表示原諒,也讓自己怒氣怨恨得以發(fā)泄。無(wú)法諒解他人會(huì)讓自己積怨、心懷報(bào)復(fù),諒解則會(huì)讓你大步往前。
珍惜親友:
對(duì)生活滿意與否,其實(shí)與錢財(cái)、頭銜、甚至健康關(guān)系不大。最大因素是人際關(guān)系的和諧。多花點(diǎn)時(shí)間及精力在朋友親人身上。
照顧身體:
充足睡眠、運(yùn)動(dòng)、伸展四肢、笑口常開(kāi)都可短時(shí)間內(nèi)改善心情。常做這些動(dòng)作會(huì)提升生活滿意度。
因應(yīng)難關(guān):
人生不免有難。宗教信仰可助你度過(guò)。不過(guò)一些平凡無(wú)奇信條也可。例如「事情總會(huì)過(guò)去。這次也一樣!」、「任何打不死我的事,會(huì)讓我變得更堅(jiān)強(qiáng)。」關(guān)鍵就在,你必須相信這些信條。

不知道什么時(shí)候,也重新關(guān)注起這些來(lái)了,呵呵,我想回到從前...,我要回到從前,即便前面的路并不好走,那才是我自己,呵呵,好了不說(shuō)了。
做了個(gè)應(yīng)用ajax的小練習(xí),最后部署看結(jié)果的時(shí)候出了莫名其妙的問(wèn)題。
引用js文件出錯(cuò)的問(wèn)題
將javaScript單獨(dú)放在一個(gè)js文件里,執(zhí)行沒(méi)反應(yīng),把javaScript直接放在jsp頁(yè)中正常。
js代碼都是復(fù)制的,用得都是一樣的,瘋了都,讓旁邊幾個(gè)人看了甚至老師也看不出問(wèn)題,代碼上沒(méi)有任何問(wèn)題,無(wú)奈在qq群里問(wèn),大伙給出了好多注意,也都不行,有人認(rèn)為是文件路徑問(wèn)題,有人為使大小寫問(wèn)題,經(jīng)檢查都沒(méi)錯(cuò),真瘋了,在網(wǎng)上搜,google翻了五頁(yè),看到一哥們的blog寫類似的問(wèn)題,正合我的癥狀,原來(lái)是編碼的問(wèn)題,要把js文件保存成和其他jsp文件保存成相同的編碼,否則就不認(rèn),我暈,問(wèn)題總算解決了,原來(lái)我的js文件為了不使中文變成亂碼用EditPlus保存成UTF-8了,而我的jsp頁(yè)用eclipse建的是ISO-8859-1編碼。
哈哈,問(wèn)題解決了,甚感輕松。
昨天晚上看編程思想的類型檢查,關(guān)于RTTI運(yùn)行時(shí)類型檢查的原理,在每個(gè)類編譯成class的時(shí)候,就會(huì)產(chǎn)生一個(gè)特殊的對(duì)象,Class對(duì)象,被保存在.class文件中,這個(gè)Class對(duì)象來(lái)標(biāo)識(shí)這個(gè)類,當(dāng)要生成這個(gè)類的對(duì)象的時(shí)候,JVM虛擬機(jī)會(huì)查找這個(gè)類的Class對(duì)象是否存在,若不存在就查找這個(gè)類的.calss文件,并將其加載,看來(lái)這個(gè)Class對(duì)象就像這個(gè)類的一個(gè)標(biāo)識(shí),也可以從Class對(duì)象得知這個(gè)類的類型(當(dāng)一個(gè)類被加載的時(shí)候,static代碼塊被執(zhí)行,如果有,這讓我理解了在jdbc中初始化數(shù)據(jù)源的時(shí)候,為什么要用Class.forName()來(lái)加載驅(qū)動(dòng)程序類,可能是就是為了執(zhí)行驅(qū)動(dòng)程序中的靜態(tài)語(yǔ)句塊吧)
開(kāi)始了一門新課,也是個(gè)新東西,ajax,這東西,剛開(kāi)始,簡(jiǎn)單的接觸,由javascript、xml實(shí)現(xiàn)的一種無(wú)刷新技術(shù)。
Javascript是一種解釋型腳本語(yǔ)言,所謂腳本語(yǔ)言,區(qū)別于編程語(yǔ)言,它不需要一個(gè)完成的程序文件的形式就能存在,只需要一組代碼就能運(yùn)行,這是跟編程語(yǔ)言的最大區(qū)別,編程語(yǔ)言必須有一個(gè)完整的程序文件。
Javascript的內(nèi)置對(duì)象,String、Math、Date、Array、Screen、
瀏覽器內(nèi)置對(duì)象window,navigator
Window下有location\history\document
Navigator主要提供一些瀏覽器信息。
今天不知怎么的了,老困,今天早點(diǎn)睡,呵呵!