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

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

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

    posts - 495,  comments - 11,  trackbacks - 0
     

    JSP分頁共設計了三個類:SplitPageVo 、PageVo、SqlVo

    以上三個類請參考本博客的

    JSP分頁類一:SplitPageVo?????? JSP分頁類二:SqlVo????????? JSP分頁類三:PageVo

    三篇文章

    核心為一條SQL語句:

    SELECT * FROM??????????????

    ???????????? (SELECT TOP 每頁顯示條數 * FROM

    ???????????????????? (SELECT TOP 每頁顯示數量x當前頁 * FROM 表名)????表變量1

    ???????????????????????????? ORDER BY 排序字段 DESC)?? 表變量2

    ???????????????????????????????????????? ORDER BY?? 排序字段

    如:

    SELECT * FROM

    ????????????? (SELECT TOP 10 * FROM

    ?????????????????????????? (SELECT TOP 3x10 * FROM shop) x

    ???????????????????????????????????? ORDER BY id DESC) y

    ????????????????????????????????????????????? ???? ORDER BY id

    使用簡要說明:

    //********************************************使~~~~用~~~~說~~~~明*****************************************
    /**
    ...............................................................
    在SERVELET里:
    第一步:獲取當前頁碼
    if(request.getParameter("page")!=null){
    ??? page=Integer.parseInt(request.getParameter("page"));
    ??? }else{
    ??? page=1 ;
    ?? }
    第二步:創建跳轉對象
    ??? SplitPageVo vo=new SplitPageVo()
    第三步:設置SQL語句SqlVo,URL,當前頁面page
    ??? vo.setPageVo(page,10);
    ??? vo.setSqlVo("shop", "1=1", "id", "asc")
    ??? vo.setUrl("/servlet/Shop.do?action=0")
    第四步:傳入BIZ
    ??? TransOrderBiz biz=new TransOrderBiz()
    ??? vo=biz.getAllOrders(vo)
    第五步:頁面轉向
    request.setAttribute("OrderList",vo);
    url="/tpl/tplproject/OrderList.jsp";
    request.getRequestDispatcher(url).forward(request,response);
    ..................................................................
    在BIZ里:
    public class TransOrderBiz {
    public SplitPageVo getAllOrders(SplitPageVo vo){
    DBConnection dbc = new DBConnection();
    if(dbc.getConnect()){
    ?? Connection conn = dbc.getConn();
    ?? try{
    ?? BU_TRANS_ORDERDAO dao=new BU_TRANS_ORDERDAO();
    ?? vo=dao.findByAll(conn);
    ?? }catch(Exception e){
    ??? e.printStackTrace();
    ?? }finally{
    ??? try{
    ???? conn.close();
    ??? }catch(Exception ex){
    ???? ex.printStackTrace();
    ??? }
    ?? }
    }else{
    ?? System.out.println("數據庫連接失敗!");
    }
    return vo;
    }
    }

    ..................................................................
    在DAO里:
    public SplitPageVo findByAll(Connection conn ,SplitPageVo vo){
    ??? Vector v=new Vector();
    ??? StringBuffer sqlStr = null;
    ??? PreparedStatement ps=null;
    ??? Connection _conn=null;
    ??? ResultSet rs=null;
    ??? try{
    ???? _conn=conn;
    ???? $$$$$$$$$$$$$$$$$$$$$$$$$~~核~~心~~部~~分~~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    ????? vo.getCount(_conn)//獲取條數
    ???? vo.setPageVo(vo.getPageVo().getNowPage(),vo.getPageVo().getCount(),vo.getPageVo().getPreList())//設置PageVo
    ???? int top1 = vo.getTop1();
    ???? int top2 = vo.getTop2();
    ???? String strSql=vo.getSqlVo().toAllSql(top1,top2)//取出SQL語句
    ???? $$$$$$$$$$$$$$$$$$$$$$$$$$~~核~~心~~部~~分~~$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
    ???? ps=_conn.prepareStatement(strSql);
    ???? rs=ps.executeQuery();
    ???? while(rs.next()){
    ????? BU_TRANS_ORDERVO vo=new BU_TRANS_ORDERVO();
    ????? vo.setTO_ID(rs.getLong("TO_ID"));
    ?????????????????? 。。。。。。。。。。。。。。。。。
    ?????????????????? 。。。。。。。。。。。。。。。。。
    ?????????????????? 。。。。。。。。。。。。。。。。。
    ????? vo.setTO_PRICE(rs.getDouble("TO_PRICE"));
    ????? v.addElement(vo);
    ???? }
    ???? vo.setData(v)//放入數據
    ??? }
    ??? catch(Exception e){
    ???? e.printStackTrace();
    ??? }
    ??? finally{
    ???? try{
    ????? if (ps!=null){
    ?????? ps.close();
    ?????? ps=null;
    ????? }
    ?????
    ???? }catch(Exception e){
    ????? e.printStackTrace();
    ???? }
    ??? }
    ??? return vo;//返回
    ?? }

    ?? ................................................................................
    ?? 在JSP里:
    ?? SplitPageVo splitPageVo;
    ?? splitPageVo=(SplitPageVo)request.getAttribute("OrderList");
    ?? List l=splitPageVo.getData();
    ?? if(l!=null && l.size()>0 ){
    ?? for(int i=0;i<l.size() && i<l.size() ;i++){
    ?? ComplOrderVo vo=(ComplOrderVo)l.get(i);
    ??????????? 。。。。。。。。。。。。。。。。。。。
    ??????????? 。。。。。。。。。。。。。。。。。。。
    ??????????? 。。。。。。。。。。。。。。。。。。。
    ?? }
    ??????????? 。。。。。。。。。。。。。。。。。。。
    ??????????? 。。。。。。。。。。。。。。。。。。。
    ??????????? 。。。。。。。。。。。。。。。。。。。
    ??? <td >
    <%=splitPageVo.splitPage(splitPageVo)%> //分頁部分
    </td>
    ???????? 。。。。。。。。。。。。。。。。。。。
    ??????????? 。。。。。。。。。。。。。。。。。。。
    ??????????? 。。。。。。。。。。。。。。。。。。。
    ?? ................................................................................
    */

    posted @ 2008-06-18 15:48 jadmin 閱讀(59) | 評論 (0)編輯 收藏
    很多時候我們需要提供這樣的功能給訪問者:當訪問者點擊頁面中的縮略圖時,其對應的全尺寸圖片將顯示在一個新的彈出窗口中供訪問者查看。

    實現此功能的最簡單作法是用以下HTML代碼創建一個圖像鏈接:
    <a href="fullsize.jpg" target="_blank"><img src="small.jpg"></a>
    其中<a>標記的href屬性指定全尺寸圖片的URL,target屬性設置為_blank指定在新窗口中顯示該圖片;<img>標記的src屬性指定縮略圖的URL。

    如果我們想對顯示全尺寸圖片的窗口的外觀進行某些控制(比如希望彈出窗口的高度、寬度能與全尺寸圖片的大小匹配時),則可調用 window.open 方法,該方法接收三個參數,分別指定要打開文件的URL,窗口名及窗口特性,在窗口特性參數中可指定窗口的高度、寬度,是否顯示菜單欄、工具欄等。以下代碼將顯示全尺寸圖片在一個沒有工具欄、地址欄、狀態欄、菜單欄,寬、高分別為400、350的窗口中:
    <a href="fullsize.jpg"
    onClick="window.open(this.href,'', 'height=350,width=400,toolbar=no,location=no,
    status=no,menubar=no');return false"><img src="small.jpg"></a>

    這里就提出了個問題,如果所有全尺寸圖片都具有統一的大小(比如都是400x350),那么以上代碼適用于所有的縮略圖片鏈接(只是href屬性指向的全尺寸圖片文件不同)。但如果全尺寸圖片的大小并不統一,還用以上代碼則我們需要先取得每幅全尺寸圖片的大小,然后在window.open方法的窗口特性參數中一一設置height和width為正確的值,在圖片數量較多的情況下,這顯然效率太低了。那么是否有一勞永逸的方法,即讓彈出窗口能自動適應要顯示圖片的大小?通過研究,發現可以使用 DHTML 中的 Image 對象來達到我們的目的,Image 對象可動態裝載指定的圖片,通過讀取其 width 和 height 屬性即能獲得裝入圖片的大小,以此來設置彈出窗口的大小,即可實現自適應圖片大小的彈出窗口了。下面即是實現代碼:

    <script language="JavaScript" type="text/JavaScript">
    <!--
    var imgObj;
    function checkImg(theURL,winName){
    ??
    // 對象是否已創建
    ??if (typeof(imgObj) == "object"){
    ????
    // 是否已取得了圖像的高度和寬度
    ????if ((imgObj.width != 0) && (imgObj.height != 0))
    ??????
    // 根據取得的圖像高度和寬度設置彈出窗口的高度與寬度,并打開該窗口
    ??????// 其中的增量 20 和 30 是設置的窗口邊框與圖片間的間隔量
    ?????? OpenFullSizeWindow(theURL,winName, ",width=" + (imgObj.width+20) + ",height=" + (imgObj.height+30));
    ????
    else
    ??????
    // 因為通過 Image 對象動態裝載圖片,不可能立即得到圖片的寬度和高度,所以每隔100毫秒重復調用檢查
    ?????? setTimeout("checkImg('" + theURL + "','" + winName + "')", 100)
    ?? }
    }

    function OpenFullSizeWindow(theURL,winName,features) {
    ??
    var aNewWin, sBaseCmd;
    ??
    // 彈出窗口外觀參數
    ?? sBaseCmd = "toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=no,";
    ??
    // 調用是否來自 checkImg
    ??if (features == null || features == ""){
    ????
    // 創建圖像對象
    ???? imgObj = new Image();
    ????
    // 設置圖像源
    ???? imgObj.src = theURL;
    ????
    // 開始獲取圖像大小
    ???? checkImg(theURL, winName)
    ?? }
    ??
    else{
    ????
    // 打開窗口
    ???? aNewWin = window.open(theURL,winName, sBaseCmd + features);
    ????
    // 聚焦窗口
    ???? aNewWin.focus();
    ?? }
    }
    //-->
    </script>


    使用時將上面的代碼放在網頁文檔的<head></head>標記對中,然后在鏈接的點擊事件中調用 OpenFullSizeWindow函數,如<a href="fullsize.jpg" onClick= "OpenFullSizeWindow(this.href,'','');return false"><img src="small.jpg"> </a>即可。
    以上代碼在IE 5.x-6.0中測試通過。
    posted @ 2008-06-07 02:12 jadmin 閱讀(88) | 評論 (0)編輯 收藏

    把文字替換成圖片
    首先把圖片復制到 剪貼板中,然后打開替換對話框,在“查找內容”框中輸入將被替換的文字,接著在 “替換為”框中輸入“^c”(注意:輸入的一定要是半角字符,c要小寫),單擊替換 即可。說明:“^c”的意思就是指令Word XP以剪貼板中的內容替換“查找內容”框中的內 容。按此原理,“^c”還可替換包括回車符在內的任何可以復制到剪貼板的可視內容,甚至Excel表格。

    三招去掉頁眉那條橫線
    1、在頁眉中,在“格式”-“邊框和底紋”中設置表格和邊框為“無”,應用于“段落”
    2、同上,只是把邊框的顏色設置為白色(其實并沒有刪的,只是看起來沒有了,呵呵)
    3、在“樣式”欄里把“頁眉”換成“正文”就行了——強烈推薦!
    會多出--(兩個橫杠) 這是用戶不愿看到的,又要多出一步作刪除--
    解決方法:替換時在前引號前加上一個空格 問題就解決了

    插入日期和時間的快捷鍵
    Alt+Shift+D:當前日期
    Alt+Shift+T:當前時間

    批量轉換全角字符為半角字符
    首先全選。然后“格式”→“更改大小寫”,在對話框中先選中“半角”,確定即可


    Word啟動參數簡介
    單擊“開始→運行”命令,然后輸入Word所在路徑及參數確定即可運行,如“C:\ PROGRAM FILES \MICROSOFT Office \Office 10\ WINWord.EXE /n”,這些常用的參數及功能如下:
    /n:啟動Word后不創建新的文件。
    /a:禁止插件和通用模板自動啟動。
    /m:禁止自動執行的宏。
    /w:啟動一個新Word進程,獨立與正在運行的Word進程。
    /c:啟動Word,然后調用Netmeeting。
    /q:不顯示啟動畫面。
    另外對于常需用到的參數,我們可以在Word的快捷圖標上單擊鼠標右鍵,然后在“目標”項的路徑后加上該參數即可。

    快速打開最后編輯的文檔
    如果你希望Word在啟動時能自動打開你上次編輯的文檔,可以用簡單的宏命令來完成:
    (1)選擇“工具”菜單中的“宏”菜單項,單擊“錄制新宏”命令打開“錄制宏”對話框;
    (2)在“錄制宏”對話框中,在“宏名”輸入框中輸入“autoexec”,點擊“確定”;
    (3)從菜單中選擇“文件”,點擊最近打開文件列表中顯示的第一個文件名;并“停止錄制”。保存退出。下次再啟動Word時,它會自動加載你工作的最后一個文檔。

    格式刷的使用
    1、設定好文本1的格式。
    2、將光標放在文本1處。
    3、單擊格式刷按鈕。
    4、選定其它文字(文本2),則文本2的格式與文本1 一樣。
    若在第3步中單擊改為雙擊,則格式刷可無限次使用,直到再次單擊格式刷(或按Esc鍵)為止。

    刪除網上下載資料的換行符(象這種“↓”)
    在查找框內輸入半角^l(是英文狀態下的小寫L不是數字1),在替換框內不輸任何內容,單擊全部替換,就把大量換行符刪掉啦。

    選擇性刪除文件菜單下的最近使用的文件快捷方式。
    工具→選項→常規把“列出最近使用文件數改為0”可以全部刪除,若要選擇性刪除,可以按ctrl+Alt+ -三個鍵,光標變為一個粗減號后,單擊文件,再單擊要刪除的快捷方式就行了。

    建立一個矩形選區:
    一般的選區建立可用鼠標左鍵,或用shift鍵配合pgup、pgdn、home、end、箭頭等功能鍵,當復制一個規則的矩形區域時,可先按住Alt鍵,然后用鼠標左鍵來選。我一般用此來刪除段首多余的成塊的空格。大家試一試*^_^*

    將字體快速改為上標或下標的方法:
    本人在一次無意間發現了這個方法,選定你要下標的字,然后在英文狀態下按住Ctrl,再按一下BASKSPACE旁的+/=的鍵,就可以了。上標只要在按Ctrl的同時也按住Shift,大家可以試試。

    讓Word表格快速一分為二
    將光標定位在分開的表格某個位置上,按下“Ctrl+Shift+Enter”組合鍵。這時你就會發現表格中間自動插入一個空行,這樣就達到了將一個表格一分為二的目的。

    用Word來拆字
    首先點擊“工具/自定義/命令/分解圖片”,按住鼠標左鍵把它拖放到工具欄任意位置即可;然后點擊“插入/圖片/藝術字”,例如輸入空心字“心”,選擇該“心”字剪切,在選擇性粘貼中選圖片(Windows圖元文件),選中該字,點擊工具欄中的“分解圖片”按鈕,這樣可以選擇“心”中的任意筆畫進行一筆一畫的拆分了。

    快速刪除段前段后的任意多個空格
    選定這些段段落,單擊居中按鈕,然后再單擊原來的那種對齊方式按鈕(如果原來是居中對齊的,先單擊其它對齊方式按鈕,再單擊居中按鈕就行了),是不是這些空格全不見了?


    只要打開WORD新建一個空文檔的時候,出現的不是空的文檔,而是我以前打的一份文檔
    首先:將資源管理器設置為顯示所有文件和文件夾;
    然后:
    C:\Documents and Settings\Administrator\Application Data\Microsoft\Templates文件夾下將所有Normal.doc文件刪掉;
    然后:OK(XP系統)

    快速輸入平方的方法
    先輸入2,然后選重后,按ctrl加shift加+就可以了.

    WORD中表格的選擇性錄入
    1.設置好表格,選定表格-視圖-工具-窗體-插入下拉型窗體域
    2.輸入數據,完成
    3.點擊鎖按鈕,保護,輸入完后再點擊進行其它的輸入.

    標點符號的全角/半的轉換用:Ctrl+.
    數字字母的全角/半的轉換用:Shift+空格

    輕松了解工具欄按鈕的作用
    按下“shift+F1”鍵,鼠標指針旁多了一個“?”號,想知道哪個按鈕
    的作用,就用鼠標單擊哪個。

    要經常在文檔中插入自己公司的信息
    公司名稱
    公司住址
    聯系電話
    聯系人姓名
    QQ號碼
    可以先選定這些內容,再單擊工具→自動更正→在替換框中輸入標記名稱(如“公司信息”)→添加→確定,以后凡是在文檔中要用到這個信息的地方鍵入“公司信息”(不要引號)這幾個字后就自動替換成:
    公司名稱
    公司住址
    聯系電話
    聯系人姓名
    QQ號碼
    說明:有些輸入法不支持這個功能,鍵入標記名稱后要按一下空格才行。

    快速換頁的方法
    雙擊某頁的右下腳,光標即可定位在那里,然后按回車直到換頁。ctrl+回車點插入按紐,分隔符,選中分頁符,然后確認就OK了 !!!

    表格的簡單調整寬度
    鼠標放在表格的右邊框上帶鼠標變成可以調整大小的時候
    雙擊
    根據表格內的內容調節表格大小

    代替金山詞霸
    點工具——語言——翻譯,在右邊出現的搜索框中輸入要查的單詞,回車就可以翻譯了。可以選擇英語翻成中文或中文翻成英語。
    第一次使用可能要安裝。

    [Alt]鍵實現標尺的精確定位
    如果你經常使用水平標尺來精確定位標簽、頁邊框、首字縮進及頁面對象的位置,那么你點擊標尺設置頁邊框或標簽時,您只可以將其設置為1字符或2字符,但不能設為1.5字符!要想設置更為精確的度量單位(例如百分之幾字符),在按住[Alt]鍵的同時,點擊并移動標尺或邊框,此時標尺將用數字精確顯示出當前的位置為百分之幾字符位置。

    用“記事本”去除格式
    網頁上COPY下來的東西往往都是有網格的,如果直接粘貼在WORD中會雜亂無章。先粘貼到記事本當中,再粘貼到WORD中,就可以去除網格等格式,再全選選擇清除格式,居中再取消居中即可取消所有格式。可以直接在WORD中進行:(菜單)編輯/選擇性粘貼……/無格式文本/確定。這樣省事多了。

    快速將文檔轉換成圖片
    先把欲想轉換的文檔保存退出.如:保存在桌面
    然后新建一個文件.把想轉換的文檔(鼠標左建按住該文檔不放)直接施放在頁面上

    恢復office的默認設置
    比如不小心把word設置亂了(如刪了菜單欄等等).
    查找normal.dot直接刪除.
    下一次啟動word會恢復默認值.

    讓Word只粘貼網頁中的文字而自動去除圖形和版式
    方法一、選中需要的網頁內容并按“Ctrl+C”鍵復制,打開Word,選擇菜單“編輯”→“選擇性粘貼”,在出現的對話框中選擇“無格式文本”。
    方法二、選中需要的網頁內容并按“Ctrl+C” 鍵復制,打開記事本等純文本編輯工具,按“Ctrl+V”鍵將內容粘貼到這些文本編輯器中,然后再復制并粘貼到Word中。

    ctrl+alt+f可以輸入腳注
    這個對于經常寫論文的朋友應該有點幫助。

    將阿拉伯數字轉換成中文數字或序號
    1、先輸入阿拉伯數字(如1234),全選中,單擊“插入/數字/數字類型(壹、貳……)/確定”,即變為大寫數字(如壹仟貳佰叁拾肆),會計朋友非常適用。
    2、其他像一千二百三十四,甲、乙……,子、丑……,羅馬數字等的轉換,可參考上法。

    Word中的常用快捷鍵吧
    “字體”對話框???? Ctrl+D
    選擇框式工具欄中的“字體”框???? Ctrl+Shift+F
    加粗 Ctrl+B
    傾斜 Ctrl+I
    下劃線Ctrl+U
    “上標”效果???? Ctrl+Shift+=
    “下標”效果???? Ctrl+=
    “關閉”命令???? Ctrl+W
    Word快捷鍵一覽表
    序號?????? 快捷鍵CTRL+?????? 代表意義
    1…………Z…………撤消
    2…………A…………全選
    3…………X…………剪切
    4…………C…………復制
    5…………V…………粘貼
    6…………S…………保存
    7…………B…………加粗
    8………… Q…………左對齊
    9…………E…………據中
    10…………R…………右對齊
    11…………]…………放大
    22…………[…………縮小
    12…………N…………新建文檔
    13…………I…………字體傾斜
    14…………W…………退出
    15…………P…………打印
    16…………U…………下劃線
    17…………O…………打開
    18…………k…………插入超級連接
    19…………F…………查找
    20…………H…………替換
    21…………G…………定位
    23…Ctrl+Alt+L……帶括號的編號
    24…Ctrl+Alt+.________…
    25…Alt+數字………區位碼輸入
    26…Ctrl+Alt+Del………關機
    27…Ctrl+Alt+Shift+?……?
    28…Ctrl+Alt+Shift+!……?
    29…Alt+Ctrl+E……………?
    30…Alt+Ctrl+R……………?
    31…Alt+Ctrl+T……………?
    32…Alt+Ctrl+Ctrl…………?
    33……Ctrl+D……………格式字體
    34……Ctrl+Shift+= ………上標
    35……Ctrl+=………………下標
    36……Ctrl+Shift+>……放大字體
    37……Ctrl+Shift+< ……縮小字體
    38……Alt+Ctrl+I………打印預覽
    39……Alt+Ctrl+O………大剛示圖
    40……Alt+Ctrl+P………普通示圖
    41……Alt+Ctrl+M………插入批注
    42……Alt+菜單上字母………打開該菜單

    無級微調
    打開“繪圖”工具欄-點開下拉菜單-繪圖網格...-將水平間距和垂直間距調到最小0.01-確定,這樣你就可以無級微調

    把work設置成在線打開,但不能修改‘只讀’怎搞啊?
    文件夾共享為只讀

    在WORD中輸入三個等號然后回車。。。出來的是雙橫線哦。。。
    同樣的方法也可以做出波浪線單橫線哦!~~~~~ ,
    ###為中間粗上下細的三線, ***為點線, ~~~為波浪線, ---為單線

    輸入拼音字母的音調怎么輸入
    用智能ABC,鍵入v9,然后自己挑選吧!

    頁碼設置
    1、打開頁眉/頁腳視圖,點擊插入頁碼按鈕,將頁碼插入(此時所有的頁碼是連續編號的) 2、切換到頁面視圖,在需要從1計數的頁面上插入連續分節符(插入--分隔符--分節符--連續) 3、再次換到頁眉/頁腳視圖,點擊設置頁碼格式按鈕,將頁碼編排-起始頁碼設置為1

    把Excel中的表格以圖片形式復制到Word中
    除了用抓圖軟件和全屏拷貝法外還有更簡單的呢
    先選定區域,按住Shift健點擊"編輯"會出現"復制圖片""粘貼圖片",復制了后,在Word中選"粘貼圖片"就可像處理圖片一樣處理Excel表格了!

    Ctrl+鼠標滑輪(左右鍵中間的那個輪子)可以迅速調節顯示比例的大小(100%)。向上滑擴大,向下滑縮小。


    快速調整頁眉橫線長度
    在word插入頁眉后,會自動在此位置添加一條長橫線。如果需要調整此線的長度及其水平位置,可以首先激活頁眉,選擇格式下的段落命令,調整一下左右縮進的字符值,確定可以看到最終效果了!

    快速瀏覽圖片
    在WORD2003中,如果插入的圖片過多,會影響打開和翻滾的速度。其實,我們可以通過改變圖片的顯示方式改變瀏覽速度。
    工具--選項--視圖--圖片框
    這樣,先顯示的是圖片框,需要看的時候,停留,即可顯示!

    WORD 中如何輸入分數
    1、打開word,點擊工具菜單欄的“插入”,在下拉菜單中點“域”。
    2、在打開的復選框中的類別欄中“選等式公式”,域名中“EQ”。然后點擊“選項”,在出現的菜單選項中選“F(,)”,接著點擊“添加到域”并“確定”。
    3、然后在輸入F(,)數字,如要輸入23 只需在F(,)輸入F(2,3)就能得到2/3

    怎樣使WORD 文檔只有第一頁沒有頁眉,頁腳
    答:頁面設置-頁眉和頁腳,選首頁不同,然后選中首頁頁眉中的小箭頭,格式-邊框和底紋,選擇無,這個只要在“視圖”——“頁眉頁腳”,其中的頁面設置里,不要整個文檔,就可以看到一個“同前”的標志,不選,前后的設置情況就不同了

    Word中雙擊鼠標的妙用
    在Word的程序窗口中不同位置上雙擊,可以快速實現一些常用功能,我們歸納如下:
    在標題欄或垂直滾動條下端空白區域雙擊,則窗口在最大化和原來狀態之間切換;
    將鼠標在標題欄最左邊WORD文檔標記符號處雙擊,則直接退出WORD(如果沒有保存,會彈出提示保存對話框);
    將鼠標移到垂直滾動條的上端成雙向拖拉箭頭時雙擊,則快速將文檔窗口一分為二;
    將鼠標移到兩個窗口的分界線處成雙向拖拉箭頭時雙擊,則取消對窗口的拆分;
    在狀態欄上的“修訂”上雙擊,則啟動“修訂”功能,并打開“審閱”工具欄。再次雙擊,則關閉該功能,但“審閱”工具欄不會被關閉;
    在狀態欄上的“改寫”上雙擊,則轉換為“改寫”形式(再次“雙擊”,轉換為“插入”形式);
    如果文檔添加了頁眉(頁腳),將鼠標移到頁眉(頁腳)處雙擊,則激活頁眉(頁腳)進入編輯狀態,對其進行編輯;在空白文檔處雙擊,則啟動“即點即輸”功能;
    在標尺前端空白處雙擊,則啟動“頁面設置”對話框。


    在word編輯中經常要調整字休大小來滿足編輯要求
    選中要修改的文字,按ctrl+]或ctrl+[來改變字體的大小!
    這個方法可以微量改字體大小~



    文本框的線條
    1. 制作好文檔后,通過“視圖→頁眉頁腳”命令,調出“頁眉頁腳”工具欄,單擊其中的“顯示→隱藏文檔正文文字”按鈕,隱藏正文部分的文字內容。
    2. 選擇“插入”菜單中的“文本框”命令,在頁眉的下方插入一個空文本框。
    3. 在文本框內加入作為水印的文字、圖形等內容,右擊圖片,選擇快捷菜單中的“設置圖片格式”命令,在對話框中“圖片”選項卡下,通過“圖像控制”改變圖像的顏色,對比度和亮度,并手動調整圖片的大小。   
    4. 通過“設置文本框格式”命令,把文本框的線條色改為無線條色。
    5. 單擊“頁眉頁腳”工具欄的“關閉”按鈕,退出“頁眉頁腳”編輯。

    每頁添加水印的操作
    1. 制作好文檔后,通過“視圖→頁眉頁腳”命令,調出“頁眉頁腳”工具欄,單擊其中的“顯示→隱藏文檔正文文字”按鈕,隱藏正文部分的文字內容。
    2. 選擇“插入”菜單中的“文本框”命令,在頁眉的下方插入一個空文本框。
    3. 在文本框內加入作為水印的文字、圖形等內容,右擊圖片,選擇快捷菜單中的“設置圖片格式”命令,在對話框中“圖片”選項卡下,通過“圖像控制”改變圖像的顏色,對比度和亮度,并手動調整圖片的大小。   
    4. 通過“設置文本框格式”命令,把文本框的線條色改為無線條色。
    5. 單擊“頁眉頁腳”工具欄的“關閉”按鈕,退出“頁眉頁腳”編輯。
    6. 完成上述步驟的操作,水印制作得以完成,這樣就為每一頁都添加了相同的水印。

    讓Word頁面快速一分為二
    將光標定位在想分開的位置上,按下“Ctrl+Shift+Enter”組合鍵。


    使Word中的字體變清晰
    Word文檔中使用 “仿宋” 字體很淡,可按以下方法使字體更清晰:
    右擊桌面,點 “屬性”,點 “外觀”,點 “效果”,選中“使用下列方式使屏幕字體的邊緣平滑”選“清晰”,確定。

    Word雙面打印技巧
       我們平時用電腦的時候可能都少不了打印材料,Word是我們平常用的最多的Office軟件之一。有時我們要用Word打印許多頁的文檔,出于格式要求或為了節省紙張,會進行雙面打印

      我們一般常用的操作方法是:選擇“打印”對話框底部的“打印”下拉列表框中的“打印奇數頁”或“打印偶數頁”,來實現雙面打印。我們設定為先打印奇數頁。等奇數頁打印結束后,將原先已打印好的紙反過來重新放到打印機上,選擇該設置的“打印偶數頁”,單擊“確定”按鈕。這樣通過兩次打印命令就可以實現雙面打印。

      我們也可以利用另一種更靈活的雙面打印方式:打開“打印”對話框,選中“人工雙面打印”,確定后就會出現一個“請將出紙器中已打印好的一面的紙取出并將其放回到送紙器中,然后‘確定’按鍵,繼續打印”的對話框并開始打印奇數頁,打完后將原先已打印好的紙反過來重新放到打印機上,然后按下該對話框的“確定”按鍵,Word就會自動再打印偶數頁,這樣只用一次打印命令就可以了。

      兩種方法對比,后者較前者更為方便。

    posted @ 2008-06-06 12:16 jadmin 閱讀(85) | 評論 (0)編輯 收藏
    添加、刪除、修改使用db.Execute(Sql)命令執行操作
    ╔----------------╗
    ☆ 數據記錄篩選 ☆
    ╚----------------╝
    注意:單雙引號的用法可能有誤(沒有測式)

    Sql = "Select Distinct 字段名 From 數據表"
    Distinct函數,查詢數據庫存表內不重復的記錄

    Sql = "Select Count(*) From 數據表 where 字段名1>#18:0:0# and 字段名1< #19:00# "
    count函數,查詢數庫表內有多少條記錄,“字段名1”是指同一字段
    例:
    set rs=conn.execute("select count(id) as idnum from news")
    response.write rs("idnum")

    sql="select * from 數據表 where 字段名 between 值1 and 值2"
    Sql="select * from 數據表 where 字段名 between #2003-8-10# and #2003-8-12#"
    在日期類數值為2003-8-10 19:55:08 的字段里查找2003-8-10至2003-8-12的所有記錄,而不管是幾點幾分。

    select * from tb_name where datetime between #2003-8-10# and #2003-8-12#
    字段里面的數據格式為:2003-8-10 19:55:08,通過sql查出2003-8-10至2003-8-12的所有紀錄,而不管是幾點幾分。


    Sql="select * from 數據表 where 字段名=字段值 order by 字段名 [desc]"

    Sql="select * from 數據表 where 字段名 like '%字段值%' order by 字段名 [desc]"
    模糊查詢

    Sql="select top 10 * from 數據表 where 字段名 order by 字段名 [desc]"
    查找數據庫中前10記錄

    Sql="select top n * form 數據表 order by newid()"
    隨機取出數據庫中的若干條記錄的方法
    top n,n就是要取出的記錄數

    Sql="select * from 數據表 where 字段名 in ('值1','值2','值3')"

    ╔----------------╗
    ☆ 添加數據記錄 ☆
    ╚----------------╝
    sql="insert into 數據表 (字段1,字段2,字段3 …) valuess (值1,值2,值3 …)"

    sql="insert into 數據表 valuess (值1,值2,值3 …)"
    不指定具體字段名表示將按照數據表中字段的順序,依次添加

    sql="insert into 目標數據表 select * from 源數據表"
    把源數據表的記錄添加到目標數據表

    ╔----------------╗
    ☆ 更新數據記錄 ☆
    ╚----------------╝
    Sql="update 數據表 set 字段名=字段值 where 條件表達式"

    Sql="update 數據表 set 字段1=值1,字段2=值2 …… 字段n=值n where 條件表達式"

    Sql="update 數據表 set 字段1=值1,字段2=值2 …… 字段n=值n "
    沒有條件則更新整個數據表中的指定字段值

    ╔----------------╗
    ☆ 刪除數據記錄 ☆
    ╚----------------╝
    Sql="delete from 數據表 where 條件表達式"

    Sql="delete from 數據表"
    沒有條件將刪除數據表中所有記錄)

    ╔--------------------╗
    ☆ 數據記錄統計函數 ☆
    ╚--------------------╝
    AVG(字段名) 得出一個表格欄平均值
    COUNT(*|字段名) 對數據行數的統計或對某一欄有值的數據行數統計
    MAX(字段名) 取得一個表格欄最大的值
    MIN(字段名) 取得一個表格欄最小的值
    SUM(字段名) 把數據欄的值相加

    引用以上函數的方法:
    sql="select sum(字段名) as 別名 from 數據表 where 條件表達式"
    set rs=conn.excute(sql)
    用 rs("別名") 獲取統的計值,其它函數運用同上。

    ╔----------------------╗
    ☆ 數據表的建立和刪除 ☆
    ╚----------------------╝
    Create TABLE 數據表名稱(字段1 類型1(長度),字段2 類型2(長度) …… )
    例:Create TABLE tab01(name varchar(50),datetime default now())
    Drop TABLE 數據表名稱 (永久性刪除一個數據表)

    ╔--------------------╗
    ☆ 記錄集對象的方法 ☆
    ╚--------------------╝
    rs.movenext 將記錄指針從當前的位置向下移一行
    rs.moveprevious 將記錄指針從當前的位置向上移一行
    rs.movefirst 將記錄指針移到數據表第一行
    rs.movelast 將記錄指針移到數據表最后一行
    rs.absoluteposition=N 將記錄指針移到數據表第N行
    rs.absolutepage=N 將記錄指針移到第N頁的第一行
    rs.pagesize=N 設置每頁為N條記錄
    rs.pagecount 根據 pagesize 的設置返回總頁數
    rs.recordcount 返回記錄總數
    rs.bof 返回記錄指針是否超出數據表首端,true表示是,false為否
    rs.eof 返回記錄指針是否超出數據表末端,true表示是,false為否
    rs.delete 刪除當前記錄,但記錄指針不會向下移動
    rs.addnew 添加記錄到數據表末端
    rs.update 更新數據表記錄
    posted @ 2008-06-05 16:09 jadmin 閱讀(77) | 評論 (0)編輯 收藏

    你正在學習CSS布局嗎?是不是還不能完全掌握純CSS布局?通常有兩種情況阻礙你的學習:

    第一種可能是你還沒有理解CSS處理頁面的原理。在你考慮你的頁面整體表現效果前,你應當先考慮內容的語義和結構,然后再針對語義、結構添加CSS。這篇文章將告訴你應該怎樣把HTML結構化。

    另一種原因是你對那些非常熟悉的表現層屬性(例如:cellpadding,、hspace、align="left"等等)束手無策,不知道該轉換成對 應的什么CSS語句。 當你解決了第一種問題,知道了如何結構化你的HTML,我再給出一個列表,詳細列出原來的表現屬性用什么CSS來代替。

    結構化HTML

    我們在剛學習網頁制作時,總是先考慮怎么設計,考慮那些圖片、字體、顏色、以及布局方案。然后我們用Photoshop或者Fireworks畫出來、切割成小圖。最后再通過編輯HTML將所有設計還原表現在頁面上。

    如果你希望你的HTML頁面用CSS布局(是CSS-friendly的),你需要回頭重來,先不考慮“外觀”,要先思考你的頁面內容的語義和結構。

    外觀并不是最重要的。一個結構良好的HTML頁面可以以任何外觀表現出來,CSS Zen Garden是一個典型的例子。CSS Zen Garden幫助我們最終認識到CSS的強大力量。

    HTML不僅僅只在電腦屏幕上閱讀。你用photoshop精心設計的畫面可能不能顯示在PDA、移動電話和屏幕閱讀機上。但是一個結構良好的HTML頁面可以通過CSS的不同定義,顯示在任何地方,任何網絡設備上。

    開始思考

    首先要學習什么是"結構",一些作家也稱之為"語義"。這個術語的意思是你需要分析你的內容塊,以及每塊內容服務的目的,然后再根據這些內容目的建立起相應的HTML結構。

    如果你坐下來仔細分析和規劃你的頁面結構,你可能得到類似這樣的幾塊:

    標志和站點名稱

    主頁面內容

    站點導航(主菜單)

    子菜單

    搜索框

    功能區(例如購物車、收銀臺)

    頁腳(版權和有關法律聲明)

    我們通常采用DIV元素來將這些結構定義出來,類似這樣:

    <div id="header"></div>

    <div id="content"></div>

    <div id="globalnav"></div>

    <div id="subnav"></div>

    <div id="search"></div>

    <div id="shop"></div>

    <div id="footer"></div>

    這不是布局,是結構。這是一個對內容塊的語義說明。當你理解了你的結構,就可以加對應的ID在DIV上。DIV容器中可以包含任何內容塊,也可以嵌套另一個DIV。內容塊可以包含任意的HTML元素---標題、段落、圖片、表格、列表等等。

    根據上面講述的,你已經知道如何結構化HTML,現在你可以進行布局和樣式定義了。每一個內容塊都可以放在頁面上任何地方,再指定這個塊的顏色、字體、邊框、背景以及對齊屬性等等。

    使用選擇器是件美妙的事

    id的名稱是控制某一內容塊的手段,通過給這個內容塊套上DIV并加上唯一的id,你就可以用CSS選擇器來精確定義每一個頁面元素的外觀表現,包括標 題、列表、圖片、鏈接或者段落等等。例如你為#header寫一個CSS規則,就可以完全不同于#content里的圖片規則。

    另外一個例子是:你可以通過不同規則來定義不同內容塊里的鏈接樣式。類似這樣:#globalnav a:link或者 #subnav a:link或者#content a:link。你也可以定義不同內容塊中相同元素的樣式不一樣。例如,通過#content p和#footer p分別定義#content和#footer中p的樣式。從結構上講,你的頁面是由圖片、鏈接、列表、段落等組成的,這些元素本身并不會對顯示在什么網絡 設備中(PDA還是手機或者網絡電視)有影響,它們可以被定義為任何的表現外觀。

    一個仔細結構化的HTML頁面非常簡單,每一個元素都被用于結構目的。當你想縮進一個段落,不需要使用blockquote標簽,只要使用p標簽,并對p 加一個CSS的margin規則就可以實現縮進目的。p是結構化標簽,margin是表現屬性,前者屬于HTML,后者屬于CSS。(這就是結構于表現的 相分離.)

    良好結構的HTML頁面內幾乎沒有表現屬性的標簽。代碼非常干凈簡潔。例如,原先的代碼<table width="80%" cellpadding="3" border="2" align="left">,現在可以只在HTML中寫<table>,所有控制表現的東西都寫到CSS中去,在結構化的HTML中, table就是表格,而不是其他什么(比如被用來布局和定位)。

    親自實踐一下結構化

    上面說的只是最基本的結構,實際應用中,你可以根據需要來調整內容塊。常常會出現DIV嵌套的情況,你會看到"container"層中又有其它層,結構類似這樣:

    <div id="navcontainer">

    <div id="globalnav">

    <ul>a list</ul>

    </div>

    <div id="subnav">

    <ul>another list</ul>

    </div>

    </div>

    嵌套的div元素允許你定義更多的CSS規則來控制表現,例如:你可以給#navcontainer一個規則讓列表居右,再給#globalnav一個規則讓列表居左,而給#subnav的list另一個完全不同的表現。

    用CSS替換傳統方法

    下面的列表將幫助你用CSS替換傳統方法:

    HTML屬性以及相對應的CSS方法

    HTML屬性

    CSS方法說明

    align="left"

    align="right" float: left;

    float: right; 使用CSS可以浮動 任何元素:圖片、段落、div、標題、表格、列表等等

    當你使用float屬性,必須給這個浮動元素定義一個寬度。

    marginwidth="0" leftmargin="0" marginheight="0" topmargin="0" margin: 0; 使用CSS, margin可以設置在任何元素上, 不僅僅是body元素.更重要的,你可以分別指定元素的top, right, bottom和left的margin值。

    vlink="#333399" alink="#000000" link="#3333FF" a:link #3ff;

    a:visited: #339;

    a:hover: #999;

    a:active: #00f;

    在HTML中,鏈接的顏色作為body的一個屬性值定義。整個頁面的鏈接風格都一樣。使用CSS的選擇器,頁面不同部分的鏈接樣式可以不一樣。

    bgcolor="#FFFFFF" background-color: #fff; 在CSS中,任何元素都可以定義背景顏色,不僅僅局限于body和table元素。

    bordercolor="#FFFFFF" border-color: #fff; 任何元素都可以設置邊框(boeder),你可以分別定義top, right, bottom和left

    border="3"cellspacing="3" border-width: 3px; 用CSS,你可以定義table的邊框為統一樣式,也可以分別定義top, right, bottom and left邊框的顏色、尺寸和樣式。

    你可以使用 table, td or th 這些選擇器.

    如果你需要設置無邊框效果,可以使用CSS定義: border-collapse: collapse;

    <br clear="left">

    <br clear="right">

    <br clear="all">

    clear: left;

    clear: right;

    clear: both;

    許多2列或者3列布局都使用 float屬性來定位。如果你在浮動層中定義了背景顏色或者背景圖片,你可以使用clear屬性.

    cellpadding="3"

    vspace="3"

    hspace="3" padding: 3px; 用CSS,任何元素都可以設定padding屬性,同樣,padding可以分別設置top, right, bottom and left。padding是透明的。

    align="center" text-align: center;

    margin-right: auto; margin-left: auto;

    Text-align 只適用于文本.

    象div,p這樣的塊級可以通過margin-right: auto; 和margin-left: auto;來水平居中

    一些令人遺憾的技巧和工作環境

    由于瀏覽器對CSS支持的不完善,我們有時候不得不采取一些技巧(hacks)或建立一種環境(Workarounds)來讓CSS實現傳統方法同樣的效 果。例如塊級元素有時侯需要使用水平居中的技巧,盒模型bug的技巧等等。所有這些技巧都在Molly Holzschlag的文章《Integrated Web Design: Strategies for Long-Term CSS Hack Management》中有詳細說明。

    另外一個關于CSS技巧的資源站點是Big John和Holly Bergevin的“Position is Everything”。

    理解浮動行為

    Eric Meyer的《Containing Floats》將幫助你掌握如何使用float屬性布局。float元素有時候需要清除(clear),閱讀《How To Clear Floats Without Structural Markup》將非常有幫助。

    更多幫助

    已有的《CSS Discussion》列表是很好的資源,它收集了一個WiKiA討論組的信息,其中包括CSS布局總結(css- discuss.incutio.com/?page=CssLayouts),CSS 技巧總結 (css-discuss.incutio.com/?page=CssHack) 以及更多。

    posted @ 2008-06-03 17:29 jadmin 閱讀(69) | 評論 (0)編輯 收藏

    在 MySQL下,在進行中文模糊檢索時,經常會返回一些與之不相關的記錄,如查找 "%a%" 時,返

    回的可能有中文字符,卻沒有a字符存在。本人以前也曾遇到過類似問題,經詳細閱讀MySQL的

    Manual,發現可以有一種方法很方便的解決并得到滿意的結果。

      希望通過“標題”對新聞庫進行檢索,關鍵字可能包含是中英文,如下SQL語句:

      以下為引用的內容:


      
    Code:
    select id,title,name from achech_com.news where title like '%a%'


      返回的結果,某些title字段確定帶了“a”關鍵字,而有些則只有中文,但也隨之返回在檢

    索結果中。

      解決方法,使用 BINARY 屬性進行檢索,如:

      以下為引用的內容:


      
    Code:
    select id,title,name from achech_com.news where binary title like '%a%'


      返回的結果較之前正確,但英文字母區分大小寫,故有時在檢索如“Achech”及“achech”

    的結果是不一樣的。知道了使用 BINARY 屬性可以解決前面這個問題,再看看 MySQL 支持的

    UCASE 及 CONCAT 函數,其中 UCASE 是將英文全部轉成大寫,而CONCAT函數的作用是對字符進行

    連接,以下是我們完全解決后的SQL 語句:


      
    Code:
    select id,title,name from achech_com.news

      where binary ucase(title) like concat('%',ucase('a'),'%')

      檢索的步驟是先將屬性指定為 BINARY ,以精確檢索結果,而被 like 的 title內容存在大

    小寫字母的可能,故先使用 ucase 函數將字段內容全部轉換成大寫字母,然后再進行 like 操作

    ,而 like 的操作使用模糊方法,使用 concat的好處是傳進來的可以是直接的關鍵字,不需要帶

    “%”萬用符,將“'a'”直接換成你的變量,在任何語言下都萬事無憂了。 當然你也可以這么寫


      
    Code:
    select id,title,name from achech_com.news where binary ucase(title) like ucase('%a%')


      檢索的結果還算滿意吧,不過速度可能會因此而慢N毫秒。

    posted @ 2008-06-01 21:36 jadmin 閱讀(83) | 評論 (0)編輯 收藏

    在試過Oracle安裝目錄下C:\oracle\product\10.2.0\db_1\jdbc\lib自帶的驅動classes12.jar和ojdbc14.jar之后,都產生下面的錯誤

    產生錯誤的原因是:數據庫版本是10.2.0.1的驅動有問題,

    解決辦法:去下載最新的ojdbc14.jar 驅動,反正大于10.2.0.2版本應該就可以解決.

    Oracle網站下載地址 :http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html

    posted @ 2008-05-25 01:40 jadmin 閱讀(350) | 評論 (0)編輯 收藏

    轉載自:http://java.ccidnet.com/art/3539/20080508/1443759_1.html

    最近對程序占用內存方面做了一些優化,取得了不錯的效果,總結了一些經驗。

    簡要說一下,相信會對大家寫出優質的程序有所幫助。

    下面的論述針對32位系統,對64位系統不適用,后敘經常你寫了一個程序,一測試,功能沒問題,一看內存占用也不多,就不去考慮其它的東西了。但可能程序使用了一個什么數據結構,會當數據規模變大時,內存占用激增。

    基本&&關鍵的問題是,Java里各種東東占多少內存?????????

    對于primitive類型,有8個

    byte short int long float double char boolean 它們的長度分別是

    1 2 4 8 4 8 2 1

    這個不羅嗦了,舉例來說

    long[] data=new long[1000];

    占用內存 8*1000 bytes

    此外,data本身是一個Object,也占用內存若干,后敘,當然它針對 8*1000來說,忽略不計

    再說Object的占用,在說這個之前,先說說引用,一慣的說法是

    Java里沒有指針了,只有引用,引用是安全的

    這個說法沒錯,但是從機理上來說,引用就是指針,只是jvm對指針的使用檢查和限制很多,這個引用/指針變得很安全

    直接來結論:一個引用占4byte ,在32位系統上

    Object obj=null; //4byte

    Object[] objs=new Object[1000]; //至少4*1000byte

    你看我定義了一個 obj,還是null,就占4byte

    定義了一個 objs,1000個元素,但都是null啊,就都每個占4byte

    是的!!!!!

    雖然obj==null,但它已經是 一個引用,或者說一個指針了

    指針也要占地方啊!!!!啊!!!!啊!!!!

    接下來,直接給另一個結論: Object占8byte,注意,純Object

    Object obj=new Object(); //多少????

    8byte?? 錯!! 12byte,忘了還有一個引用,8byte是Object的內容

    記住 Object obj=new Object(); 占12byte

    Object[] objs=new Object[1000];

    for(int i=0;i<1000;i++) {

    objs[i]=new Object();

    }

    至少占用 12*1000 bytes

    推論: Object占12bytes,似乎和上面的結論矛盾??!!

    沒有!! 不管Object,沒有被垃圾回收之前,總得被別人引用吧?

    總的有指針指它吧? 既然指,那個引用or指針就要占地方啊 4byte

    加起來是12byte,反正一個Object至少 12bytes

    還是直接給結論,推導的過程我就都包辦了,咱不是臟活累活搶著干么!!

    一個Integer占 16 bytes

    這時您可能會有疑問,Integer=Object+int,就是:

    public class Integer {

    public int value;

    }

    Integer應該占 8+4=12 bytes啊

    你說的有道理,但是jvm對所有的Object有限制!!

    這個限制被我發現了,就是不管什么Object占的空間,要是8的倍數

    12不是8的倍數,只能是16了!!!

    推論:Byte也占16bytes!!!!!!!!!!!

    問:

    Byte[] bytes=new Byte[1000];

    占用空間多少?

    答: 約為(至少為) (16+4)*1000 bytes

    好家伙!!!!!!!!

    論題:數組空間占用怎么算?

    我這里直接給結論了,推導這個花了更長的時間:

    對于數組來說,數組這個Object有一個length屬性,數組的元素相當于其成員

    public class Array {

    public int length;

    //... 其它成員

    }

    對于數組,我們不是直接可以取length屬性么,源于此

    public byte[] bytes=new byte[1000];

    System.out.println(bytes.length); // 看,有length屬性

    上面的bytes換算過來是:

    public class Array {

    public int length;

    public byte byte0;

    public byte byte1;

    ...

    public byte byte999;

    }

    上面的bytes占用的內存是:

    4+[8+4 + 1*1000] = 4+ [1012]=4+1016=1020

    4是 bytes這個引用,8是Object基占的,4是length屬性占的

    1000是1000個成員占的,本來是 1012,但要求是8的倍數,變成 1016了

    總共是 1020

    再如:

    byte[] bytes=new byte[4];

    的內存占用是:

    4+[8+4+4*1]=4+[16]=20;

    byte[] bytes=new byte[3]; 也是 20

    對于元素是Object的數組,Object也是當作其成員,(注意只有引用這個數組的空間,這個可以推到普通Class上)

    Byte[] bytes=new Byte[1000];

    這個 bytes的定義相當于:

    public class Array {

    public int length;

    public Byte byte0;

    .....

    public Byte byte999;

    }

    占用空間是:

    4+[8+4+4*1000]+16*1000= 4+ 4016 + 16000 = 你自己算吧

    推論:千萬不要用 Byte[] 有20倍的差距!!!!!!!

    你可能一下子沒明白過來,沒關系多琢磨一下,對于普通的class來說

    ,內容占用就是基加成員的占用,Object成員只記引用

    public class Abc {

    public int n;

    public byte b;

    public Object obj;

    }

    它的內容占用是: [8+4+1+4]=24

    所以 Abc one=new Abc()的占用是 4+24=28

    提醒:對于 Abc的成員 obj沒有計,如果要計入的話,循環這個過程就可以了。(琢磨一下)

    舉例:

    public class Abc {

    public byte b;

    public Object obj=null;

    }

    public class Def {

    public int n;

    public byte b;

    public Abc obj=new Abc();

    }

    問:

    Def one=new Def(); //占多少?

    答:

    4+[8+4+1+4]+[8+1+4]=4+24+16=44

    public class Abc {

    public byte b;

    public Object obj=null;

    }

    public class Def {

    public int n;

    public byte b;

    public Abc[] objs=new Abc[100];

    {

    for(int i=0;i<10;i++) {

    objs[i]=new Abc();

    }

    }

    }

    問:

    Def one=new Def(); //占多少?

    答:

    kao,一下我也算不出來,不過我寫了程序,可以算出來,你給它一個Object,它就能遞歸的算出總共占了多少內存,這個程序不復雜,你也可以寫出來。我等機會合適了再放出。

    單獨說一下String,String的結構是:

    public class String {

    private final char value[];

    private final int offset;

    private final int count;

    private int hash; // Default to 0

    }

    所以,不考慮那個char[]的占用,一個String最少占用 [8+4+4+4+4]=24bytes

    加上引用,共28bytes

    所以

    String s="";

    占用28bytes!!!!! 盡管它的長度為0

    如果精確的算,加上引用一個String的占用是

    4+24+[8+4+2*length]

    String s=""; 的占用是 28+16= 44

    String s="ab" 的占用是 28+16= 44

    String s="abc" 的占用是 28+24 = 52

    要說的是,String是常用的類,這么看,String耗內存很多,所以jvm有優化,同樣的內容盡量重用,所以除了28是必須的外,那個char[] 很可能一樣

    比方說

    String[] s=new String[1000];

    for(int i=0;i<1000;i++) {

    s[i]=new String("abcdefasdjflksadjflkasdfj");

    }

    的占用的數量級是 28*1000,那 1000個字符串本身基本上不占內存,只有一份!!!!!!

    反正String 至少是 28,最多也可能是28!!!!!!!!

    比較占內存的數據結構,這個很重要:

    基本上就是 primitive的包裝

    實例:

    我以前用一個

    Hashtable的結構,有100萬個元素

    改為String[]+int[]后,內存占用改觀不少,速度也很快

    100萬的String[] 快排一下,也就2秒多,查找用2分,和hash也差不多少。

    posted @ 2008-05-10 15:34 jadmin 閱讀(74) | 評論 (0)編輯 收藏

    1."-2147467259 (0x80004005)"錯誤

    解決辦法:

    cmd進入命令提示窗,依次進行如下操作

    regsvr32 vbscript.dll
    regsvr32 jscript.dll
    regsvr32 %windir%\system32\inetsrv\asp.dll


    重新啟動一下IIS,錯誤就解決了

    2."Microsoft VBScript 運行時錯誤 (0x800A01AD)"錯誤,此錯誤屬于沒有FSO權限,需要注冊scrrun.dll

    解決辦法:

    運行-->輸入命令regsvr32 scrrun.dll即可。

    如果輸入上述命令后,提示找不到模塊,說明系統中缺少該組件,則進行如下操作

    1.在安裝文件(系統光盤)目錄i386中找到scrrun.dl_,用winrar解壓縮,得scrrun.dll,

    2.復制到x(你的系統盤):\windows\system32\目錄中。

    3.運行-->運行命令regsvr32 scrrun.dll

    補充:

    取消FOS的命令是:運行regsvr32 scrrun.dll /u

    posted @ 2008-05-06 17:58 jadmin 閱讀(82) | 評論 (0)編輯 收藏

    ?????? 系統要安全就需要經常的打補丁,經常的重裝系統,當我們重裝系統的時候挨個打補丁是非常麻煩的事情,因為補丁比較多,挨個啟動比較煩瑣,為了方便,我們可以自己制作一個補丁批處理安裝程序。
    ?????? 第一步:根據微軟安全補丁最新發布通知和系統更新需要,下載所需的安全補丁(可以使用WUD下載)。在移動硬盤或U盤上建立目錄,例如:“20071212xp_patch”,將下載的所有補丁文件復制到此文件夾內。
    ?????? 第二步:微軟KB類的安全補丁安裝參數都很統一,主要分為“安裝模式”、“重新啟動選項”和“特別選項”三部分。其中,“/quiet”、“/passive”、“/norestart”和“/nobackup”安裝參數分別表示“無用戶操作或顯示”、“無人參與模式”、“安裝后不重啟”和“不備份卸載需要的文件”。正確使用這幾個參數可輕松實現補丁無人值守安裝,并且能避免安裝過程中重啟電腦及在C盤Windows目錄下備份無用的補丁文件。
    ?????? 第三步:打開記事本程序,輸入以下代碼:

    @echo off
    for %%i in (*.exe) do %%i /passive /norestart /nobackup
    shutdown -r??????????????????????????????????????????

    ?????? 上面的代碼,第二行是一個循環命令,循環執行同一目錄下的所有補丁文件;最后一行“shutdown -r”,表示所有補丁安裝后自動重啟電腦(注:最后一行可以不加,省得象我一樣這邊下載著驅動,那邊提示還有多少秒自動重啟,暈啊 :)。把它保存為“updatexp.bat”,并復制到20071212xp_patch文件夾中。
    ?????? 第四步:雙擊這個批處理文件,就可以了。

    說明:
    有時系統升級文件可能是SFX、CAB格式,這時你可以用以下代碼:
    @echo off
    FOR /R %%F IN (*.exe) DO @((@findstr _SFX_CAB_EXE_PATH "%%F" >nul && @start /wait %%F /U /Z)|| @start /wait %%F)

    一點使用說明:
    ①、@ 不是一個命令, 而是DOS 批處理的一個特殊標記符, 僅用于屏蔽命令行回顯;
    ②、echo 表示顯示此命令后的字符;
    echo off 表示在此語句后所有運行的命令都不顯示命令行本身;
    @與echo off相象,但它是加在每個命令行的最前面,表示運行時不顯示這一行的命令行(只能影響當前行)。
    因此如果你想顯示每次運行的命令行,可將第一行刪除。

    posted @ 2008-05-06 15:24 jadmin 閱讀(149) | 評論 (0)編輯 收藏
    僅列出標題
    共50頁: First 上一頁 16 17 18 19 20 21 22 23 24 下一頁 Last 
    主站蜘蛛池模板: 日韩大片在线永久免费观看网站| 亚洲一卡2卡3卡4卡国产网站| 一级毛片一级毛片免费毛片| 国产男女猛烈无遮挡免费视频网站| 国产精品高清视亚洲一区二区| 久草视频免费在线| 亚洲国产精品日韩在线观看| 97碰公开在线观看免费视频| 亚洲剧情在线观看| 巨胸喷奶水视频www网免费| 亚洲第一综合天堂另类专| 免费看小12萝裸体视频国产| 免费无码午夜福利片| 久久久久亚洲?V成人无码| 日韩免费的视频在线观看香蕉| 亚洲无删减国产精品一区| 亚洲一区二区免费视频| 亚洲熟妇无码八V在线播放| 成人免费无码精品国产电影| 香蕉国产在线观看免费| 亚洲成AV人片一区二区密柚| 18女人毛片水真多免费| 亚洲熟妇无码八V在线播放| 亚洲精品成人在线| 青青草原1769久久免费播放| 亚洲国产视频网站| 免费A级毛片无码久久版| 三级黄色在线免费观看| 国产婷婷成人久久Av免费高清| 久久精品国产亚洲AV麻豆网站 | 国产视频精品免费| 男女一边桶一边摸一边脱视频免费 | 91在线品视觉盛宴免费| 看成年女人免费午夜视频| 久久久久亚洲精品成人网小说| 国产片AV片永久免费观看| 一区二区三区在线免费观看视频| 亚洲AV无码久久精品蜜桃| 久久综合AV免费观看| 国产一级在线免费观看| 亚洲 日韩 色 图网站|