用技术创造价值,用艺术塑造自我!
Posts tagged javaeye
学习python的那点事
Oct 14th
为了响应程序员界的“学习第二门语言是必须”的号召,结合google发布了Google App Engine的框架,我买了本《Python核心编程》,主要目的还是想好好的看看面向对象的动态语言的威力。首先感谢宋吉广能够联合python社区的人能够帮助我们这些英语差劲的广大国民,不过看了一般我就像骂人了,NND,书中的错误如此之多,后来我看了一下网上的讨论,才知道此人是一个剽窃大家劳动成果者,鄙视了一把(证据:chinaunix,豆瓣,原稿)。为此,我不得不把书上的案例一个个的执行,防止这本书误导了我。学习python真是出师不利!
在blog中只想简单谈谈输入输出:首先是输入的问题,如果 str = raw_input(’Enter you words:’)的话,在windows按下回车后,总是不能正确的获取到输入结果,因为程序会带上结束符。所以代码应该写为:str = raw_input(’Enter you words:’).strip()才可以争取的获取。实例:
str = raw_input(’Enter you words:’).strip()
while True:
if str == ‘.’:
print ‘Python input ended!’
break
else:
print ‘You are press string is %s’ % str
输出的代码和C语言的基本是一致的,不过有一点动态语言的优势就是:可以超级简单的打印出N个重复的字符出来,例如:print “- ” * 100 就是打印出一行分割线。
后面的python的对象,函数,字符串,序列,元组,映射,集合,文件操作,异常控制这几张都读完了,书上的例子虽然有好多执行结果和书上的结果不一致的地方,这让我在不断的从怀疑的角度读书,第一次看书疑心这么重,也算是比较投入。目前还属于摸索阶段,还没有写一个应用程序出来,Django还没有看一个示例,后面学习的路虽然还很长,相信自己有了java的一点基础,应该在理解方面不是很困难。
今天在javaeye上看到有python的社区开设了,以后没事还是把自己的心得写一下发表上去。今天的写的内容是一个标记,看看一年后能够发多少python相关的有质量的帖子。
—————分割线——————————————————————–
没事看唐浩明写的《曾国藩》,现在还剩下两个章节就结束了。现在仔细回头看看初中的历史,一群王八蛋+无知之徒,竟然把国家栋梁描述的和实际情况有天壤之别。曾国藩对清政府的两大贡献:1,镇压了天平天国;2:培养人才和实事求是的办洋务;对整个民族的贡献:为官者的楷模(清廉,有学识,有远见,知人善用,敬忠职守,大度……),如果共和国……(不谈政治)。尤其是高傲的左宗棠也这样说:知人之明,谋国之忠,自愧不如沅辅……
偶尔说一下51.com
Jul 28th
今天看到51.com的老总庞升东的blog(csdn的专栏,51.com,域名的不可用(pangshengdong.com)),有一种不知所云的感觉,严重怀疑是别人在替他写文章,作为一个老总,文笔如此之差,并且引用别人的文章如此之多的现象还属罕见,我不禁想说的是:哥们,能否多多的说一下个人的简介,不要无病呻吟好不好?
看了csdn上的庞升东的blog,说是专栏我就觉得奇怪了,这个人的blog到底为csdn做了什么技术上的贡献,作为一个技术主导的网站,让这类对技术几乎不能发表观点的人上来写专栏,是否是csdn最近走下坡路的主要原因?过多的没有价值的内容充斥了csdn的主要板块,直接导致我有疑问就去javaeye了,偶尔上csdn上看看新闻,但是从来不做什么讨论了,现在帐号的密码都忘记了。
以前一个关外的堂妹过来玩,我奇怪他为什么上51.com,结果他告诉我是朋友推荐她上的,看来51.com还是有很厚的底层群众基础的,不过我的同学好像都不是51.com的用户,以前是sohu,sina,blogcn,歪酷等blog系统上注册帐号,现在大部分都在校内网上混了。史玉柱所关注并且愿意投资51.com的最佳理由或许是:一群没有自制力的年轻人组成的用户群,这样的孩子的钱TMD比较好赚啊!(个人观点,并非诽谤!)
一个企业的发展和老总有很大的关系,一个会做运营的,能够很好的鼓励员工的老总可以带领企业向前冲,例如:任正非,李彦宏,马云……不过看了庞升东的blog和文章,并没有感觉到他和我认可的企业家有共同点,或许是出道早,机遇好的缘故吧!他能在资本市场上折腾的不错,还是证明他有其他值得关注的能力。不过还是建议他不要在blog上写无关痛痒的话或者引用别人的文章或者谈话了。
—————————分割线———————————————————————
周六在国外的一个同学回来了,在世界之窗小聚了一下,和我女友的合影放给大家拍拍!
对null Object的使用的认识和思考
Jul 17th
本次编码的时候犯了一个愚蠢的错误,在几乎所有的biz和manager层加了一个public static final String NULL = null;以此来作为统一的空对象,而这个完全是多次一举,因为null就可以直接代替,就此看来自己完全没有一点点面向对象的概念。为了防止犯类似的错误,决定查询资料好好讨论一下null Object的使用。
1:返回一个空的域对象而不是null;
在基于领域模型的设计中,在底层定义的domain Object在数据库查询的时候可以返回为空,在此我们先定义一个Do对象。
public class Tree{
private Integer height;
private Integer age;
private String name;
private Double diameter;
//树叶的域对象;
private Leaves leaves;
// get set methods……
}
2:在DAO层封装和数据库交互的基本方法后,我们在business层开始对业务逻辑进行简单的封装。当我们提供一个findTree的方法的时候,如果在数据库中查询一个年龄为16岁的tree对象为空,一般的情况下我们返回为null对象,这样就会导致程序在要取值的时候必须判断是否为空,实例如下:
public class TreeBiz{
public Tree findTree(Tree tree){
//在这个地方思考一下,如果返回的tree为空的话,下面的方法调用的问题;
// treeDao.findTree(tree)……
}
public String treeName(Tree tree){
return tree.getName();
}
}
3:如果获取的tree对象为空的话,就会报空指正的错误。所以必须加上if(tree != null)……而这样就会导致程序中过多的判断了空,不够简洁,同时也很容易出错。
如果我们在域对象中重新定义一个空的对象,然后在dao层封装一下,代码的健壮性就会增强了很多。示例如下:
public class Tree{
//增加一个空的tree对象
public static final Tree NULL = new Tree();
private Integer height;
private Integer age;
private String name;
private Double diameter;
//树叶的域对象;
private Leaves leaves;
// get set methods……
}
4:在DAO层封装一下获取tree对象的方法
public class TreeDao{
public Tree findTree(Tree tree){
Tree tree = ……
if(tree == null){
//返回一个空的Tree对象
return Tree.NULL;
}else{
return tree;
}
}
}
这样在业务逻辑层调用TreeDao方法的时候就很不会出现对象空指针的问题,增强了程序的健壮性。
有人或许会问,为什么在为空的时候不直接 new Tree(), 首先:new一个对象需要分配新的内存开销,而static final的NULL对象则在内存中有一块无法改变的存储空间,降低了系统的开销;其次,NULL对象在执行期就被初始化,返回NULL只用指向该内存地址,而不是重新分配地址,提高的性能。
使用NULL Object模式可以确保在DAO层返回有效的对象,及时在查询失败的时候也是如此。这些代表失败的对象“什么也没有做”!
