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

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

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

    隨筆-46  評論-54  文章-0  trackbacks-0
     

    同事在公司論壇里面發的,其實是我接手的一個項目中存在這個問題。
    在使用Hibernate分頁器時,習慣使用直接把查詢語句、頁數、分頁大小,傳給分頁器,這樣會默認使用last來獲取總記錄數,效率非常的低。
    解決方法,很簡單,就是用SQL來count查詢條件獲得總記錄的Query,再給Hibernate分頁器(本身就寫好了的)。
    這樣就必須多寫幾行代碼,就是因為自己懶,覺著效果都一樣,就簡單的寫了。
    數據量大了以后,就很明顯的速度慢下來了。又全部重頭改過,很是郁悶。
    轉載此文,以示提醒!
    即使懶得研究Hibernate底層,也要注意它的效率問題。

     

     

    我看到一些資料這樣說,oracle的jdbc驅動是不支持服務器端的游標的,當你調用resultSet.last()時,jdbc驅動程序會把整個結果集的數據讀到內存,然后在內存中進行結果集的遍歷。

    如果在做分頁的時候,用這樣的方式獲取結果的總記錄數:
      rs.last();
      int rowcount = rs.getRow();
    在結果集很大的時候,這個性能是相當低下的,并且會用掉很多的內存。

    這個問題是昨天在檢查人才網的代碼時發現的,隨著數據增加,原來被掩蓋的問題才開始暴露出來。我們用jprofiler對程序進行剖析的情況也間接的證明了上面的說法:1) 連續幾次刷新工作列表后,虛擬機的內存被占滿了,運行垃圾回收后內存又被釋放出來。2) 從頁面請求到完成響應,resultSet.last()方法的調用占去了cpu的絕大部分時間。

    因為上面提到的分頁方法是一種常用的方法,我建議大家考慮一下自己的代碼是否存在這樣的問題,這對辦公系統的穩定運行可能是很重要的。


    參考:
    http://www.oracle.com/technology/global/cn/sample_code/tech/java/codesnippet/jdbc/rs/CountResult.html
    提到了:
    如果 ResultSet 非常大,則 resultset.last() 有可能是非常費時的操作,因為它將使用服務器端的更多資源。因此,除非確實需要可滾動結果集,應避免使用這種方法。

    http://forum.springframework.org/showthread.php?t=50044&page=2
    提到了:
    Anyway, if it's a normal behaviour of the oracle driver to keep data in memory when using SCROLLABLE resultset

    http://xiongbo.javaeye.com/blog/38481
    對幾種游標類型做了介紹,并給出了建議

    posted @ 2008-05-28 11:26 rox 閱讀(4187) | 評論 (4)編輯 收藏
         摘要: 1、float.js  1    var delta=0.35;  2    var collection;  3    var closeB=false;  4   &n...  閱讀全文
    posted @ 2008-05-28 11:01 rox 閱讀(702) | 評論 (0)編輯 收藏
         摘要: Illegal class inheritance loop. 使用JAXB 2.0以上版本,使用schema文件綁定Java對象,并配置了外部配置文件binding.xjb后,出現這個錯誤。 現已解決,如下: 1、schema文件po.xsd:  1<?xml version="1.0" encoding="utf-8"?>  2...  閱讀全文
    posted @ 2008-05-02 16:57 rox 閱讀(2593) | 評論 (0)編輯 收藏

    這兩句SQL區別是有沒有括號,但卻是一個可以查出來,一個幾乎查不出來。
    一個簡單的問題,居然還犯低級錯誤,留下來提醒自己。

     

    1select uj.* from union_job uj , union_company uc where (uj.name like '%職員%' or uj.info like '%職員%'and uj.company_id=uc.id and uc.area= '廣東' order by uj.uptime desc

    1select uj.* from union_job uj , union_company uc where uj.name like '%職員%' or uj.info like '%職員%' and uj.company_id=uc.id and uc.area= '廣東' order by uj.uptime desc
    posted @ 2008-04-23 17:33 rox 閱讀(166) | 評論 (0)編輯 收藏

    1、修改啟動文件:
    vi /etc/rc.d/rc.local

    2、編輯并追加tomcat的啟動:
    #!/bin/sh
    echo "start tomcat">/var/log/tomcatmessages
    rm -rf /appserver/gooweb-tomcat-5.5.20/work/
    /appserver/gooweb-tomcat-5.5.20/bin/catalina.sh start

    注意:JAVA_HOME等環境變量還不會被加載的,這里是使用setenv.sh來加載的。

    3、修改計劃任務列表:
    crontab -e

    4、添加重啟任務:
    SHELL=/bin/bash
    PATH=/sbin:/bin:/usr/sbin:/usr/bin
    MAILTO=root
    HOME=/
    # run-parts
    01 0 * * 0 reboot

    定義為每周0點01分重啟系統。

    5、重啟計劃任務的服務:
    service crond restart

    6、查看日志
    tail -100 /var/log/cron


    另外要非常注意這里所有修改的文件都一定要 chmod +x
    不然要吃大虧。呵呵!

    posted @ 2007-12-27 16:42 rox 閱讀(1500) | 評論 (3)編輯 收藏
    浮動廣告代碼很多了,不介紹了。
    但是對于flash或者下拉框,是容易被遮擋的。

    1、flash的解決:
    ??? <!--1.設置FLASH為底層-->
    ??? <div style="z-index:-1">
    ??? <!--2.必須把FLASH設置為透明-->
    ??? <param name="wmode" value="transparent">

    2、下拉框的解決:
    ??? 因為下拉框的index是最高的,怎么調整都沒有用。
    ??? 所以,浮動層里面要增加一個iframe,里面再src近來一個新頁面,這個頁面就是廣告頁面。
    ???
    ?1?<!--?浮云?-->
    ?2?<div?id="fuyun"?style="Z-INDEX:?99999999999;?LEFT:?4px;?WIDTH:?100px;?POSITION:?absolute;?TOP:?372px;?HEIGHT:?100px">?
    ?3?<p?align="center">
    ?4?<iframe?height="80"?width="80"?frameborder="0"?scrolling="no"?hspace="0"?vspace="0"?style="padding:0;?margin:0"?src="ad_kfc/fy_kfc.html">
    ?5?</iframe>
    ?6?</p>
    ?7?</div>
    ?8?<script?language="JavaScript"?src="js/fy.js"></script>
    ?9?<SCRIPT?LANGUAGE="JavaScript">
    10?<!--
    11?????start();
    12?//-->
    13?</SCRIPT>

    其中這個src頁面代碼如下:
    1?<html>
    2?<head>
    3?<title>?fy?kfc?</title>
    4?</head>
    5?<body?style="padding:0;?margin:0">
    6?<a?href="/public/enterprise.do?id=29838"?target="_blank"><img?src="kfc.gif"?width="80"?height="80"?border=0></a>
    7?</body>
    8?</html>
    9?

    還是把浮動窗口的js代碼貼上來,原來網上找的代碼,參數名字過于簡單,怕多個js一起調用時會重名。自己改了一下的

    ?1?var?fuyun?=?document.getElementById("fuyun");
    ?2?var?fy_xPos?=?20;
    ?3?var?fy_yPos?=?document.body.clientHeight;
    ?4?var?fy_step?=?1;
    ?5?var?fy_delay?=?30;?
    ?6?var?fy_height?=?0;
    ?7?var?fy_Hoffset?=?0;
    ?8?var?fy_Woffset?=?0;
    ?9?var?fy_yon?=?0;
    10?var?fy_xon?=?0;
    11?var?fy_pause?=?true;
    12?var?interval;
    13?fuyun.style.top?=?fy_yPos;
    14?function?changePos()?{
    15?fy_width?=?document.body.clientWidth;
    16?fy_height?=?document.body.clientHeight;
    17?fy_Hoffset?=?fuyun.offsetHeight;
    18?fy_Woffset?=?fuyun.offsetWidth;
    19?fuyun.style.left?=?fy_xPos?+?document.body.scrollLeft;
    20?fuyun.style.top?=?fy_yPos?+?document.body.scrollTop;
    21?if?(fy_yon)?{
    22?fy_yPos?=?fy_yPos?+?fy_step;
    23?}
    24?else?{
    25?fy_yPos?=?fy_yPos?-?fy_step;
    26?}
    27?if?(fy_yPos?<?0)?{
    28?fy_yon?=?1;
    29?fy_yPos?=?0;
    30?}
    31?if?(fy_yPos?>=?(fy_height?-?fy_Hoffset))?{
    32?fy_yon?=?0;
    33?fy_yPos?=?(fy_height?-?fy_Hoffset);
    34?}
    35?if?(fy_xon)?{
    36?fy_xPos?=?fy_xPos?+?fy_step;
    37?}
    38?else?{
    39?fy_xPos?=?fy_xPos?-?fy_step;
    40?}
    41?if?(fy_xPos?<?0)?{
    42?fy_xon?=?1;
    43?fy_xPos?=?0;
    44?}
    45?if?(fy_xPos?>=?(fy_width?-?fy_Woffset))?{
    46?fy_xon?=?0;
    47?fy_xPos?=?(fy_width?-?fy_Woffset);
    48?}
    49?}
    50?function?start()?{
    51?fuyun.visibility?=?"visible";
    52?interval?=?setInterval('changePos()',?fy_delay);
    53?
    54?}
    55?function?fy_pause_resume()?{
    56?if(fy_pause)?{
    57?clearInterval(interval);
    58?fy_pause?=?false;
    59?}
    60?else?{
    61?interval?=?setInterval('changePos()',fy_delay);
    62?fy_pause?=?true;
    63?}
    64?}


    不提倡使用浮動廣告,現在多半都是懸浮廣告了。只是客戶指定要,而且還要不被遮擋,在多人的幫助下,終于解決了這個問題。

    大家可以到 http://www.jobhn.cn 網站上看看實際的效果。
    posted @ 2007-02-14 09:55 rox 閱讀(556) | 評論 (2)編輯 收藏
    mysql數據庫,庫名以目錄名存在,表名以文件名(后綴為.frm.MYD.MYI)存在。

    如test庫下user表,在windows中%mysql_home%\data\test\user.frm,windows文件名大小寫不敏感,
    無論是 select * from test.user 還是 select * from test.USER,都是沒有問題的。

    而在linux中/var/lib/mysql/test/user.frm,
    如果是 select * from test.user 就必須存在 user.frm
    如果是 select * from test.USER 就必須存在 USER.frm
    這是兩個不同的文件,也是兩個不同的表名。
    同樣庫名是以目錄存在,也存在區分大小寫的問題。

    相關的官方文檔:

    http://dev.mysql.com/doc/refman/5.1/en/identifier-case-sensitivity.html


    http://dev.mysql.com/doc/refman/5.1/zh/language-structure.html#name-case-sensitivity
    posted @ 2007-01-29 09:40 rox 閱讀(1674) | 評論 (2)編輯 收藏

    這里可以實現類對象數組。方便自己存儲和封裝數據用。

     1 function MyClass() {
     2   this.myData = 5
     3   this.myString = "Hello World";
     4 }
     5 
     6 var myClassObj1 = new MyClass();
     7 var myClassObj2 = new MyClass();
     8 myClassObj1.myData = 10;
     9 myClassObj1.myString = "Obj1:  Hello World";
    10 myClassObj2.myData = 20;
    11 myClassObj2.myString = "Obj2:  Hello World"
    12 
    13 var array = Array();
    14 array[0= myClassObj1;
    15 array[1= myClassObj2;
    16 
    17 for (i = 0; i < array.length; i++) {
    18     alert(array[i].myData);
    19     alert(array[i].myString);
    20 }
    posted @ 2006-11-29 11:57 rox 閱讀(997) | 評論 (0)編輯 收藏
    1 < c:import  url ="/site/All.html"  var ="url"   />
    2 < c:if  test ="${ not empty url }" >
    3      < x:parse  var ="doc"  xml ="${url}"   />
    4      < x:forEach  select ="$doc/sites/site"  var ="s" >
    5          < x:if  select ="$s/@id = '0'" >
    6              < x:out  select ="$s/@id" />
    7          </ x:if >
    8      </ x:forEach >
    9 </ c:if >

     相同結果代碼: 

    1<c:import url ="/site/All.html"  var ="url"/> 
    2<c:if test ="${ not empty url }">
    3    <x:parse var="doc" xml="${url}"/> 
    4    <x:forEach select="$doc/sites" var="s">
    5        <x:out select="$s/site[@id='0']"/>
    6        <x:out select="./site[@id='0']"/>
    7    </x:forEach> 
    8</c:if > 

     



    參考URL:

    http://java.sun.com/developer/technicalArticles/javaserverpages/faster/

    http://www.mokabyte.it/2002/12/jstl-3.htm

    http://www.w3school.com.cn/xpath/

    posted @ 2006-11-07 10:27 rox 閱讀(696) | 評論 (0)編輯 收藏
    MySql只支持Union(并集)集合運算,好像也是4.0以后才有的;
    但是對于交集Intersect、差集Except,就沒有實現了。
    一般的解決方案用in和not in來解決,小量數據還可以,但數據量大了效率就很低了。
    其實,可以使用Union來實現另外兩種的運算,當然是沒有辦法的辦法。

    差集Except:
    SELECT ID FROM (
    SELECT DISTINCT A.AID AS ID FROM TABLE_A A
    UNION ALL
    SELECT DISTINCT B.BID AS ID FROM TABLE_B B
    )TEMP GROUP BY ID HAVING COUNT(ID) = 1

    交集Intersect:
    SELECT ID FROM (
    SELECT DISTINCT A.AID AS ID FROM TABLE_A A
    UNION ALL
    SELECT DISTINCT B.BID AS ID FROM TABLE_B B
    )TEMP GROUP BY ID HAVING COUNT(ID) = 2

    不過,上述方法的功能也有限,
    只能用來檢查某個id是不是A、B表中都存在,
    或者只存在于A、B表其中之一,
    并不能對id在某表中多次出現做出檢查。
    而且,差集是有先后之分,這里沒有。

    posted @ 2006-09-01 09:29 rox 閱讀(2647) | 評論 (0)編輯 收藏
    僅列出標題
    共5頁: 上一頁 1 2 3 4 5 下一頁 
    主站蜘蛛池模板: www亚洲一级视频com| 国产V亚洲V天堂A无码| 免费一级毛片清高播放| 在线观看国产区亚洲一区成人| 欧美色欧美亚洲另类二区| 四虎影视免费在线| 亚洲成Av人片乱码色午夜| 成人精品视频99在线观看免费| 亚洲美女高清一区二区三区| 国产高清对白在线观看免费91| 伊伊人成亚洲综合人网7777| 中文字幕在线视频免费观看| 亚洲国产精品一区第二页| 无码日韩精品一区二区免费暖暖 | caoporm超免费公开视频| 四虎影永久在线高清免费| 亚洲精品电影天堂网| 九九99热免费最新版| 亚洲精品中文字幕无码蜜桃| 亚洲午夜免费视频| 亚洲久悠悠色悠在线播放| 国产公开免费人成视频| 国产大片免费天天看| 亚洲一区二区三区夜色| 无码日韩人妻av一区免费| 国产成人 亚洲欧洲| 免费人成视频在线| 在线观看亚洲免费| 久久亚洲高清观看| 18勿入网站免费永久| 色一情一乱一伦一视频免费看| 不卡精品国产_亚洲人成在线 | 91青青青国产在观免费影视| www.亚洲日本| 亚洲国产天堂久久久久久| 久久午夜免费鲁丝片| 亚洲码和欧洲码一码二码三码| 国产a v无码专区亚洲av| 亚洲视频在线免费看| 亚洲邪恶天堂影院在线观看| 妞干网免费视频在线观看|