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

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

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

    月掛夜中央

    懶惰程序員

    常用鏈接

    統計

    最新評論

    2009年1月7日 #

    網易微博的OAUTH認證開發(java版)

         摘要:     網易微博最近也開放了它的開發平臺http://open.t.163.com,其中java版的oauth認證和新浪微博的很類似(貌似都是從twitter那邊copy過來的)。但說句實話,網易java版的sdk和新浪微博的比起來,的確上手比較麻煩,里面提供的example都是把access token寫死,作為參數,具體的代碼如下: public&nb...  閱讀全文

    posted @ 2011-02-16 21:31 月掛夜中央 閱讀(6301) | 評論 (6)編輯 收藏

    springside3.*中log4j和java.util.concurrent的結合使用

         摘要:         在springside3.*中的showcase案例中,有一個把log4j的日志存入數據庫的演示,下面是我對這個案例的學習筆記。 1、我們首先來看下log4j相關日志的配置: #Async Database Appender (Store business&n...  閱讀全文

    posted @ 2011-02-13 21:20 月掛夜中央 閱讀(2209) | 評論 (0)編輯 收藏

    使用XmemcachedClient設置緩存對象過期時間的問題

    前幾天在做一個涉及到memcache的項目,使用XmemcachedClient來操作memcache,由于是一個季度的數據,保存數據時這樣的
     memcachedClient.set(key, expiredTime, value)
    其中設置了過期時間為90天
    int cacheExpireTime = 60*60*24*90;
    結果就杯具了,保存后用get方法取時都是null;后來無意中把過期時間改成小于30天,就完全沒有問題,經過谷歌大神的幫忙,終于發現了原因。
    服務端的處理
    時間處理源代碼【memcached.c】如下:
    #define REALTIME_MAXDELTA 
    60*60*24*30                     // 定義30天的秒數
    static rel_time_t realtime(const time_t exptime) {
           
    if (exptime == 0return 0;
           
    if (exptime > REALTIME_MAXDELTA) {                       // 超過30天,是絕對時間
                  if (exptime <= process_started)                         // 小于進程啟動日期
                          return (rel_time_t)1;                                  //
                  return (rel_time_t)(exptime - process_started);   // 返回進程啟動之后的時間差
           }
     else {                                                                   // 不超過30天,是相對時間
                  return (rel_time_t)(exptime + current_time);       // exptime + (tvsec - process_started)
           }

    }
    原來超過30天就自動轉換成絕對時間,和進程啟動時間比較,顯然60*60*24*90小于啟動日期的絕對數,所以對象一存入就過期了,肯定取不到數據。
    具體的問題請圍觀這篇文章:http://blog.sina.com.cn/s/blog_539d361e0100nc9h.html

    posted @ 2011-01-21 16:18 月掛夜中央 閱讀(4910) | 評論 (0)編輯 收藏

    xfire的webservice方法中date類型參數為null出現空指針錯誤的問題

    最近在使用xfire開發webservice,發現一個這樣的問題,如果注冊的webservice 方法中的參數有Date類型時,調用該方法時把Date型參數填入null,就會報空指針錯誤,這是xfire的一個bug,很可惜在xfire官方網站上最新版的xfire版本是1.2.6,在這個版本中問題仍然沒有解決,而解決的方法在codeHaus的jira中其實發現了這個問題,這個問題主要出在org.codehaus.xfire.aegis.type.basic.DateTimeType的writeObject方法,在1.2.6中這個方法的代碼是這樣的:

    public void writeObject(Object object, MessageWriter writer, MessageContext context)
        
    {
            Calendar c 
    = Calendar.getInstance();
            c.setTime((Date) object);
            writer.writeValue(format.format(c));
        }
    修改過后的代碼如下:
    public void writeObject(Object object, MessageWriter writer,
                MessageContext context) 
    {
            
    if (object != null{
                Calendar c 
    = Calendar.getInstance();
                c.setTime((Date) object);
                writer.writeValue(format.format(c));
            }
     else {
                writer.writeXsiNil();
            }

        }
    加了個對null的判斷就好了。很不幸的是xfire現在變成了cxf,指望官方在新的xfire版本中改正這個bug是沒戲了,大家還是自己改改用吧。

    posted @ 2010-02-24 09:12 月掛夜中央 閱讀(3744) | 評論 (2)編輯 收藏

    oracle中in,not in和exists,not exists之間的區別

             一直聽到的都是說盡量用exists不要用in,因為exists只判斷存在而in需要對比值,所以exists比較快,但看了看網上的一些東西才發現根本不是這么回事。
    下面這段是抄的
    Select * from T1 where x in ( select y from T2 )
    執行的過程相當于:
    select *
      from t1, ( select distinct y from t2 ) t2
     where t1.x = t2.y;

    select * from t1 where exists ( select null from t2 where y = x )
    執行的過程相當于:
    for x in ( select * from t1 )
       loop
          if ( exists ( select null from t2 where y = x.x )
          then
             OUTPUT THE RECORD
          end if
    end loop

    從我的角度來說,in的方式比較直觀,exists則有些繞,而且in可以用于各種子查詢,而exists好像只用于關聯子查詢(其他子查詢當然也可以用,可惜沒意義)。
    由于exists是用loop的方式,所以,循環的次數對于exists影響最大,所以,外表要記錄數少,內表就無所謂了,而in用的是hash join,所以內表如果小,整個查詢的范圍都會很小,如果內表很大,外表如果也很大就很慢了,這時候exists才真正的會快過in的方式。
             下面這段還是抄的
    not in 和not exists
    如果查詢語句使用了not in 那么內外表都進行全表掃描,沒有用到索引;
    而not extsts 的子查詢依然能用到表上的索引。
    所以無論那個表大,用not exists都比not in要快。
              也就是說,in和exists需要具體情況具體分析,not in和not exists就不用分析了,盡量用not exists就好了。

    posted @ 2009-01-07 15:03 月掛夜中央 閱讀(6268) | 評論 (2)編輯 收藏

    如何查看sql的執行計劃

    在pl/sql developer中,直接寫條sql,按F5,就可以調出執行計劃,但在只有sql plus的情況下,只能用下面這個語句了,
    explain plan for select ....
    然后再來一句
    select * from table(dbms_xplan.display());
    就會出現一個類似下面的信息
    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------

    ----------------------------------------------------------------------------
    | Id  | Operation                    |  Name       | Rows  | Bytes | Cost  |
    ----------------------------------------------------------------------------
    |   0 | SELECT STATEMENT             |             |       |       |       |
    |   1 |  NESTED LOOPS                |             |       |       |       |
    |   2 |   TABLE ACCESS FULL          | AC01        |       |       |       |
    |   3 |   TABLE ACCESS BY INDEX ROWID| AB01        |       |       |       |
    |   4 |    INDEX UNIQUE SCAN         | PK_AB01     |       |       |       |
    ----------------------------------------------------------------------------


    PLAN_TABLE_OUTPUT
    --------------------------------------------------------------------------------
    Note: rule based optimization, PLAN_TABLE' is old version

    就能看到執行計劃了。

    posted @ 2009-01-07 12:00 月掛夜中央 閱讀(1291) | 評論 (0)編輯 收藏

    主站蜘蛛池模板: 亚洲精品无码激情AV| 亚洲成AV人在线观看网址| 亚洲国产精品VA在线观看麻豆| jizzjizz亚洲日本少妇| 成人免费无码视频在线网站| 久久亚洲精品无码aⅴ大香| a级毛片在线视频免费观看| 亚洲色偷偷偷鲁综合| baoyu777永久免费视频| 亚洲无av在线中文字幕| 四虎影视无码永久免费| 久久久综合亚洲色一区二区三区| 国产性生大片免费观看性| 亚洲人成人网站色www| 国产情侣久久久久aⅴ免费| 亚洲AV无码国产丝袜在线观看 | 亚洲第一区视频在线观看| 曰批全过程免费视频网址| 亚洲最大黄色网址| 无码一区二区三区AV免费| 亚洲中文字幕无码中文| 免费国产一级特黄久久| 国产97视频人人做人人爱免费| 亚洲精品无码不卡在线播HE| 久久青草91免费观看| 亚洲日韩乱码久久久久久| 国产美女在线精品免费观看| 亚洲免费综合色在线视频| 四虎影库久免费视频| 香蕉视频在线免费看| 久久久久久亚洲精品成人| 成人啪精品视频免费网站| 真正全免费视频a毛片| 成人午夜亚洲精品无码网站| 999久久久免费精品播放| 亚洲日本一线产区和二线| 亚洲成a人片在线观看日本麻豆| 最近免费中文字幕MV在线视频3| 亚洲欧洲精品国产区| 国产在线观看免费完整版中文版| 中文字幕成人免费高清在线视频|