现在的位置: 首页 > 综合 > 正文

我的春节

2019年11月20日 ⁄ 综合 ⁄ 共 3728字 ⁄ 字号 评论关闭

  今天是正月初六了,晚上还要出差,趁现在总结一下这几天吧。其实这几天连亲戚也没怎么走动,大部分时间都在更新博客。

  博客里的多数文章被更新了一遍,但也有少数没更新,这里简单说明一下:
  1.《JDO学习笔记之Sun JDO参考实现篇》,这次没有更新,以后也不打算更新了。
  2.《JUnit学习笔记》和《JUnit学习笔记之NetBeans篇》,前者是在原来的《JUnit学习笔记》基础上修改来的,补充了一些内容,并使用了Eclipse 3.1.1和JBuilder 2006,两个IDE都是新版本的,但由于JUnit没更换,因此也没重新发布;后者是在新版《JUnit学习笔记》基础上更换IDE而来,本来还打算再写一篇《JUnit学习笔记 IDEA篇》,但觉得不过是又更换了个IDE,没多大意义,因此做罢。
  3.《NUnit学习笔记 VS.net 2005篇》和《NUnit学习笔记 Delphi 2006篇》,分别是在
《NUnit学习笔记》和《NUnit学习笔记之Delphi 2005篇》基础上修改来的,不单使用的NUnit更新到了2.2.6版本,IDE也都换了新版本,因此删掉原文并重新发布。
  4.《NUnit学习笔记之Mono篇》和《NUnit学习笔记之进阶篇》,前者更换Mono到1.1.12.1,修正了一些相应的内容,但NUnit使用的是Mono自带的2.2.0版本;后者针对NUnit 2.2.6做了一些修改,主要是增加了对Platform属性的介绍。由于这两篇文章更改都不大,因此也没重新发布。
  5.虽然Log4J非beta版本已发布到了1.2.13,但由于与1.2.11差别不大,因此《Log4J学习笔记》、《自定义SMTPAppender的源码》也没更新。这里简单说明一下Log4J 1.2.13。根据Apache的说明,与Log4J 1.2.11相比,Log4J 1.2.13有三点变化:
  首先是可以兼容于早期的JDK,例如JDK 1.1、1.2。
  其次是org.apache.log4j.Level类中新增了一个TRACE级别,该级别比DEBUG还低,但根Category默认输出级别仍为DEBUG;此外在org.apache.log4j.Logger类中还新增了与之相关的方法:
