#
var k=window.open("about:blank", targetName, "resizable=yes,scrollbars=yes,menubar=0,location=0,personalbar=0,left=0,top=0");
if(k){
k.focus();
form.submit();
}
if(k == null){
alert("Sorry,your browser blocked the pop window,please press the 'Ctrl' button or remove the block pop window function!");
}
下面這段代碼將把image調整的height和width都適合制定大小。
<img src="xxxx" border="0" onload="resizeimage(this,170,50);"/>
<script language='javascript'>
function resizeimage(img,maxHeight,maxWidth)
{
var w=img.width,h=img.height;
if (h>maxHeight)
{
img.height=maxHeight;
img.width=(maxHeight/h)*w;
w=img.width;
h=img.height;
}
if (w>maxWidth)
{
img.width=maxWidth;
img.height=(maxWidth/w)*h;
}
}
</script>
十進制轉成十六進制:
Integer.toHexString(int i)
十進制轉成八進制
Integer.toOctalString(int i)oBin
十進制轉成二進制
Integer.taryString(int i)
十六進制轉成十進制
Integer.valueOf("FFFF",16).toString()
八進制轉成十進制
Integer.valueOf("876",8).toString()
二進制轉十進制
Integer.valueOf("0101",2).toString()
ron命令:循環執行某一命令。at命令只能執行一次,雖然都是計劃任務的命令,這是這兩個命令的區別
。
用戶cron:用戶自己加的
組 cron:系統默認就有的
#ls /etc/crontab //顯示crontab命令路徑
#cat /etc/crontab //查看系統crontab
* * * * * 用戶名 可執行命令
下面是每個位置的表示意義和取值范圍
名稱 * * * * * 用戶名 可執行命令
表示 分鐘 小時 日期 月份 星期
取值范圍 0-59 0-23 1-31 1-12 0-6
* * * * * //代表每分鐘
1 * * * * //代表每小時第1分鐘
02 12 * * * //代表每天12點第2分鐘(每天12:02)
0-59/2 * * * * //代表每2分鐘執行一次任務
#which 命令名稱:查看命令所在目錄路徑。
#which date //查看date命令所在目錄路徑
/bin/date
#crontab -e //編輯crontab命令,-e(edit)代表編輯
* * * * * /bin/date >>/root/66.txt //每分鐘向/root/66.txt寫入一次當前系統時間
#crontab -l //顯示用戶計劃任務
#crontab -r //刪除用戶計劃任務
注意:#crontab -r命令,在哪個用戶下,刪除的就是哪個用戶的計劃任務,還需要注意的是該命令是刪除
所有用戶的所有計劃任務。還有普通用戶不能刪除root的計劃任務的權限。
普通用戶進行crontab命令計劃任務操作
例:#su - text //切換到普通用戶text
$crontab -e //在text普通用戶中進行crontab命令計劃任務編輯
* * * * * /bin/date >>/home/text/33.txt //每分鐘向/home/text/33.txt寫入一次當前系統時間
cat /home/text/33.txt //顯示/home/text/33.txt文件內容
#crontab -u 用戶名 -e //在root用戶中給普通用戶加計劃任務編輯操作
#which crontab //查看crontab命令位置
說明:which命令是查看命令所在位置,which會在$PATH里找,在普通用戶里不好用。
ll /usr/bin/crontab //查看crontab命令權限
cat /etc/crontab //顯示/etc/crontab文件內容
小例子
#cd /home/aaa //進入普通用戶aaa家(home)目錄里
#vi 1.txt //建立1.txt文件
/sbin/init 6 //對1.txt文件進行操作,寫入/sbin/init 6(重啟操作),然后wq(保存退出)
#chmod 755 1.txt //把1.txt文件權限改成可執行文件
#run-parts aaa //執行該操作機器將重啟(注意:執行該操作只能在/home/aaa目錄外執行才有效)
#cd /var/spool/cron //建立的計劃任務都存放在/var/spool/cron目錄里
#ls //顯示可以執行crontab命令的用戶
#cat 用戶名 //并可以用cat命令顯示用戶crontab命令的內容
#cat test //顯示test用戶計劃任務內容
源自:http://tdhome.hlw.cn/show.php?clg_cuid=2&id=528
注意:定義完任務后可以通過以下方式啟動任務
[root@node db_backup]# /etc/init.d/crond stop
Stopping crond: [ OK ]
[root@node db_backup]# /etc/init.d/crond start
Starting crond: [ OK ]
使用`date +%y%m%d`
Example: mkdir `date +%y%m%d`
tar cfvz /tmp/bak.`date +%y%m%d`.tar.gz /etc
ymdHM代表年月日時分,可以通過date --hlep查看哪些字母代表什么
注意:`這個符號是鍵盤上~,而不是'.
apache version:2.0.59
tomcat version:5.5.x
前言:
域名解析的作用:域名解析只能解析到ip地址,是不能夠綁定到固定ip的,幫定ip的工作由web服務器來做。
一、
需注意的幾點事項:
1.apache和tomcat的結合都是通過mod_jk來實現的。這個文件可以在apache的網站上下的到,本文用的mod_jk的地址為http://ossavant.org/apache/tomcat/tomcat-connectors/jk/binaries/linux/jk-1.2.24/i386/mod_jk-1.2.24-httpd-2.0.59.so這里需要注意的是:(1) mod_jk的版本號一定要和apache的版本號一致. (2) mod_jk有64位和32位之分,所以要根據機器的配置來決定選擇哪個。
二、安裝apache,注意一定要支持DSO,在安裝時加個參數--enable-so就可以使apache支持dso。可以通過
[root@localhost bin]# httpd -l
Compiled in modules:
core.c
prefork.c
http_core.c
mod_so.c
(說明:看到mod_so.c這個模塊,就說明能支持DSO
三、安裝tomcat,正常安裝即可
安裝完tomcat和apache之后先分別測似一下,保證都正常能用了,再往下進行。
四、整和apache與tomcat(具體參考apache的官方網站)
1〉把剛才下的mod_jk考到apache2/modules文件夾下
2〉在tomcat的conf里創建一個文件workers.properties,并添加如下內容
workers.tomcat_home=/usr/local/apache-tomcat-5.5.23
workers.java_home=/usr
ps=\
worker.list=ajp13
worker.ajp13.port=8009
worker.ajp13.host=localhost
worker.ajp13.type=ajp13
worker.ajp13.lbfactor=1
3〉在apache2/conf的httpd.conf里加入如下一段話
LoadModule jk_module modules/mod_jk-1.2.24-httpd-2.0.59.so
JkWorkersFile "/usr/local/apache-tomcat-5.5.23/conf/workers.properties" //指向剛才那個文件
JkLogFile "/usr/local/apache-tomcat-5.5.23/logs/mod_jk2.log"
JkLogLevel info
五、配置虛擬主機
在httpd.conf下加入如下:
<VirtualHost *:80>
ServerName www.91yjs.com
ServerAlias 91yjs.com
DocumentRoot /usr/local/apache-tomcat-5.5.23/webapps/ROOT
DirectoryIndex index.html index.htm index.jsp
JkMount /servlet/* ajp13
JkMount /*.jsp ajp13
JkMount /*.do ajp13
</VirtualHost>
配置完后,進入apache的bin下執行 ./httpd -t
出現Syntax OK說明,你的配置沒有錯誤,重新啟動apache,應該可以了。
附錄:
停止apache:./apachectl stop
啟動apache:./apachectl graceful
參考:
在一個比較完整的應用系統里,經常需要有一些配置文件。簡單的屬性使用。properties文件即可,但要配置一些復雜對象,則應該考慮使用xml文件。一般用來讀取xml文件的工具包有DOM、SAX和JDOM等,但用過的人都知道,它們屬于比較底層的API,寫起來代碼量很大,而且如果修改了xml文件的格式,代碼也要做大幅度的改動。Jakarta Commons項目里的Digester包,可以輕松實現xml文件到Java對象的轉換,看下面這個例子。
在一個項目里,需要提供一些統計圖,但圖的內容暫時未能確定。所以我決定讓圖可以配置,所有定義保存在一個名為charts.xml(或國際化后的文件名如charts_zh_CN.xml,這里只考慮缺省語言)的文件內,下面是該文件的部分內容:
false true Bar 時間 數據 500 360 select count(c), c.department.name from edu.pku.pub. aims.model.business. Client c group by c.department |
可以看出,我為每個圖定義了id、title、legendVisible等等屬性,這些屬性的意義都很明顯,它們將影響統計圖的數據和在頁面中的表現。在程序里,我需要把這個文件里的定義讀到一個注冊表類ChartRegistry里,該注冊表維護一個java.util.List類型的registry變量,其中每個元素是一個ChartConfig類。現在Digester該顯示它的價值了。
為了方便使用Digester,我們讓ChartConfig也具有統計圖的每個屬性(id、title、legendVisible等等),名稱與charts.xml里的元素的屬性(子元素)一一對應,并且都具有getter和setter方法,也就是說,ChartConfig是一個bean類。在ChartRegistry類里定義一個deregister()方法,它的作用是用Digester讀入并解析指定的xml文件,代碼如下;還有一個register()方法用來把ChartConfig對象加到registry里。
public void deregister(URL url) throws IOException,SAXException{ InputStream is = new FileInputStream(url.getFile()); Digester digester = new Digester(); digester.push(this); digester.setValidating(false); digester.addObjectCreate("charts/chart", ChartConfig.class); digester.addSetProperties("charts/chart"); digester.addBeanPropertySetter("charts/chart/legendVisible"); digester.addBeanPropertySetter("charts/chart/toolTipsVisible"); digester.addBeanPropertySetter("charts/chart/title"); digester.addBeanPropertySetter("charts/chart/type"); digester.addBeanPropertySetter("charts/chart/labelx"); digester.addBeanPropertySetter("charts/chart/labely"); digester.addBeanPropertySetter("charts/chart/width"); digester.addBeanPropertySetter("charts/chart/height"); digester.addBeanPropertySetter("charts/chart/hql"); digester.addBeanPropertySetter("charts/chart/description"); digester.addSetNext("charts/chart","register"); digester.parse(is); Collections.sort(registry); }
|
基本上來說,Digester和SAX解析xml的過程很像,它的原理就是制定一些規則,在遍歷每個節點時檢查是否有匹配的規則,如果有就執行對應的操作。例如,上面的代碼中,“digester.addObjectCreate("charts/chart", ChartConfig.class);”這一句的作用是告訴Digester:如果遇到匹配“charts/chart”形式的節點,就執行一個“對象創建”操作,創建什么對象呢,應該創建Class為“ChartConfig.class”的對象;類似的,addSetProperties()是告訴Digester將指定節點的屬性全部映射到對象的屬性,在這個例子里指的就是id屬性;addBeanPropertySetter()是將子節點轉換為對象的屬性,這個方法還可以有第二個參數,當對象的屬性名和子節點的名字不一樣時用來指定對象的屬性名;addSetNext()是說在遇到匹配節點后,對當前對象的父對象執行一個方法,參數是當前參數,對這個例子來說就是執行ChartConfig.register(ChartConfig)方法。因此這樣構造得到的Digester會把charts.xml里的每個元素轉換為一個ChartConfig對象,并register到ChartRegistry里。
順利得到了ChartRegister對象,我就可以在程序里根據它的內容構造統計圖了(統計圖一般使用jfreechart來生成,這里就不贅述了)。與Digester具有類似功能的工具包其實還有不少,例如Caster、Jato等等,我沒有實際使用過它們,但因為我對用過的Jakarta其他項目都很滿意(例如BeanUtils、HttpClient,品牌效應?),所以一開始就選擇了Digester:簡單方便。
from :http://java.chinaitlab.com/WebServices/715609.html
在一個java的socket連接中,用ObjectInputStream 和ObjectOutputStream可以很輕松的實現對Object的發送,但是如果沒有建立socket連接,如何用udp包來發送Object對象呢?
想想我們用udp發送數據的時候可以發送些什么呢?
DatagramPacket里面可以裝些什么呢? byte[]
對,就是byte[], 那么我們要發送java對象的話就是想辦法把一個Object轉成byte[],然后再發送到目的地址,然后在接受方把byte轉成Object就可以了。 如何把一個Object轉化成byte[]呢?我們可以利用ByteArrayOutputStream 這個類 相信到這里,有些朋友已經知道了怎么做了。 還是貼點代碼吧!^_^
|
public void SendInfo(int code, Object obj){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = null; try{ oos = new ObjectOutputStream(baos); oos.writeInt(code); oos.writeObject(obj); oos.flush(); byte arr[] = baos.toByteArray(); if(arr == null)return; SendDataToClient(arr); if(baos != null)baos.close(); if(oos != null)oos.close(); }catch(Exception e){ FuncForServer.WriteErrMsg( "Exception in Sending data to server.", e); } } 其中SendDataToClient(arr);就不用我說了吧 然后接受方接受到了這個包后呢? 接收到的數組組成對象: ByteArrayInputStream bais = new ByteArrayInputStream(dataq); ObjectInputStream ois = null; byte arr[] = null; ois = new ObjectInputStream(bais); Object obj = ois.readObject(); obj就到了,呵呵! |