& Witty &
朋友们如果看下边儿有一大堆什么这个技术那个代码还有程序的看不懂,请直接自动快速的忽略,赶紧的蹂躏下边儿的内几个链接直接看我本人。
1. 减肥日记
2. 我,就TMD一俗人!!!
3. 生活 情感
4. 随来而去 随笔随想
上帝让人类有了感情,有两个目的,一个是解决人类本能的欲望,一个是让本来无味的世界变的美丽起来.
eclipse使用debugrun和jboss来调试断点
debugrun.zip是debugrun运行的批处理文件
1.将debugrun.bat复制到如下目录:
X:\…\BuildPro\jboss-4.0.3SP1\bin
其中,前面的“X:\…”为每个人的实际物理目录
2.打开debugrun.bat,找到如下内容并进行编辑
set DEBUG_OPTS=-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=9595,server=y,suspend=n
其中,address=9595是端口号,待会儿需要在eclipse中填入的,这个可以改成你想要的,也可以不进行修改
3.双击debugrun.bat启动。
4.选择你的项目,点击工具栏中的debug按钮下的”Open Debug Diaglog…”

5.在弹出的窗口中,从左侧选择”Remote Java Application”,右键点击,选择”New”,会出现如下图:

如图,把端口号修改成debugrun中实际设置的端口号9595,然后点击”Apply”应用改变,然后点击”Debug”运行。
6.然后在eclipse中会出现如下视图,

这里就是待会儿要用到的debug试图了。
7.打开你的eclipse,首先选择一个程序来设置断点,例如:
8.好了,然后运行你的程序到你设置的断点,运行后再切换到eclipse,来看看debug视图
这个是debug窗口的左侧视图
这个是debug窗口的右侧视图
这个断点结束后,可以点击左侧视图的”Resume”来继续下面程序的执行

java的传值与传引用
java的传值与传引用
java中,基本数据类型都是传值,比如int,double,lang,
java中,对象都是传引用,
特例,String对象是传值操作
=赋值操作是传引用操作
克隆分为影子克隆和深克隆
new出一个新的对象a1,在内存中开辟出一块新的区域给a1使用。
new出一个新的对象a1,在内存中开辟出一块新的区域给a1使用。同时,将a1赋值给a2,这时,也会分配内存给a2,但是a2存放的不是与a1一样的对象,而是指向a1的指针,或者说a2是a1的引用。

一个很直接的克隆例子,先new一个a1出来,然后使用a1克隆的方法给a2赋值,这是内存会分配两个区域给a1和a2分别使用,二者互不相干。
下面来说说影子克隆与深度克隆
所以影子克隆与深度克隆一个主要的区别就在于,如果一个对象A里的成员变量B是另外一个对象,影子克隆只是克隆出一份A,但是克隆出来的A里面的B还是一个指向原来A中的一个指针,而深度克隆就是出来的A中的B也是一个新的B,与原来A中的B互不相干,说的有些绕口,下面来看图。
先假定咱们有如下的class:
class B {……}
class A { B b;}
A中的一个成员变量b是B对象。

这张图说明的是影子克隆,影子克隆的结果就是a1与a2分配出了一块内存区域,b1分配出了一块内存区域,b2也是占用了内存区域,但是它是指向b1的一个指针,对b2进行改变会影响到b1跟着改变。

