2007年01月
今天继续努力,调整自己的心态,勇于面对现实,该来的就来吧,没什么好逃避的。阅读全文>
发表于 @ 2007年01月31日 10:08:00|评论(loading...)|编辑
虽然Unix上的文本编辑器已经越来越好用,但不在Console前面,网速也不够连XWindows的时候,还是要依赖VI。
回想VI的时代背景,发现VI对开发人员已经周到得离谱了,热键多到你双手不离键盘就能完成大半编辑工作。
建议自己制作一张自己认为有用,但又经常忘记的命令的sheet,拿出考试的力气把它背熟。
阅读全文>
发表于 @ 2007年01月30日 13:00:00|评论(loading...)|编辑
最近加班太频繁了,整天坐着写代码,腰疼的厉害,中午去百盛买了个靠背,垫到腰下面,还挺舒服的。晚上从会议室换了把椅子,比以前坐着得劲多了!
阅读全文>
发表于 @ 2007年01月28日 18:57:00|评论(loading...)|编辑
上午收到老婆的短信,说今天儿子 今天吃了俩个汉堡,半个蛋挞,一杯果汁,呵呵,跟小猪一样,问了周围的同事,没有一个人一次吃过俩个汉堡的,这小子的肚子怎么能放这么多东西。阅读全文>
发表于 @ 2007年01月28日 18:47:00|评论(loading...)|编辑
我心坦然,因为我尽力了,,,,,,
我依然会努力,因为我是为自己工作。。。。。。
阅读全文>
发表于 @ 2007年01月27日 19:28:00|评论(loading...)|编辑
http://www.opensource.org/licenses/阅读全文>
发表于 @ 2007年01月23日 21:14:00|评论(loading...)|编辑
所谓Dynamic Proxy是这样一种class:它是在运行时生成的class,在生成它时你必须提供一组interface给它,然后该class就宣称它实现了这些interface。你当然可以把该class的实例当作这些interface中的任何一个来用。当然啦,这个Dynamic Proxy其实就是一个Proxy,它不会替你作实质性的工作,在生成它的实例时你必须提供一个handler,由它接管实际的工作。阅读全文>
发表于 @ 2007年01月23日 20:49:00|评论(loading...)|编辑
1、 SRP--一个类应当只有一个发生变化的原因。
2、 OCP――应当能够改变一个类的环境,而无须改变类本身。
3、 LSP――避免造成派生类的方法非法或退化,一个基类的用户应当不需要知道这个派生类。
4、 DIP――用依赖于接口和抽象类来替代依赖容易变化的具体类。
5、 ISP――给一个对象的每一个用户一个接口,这个接口仅有用户需要的方法。
阅读全文>
发表于 @ 2007年01月21日 19:30:00|评论(loading...)|编辑
该文群命令一种用法(流水线操作)实际展示了命令模式+职责链的使用,或者说命令组成的Filter过滤器模式,这种方式可以重构if else逻辑。
使用Map的群命令也是常用的一种过滤器实现,这种方式性能好,也可以重构原来的if else逻辑。
阅读全文>
发表于 @ 2007年01月21日 13:25:00|评论(loading...)|编辑
CompositeEquipment继承了Equipment,同时为自己里面的对象们提供了外部访问的方法,重载了Iterator,Iterator是Java的Collection的一个接口,是Iterator模式的实现.
阅读全文>
发表于 @ 2007年01月21日 12:57:00|评论(loading...)|编辑
实际整个Strategy的核心部分就是抽象类的使用,使用Strategy模式可以在用户需要变化时,修改量很少,而且快速.
Strategy和Factory有一定的类似,Strategy相对简单容易理解,并且可以在运行时刻自由切换。Factory重点是用来创建对象。
阅读全文>
发表于 @ 2007年01月21日 12:06:00|评论(loading...)|编辑
这篇文章看了很多遍了,但一直不能彻底理解,不是不理解这样的好处,而是从文中一直find没有彻底的解决办法......阅读全文>
发表于 @ 2007年01月20日 21:03:00|评论(loading...)|编辑
规范的软件开发流程、规范的代码编写习惯,从细微出可见大公司的规范化运作......阅读全文>
发表于 @ 2007年01月20日 19:04:00|评论(loading...)|编辑
本文讨论了自动化远程服务发现如何简化复杂的多层企业级应用的开发和布署。作者通过布署在Jboss环境中的基于Spring的应用演示了这人过程。本文假设读者已有一些Spring框架的知识。
看了一遍看不懂。留着以后慢慢看。阅读全文>
发表于 @ 2007年01月16日 20:57:00|评论(loading...)|编辑
RUP:以迭代增量式、架构为中心、用例驱动的软件开发方法、采用UML语言描述软件开发过程为主要特征;
XP:其主要特征是要适应环境变化和需求变化;十二条原则:计划游戏、小版本、隐喻、简单设计、测试、重构、结队编程、代码集体所有、持续集成、每周工作40小时、现场客户、编码标准;
CMM:初始级、可重复级、已定义级、已管理级、优化级;
阅读全文>
发表于 @ 2007年01月16日 20:05:00|评论(loading...)|编辑
简单设计一种概念,一种可以接受的简单的设计,最起码数据库已经定下来,基本流程已经确定的方案,来作为程序设计的开始,并随时根据实际情况的进展来修正具体的功能设计,但这种功能修改不能是修改数据库结构。也就是说数据库结构是在编程之前经过反复论证的。这种方法减少了前期设计的时间,把代码编写工作和部分设计工作放在了一起,实际缩短了项目开发的时间。如果说完全设计方法要求有很厉害的前期设计人员,那么简单设计要求有很有设计头脑的编程人员。编程人员不仅仅是K代码的人而且要负责程序架构的设计。所以对程序员的要求就很高了。 简单设计的成功的一个基点是编程人员设计的逻辑结构简单并能根据需要来调整其逻辑结构,就是代码结构灵活,简单设计带来的另外一个变化就是会议会比较多,编程人员之间的交流就变的很重要。阅读全文>
发表于 @ 2007年01月16日 19:37:00|评论(loading...)|编辑
身为项目主管,你必须明白这个道理:如果您希望每个人都满意,最后您会焦头烂额,什么事都做不成。
记住:不要为了讨好别人而伤害工作进程,您永远要根据自己的目标,做适当的决策。
同样,对待上级的建议您也应该考虑后再决策,不要盲从。应该以项目目标为最优先的考虑。我不是主张反抗权威,而是强调:上级也是人,一样可能犯错,他们的建议不一定是最好的,如果你想做一名出色的主管,您必须非常认真的衡量所有的建议,不论是谁提出的,您都得确定其符合项目目标才能采纳。
如果上级要求您做一件事,而您认为不妥,那您应该在着手进行之前向上级说明您的想法,也许上级回同意你的想法而放弃他的建议,也许,上级会赞许你的想法,但仍请你考虑他的意见,不论结果如何,起码经过沟通对彼此都有帮助。
记住:是你在为项目负责,不要让任何人的建议阻碍项目的进行,包括上级的建议。
想确保项目按计划进行,其关键就在于项目经理完全明白该做什么,并且不让该做的事受到不当的干扰。
阅读全文>
发表于 @ 2007年01月15日 21:18:00|评论(loading...)|编辑
应用了SSL加密机制后,IIS服务器的数据通信过程如下:首先客户端与IIS服务器建立通信连接,接着IIS把数字证书与公用密钥发给客户端。然后使用这个公共密钥对客户端的会话密钥进行加密后,传递给IIS服务器,服务器端接收后用私人密钥进行解密,这时就在客户端和IIS服务器间创建了一条安全数据通道,只有被IIS服务器允许的客户才能与它进行通信。
阅读全文>
发表于 @ 2007年01月15日 21:12:00|评论(loading...)|编辑
Tomcat 4.0.2
用途:Web Server。
下载: http://jakarta.apache.org/builds/jakarta-tomcat-4.0/release/v4.0.3/bin/
JSSE 1.0,2
用途:用来产生Tocmcat使用的秘钥对(keystore)。
下载: http://java.sun.com/products/jsse/
Openssl 0.9.9.6
用途:用来产生CA证书、签名并生成IE可导入的PKCS#12格式私钥。
下载: http://www.openssl.org/
以上工具的安装过程可以参考自带的帮助,本文就不再详细描述了。
阅读全文>
发表于 @ 2007年01月15日 21:07:00|评论(loading...)|编辑
安全套接层协议是一个保证计算机通信安全的协议,对通信对话过程进行安全保护。例如,一台客户机与一台主机连接上了,首先是要初始化握手协议,然后就建立了一个SSL。对话进段。直到对话结束,安全套接层协议都会对整个通信过程加密,并且检查其完整性。这样一个对话时段算一次握手。而HTTP协议中的每一次连接就是一次握手,因此,与HTTP相比。安全套接层协议的通信效率会高一些。
(1)接通阶段:客户通过网络向服务商打招呼,服务商回应;
(2)密码交换阶段:客户与服务器之间交换双方认可的密码,一般选用RSA密码算法,也有的选用Diffie-Hellmanf和Fortezza-KEA密码算法;
(3)会谈密码阶段:客户与服务商间产生彼此交谈的会谈密码;
(4)检验阶段:检验服务商取得的密码;
(5)客户认证阶段:验证客户的可信度;
(6)结束阶段,客户与服务商之间相互交换结束的信息。 阅读全文>
发表于 @ 2007年01月15日 20:56:00|评论(loading...)|编辑
分布式是指将不同的业务分布在不同的地方。
而集群指的是将几台服务器集中在一起,实现同一业务。
分布式中的每一个节点,都可以做集群。
而集群并不一定就是分布式的。
何时要用分布式
单台服务器无法承受压力。
需要实现发生错误时候,自动切换
学习或者测试分布式技术阅读全文>
发表于 @ 2007年01月15日 20:43:00|评论(loading...)|编辑
先问问自己,编程时有没有经常想为什么,有没有更好的对应方案,由于工期的问题,这次不能修改了,下一个项目时能不能体现这次的心得。如果用C++,是不是认为指针的使用比类继承,函数重载更头疼,是不是见到JAVA时,对类库的FACTORY,对象组合等不觉得奇怪,无难度就能掌握。看《设计模式》能直接一遍看懂,还是一遍一遍看,每次有点豁然开朗,原来如此的感觉。还是一有不明白的地方就到处找人问为什么。主动更新工具(不是项目要求)时是由于前一个版本有不如意的地方,想看新版本有没有解决,还是为了保持随时用最新的工具。自己得意的程序对于一般人来说是从主程序开始就结构清楚,一步步清晰明了还是类之间的关系跳来跳去,无从下手。如果这些答案都能令人满意的话,恭喜,离会写程序的级别已经不远了,请继续努力。
原文地址:http://www.umlchina.com/best/g26/u1129231.htm#1129231阅读全文>
发表于 @ 2007年01月15日 20:12:00|评论(loading...)|编辑
现在体会到了开会原来也是个体力活,从早上9点到下午6点,又开了一天的会,最近这样的会议不知道有多少次了,有和局方的,项目组内的,大部分是设计人员内部交流会,大的项目作起来真不容易,只有通过会议来解决业务流程问题和人员组织分配问题。。。阅读全文>
发表于 @ 2007年01月15日 19:10:00|评论(loading...)|编辑
长这么大第一次到了天安门,转了一圈,发现眼前的天安门远没有想象的那么神秘......阅读全文>
发表于 @ 2007年01月14日 15:45:00|评论(loading...)|编辑
泛型使代码在编译时有了更严格的类型检查。特别是在集合框架中,泛型有两个作用。第一,他们增加了对集合类型在编译时的类型检查,所以集合类所能持有的类型对传递给它的参数类型起了限制作用。比如你创建了一个持有strings的java.util.List实例,那么他就将不能接受Integers或别的类型。其次,当你从一个集合中取得一个元素时,泛型消除了类型转换的必要。
泛型能够在没有类型变量的情况下使用,比如,作为原型。这些措施让Java 5之前的代码能够运行在JRE 5中。但是,对新的应用程序,你最好不要使用原型,因为以后Java可能不支持他们。
你已经知道通过传递不同类型的类型变量给泛型可以产生不同的JAVA类型。就是说List和List的类型是不同的。尽管String是java.lang.Object。但是传递一个List给一个参数是List的函数会参数会产生编译错误(compile error)。函数能用 ? 通配符使其接受任何类型的参数。List 意味着任何类型的对象。
最后,你已经看到了写一个泛型和别的一般JAVA类没有什么区别。你只需要在类型名称后面的中声明一系列的类型变阅读全文>
发表于 @ 2007年01月13日 14:47:00|评论(loading...)|编辑
在Spring框架中,任何注册到Spring框架中的bean,如果实现了某个接口,那么在得到这个bean的时候,只能将其下溯造型成其接口进行操作,而不能直接下溯造型成具体的类型进行操作。原因在于Spring的AOP实现机制, Spring中的Bean管理实际上是基于动态AOP机制实现,为了实现动态AOP,Spring在默认情况下会使用Java Dynamic Proxy,但是,Dynamic Proxy要求其代理的对象必须实现一个接口,该接口定义了准备进行代理的方法。而对于没有实现任何接口的Java Class,需要采用其他方式,Spring通过CGLib实现这一功能。当类实现了一个接口之后,Spring将通过Java Dynamic Proxy机制实现代理功能,此时返回的Bean,是通过java.lang.reflect.Proxy.newProxyInstance方法创建的其接口的一个代理实现,这个实例实现了其接口,但与类已经没有继承关系,因此无法通过下溯造型进行强制转型,如果进行转换,则会抛出异常。这也就强制要求编程人员要面向接口编程,使程序员能够从接口的角度考虑程序设计,从而降阅读全文>
发表于 @ 2007年01月13日 14:16:00|评论(loading...)|编辑
提到软件产品开发,我们的脑海里总是浮现出这样的情景:开发组的每一位成员都在辛苦地工作,加班加点,甚至通宵达旦。虽然项目经理一次又一次地修改a了进度计划,而实际的开发情况却总是令人担忧,以至于每次向领导汇报工作的时候,总是觉得以前制定的计划没有很好完成,总是觉得人力资源不够,总是觉得没有太多的时间。等到代码终于开发完成了,测试进度同样非常令人担忧,每一个小BUG都要花很长的时间去查找,改了某一个小错误却又引起了很多新的错误,结果产品发布遥遥无期,而项目组里的每一位成员已经筋疲力尽。
怎样摆脱这样的困境?为何软件开发项目管理这么困难?为何我们做的计划总是不能按时完成?为何软件开发不能像硬件开发那样可以控制?
软件开发是完全依靠人的大脑思维产生出产品,而每个人的大脑思维是不一样的,因此在软件开发过程中有太多不确定、可变化的因素。那么我们怎样把握住这些变化因素呢?
软件项目管理——质量先行,如果我们能够控制软件生命周期每一个阶段的质量,就能很好地控制了软件开发的整个过程。
阅读全文>
发表于 @ 2007年01月11日 11:56:00|评论(loading...)|编辑
温习uml的基础知识,了解继承、实现、关联、聚合的uml画法和表示!阅读全文>
发表于 @ 2007年01月09日 21:43:00|评论(loading...)|编辑
为什么borland的网站这么慢?在周围的同事技术层次不高的团队里如何学习他人的长处,和提高自己的技能,远比要发挥自己的优势困难的多!阅读全文>
发表于 @ 2007年01月09日 19:47:00|评论(loading...)|编辑
来自csdn的《程序员眼中的2007:寻找软件开发利器》,原文地址:http://blog.csdn.net/SmartTony/archive/2007/01/08/1477609.aspx
转载了其中有关java的部分! 阅读全文>
发表于 @ 2007年01月09日 14:31:00|评论(loading...)|编辑
架构是就软件平台的搭建和设计规划,目的是实现软件最大的可维护性和可拓展性,延续软件的生命,就象人生下来,整个架构都有了,虽然一些器官不能用到(例如生殖器官),但是一生下来还是有这些器官,这就是架构设计的优势,没有架构设计的软件是看不到明天,生下的小孩就不会有生殖器官,因为他认为小孩不需要,但是他没有看到小孩20岁以后的未来。阅读全文>
发表于 @ 2007年01月08日 19:20:00|评论(loading...)|编辑
元旦的生活:早上10点起床;11点早饭;下午3点午饭;晚上8点晚饭;
儿子很乖,lp没有犯病,家里打扫了卫生;
开了一天半会;加了一晚上和一半天班;
今天回到北京,开始工作......阅读全文>
发表于 @ 2007年01月08日 19:04:00|评论(loading...)|编辑