摘要: 这次谈谈递归程序的问题,之所以选递归这个话题主要是以下三个原因。第一个是自己的体会。在我的记忆中掌握递归程序是有一定难度的。最初在写递归程序时是全靠脑子想,一层一层的想着程序如何递归下去,然后又是如何返回的,最后整个递归程序又是如何结束的。对于一些简单的递归问题,特别是一些简单的习题,这个作法虽然笨拙,但是却有着相当的实用价值。只要脑子好使,一层一层的想下去,是可以解决一部分问题的。但是对于一些逻辑有点复杂,或者递归层数比较多的情况,这个方法就不好用了。尤其是在一些递归深度不确定的情况下,单凭脑子想就很难解决问题了。 阅读全文
posted @ 2013-12-08 00:34 WideUnion 阅读(1952) 评论(3) 推荐(2) 编辑
摘要: 这篇谈谈递归程序设计的问题。从取名上来说是想刻意区别内容的侧重点不同。上一篇是构造,其重点是从递归程序的自身结构出发,试图用一种比较直观的方法来完成递归程序的构造。这篇的重点是设计,其中的区别在于,这次是从问题本身的结构出发来完成递归程序的开发任务。上一篇中介绍的方法,比较简单直观,八股文的意味非常浓郁,并且还有一个比较大的缺点,那就是在实际使用时往往会受制与方法本身而不能解决有一定难度的问题。实际上递归是一种客观存在的现象,递归的描述问题是对客观世界的一种认识。本文从对问题的认识,描述和分析这些步骤来介绍一下如何完成递归程序的设计。 阅读全文
posted @ 2014-04-29 05:22 WideUnion 阅读(2350) 评论(1) 推荐(4) 编辑
摘要: 这次讨论一个和解决问题有密切关系,并且也是大家非常熟悉的话题:能力。实际上能够解决问题就是一种能力的表现,但是两者并不完全等价。这篇博文打算从我个人成长经历的角度回顾分享一些关于如何提高开发者自身能力的一些体会和心得。当然这些体会不是什么特效药,可以保证开发者能够一天就能武功精进,相反还是需要开发者自己长期不断的积累,才能完成能力的体升。但是我的这些体会和心得可以帮助开发者尽量少走一些弯路,并且在提升之路上能获得一些帮助,带给开发者正能量。可以解决问题是能力表现,但是并不等同于能力。因为具体的人在解决问题时所处的环境,可以使用的资源,能够获得的帮助和信息都会直接影响到是否可以解决问题。所以评估能力不能简单从能否解决问题这一个思路上来考察,更要看解决问题的过程和思路。前三篇所讲的内容是从方法本身方面来说的,从某种角度上来说见效会快一些。本文则是谈如何直接提升或者培养自身的能力来提高解决问题的质量,更注重在一个日积月累的过程。 阅读全文
posted @ 2013-07-15 07:30 WideUnion 阅读(2588) 评论(4) 推荐(5) 编辑
摘要: 在实际工作中软件工程师大部分情况下都是在攻城拔寨,解决一个个自己遇到的问题。这些问题往往是在自己的知识和经验可以覆盖的范围内,所以基本上可以说是顺利的。但是也会有另一些情况的存在,那就是遇到一个自己不会的问题。这些问题具有这样一个外在的现象:问题涉及的内容是在职责或者当前开发任务范围内的,但是对如何实现或者解决这个问题没有思路和办法,简单的说就是第一反应之下是不知道该怎么做来解决这个问题。为了行文方便在下文中,我把所谓不会的问题命名为“难题”,所以在本文中难题这个说法特指程序员不会解决的问题,而不是其它的含义。 阅读全文
posted @ 2013-05-06 01:04 WideUnion 阅读(3199) 评论(4) 推荐(8) 编辑
摘要: 对于有一定开发经验的程序员来说,工作中遇到的问题基本上是可以自己独立解决的。所以本文讨论的内容旨在帮助这部分程序员更好的解决问题,或者说在进一步提高解决问题的能力上,提供一些参考和有用的方法与思路。和上一篇一样你不能期望本文可以解决你所遇到的所有问题,或者看了本文之后就可以立马武功大增,这是不现实的。但是如果记住我个人的这些经验,然后在工作中去实践,在日积月累中可以帮助你(至少有一部分程序员是这样)更快,更好的提高解决问题的能力,这个是可以做到的。因为我就是这么走过来的,所以如果你也想这么走过来,那么我分享的经验对你一定是有帮助的。 阅读全文
posted @ 2013-03-01 11:16 WideUnion 阅读(3483) 评论(4) 推荐(3) 编辑
摘要: 问题解决篇主要讨论的是,在实际工作中解决问题的方法和心得。在我读大学的时候,我的老师曾说过工程师的责任就是解决问题。无论一个开发者的能力有多强,工作态度有多好,如果不能解决问题的话那么就什么都不是。所以能够解决实际问题是一个软件工程师的核心价值所在。本文分享内容的定位和第一篇中的一样依然不谈经典或者范例的东西,我相信这和大部分或者相当一部分的教科书,培训课程中的内容会有所区别。我想和同行们分享的任然是我在实践中的体会与心得。这些内容主要侧重在解决问题的方法和思维技巧方面,所以本文不能解决某一个很具体的问题。比如,你不能在本文中找到如何实现分页查询的答案;如何给线程传参数的实现方法,等等。另外常规的一些所谓的解决问题的方法在本文中也是不讨论的,比如:论坛发帖,google或者百度,qq群提问,向老手提问,等等。当然这些方法也是有用甚至是最常用的,不讨论是定位的原因,不是我想否定这些方法的作用和价值。由于本文介绍的内容来自个人的实践,对于解决问题这样一个宏大的话题和全体开发者这样一个宽泛的群体来说,局限性和片面性是在所难免的。所以请同行们自行取舍,同时也要根据自己的经验,实际应用场合做出适 阅读全文
posted @ 2013-01-01 09:45 WideUnion 阅读(3605) 评论(6) 推荐(1) 编辑
摘要: 很偶然的写了一篇博文“十八年开发经历小结”,本来打算只是简单回顾一下自己经历。结果没想到被CSDN放到了首页,反映也还可以,感兴趣的可以访问我在CSDN上的博客,点击这里,或者访问我在博客园上的博客,点击这里。既然我写的东西还有人愿意看,于是我就萌发了再写一个系列的文字的想法。从第一次在CSDN上获得帮助,第一次在CSDN上帮助别人,一直到现在,期间帮助和被帮助已经很多很多次了。我认为专利和知识产权是独占并被保护的,但是经验和知识是应该分享的。为了这十八年来的帮助与被帮助,为了我写的文字还有人愿意看,我想写出这个系列来,与各位同行分享自己的经验,共同进步。这个系列的内容主要来自个人的实际经历,我不想谈一些什么经典或者范例的东西。我觉得自己体会到的东西和同行分享才更有意义,也更具有实用价值。同时我相信写出这个系列的文字,也是我对自己经验的一个认真的回顾和归纳,这一定是很有裨益的。 阅读全文
posted @ 2012-11-12 15:24 WideUnion 阅读(2573) 评论(7) 推荐(6) 编辑
摘要: EMLib真正的强大之处就是它具备的ORM功能,EMLib允许开发者用完全面向对象的方式操作数据库。并且无需考虑数据层中的任何细节,也无需关心当前使用的是何种数据库,为开发带来极大的便利。 阅读全文
posted @ 2012-09-22 20:01 WideUnion 阅读(584) 评论(1) 推荐(0) 编辑
摘要: 从本章开始将使用两章节的篇幅来介绍EMLib框架,这一章介绍Eql相关的内容。在介绍Eql内容之前需要做一个准备工作,那就是开发环境的配置,这是一个非常简单的工作。 阅读全文
posted @ 2012-09-22 19:47 WideUnion 阅读(792) 评论(0) 推荐(0) 编辑
摘要: 这篇文章的内容主要讲述与静态模型相关的一些概念方面的内容和EMStudio新增的内容。正确完整的理解相关的概念对开发者完成模型设计是有帮助的。由于EMStudio对UML标准作了裁剪和简化,所以这些概念是很容易理解和掌握的。 阅读全文
posted @ 2012-09-22 19:27 WideUnion 阅读(352) 评论(0) 推荐(0) 编辑
摘要: 在本系列教程的前一篇:静态建模之实体模型设计中已经涉及了一小部分数据库设计相关的内容,比如在实体设计器中设计索引和触发器。本篇的内容将继续介绍其它与数据库设计相关的内容和操作。在前一篇使用到的工程在这里也会被用到,如果读者是直接开始阅读文本,那么最好是能重新创建该工程文件。好,现在请打开之前创建的工程文件MyProject,开始数据库设计的介绍。 阅读全文
posted @ 2012-09-22 19:20 WideUnion 阅读(428) 评论(0) 推荐(0) 编辑