日歷
| 日 | 一 | 二 | 三 | 四 | 五 | 六 |
---|
27 | 28 | 29 | 30 | 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 | 27 | 28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|
統(tǒng)計
- 隨筆 - 11
- 文章 - 0
- 評論 - 28
- 引用 - 0
導(dǎo)航
常用鏈接
留言簿(2)
隨筆分類
隨筆檔案
搜索
最新評論

閱讀排行榜
評論排行榜
|
2007年2月2日
在linux下用rm刪除大量文件時會出現(xiàn)這個錯誤:
?? rm -rf 'wz-a1.2007-02*' rm?-rf?*?-bash:?/bin/rm:?參數(shù)列表過長
經(jīng)過google, 發(fā)現(xiàn)這個方法, 特記下來, 以防以后忘記 find?.?-name?"wz-a1.2007-02*"?|?xargs?rm -rf 'wz-a1.2007-02*'
2006年12月28日
摘要: 在某個項目中,經(jīng)過幾個同事的修改, 最終得到這個支持分頁的action基類, 使用非常簡單:1. 在寫action類時把派生ActionSupport類改成派生這個PaginationSupportAction類2. 實現(xiàn)這兩個抽象方法, 其中doExecute方法就是你原來的execute方法的代碼, queryCount()返回符合條件的記錄數(shù)????/**?*//**?????*?just?... 閱讀全文
2006年12月27日
1。通過cmpp協(xié)議接收短信不是在自己的服務(wù)器的7910端口監(jiān)聽,而是鏈接到移動短信服務(wù)器的7910端口 2。短信內(nèi)容的長度是byte的類型,8個字節(jié),應(yīng)該是無符號的,但是java的byte是有符號的,所以最大值是127,當(dāng)大于127時長度就小于0了,所以這兩天一直郁悶為什么發(fā)長短信就死在那里,解決: bytetmpLen=in.readByte(); msg_ 文章來源: http://www.yourblog.org/Data/20054/249969.html
packagecom.kelefa.glidewindow; importjava.util.HashMap; importjava.util.LinkedHashMap; importjava.util.Map; /** *滑動窗口. *有些工作(例如網(wǎng)絡(luò)通信)需要回應(yīng),但不需要一個一個的等待回應(yīng),可并發(fā)的進(jìn)行,但需要控制流量, *滑動窗口是比較好的方法 文章來源: http://www.yourblog.org/Data/20054/250650.html
摘要: 不知道是自己對hibernate不了解,用的不對, 還是db2版本問題, 以前的一個項目用到db2, hibernate, 以為hibernate已經(jīng)幫我們做好分頁的一切事情,只要用就行了, 代碼大概如下:????/**?*//**?????*?設(shè)置分頁,?pageNo或pageList<=0時返回所有記錄?????*??????*?@param?pageNo?????*??????????... 閱讀全文
摘要: 一般主動告警系統(tǒng)的告警信息采集主要有5種方法: ??1. 在告警服務(wù)器ping各種設(shè)備, 判斷設(shè)備是否存活和掉包率?2. 接收設(shè)備發(fā)過來的系統(tǒng)日志(syslog), 并通過相應(yīng)的規(guī)則庫(正則表達(dá)式)匹配判斷是否需要告警?3. 接收設(shè)備發(fā)過來的snmp Trap信息, 進(jìn)行判斷告警?4. 提取網(wǎng)管系統(tǒng)的告警信息?5. 通過snmp協(xié)議, 取回相應(yīng)oid的值, 進(jìn)行判斷告警??什么是snmp:??Si... 閱讀全文
2006年7月13日
用webwork的datepicker時, 如果格式是"%Y-%m-%d"工作很正常, 但是有些格式需要帶上時間的: "%Y-%m-%d?%H:%M", 這時用webwork默認(rèn)的類型轉(zhuǎn)換就不行了,需要自己實現(xiàn), 根據(jù)javaeye論壇某高手的建議用正則表達(dá)式來判斷form傳過來的日期字符串是"%Y-%m-%d"還是"%Y-%m-%d?%H:%M",再用相應(yīng)的SimpleDateFormat來parse分析字符串生成Date對象, 代碼如下:

import?java.text.ParseException;
import?java.text.SimpleDateFormat;
import?java.util.Date;
import?java.util.Map;

import?org.apache.log4j.Logger;

import?com.opensymphony.webwork.util.WebWorkTypeConverter;

public?class?DateConverter
????????extends?WebWorkTypeConverter
  {
????private?static?final?Logger?log?=?Logger.getLogger(?DateConverter.class?);

????private?final?static?String?regex_time?=?"[0-9]{2,4}-[0-9]{1,2}-[0-9]{1,2}?[0-9]{1,2}:[0-9]{1,2}";

????private?final?static?SimpleDateFormat?sdf_time?=?new?SimpleDateFormat(
????????????"yyyy-MM-dd?HH:mm"?);

????private?final?static?String?regex_date?=?"[0-9]{2,4}-[0-9]{1,2}-[0-9]{1,2}";

????private?final?static?SimpleDateFormat?sdf_date?=?new?SimpleDateFormat(
????????????"yyyy-MM-dd"?);

????@Override?public?Object?convertFromString(?Map?context,?String[]?values,
????????????Class?toClass?)
 ???? {
????????if?(?values.length?==?1?)
 ???????? {
????????????Date?date?=?null;
????????????try
 ???????????? {
????????????????date?=?convertToDate(?values[0]?);
????????????}
????????????catch?(?ParseException?e?)
 ???????????? {
????????????????log.warn(?e.getMessage()?);
????????????}
????????????return?date;
????????}

????????Date[]?results?=?new?Date[values.length];

????????for?(?int?i?=?0;?i?<?values.length;?i++?)
 ???????? {
????????????String?value?=?values[i];
????????????try
 ???????????? {
????????????????results[i]?=?convertToDate(?value?);
????????????}
????????????catch?(?ParseException?e?)
 ???????????? {
????????????????log.warn(?e.getMessage()?);
????????????}
????????}

????????return?results;
????}

????private?Date?convertToDate(?String?value?)
????????????throws?ParseException
 ???? {
????????if?(?value.matches(?regex_time?)?)
????????????return?sdf_time.parse(?value?);
????????else?if?(?value.matches(?regex_date?)?)
????????????return?sdf_date.parse(?value?);

????????return?null;
????}

????@Override?public?String?convertToString(?Map?context,?Object?o?)
 ???? {
????????if?(?o?instanceof?Date?)
 ???????? {
????????????Date?date?=?(Date)?o;
????????????return?sdf_time.format(?date?);
????????}

????????return?o.toString();
????}

????public?static?void?main(?String[]?args?)
 ???? {
????????System.out.println(?"2006-07-11".matches(?regex_date?)?);
????????System.out.println(?"2006-07-11?00:21".matches(?regex_time?)?);
????}
}
要讓這個類來代替webwork默認(rèn)的轉(zhuǎn)換你還需要在classpath目錄, 一般就是classes目錄放置配置文件 xwork-conversion.properties: java.util.Date=DateConverter這種方法是對整個application起作用,. 如果要只對單個action起作用, 在action同一個package寫一個ActionClassName-conversion.properties: startDate=DateConverter
近日研究使用webwork(版本:2.2.1)的datepicker標(biāo)簽, 它用jscalendar來實現(xiàn), 使用非常簡單:
<
ww:datepicker?
cssClass
="ListBox"
?size
="16"
?showstime
="true"
?name
="start"
?id
="start"
?format
="%Y-%m-%d?%H:%M"
?
/>
顯示頁面總說js錯誤, 什么什么對象沒有定義之類的, 具體忘記了, 查看網(wǎng)頁源代碼發(fā)現(xiàn)它需要3個js文件: <script?type="text/javascript"?src="/webwork/jscalendar/calendar.js"></script>
<script?type="text/javascript"?src="/webwork/jscalendar/lang/calendar-ch.js"></script>
<script?type="text/javascript"?src="/webwork/jscalendar/calendar-setup.js"></script>用winRAR打開webwork-2.2.1.jar發(fā)現(xiàn)com\opensymphony\webwork\static\jscalendar\lang 目錄并沒有 calendar-ch.js文件,倒是有一個calendar-zh.js文件, 不曉得是怎么回事, 小弟對i18n沒有研究, 估計是webwork的一個bug吧,發(fā)現(xiàn)有兩個解決方法: 1.把calendar-zh.js改名為calendar-ch.js, 或把calendar-zh.js另存為calendar-ch.js, 然后重新打包webwork-2.2.1.jar 2.假設(shè)你的webwork.properties有這樣的設(shè)置:
###?Standard?UI?theme
###?Change?this?to?reflect?which?path?should?be?used?for?JSP?control?tag?templates?by?default
webwork.ui.theme=xhtml
webwork.ui.templateDir=template
#sets?the?default?template?type.?Either?ftl,?vm,?or?jsp
webwork.ui.templateSuffix=ftl修改/template/xhtml/datepicker.ftl: <#if?!stack.findValue("#datepicker_js_included")?exists>
<#assign?trash?=?stack.setValue("#datepicker_js_included",?true)/>
<script?type="text/javascript"?src="<@ww.url?value="/webwork/jscalendar/"?encode='false'/>calendar.js"></script>
<script?type="text/javascript"?src="<@ww.url?value="/webwork/jscalendar/lang/"?encode='false'/>calendar-zh.js"></script>
<script?type="text/javascript"?src="<@ww.url?value="/webwork/jscalendar/"?encode='false'/>calendar-setup.js"></script>
</#if>
<#include?"/${parameters.templateDir}/simple/text.ftl"?/>
<a?href="#"?id="${parameters.id}_button"><img?src="../images/pdate.gif"?width="16"?height="16"?border="0"?alt="點擊這里選擇日期"></a>
<script?type="text/javascript">
????Calendar.setup({
????????inputField?????:????"${parameters.id}",
<#if?parameters.format?exists>
????????ifFormat???????:????"${parameters.format}",
</#if>
<#if?parameters.showstime?exists>
????????showsTime??????:????"${parameters.showstime}",
</#if>
????????button?????????:????"${parameters.id}_button",
<#if?parameters.singleclick?exists>
????????singleclick????:????${parameters.singleclick},
</#if>
????????step???????????:????1
????});
</script>其實就是把calendar-${parameters.language?default("en")}.js修改成calendar-zh.js
2006年7月3日
一個使用webwork和hibernate的項目一直用mysql做為數(shù)據(jù)庫,一直工作正常,但是最近改用ms SqlServer時發(fā)現(xiàn)了兩個問題: 1。在mysql用“user”作為一個表的表名,但是在SqlServer中“user”也許是個保留關(guān)鍵字,創(chuàng)建表失敗, ????? 只好改成“Tuser”才ok; 2。由于大意,程序中有這一個hql: ????????????from Device device group by device.ip, device.name ????? 在mysql中正常,但是在SqlServer拋出異常,改成這樣就ok了: ??????????? from Device device?order by device.ip, device.name
2006年6月30日
??????? kelefa是某公司的一個程序員,傳說他是一流的程序員,開發(fā)了一個系統(tǒng)非常穩(wěn)定,從來沒有出現(xiàn)過問題,當(dāng)然這世界上沒有完美的人,也沒有完美的軟件,這個系統(tǒng)也有bug,而且他已經(jīng)發(fā)現(xiàn)了,但是一直沒有找到很好的辦法解決,還好這個bug很少有機(jī)會能發(fā)作,關(guān)鍵是一發(fā)生這種情況時嚴(yán)重影響系統(tǒng)的運行,停止服務(wù)后再重新啟動是目前最好的方法。 ??????? 為了保住“高手”的稱號,他又搞了一個監(jiān)控該系統(tǒng)的小程序,能及時發(fā)現(xiàn)系統(tǒng)是否工作正常,如果發(fā)現(xiàn)異常情況立刻發(fā)送email給自己,email又跟自己的手機(jī)短信綁定,使他能迅速的發(fā)現(xiàn)情況并跑到電腦前: //telnet進(jìn)來后
[root@kelefa?root]$?su?-
[root@kelefa?root]$?password?
[root@kelefa?root]#?cd?/usr/local/resin-3.0.14/bin
[root@kelefa?bin]#?./httpd.sh??stop
[root@kelefa?bin]#?./httpd.sh??start一切又正常了,1分鐘內(nèi)搞定,一流程序員再次得到驗證,可是email有時會發(fā)送失敗,sp的短信也不是絕對的正常,而且每個月還給n元大洋給sp,萬一收到告警短信旁邊沒有電腦也無能為力。 ??????? 終于發(fā)現(xiàn)更好的方法:在監(jiān)控程序里直接telnet到設(shè)備上進(jìn)行操作,動手前當(dāng)然要看看有什么開源的可以利用,它就是Jakarta的Commons Net,這個包支持ftp,telnet,pop3,smtp,nntp等協(xié)議。 ??????? 首先實現(xiàn)一個telnet的基類,它有個connectAndDocommad()的方法,實現(xiàn)鏈接到指定的設(shè)備上,并啟動一個線程執(zhí)行一個模板方法(某設(shè)計模式):  ?? // 登陸 ???log.debug( "login................" ); ???if ( false == login() ) ???{ ????String msg = new Date().toString() + " telnet登陸不成功,ip:" + remoteip; ????log.warn( msg ); ????SyslogUtil.send( msg ); ????return; ???}
???log.debug( "doCommand................" ); ???//?抽象方法 ???doCommand(); ???// 退出 ???log.debug( "exit................" ); ???exit(); ??????? 其次類RestartTask繼承該抽象類,實現(xiàn)doCommand()抽象方法,往輸出流發(fā)送操作命令,實現(xiàn)重啟: @Override protected void doCommand() ?{ ??log.debug( "resin restart................" ); ??try ??{ ???? writeLine("su -");???? ???? writeLine("password");? ???? writeLine("cd /usr/local/resin-3.0.14/bin"); ???? writeLine("./httpd.sh? stop"); ???? writeLine("./httpd.sh? start");
???? readResult(); ??} ??catch ( IOException e ) ??{ ???log.warn( e.getMessage() ); ??} ?}
以上為偽代碼,需要實現(xiàn)一些子方法, 如有雷同,純屬虛構(gòu)!
|