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之后,都產生下面的錯誤
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) |
編輯 收藏