<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆-46  評論-64  文章-2  trackbacks-0
      2008年7月2日
         摘要: 廢話不多說,先看看我們最終達到的效果.? 源碼下載在文章最后。Style1:Style2:上面的tag cloud實現(xiàn)思想如下:1. Server端提供Tag的相關信息,包括TagName,Posts等,使用JSON格式傳輸數(shù)據(jù)??? 這個例子中,我使用Servlet,使用json-lib將Bean轉成JSON字符串。當然Tag的相關信息這里只是演示,真實環(huán)境中可能就需要從數(shù)據(jù)庫取出來再處理了。?...  閱讀全文
    posted @ 2008-09-28 16:10 jht 閱讀(3161) | 評論 (3)編輯 收藏
    1. response.setHeader("Cache-Control","no-cache");

    This is used to prevent the browser from caching your dynamic content generated by a JSP or Servlet.

    You set this attribute in the HTTP header of the response object which would tell the browser not to cache this content. So everytime you request the page again, the browser would make a new request, instead of showing you a cached page.

    2.使用服務器端控制AJAX頁面緩存:
    ??? response.setHeader( "Pragma", "no-cache" );
    ??? response.addHeader( "Cache-Control", "must-revalidate" );
    ??? response.addHeader( "Cache-Control", "no-cache" );
    ??? response.addHeader( "Cache-Control", "no-store" );
    ??? response.setDateHeader("Expires", 0);
    單純的使用 xmlhttp.setRequestHeader("Cache-Control","no-cache")無效。

    3.Cache-Control頭域
      Cache-Control指定請求和響應遵循的緩存機制。在請求消息或響應消息中設置Cache-Control并不會修改另一個消息處理過程中的緩存處理過程。請求時的緩存指令包括no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,響應消息中的指令包括public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各個消息中的指令含義如下:
      Public指示響應可被任何緩存區(qū)緩存。
      Private指示對于單個用戶的整個或部分響應消息,不能被共享緩存處理。這允許服務器僅僅描述當用戶的部分響應消息,此響應消息對于其他用戶的請求無效。
      no-cache指示請求或響應消息不能緩存
      no-store用于防止重要的信息被無意的發(fā)布。在請求消息中發(fā)送將使得請求和響應消息都不使用緩存。
      max-age指示客戶機可以接收生存期不大于指定時間(以秒為單位)的響應。
      min-fresh指示客戶機可以接收響應時間小于當前時間加上指定時間的響應。
      max-stale指示客戶機可以接收超出超時期間的響應消息。如果指定max-stale消息的值,那么客戶機可以接收超出超時期指定值之內(nèi)的響應消息。

    Read more:
    ???http://www.jiehoo.com/browser-cache-problem.htm?(作者: Cherami?原載: 瀏覽器緩存)
    ???再論怎么有效利用瀏覽器緩存之怎么避免瀏覽器緩存靜態(tài)文件
    ???HTTP協(xié)議header頭域- PetitPrince - 博客園
    posted @ 2008-09-27 10:23 jht 閱讀(16592) | 評論 (3)編輯 收藏
    < link?id = " css " ?rel = StyleSheet?type = " text/css " ?href = " ./button.css " ? />

    < script?type = " text/javascript " >
    ?
    var ?cssArray? = ? new ?Array( " button.css " , " button1.css " , " button2.css " , " button3.css " , " button4.css " , " button5.css " , " button6.css " );
    ?
    var ?index? = ? 0 ;
    ?
    function ?changeCssFile()
    ?
    {
    ??
    var ?css? = ?document.getElementById( " css " );
    ??index
    ++ ;
    ??
    if (index < cssArray.length)
    ??
    {
    ???css.href?
    = ?cssArray[index];
    ??}

    ??
    else
    ??
    {
    ???index?
    = 0 ;
    ???css.href?
    = ?cssArray[index];
    ??}

    ?}

    </ script >

    ? < a? class ="button" ?href ="#" ?onclick ="changeCssFile()" >
    ??
    < span? id ="buttonText" > Change?another?style </ span >
    ?
    </ a >
    posted @ 2008-09-25 12:26 jht 閱讀(767) | 評論 (0)編輯 收藏
    A:瀏覽器問題,可能會把透明區(qū)域顯示成有灰度的區(qū)域,解決辦法,轉成gif格式吧,支持比較好

    see: GIF or PNG? - Quality Web Tips
    posted @ 2008-09-24 23:02 jht 閱讀(1191) | 評論 (1)編輯 收藏
    比如說下面的這個header.jsp中有中文,那么包含這個文件的網(wǎng)頁可能就會出現(xiàn)亂碼
    <jsp:include page="header.jsp"></jsp:include>

    解決辦法是在header.jsp里加上下面這段話:
    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
    posted @ 2008-09-23 12:46 jht 閱讀(463) | 評論 (0)編輯 收藏
         摘要: log4j 支持運行時修改日志的相關配置,看了一下他的source code, 用FileWatchdog這個類來做的,代碼也很簡單,通過循環(huán)在一定時間間隔讀取配置文件,如果文件變更,調(diào)用一個doOnChange()方法。如果自己要做一個支持運行時修改配置的系統(tǒng)可參考上面的做法。下面是一段支持運行時修改配置的系統(tǒng)Prototype代碼,和log4j的做法稍有不同,使用Observer模式,使其更加...  閱讀全文
    posted @ 2008-09-04 14:49 jht 閱讀(1321) | 評論 (0)編輯 收藏

    可以用下面這個方法來做到

    import ?org.apache.log4j.Logger;
    import ?org.apache.log4j.PropertyConfigurator;

    public ? class ?DemoRunTimeChangeLog4J? {

    ?
    private ? static ? final ?Logger?logger? = ?Logger.getLogger(DemoRunTimeChangeLog4J. class );

    ?
    public ? static ? void ?main(String[]?args)? {
    ??PropertyConfigurator.configureAndWatch(
    " src/log4j.configureAndWatch " , 60000 );
    ??
    ??
    while ?( true )? {
    ???
    if ?(logger.isDebugEnabled())? {
    ????logger.debug(
    " DEBUG?MESSAGE " );
    ???}


    ???logger.info(
    " Info?Message " );

    ???
    try ? {
    ????Thread.sleep(
    5000 );
    ???}
    ? catch ?(InterruptedException?e)? {
    ???}

    ??}

    ?}

    }


    posted @ 2008-09-03 17:35 jht 閱讀(635) | 評論 (0)編輯 收藏
    自定義TagLib的時候碰到這個錯誤,原因是編輯tld文件的時候沒有使用DTD或者Schema文件驗證,拼寫錯誤導致最終報這個錯誤消息

    如果遇到同樣問題的同學,不妨檢查一下自己的tld文件對不對。

    BTW: tld類的異常需要處理好
    posted @ 2008-08-19 15:53 jht 閱讀(7767) | 評論 (1)編輯 收藏
    這個問題可能由兩個地方導致

    1. 你的POJO類不是一個JavaBean,最可能的原因是沒有一個無參構造函數(shù)
    2. 在dwr.xml里這個類的<convert>指定的不對,或者是沒有指定
    posted @ 2008-08-11 11:21 jht 閱讀(4204) | 評論 (4)編輯 收藏
    數(shù)獨游戲小程序

    數(shù)獨的游戲規(guī)則很簡單:在九個九宮格里,填入1到9的數(shù)字,讓每個數(shù)字在每個行、列及九宮格里都 只出現(xiàn)一次就可以過關了!?雖然游戲的規(guī)則十分簡單,但很多人在沒有計算機輔助時,常常會不小心造成違規(guī)狀況。

    下面是我做的一個數(shù)獨小程序 1.0 版本,目前功能如下:

    選擇外觀;
    數(shù)獨自動出題;
    數(shù)獨自動解題;
    游戲計時功能;
    開啟解答輔助功能,出錯提示;
    開啟解答輔助功能,輔助線;

    程序基于Java Swing,運行需要JRE1.6以上版本。
    ?
    可雙擊執(zhí)行的JAR包,點此下載。(Napkin的LookAndFeel蠻好玩,我就一起弄在里面了)
    程序的源碼,點此下載。(有興趣修改源碼的朋友可以DIY出自己喜歡的版本。)

    或者也可以從 http://groups.google.com/group/afun?這個group的files里面找到上面的兩個文件。

    對數(shù)獨有興趣的朋友可以玩一下這個小工具,歡迎留下寶貴意見,讓這個小程序更完善。 可能我會另開一篇日志說一下Source Code相關的東西。
    ?
    Figure: 填值的出錯提示
    Figure: 填值的出錯提示2
    演示如何使用輔助線功能:
    首先選中Enable help system選項, 然后選擇按鈕 1 ,這時候關于 1 的輔助線開啟,把不能填1的單元格都畫了線,畫線規(guī)則是,1所在的行畫桃紅色橫線,1所在的列畫橙色豎線,1所在的九宮格畫粉色X線,如下圖,這時候我們發(fā)現(xiàn),在第五行只有第二列這一單元格格沒有被畫上線,那么這一個肯定只能填上1。
    這時候我們就可以把1填入到 第五行第二列,這時輔助線會自動更新。如下圖,此時沒有可以確定填入1的單元格了,我們可以換一個數(shù)看輔助線。
    ?OK,我們選擇3,這時候輔助線如下,我們發(fā)現(xiàn)第五行第四格可以確定填入3這個值。
    填入3之后的圖如下:
    解答成功之后,會彈出恭喜解答成功的對話框。
    自動解答功能可能出現(xiàn)的異常情況
    當題目比較復雜的時候,可能會彈出如下的提示異常的對話框,這是因為解答數(shù)獨用了遞歸的解法,難度大時遞歸深度很深,導致棧溢出,可以通過運行JVM時指定線程棧大小的方法來解決這個問題。
    posted @ 2008-08-02 17:32 jht 閱讀(2715) | 評論 (4)編輯 收藏
    new & valueof & 直接賦值的區(qū)別
    首先來看下面這段代碼
    public static void main(String[] args) {
    ??String s1 = "s1";
    ??String s2 = new String("s2");
    ??String s3 = String.valueOf(12345);
    }
    ?
    編譯成class文件之后,使用eclipse class file viewer查看
    ?
    ? // Method descriptor #15 ([Ljava/lang/String;)V
    ? // Stack: 3, Locals: 4
    ? public static void main(java.lang.String[] args);
    ???? 0? ldc <String "s1"> [16]
    ???? 2? astore_1 [s1]

    ???? 3? new java.lang.String [18]
    ???? 6? dup
    ???? 7? ldc <String "s2"> [20]
    ???? 9? invokespecial java.lang.String(java.lang.String) [22]
    ??? 12? astore_2 [s2]
    ??? 13? sipush 12345
    ??? 16? invokestatic java.lang.String.valueOf(int) : java.lang.String [25]
    ??? 19? astore_3 [s3]

    ??? 20? return
    ????? Line numbers:
    ??????? [pc: 0, line: 12]
    ??????? [pc: 3, line: 13]
    ??????? [pc: 13, line: 14]
    ??????? [pc: 20, line: 20]
    ????? Local variable table:
    ??????? [pc: 0, pc: 21] local: args index: 0 type: java.lang.String[]
    ??????? [pc: 3, pc: 21] local: s1 index: 1 type: java.lang.String
    ??????? [pc: 13, pc: 21] local: s2 index: 2 type: java.lang.String
    ??????? [pc: 20, pc: 21] local: s3 index: 3 type: java.lang.String
    }
    ?
    對于第一行代碼 String s1 = "s1"; 編譯成字節(jié)碼之后,對應兩條指令,
    1. ldc指令從運行時常量池push一個值到Frame的操作數(shù)棧上面,這個值在這里就是"s1"字符串的引用,
    2. astore指令將objectref存儲到局部變量,這里也就是存儲到局部變量s1。
    ?
    對于第二行代碼???String s2 = new String("s2");編譯成字節(jié)碼之后,對于的指令也用高亮標注出來了,這里把操作數(shù)棧的情況畫了出來,希望能幫助理解。橙色標注的為棧頂元素。
    1. new指令會在堆上創(chuàng)建對象,操作數(shù)棧里壓入創(chuàng)建的objectref,
      ?
      objectref
      ...
    2. dup指令復制操作數(shù)棧頂?shù)脑兀?
      objectref
      objectref
      ...
    3. ldc指令依然是從常量池push一個值到Frame的操作數(shù)棧上,這個值是"s2"字符串的引用。?
      "s2"_ref
      objectref
      objectref
      ...
    4. invokespecial 指令調(diào)用一個方法,這里就是調(diào)用String的構造函數(shù),調(diào)用完成之后棧上還有一個objectref?
      objectref
      ...
    5. astore指令將objectref存儲到局部變量,這里也就是存儲到局部變量s2。?
      ????????????
      ...
    ?
    對于第三行代碼??String s3 = String.valueOf(12345); 編譯成字節(jié)碼之后對應的指令,
    1. sipush 將 12345 壓棧
    2. invokestatic 調(diào)用 String.valueof(int) 方法
    3. astore 將棧頂?shù)膶ο笠么鎯Φ奖镜刈兞縮3 (這里不再深究這個棧頂元素是怎么來的了)
    ?
    PMD檢查代碼的時候,有這樣的warning: Avoid instantiating?String objects.Call String.valueOf() instead. PMD給出的原因是In JDK 1.5, calling new String() causes memory allocation. String.valueOf() is more memory friendly.
    ?
    經(jīng)過上面的分解,我們應該知道原因了,以后寫代碼的時候,初始化一個字符串,??String s1 = "s1"; 這樣的代碼肯定比??String s2 = new String("s2");代碼強,將其他類型的值轉換成String的時候,valueof方法比new方法效率也高。

    ?
    備注:
    A frame is used to store data and partial results(局部變量,操作數(shù)棧), as well as to perform dynamic linking , return values for methods, and dispatch exceptions.
    ?
    ldc指令的操作數(shù)棧: ...->...,value (value是int,float 或者 string 類型的引用)
    astore的操作數(shù)棧: ...,objectref->...
    new指令的操作數(shù)棧: ...->...,objectref
    dup指令的操作數(shù)棧: ...,value->...,value,value
    invokespecial的操作數(shù)棧: ...,objectref, [agr1,[arg2...]]->...
    invloestatic的操作數(shù)棧:..., [arg1, [arg2...]]?-> ...

    ?
    如果要理解的更透徹建議閱讀以下參考資料:
    posted @ 2008-07-28 14:27 jht 閱讀(1704) | 評論 (1)編輯 收藏

    java.awt.Component.requestFocusInWindow

    posted @ 2008-07-22 14:34 jht 閱讀(386) | 評論 (1)編輯 收藏
    http://m.tkk7.com/Files/jht/MyScreenSnap_2.0.zip

    截圖程序,設計目標:簡單易用

    支持全屏截圖和選擇截圖,運行需要JRE1.5以上版本

    在1.0版http://m.tkk7.com/Files/jht/MyScreenSnap.zip的基礎上,

    ?? * 修改了一下主界面,增加圖片保存為BMP,GIF,JPG,PNG格式的功能

    ?? * 參考了千里冰封的代碼,加上了調(diào)整選擇區(qū)域的功能

    Source Code已經(jīng)包含在壓縮包里面了,有興趣的可以down下來改改。

    下面是1.0版本和2.0版本的兩個界面。

    1.0vs2.0.png
    posted @ 2008-07-02 09:17 jht 閱讀(331) | 評論 (1)編輯 收藏
    主站蜘蛛池模板: 国产成人自产拍免费视频| 99re热精品视频国产免费| 国产亚洲3p无码一区二区| 99re在线这里只有精品免费| 亚洲精品女同中文字幕| 亚洲男人的天堂在线va拉文| 67194成手机免费观看| 日本亚洲欧美色视频在线播放| 中文字幕亚洲乱码熟女一区二区 | 99热免费在线观看| 亚洲精品美女久久久久久久| 久久久久亚洲精品中文字幕 | 成人AV免费网址在线观看| 一区二区三区免费看| 亚洲高清资源在线观看| 亚洲A∨午夜成人片精品网站| 8x网站免费入口在线观看| 看一级毛片免费观看视频| 亚洲黄色在线网站| 亚洲熟伦熟女新五十路熟妇| 亚洲黄色免费网站| 精品熟女少妇aⅴ免费久久| 亚洲看片无码在线视频| 亚洲国产精品va在线播放| 午夜无遮挡羞羞漫画免费| 一区二区三区四区免费视频 | 一个人看的www免费视频在线观看 一个人免费视频观看在线www | 成人自慰女黄网站免费大全 | 成人妇女免费播放久久久| 在线精品亚洲一区二区| 亚洲高清在线观看| 免费一级毛片免费播放| 国产卡二卡三卡四卡免费网址| 国产午夜无码精品免费看| 视频一区在线免费观看| 亚洲永久在线观看| 亚洲黄色在线网站| 亚洲成年轻人电影网站www| 久久精品国产亚洲5555| 国产成人免费a在线视频app| 成人女人A级毛片免费软件|