
2006年11月7日
在 Windows 上離線安裝 Chrome
https://support.google.com/chrome/answer/126299?hl=zh-Hans
這里鏈接默認是32位的。
針對所有用戶安裝版64位完整鏈接為:
https://www.google.com/chrome/browser/desktop/index.html?system=true&standalone=1&platform=win64
Chorome快捷方式+SwitchyOmega
/Files/rox/chrome.7z
posted @
2016-05-21 20:52 rox 閱讀(425) |
評論 (0) |
編輯 收藏
參加了國內某知名快遞公司的面試,一面就放棄了
自己公司的一個HR經理也曾經教過要換位思考,現在簡單的介紹一下面試過程中的一些感想。
1. HR打電話的時候,問周六有沒有空?
問題:雖然是專場,但這是很多HR應該規避的,應該盡量說明這是公司的安排,這種周六加班不是企業文化。
建議:曾經遇到過的幾個HR都非常注意這一點,特別說明晚上和周末一般都不加班,雖然說HR多半都是騙子,呵呵!
2. 回答都有空,便安排在早晨的第二個時間段
問題:實際上安排了將近50人在早晨面試,可想而知,是面不完的。
現場有點貌似華為面試,只不過不是在食堂:D
11點左右HR一面,20分鐘,到了12點鐘,組織方開始發餐票,到隔壁快餐店用餐。
沒拿餐票,直接回家了。
建議:組織安排上,還算OK,但稍微比較有經驗和有能力的HR,應該不會做這樣的安排。
即使是新項目啟動,采取這樣方式海招,風險比較大,應該是一個相對長期的過程,可以把招聘過程安排的相對寬松點。
在公司,自己也做技術面試,一般都會面半個小時到一個小時左右,連續面了兩個以上,精力和質量就會下降的很厲害。
3. 一面HR的內容,2分鐘介紹自己,同時看表,增加面試著的壓力。再問了工作和生活上的問題,還有技術問題!
問題:技術問題,比較有意思。
HR問,最近一年,業界都有那些新技術,回答了Android和iPhone,猜他是想問云計算(面試前調研過,該公司有一直想進電商行業)。
然后,HR再問Java方面有啥新技術,特意回答沒啥新的啊。這個后來被自己朋友批,不知道反問他么!
這時,HR就做出了一個重大的決定,準備開始對我的職位進行降級。問有沒有意向,直接否掉。
然后就說,各個公司的職位要求不一樣,該公司要求更高點,就結束談話,等待下一輪面試。
40分鐘后,開始發餐票。自己什么都沒說就走了,這個其實也是特意做的,后面會有解釋。
建議:面試20多分鐘,都是HR對面試者進行提問和定位,不留給對方了解相關項目的機會,這個很少見。
另外,很多初級HR只對項目里面說需要技術單詞比較敏感,往往會在面試的時候,就急于問,好進行準確定位。
但又怕問了以后會讓面試者對后面的技術面試有所準備,技巧啊,技巧啊!
另外:解釋一下自己沒領餐票直接走人,其實想看一下組織方會有哪些動作。
1. 發餐票的HR妹妹,啥也沒問,直接放走。一個已經等了將近三個小時面試者,卻不愿意再多等一個小時,沒有任何疑問。這種情況發生在自己公司,會被HR經理罵的。呵呵!
2. 負責一面的HR,大約在一個小時后的確給電話了,你在哪?自己說回家了,然后HR就說那下次有機會再聯系吧,就掛了。看來他真的很忙。呵呵!
也參與過自己公司的很多面試,接觸HR比較多,從HR經理那里也學到了不少東西,包括壓力測試(其實,面試者也可以多給HR一些壓力測試)。
感覺這個非常有意思,比和搞技術的打交道有意思。
把自己面試時的一些想法和技巧列出來。
可能還是太片面,而且帶著搞技術的那種“壞味道”。
只是希望能為大家提供一點點參考。
posted @
2013-07-28 11:53 rox 閱讀(216) |
評論 (0) |
編輯 收藏
前一家公司經理的思想是,設計好的系統是絕對不會出錯的。需要容錯,絕對是沒設計好。
這個似乎有道理,但完全不考慮,真正實際環境,是涉及到三方交易結算的的東西啊,真替他捏把汗。
現在的項目,一堆Oracle、騰訊、華為、證券摸爬滾打出來的技術精英,還包括一個純servlet+jdbc開源項目的作者湊一堆。
不懂Tomcat下為什么要配置filter轉碼,把這個和虛擬機編碼機制混為一談,最后感慨一句weblogic就沒這問題。
也有不懂啥是樂觀鎖的。
面試的時候,對集合類型及操作考的頭頭是道,但項目里,一個都沒用到。
項目中遇到問題,往往就是解決、解決+解決,不究其原理。
感覺自己像在做硬件拼裝的富士康。
牢騷兩句。
posted @
2013-07-21 23:19 rox 閱讀(297) |
評論 (0) |
編輯 收藏
安裝64位Ubuntu,方法其實解決方案很簡單,不用下載任何的ISO,只要去下載最新的64位包,見下面資源。
拷貝wubi.exe和下載好的ubuntu-12.04-wubi-amd64.tar.xz都拷貝到C盤
根目錄下,然后執行下面命令即可。
1 wubi.exe --dimagepath=c:\ubuntu-12.04-wubi-amd64.tar.xz
資源:
What is ubuntu-11.10-wubi-amd64.tar.xz ? wubi安裝Ubuntu11.**正確方法及無限等待下載amd64.tar.xz解決方法
posted @
2012-07-12 13:26 rox 閱讀(6543) |
評論 (4) |
編輯 收藏
參考了這篇the script is not working for any mvc framework中uri的回復,結合當前Uploadify的v2.1.4版,netbean 6.9.1下編寫調試。
● 新建grails工程,名為test,并把Uploadify-v2.1.4.zip解壓到web-app\uploadify目錄下。
● 新建grails控制器PictureController,代碼如下
package com.test
class PictureController {
def index = { redirect(action: "upload") }
def upload = { }
def savePicture = {
def files = request.getFileMap();
def path = "c:/test/" + files.get("Filedata").getOriginalFilename();
files.get("Filedata").transferTo( new File(path))
render (view:'upload')
}
}
|
● 新建grails視圖upload.gsp,代碼如下,注意粗體部分的上下文路徑
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>upload file sample</title>
<link rel="stylesheet" href="/test/uploadify/uploadify.css" type="text/css" />
<script type="text/javascript" src="/test/uploadify/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="/test/uploadify/swfobject.js"></script>
<script type="text/javascript" src="/test/uploadify/jquery.uploadify.v2.1.4.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$("#fileUpload").uploadify({
'uploader': '/test/uploadify/uploadify.swf',
'cancelImg': '/test/uploadify/cancel.png',
'script': '/test/picture/savePicture',
'folder': 'files',
'multi': true,
'buttonText': 'add',
'displayData': 'speed',
'simUploadLimit': 2
});
});
</script>
</head>
<body>
<hr width=100% size="1" color="" align="center">
<h2>Multiple File Upload</h2>
<p>checkScript, buttonText, simulataneous upload limit</p>
<div id="fileUpload">You have a problem with your javascript</div>
<a href="javascript:$('#fileUpload').uploadifyUpload()">Start Upload</a> | <a href="javascript:$('#fileUpload').uploadifyClearQueue()">Clear Queue</a>
<p></p>
</body>
</html>
|
● 運行工程,訪問http://localhost:8080/test/picture/upload
posted @
2010-12-06 15:38 rox 閱讀(1082) |
評論 (2) |
編輯 收藏
公司安排研究耶魯CAS單點登錄的實現,并研究了一下它的代理協議,看了N多文檔和代碼,才大概明白是怎么回事。
為了方便有興趣的朋友學習,去掉了HTTPS的加密,源代碼、webapp包和配置文件都有。
本來打算針對這個寫篇文章,不想寫了。
另:
- 針對cas-server-2.0.12和cas-client-2.0.11的
- ppt中部分內容是翻譯+自己理解的,中英文水平均有限,請諒解。
下載地址:
posted @
2010-04-14 17:41 rox 閱讀(608) |
評論 (2) |
編輯 收藏
posted @
2010-02-26 16:12 rox 閱讀(626) |
評論 (0) |
編輯 收藏
原帖地址:java開發的亂碼問題
第一,存文件必須以一種編碼存;讀文件也必須以一種編碼讀,如不特別設置,去系統默認的編碼,中文windows為GBK編碼。
從.java->.class過程是,先編寫.java文件并按莫種編碼方式保存,然后用javac方法編譯此文件,注意如.java沒按系統默認編碼保存則要帶encoding參數指明實際編碼,否則出錯,生成的.class文件存為系統默認編碼。
從.jsp->.java->.class,先存為某種編碼的.jsp文件,然后tomcat根據pageEncoding讀取并轉化為servlet存為系統默認編碼,然后同上面.java->.class過程。
第二,IDE的encoding為對系統下文件打開的解碼方式或保存的編碼方式。特例:如果.jsp文件有<%@ page language="java" pageEncoding="UTF-8"%>,則eclipse會自動存為UTF-8方式,不管eclipse的encoding是什么,這也是eclipse的聰明之處。
第三,
pageEncoding="UTF-8"表示此文件的編碼方式,必須與此文件存儲方式一致(所以eclipse會首選根據它來存文件),tomcat根據這個來讀此.jsp文件并編譯為servlet。
contentType="text/html;charset=UTF-8"表示當瀏覽器得到此文件時以什么方式解碼。例如:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=iso8859-1"%>
<html>
<head>
<title>test</title>
</head>
<body>
我是個好人
</body>
</html>
會產生亂碼,因為存為UTF-8的文件被解碼為iso8859-1,這樣 如有中文肯定出亂碼。
至此,頁面應為:
<%@ page language="java" pageEncoding="UTF-8"%>
<%@ page contentType="text/html;charset=UTF-8"%>
<html>
<head>
<title>中文問題</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
</html>
第四,
request.setCharacterEncoding("UTF-8")是把提交內容的字符集設為UTF-8
response.setCharacterEncoding("UTF-8")可以把頁面中的<%@ page contentType="text/html;charset=iso8859-1"%>換為charset=UTF-8,是給告訴瀏覽器我這個文件的編碼方式。
第五,表單提交:無論何種表單提交都可以在后臺的java文件中通過String des = new String(s.getBytes("iso8859-1"),"UTF-8");來轉換成你想要的UTF-8編碼方式。但如果每處都加詞句太麻煩,故分post和get兩種方式區分提交(tomcat5以后分開處理,之前處理方式一樣,即都可以用request.setCharacterEncoding("UTF-8")方法處理,不過tomcat5以后get提交方法用此語句無效)。
1,post提交的數據:
程序加上org.springframework.web.filter.CharacterEncodingFilter過濾器.
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.html</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
</filter-mapping>
因為規范要求瀏覽器提交數據都要用utf8編碼,所以這里設置編碼方式為UTF8.
特別注意:
a,這個過濾器只是簡單的調用:request.setCharacterEncoding(this.encoding);
在這個語句之前不能調用任何的request.getParameter()方法,否則會設置tomcat的缺省字符集為"ISO-8859-1",并且使setCharacterEncoding的調用失效.所以在這個過濾器之前的過濾器中不能有對getParameter這類方法的調用,比較安全的做法就是把這個過濾器盡量靠前放.
b,在server.xml中不能加上<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
這個value也設置tomcat的缺省字符集為"ISO-8859-1",使setCharacterEncoding的調用失效.可能其他的value也有這個問題,我沒有測試過.
如果要觀察http請求參數,可以考慮用過濾器或者其他工具,例如ethereal(http://www.ethereal.com/)
2,get提交的數據:
兩種情況:
a,如果從地址欄直接輸入漢字,則一般編碼為"GBK",需要用
new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")
取出
b,如果是頁面超連接連接中帶的漢字,則編碼根據頁面編碼的不同而不同,如果頁面的
content="text/html; charset=utf-8",則在tomcat/conf/server.xml中的配置文件中:
<!-- Define a non-SSL Coyote HTTP/1.1 Connector on port 8080 -->
<Connector port="8080"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
debug="0" connectionTimeout="20000" useBodyEncodingForURI="true"
disableUploadTimeout="true" />
加上:useBodyEncodingForURI="true"即可正常使用getParameter取出正確內容.
如果content="text/html; charset=GBK",需用
new String(request.getParameter("something").getBytes("ISO-8859-1"),"GBK")
取出,其他情況類似.
總結:
1,所有頁面使用utf8編碼,
2,服務器加上過濾器,
3,server.xml中不要使用
<Valve className="org.apache.catalina.valves.RequestDumperValve"/>
4,server.xml文件加上useBodyEncodingForURI="true"
這樣應該可以搞定大多數前臺的中文問題.至于地址欄輸入中文,不支持也罷,一般的程序很少要求
從這里輸入.
第六,連接數據庫
1、mysql配置文件:
修改mysql在windowsmy.ini里default-character-set=utf-8
2、mysql里數據庫和表也都設為utf8_unicode_ci
3、數據庫連結:jdbc:mysql://localhost/mydb?useUnicode=true&characterEncoding=utf-8
注意,關鍵就在于此:此句中間是'&'不是'&'這是因為數據庫連結時,在.jsp和.java文件中應該用&號,而XML文件中需要用&
posted @
2010-01-05 08:43 rox 閱讀(439) |
評論 (0) |
編輯 收藏
原帖:http://chenyaqiong81081.blog.163.com/blog/static/44622594200791235256255/
一、Runtime.getRuntime().exec()執行命令情況:
Runtime.getRuntime().exec("cmd /c your command")//2000
Runtime.getRuntime().exec("command /c your command")//98
Runtime.getRuntime().exec("sh/ your command")//linux
二、執行.sh文件的情況:
1、把命令寫成a.sh ;執行命令的時候
Process child = Runtime.getRuntime().exec("bash a.sh,null,new File("http://usr/local/mysql/bin/"));
child.waitFor();
........
2、Process child = Runtime.getRuntime().
exec(new String[] {"/bin/sh","-c","mysqldump -u root -p7788919 axtic_cg" },
null,
new File("/usr/local/mysql/bin/"));
child.waitFor();
注:waitFor()等待操作完成
posted @
2009-12-29 17:10 rox 閱讀(2863) |
評論 (0) |
編輯 收藏
摘要: Java多層目錄打包和解壓代碼(apache commons compress, io, lang)
package zip;
import java.io.BufferedOutputStream;
...
閱讀全文
posted @
2009-11-12 22:53 rox 閱讀(3996) |
評論 (1) |
編輯 收藏
Windows XP增強dos命令
命令:DIR,列文件、目錄
增加參數:/-C
參數說明:DIR列文件、目錄時顯示的文件大小,其數值以千為單位進行分隔,使用此參數即“DIR/-C”將取消顯示中的分隔符,以滿足部分人的視覺習慣。
增加參數:/Q
參數說明:Windows是多用戶操作系統,使用此參數即“DIR /Q”列文件、目錄時,將顯示出文件、目錄的用戶屬性。
增加參數:/T:C、/T:A、/T:W
參數說明:使用此參數即“DIR/T:C”、“DIR/T:A”、“DIR/T:W”分別顯示文件、目錄的創建時間、上次訪問時間和上次修改時間。
增加參數:/X
參數說明:使用此參數即“DIR/X”列文件、目錄時,會對長文件名同時顯示“8.3”格式的文件名。
命令:CD,改變目錄
增加參數:/D
參數說明:此參數的作用是快速改變當前目錄,比如當前目錄是C:\Windows,使用命令“CD/D E:\Tools”可快速切換到E:\Tools目錄下。注:只有在Win XP的“運行”文本框中輸入“CMD”得到的DOS窗口中才能使用此參數。
命令:MD,建立目錄
功能說明:此命令并未增加參數,但是增強了功能,它可一次建立多級子目錄, 例如使用命令“MD AA\BB\CC\DD”將一次性創建AA、BB、CC、DD四級子目錄。而在老版本的DOS中,若不存在AA子目錄,便無法直接建立AA下的BB等深層子目錄。
命令:RD,刪除目錄
增加參數:/S
參數說明:使用此參數即“RD/S”用于刪除目錄樹,即刪除目錄及目錄下的所有子目錄和文件,相當于以前版本中的DELTREE命令。
增加參數:/Q
參數說明:使用上面的/S參數刪除目錄樹時,系統會要求用戶確認是否真的要刪除。若同時使用/Q參數即“RD/S /Q”,在進行刪除操作時將取消確認,相當于DELTREE命令的/Y參數。
命令:DEL,刪除文件或目錄
增加參數:/F
參數說明:使用此參數即“DEL/F”可刪除只讀文件。
增加參數:/S、/Q
參數說明:使用此參數即“DEL/S”作用與“RD/S”完全相同,即刪除目錄及目錄下的所有子目錄和文件。同時使用參數/Q,可取消刪除操作時的系統確認。
增加參數:/A
參數說明:刪除指定屬性或指定屬性以外的文件,/AR、/AH、/AS、/AA分別表示刪除只讀、隱藏、系統、存檔文件,/A-R、/A-H、/A-S、/A-A表示刪除除只讀、隱藏、系統、存檔以外的文件。例如“DEL/AR *.*”表示刪除當前目錄下所有只讀文件,“DEL/A-S *.*”表示刪除當前目錄下除系統文件以外的所有文件。
命令:ATTRIB,更改文件或目錄的屬性
增加參數:/D
參數說明:在Win XP中我們不能把文件或文件夾設置為系統屬性,只能設為只讀、隱藏或存檔屬性。而帶參數/D使用ATTRIB命令可以對文件的所有屬性進行設定,設定時必須與參數/S同時使用。例如“ATTRIB /S /D +S D:\Study”,作用是將D:\Study文件夾設置為系統文件夾。
命令:Format,格式化磁盤
增加參數:/FS:filessystem
參數說明:按指定文件系統類型(FAT、FAT32、NTFS)格式化磁盤,例如“Format /FS:NTFS”。
命令:DATE、TIME,顯示系統日期和時間
增加參數:/T
參數說明:使用此參數即“DATE/T”、“TIME/T”將只顯示當前日期和時間,而不必輸入新日期和時間
Win2000/XP應用之奇技酷招
每個Windows用戶都希望Windows的啟動速度越快越好,不過,如果你想讓Windows啟動速度更快些,還要掌握一些加速Windows啟動的獨門秘技!
1.不容忽視的磁盤IDE通道
Windows XP中有一個非常影響啟動速度的設置,那就是磁盤IDE通道。一般來說,Windows XP用戶不需要安裝主板的IDE驅動或補丁程序,ULTRA DMA功能就已經打開了。也正因為如此,絕大多數用戶會讓IDE通道處于自動狀態,但這會導致Windows XP啟動變慢——因為主板可以連接四個IDE設備,但大多數電腦只有兩個IDE設備,即硬盤和光驅。少數人可能有單硬盤、雙光驅(DVD和刻錄機)或雙硬盤、單光驅,即便這樣也只有三個IDE設備,所以一般都有1~2個IDE通道處于空閑狀態。此時,你應該把并不存在的IDE設備設置為“無”,而不是“自動檢測”。
提示:設置IDE通道的方法是:單擊“開始→控制面板”,雙擊“系統”,切換到“硬件”選項卡,單擊“設備管理器”,再雙擊“IDE ATA/ATAPI控制器”。雙擊下面的“主要IDE通道”或“次要IDE通道”。我們可以看到,“設備0”下面的“設備類型”不可選,表明該IDE通道目前已被使用。“設備1”下面的“設備類型”可選,如果你近期內不再添加新的IDE設備,可以將“設備類型”設置為“無”。
2.禁用服務和啟用Power User
Windows 2000/XP的啟動速度要比Windows 9x/Me慢,眾多的服務是重要因素之一,因此普通用戶禁用一些無用的服務,對啟動速度也有很大幫助:
alerter (用戶不在局域網并且不需要管理警報)
clipbook (用戶不需要查看遠程剪貼簿的剪貼頁面)
distributed link tracking client (用戶不使用NTFS分區并且沒有連入局域網)
distributed transaction coordinator (不需要同時處理多個數據庫或文件系統)
fax service (不需要發送或接收傳真)
ftp publishing service(你的電腦不做為FTP服務器使用)
iis admin service (你的電腦不做為Web服務器使用)
另外,建議大家創建一個Power User用戶,平時用它來登錄Windows 2000/XP,因為相比管理員身份,它啟動的服務更少同時也更加安全。
3.及時清理日志文件
Windows 2000/XP的日志文件比較容易被用戶忽視。其實當我們每次開關機、運行程序、系統報錯時,這些信息都會被記錄下來,保存在日志文件中。但日志文件會隨著時間的增長越來越大,從而影響了系統啟動速度。我們可以自己指定日志文件的大小及處理方式:
進入“開始→設置→控制面板→管理工具”,雙擊“事件查看器”或是單擊“開始→運行”,輸入“eventvwr.msc”后回車,即可打開“事件查看器”,在右側窗口中可看到應用程序日志、安全日志和系統日志。在任意一種日志上面右擊并選擇“屬性”,就可以在如圖所示的對話框中為日志文件設定最大值,還可以選擇當日志滿了以后的處理方式——一般來說讓它自動覆蓋一段時間以前的舊日志,這樣日志文件就永遠不會超出指定大小。單擊“篩選器”選項卡可以指定需要寫入日志文件的事件類型。
設置“系統日志”的屬性
4.借花獻佛加快Windows 2000 啟動
Windows XP相比Windows 2000在很多方面進行了優化改進,因而啟動速度更快,那么能不能讓Windows 2000也可以享受這樣的好處呢?其實,只要找到Windows XP相應語言版本文件,然后替換Windows 2000的相應文件即可。這兩個文件為NTLDR、NTDETECT.COM,它們都在系統分區的根目錄下。當然,為了防止Windows 2000出錯,建議用戶在替換這兩個文件前備份Windows 2000原有的同名文件。
5.讓藍色滾動條只滾動一圈
這是一個適用于Windows XP的秘技。打開“注冊表編輯器”,依次展開[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\PrefetchParameters]分支,然后雙擊右側窗口中的DWORD值“EnablePrefetcher”,將其值由“3” 改為“1”。退出注冊表編輯器并重啟電腦,你會發現進入Windows XP時藍色滾動條的滾動時間明顯減少了!
posted @
2009-09-23 09:26 rox 閱讀(354) |
評論 (0) |
編輯 收藏
Java解壓多重zip壓縮包
-- org.apache.commons.compress.archivers.zip.ZipFile結合ZipArchiveInputStream來實現
針對前一篇文章《Java打多重zip壓縮包--
ByteArrayOutputStream結合org.apache.commons.compress來實現》打包后的zip文件如何解壓的問題。
部分代碼如下:
File f = new
File("c:/test.zip");
ZipFile zf = new ZipFile(f,
"gbk");
File folder = new
File("c:/test");
if (!folder.exists()) {
folder.mkdirs();
}
for
(Enumeration<ZipArchiveEntry> files = zf.getEntries();
files.hasMoreElements();) {
ZipArchiveEntry zae =
files.nextElement();
String zipname =
zae.getName();
if
(zipname.endsWith(".zip")) {
String
innerzip = StringUtils.removeEnd(zipname, ".zip");
File
innerfolder = new File(folder + File.separator + innerzip);
if
(!innerfolder.exists()) {
innerfolder.mkdirs();
}
ZipArchiveInputStream zais = new ZipArchiveInputStream(zf.getInputStream(zae),
"GBK", true);
FileOutputStream fos = null;
ZipArchiveEntry innerzae = null;
while
((innerzae = zais.getNextZipEntry()) != null) {
fos = new FileOutputStream(folder + File.separator + innerzip +
File.separator + innerzae.getName());
IOUtils.copy(zais, fos);
}
zais.close();
fos.flush();
fos.close();
} else {
ZipArchiveEntry packinfo = zf.getEntry(zipname);
String
filename = folder + File.separator + zipname;
FileOutputStream fos = new FileOutputStream(filename);
InputStream
is = zf.getInputStream(packinfo);
IOUtils.copy(is, fos);
is.close();
fos.flush();
fos.close();
}
}
zf.close();
|
解包后效果如下圖:
參考資料:
1、《Java打多重zip壓縮包 --
ByteArrayOutputStream結合org.apache.commons.compress來實現》
http://docs.google.com/View?id=ajfmzbdvh8wz_38ftxv59f6
2、Apache Commons Compress
http://commons.apache.org/compress/
3、本文地址
http://docs.google.com/View?id=ajfmzbdvh8wz_44cbjdbrfn
posted @
2009-07-28 19:02 rox 閱讀(6664) |
評論 (0) |
編輯 收藏
Java打多重zip壓縮包
-- ByteArrayOutputStream結合org.apache.commons.compress來實現
也就是很多個zip文件,但是打包的時候,部分要先集中到一個zip文件后,再寫入總的zip文件。
可以采用臨時文件夾的方式來解決,下面也是一種解決方法,部分代碼如下:
File f1 = new
File("C:/boot.ini");
File f2 = new File("C:/NTDETECT.COM");
final ByteArrayOutputStream baos =
new ByteArrayOutputStream() ;
//changed @ 2009年7月21日8:37:41
//ArchiveOutputStream ostemp = new
ArchiveStreamFactory().createArchiveOutputStream("zip", baos);
ZipArchiveOutputStream
ostemp = new ZipArchiveOutputStream(baos);
ostemp.setEncoding("GBK");
ostemp.putArchiveEntry(new
ZipArchiveEntry(f1.getName()));
IOUtils.copy(new
FileInputStream(f1), ostemp);
ostemp.closeArchiveEntry();
ostemp.putArchiveEntry(new
ZipArchiveEntry(f2.getName()));
IOUtils.copy(new
FileInputStream(f2), ostemp);
ostemp.closeArchiveEntry();
ostemp.finish();
ostemp.close();
final OutputStream out = new
FileOutputStream("c:/test.zip");
ArchiveOutputStream os = new
ArchiveStreamFactory().createArchiveOutputStream("zip", out);
os.putArchiveEntry(new
ZipArchiveEntry("打包.zip"));
baos.writeTo(os);
os.closeArchiveEntry();
baos.close();
os.finish();
os.close();
|
[changed @ 2009年7月21日8:37:41]
當初查資料時,就知道有個亂碼錯誤,自己從沒發現過,后來發現是因為winrar 3.8已經解決了這個問題。
但是為了和其他兼容,修改了代碼。
打包后效果如下圖:
參考資料:
1、Commons Compress
http://labs.xiaonei.com/apache-mirror/commons/compress/binaries/commons-compress-1.0-bin.tar.gz
2、java.io.ByteArrayOutputStream
http://java.sun.com/javase/6/docs/api/java/io/ByteArrayOutputStream.html
3、本文地址
http://docs.google.com/View?id=ajfmzbdvh8wz_38ftxv59f6
posted @
2009-07-02 17:04 rox 閱讀(1778) |
評論 (0) |
編輯 收藏
Apache Solr集成至Tomcat
原有系統已經開發,框架以SSH為基礎,頁面編碼GBK,數據庫為oracle,容器為tomcat6,需要整合全文檢索,下面只是一個簡單的整合測試。
1、嵌入Tomcat:
解壓 apache-solr-1.3.0.tgz,拷貝apache-solr-1.3.0\example\example-DIH\solr目錄到Tomcat的安裝目錄后,修改solr目錄中的solr.xml,屏蔽rss部分的配置,內容如下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<solr sharedLib="lib" persistent="true">
<cores adminPath="/admin/cores">
<core default="true" instanceDir="db" name="db"></core>
<!--
<core default="false" instanceDir="rss" name="rss"></core>
-->
</cores>
</solr>
|
- 刪除Tomcat\solr\rss目錄
- Tomcat\solr\db\lib目錄下添加必要jar:ojdbc14.jar、slf4j-jdk14-1.5.5.jar、slf4j-api-1.5.5.jar、solr-dataimporthandler-1.4-SNAPSHOT.jar
- 拷貝apache-solr-1.3.0\example\webapps\solr.war到Tomcat\webapps目錄下。
- 創建Tomcat\conf\Catalina\localhost\solr.xml,內容如下:
<Context docBase="${catalina.home}/webapps/solr.war" debug="0" crossContext="true" >
<Environment name="solr/home" type="java.lang.String" value="${catalina.home}/solr" override="true" />
</Context>
|
- 修改Tomcat\conf\server.xml,添加一個端口為8983的Connector,內容如下:
<Connector port="8983" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
|
2、配置DataImportHandler:
change @ 2009年7月1日10:19:57
主要修改Tomcat\solr\db\conf\db-data-config.xml、Tomcat\solr\db\conf\schema.xml、Tomcat\solr\db\conf\solrconfig.xml,三個配置文件:
<dataConfig>
<dataSource driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:orcl"
user="solr" password="solr" batchSize="50"/>
<document name="contents" >
<entity name="content" pk="ID"
query="select * from CONTENT"
deltaQuery="select ID from CONTENT where to_char(PUBTIME,'yyyy-mm-dd hh24:mi:ss') > '${dataimporter.last_index_time}'"
transformer="ClobTransformer">
<field name="title" column="TITLE" />
<field column="CONTENT" clob="true"/>
<field name="pubtime" column="PUBTIME" />
</entity>
</document>
</dataConfig>
|
在types標簽最后,追加fieldtype,名稱為text_cjk,中日韓分詞分析器;
......
<fieldtype name="text_cjk" class="solr.TextField">
<analyzer class="org.apache.lucene.analysis.cjk.CJKAnalyzer"/>
</fieldtype>
</types>
|
屏蔽或清除<fields></fields>中的全部代碼,并添加如下內容:
<fields>
<field name="id" type="slong" indexed="true" stored="true" required="true" />
<field name="title" type="text_cjk" indexed="true" stored="false"/>
<field name="content" type="text_cjk" indexed="true" stored="true"/>
<field name="pubtime" type="date" indexed="true" stored="true"/>
<field name="searchtext" type="text_cjk" indexed="true" stored="false" multiValued="true"/>
</fields>
|
修改默認唯一索引為先前定義的id:
<uniqueKey>id</uniqueKey>
|
修改默認搜索字段為先前定義的searchtext,并將要搜索的title和content都拷貝到searchtext中,方便統一檢索:
......
<defaultSearchField>searchtext</defaultSearchField>
......
<copyField source="title" dest="searchtext"/>
<copyField source="content" dest="searchtext"/>
......
|
add @ 2009年7月1日10:19:57
修改<dataDir></dataDir>標簽中的檢索數據存放路徑。內容如下:
<dataDir>${catalina.home}/solr/db/data</dataDir>
|
3、導入和查詢:
- 完全導入:
http://localhost:8983/solr/db/dataimport?command=full-import
- 增量導入:
http://localhost:8983/solr/db/dataimport?command=delta-import
- 查詢
http://localhost:8983/solr
點擊db,進入一個搜索頁面,填入如下內容:
pubtime:[2007-11-16T00:00:00Z TO 2008-11-28T00:00:00Z]
AND
工作;
pubtime desc
|
點擊搜索,測試。
4、xml解析:
一個簡單solr查詢結果的輔助搜索類,內容如下:
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.apache.commons.lang.time.DateUtils;
public class SolrUtils {
private List<Node> docs = new ArrayList<Node>();
private Number numFound = 0;
private Document doc;
public List<Node> getDocs() {
return docs;
}
public Number getNumFound() {
return numFound;
}
@SuppressWarnings("unchecked")
public SolrUtils(String urlString) {
doc = documentFromURL(urlString);
if (doc != null ) {
docs = (List<Node>)doc.selectNodes("/response/result/doc");
numFound = doc.numberValueOf("/response/result/@numFound");
}
}
public Document documentFromURL(String urlString){
try {
SAXReader reader = new SAXReader();
URL url = new URL(urlString);
doc = reader.read(url);
return doc;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String valueOf(Object obj, String name){
return valueOf(obj, "str", name);
}
public static Date dateValueOf(Object obj, String name){
String[] parsePatterns = new String[]{
"yyyy-MM-dd'T'HH:mm:ss'Z'",
"yyyy-MM-dd'T'HH:mm:ss.S'Z'",
"yyyy-MM-dd'T'HH:mm:ss.SS'Z'",
"yyyy-MM-dd'T'HH:mm:ss.SSS'Z'",
};
try {
return DateUtils.parseDate(valueOf(obj, "date", name), parsePatterns);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String valueOf(Object obj, String type, String name){
String path = "./" + type + "[@name='" + name + "']";
if (obj instanceof Node) {
Node n = (Node)obj;
return n.valueOf(path);
}
return "";
}
public static Number numberValueOf(Object obj, String type, String name){
String path = "./" + type + "[@name='" + name + "']";
if (obj instanceof Node) {
Node n = (Node)obj;
return n.numberValueOf(path);
}
return null;
}
public static void main(String[] args) throws Exception {
String url = "http://localhost:8983/solr/db/select/?q=*%3A*&version=2.2&start=0&rows=10&indent=on";
SolrUtils su = new SolrUtils(url);
System.out.println(su.getNumFound());
System.out.println(su.getDocs().size());
for (Node doc : su.getDocs()) {
System.out.println(valueOf(doc, "id"));
System.out.println(valueOf(doc, "title"));
System.out.println(dateValueOf(doc, "pubtime"));
}
}
}
|
參考資料:
1、Apache Solr 的新特性
http://www.ibm.com/developerworks/cn/java/j-solr-update/
2、Solr開發經驗[原]
http://www.jinsehupan.com/blog/?p=25
3、slf4j-jdk14-1.5.5.jar、slf4j-api-1.5.5.jar、solr-dataimporthandler-1.4-SNAPSHOT.jar
https://svn.apache.org/repos/asf/lucene/solr/trunk/lib/slf4j-jdk14-1.5.5.jar
https://svn.apache.org/repos/asf/lucene/solr/trunk/lib/slf4j-api-1.5.5.jar
http://people.apache.org/repo/m2-snapshot-repository/org/apache/solr/solr-dataimporthandler/1.4-SNAPSHOT/solr-dataimporthandler-1.4-SNAPSHOT.jar
4、本文地址
http://docs.google.com/View?id=ajfmzbdvh8wz_37f4jv46gb
posted @
2009-06-28 01:19 rox 閱讀(3113) |
評論 (0) |
編輯 收藏
原帖:http://space.itpub.net/29987/viewspace-51921
有的時候我們看到多個異常的進程需要被kill掉,如果一個一個的去做的話,覺得實在是太慢,下面這里提供有兩種方法可以實現對有規律的結果做這個kill的動作。
1.
ps -ef | grep $1| awk '{print $2}' | xargs kill -9
2.
for i in `ps -ef|grep $1|awk '{print $2 }'`
do
kill -9 $i
done
另可以把ps語句再增加些參數如下:
ps -ef|grep java| grep -v grep| grep $1| awk '{print $2}'
posted @
2009-01-07 09:42 rox 閱讀(647) |
評論 (0) |
編輯 收藏
摘要: Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
--> 1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtm...
閱讀全文
posted @
2008-12-30 00:08 rox 閱讀(20158) |
評論 (2) |
編輯 收藏
其實,就是類似原來使用磁盤啟動然后手動安裝Linux。
一、必須要大于光盤鏡像images目錄中的diskboot.img文件,以rhel5為例,要大于12M,這個應該不難。
二、下載dd for windows,網址:http://www.chrysocome.net/dd
三、C:\>dd if=c:\diskboot.img of=\\.\h: bs=1M --size --progress
四、內網發布一個HTTP目錄,把DVD光盤鏡像中的全部文件放到發布目錄中。
五、設置U盤啟動,進入Linux安裝界面,F2,然后輸入linux askmethod,配置IP,使用HTTP,訪問內網的安裝目錄即可。
備注,參考這篇文章
http://hi.baidu.com/evanlei/blog/item/3c3135103f0244ffc3ce79aa.html
WinImage寫入到U盤,不能正常啟動。以我的32M為例,使用WinImage寫入后,仍然為32M。
但使用dd for windows,就只有12M,其他的空間消失了,卻能夠正常啟動,也使用1GB卡+讀卡器成功啟動。
如果容量是4G或者8G,完全可以使用UltraISO,把整個文件寫入到U盤中啟動直接安裝,不過還沒有測試過。
posted @
2008-12-18 16:07 rox 閱讀(691) |
評論 (0) |
編輯 收藏
首先拷貝安裝文件到服務器的指定目錄/data/archive/
mkisofs -o archive.iso -J -r -v -V archive /data/archive/
移動文件到/data/archive/目錄
mv ./archive.iso /data/archive/
開始刻錄
cdrecord -v -eject speed=16 dev=/dev/cdrom /data/archive/archive.iso
完畢后,刪除目錄
rm -rf /data/archive/
參考資料:
1、在 Linux 上燒錄 CD - 命令行上的 mkisofs 和 cdrecord 使這一切成為可能
http://www.ibm.com/developerworks/cn/linux/l-cdburn/index.html
2、 Linux下刻錄CD-R:cdrecord 和cdparanoia(五)
http://www.networkdictionary.cn/software/Linux610.php
posted @
2008-06-24 11:11 rox 閱讀(500) |
評論 (0) |
編輯 收藏
摘要: 1、
1cd /data/
2tar -xzf mysql-5.0.37-linux-i686.tar.gz
3cd ./mysql-5.0.37-linux-i686
4cat ./INSTALL-BINARY
參考以下說明:
1shell> groupadd...
閱讀全文
posted @
2008-06-10 19:33 rox 閱讀(921) |
評論 (1) |
編輯 收藏
1、同步系統時間(可以用的)
1
/usr/sbin/ntpdate time.windows.com
2、查詢80端口被哪些程序占用
1
netstat -antp|grep 80
3、查看目錄下各自磁盤占用空間
1
du --max-depth=1 -h /appsvr/xjjhr_tomcat-5.5.20/jobhn2/ROOT
4、tar打包和解壓
1
tar -cvfz ***.tar /sourcefolder
2
tar -xvfz ***.tar -C targetfolder
5、編輯iptables
1
vi etc/sysconfig/iptables
6、rpm安裝、卸載、列表和查詢mysql安裝
1
rpm -ivh
2
rpm -ev --nodeps
3
rpm -ql xxx.rpm
4
rpm -qa|grep -i mysql
7、查看redhat版本
1
cat /etc/redhat_release
8、查看cpu速度
1
cat /proc/cpuinfo
9、刪除/data/projects/myproject/目錄(及其子目錄下)的所有.svn目錄
1
find /data/projects/myproject/ -name .svn |xargs rm -rf
10、修改網卡IP,并重啟
1
vi /etc/sysconfig/network-scripts/ifcfg-eth0
2
service network restart
11、查看tomcat日志文件的最后200行
1
tail -n 200 /apache_tomcat-5.5.20/logs/catalina.out
12、修改當前默認語言
1
export LANG=en_US
2
export LC_ALL=en_US
3
修改系統的:
4
cat ~/.bash_profile
13、安裝和卸載U盤
1
fdisk -l
2
mount /dev/sdc1 /mnt
3
umount /mnt
4
umount -l /mnt (等空閑后卸載)
14、修改系統啟動參數
1 vi ~/.bash_profile
2 vi /etc/rc.local
3 vi /etc/profile
4 修改后即時生效
5 . ~/.bash_profile
6 . /etc/rc.local
7 . /etc/profile
15、查看8100端口的訪問統計
1 netstat -na |grep 8100 |wc -l
2 netstat -tunlap|grep 80
16、修改系統時間
1 date -s "11/20/2003 12:48:00"
2 date +%Y%m%d%T -s "20081225 10:05:00"
17、查看系統IO瓶頸
1 sudo iotop -Pm /
posted @
2008-06-04 11:27 rox 閱讀(391) |
評論 (1) |
編輯 收藏
同事在公司論壇里面發的,其實是我接手的一個項目中存在這個問題。
在使用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 閱讀(2592) |
評論 (0) |
編輯 收藏
這兩句SQL區別是有沒有括號,但卻是一個可以查出來,一個幾乎查不出來。
一個簡單的問題,居然還犯低級錯誤,留下來提醒自己。
1
select 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
1
select 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 閱讀(165) |
評論 (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 閱讀(1499) |
評論 (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 閱讀(555) |
評論 (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.htmlhttp://dev.mysql.com/doc/refman/5.1/zh/language-structure.html#name-case-sensitivity
posted @
2007-01-29 09:40 rox 閱讀(1673) |
評論 (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 閱讀(996) |
評論 (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 閱讀(695) |
評論 (0) |
編輯 收藏