恩,这张图说明的就是深度克隆了,给b2分配了内存,但是这时不是指向b1的一个指针了,而是实实在在的B b2对象,对b2的改变与b1没有关系。
java的深度克隆与影子克隆的实现方法,可以参考下面的资料。
参考资料:
Java基本功——Reference
http://dreamhead.blogbus.com/logs/2005/05/1189478.html
JAVA中的指针,引用及对象的clone
http://www.ibm.com/developerworks/cn/java/l-jpointer/index.html
Java中的ListIterator与Iterator的区别
Java中的ListIterator与Iterator的区别
最近在使用Iterator迭代器遍历一个List,如果List里的元素满足一些条件,就要把这个List的这个元素给remove,或者给重新设置一个新值,remove很容易,在当前迭代的对象中直接调用remove方法即可。
但是要想改变元素的值,那就不可以了。
从网上搜资料,找到了ListIterator,先来简明扼要的说说二者最大的区别吧,
ListIterator迭代器可以增加元素,更新元素,并且可以从后往前的来对List进行迭代等等。
a.ListIterator有add()方法,可以向List中添加对象,而Iterator不能;
b.ListIterator和Iterator都有hasNext()和next()方法,可以实现顺序向后遍历,但是ListIterator有hasPrevious()和previous()方法,可以实现逆向(顺序向前)遍历。Iterator就不可以;
c.ListIterator可以定位当前的索引位置,nextIndex()和previousIndex()可以实现。Iterator没有此功能;
d.都可实现删除对象,但是ListIterator可以实现对象的修改,set()方法可以实现。Iierator仅能遍历,不能修改。
因为ListIterator的这些功能,可以实现对LinkedList等List数据结构的操作。其实,数组对象也可以用迭代器来实现。
java的Calendar对象需要注意的问题
java的Calendar对象需要注意的问题:
1.每周是从周日开始算的
周日算每周的第一天,周六算每周的最后一天。
十二月:
日 一 二 三 四 五 六
13 14 15 16 17 18 19
20 21 …
这个引发出的问题,如果计算12月17日这一周的周六周日的日期,咱们期望得到的是:
周六:12月19日,周日:12月20日,
但是实际呢?
周六:12月19日,周日:12月13日
为什么呢?因为周日是这周的第一天,所以就这样了,在咱们得到这个值后,还需要进行处理,才能按照咱们的习惯使用。
2.接着第一个问题,那咱们能不能把每周的周一定为每周的第一天呢?
Calendar有这样一个方法,setFirstDayOfWeek()
我曾经这样使用:
Calendar c = Calendar.getIntance();
c.setFirstDayOfWeek(Calendar.MONDAY);
从表面很好理解,设定c对象的每周的第一天是周一,其实不然!
Calendar.MONDAY这个常量值就是2,不可改变。
3.每年中的月份不是1-12月,是0-11月。
4.从Date转换到Calendar用如下方法:
Date d = new Date();
Calendar c = Calendar.getIntance();
c.setTime(d);
5.从Calendar转换到Date用如下方法:
Calendar c = Calendar.getIntance();
c.getTime();
db2中sql语句的另外一种update语句写法
一般的咱们常用的update语句结构如下:
1 | UPDATE TB SET FIELDNAME='FIELDNEWVALUE' WHERE xxx; |
但是今天碰到了需要更新多个字段的情况,比如需要更新10个字段,前5个字段的值来自表A,中间三个字段值来自表B,最后两个字段值来自表C,
如果要是一个一个字段的写 f=’xxx’这样太麻烦了,于是乎上网搜索,发现了另外一种写法。
1 2 3 4 5 6 7 | UPDATE TB SET (field1, field2, field3, field4......) = (SELECT field1, field2, field3, field4 FROM A JOIN B ON xxx LEFT JOIN C ON xxx WHERE TB.ID=A.ID [AND xxxx]); |
这个sql语句的意思就有些类似insert 常用的方法了,即首先在SET关键字后面写好待更新的字段列表,然后写“=”,在“=”后可以写一个联合查询,把需要的字段按照前面的顺序进行排列,再再WHERE子句中按照一定的条件进行关联,这样,update就可以了。
当遇到问题,而没有求助条件的情况下,应如何
当你遇到问题了,但是google百度都找不到解决方法,根据自己以往的经验也不能解决,想求助于人但是没有资源(比如昨天加班时别的同事都下班了),这个时候怎么办?
还是要遵守咱们的,自己思考问题的时间不能超过两个小时,以我昨天为例,一个在java application中调用jndi总是不成功,因为jndi是放在jboos或者tomcat这类容器中的,结果我就一直在试图single one解决这个问题。
其实,还有另外种方法,因为我昨天写了个添加数据库记录的service,所以要写个main方法来测试,因为没有jboos容器,一直测试不成功也解决不了jndi的调用问题,到了将近两点,已失败告终。
后来打车回家时候我在想,不应该用N多个小时来解决jndi的调用,没有求助环境,我可以先把其他的service写好,总结好遇到的问题,等到第二天上班有了同事在的时候再统一求助,这样时间规划上就会比我现在的情况要好的多。
以此为例,与大家共勉。
在时间安排上各位有什么好的建议,咱们也可以共同交流。
DB2 sql除法运算结果为小数时显示0的解决方法。
今天在DB2下写sql的时候遇到了这样的一个问题,
【分享点1:】
SELECT field1/field2 FROM TB;
当 field1的数值 > field2的数值时,除法得出的结果是<1的,即0.xxxxxx
这个时候在DB2的环境下SELECT出来的值是0
这个有两个解决方法
方法1:
DB CFG的一个参数MIN_DEC_DIV_3,这个参数在GET DB CFG FOR DB中并不会列出,但却可以修改。
数据库配置参数MIN_DEC_DIV_3会更改涉及小数的十进制算术运算的结果小数位。
默认值为No,则小数位计算为 31-p+s-s'。
如果设置为Yes,则小数位计算为 MAX(3, 31-p+s-s')。
这会导致十进制小数部分始终至少具有3位的小数位。精度始终为31。
这个方法貌似需要通过DBA对数据库进行设置,不太靠谱儿,有另外一种方法可以曲线救国,登场:
将sql语句修改为:
1 | SELECT CAST(field1 AS DOUBLE)/field2 FROM TB; |
就是先把field1转换成DOUBLE类型的,这样计算出来的就会得出小数点了,会显示出0.xxxxxx
【分享点2:】
额,接下来,需要对得出的小数点位数进行约束,那就用四舍五入吧,
1 | SELECT ROUND(CAST(field1 AS DOUBLE)/field2, 2) FROM TB; |
这个意思就是说四舍五入,保留两位小数点
【分享点三:】
但是如果field1或者field2有一个字段为NULL的话,那么结果为NULL,这个时候根据逻辑需要进行如下的一个操作,
如果数据列的值为NULL,将其设置为0,那么sql就要这么写
1 | SELECT ROUND(COALESCE(CAST(field1 AS DOUBLE), 0)/field2, 2) FROM TB; |
COALESCE这个函数系统的用法如下:
a. 输入参数为字符类型,且允许为空的,可以使用COALESCE(inputParameter,”)把NULL转换成”;
b. 输入类型为整型,且允许为空的,可以使用COALESCE(inputParameter,0),把空转换成0;
c. 输入参数为字符类型,且是非空非空格的,可以使用COALESCE(inputParameter,”)把NULL转换成”,然后判断函数返回值是否为”;
d. 输入类型为整型,且是非空的,不需要使用COALESCE函数,直接使用IS NULL进行非空判断。
好,就这么多了,OVER。。。
参考:
DECIMAL数据类型相除后的精度和小数位和数据库配置参数
http://www-01.ibm.com/support/docview.wss?uid=csc1a671ee5bc525954a4825711c002d4edb
min_dec_div_3 - 十进制分隔小数位为 3 配置参数
http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/admin/r0004470.htm
windows+apache安装awstats
由于需要,需要在一台windows服务器上安装日志统计工具,自然而然的就想到了awstats。
以前有做过在linux下配置awstats,这次再试试windows的。。。
首先需要下载几个工具,当然都是运行在windows平台的。
perl5
cronolog
awstats
下载地址分别为:
perl5: http://www.activestate.com/activeperl/
cronolog: http://cronolog.org/download/index.html
awstats: http://awstats.sourceforge.net/#DOWNLOAD
好,先安装perl5,然后从cronolog的压缩包中把cronolog.exe提取出来,
解压缩awstats压缩包,放到你想要的目录中留待备用。
Read more »
分别的7月
7月,是一个分别的季节,
中考、高考的学生们即将告别母校,进入了高一等教育的新环境,上了四年大学毕业的呢,在这个7月,带着步入社会的兴奋与忧虑,还有恋恋不舍的与四年的同学分离。
而我,也来凑份子了,来了上海四年,在这个7月,回北京,美名其曰:“海归”。
吃了几顿送行的饭,我发现,我大学散伙儿时候儿没有体验到的感觉,现在体验到了,一是因为我大学就在北京上的,同学也全是北京的,再tm怎么各奔东西能奔到哪儿啊。。。有几个像我脑子抽筋儿奔到上海来的?再加上赶上NB的非典,大学一年半咱就懵懵懂懂的毕业了,感觉?能有tm什么感觉?不知道。。。
第一顿饭,是和一帮北京爷们儿在东华大学食堂吃的,那天NB的北京二队刚踢好7人制足球儿的决赛,以4:1战胜了群魔FC,取得了冠军,然后一起喝酒,一起happy。
这应该也是回北京之前最后一次跟70后、80后北京的爷们儿们在上海聚会了,心里有些舍不得,得知我今天要走,让我说两句,我也没什么好说:“就是,甭管在北京还是在上海混,咱们都吃好、喝好、玩儿好吧!”没什么创意,但是很实惠。。。
记得以前看完球儿吃完饭,都是挥挥手就走了,这次不一样,在东华大学门口儿,跟他们道别,慢慢离去。。。
后来,和公司UED还有MKT的同事聚餐,吃火锅儿,喝酒,唱歌儿,唱到嗓子哑了,还唱,喝到多了,还喝,喝到头疼大声的发泄,一会儿三个小时的欢唱就结束了还意犹未尽。
第二天中午,跟公司PD的同事吃饭,虽然没有喝酒,没有怎么说话,也不想说太多,既然不是生离死别,那就有机会再见,短暂的会餐,一起相处了一年半的同事,就尽在不言中吧。。。全都好好儿发展涨工资发财吧。。。
昨晚和Javem还有Linda吃饭,聊到我四年前是为了自己而来,四年后,又为了自己而走。一晃儿就在上海生活了四年了啊!
Javem送我下车的时候儿,握了握手,说:“回北京,好好儿发展!”那一刻,我真的很感动!
包括这次借住在好友儿凤毛家,还有很多没来得及见的朋友,都给了我很大的帮助,我要谢谢你们!
今天上午,msn上和开心网上,又收到了北京爷们儿七哥还有小艾的祝福,还有lily,谢谢你们!
不想再tm感动了,也就不再多BB了,都他妈逼的好好儿混吧!!!
还有她,祝她幸福、快乐!
再见!
车水马龙衡山路。。。
昨天去衡山路的百度酒吧喝酒,从衡山路四号口儿出来,由于朋友那边儿貌似堵车,在路边儿等了他半个钟头。。。
一边儿等着,一边儿看着路边儿的景儿,周末了,平时工作的,闲着的,年轻的,上了岁数儿的,姑娘们,帅小伙儿,在这个夜晚,这个时候儿,都出动了。。。
在衡山路路过最多的是出租车。
车,把我带到酒吧,我给司机钱;
酒吧,我进去酒吧,喝酒,我给酒吧钱。
仿佛这就是一个挥霍的时间,挥霍的夜晚。
有酒吧的人在外对着老外拉客的,
有靓女勾着洋鬼子假洋鬼子的,
有美女单独开着本田小跑儿来的,
还有成群结队的朋友们一起走进某个酒吧的,
还看见一个坐在副驾驶座儿的小年轻儿对着反光镜摆弄头发的,
有背着自己另一半儿、或者带着自己另一半儿来的,
。。。。。。
不同的人,以不同的方式,来到了酒吧,但是目的是一样的,这让我想起了老主席的一番话:
“
我们都是来自五湖四海,为了一个共同的革命目标,走到一起来了。我们还要和全国大多数人民走这一条路。我们今天已经领导着有九千一百万人口的根据地⑷,但是还不够,还要更大些,才能取得全民族的解放。
”
对,形形色色的人向这里聚集就是为了同一个目的,让自己放纵,让自己happy。
很久以前我很排斥去酒吧,认为酒吧不正经,现在看来,这只是一种现在年轻人和不承认自己老的人的生活方式罢了,即便真的有的抱着撮花儿打蜜、傍款套现等等见得人的不见得人的目的又怎么了?也没招着自己不是么?
再说了,一礼拜,正经五天跟个人似的了,放纵两天做回真正要开心,有欲望的本性的人又有何妨?
端起一杯酒,下肚儿,踏实;
站在舞池里,舞动,恣情发泄、放纵。
灯光昏暗,烟雾缭绕,窝在卡座儿里,喝着酒,看着他们,享受。
手机响了,朋友到了。。。
今天借着还没有完全挥发的酒精和香烟的熏陶,记录下昨天的感受。


我的简介: 谁说tmd巨蟹座傻来的?我就是tmd巨蟹里边儿最聪明的!!!