log.trace("Here is TRACE");
log.trace("Here is TRACE", new Exception("Exception"));
示例:
  package piv.zheng.log4j.test;

  import org.apache.log4j.Logger;
  import org.apache.log4j.Level;
  import org.apache.log4j.SimpleLayout;
  import org.apache.log4j.ConsoleAppender;

  public class Test {

    public static void main(String[] args) {
      SimpleLayout layout = new SimpleLayout();

      ConsoleAppender appender = new ConsoleAppender(layout);

      Logger log = Logger.getLogger(Test24.class);
      log.addAppender(appender);
      log.setLevel(Level.TRACE);

      log.trace("Here is TRACE");
      log.debug("Here is DEBUG");
      log.info("Here is INFO");
      log.warn("Here is WARN");
      log.error("Here is ERROR");
      log.fatal("Here is FATAL");
    }
  }
  再次,org.apache.log4j.ConsoleAppender类也被更新了,新增了setFollow()和getFollow()方法,这两个方法操作的是一个boolean型字段,该字段在执行activateOptions()方法时用来判断是否重新生成System.out或System.err对象,默认为false,即不生成。据说是针对JBoss进行的修改。
  6.《DUnit学习笔记》,这是春节期间唯一称的上新作的文章。在编写时,对DUnit做了很多试验,感觉对Delphi和C++的了解又进了一层,比如原来不知道如何在Delphi中定义指针,不知道如何在Delphi中定义静态成员,也不知道如何在C++中定义指向类成员的指针,但现在都会了。本来打算把这些也写到文章中,但由于内容比较纷繁,所以打算五一回来之后另写一篇文章。
  另外,还打算写一篇《Log4Net学习笔记》,但由于买火车票耽误了太多时间,所以只好作罢,也只能等五一回来后再说了。

  虽然写了不少文章,但这些文章如出一辙,肯定有人会疑问,我想我应该说明一下我的学习方法:
  首先,写文章就是学习方法。如果想写技术文章,肯定要尽量多的了解你所介绍的技术,尽管我经常在写完文章之后发现自己还有很多东西不知道。而且写文章可以锻炼表述能力,如果想让别人接受你的文章,你就必须把话说清楚,不过表述能力好象一直就是我的弱项。
  其次,比照学习。在学过JUnit后,就想了解同样用于单元测试的NUnit是什么样子,了解之后就又想知道有没有for Delphi的单元测试工具,其实我能将这些技术以同样的格式介绍出来,就比较了这些技术之间的异同。此外,在介绍每种技术的时候,我也在进行比较,例如《NUnit学习笔记》有《VS.net 2005篇》和《Delphi 2006篇》,分别使用了两种IDE,而每篇中又使用了多种编程语言,前者是VB、C#和J#,后者是C#和Delphi。其实选择这样的学习方法就是要多学一些东西,可是我人又不够聪明,只好尽量去总结规律。不信您可以看一下《NUnit学习笔记 VS.net 2005篇》,看看VB、C#和J#之间除了形式上有多大差别;再看一下《DUnit学习笔记》,看看C++Builder和Delphi之间又差多少。
  总之,这是我的学习方法,我希望学习尽量多的知识。
  不过学到这会,我还有一点体会,真正的高手不是掌握多少技术,而是因为他有想法。所以此后我可能不会强求自己学这学哪,又要会.net Framework、J2EE、MFC、VCL,又要会Struts、WebWork、SpringFramework、Hibernate、JDO、JSF、JSTL,这样学太累了。其实了解几门编程语言,会写代码,会用反射不就好了。不知道会不会有人认可我的观点。

  此外,我的博客里还发布了一篇名为《软件开发能力拓展训练计划》的文章,有位叫小菜的朋友给出了评论,如下:

  大哥,计划目的不错,一些设计很好。
  但是,让没有“基本经验”的组员在这么复杂的管理下能行吗?
  他们有能力在熟悉复杂的管理过程中,还能掌握没有接触过的知识,同时将其付出实现。让人看见难度过高,只能打击信心。
  在开发过程中,还可以中途自自愿退出?
  对参与的每个人,没有一根“绳子”绑在一艘船上,怎么能行啊。
  这样的安排很可能将小组内的人都拖垮,没能力的能没能提高,有能力的人没能发挥能力。
  这样真能达到计划预定目的的多少?管理人的基本方法是这样的吗?

首先感谢小菜的评论,估计很多朋友也会有类似的看法,但这里我要说说自己的想法:
  首先,不要担心“基本经验”这个问题,人不可能一出生就什么都会,包括说话也是后天学的,如果他们没有“基本经验”,他们可以在这个过程中学习、总结,而这个计划的目的也是为了让他们学会如何学习和总结。
  其次,参训人员在整个计划过程中确实处于高压状态,很容易感受到挫折,而这正是本计划的目的之一。指导人员除了做技术指导、按计划执行之外,其实还有一个作用,就是帮这些人做心理调试,主要是对计划进行说明。此外,计划中也对可能出现的问题、结果进行了估量,并给出了后续建议。
  再次,对于自愿退出的问题,其实是对突发情况的处理,这很现实,谁能保证一个软件开发组里没有人因为某种原因突然退出?而软件公司又真的能阻止这一情况的发生吗?而且这样的安排也是为了创造高压环境,逼迫个人发挥自己的潜能。
  又次,计划针对的不是什么优点也没有的弱者,而且具有某些优点的强者。具有积极向上精神且个人能力较强的人固然是精英,但还有相当一部分人,他们缺少信心,或者潜能没有被完全开发出来,他们才是这个计划的中心。至于剩下的,不客气的说,他们根本就不配当程序员。
  最后,请相信新人,不要以为新人就处处不如人,其实中国有很多优秀的人才就这么被扼杀了。我现在也是个新人,而各位前辈也曾经是新人。

  新的一年开始了,很希望自己在新的一年里能有所作为。

  而马上还要出差,再更新博客,要等五一回来了。

抱歉!评论已关闭.