<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>songsong</title>
    <description>搞Java不能心急滴...</description>
    <link>http://songsong.javaeye.com</link>
    <language>UTF-8</language>
    <copyright>Copyright 2003-2008, JavaEye.com</copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>JavaEye - 做最棒的软件开发交流社区</generator>
      <item>
        <title>初次使用RMI</title>
        <author>songsong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://songsong.javaeye.com">songsong</a>&nbsp;
          链接：<a href="http://songsong.javaeye.com/blog/22860" style="color:red;">http://songsong.javaeye.com/blog/22860</a>&nbsp;
          发表时间: 2005年01月11日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          使用RMI远程调用，可以减少客户端与服务端对数据的转化过程<br />直接使用对象存放数据，但同时引了了些复杂问题<br />对RMI远程调用应该使用动态代理模式，而不是单纯的直接调用接口<br />还在对bean的管理问题，是否能与spring很好的接合？<br /><br />Rem.java<br />[code:1]/*<br /> * Created 2005-1-8<br /> * &#40;c&#41; songsong  zoday@hotmail.com<br /> */<br />package com.zoday.beans;<br />import java.rmi.Remote;<br />import java.rmi.RemoteException;<br /><br />/**<br /> * @author songsong<br /> */<br />public interface Rem extends Remote &#123;<br />	<br />	public String getMessage&#40;&#41; throws RemoteException;<br /><br />&#125;[/code:1]<br /><br /><br />RemClient.java<br />[code:1]/*<br /> * Created 2005-1-8<br /> * &#40;c&#41; songsong  zoday@hotmail.com<br /> */<br />package com.zoday.client;<br />import java.net.MalformedURLException;<br />import java.rmi.Naming;<br />import java.rmi.NotBoundException;<br />import java.rmi.RemoteException;<br /><br />import com.zoday.beans.*;<br /><br />/**<br /> * @author songsong<br /> */<br />public class RemClient &#123;<br /><br />	public static void main&#40;String&#91;&#93; args&#41; &#123;<br />		try &#123;<br />			String host = &quot;192.168.0.251&quot;;<br />			Rem remObject=&#40;Rem&#41;Naming.lookup&#40;&quot;rmi&#58;//&quot; + host + &quot;/Rem&quot;&#41;;<br />			System.out.println&#40;remObject.getMessage&#40;&#41;&#41;;<br />		&#125; catch &#40;MalformedURLException e&#41; &#123;<br />			e.printStackTrace&#40;&#41;;<br />		&#125; catch &#40;RemoteException e&#41; &#123;<br />			e.printStackTrace&#40;&#41;;<br />		&#125; catch &#40;NotBoundException e&#41; &#123;<br />			e.printStackTrace&#40;&#41;;<br />		&#125;<br />	&#125;<br />&#125;[/code:1]<br /><br />RemImpl.java<br />[code:1]/*<br /> * Created 2005-1-8<br /> * &#40;c&#41; songsong  zoday@hotmail.com<br /> */<br />package com.zoday.server;<br />import java.rmi.RemoteException;<br />import java.rmi.server.UnicastRemoteObject;<br /><br />import com.zoday.beans.*;<br /><br />/**<br /> * @author songsong<br /> */<br />public class RemImpl extends UnicastRemoteObject implements Rem &#123;<br /><br />	public RemImpl&#40;&#41; throws RemoteException &#123;<br /><br />	&#125;<br /><br />	public String getMessage&#40;&#41; throws RemoteException &#123;<br />		return &#40;&quot;hello songsong&quot;&#41;;<br />	&#125;<br /><br />&#125;[/code:1]<br /><br />RemServer.java<br />[code:1]/*<br /> * Created 2005-1-8<br /> * &#40;c&#41; songsong  zoday@hotmail.com<br /> */<br />package com.zoday.server;<br />import java.net.MalformedURLException;<br />import java.rmi.Naming;<br />import java.rmi.RemoteException;<br /><br /><br />/**<br /> * @author songsong<br /> */<br />public class RemServer &#123;<br /><br />	public static void main&#40;String&#91;&#93; args&#41; &#123;<br />		System.out.println&#40;&quot;start&quot;&#41;;<br />		try &#123;<br />			RemImpl localObject = new RemImpl&#40;&#41;;<br />			Naming.rebind&#40;&quot;//127.0.0.1/Rem&quot;, localObject&#41;;<br />		&#125; catch &#40;RemoteException e&#41; &#123;<br />			e.printStackTrace&#40;&#41;;<br />		&#125; catch &#40;MalformedURLException e&#41; &#123;<br />			e.printStackTrace&#40;&#41;;<br />		&#125;<br />		System.out.println&#40;&quot;RMI start success&quot;&#41;;<br />	&#125;<br />&#125;[/code:1]<br /><br />使用rmic 生成stub 程序和 skeleton <br />客户端只需要用到RemClient.java和Rem.java<br /><br />http://forum.javaeye.com/viewtopic.php?t=3832&postdays=0&postorder=asc&start=0
          <br/>
          <span style="color:red;">
            <a href="http://songsong.javaeye.com/blog/22860#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 11 Jan 2005 20:12:09 +0800</pubDate>
        <link>http://songsong.javaeye.com/blog/22860</link>
        <guid>http://songsong.javaeye.com/blog/22860</guid>
      </item>
      <item>
        <title>个人编程史</title>
        <author>songsong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://songsong.javaeye.com">songsong</a>&nbsp;
          链接：<a href="http://songsong.javaeye.com/blog/22848" style="color:red;">http://songsong.javaeye.com/blog/22848</a>&nbsp;
          发表时间: 2005年01月08日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          编程史<br /><br />在高中,数理化很强,,英语和语文差得一坨<br />自认为数学很强,但是贪玩,平时数学题目做得很少,所以考试很少拿第一<br />高中时代游戏被我玩遍<br />英语最烂,全靠猜,高考150分只得了46分,还是抄别人的,抄到一个比我更烂的人,至今没过四级,如果想走向编程的高峰,英语是必学的,很多资料都是要查英文版,现在我己经开始把英语搞上去了<br />高中毕业了,参加了一个电脑培训班,花了200银子,值得,对于我走计算机这条路有重要作用<br />填志愿原本想报应用数学,但考得太差了,进了第二志愿,读了个生物专业,<br />上天安排我读生物,有什么办法,只有认命了<br /><br />大一,高数学得不错,第一个学期,就有计算机的课程了,因为我原来上过培训班,所以班上小有名气,然后凭着兴志,把C语言和QBasic学了,潭浩强的两本书被我翻烂了,<br /><br />大二,开了C语言的课程,自以为是(现在有点后悔),没上过几节课<br />然后赶时髦,学起VB,买了几本书看了下,拖了几个控件,就觉得自己了不起,<br />学到深处,又学不下去,又扔在一边,唉,太菜了没办法<br />后来吸取教训,准备系统学一次,把计算机专业课程的书,认真看了下<br />但是基本没看懂,难啊,有空我就把那几本书拿出来翻翻,直到现在数据结构我还在看<br />软件工程,更别提了<br /><br />大三,又操起高中玩得星际,成为全校的星际明星,哈哈,自己组织了一次星际比赛,难以忘怀<br />又一次萌发学VC++的想法,初学了下,想跳楼<br />决定先学C++,买了本C++的书,学到class,就学不下去了,等于没学<br /><br />大四,传奇时代到来了,联合了全校的星际精英,转行玩传奇,<br />玩了一年传奇,很失败,没脸见兄弟,自己一个号都没留,头也不回离开传奇<br /><br />毕业了,生物没学,计算机又没学好,想哭,<br />回到家,开始自学ASP,根据以往的知识,准备转向C#,面向对象编程,即OOP<br />如果学过C++(当然不是指学到STL那种程度),学java  C#  VC++都容易些<br />如果无法理解OOP,只能学学VB 6.0<br />VB容易学些,开发效率高,不会用class还是没前途<br />如果想从事软件开发,一定会用OOP,否则就干嵌入式开发或硬件开发,不过这两个更难<br /><br />毕业后去了趟深圳，体会到生活的艰辛，终于从依赖父母的思想里解脱出来<br />一定要靠自己的手养活自己，在深圳的每一天，我都坚持学C++，因为我知到将来一定能用到，离开深圳的前一天，还到深圳书城买了本asp书(《asp高级编程及项目开发》)<br />因为太穷了，所以不想单买本asp入门书籍，我相信自己能看懂<br /><br />回到家中，和父母说了自己的想法，留在家中学习半年，父母才是最亲的人<br />我要用实际行动回报给他们<br />一个月内就把asp学了7788，自己编了一些作品，感觉到在数据库这方面有很大不足<br />然后又认真学习了sql server，其实学用sql server不是关健，关健的是学三个范式<br />我现在觉得在数据库这方面太缺乏经验了，规范化程度很难把握。这方面的经验是需要平时积累的<br />这样四个月过去了，我编的作品都是自己编上去的，没有一个是拿别人的改，从最简单的做起，大家学习千万别找捷径，拿别人的来改一下就说是自己的，那样根本学不到什么<br /><br />我在编一个校友录的时候，发现一个很关健的问题，重复代码太多，总喜欢复制粘贴<br />因为在编写过程中总会发现不足，要重新修改，重复代码太多了，需要修改的地方太多了<br />所以我想到了面向对象编程(OOP)，到网上查了很多资料对OOP有了个了解，开始着手优化代码，发现可以把原来编写的校友录的代码至少可以砍掉2/3，太夸张了<br />这意味着，原来的编程做了很多重复劳动，效率低，整个框架又不是很好<br /><br />就这样，我有一个新想法，重新编一个web作品，使用OOP思想来编<br />从基本框架编起，划分好类模型，运用MVC模式，这个想法是从《设计模式》书中看到的<br />（《设计模式》和《重构》是软件工程两大巨著，不可不看，在《重构》你可以体验到编程的乐趣，建意会OOP的人去看看）<br />基实软件也有质量的，不单要实现功能，而且要可维护性、扩展性要好<br />如果软件编好后不需要修改，那你可以不需很深的思想<br /><br />中级程序员和初级程序员的区别在于，他们的思考方式不同<br />初级程序员只会想到实现功能，却不知如何做更好，更快<br />编程上的思想都需要自己来体会的，如果你编出的代码给人一种优雅的感觉，那恭喜你上了一个档次了<br /><br />在学习的过程，基本都是自学的，csdn论坛上的热心回答者就是我的老师<br />我也会虚心学习高手的经验，感谢笨笨、飞五的指点，高手只能给你指条路，可以让你不走弯路，具体的问题是要靠自己努力的<br /><br />后到，我到杭州一家小公司做网站后台开发，里面只有我一个人会asp<br />在那里我通过自己的努力，用ASP+SQL server实现了一个B2B网站<br />我运用面向对象方法编写，提高很多，每天都在进步，公司里面没人做程序，<br />而我靠自己的摸索提高，我的自学能力很强，只要拿本书，然后在实践总结经验<br />不断提升自己的程序，<br /><br />我不会像某些人，写类似功能的程序，写一百遍还是没变过，<br />我每次写完一段代码，我总是会去总结，让程序变得很优雅，更具有扩展性和重用性<br /><br />到现在我用asp写的留言板功能，与当初开始学asp的留言板，己经大相径庭了，重复代码己经很少很少，代码数量己削减了2/3，变量命名己经全部采用Sun标准<br /><br />我也不打算用一辈子的ASP，所以我开始了解.NET/Java，我最后选择了Java<br />重要的一点是Java好书太多了，C#的书我没看到有多少，<br />其中一本＜Thinking in Java＞，是最大的原因吧，这本书实在太经典了，里面所写的知识都是我迫切想知到的。建议所以运用OOP的朋友都去看看这本书，里面的编程思想可以运用到程序里的方方面面<br /><br />也许还有很多人并不重视编程思想，他们常常认为程序里的一个小小的细节设计，不过就是运用一些手法让程序更优雅，给整个软件不会带来什么好处，反而投入了太多的时间<br />但他们却不知这一个一个细小的设计将影响一个软件的成败<br /><br />Bruce Eckel这样写到：<br />优雅是要付出代价：从短期利益来看，对某个问题提出优雅的解决方法，似乎可能花你更多的时间。但当它终于能够正确执行并可轻易套用于新的案例中，不需要花上数以时计，甚至以天计或以月计的辛苦代价时，你会看得到先前所花功夫的回报（即时没有人可以衡量这一点）。这不仅给你一个可更容易开发和调试的程序，也更易于理解和维护。这正是他在金钱上的价值所在。这一点有赖某种人生经验才能够了解，因为当你努力让某段程序代码变得比较优雅时，你并不是处于一种具生产力的状态下，但是，请抗拒那些催促你赶工的人们，因为那么做只会减缓你的速度罢了。<br /><br />我深有体会，对一个复杂的项目而言，优雅设计带来的好处是长远的<br />还有很多编程细节上的问题，都需要从工作中总结的<br />Java里内包含了很多编程思想，学习Java能让我更快的学到知识吧<br /><br />环境可以改造人，有一个良好的学习环境是大家都想争取的，但是必竟不是每一个人都能有这样的条件，而我们应该学会在逆境中生存，路都是自己走出来的
          <br/>
          <span style="color:red;">
            <a href="http://songsong.javaeye.com/blog/22848#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sat, 08 Jan 2005 19:01:05 +0800</pubDate>
        <link>http://songsong.javaeye.com/blog/22848</link>
        <guid>http://songsong.javaeye.com/blog/22848</guid>
      </item>
      <item>
        <title>开始写日记拉</title>
        <author>songsong</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://songsong.javaeye.com">songsong</a>&nbsp;
          链接：<a href="http://songsong.javaeye.com/blog/22826" style="color:red;">http://songsong.javaeye.com/blog/22826</a>&nbsp;
          发表时间: 2005年01月04日
          <br/><br/>
          声明：本文系JavaEye网站发布的原创博客文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <span style="color: red">新鲜上市</span>　　对新知识的学习<br /><span style="color: red">代码何解</span>　　一些好的应用心德<br /><span style="color: red">过往云烟</span>　　小事小记，大事不记，能忘就忘
          <br/>
          <span style="color:red;">
            <a href="http://songsong.javaeye.com/blog/22826#comments" style="color:red;">本文的讨论也很精彩，浏览讨论>></a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">北京: 千橡集团暨校内网诚聘软件研发工程师</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 04 Jan 2005 10:06:55 +0800</pubDate>
        <link>http://songsong.javaeye.com/blog/22826</link>
        <guid>http://songsong.javaeye.com/blog/22826</guid>
      </item>
  </channel>
</rss>