#
--sunfruit
成长中的应该知道的。。。生命的价值
不要让昨日的沮丧令明天的梦想黯然失色!
在一次讨论会上,一位著名的演说家没讲一句开场白,手里却高举着一张20美元的钞票。
面对会议室里的200个人,他问:“谁要这20美元?”一只只手举了起来。他接着说:“我打算把这20美元送给你们中的一位,但在这之前,请准许我做一件事。”他说着将钞票揉成一团,然后问:“谁还要?”仍有人举起手来。
他又说:“那么,假如我这样做又会怎么样呢?”他把钞票扔到地上,又踏上一只脚,并且用脚碾它。尔后他拾起钞票,钞票已变得又脏又皱。
“现在谁还要?”还是有人举起手来。
“朋友们,你们已经上了一堂很有意义的课。无论我如何对待那张钞票,你们还是想要它,因为它并没贬值,它依旧值20美元。人生路上,我们会无数次被自己的决定或碰到的逆境击倒、欺凌甚至碾得粉身碎骨。我们觉得自己似乎一文不值。但无论发生什么,或将要发生什么,在上帝
的眼中,你们永远不会丧失价值。在他看来,肮脏或洁净,衣着齐整或不齐整,你们依然是无价之宝。”
温馨提示:生命的价值不依赖我们的所作所为,也不仰仗我们结交的人物,而是取决于我们本身!我们是独特的——永远不要忘记这一点!
--sunfruit
java中的基本的数据类型如int,float,long,String[这个是一个特殊的类,有基本的数据类型的特性]等,在方法的参数传递的时候不存在引用传递,只有值传递方式,下面有一个实例
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;
}
}
运行结果
9
11
abc
abc test
abcbuff test
可以看到基本数据类型的传递方式是值传递
--sunfruit
用java实现了整形数字的动态数组
JDK版本
1.3.1
功能
实现了添加整数到动态数组中,JDK(1.5以下)不提供整形类型的集合,比如ArrayList这样的集合不允许添加整数,
但是在编程过程中会遇到需要整形的动态数组的情况,所以这个类实现了这样的功能
欢迎大家提意见,交流
代码如下:
/**
* Title: 整形动态数组
* Description: 实现了整形数字的动态添加
* Copyright: Copyright (c) 2003
* Company: LingTu
* @author cuijiang
* @version 2.0
*/
public class DynArrayInt {
/**
* 原始数组
*/
private int[] data_All;
/**
* 计数器(数组长度)
*/
private int size_count;
/**
* 构造器,初始长度默认为10
*/
public DynArrayInt() {
this(10);
}
/**
* 构造器,设置数组的初始长度
*
* @param iniSize int 数组的初始长度
*/
public DynArrayInt(int iniSize) {
data_All = new int[iniSize];
}
/**
* 添加数据,调用checkAdd(int i)
* @param i int 一个整形数字
*/
public void addInt(int i) {
//判断是否增长
this.checkAdd(size_count + 1);
//赋值
data_All[size_count++] = i;
//添加时数组长度加一
}
/**
* 添加数字,判断是否增长
* @param i int 一个整形数字
*/
private void checkAdd(int i) {
//获得原来的大小
int star = data_All.length;
//判断是否增长
if (i > star) {
int starData[] = data_All;
//设定增长大小
int endall = star * 2;
data_All = new int[endall];
System.arraycopy(starData, 0, data_All, 0, size_count);
}
}
/**
* 获取数据
* @param i int 索引号
* @return int
*/
public int getInt(int i) {
if (i < 0 || i >= size_count) {
throw new IndexOutOfBoundsException("超出最大或最小索引值,无法取得数据");
} else {
return data_All[i];
}
}
/**
* 获取数据转换成字符串模式
* @param i int 索引号
* @return String
*/
public String getIntToString(int i) {
if (i < 0 || i >= size_count) {
throw new IndexOutOfBoundsException("超出最大或最小索引值,无法取得数据");
} else {
return String.valueOf(data_All[i]);
}
}
/**
* 删除数据
* @param j int 一个要删除的整数
*/
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); // 复制数据
--size_count;
return;
}
}
}
/**
* 删除数据
* @param j int 一个要删除的索引
*/
public void removeIndex(int j) {
if (j < 0 || j >= size_count) {
throw new IndexOutOfBoundsException("超出最大或最小索引值,无法删除数据");
} else {
System.arraycopy(data_All, j + 1, data_All, j, size_count -j- 1); // 复制数据
--size_count;
return;
}
}
/**
* 获取大小
* @return int 获得数组长度
*/
public int getSize() {
return size_count;
}
/**
* 获取数组对象
* @return int[] 获得数组对象
*/
public int[] getAllInt() {
int[] starData = new int[size_count];
System.arraycopy(data_All, 0, starData, 0, size_count);
return starData;
}
/**
* 获得数组对象,String格式
* @return String[] 获得数组的对象
*/
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;
}
/**
* 删除全部内容
*/
public void removeAll() {
data_All = new int[10];
size_count = 0;
}
}
--sunfruit
说了开源软件的一些想法
注:转贴
开源软件不要求代码有多么的漂亮,但是设计的架构必须要很精简,很清晰。这样别人才能在了解架构的前提下做出扩充。不要指望有人通过修改源代码来扩展功能,没有人会愿意去完全读懂一堆source,即使是大师级的source code。Apache的Avalon虽然功能很多,但是由于落后的架构,也不得不惨淡收场。
所以开源软件必然是个优秀的产物,就像是个受到各方严格监督的孩子,虽然现在还弱小,但将来不可限量啊!
不过光靠基金会的支持也还不足以让这个孩子茁壮成长,商业化才是最终的出路
--sunfruit
说明了原码、补码和反码的关系以及算法
原码、补码和反码 |
|
(1)原码表示法
原码表示法是机器数的一种简单的表示法。其符号位用0表示正号,用:表示负号,数值一般用二进制形式表示。设有一数为x,则原码表示可记作[x]原。
例如,X1= +1010110
X2= 一1001010
其原码记作:
[X1]原=[+1010110]原=01010110
[X2]原=[-1001010]原=11001010
原码表示数的范围与二进制位数有关。当用8位二进制来表示小数原码时,其表示范围:
最大值为0.1111111,其真值约为(0.99)10
最小值为1.1111111,其真值约为(一0.99)10
当用8位二进制来表示整数原码时,其表示范围:
最大值为01111111,其真值为(127)10
最小值为11111111,其真值为(-127)10
在原码表示法中,对0有两种表示形式:
[+0]原=00000000
[-0] 原=10000000
|
(2)补码表示法
机器数的补码可由原码得到。如果机器数是正数,则该机器数的补码与原码一样;如果机器数是负数,则该机器数的补码是对它的原码(除符号位外)各位取反,并在未位加1而得到的。设有一数X,则X的补码表示记作[X]补。
例如,[X1]=+1010110
[X2]= 一1001010
[X1]原=01010110
[X1]补=01010110
即 [X1]原=[X1]补=01010110
[X2] 原= 11001010
[X2] 补=10110101+1=10110110
补码表示数的范围与二进制位数有关。当采用8位二进制表示时,小数补码的表示范围:
最大为0.1111111,其真值为(0.99)10
最小为1.0000000,其真值为(一1)10
采用8位二进制表示时,整数补码的表示范围:
最大为01111111,其真值为(127)10
最小为10000000,其真值为(一128)10
在补码表示法中,0只有一种表示形式:
[+0]补=00000000
[+0]补=11111111+1=00000000(由于受设备字长的限制,最后的进位丢失)
所以有[+0]补=[+0]补=00000000
|
(3)反码表示法
机器数的反码可由原码得到。如果机器数是正数,则该机器数的反码与原码一样;如果机器数是负数,则该机器数的反码是对它的原码(符号位除外)各位取反而得到的。设有一数X,则X的反码表示记作[X]反。
例如:X1= +1010110
X2= 一1001010
[X1]原=01010110
[X1]反=[X1]原=01010110
[X2]原=11001010
[X2]反=10110101
反码通常作为求补过程的中间形式,即在一个负数的反码的未位上加1,就得到了该负数的补码。
例1. 已知[X]原=10011010,求[X]补。
分析如下:
由[X]原求[X]补的原则是:若机器数为正数,则[X]原=[X]补;若机器数为负数,则该机器数的补码可对它的原码(符号位除外)所有位求反,再在未位加1而得到。现给定的机器数为负数,故有[X]补=[X]原十1,即
[X]原=10011010
[X]反=11100101
十) 1
[X]补=11100110
例2. 已知[X]补=11100110,求[X]原。
分析如下:
对于机器数为正数,则[X]原=[X]补
对于机器数为负数,则有[X]原=[[X]补]补
现给定的为负数,故有:
[X]补=11100110
[[X]补]反=10011001
十) 1
[[X]补]补=10011010=[X]原 | | |
--sunfruit
简述了IOC的意义和JAVA的反射机制
IOC模式:
看到很多Java的文档都谈到了Ioc,原来IoC就是Inverse of Control啊,就是所谓的控制反转。
即由外部传入所需的对象,而非在内部定义。好处自然就是灵活性了。当然对传入的参数的要求就是面向接口了。
Java的反射机制:
通过Class类,实现动态的生成Instance(可以使用class.newInstance调用无参数的constructor或者取得特定的Constructor,再通过Constructor.newInstance。),以及动态调用Methods和设置Fields。不过对于调用特定的Method似乎也没什么很大意义,除非是已知实现了某些interface的情况下,调用指定的Method。
相比之下,C++就不能在给定class名的情况下生成Instance了,更不要谈之后的调用Method了
--sunfruit
说明了Oracle数据库中的索引隐式失效的问题
1、隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误.
由于表的字段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内部函数导致索引失效.对于这样情况应当创建基于函数的索引.
错误的例子:select * from test where round(id)=10; 说明,此时id的索引已经不起作用了
正确的例子:首先建立函数索引,create index test_id_fbi_idx on test(round(id));
然后 select * from test where round(id)=10; 这时函数索引起作用了
--sunfruit
总结了Oracle中关于日期函数的一些用法和技巧
上月末天:
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
以下转贴:
Oracle
在日期使用上允许极大的灵活性。由于可以在日期字段存储时间和日期,从而有函数可以既引用日期又引用时间。
Oracle 所提供的一些日期函数如下所示。
1. SYSDATE
返回当前的日期和时间。
示例
SELECT sysdate FROM dual;
SYSDATE
----------
05-3月 -03
2. ADD_MONTHS(d, no_of_month)
当前日期"m"后推"no_of_month" 个月。参数"no_of_month"可为任何整数。
示例
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 之间的月份数。如果 d1 晚于 d2,结果为正,否则返回负数。
示例
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"指定的日期之后的第一个工作日的日期。参数"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 个数字表示的年
--sunfruit
java做的ftp上传软件,可以定时上传文件
JDK版本
1.4.x 推荐1.4.2
服务端软件
目前只能支持SERVER_U
参数配置
在xmlfile/config.xml里面配置连接参数
功能
可以使用FTP协议上传文件,建立文件夹,建立定时上传任务
欢迎大家提意见,交流
下载链接
http://blog.blogchina.com/upload/2005-03-03/20050303145205983322.rar
--sunfruit
非常好的JSF教程,推荐
由于本站不允许上传zip、rar文件,所以把压缩好的文件做成doc的内置对象了,打开doc解压即可
下载地址:http://sunfruit.blogchina.com/inc/JSF.doc