摘要: 《effective java》第二版第43条是:Return empty arrays or collections, not nulls。意思是在需要返回数组或者集合的方法中,如果需要返回空数据,不要返回null,而是要返回大小为0的数组或者集合。本文是对这条内容的总结和反思。阅读全文
posted @ 2012-03-29 18:53 gshine 阅读(36) 评论(0) 编辑
摘要: 传统的使用jdbc来访问数据库的流程为: Class.forName(“com.mysql.jdbc.Driver”); String url = “jdbc:mysql://localhost:3306/test?user=root&password=123456″; Connection con = DriverManager.getConnection(url); Statement statement = con.createStatement();最开始使用的时候,不明白为什么首先要加载一个驱动类,之后就可以取得了Connection了,很好奇DriverManager是怎么阅读全文
posted @ 2012-03-15 16:16 gshine 阅读(136) 评论(0) 编辑
摘要: 这两天在写代码的时候,由于涉及到资源的位置,因此,需要在Java Bean中定义一些字段,用来表示资源的位置,比如:imgUrl,logoUri等等。但是,每次定义的时候,心里都很纠结,是该用imgUrl还是imgUri呢?同样的,另外一个问题:String HttpServletRequest.getRequestURI();和StringBuffer HttpServletRequest.getRequestURL();返回的内容有何不同?为什么会如此?带着这些问题到网上去搜了下,没发现让自己看了明白的解释,于是,想到了Java类库里有两个对应的类java.net.URI和java.net阅读全文
posted @ 2012-02-04 22:02 gshine 阅读(99) 评论(0) 编辑
摘要: spring和apache commons-beanutils中分别存在一个BeanUtils,提供了对java bean的常用操作。之前在写程序时,用到了两个不同类型但属性基本相同的对象的拷贝,结果在拷贝java.util.Date类型的对象属性时,由于其值为null,而抛异常。由于时间紧急,所以临时改成了get/set方式,幸亏对象的属性不算多。后来一直耿耿于怀这个问题,今天抽空看了一下spring和apache commons-beanutils包中BeanUtils.copyProperties的实现。spring中实现的方式很简单,就是对两个对象中相同名字的属性进行简单get/set阅读全文
posted @ 2011-08-23 22:17 gshine 阅读(74) 评论(0) 编辑
摘要: 2010-10-19 阿里巴巴 卫哲 校园宣讲会 卫哲在演讲中给出了四个不加盟阿里巴巴的理由,包括工资非最高、要放弃北京去杭州、马云和他都不是技术型CEO以及不想长年累月加班。最后 关于选择 这段话 个人觉得很有道理 分享以共勉[选择了,就不后悔,同样的,你没有选择阿里巴巴,也不要后悔。人生不快乐的一个原因就是对自己的选择后悔,媒体经常问我,卫哲,你现在快四十了,你所有的经历重新来一遍,你会做什么不一样的事,我说我会做一模一样的事,我认为我的经历是最好的,我不后悔,因为后悔也没有用,人生不可能让我重新来一遍,相信我今天所作的每一步选择都是最正确的,我也相信我们做的事、跟的人都是最好的选择,所以阅读全文
posted @ 2010-11-12 16:20 gshine 阅读(113) 评论(0) 编辑
摘要: 快速修改论文的参考文献阅读全文
posted @ 2010-11-06 21:22 gshine 阅读(259) 评论(0) 编辑
摘要: Which Areas of China Have You Been To?This is my China Map up to 2010-11-6, how about yours?create your own China map阅读全文
posted @ 2010-11-06 09:55 gshine 阅读(48) 评论(1) 编辑
摘要: 之前没怎么关注qq和360之间的明争暗斗,直到昨天晚上腾讯弹出了那个窗口,那封信,“当您看到这封信的时候,我们刚刚作出了一个非常艰难的决定。我们将在装有360软件的电脑上停止运行QQ。。。。”说实话 看到这个消息的时候,我很震惊。疯了,腾讯绝对疯了,竟然拿这个来要挟用户,要么卸载360,要么不要用qq了。这简直是在那用户的利益来当赌注。。。我已经很久没用360了,之前用过,还不错,但是后来发现这个软件越来越臃肿,因此就把它卸载了,个人还是很喜欢简单的,不喜欢看到很多根本没用的功能。但是,在看到腾讯的那个公告之后,我第一时间把qq给删除了,尽管我的电脑上没有360。之前大约听到他们之间的斗争,3阅读全文
posted @ 2010-11-04 21:52 gshine 阅读(213) 评论(2) 编辑
摘要: 在jsp中设置了Cookie,可在Servlet中无法读取出相应的Cookie,搜了好多,最终是通过参看Cookie的API文档解决的。其实解决方法很简单,只要设置一下Cookie的path就可以了。另外,如果新建的Cookie不设置maxage的话,关闭浏览器之后该Cookie就失效了。解决了此问题后,顺便看了下Cookie的原理及相关的Java API文档,整理如下:what is Cookie?Cookie 是在http和https协议中,用来实现会话管理(session management),在用户终端(比如浏览器)上存储的一小段数据。一般用来存储用户的习惯(user prefere阅读全文
posted @ 2010-08-18 16:30 gshine 阅读(517) 评论(0) 编辑
摘要: 主系统是Ubuntu 10.4, 装的是VirtualBox 3.2.6 然后建立虚拟机装win xp系统。1 无法在ubuntu和xp之间复制/粘贴文字。确保你的XP虚拟机的“设置”中的粘贴功能已经开启。当你运行XP时,“设置”功能是禁用的,必须先停掉XP才能设置。如果上述方法不行,如果你安装了VBoxGuestAdditions,在xp系统中打开任务管理器,杀掉VBoxTray.exe进程,然后新建此进程就可以了。2 在XP中使用USB功能如果你想在XP虚拟机中使用移动硬盘或者u盘等usb设备,那么默认usb功能是禁用的(灰色不可选择)。一般为:菜单栏‘设备-分配usb设备-generic阅读全文
posted @ 2010-08-12 14:10 gshine 阅读(419) 评论(0) 编辑
摘要: 最近利用空余时间看了一下《Unix/Linux编程实践教程》,原书名为:Understanding Unix/Linux Programming: A Guide to Theory and Practice。感觉这本书写的还是不错的,讲的Unix/Linux系统编程,主要是通过讲解Unix系统上的命令程序是如何实现的来分析了Unix系统的原理和系统编程。比如讲解了who,cp,ls,pwd等命令用Unix C语言应该怎么实现。通过这种讲解方式,不仅学会了Unix的系统编程,而且还弄懂了Unix操作系统的一些原理性的东西。感觉写的非常不错。那么,Unix/Linux下的系统编程要学哪些东西呢?阅读全文
posted @ 2010-06-11 18:49 gshine 阅读(484) 评论(0) 编辑
摘要: ==========================Active Object Pattern========================================Active Object 模式是Command模式的一种,是实现多线程控制的一项古老技术 . 在《敏捷软件开发》这本书中描述的算法如下: 1、构造一个命令。(实现Command模式的一个命令) 2、将该命令放入Active Object Engine(也就是放入一个队列,LinkedList) 3、从该Engine取出一个命令,执行,若该命令没有执行过,设为执行过,然后将自己加入队列尾部,若执行过,判断该命令执行需要的事阅读全文
posted @ 2010-06-10 15:16 gshine 阅读(97) 评论(0) 编辑
摘要: ===============Thread-Specific Storage Pattern============================比较复杂,转一篇前辈的。http://www.blogjava.net/jesson2005/articles/111204.html无论如何,要编写一个多执行绪安全(thread-safe)的程式总是困难的,为了使用的共用资源,您必须小心的对共用资源进行同步,同步带来一定的效能延迟,而另一方面,在处理同步的时候,又要注意物件的锁定与释放,避免产生死结,种种因素都使得编写多执行绪程式变得困难。Thread-Specific Storage模式尝试从阅读全文
posted @ 2010-06-10 15:09 gshine 阅读(73) 评论(0) 编辑
摘要: 《Java多线程设计模式》读书笔记4 -- Two-phase TerminationTwo-phase Termination模式就是让线程正常结束,也就是结束之前进行一些善后处理,释放掉该释放的资源,完成自己当前的任务。在Java语言中,有一个方法stop,这个方法会使当前线程结束,但是不应该使用这个方法,因为他将会导致灾难性的后果。应该使用设置标志的方法来替代stop方法。转一篇关于该模式的博文http://www.blogjava.net/jesson2005/articles/111202.htmlTwo-phase Termination直譯的話是「兩相終止」,不過就這個模式而言,阅读全文
posted @ 2010-06-10 15:06 gshine 阅读(82) 评论(0) 编辑
摘要: 《Java多线程设计模式》读书笔记3目录:1 Thread-Per-Message Pattern2 Worker Thread Pattern3 Future Pattern===================Thread-Per-Message Pattern===============Thread per message,每个消息一个线程。Message 在这里可以看作是“命令”或“请求”的意思。对每个命令或请求,分配一个线程,有这个线程执行工作,这就是Thread-Per-Message Pattern。Thread-Per-Message Pattern的适用场合:1. 适合在操阅读全文
posted @ 2010-06-10 15:05 gshine 阅读(381) 评论(0) 编辑
摘要: 《Java多线程设计模式》读书笔记2目录:1 Java的内存模型2 Single Threaded Execution Pattern3 Guarded Suspension Pattern4 Balking Pattern5 Producer-Consumer Pattern6 Read-Write Lock Pattern=============Java的内存模型======================Java的内存模型分为主存储器与工作存储器两种。主存储器(与硬件上的主存无关,仅为抽象概念)就是实例位置所在的区域,所有的实例都存在于主存储器内。尤其是实例所拥有的字段即位于主存储器内阅读全文
posted @ 2010-06-10 15:04 gshine 阅读(324) 评论(0) 编辑
摘要: 最近抽空看了一下《Java多线程设计模式》这本书,书讲的还是不错的,讲述的方式也很简洁明了,读起来很舒服。在此记录一些概要心得,就当读书笔记吧并发(Concurrent)与并行(Parallel):程序的处理不断在各线程之间切换,一般是只有一个CPU,所以并不是同时在运行,这叫并发(Concurrent);如果具有多个CPU,则多个线程之间就可能同时运行,在某一时间点上,有多个操作在同时进行,这叫并行(Parallel)。线程的启动:1)利用Thread类的子类的实例,启动线程。即继承Thread类,在子类中重写run()方法,然后新建Thread子类的实例,调用start()方法。(注意,不阅读全文
posted @ 2010-06-05 16:48 gshine 阅读(179) 评论(0) 编辑
摘要: 不知道有没有人想要这东西,要的自取吧。http://t.qq.com/invite/2896e06ec35274893f89http://t.qq.com/invite/b4ab52d08212cc9e83afhttp://t.qq.com/invite/b4272ab8133d8344fa17http://t.qq.com/invite/0f103f21a4161ad20f0fhttp://t.qq.com/invite/004380753af83e02f67dhttp://t.qq.com/invite/9a8f0ab28b3b24541203=============5-28更新====阅读全文
posted @ 2010-05-27 10:25 gshine 阅读(65) 评论(0) 编辑
摘要: 今天zzb反馈消息说,网站的后台编辑页面,无法上传文件和图片,点击编辑器的按钮没反应,IE8显示JS错误,缺少对象,editor.js 132行。上网一查,原来是eWebEditor的浏览器兼容问题。以前在IE6下面是没问题的。editor.js 132行代码是:if (element.YUSERONCLICK) { eval(element.YUSERONCLICK + “anonymous()”);}原因是ie8屏蔽了anonymous方法所以要改成onclick方法。网上的解决方法如下:(加个判断浏览器的语句)if(navigator.appVersion.match(/MSIE (7|阅读全文
posted @ 2010-05-10 14:13 gshine 阅读(2763) 评论(2) 编辑
摘要: 【为什么要使用并发?】1. 提高程序运行速度当在多核或者多处理器系统上运行时,并发程序能够充分利用多个执行单元以加快速度;但是,当在单处理器上运行并发程序时,则要分两种情况:当程序中存在阻塞时(比如遇...阅读全文
posted @ 2010-01-21 10:05 gshine 阅读(245) 评论(0) 编辑
摘要: 今天是2010年1月18日,离我首次在博客园写博客已经整整3年了,呵呵,那时是2007年1月18号,读大三。这三年,并不是一直坚持在这写日志,期间也离开了一段时间,但是比来比去,最终还是留在了这里。有时候之所以选择或者不选择某样东西,仅仅是因为它满足了或者不满足你的一些要求,而那些要求就正是你在乎的或者不能忍受的。而这些年也见证了博客园的发展,现在的博客园无愧是.net技术社区的佼佼者,而且,给我的感觉,在这里给人一种家的感觉。。。虽然现在不用.net了,但是还是基本上每天都登录博客园,看看业界新闻,偶尔闪一下。当然,博客园也有点令人不爽的地方,比如后台管理里面的随笔,文章,日记等等,很多都用阅读全文
posted @ 2010-01-18 20:15 gshine 阅读(55) 评论(0) 编辑
摘要: 在“struts.xml”文件中增加或修改constant元素,设定<constant name="struts.action.extension" value="do,action" />,其中value为你要设定的后缀名。阅读全文
posted @ 2010-01-14 20:00 gshine 阅读(653) 评论(0) 编辑
摘要: 为了统计自己电脑里面的音乐文件,用java写的一个遍历目录的程序。采取了递归和非递归两种方法。为了筛选音乐文件,采用策略设计模式对文件名过滤。技术为辅,纯粹为了扯淡。。。阅读全文
posted @ 2009-12-01 21:20 gshine 阅读(533) 评论(1) 编辑
摘要: Institutionalized: 体制化的,使成为惯例的。“这些墙很有趣。一开始你恨它,慢慢你就习惯了,到后来你便不能离开它了,这就是‘体制化’。”,“要么忙着生存,要么忙着去死”-------《肖申克的救赎》观后感阅读全文
posted @ 2009-11-27 10:48 gshine 阅读(135) 评论(0) 编辑
摘要: 前天看到师兄新买了本《java程序员,上班那点事儿》,听师兄说挺好,就花费了周六,周日的两个上午把它看完了。看完之后感觉确实写得很好。里面涉及到了java程序员的求职,学习方向和方法以及发展方向等,里面也写到了java的很多技巧,尤其是对于内存的管理问题,最近自己也一直考虑这个问题,java确实比较浪费内存,但是其实还是可以通过优良的编码习惯来改进它的。优秀是一种习惯。里面还写到高手与菜鸟的区别,高手,其实就是多了一点关注细节,多了一点融会贯通,多了一点“思考”。还有就是里面写到了网络应用层协议的设计,感觉这方面的东西还是很有意思的。其实,最近一直在迷茫下一步该加强哪些方面的学习,看完了这本书阅读全文
posted @ 2009-11-01 21:59 gshine 阅读(74) 评论(1) 编辑
摘要: 2维数组data,M行,每一行代表一组数据,每组数据内有序
要求:从每一组数据中,取出且仅仅取出一个数,然后使这些数据的和满足[MIN, MAX]范围。阅读全文
posted @ 2009-10-31 16:54 gshine 阅读(472) 评论(2) 编辑
摘要: 今天整理电脑,发现了上学期写的类似于QQ的程序,当时老师让用RMI实现一个小系统,于是就用java rmi完成了一个类似于QQ的即时通讯工具,并把它命名为RmiTalker,主要完成了以下功能:
1.用户注册:用户填写基本信息,系统自动生成TmiTalker号码,然后用户可以利用此号登录
2.用户登录:使用注册的号码登录
3.加好友:用户可以查找注册的用户,并且加为好友
4.即时聊天:收到消息后好友的名字将以橙色显示。
5.离线留言:如果好友不在线,可以留言,好友上线后就会看到留言……阅读全文
posted @ 2009-10-07 18:08 gshine 阅读(2157) 评论(8) 编辑
摘要: 对于每个servlet,在一个服务器里只构造一次,然后调用init()函数一次,之后这个对象就被用来处理后面的请求。在服务器里每个servlet仅有一个对象,然后在不同的线程里调用service()函数,处理请求。(注:那么是不是service()方法里或者doGet/doPost方法里要注意并发访问呢?),一般不要在servlet里面放置成员变量。阅读全文
posted @ 2009-09-16 13:31 gshine 阅读(424) 评论(0) 编辑
摘要: 本文介绍了Apache http server与tomcat服务器的区别以及联系,介绍了web服务器和应用服务器以及它们之间的区别。阅读全文
posted @ 2009-09-15 15:45 gshine 阅读(251) 评论(1) 编辑
摘要: struct sockaddr {unsigned short int sa_family; /* address family, AF_xxx */char sa_data[14]; /* address */};sa_family是地址家族,是“AF_xxx”的形式。常设为“AF_INET”,代表Internet(TCP/IP)地址族。sa_data是协议地址,由sa_family决定。如果sa_family=AF_INET,则sa_data就是sockaddr_in的sin_addr和sin_port。换句话说,这时sockaddr可以当作sockaddr_in看。struct sock阅读全文
posted @ 2009-09-12 09:11 gshine 阅读(809) 评论(0) 编辑
摘要: Java把异常当作对象来处理,并定义一个基类java.lang.Throwable作为所有异常的超类。Throwable类是所有异常和错误的超类,有两个子类Error和Exception,分别表示错误和异常。其中异常类Exception又分为运行时异常(RuntimeException)和非运行时异常,也称之为不检查异常(Unchecked Exception)和检查异常(Checked Exception)。Error是程序无法处理的错误,比如OutOfMemoryError、ThreadDeath等。这些异常发生时,Java虚拟机(JVM)一般会选择线程终止。 Exception是程序本身阅读全文
posted @ 2009-08-28 10:51 gshine 阅读(124) 评论(0) 编辑
摘要: 你觉得自己是一个Java专家吗?是否肯定自己已经全面掌握了Java的异常处理机制?在下面这段代码中,你能够迅速找出异常处理的六个问题吗?阅读全文
posted @ 2009-08-28 10:35 gshine 阅读(181) 评论(0) 编辑
摘要: abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进行抽象类定义时对于abstract class和interface的选择显得比较随意。
其实,两者之间还是有很大的区别的,对于它们的选择甚至反映出对于问题领域本质的理解、对于设计意图的理解是否正确、合理。本文将对它们之间的区别进行一番剖析,试图给开发者提供一个在二者之间进行选择的依据。阅读全文
posted @ 2009-08-25 16:36 gshine 阅读(100) 评论(0) 编辑
摘要: 一个不认真工作的人是不可能会有美好生活的,但同样一个不懂得生活的人是不可能工作好的!阅读全文
posted @ 2009-02-17 20:51 gshine 阅读(163) 评论(0) 编辑
摘要: 春节回来这几天,把《网站重构-应用web标准进行设计》(第二版)从头到尾看了一遍,虽然在本科的时候就听说了这本书(当时是第一版),并且也把电子书早早的下载到电脑里,可是一直没有机会看,呵呵,其实是那段阅读全文
posted @ 2009-02-10 15:32 gshine 阅读(62) 评论(0) 编辑