2005年11月25日
#
一年又過去了,習慣上我還是使用陰歷來判別一年,元旦過后,我還沒有想到一年又過去了,但是過完春節,這種感覺就突然特別強烈起來,呵呵,小時候養成的習慣,不是說變就能改變的。
在一月份怎么說呢,上半個月感覺特別累,人也特別敏感,易怒。下半個月,還是相對比較輕松的心態,就算是犒勞自己吧。第一二周主要是準備工作匯報材料,一群人沒日沒夜地干,就為了把工作匯報整出色, 還額外新增了許多功能,光說短信吧, 短短3天,就集成進了系統,這個不容易啊,每個人都鉚足了勁,想整點色彩出來,當然我其實也知道,我說過12月會輕松一點,但是12月份沒有輕松過,然后我又說1月份會輕松一點,接著就是更累得一月份,自己也感覺慚愧啊,項目本來工作量太多是一方面,但是更多的,我還是認為,管理上面還是存在很大問題,沒有預見到兩個重大問題,第一,框架的嚴重不足,第二,人員培訓嚴重不足,當時對框架依賴程度過高, 其實框架在后面幾次致命的變動,給系統帶來的修改工作量非同一般啊;對人員的水平估計過高,也是把所有人包括自己弄得很慘的一個重要原因,以為經過前面的一個小項目,人員水平應該都有很大的提高,滿足一般的項目需求問題不是很大的,但是實際情況告訴我,從一個不懂編程到熟練工, 絕對不是一蹴而就的,就算是勞動強度很大的鍛煉,那也需要很長時間的,至少也需要一到兩年。我們只用了2個月,就算是學了九陽神功也沒有那么快啊。當然所有的一切責任歸結起來,就是項目管理的失敗,風險識別錯誤,一開始的風險識別就只是考慮時間緊,業務不熟練,根本就沒有考慮到人員的技術水平,所以后面對質量的忽視的默許,對人員培養的中斷, 直接導致了最后的一個大泥潭,當然我們現在是甲方,這個跳蚤還是得自己摘掉的,因為你不是干一票就走人的阿。
在匯報后,就開始進行年終總結, 呵呵,因為有很多感想,計劃的三千字,輕易的就達到,寫得時候根本就沒有考慮過達到了。
針對需要改進的內容也寫了很多,有幾點特別重要,第一,千萬不要深度參與到項目的開發中去,因為這樣你害了所有人,沒有統籌安排,必然導致更多的問題和混亂,而且這些內容遲早要交接出去的,那么,別人接手還是很痛苦,所以從一開始就要把握好自己。第二,計劃很重要,計劃要仔細考慮,不是一拍腦袋,計劃就出來,完成了很多電子表格,但是這沒有用,有用的計劃應該是討論出來的,是仔細思考,全盤考慮的結果。最后,計劃始終只是計劃,還需要不斷跟進,這樣才能逐步逼近目標。
下月還有一些計劃,主要一個是制定項目管理規范,很多時候做到有章可循還是比較好的,最佳實踐不一定完全適合你,但是你總能受點啟發吧。日積月累,不就形成了一個所以得經驗了嗎?打游戲還講究經驗值呢,做事為什么就要拒絕經驗呢。
第二個,還要把現在的內容消化,現在內容很多,但老實說,需要花力氣整合,而且還有些核心功能都不是特別穩定,也急切需要穩定。現在一堆所謂的重構, 但是我一直知道有一句話,沒有最好,只有最合適。其實對于軟件也是這樣,優化是沒有止境的,但是我們也要有一個度,再過三個月,回過頭來看,現在的很多功能和代碼又會有點像狗屎,因為你進步了。是不是我們再花力氣把它們都重構一下呢,不一定。首先用戶對于你的修改是否認為一定需要,用的還蠻好的,也總的給我一個更換的理由吧, 總不能說廠家都從n70換到n73, 我就要換吧。其次,你的時間和精力允許你這樣做嗎?但是并不是代表我們就什么都不做,一直拒絕新事物,這樣怎么能從量變到質變呢,不質變,不適應新情況了總是要被淘汰的吧,比如小靈通。
所以我想我們每個人都要習慣改變,但是要抓住本質,有一句話“要么改變,要么被改變”。
1, 使用java提供的方法,在jsp或者servlet中都可以
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
%>
2, 使用HTML標記,如下面:
<HEAD>
<META HTTP-EQUIV="Pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
<META HTTP-EQUIV="Expires" CONTENT="0">
</HEAD>
轉載
http://www.matrix.org.cn/thread.shtml?forum_id=19&view_id=919int、char、double與byte相互轉換的程序
//整數到字節數組的轉換
public static byte[] intToByte(int number) {
int temp = number;
byte[] b=new byte[4];
for (int i=b.length-1;i>-1;i--){
b[i] = new Integer(temp&0xff).byteValue(); //將最高位保存在最低位
temp = temp >> 8; //向右移8位
}
return b;
}
//字節數組到整數的轉換
public static int byteToInt(byte[] b) {
int s = 0;
for (int i = 0; i < 3; i++) {
if (b[i] >= 0)
s = s + b[i];
else
s = s + 256 + b[i];
s = s * 256;
}
if (b[3] >= 0) //最后一個之所以不乘,是因為可能會溢出
s = s + b[3];
else
s = s + 256 + b[3];
return s;
}
//字符到字節轉換
public static byte[] charToByte(char ch){
int temp=(int)ch;
byte[] b=new byte[2];
for (int i=b.length-1;i>-1;i--){
b[i] = new Integer(temp&0xff).byteValue(); //將最高位保存在最低位
temp = temp >> 8; //向右移8位
}
return b;
}
//字節到字符轉換
public static char byteToChar(byte[] b){
int s=0;
if(b[0]>0)
s+=b[0];
else
s+=256+b[0];
s*=256;
if(b[1]>0)
s+=b[1];
else
s+=256+b[1];
char ch=(char)s;
return ch;
}
//浮點到字節轉換
public static byte[] doubleToByte(double d){
byte[] b=new byte[8];
long l=Double.doubleToLongBits(d);
for(int i=0;i<b.length;i++){
b[i]=new Long(l).byteValue();
l=l>>8;
}
return b;
}
//字節到浮點轉換
public static double byteToDouble(byte[] b){
long l;
l=b[0];
l&=0xff;
l|=((long)b[1]<<8);
l&=0xffff;
l|=((long)b[2]<<16);
l&=0xffffff;
l|=((long)b[3]<<24);
l&=0xffffffffl;
l|=((long)b[4]<<32);
l&=0xffffffffffl;
l|=((long)b[5]<<40);
l&=0xffffffffffffl;
l|=((long)b[6]<<48);
l|=((long)b[7]<<56);
return Double.longBitsToDouble(l);
}
--