#
--sunfruit
成長中的應該知道的。。。生命的價值
不要讓昨日的沮喪令明天的夢想黯然失色!
在一次討論會上,一位著名的演說家沒講一句開場白,手里卻高舉著一張20美元的鈔票。
面對會議室里的200個人,他問:“誰要這20美元?”一只只手舉了起來。他接著說:“我打算把這20美元送給你們中的一位,但在這之前,請準許我做一件事?!彼f著將鈔票揉成一團,然后問:“誰還要?”仍有人舉起手來。
他又說:“那么,假如我這樣做又會怎么樣呢?”他把鈔票扔到地上,又踏上一只腳,并且用腳碾它。爾后他拾起鈔票,鈔票已變得又臟又皺。
“現(xiàn)在誰還要?”還是有人舉起手來。
“朋友們,你們已經(jīng)上了一堂很有意義的課。無論我如何對待那張鈔票,你們還是想要它,因為它并沒貶值,它依舊值20美元。人生路上,我們會無數(shù)次被自己的決定或碰到的逆境擊倒、欺凌甚至碾得粉身碎骨。我們覺得自己似乎一文不值。但無論發(fā)生什么,或?qū)⒁l(fā)生什么,在上帝
的眼中,你們永遠不會喪失價值。在他看來,骯臟或潔凈,衣著齊整或不齊整,你們依然是無價之寶。”
溫馨提示:生命的價值不依賴我們的所作所為,也不仰仗我們結(jié)交的人物,而是取決于我們本身!我們是獨特的——永遠不要忘記這一點!
--sunfruit
java中的基本的數(shù)據(jù)類型如int,float,long,String[這個是一個特殊的類,有基本的數(shù)據(jù)類型的特性]等,在方法的參數(shù)傳遞的時候不存在引用傳遞,只有值傳遞方式,下面有一個實例
public class Test
{
public Test()
{
int j=9;
setInt(j);
System.out.println(j);
j=setInt(j);
System.out.println(j);
String str2="abc";
setString(str2);
System.out.println(str2);
str2=setString(str2);
System.out.println(str2);
StringBuffer buff=new StringBuffer();
buff.append("abcbuff");
setStringBuffer(buff);
System.out.println(buff.toString());
}
public static void main(String[] args)
{
new Test();
}
private int setInt(int i)
{
i+=2;
return i;
}
private String setString(String str1)
{
str1+=" test";
return str1;
}
private StringBuffer setStringBuffer(StringBuffer buff1)
{
buff1.append(" test");
return buff1;
}
}
運行結(jié)果
9
11
abc
abc test
abcbuff test
可以看到基本數(shù)據(jù)類型的傳遞方式是值傳遞
--sunfruit
用java實現(xiàn)了整形數(shù)字的動態(tài)數(shù)組
JDK版本
1.3.1
功能
實現(xiàn)了添加整數(shù)到動態(tài)數(shù)組中,JDK(1.5以下)不提供整形類型的集合,比如ArrayList這樣的集合不允許添加整數(shù),
但是在編程過程中會遇到需要整形的動態(tài)數(shù)組的情況,所以這個類實現(xiàn)了這樣的功能
歡迎大家提意見,交流
代碼如下:
/**
* Title: 整形動態(tài)數(shù)組
* Description: 實現(xiàn)了整形數(shù)字的動態(tài)添加
* Copyright: Copyright (c) 2003
* Company: LingTu
* @author cuijiang
* @version 2.0
*/
public class DynArrayInt {
/**
* 原始數(shù)組
*/
private int[] data_All;
/**
* 計數(shù)器(數(shù)組長度)
*/
private int size_count;
/**
* 構(gòu)造器,初始長度默認為10
*/
public DynArrayInt() {
this(10);
}
/**
* 構(gòu)造器,設(shè)置數(shù)組的初始長度
*
* @param iniSize int 數(shù)組的初始長度
*/
public DynArrayInt(int iniSize) {
data_All = new int[iniSize];
}
/**
* 添加數(shù)據(jù),調(diào)用checkAdd(int i)
* @param i int 一個整形數(shù)字
*/
public void addInt(int i) {
//判斷是否增長
this.checkAdd(size_count + 1);
//賦值
data_All[size_count++] = i;
//添加時數(shù)組長度加一
}
/**
* 添加數(shù)字,判斷是否增長
* @param i int 一個整形數(shù)字
*/
private void checkAdd(int i) {
//獲得原來的大小
int star = data_All.length;
//判斷是否增長
if (i > star) {
int starData[] = data_All;
//設(shè)定增長大小
int endall = star * 2;
data_All = new int[endall];
System.arraycopy(starData, 0, data_All, 0, size_count);
}
}
/**
* 獲取數(shù)據(jù)
* @param i int 索引號
* @return int
*/
public int getInt(int i) {
if (i < 0 || i >= size_count) {
throw new IndexOutOfBoundsException("超出最大或最小索引值,無法取得數(shù)據(jù)");
} else {
return data_All[i];
}
}
/**
* 獲取數(shù)據(jù)轉(zhuǎn)換成字符串模式
* @param i int 索引號
* @return String
*/
public String getIntToString(int i) {
if (i < 0 || i >= size_count) {
throw new IndexOutOfBoundsException("超出最大或最小索引值,無法取得數(shù)據(jù)");
} else {
return String.valueOf(data_All[i]);
}
}
/**
* 刪除數(shù)據(jù)
* @param j int 一個要刪除的整數(shù)
*/
public void remove(int j) {
for (int i = 0; i < size_count; i++) {
if (data_All[i] == j) {
System.arraycopy(data_All, i+1, data_All, i, size_count-i-1); // 復制數(shù)據(jù)
--size_count;
return;
}
}
}
/**
* 刪除數(shù)據(jù)
* @param j int 一個要刪除的索引
*/
public void removeIndex(int j) {
if (j < 0 || j >= size_count) {
throw new IndexOutOfBoundsException("超出最大或最小索引值,無法刪除數(shù)據(jù)");
} else {
System.arraycopy(data_All, j + 1, data_All, j, size_count -j- 1); // 復制數(shù)據(jù)
--size_count;
return;
}
}
/**
* 獲取大小
* @return int 獲得數(shù)組長度
*/
public int getSize() {
return size_count;
}
/**
* 獲取數(shù)組對象
* @return int[] 獲得數(shù)組對象
*/
public int[] getAllInt() {
int[] starData = new int[size_count];
System.arraycopy(data_All, 0, starData, 0, size_count);
return starData;
}
/**
* 獲得數(shù)組對象,String格式
* @return String[] 獲得數(shù)組的對象
*/
public String[] getAllIntToString() {
int[] tempint = getAllInt();
String[] starData = new String[tempint.length];
for (int i = 0; i < starData.length; i++) {
starData[i] = String.valueOf(tempint[i]);
}
return starData;
}
/**
* 刪除全部內(nèi)容
*/
public void removeAll() {
data_All = new int[10];
size_count = 0;
}
}
--sunfruit
說了開源軟件的一些想法
注:轉(zhuǎn)貼
開源軟件不要求代碼有多么的漂亮,但是設(shè)計的架構(gòu)必須要很精簡,很清晰。這樣別人才能在了解架構(gòu)的前提下做出擴充。不要指望有人通過修改源代碼來擴展功能,沒有人會愿意去完全讀懂一堆source,即使是大師級的source code。Apache的Avalon雖然功能很多,但是由于落后的架構(gòu),也不得不慘淡收場。
所以開源軟件必然是個優(yōu)秀的產(chǎn)物,就像是個受到各方嚴格監(jiān)督的孩子,雖然現(xiàn)在還弱小,但將來不可限量??!
不過光靠基金會的支持也還不足以讓這個孩子茁壯成長,商業(yè)化才是最終的出路
--sunfruit
說明了原碼、補碼和反碼的關(guān)系以及算法
原碼、補碼和反碼 |
|
(1)原碼表示法
原碼表示法是機器數(shù)的一種簡單的表示法。其符號位用0表示正號,用:表示負號,數(shù)值一般用二進制形式表示。設(shè)有一數(shù)為x,則原碼表示可記作[x]原。
例如,X1= +1010110
X2= 一1001010
其原碼記作:
[X1]原=[+1010110]原=01010110
[X2]原=[-1001010]原=11001010
原碼表示數(shù)的范圍與二進制位數(shù)有關(guān)。當用8位二進制來表示小數(shù)原碼時,其表示范圍:
最大值為0.1111111,其真值約為(0.99)10
最小值為1.1111111,其真值約為(一0.99)10
當用8位二進制來表示整數(shù)原碼時,其表示范圍:
最大值為01111111,其真值為(127)10
最小值為11111111,其真值為(-127)10
在原碼表示法中,對0有兩種表示形式:
[+0]原=00000000
[-0] 原=10000000
|
(2)補碼表示法
機器數(shù)的補碼可由原碼得到。如果機器數(shù)是正數(shù),則該機器數(shù)的補碼與原碼一樣;如果機器數(shù)是負數(shù),則該機器數(shù)的補碼是對它的原碼(除符號位外)各位取反,并在未位加1而得到的。設(shè)有一數(shù)X,則X的補碼表示記作[X]補。
例如,[X1]=+1010110
[X2]= 一1001010
[X1]原=01010110
[X1]補=01010110
即 [X1]原=[X1]補=01010110
[X2] 原= 11001010
[X2] 補=10110101+1=10110110
補碼表示數(shù)的范圍與二進制位數(shù)有關(guān)。當采用8位二進制表示時,小數(shù)補碼的表示范圍:
最大為0.1111111,其真值為(0.99)10
最小為1.0000000,其真值為(一1)10
采用8位二進制表示時,整數(shù)補碼的表示范圍:
最大為01111111,其真值為(127)10
最小為10000000,其真值為(一128)10
在補碼表示法中,0只有一種表示形式:
[+0]補=00000000
[+0]補=11111111+1=00000000(由于受設(shè)備字長的限制,最后的進位丟失)
所以有[+0]補=[+0]補=00000000
|
(3)反碼表示法
機器數(shù)的反碼可由原碼得到。如果機器數(shù)是正數(shù),則該機器數(shù)的反碼與原碼一樣;如果機器數(shù)是負數(shù),則該機器數(shù)的反碼是對它的原碼(符號位除外)各位取反而得到的。設(shè)有一數(shù)X,則X的反碼表示記作[X]反。
例如:X1= +1010110
X2= 一1001010
[X1]原=01010110
[X1]反=[X1]原=01010110
[X2]原=11001010
[X2]反=10110101
反碼通常作為求補過程的中間形式,即在一個負數(shù)的反碼的未位上加1,就得到了該負數(shù)的補碼。
例1. 已知[X]原=10011010,求[X]補。
分析如下:
由[X]原求[X]補的原則是:若機器數(shù)為正數(shù),則[X]原=[X]補;若機器數(shù)為負數(shù),則該機器數(shù)的補碼可對它的原碼(符號位除外)所有位求反,再在未位加1而得到。現(xiàn)給定的機器數(shù)為負數(shù),故有[X]補=[X]原十1,即
[X]原=10011010
[X]反=11100101
十) 1
[X]補=11100110
例2. 已知[X]補=11100110,求[X]原。
分析如下:
對于機器數(shù)為正數(shù),則[X]原=[X]補
對于機器數(shù)為負數(shù),則有[X]原=[[X]補]補
現(xiàn)給定的為負數(shù),故有:
[X]補=11100110
[[X]補]反=10011001
十) 1
[[X]補]補=10011010=[X]原 | | |
--sunfruit
簡述了IOC的意義和JAVA的反射機制
IOC模式:
看到很多Java的文檔都談到了Ioc,原來IoC就是Inverse of Control啊,就是所謂的控制反轉(zhuǎn)。
即由外部傳入所需的對象,而非在內(nèi)部定義。好處自然就是靈活性了。當然對傳入的參數(shù)的要求就是面向接口了。
Java的反射機制:
通過Class類,實現(xiàn)動態(tài)的生成Instance(可以使用class.newInstance調(diào)用無參數(shù)的constructor或者取得特定的Constructor,再通過Constructor.newInstance。),以及動態(tài)調(diào)用Methods和設(shè)置Fields。不過對于調(diào)用特定的Method似乎也沒什么很大意義,除非是已知實現(xiàn)了某些interface的情況下,調(diào)用指定的Method。
相比之下,C++就不能在給定class名的情況下生成Instance了,更不要談之后的調(diào)用Method了
--sunfruit
說明了Oracle數(shù)據(jù)庫中的索引隱式失效的問題
1、隱式轉(zhuǎn)換導致索引失效.這一點應當引起重視.也是開發(fā)中經(jīng)常會犯的錯誤.
由于表的字段tu_mdn定義為varchar2(20),但在查詢時把該字段作為number類型以where條件傳給Oracle,這樣會導致索引失效.
錯誤的例子:select * from test where tu_mdn=13333333333;
正確的例子:select * from test where tu_mdn='13333333333';
2、對索引列進行運算導致索引失效,我所指的對索引列進行運算包括(+,-,*,/,! 等)
錯誤的例子:select * from test where id-1=9;
正確的例子:select * from test where id=10;
3、使用Oracle內(nèi)部函數(shù)導致索引失效.對于這樣情況應當創(chuàng)建基于函數(shù)的索引.
錯誤的例子:select * from test where round(id)=10; 說明,此時id的索引已經(jīng)不起作用了
正確的例子:首先建立函數(shù)索引,create index test_id_fbi_idx on test(round(id));
然后 select * from test where round(id)=10; 這時函數(shù)索引起作用了
--sunfruit
總結(jié)了Oracle中關(guān)于日期函數(shù)的一些用法和技巧
上月末天:
SQL> select to_char(add_months(last_day(sysdate),-1),'yyyy-MM-dd') LastDay from
2 dual
3 ;
LASTDAY
----------
2004-09-30
上月今天
SQL> select to_char(add_months(sysdate,-1),'yyyy-MM-dd') PreToday from dual
2 ;
PRETODAY
----------
2004-09-29
上月首天
SQL> select to_char(add_months(last_day(sysdate)+1,-2),'yyyy-MM-dd') FirstDay
2 from dual;
FIRSTDAY
----------
2004-09-01
以下轉(zhuǎn)貼:
Oracle
在日期使用上允許極大的靈活性。由于可以在日期字段存儲時間和日期,從而有函數(shù)可以既引用日期又引用時間。
Oracle 所提供的一些日期函數(shù)如下所示。
1. SYSDATE
返回當前的日期和時間。
示例
SELECT sysdate FROM dual;
SYSDATE
----------
05-3月 -03
2. ADD_MONTHS(d, no_of_month)
當前日期"m"后推"no_of_month" 個月。參數(shù)"no_of_month"可為任何整數(shù)。
示例
SELECT add_months(sysdate,2) FROM dual;
ADD_MONTHS
----------
05-5月 -03
SELECT add_months(sysdate,-2) FROM dual;
ADD_MONTHS
----------
05-1月 -03
3. LAST_DAY(month_day)
返回變量"month_day"中所指定月份的最后一天的日期。
示例
SELECT last_day(sysdate) FROM dual;
LAST_DAY(S
----------
31-3月 -03
4. MONTHS_BETWEEN(d1, d2)
返回日期 d1 和 d2 之間的月份數(shù)。如果 d1 晚于 d2,結(jié)果為正,否則返回負數(shù)。
示例
SELECT months_between(sysdate,to_date('20030101','YYYYMMDD')) FROM dual;
MONTHS_BETWEEN(SYSDATE,TO_DATE('20030101','YYYYMMDD'))
------------------------------------------------------
2.15773932
5. NEXT_DAY(d, day_of_week)
返回由"day_of_week"命名的,在變量"d"指定的日期之后的第一個工作日的日期。參數(shù)"day_of_week"必須為該星期中的某一天。
示例
-- 2003.3.2 是星期日
SELECT next_day(to_date('20030226','YYYYMMDD'),1) FROM dual;
NEXT_DAY(T
----------
02-3月 -03
日期格式
格式元素 說明
AD 或 A.D. 帶有或不帶有句號的 AD 標記
BC 或 B.C. 帶有或不帶有句號的 BC 標記
D 一周中的天 (1-7)
DAY 天的名稱 (Sunday - Saturday)
DD 一月中的天 (1 - 31)
DDD 一年中的天 (1 - 366)
DY 天的縮寫 (Sun - Sat)
HH 一天中的小時 (1 - 12)
HH24 一天中的小時 (0 - 23)
MI 分鐘 (0-59)
MM 月 (01-12)
MON 月名稱的縮寫
MONTH 月的名稱
SS 秒 (0-59)
YYYY 4 個數(shù)字表示的年
--sunfruit
java做的ftp上傳軟件,可以定時上傳文件
JDK版本
1.4.x 推薦1.4.2
服務(wù)端軟件
目前只能支持SERVER_U
參數(shù)配置
在xmlfile/config.xml里面配置連接參數(shù)
功能
可以使用FTP協(xié)議上傳文件,建立文件夾,建立定時上傳任務(wù)
歡迎大家提意見,交流
下載鏈接
http://blog.blogchina.com/upload/2005-03-03/20050303145205983322.rar
--sunfruit
非常好的JSF教程,推薦
由于本站不允許上傳zip、rar文件,所以把壓縮好的文件做成doc的內(nèi)置對象了,打開doc解壓即可
下載地址:http://sunfruit.blogchina.com/inc/JSF.doc