<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
  <channel>
    <title>JavaEye论坛最新讨论</title>
    <description>JavaEye论坛最新讨论 - Java编程，Ruby编程，微软.net，AJAX，敏捷软件开发，综合软件技术</description>
    <link>http://www.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>诚恳谈工资，非诚莫入！</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gao-20022002.javaeye.com">gao_20022002</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252528" style="color:red;">http://www.javaeye.com/topic/252528</a>&nbsp;
          发表时间: 2008年10月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>对于这个话题，或许大部分公司，或许是所有公司，都是一个避讳的问题。因此工资问题显得很是神秘，但是时间长了，和同事的接触中，我们是可以感触的到的。</p>
<p>&nbsp;</p>
<p>公司避讳谈工资的原因：无非就是因为可能影响工作的积极性，试想：如果你觉得你自己和别人干同样的事，那相差很大的钱，你会心满意足？你会安心工作？所以和不是一家单位的同学朋友谈工资问题，也就没有太多的障碍。</p>
<p>&nbsp;</p>
<p>为什么要谈工资问题？</p>
<p>了解自己的位置，了解自己的能力，了解行业的趋势，定位自己。</p>
<p>扯了这么多，现在谈谈自己收集的信息，除了敏感信息保留外，其他的都是千真万确。</p>
<p>&nbsp;</p>
<p>先说说自己：</p>
<p>杭州工作，毕业两年零两个月，现在4500，税前，税后4000-，三险一金齐全。</p>
<p>两个月前的好几个同事离职，现在工资都在5000-5500之间，税前，税后4500-4800之间。</p>
<p>还有知道的一个情况，研究生毕业，名牌学校名牌专业，税前5500，税后没有问。</p>
<p>说说：在同一家公司工资升级是很困难，除非你有很特别大的表现，就是有了也不一定。工作一两年的，跳槽频繁，涨工资也快，这是实情。研究生毕业的工资和工作两年的工资应该相差不大，但是这东西不好说，我是说文聘和经验的交换问题，以后谁的路子好，还得靠自己的努力。</p>
<p>&nbsp;</p>
<p>了解的北京的情况：</p>
<p>现在的工资5500-6000之间，税前，税后5000+。况且此位老兄表现突出，晋升为一个部门小主管。</p>
<p>说说：关键是消费问题。每个月他们的住房是1000-，生活费600-，加上其他的通讯坐车费用，一个月攒上2500+，已经很不错。还不说其他的消费。</p>
<p>&nbsp;</p>
<p>了解的深圳的情况：</p>
<p>和北京差不多。</p>
<p>&nbsp;</p>
<p>了解的武汉加上海的情况：</p>
<p>武汉一个同学，不是计算机的，搞建筑，土木工程，工资2300+，税前。</p>
<p>上海一个同学，不是计算机的，银行行业，一个小主管，调到武汉，工资5000+，税前。</p>
<p>说说：由于我的同学在上海的不多，所以具体的不大太了解，但是上海的和北京深圳差不多，比杭州要高些，但是花费当然也要高些。武汉的生活水平不是很了解，据武汉的同事说，当时上学的感觉是比杭州低很多，不知道现在。武汉的工资相对要低些，这是事实。但是加上消费，也还过得去。</p>
<p>&nbsp;</p>
<p>现在的结论是什么？</p>
<p>计算机行业的工资要相对高些，搞开发的，要是搞界面或者美工之类的，一个月也就是2000+，我说的是整体情况，不包括那些特牛的人。工作两年一个月能攒上2500-3000，不管在什么地方，应该已经不错了。</p>
<p>&nbsp;</p>
<p>我们的收入高不高？</p>
<p>相对于其他行业，是高些。不包括那些国有企业的以及政府机关的，他们的工资是低，但是福利你是没法比的。外企的公司不是很了解，应该也是比较高，但是也是相对的，你的能力在那里能突出多少？表现突出了高是正常的。</p>
<p>&nbsp;</p>
<p>公司为什么会给我们这么高的工资？</p>
<p>因为我们能给公司创造高i的效益。</p>
<p>公司不是傻瓜，她不会无缘无故给你涨工资，也不会毫无理由的给你定工资。该拿多少自己衡量衡量实力，看自己到底值多少？工作两年，他给你上万的工资，你拿得起吗？当然我不说李一男之大师级人物，毕竟那是少数。</p>
<p>&nbsp;</p>
<p>我们缺失的是什么？</p>
<p>时间的积累，经验的积累。</p>
<p>公司不可能将一个大的项目安排给一个刚毕业一两年的自认为很牛的员工，这一点应该认同。给了你你能驾驭得了吗？认真想想。</p>
<p>&nbsp;</p>
<p>现在我们应该怎样看待工资的问题？</p>
<p>踏踏实实干事，老老实实做人。努力积累自己的原始资本------经验。</p>
<p>软件行业，前面的四五年之间工资能养活自己能攒点钱应该很好了，到五年之后，分歧就会出现，那时候的差距就会显现，管理级别与员工级别应该待遇很不一样。</p>
<p>现在我的观点，认认真真做好自己本职工作，踏踏实实学习些东西，老老实实走自己的路。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>希望各位发表看法。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252528" style="color:red;">已有 <strong>4</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 14 Oct 2008 09:56:01 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252528</link>
        <guid>http://www.javaeye.com/topic/252528</guid>
      </item>
          <item>
        <title>等哪天我开了公司</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hyys2008.javaeye.com">hyys2008</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251991" style="color:red;">http://www.javaeye.com/topic/251991</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          等哪天我开了公司，我要以最优厚的待遇给所有的员工<br />等哪天我开了公司，我要以最真诚最诚挚的心对待所有的员工<br />等哪天我开了公司，我要让所有的员工都认为这是为他们自己在工作<br />等哪天我开了公司，……………………………………………………<br /><br />等哪天我开了公司，那这样的公司绝对是最伟大的公司.<br /><br /><br /><img src="/images/smiles/icon_biggrin.gif"/>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251991" style="color:red;">已有 <strong>21</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Oct 2008 01:45:20 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251991</link>
        <guid>http://www.javaeye.com/topic/251991</guid>
      </item>
          <item>
        <title>在web集群环境下如何实现网站全局变量</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://shinewang.javaeye.com">shinewang</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251854" style="color:red;">http://www.javaeye.com/topic/251854</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          最近正在开发一个网站，碰到一个关于web集群环境下全局变量实现的问题，例如网站是否开放用户注册，禁用的IP列表这类不经常更改却频繁调用的系统设置，如何实现才能保证不影响系统性能，并且修改后能及时更新到每台服务器？<br /><br />考虑想了几种方法：<br />1.存在数据库中，每次调用时去查数据库 <br />每次都需要查数据库会不会影响性能？<br /><br />2.存在数据库中，本地有一个config类作缓存，每隔一段时间调用计划任务和数据库同步一下<br />更新后同步到其他服务器需要一段时间，不是很及时<br /><br />3.存在数据库中，本地有一个config类作缓存，用JMS发送/接收更新数据<br />需要引入JMS<br /><br />4.直接写在config类中，不提供在web界面的修改配置，修改配置需要改写config类，然后重新部署到各服务器<br />修改配置需要修改代码，管理起来不方便，另外java的热部署只更新这个修改了的config类吗，会不会影响jvm里面其他的类，也就是会不会影响用户？<br /><br />5.存在配置文件中每次读文件，更新时同上一方案<br />性能？热部署？<br /><br />这个问题应该很简单吧，由于不是做互联网的，没什么经验。各位有什么好的想法？
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251854" style="color:red;">已有 <strong>6</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' 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><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 12 Oct 2008 19:15:31 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251854</link>
        <guid>http://www.javaeye.com/topic/251854</guid>
      </item>
          <item>
        <title>都说J2ME没什么前景，各位能给个意见吗？Symbian呢？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://xiaoqulai.javaeye.com">xiaoqulai</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252086" style="color:red;">http://www.javaeye.com/topic/252086</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          小弟做J2EE的，应为刚换了一个NOKIA的手机，下了一些“来电通”之类的软件，才发现智能操作系统是如此的强大，比如发免费短信，来的防火墙，智能输入等...原来很多功能不是没有，而是没有安装。。。就跟window一样，<br />之前没有琢磨过，想花点时间研究一下。<br /><br />问题摆在这里：手机平台太多，非智能机太多，所以想了解J2ME，但这东西有很多受虚拟机的限制，了解Symbian吧，又不跨平台，但市场份额60%。<br /><br />所以想问一下，大家觉得J2ME有没有钱途哩，Symbian哩。<br />（本人观点，google和apple再怎么大也大不过nokia，所以他们的手机操作系统俺不学..，最起码拼银子拼实力就拼不过Nokia，所以他们的操作系统跟ruby语言一样，不过是时髦一阵子吧~·之前不是有人叫ruby会取代java么）
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252086" style="color:red;">已有 <strong>18</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' 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><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Oct 2008 11:34:41 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252086</link>
        <guid>http://www.javaeye.com/topic/252086</guid>
      </item>
          <item>
        <title>强大的JDBC操作组件DBASS1.0发布第一个预览版</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://sunarrow.javaeye.com">sunarrow</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252600" style="color:red;">http://www.javaeye.com/topic/252600</a>&nbsp;
          发表时间: 2008年10月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-family: arial,helvetica,sans-serif;">&nbsp;</span>
<span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>DBASS</span>
<span>是一个使用泛型技术的一系列</span>
<span>JDBC</span>
<span>工具类库。它参考了</span>
<span>Commons DBUtils</span>
<span>的实现。加入了一个通用的</span>
<span>DAO</span>
<span>，提供了不错的</span>
<span>JDBC</span>
<span>操作</span>
<span>API</span>
<span>（类似于</span>
<span>Spring </span>
<span>的</span>
<span>JDBCTemplate</span>
<span>），包括通用的多数据库支持的分页查询方案等等。也提供了一个非常简单易用的基于注解的事务管理方案。至于为什么要重新发明这个轮子。这是因为</span>
<span>Commons DBUtils</span>
<span>过于简单，</span>
<span>Spring</span>
<span>的</span>
<span>JDBCTemplate<span>需要</span>
</span>
<span>依赖于庞大的</span>
<span>Spring</span>
<span>。由于</span>
<span><a href="http://code.google.com/p/cwin/" target="_blank">Cwin</a>
</span>
<span>需要以插件形式运行使得它并不适合要求。现在的</span>
<span>DBASS</span>
<span>版本体形控制得不错，只有</span>
<span>20</span>
<span>多</span>
<span>Kb</span>
<span>。此版本支持mssql,mysql,oracle,postgresql。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>现在刚刚发布1.0版，请各位大大给些评论，提些建议。多谢了。</span>
</span>
</p>
<h3 style="MARGIN: 13pt 0cm"><span style="font-family: arial,helvetica,sans-serif; font-size: large;"><span>集成</span>
<span>DBASS</span>
</span>
</h3>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>DBASS</span>
<span>的集成很简单，只需要提供一个数据库类型和一个数据源。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>您可以提供一个名叫</span>
<span>dbass.properties</span>
<span>的配置文件（这个文件可以在下载的包中找到）来提供数据源。如果你感觉：啊？又多一个配置文件！我们系统已经在其它地方配置过数据源了！那么，您可以使用一行代码来完成初始化。选择全在您的手上。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>通过调用</span>
<span>cn.antia.db.DbUtils</span>
<span>的静态方法</span>
<span>. public static void init(String dbType,DataSource dataSource) </span>
<span>可以完成初始化。dbType可以为相个可选值中的一个：mssql,mysql,oracle,postgre。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>在完成初始化以后，就可以在应用程序中调用下面介绍的</span>
<span>API</span>
<span>了。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif;"><span style="font-size: small;">&nbsp;</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>依赖组件：</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>如果您需要使用基于注解的事务支持，将依赖于</span>
<span>AspectJ1.5+</span>
<span>。当然我们建议您使用基于注解的事务。因为它使用起来的确很方便。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>否则，</span>
<span>DBASS</span>
<span>不依赖于任何第三方组件。</span>
</span>
</p>
<h3 style="MARGIN: 13pt 0cm"><span style="font-family: arial,helvetica,sans-serif; font-size: large;"><span>CommonDAO</span>
<span>的介绍</span>
</span>
</h3>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>cn.antia.db. CommonDAO</span>
<span>类提供了较为全面的数据库操作方法。提供了一个数据库透明的分页查询解决方案。以下是</span>
<span>CommonDAO</span>
<span>的常用方法列表：</span>
</span>
</p>
<p><span style="font-family: arial,helvetica,sans-serif;"><br />
</span>
</p>
<pre name="code" class="java"><span style="font-family: arial,helvetica,sans-serif;">int gtRecordCount(SqlParams sqlParams)

int getRecordCount(String sql)

&lt;T&gt; List&lt;T&gt; queryFirstField(SqlParams sqlParams)

&lt;T&gt; List&lt;T&gt; queryFirstField(String sql)

Map&lt;String,Object&gt; queryFirstMap(SqlParams sqlParams)

Map&lt;String,Object&gt; queryFirstMap(String sql)

&lt;T&gt; T queryFirstObject(SqlParams sqlParams)

&lt;T&gt; T queryFirstObject(String sql)

&lt;T&gt; List&lt;T&gt; queryList(SqlParams sqlParams, Class&lt;T&gt; clazz)

&lt;T&gt; List&lt;T&gt; queryList(SqlParams sqlParams, int page, int pageSize, String orderField, boolean isAsc, Class&lt;T&gt; clazz)

&lt;T&gt; List&lt;T&gt; queryList(String sql, Class&lt;T&gt; clazz)

&lt;T&gt; List&lt;T&gt; queryList(String sql, int page, int pageSize, String orderField, boolean isAsc, Class&lt;T&gt; clazz)

List&lt;Map&lt;String,Object&gt;&gt; queryListMap(SqlParams sqlParams)

List&lt;Map&lt;String,Object&gt;&gt; queryListMap(SqlParams sqlParams, int page, int pageSize, String orderField, boolean isAsc)

List&lt;Map&lt;String,Object&gt;&gt; queryListMap(String sql)

List&lt;Map&lt;String,Object&gt;&gt; queryListMap(String sql, int page, int pageSize, String orderField, boolean isAsc)

&lt;K,T&gt; Map&lt;K,T&gt; queryMap(SqlParams sqlParams) //MAP：以第一列为KEY，第二列为VALUE

&lt;K,T&gt; Map&lt;K,T&gt; queryMap(String sql)

&lt;T&gt; T queryObject(SqlParams sqlParams, Class&lt;T&gt; clazz)

&lt;T&gt; T queryObject(String sql, Class&lt;T&gt; clazz)

int update(SqlParams sqlParams)

int update(String sql)

boolean runSql(String sql)</span>
</pre>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif;"><br />
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>其中</span>
<span>SqlParams</span>
<span>对象封装了带问号（占位符）的</span>
<span>SQL</span>
<span>语句与参数数组。</span>
</span>
</p>
<h3 style="MARGIN: 13pt 0cm"><span style="font-family: arial,helvetica,sans-serif; font-size: large;"><span>DbUtils</span>
<span>的使用</span>
</span>
</h3>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>DBASS</span>
<span>提供的</span>
<span>DbUtils</span>
<span>最开始的版本是与</span>
<span>Apache Commons DbUtil</span>
<span>的</span>
<span>DbUtils</span>
<span>类是一致的。提供了一些打开与关闭连接之类的方法。另外增加了一些方法，不过这些方法对于用户来说是无关紧要的。</span>
</span>
</p>
<h3 style="MARGIN: 13pt 0cm"><span style="font-family: arial,helvetica,sans-serif; font-size: large;"><span>事务的使用与</span>
<span>TransactionUtils</span>
</span>
</h3>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>DBASS</span>
<span>提供了基于注释的事务支持。支持事务嵌套。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>事务的配置很简单：如果您的某个方法需要事务支持。只需在方法前面加入一个注释即可。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>事务注释：</span>
<span>cn.antia.dn. AssTranscation</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>例如：</span>
</span>
</p>
<pre name="code" class="java">@AssTranscation
public int deleteUser(…){…} </pre>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>是不是很简单呢。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif;"><span style="font-size: small;">&nbsp;</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>如果您想手动控制事务的话。</span>
<span>TransactionUtils</span>
<span>为事务的支持提供了一组静态方法。一般使用事务只需关注三个方法即可：</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>begin ();<span style="mso-tab-count: 1"> </span>
<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>
<span>开始一个事务。如果在调用此方法之前当前线程正在事务当中，那么将不再打开新的事务。而只是将后面的操作加入到已经存在的事务中。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>commit();<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>
<span>提交事务。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>rollback();<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>
<span>回滚事务。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>rollback(Throwable e);<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>
<span>回滚事务，参数为引发回滚的异常</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>TransactionUtils</span>
<span>的其它方法包括：</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>isInTransaction():<span style="mso-tab-count: 1"> </span>
<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>
<span>当前线程是否在事务中</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>isConnInTransaction():<span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>
</span>
<span>此数据库连接是否在事务中</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>currentConnection():<span style="mso-tab-count: 1">&nbsp; </span>
</span>
<span>取得当前线程的数据库连接</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif;"><span style="font-size: small;">&nbsp;</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>TransactionUtils</span>
<span>使用示例：</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt"><span style="font-family: arial,helvetica,sans-serif;"><span style="font-size: small;">
<pre name="code" class="java">void test(){

TransactionUtils.begin();
    try{
        String sql = &quot;update address set borough = '000000000' where id = 2&quot;;
        CommonDAO.update(sql);

        sql = &quot;update address set borough = '000000000' where id = 3&quot;;
        CommonDAO.update(sql);
    }catch(Exception e){
        TransactionUtils.rollback(e);
        return;
    }
TransactionUtils.commit();
}
</pre>
</span>
 </span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>注意：</span>
<span>TransactionUtils</span>
<span>的事务支持需要与</span>
<span>CommonDAO</span>
<span>或者</span>
<span>DbUtils</span>
<span>配合使用。这里的</span>
<span>CommonDAO</span>
<span>或者</span>
<span>DbUtils</span>
<span>中</span>
<span>&ldquo;</span>
<span>或者</span>
<span>&rdquo;</span>
<span>的意思是指：要么您使用</span>
<span>CommonDAO</span>
<span>来完成操作。要么您使用</span>
<span>DbUtils</span>
<span>来获取与关闭</span>
<span>DB Connection</span>
<span>。因为</span>
<span>TransactionUtils</span>
<span>无法管理从其它地方取到的</span>
<span>DB Connection</span>
<span>。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><span>注意：如果事务回滚，</span>
<span>TransactionUtils</span>
<span>将会在事务回滚之后抛出一个运行时异常。以告知业务方法的调用者。</span>
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif;"><br />
</span>
</p>
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt"><span style="font-family: arial,helvetica,sans-serif; font-size: small;"><a href="http://code.google.com/p/cwin/downloads/list" target="_blank">在此下载DBASS1.0</a>
</span>
</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252600" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' 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, 14 Oct 2008 11:40:34 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252600</link>
        <guid>http://www.javaeye.com/topic/252600</guid>
      </item>
          <item>
        <title>易保面试题目</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://liliugen.javaeye.com">liliugen</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/250871" style="color:red;">http://www.javaeye.com/topic/250871</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          1.你平时都知道怎么写过高效率的SQL<br />2.<br />SPRING 的事务处理你们放在哪一层处理<br />3.两个DAO进行交互，一个DAO失败了是不是另外一个也失败，那这样怎么办啊·<br />4.JSF什么个框架· <strong>jsf与struts的异同</strong><br />5.STRUTS&nbsp; 里面ACTIONSERVLET在容器里面是不是就一个？<br /><br />6 如果你说是5的答案一个，就问，那么多人访问你的应用，那么多线程就一个ActionServlet，安全吗？
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/250871" style="color:red;">已有 <strong>52</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' 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><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Thu, 09 Oct 2008 17:56:41 +0800</pubDate>
        <link>http://www.javaeye.com/topic/250871</link>
        <guid>http://www.javaeye.com/topic/250871</guid>
      </item>
          <item>
        <title>webService方法参数为自定义类型，怎样根据wsdl生成客户端对应的自定义类型代码？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://hz-szh.javaeye.com">hz_szh</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252592" style="color:red;">http://www.javaeye.com/topic/252592</a>&nbsp;
          发表时间: 2008年10月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          我用xfire发布了webService，方法参数含有自定义类型，怎样根据wsdl生成客户端对应的自定义类型代码？我用xfire的生成工具只能生成存根代码，而自定义类型的代码生成不了....头痛啊！应该怎样生成啊？
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252592" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 14 Oct 2008 11:31:24 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252592</link>
        <guid>http://www.javaeye.com/topic/252592</guid>
      </item>
          <item>
        <title>诚恳谈工资，非诚莫入！</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://gao-20022002.javaeye.com">gao_20022002</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252547" style="color:red;">http://www.javaeye.com/topic/252547</a>&nbsp;
          发表时间: 2008年10月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>对于这个话题，或许大部分公司，或许是所有公司，都是一个避讳的问题。因此工资问题显得很是神秘，但是时间长了，和同事的接触中，我们是可以感触的到的。</p>
<p>&nbsp;</p>
<p>公司避讳谈工资的原因：无非就是因为可能影响工作的积极性，试想：如果你觉得你自己和别人干同样的事，那相差很大的钱，你会心满意足？你会安心工作？所以和不是一家单位的同学朋友谈工资问题，也就没有太多的障碍。</p>
<p>&nbsp;</p>
<p>为什么要谈工资问题？</p>
<p>了解自己的位置，了解自己的能力，了解行业的趋势，定位自己。</p>
<p>扯了这么多，现在谈谈自己收集的信息，除了敏感信息保留外，其他的都是千真万确。</p>
<p>&nbsp;</p>
<p>先说说自己：</p>
<p>杭州工作，毕业两年零两个月，现在4500，税前，税后4000-，三险一金齐全。</p>
<p>两个月前的好几个同事离职，现在工资都在5000-5500之间，税前，税后4500-4800之间。</p>
<p>还有知道的一个情况，研究生毕业，名牌学校名牌专业，税前5500，税后没有问。</p>
<p>说说：在同一家公司工资升级是很困难，除非你有很特别大的表现，就是有了也不一定。工作一两年的，跳槽频繁，涨工资也快，这是实情。研究生毕业的工资和工作两年的工资应该相差不大，但是这东西不好说，我是说文聘和经验的交换问题，以后谁的路子好，还得靠自己的努力。</p>
<p>&nbsp;</p>
<p>了解的北京的情况：</p>
<p>现在的工资5500-6000之间，税前，税后5000+。况且此位老兄表现突出，晋升为一个部门小主管。</p>
<p>说说：关键是消费问题。每个月他们的住房是1000-，生活费600-，加上其他的通讯坐车费用，一个月攒上2500+，已经很不错。还不说其他的消费。</p>
<p>&nbsp;</p>
<p>了解的深圳的情况：</p>
<p>和北京差不多。</p>
<p>&nbsp;</p>
<p>了解的武汉加上海的情况：</p>
<p>武汉一个同学，不是计算机的，搞建筑，土木工程，工资2300+，税前。</p>
<p>上海一个同学，不是计算机的，银行行业，一个小主管，调到武汉，工资5000+，税前。</p>
<p>说说：由于我的同学在上海的不多，所以具体的不大太了解，但是上海的和北京深圳差不多，比杭州要高些，但是花费当然也要高些。武汉的生活水平不是很
了解，据武汉的同事说，当时上学的感觉是比杭州低很多，不知道现在。武汉的工资相对要低些，这是事实。但是加上消费，也还过得去。</p>
<p>&nbsp;</p>
<p>现在的结论是什么？</p>
<p>计算机行业的工资要相对高些，搞开发的，要是搞界面或者美工之类的，一个月也就是2000+，我说的是整体情况，不包括那些特牛的人。工作两年一个月能攒上2500-3000，不管在什么地方，应该已经不错了。</p>
<p>&nbsp;</p>
<p>我们的收入高不高？</p>
<p>相对于其他行业，是高些。不包括那些国有企业的以及政府机关的，他们的工资是低，但是福利你是没法比的。外企的公司不是很了解，应该也是比较高，但是也是相对的，你的能力在那里能突出多少？表现突出了高是正常的。</p>
<p>&nbsp;</p>
<p>公司为什么会给我们这么高的工资？</p>
<p>因为我们能给公司创造高i的效益。</p>
<p>公司不是傻瓜，她不会无缘无故给你涨工资，也不会毫无理由的给你定工资。该拿多少自己衡量衡量实力，看自己到底值多少？工作两年，他给你上万的工资，你拿得起吗？当然我不说李一男之大师级人物，毕竟那是少数。</p>
<p>&nbsp;</p>
<p>我们缺失的是什么？</p>
<p>时间的积累，经验的积累。</p>
<p>公司不可能将一个大的项目安排给一个刚毕业一两年的自认为很牛的员工，这一点应该认同。给了你你能驾驭得了吗？认真想想。</p>
<p>&nbsp;</p>
<p>现在我们应该怎样看待工资的问题？</p>
<p>踏踏实实干事，老老实实做人。努力积累自己的原始资本------经验。</p>
<p>软件行业，前面的四五年之间工资能养活自己能攒点钱应该很好了，到五年之后，分歧就会出现，那时候的差距就会显现，管理级别与员工级别应该待遇很不一样。</p>
<p>现在我的观点，认认真真做好自己本职工作，踏踏实实学习些东西，老老实实走自己的路。</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>希望各位发表看法。</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252547" style="color:red;">已有 <strong>5</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 14 Oct 2008 10:15:16 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252547</link>
        <guid>http://www.javaeye.com/topic/252547</guid>
      </item>
          <item>
        <title>SPRING的AOP不适合多线程应用？</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://dmtm.javaeye.com">大猫汤姆</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251923" style="color:red;">http://www.javaeye.com/topic/251923</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          如题，<br />我的理解是：AOP代理对像实例化所花费的开销比较大，而且是非线程安全的，<br />所以线程安全的解决办法：<br />方法一：使用时要么每次都NEW一个，这样的用一次就扔掉我认为是对资源的浪费。<br />方法二：在应用中适当的地方加同步进行排队。这样虽然减小了开消，但是对线程高并发的情况肯定是个瓶颈。<br />我目前对SPRING的观点是：<br />SPRING是一种解决问题的办法,方案，一种思想。<br /><br />IOC 只有IOC是个很不错的东西。但是如果不使用AOP的话IOC好像没什么价值，只是换个角度去解决问题。<br /><br />AOP 如果不在乎机器资源的开消问题才可以使用，以灵活性换取性能。小型应用没必要使用，流量大的门户网站不能使用。<br /><br />MVC 愿意用就用。<br /><br />对HIBERNATE，JDBC，MAIL的封装等&nbsp; 我认为没有必要，完全可以自己来实现，这样更清楚，更容易撑握应用程序。看到SPRING把这些东西包裹起来从心底感到恶心。比如封装HIBERNATE时，获取Session里用到的threadLocal，这东西被封装了起来，客户端程序员想用的时候只能新创建一个,THREADLOCAL对性能是有一定的影响的(虽然JDK1.5已经很好的优化了)，一个就够了。<br /><br />感觉SPRING就是狗皮膏药，做救 急的东西，在不修改源代码的情况下拦腰插入一些代码，因为实际上线的应用程序中大家都不敢修改源代码，修改源代码非常危险麻烦,整个应用还需要反复测试，所以用AOP来支撑。
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251923" style="color:red;">已有 <strong>16</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Sun, 12 Oct 2008 21:51:39 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251923</link>
        <guid>http://www.javaeye.com/topic/251923</guid>
      </item>
          <item>
        <title>WebSphere技术专家沙龙活动上海站 图文花絮综合报道</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://daocaoren0827.javaeye.com">艾依然</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252591" style="color:red;">http://www.javaeye.com/topic/252591</a>&nbsp;
          发表时间: 2008年10月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p>2008年9月12日<span style="font-family: 宋体;"><span style="font-size: 10.5pt;"><span style="font-family: 宋体;"><span style="font-size: 10.5pt;">上海<strong>大公馆文化俱乐部</strong></span></span></span></span>，上海的<span class="t_tag" onclick="tagshow(event)">WebSphere</span>技术专家们齐聚一堂，共同来分享由<span style="font-family: 宋体;"><span style="font-size: 10.5pt;"><span style="font-family: 宋体;"><span style="font-size: 10.5pt;"><span class="t_tag" onclick="tagshow(event)">IBM</span>(</span></span><span style="font-family: 宋体;"><span style="font-size: 10.5pt;">中国)有限公司上海分公司技术顾问<strong>童景文</strong>先生</span></span></span></span>带来的&ldquo;<strong><span style="font-family: 宋体;"><span style="font-size: 10.5pt;"><span style="font-family: 宋体;"><span style="font-size: 10.5pt;">Websphere MQ</span></span><span style="font-family: 宋体;"><span style="font-size: 10.5pt;">性能调优以及WebSphere MQ V7新特性介绍</span></span></span></span></strong>&rdquo;和&ldquo;<strong><span style="font-family: 宋体;"><span style="font-size: 10.5pt;"><span style="font-family: 宋体;"><span style="font-size: 10.5pt;">Using WebSphere <span class="t_tag" onclick="tagshow(event)">Application</span> <span class="t_tag" onclick="tagshow(event)">Server</span> V6.1 Integrated Tools to Solve Production <span class="t_tag" onclick="tagshow(event)">Application</span> Problems</span></span></span></span></strong>&rdquo;在这里感谢演讲嘉宾<strong>童景文先生</strong>的精彩演讲，也感谢各位到场的技术专家们，同时也要感谢在会场为大家提供服务的会议公司的朋友们。<br /><br />接下来让我们一块来分享沙龙现场的相关图片。</p>
<p align="center">&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center"><br /><img src="/upload/attachment/42474/c6f1c631-078b-33c6-be40-598158bbcac9.jpg" alt="" /><br />&nbsp;</p>
<p align="center"><br /><img src="/upload/attachment/42476/3f6853d0-e3dd-3f26-b90e-ad52522ccd1d.jpg" alt="" /><br />&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center">演讲嘉宾童景文先生正在演讲</p>
<p>&nbsp;</p>
<p align="center">&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: center;"><br /><img src="/upload/attachment/42478/5684f831-1efe-357c-9032-9161355d60f3.jpg" alt="" /><br />&nbsp;</p>
<p align="center">&nbsp;</p>
<p style="text-align: center;"><br /><img src="/upload/attachment/42480/ae8e571b-4b6a-3f9b-b884-4c37c68a4bb5.jpg" alt="" /><br />&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center">演讲嘉宾与到会技术专家现场讨论</p>
<p>&nbsp;</p>
<p align="center">&nbsp;</p>
<p style="text-align: center;"><br /><img src="/upload/attachment/42481/65d4de6c-605d-323c-9bb0-1b48a59276ce.jpg" alt="" /><br />&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align="center">到场技术专家填写对于沙龙的反馈问卷</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252591" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 14 Oct 2008 11:29:04 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252591</link>
        <guid>http://www.javaeye.com/topic/252591</guid>
      </item>
          <item>
        <title>让你的 Ibatis2 也支持Annotation</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://cnoss.javaeye.com">cnoss</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251047" style="color:red;">http://www.javaeye.com/topic/251047</a>&nbsp;
          发表时间: 2008年10月10日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <strong><span style="color: Blue">在支持xml配置方式的基础上增加了对annotation的支持，用户可以根据自己的喜好来选择或者两种方式并存。</span></strong><br /><br />详情请大家看：<a href="http://www.rest4g.org/viewthread.php?tid=12&amp;extra=page%3D1" target="_blank">http://www.rest4g.org/viewthread.php?tid=12&amp;extra=page%3D1</a><br /><br />代码示例如下：<br />Account.java<pre name="code" class="java">
package org.jrest4guice.persistence.ibatis;
public class Account {
  private int id;
  private String firstName;
  private String lastName;
  private String emailAddress;

  public int getId() {
    return id;
  }

  public void setId(int id) {
    this.id = id;
  }

  public String getFirstName() {
    return firstName;
  }

  public void setFirstName(String firstName) {
    this.firstName = firstName;
  }

  public String getLastName() {
    return lastName;
  }

  public void setLastName(String lastName) {
    this.lastName = lastName;
  }

  public String getEmailAddress() {
    return emailAddress;
  }

  public void setEmailAddress(String emailAddress) {
    this.emailAddress = emailAddress;
  }

}
</pre>AccountService.java<pre name="code" class="java">
package org.jrest4guice.persistence.ibatis;

import java.sql.SQLException;
import java.util.List;

import org.jrest4guice.persistence.ibatis.annotations.Delete;
import org.jrest4guice.persistence.ibatis.annotations.IbatisDao;
import org.jrest4guice.persistence.ibatis.annotations.Insert;
import org.jrest4guice.persistence.ibatis.annotations.Result;
import org.jrest4guice.persistence.ibatis.annotations.ResultMap;
import org.jrest4guice.persistence.ibatis.annotations.Select;
import org.jrest4guice.persistence.ibatis.annotations.Update;
import org.jrest4guice.transaction.annotations.Transactional;
import org.jrest4guice.transaction.annotations.TransactionalType;

import com.google.inject.Inject;
import com.ibatis.sqlmap.client.SqlMapClient;

@IbatisDao
@SuppressWarnings("unchecked")
@Transactional
@ResultMap(id = "accountResultMap", result = {
		@Result(property = "id", column = "id"),
		@Result(property = "firstName", column = "firstName"),
		@Result(property = "lastName", column = "lastName"),
		@Result(property = "emailAddress", column = "emailAddress") }, resultClass = Account.class)
@Cachemodel(id = "account-cache", flushInterval = "24", flushOnExecute = {
		"insertAccount", "updateAccount", "deleteAccount" }, type = "LRU", 
		property = { @Property(name = "size", value = "100") })
public class AccountService {
	@Inject
	private SqlMapClient sqlMapper;

	@Select(id = "selectAllAccounts", sql = "select * from ACCOUNT", 
			resltMap = "accountResultMap", cacheModel = "account-cache")
	@Transactional(type = TransactionalType.READOLNY)
	public List&lt;Account> findAll() throws SQLException {
		return sqlMapper.queryForList("selectAllAccounts");
	}

	@Select(sql = "select id ,firstName,lastName,emailAddress from "
			+ "ACCOUNT where id = #id#")
	@Transactional(type = TransactionalType.READOLNY)
	public Account getAccountById(int id) throws SQLException {
		return (Account) sqlMapper.queryForObject("getAccountById", id);
	}

	@Insert(id = "insertAccount", sql = "insert into ACCOUNT (id,firstName,"
			+ "lastName,emailAddress) values (#id#, #firstName#, #lastName#, "
			+ "#emailAddress#)")
	public void createAccount(Account account) throws SQLException {
		sqlMapper.insert("insertAccount", account);
	}

	@Update(sql = "update ACCOUNT set firstName = #firstName#,lastName = "
			+ "#lastName#,emailAddress = #emailAddress# where id = #id#")
	public void updateAccount(Account account) throws SQLException {
		sqlMapper.update("updateAccount", account);
	}

	@Delete(id = "deleteAccount", sql = "delete from ACCOUNT where id = #id#")
	public void deleteAccount(int id) throws SQLException {
		sqlMapper.delete("deleteAccount", id);
	}

	@Select(id = "queryAccounts", 
		sql = "select * from ACCOUNT "
			+ "&lt;dynamic prepend=\"where\">"
			+ " &lt;isNotNull prepend=\"and\" property=\"firstName\">"
			+ "    firstName = #firstName#" 
			+ " &lt;/isNotNull>"
			+ " &lt;isNotNull prepend=\"and\" property=\"lastName\">"
			+ "    lastName = #lastName#" 
			+ " &lt;/isNotNull>"
			+ " &lt;isNotNull prepend=\"and\" property=\"emailAddress\">"
			+ "    emailAddress = #emailAddress#" 
			+ " &lt;/isNotNull>"
			+ "&lt;/dynamic> " 
			+ "order by lastName", resltMap = "accountResultMap", 
			cacheModel = "account-cache")
	@Transactional(type = TransactionalType.READOLNY)
	/**
	 * 动态SQL查询
	 */
	public List&lt;Account> queryAccounts(Account account) throws SQLException {
		return sqlMapper.queryForList("queryAccounts",account);
	}
}
</pre>AccountServiceTest.java<pre name="code" class="java">
package org.jrest4guice.persistence.ibatis;

import java.sql.SQLException;
import java.util.List;

import junit.framework.Assert;

import org.jrest4guice.guice.GuiceContext;
import org.jrest4guice.guice.PersistenceGuiceContext;
import org.junit.BeforeClass;
import org.junit.Test;

public class AccountServiceTest {
	private static AccountService service;

	@BeforeClass
	public static void setUp() throws Exception {
		// 初始化JRest4Guice
		PersistenceGuiceContext.getInstance().useIbatis(
				"org.jrest4guice.persistence.ibatis").init();
		// 获取服务
		service = GuiceContext.getInstance().getBean(AccountService.class);
	}

	@Test
	public void doTest() {
		List&lt;Account> accounts;
		try {
			Account account = new Account();
			account.setFirstName("张");
			account.setLastName("学友");
			account.setEmailAddress("jackey@rest4g.org");
			// 添加
			service.createAccount(account);

			account = new Account();
			account.setFirstName("刘");
			account.setLastName("学友");
			account.setEmailAddress("test@rest4g.org");
			// 添加
			service.createAccount(account);
			
			//查询（按lastName）
			Account queryCondition = new Account();
			queryCondition.setLastName("学友");
			accounts = service.queryAccounts(queryCondition);
			Assert.assertEquals(2, accounts.size());
			
			//查询（按firstName和lastName）
			queryCondition.setFirstName("张");
			accounts = service.queryAccounts(queryCondition);
			Assert.assertEquals(1, accounts.size());

			// 修改
			account = accounts.get(0);
			account.setFirstName("何");
			service.updateAccount(account);
			account = service.getAccountById(account.getId());
			Assert.assertNotNull(account);
			Assert.assertEquals("何", account.getFirstName());

			//查询所有
			accounts = service.findAll();
			Assert.assertEquals(2, accounts.size());

			// 删除
			for (Account ac : accounts){
				service.deleteAccount(ac.getId());
			}
			
			//断言删除的结果
			accounts = service.findAll();
			Assert.assertEquals(0, accounts.size());
		} catch (SQLException e) {
			Assert.fail(e.getLocalizedMessage());
		}
	}
}
</pre>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251047" style="color:red;">已有 <strong>48</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Fri, 10 Oct 2008 07:17:02 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251047</link>
        <guid>http://www.javaeye.com/topic/251047</guid>
      </item>
          <item>
        <title>关于this 和 var</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yxylwt.javaeye.com">yxylwt</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252537" style="color:red;">http://www.javaeye.com/topic/252537</a>&nbsp;
          发表时间: 2008年10月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          很多人都觉得在javascript声明一个变量，加var和不加var没有什么区别，实际上是一个错误的观点，如果在函数外面，也就是说在window区域加不加var确实是一样，因为都会是全局变量的效果，而如果在函数内部，加var就是局部变量，不加是全局变量。<br />function test(){&nbsp;&nbsp; <br />&nbsp; var1 = 2; <br />&nbsp; alert(var1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp; <br />test();&nbsp;&nbsp; <br />alert(var1); <br />这样可以显示为2<br />function test(){&nbsp;&nbsp; <br />&nbsp; var var1 = 2; <br />&nbsp; alert(var1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />}&nbsp;&nbsp; <br />test();&nbsp;&nbsp; <br />alert(var1); <br />则为变量未定义错误<br /><br />this多用于函数内部，它永远指向调用他的那个对象，看看下面的例子就明白了<br /><br />var test={<br />&nbsp;&nbsp; a:"test",<br />&nbsp;&nbsp; msg:function(){<br />&nbsp;&nbsp;&nbsp;&nbsp; a="1234";<br />&nbsp;&nbsp;&nbsp;&nbsp; alert(this.a);<br />&nbsp;&nbsp;&nbsp;&nbsp; var msg1= function(){<br />	alert(this.a);<br />&nbsp;&nbsp;&nbsp;&nbsp; }<br />&nbsp;&nbsp;&nbsp;&nbsp; msg1();<br />&nbsp;&nbsp; }<br />}<br /> test.msg(); 这样会分别显示 "test" ,"1234"
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252537" style="color:red;">已有 <strong>1</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' 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><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 14 Oct 2008 10:05:09 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252537</link>
        <guid>http://www.javaeye.com/topic/252537</guid>
      </item>
          <item>
        <title>IOC?真的IOC了？还是Factory?</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://yananay.javaeye.com">yananay</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252235" style="color:red;">http://www.javaeye.com/topic/252235</a>&nbsp;
          发表时间: 2008年10月13日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          在google上搜索 “spring ioc”，会出来一堆堆的搜索结果，随便点哪一个进去，都会看到这样的教程：<br /><br /><pre name="code" class="java">
ClassA a = (ClassA) beanFactory.getBean("A");
</pre><br /><br />ok, 教程中都说这是Spring的ioc用法， ClassA 是被 Spring管理的，ClassA中的需要set的变量都是“自动注入”的，例如：<br /><br /><pre name="code" class="java">
public class ClassA {
  private ClassB b;
  public void setB(ClassB b) {
    this.b = b;
  }
}
</pre><br /><br />所有的教程，文档，甚至Spring的文档，都说这是 <strong>IOC</strong>。<br /><br />但是很少有人提及这一点：<strong>beanFactory.getBean("A") 是一个工厂模式</strong>。<br /><br />前一阵经过梁兄的指点，俺才发现：<strong>这明明就是工厂模式呀</strong>！也就是说你要使用 IOC，前提是要使用工厂模式。虽然 ClassA 是被自动装配的，但那之前，你必须使用工厂模式来得到装配后的 ClassA。<br /><br />换个比喻来说：如果你要使用一个手枪，必须先用火柴去点燃手枪里的火药。<br /><br />不晓得大家对这个问题怎么个看法，至少俺觉得有些别扭，其实我们完全可以不使用工厂模式。考虑下面这个类：<br /><br /><pre name="code" class="java">
public class StandardConfiguration {

	private static Logger logger = Logger.getLogger(StandardConfiguration.class);
	
	private ImportBusiness importBusiness;
	
	public StandardConfiguration(BeanFactory beanFactory) {
		
		Method[] methods = getClass().getMethods();
		
		for(Method method : methods) {
			
			String methodName = method.getName();
			Class returnType = method.getReturnType();
			if(methodName.startsWith("get")) {
				
				String fieldName = getFieldName(methodName);
				
				Object bean = null;
				try {
					bean = beanFactory.getBean(fieldName);
					
				} catch (NoSuchBeanDefinitionException e) {
					
					logger.debug("StandardConfiguration - " + fieldName + " NoSuchBeanDefinitionException, ignore.");
					continue;
				}
				
				String setMethodName = "set" + createFieldMethodVar(fieldName);
				
				Method setMethod = null;
				try {
					setMethod = getClass().getMethod(setMethodName, new Class[]{returnType});
					setMethod.invoke(this, bean);
					
				} catch (NoSuchMethodException e) {
					
					logger.debug("StandardConfiguration - " + fieldName + " has no set method.");
					
				} catch (InvocationTargetException e) {
					
					logger.error("StandardConfiguration - " + fieldName + " invoke failed.");
				} catch (IllegalAccessException e) {
					
					logger.error("StandardConfiguration - " + fieldName + " IllegalAccessException.");
				}
			}
		}
		
	}
	
	private String getFieldName(String methodName) {
		
		String fieldName = methodName.substring(3, methodName.length());
		fieldName = fieldName.substring(0, 1).toLowerCase() +
						fieldName.substring(1, fieldName.length());
		
		return fieldName;
	}
	
	private String createFieldMethodVar(String fieldName) {
		
		return fieldName.substring(0, 1).toUpperCase() +
				fieldName.substring(1, fieldName.length());
	}

	public ImportBusiness getImportBusiness() {
		return importBusiness;
	}

	public void setImportBusiness(ImportBusiness business) {
		this.importBusiness = business;
	}
}
</pre><br /><br />这个类按照下面的方式来使用：<br /><br /><pre name="code" class="java">
StandardConfiguration config = new StandardConfiguration(beanFactory)
ImportBusiness importBusiness = config.getImportBusiness();
</pre><br /><br />其中 beanFactory 是 Spring 中的 BeanFactory，ImportBusiness 是一个普通的类。<br /><br />ok，我们避免了 beanFactory.getBean("A") 的用法，我可以说：<strong>当我 new 一个 StandardConfiguration 的时候，里面的变量都是自动注入的。</strong><br /><br />但是有人说：你这是穿裤子放屁--你不是还得使用 BeanFactory？<br /><br />没错，没错，这也是我想说的主要话题之一，<strong>如果 BeanFactory 能修改一下该多好</strong>！<br /><br />我设想的情况是这样使用：<br /><br /><pre name="code" class="java">
public class StandardConfiguration extends BeanFactory {
  private ImportBusiness importBusiness;
  public ImportBusiness getImportBusiness() {
    return importBusiness;
  }

  public void setImportBusiness(ImportBusiness business) {
     this.importBusiness = business;
  }
}
</pre><br /><br />这样当我 new 一个 StandardConfiguration 的时候，里面的变量就自动装配起来。这样的话，BeanFactory 似乎应该叫 BeanConfiguration 更好了。<br /><br />通过这样的方式，我们完全可以避免工厂模式的出现。这样做有什么好处呢：<br />1、避免了工厂模式的使用，单一的IOC更加简单。<br />2、避免了通过 bean name（beanFactory.getBean("A");） 来获得某一个对象。其实也就是避免了hardcode。
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252235" style="color:red;">已有 <strong>12</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Mon, 13 Oct 2008 15:08:41 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252235</link>
        <guid>http://www.javaeye.com/topic/252235</guid>
      </item>
          <item>
        <title>★新手面试经验分享(更新中)★</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://collonn.javaeye.com">collonn</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251008" style="color:red;">http://www.javaeye.com/topic/251008</a>&nbsp;
          发表时间: 2008年10月09日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <p><span style="font-size: small;"><span style="font-size: 9pt; color: #000000; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">&nbsp;
<p><span style="font-size: 9pt; color: #000000; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><strong>总结了一些新手面试经验，希望能有帮助</strong></span></p>
<p><span style="font-size: 9pt; color: #000000; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">1</span><span style="font-size: 9pt; color: #000000; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：简历不能太实在，两个项目参考就可以了，但要对你在项目的做的什么工作很清楚</span></p>
<p><span style="font-size: 9pt; color: #000000; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">2</span><span style="font-size: 9pt; color: #000000; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：让你自我介绍时，就说说自己在大学是怎么学习编程的，自己做了哪些实践，实习时又干了些什么，当</span></p>
<p style="text-indent: 13.5pt; mso-char-indent-count: 1.5;"><span style="font-size: 9pt; color: #000000; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">然你可以编，但要有准备</span></p>
<p><span style="font-size: 9pt; color: #000000; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">3</span><span style="font-size: 9pt; color: #000000; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：在网上搜集一些</span><span style="font-size: 9pt; color: #000000; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">Java</span><span style="font-size: 9pt; color: #000000; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">面试题做做，背背是很有必要的</span></p>
<p><span style="font-size: 9pt; color: #000000; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">4</span><span style="font-size: 9pt; color: #000000; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：一定要会数据结构中的</span><span style="font-size: 9pt; color: #000000; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;"> </span><span style="font-size: 9pt; color: #000000; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">选择和排序</span><span style="font-size: 9pt; color: #000000; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;"> </span><span style="font-size: 9pt; color: #000000; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">算法，一定要在记事本中写出来，并在</span><span style="font-size: 9pt; color: #000000; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">命令提示符下</span><span style="font-size: 9pt; color: #000000; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">测试</span></p>
<p><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">5</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">J2SE</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的基本配置最好</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;"> </span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">了如指掌</span></p>
<p><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">6</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：进了公司后，实在，实在是呆不下去了，可以申请离职</span></p>
<p><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">7</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：面试回来后，感觉不错就给公司回个邮件</span></p>
<p><span style="color: #0000ff;"><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">8</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：工资要求不要太高，不相信？那你试试吧</span></span></p>
<p><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">9</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：简单的数据库表设计要会，一定要会这两个查找</span></p>
<p><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>A</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：找出一个表中重复的记录</span></p>
<p><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;"><span style="mso-spacerun: yes;">&nbsp;&nbsp; </span>B</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：删除表中重复记录，只留一条即可</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">(</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">网上有好多答案，自己搜吧</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">)</span></p>
<p><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">10</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">Struts</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">一定要熟悉，什么配置了，处理流程了，等</span></p>
<p><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">11</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">Hibernate</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">一定要熟悉，什么配置了，持久化类的设计了，</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">ORMapping</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的配置了，如何提高</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">Hb</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">的性能</span></p>
<p style="text-indent: 18pt; mso-char-indent-count: 2.0;"><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">了，等，从零开始，如完成一个数据的</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">CRUD</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">功能</span></p>
<p style="text-indent: 18pt; mso-char-indent-count: 2.0;"><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">至于spring，对新手几呼没有考过，最多写一个类的注入配置文件</span></p>
<p><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">12</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">：面试时不要迟到，实在是来晚了，见了人家要先说：&ldquo;对不起，犯了个错误，来晚了&rdquo;，什么原因就</span></p>
<p style="text-indent: 18pt; mso-char-indent-count: 2.0;"><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">不用说了，说了只会产生腹面影响</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">最后再次提醒一下：</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">工资不要太高，正常加班可以接受就行，离家不能太远</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">(2</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">小时</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">??)</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">，搞程序开发的，一定要是软件公司，专开发开发</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">Web</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">或桌面程序</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">(</span><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">针对中小公司而言</span><span style="font-size: 9pt; font-family: 'Times New Roman'; mso-bidi-font-family: 宋体;">)</span></p>
<p>&nbsp;</p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><strong>我们也要选择公司(java web开发)</strong></span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">1：没有项目的不去</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">2：没有笔试的要考虑</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">3：只做本公司门户网站的不去</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">4：一线开发人员少的不去(至少得有几个真正懂得java 代码的老员工吧)</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">5：搞CMS维护的不去，要去也得去搞开发CMS(java版)的公司</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">6：工资太低的不去(低于2K)</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">7：疯狂加班的不去，如明确说朝9晚9，周一到周六，适当加班</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">8：只邮件通知不打电话的公司不去</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">9：如果你是编程的，面试你时，连几个有关编程技术的问题都不问(或者就根本不提)的公司不去</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>如果你要跳槽，不防看看以下几点</strong></p>
<span style="font-size: small;"><span style="font-size: 9pt; color: #000000; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">
<p>
<p>
<p>告诉人事经理，我没空</p>
<p>(此为转载)<br />　　　　 <br />　　引言:尽信书不如无书,同样,以下注意几点并非全对,罗列出来,只是相对高级人才而言.发表抗议的朋友,正一步步在晋级自己的级别! <br />　　 <br />　　有一些著名公司，以打广告为目的，招人为幌子，一个破烂职位能放一两年。 <br />　　 <br />　　<span style="color: #0000ff;">只给你发邮件而不打电话叫你去面试的公司，必须不予理睬</span>。通常是一些垃圾公司，没有能力满足你的基本要求。他们自己也没把握雇得起你，所以连电话费也免了。 <br />　　 <br />　　<span style="color: #0000ff;">第一次电话就让你于某月某日几点钟去哪里面试的公司，必须立刻回绝</span>。因为你到时候到那里一看，一堆刚毕业2、3年的年轻后生正爬在桌子上填写简历。你跟这些人竞争的结果就是你的工资最多只有他们的1倍高，5、6千顶天了。那么应该怎么回答呢？告诉人事经理，我没空，我只有莫月某日下午几点钟才有空，若不然，就不用去了，浪费时间，肯定是低级职位。 <br />　　 <br />　　<span style="color: #0000ff;">去公司面试前必须问清楚是谁面试你</span>，如果得知不是总经理或副总经理来面你，那么我劝你立刻回绝这个职位，因为如果面你的是个低三下四的中层干部，那么你的职位肯定是低四下五的低贱职位。总之，打扮得笔挺结果给猪看了，即花钱又浪费时间。 <br />　　 <br />　　<span style="color: #0000ff;">一进门就让你填一堆表格的公司，必须立马走人</span>，因为这是招聘中低等员工的惯用伎俩，特别是对那些喜欢出一些狗屁不通的试卷的公司，千万不要跟他们浪费时间。况且，应聘的人为了得到这份工作，根本就不可能按自己的真实情况回答这种测试卷，废纸一堆，招聘的人根本不懂人事管理。 <br />　　 <br />　　<span style="color: #0000ff;">如果公司所在城市离你较远，需要飞机前往，一定要问明公司报销不报销路费</span>。如果不报销，或者说如果录取就报销的公司，建议不要冒险去试。即使十个面试者中最后被你淘汰了九个，你还是会发现该公司的福利待遇极差极差。惨痛教训，切记勿再试。 <br />　　 <br />　　<span style="color: #0000ff;">要知道一个公司的整体面貌和素质如何，那就请留意人事部职员的面貌</span>，尤其是人事经理的素质往往是一个公司整体素质的缩影。如果接待你的人事经理较热心较礼貌周到，那么该公司的工作氛围一般较好，如果人事经理较冷漠或不很礼貌，那么该公司同事关系往往较残酷较冷漠。 <br />　　 <br />　　不要试图跟新加坡或台湾老板共事，否则你就等着身心接受摧残和扭曲吧。 <br />　　 <br />　　注意HR的职业病，几乎每个HR都有窥探癖和多疑症。他们更象是猎狗，他们嗅觉灵敏，对打探个人隐私有着狂热而又执着的癖好，往往是工作没给你，却把你现在工作的公司，以前工作的公司闹得沸沸扬扬。如果你不想丢掉现在的工作，不想让你以前的同事议论非非，那么，请慎重透露你的隐私给HR。切记切记。 <br />　　 <br />　　 <br />　　<span style="color: #0000ff;">当你跳槽时，所有的SB都会装模做样地问你，你将来的职业规划是什么</span>？你可千万别说是准备从研发、测试转测试、管理之类的屁话。更不要说将来可能会去出国深造。说者无心听者会乱想。 <br />　　 <br />　　 <br />　　 <br />　　<span style="color: #0000ff;"><strong>最后一条，也是最重要的一条，12年的跳槽经验表明，较好的中国公司及正规的外企正愈来愈倾向于日本企业的终身雇佣制度，即：拒绝跳槽，拒绝人才流动。</strong></span>所有的HR都有一种固执而又变态的心理：他不希望成为你的第一个雇主，但却强烈地希望是你的第二个雇主，并且是在该领域被第一个雇主用了5年到八年之后，同时希望自己是你的最后一个雇主。所以HR对你的跳槽经历往往怀有一种强烈的偏见和关注，对你跳槽原因的研究兴趣近乎变态。</p>
<span style="font-size: small;"><span style="font-size: 9pt; color: #000000; font-family: 宋体; mso-ascii-font-family: Verdana; mso-hansi-font-family: Verdana; mso-font-kerning: 1.0pt; mso-bidi-font-family: 'Times New Roman'; mso-ansi-language: EN-US; mso-fareast-language: ZH-CN; mso-bidi-language: AR-SA;">
<p>&nbsp;</p>
<p>&nbsp;</p>
</span></span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">写到这了，想到什么会再补的</span></p>
<p><span style="font-size: 9pt; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';">祝所有新手：早日入职</span></p>
</p>
</span></span></span><span style="font-size: small;">
<p>&nbsp;</p>
</span></span></p>
<p>&nbsp;</p>
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/251008" style="color:red;">已有 <strong>4</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</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>Thu, 09 Oct 2008 23:26:26 +0800</pubDate>
        <link>http://www.javaeye.com/topic/251008</link>
        <guid>http://www.javaeye.com/topic/251008</guid>
      </item>
          <item>
        <title>两年服务器开发的一句话经验集...</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://jeickey.javaeye.com">jeickey</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252579" style="color:red;">http://www.javaeye.com/topic/252579</a>&nbsp;
          发表时间: 2008年10月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          * 任何情况下不能吞异常，一般使用logger,哪怕只能用e.print... 也是有补救措施的，而吞掉便无从知晓。<br />* 配置多资源时，各种公用的内容没有提取，导致修改时非常麻烦，推荐使用include方式<br />* 子资源要能使用父资源的指标值,也就是父子要有继承关系<br />* 国际化时不应该再另起一个模型，这样会使同一修改改动很多文件<br />* 任何会导致特殊字符危险的方案不能用，比如<br />&nbsp; - 在解析命令时会解析参数 /o ,后来有一个目录叫"/opt/home" ，导致解析不成功，非常隐蔽而且危险<br />* 打日志时要尽量的全，哪怕是trace，调试时很方便。不需要的可以不配置，需要时不必再次修改代码。<br />* cc 的文件名长度有限制，非常不便<br />* 做配置时，某个对象的属性集中一处配置，哪怕是include,不可分散至引用处重复配置,比如现在原型的资源类型的 disporder<br />* log4j 要做动态加载<br />* 打日志要规范，利用解析，使用多logger输出<br />* 队列要集中管理，分配<br />* 线程要集中管理，分配。无论是线程池还是独立线程的创建。<br />* 模块化工作的敌人是建一个模块的工程时很麻烦，所以要从架构设计时解决这个问题，因为这个而导致今后结构不清晰，很不值得<br />* 大数据量的删除操作很慢，约几个小时的时间。所以需要在批量插入的时候判断是否需要删除部分数据<br />* 用URL返回本地文件路径时，注意URLDecode.decode(path,"UTF-8"); 来转换特殊编码<br />* 真实环境的压力测试(尤其是异常测试)很重要，未经此测试不要出售，会带来很大的维护压力<br />* socket 连接重试一定要有间歇，不然会把服务器搞宕<br />* 用到线程时，线程要继承一处，并作统一创建和管理，以便于在内部设置路标。并且在线程内要及时写入路标。设置路标时，参数以map形式添加，读取时再格式化成字符串。<br />* 对于多线程程序，线程池分配时，分配策略要可配置以调节性能<br />* 2008-6-13 06:34下午 今天开发时，A改过的东西 我们B不知道，他在本地修改因为版本已经冻结，导致严重问题复现。今后采用为某个现场环境建立一个hotfix版，在这个版本上记录更改历史<br />* 给现场安装不知该分配多大内存时，要有一个自动修正功能，设置内存在一个范围内递增。捕获oom 异常，让监控线程关闭系统并修改内存配置重启。但是前提是要保证数据的完整性受损是可接受，或者有解决方案的。<br />* 当一个小组成员分头支持现场问题时，每个人解决问题后要全体知悉，便于积累经验和对外表达一致<br />* Joel曾经说过：不要先去完成界面，因为在很多用户看来，完成了界面，就等于功能也快完成了。而要让功能和界面的开发保持同步最好。<br />* 开发软件不能只顾自己开发时方便,还要考虑到运行维护时是否方便<br />* 模块依赖api时，此模块要把自己需要的api整理为一套adapter去适配，便于整理出对api方法的依赖，另外在api强行变动时，其他应用也有应急办法<br />* 留下足够的程序内部信息的监控入口，生产环境是不让动的,xstream<br />* OOM, StackOverflow, JMX高负载后停止服务<br />* 系统中用到的环境变量名要集中使用常量管理<br />* io 远程调用传输过程中，尽量合并携带参数 ，减小传输量。不要使用zip。<br />* 线程要提供一个暂停的方法，以便调试<br />* 使用需要持久华的缓存，注意与持久化及时同步问题<br />* 作小于判断时，注意-0 是等于0 的，应该用&lt;=来判断。<br />* windows 2003系统中当开着服务控制台启动DaemonServer后不关闭mmc控制台,向控制台输内容会导致阻塞。要自定义文件流，使他们保存至文件。<br />* 持续进数据的队列 要对处理慢的情况有考虑，否则会oom<br />* 同步数据需要在一个事务内完成写入,否则会导致界面的坏体验<br />* 使用具体类来代替type类型区分，可以帮助在有性能问题时快速定位，只是有可能增加些代码量，值得。<br /><br /><br />大家还有什么补充嘛！
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252579" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 14 Oct 2008 11:00:21 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252579</link>
        <guid>http://www.javaeye.com/topic/252579</guid>
      </item>
          <item>
        <title>Amoeba for aladdin 项目 （数据库整合、分布式、负载均衡）即将发布 </title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://csrcom.javaeye.com">csrcom</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252562" style="color:red;">http://www.javaeye.com/topic/252562</a>&nbsp;
          发表时间: 2008年10月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          原文地址： <a href="http://amoeba.meidusa.com/wordpress/?p=12" target="_blank">http://amoeba.meidusa.com/wordpress/?p=12</a><br />Aladdin项目是针对企业数据库整合而产生的另外一种数据库切分、读写分离、负载均衡的中间件产品，是amoeba的子产品。沿袭了amoeba其他产品的特性（amoeba for mysql）。<br /><br />Aladdin产品简介：<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 与Amoeba for mysql 类似，客户端连接aladdin必须用mysql 协议，之所以用mysql协议，主要是想借助mysql使用的广泛程度以及对各种开发语言的支持，因此aladdin对客户端采取了mysql协议以方便适应广泛的使用者。aladdin后端可以同时连接各种数据库。只要这些数据库提供jdbc驱动。aladdin的出现可以解决企业在数据库整合上面提供积极的帮助。使用者不需要知道后端到底使用了什么类型的数据库、数据库的物理地址什么，这些由aladdin来分析sql语句，并且获得相应的要查询的表跟条件，然后由这些规则结合这些条件进行路由到相关的物理数据库。<br /><br /><img src="http://amoeba.meidusa.com/amoeba-aladdin-1.png" />
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252562" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</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;">Windows7在微软WinHEC 2008上揭开神秘面纱</span></a></li><li><a href='/adverts/42' target='_blank'><span style="color:red;font-weight:bold;">搜狐网站诚聘Java、PHP和C++工程师</span></a></li><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li></ul>
          <br/><br/><br/>
          ]]>
        </description>
        <pubDate>Tue, 14 Oct 2008 10:33:27 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252562</link>
        <guid>http://www.javaeye.com/topic/252562</guid>
      </item>
          <item>
        <title>持续集成</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://wdhdd889.javaeye.com">wdhdd889</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/252561" style="color:red;">http://www.javaeye.com/topic/252561</a>&nbsp;
          发表时间: 2008年10月14日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          今天终于把持续集成中build loop那一块弄出来了，采用ant+junit实现自动化创建过程中的测试部分。其实要实现持续集成，自动化测试是最重要的一部分，这一点实现不好，持续集成的搭建就没有任何意义，所有我在希望关注持续集成的兄弟姐妹们，实现持续集成，一定要把junit写好（其他的工具也可以），只要这样你的工作才会变的有意义起来
          <br/><br/>
          <span style="color:red;">
            <a href="http://www.javaeye.com/topic/252561" style="color:red;">已有 <strong>0</strong> 人发表回复，猛击-&gt;&gt;<strong>这里</strong>&lt;&lt;-参与讨论</a>
          </span>
          <br/><br/><br/>
          <span style="color:#E28822;">JavaEye推荐</span>
          <br/>
          <ul class='adverts'><li><a href='/adverts/138' target='_blank'><span style="color:red;font-weight:bold;">加入阿里巴巴，发展潜力无限</span></a></li><li><a href='/adverts/41' target='_blank'><span style="color:red;font-weight:bold;">Windows7在微软WinHEC 2008上揭开神秘面纱</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, 14 Oct 2008 10:33:26 +0800</pubDate>
        <link>http://www.javaeye.com/topic/252561</link>
        <guid>http://www.javaeye.com/topic/252561</guid>
      </item>
          <item>
        <title>Android入门扫盲之二</title>
        <author>JavaEye网站</author>
        <description>
          <![CDATA[
          <br/>
          作者: <a href="http://kuikui.javaeye.com">LinuxFans</a>&nbsp;
                    链接：<a href="http://www.javaeye.com/topic/251964" style="color:red;">http://www.javaeye.com/topic/251964</a>&nbsp;
          发表时间: 2008年10月12日
          <br/>
          声明：本文系JavaEye网站发布的原创文章，未经作者书面许可，严禁任何网站转载本文，否则必将追究法律责任！
          <br/><br/>
          <h2 style="margin: 13pt 0cm;"><span style="font-family: 宋体; mso-ascii-font-family: Cambria; mso-ascii-theme-font: major-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: major-fareast; mso-hansi-font-family: Cambria; mso-hansi-theme-font: major-latin;"><span style="font-size: large;">资源的引用</span></span></h2>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">在</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">开发中对资源的引用是很重要的内容，看一个</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">工程结构的好与坏，其实看看工程结构的资源文件的相互关系就大概可以看出来了，个人觉得学习好</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，资源文件是很重要的部分，这里讲的都是些入门级别的知识点，耐下心思看哦，呵呵。</span></span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: -18.75pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1;"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">1，</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">三种资源文件形式。资源文件之间的相互引用自然是基础的基础，三种形式</span><span lang="EN-US"><span style="font-family: Calibri;">(android:xxx/yyy,@xxxx/yyy,?xxx)</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的区别要彻底地弄明白。</span></span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: -18.75pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1;"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">2，</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">资源文件的属性命名。资源文件属性的命名</span><span lang="EN-US"><span style="font-family: Calibri;">(</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">其实大部分是</span><span lang="EN-US"><span style="font-family: Calibri;">id</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">名字，也有其它的，这里不再累赘</span><span lang="EN-US"><span style="font-family: Calibri;">)</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">对于初学者可能不太会在意，其实是很重要的部分，它其实也就是一些我们预先定义好的变量，能不在乎吗，这些变量会在自动生成映射类</span><span lang="EN-US"><span style="font-family: Calibri;">R.java</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">中生成一些静态索引值，帮助</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">快速定位，命名说白了，也是要求我们做到望名知意</span><span lang="EN-US"><span style="font-family: Calibri;">(</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">最好包括类型</span><span lang="EN-US"><span style="font-family: Calibri;">)</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。</span></span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: -18.75pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1;"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">3，</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">每个工程都会有对应的一个</span><span lang="EN-US"><span style="font-family: Calibri;">AndroidManifest.xml</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">文件，这个文件要注意的是一些权限的表示属性，如：</span></span></p>
<p class="MsoListParagraph" align="left" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: 0cm; text-align: left; mso-char-indent-count: 0; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">uses-permission </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:name</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"android.permission.INTERNET" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">uses-permission </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:name</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"android.permission.READ_CONTACTS" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">uses-permission </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:name</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"android.permission.WRITE_CONTACTS" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">uses-permission </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:name</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"android.permission.INSTALL_PACKAGES" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">uses-permission </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:name</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"android.permission.DELETE_PACKAGES" </span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">/&gt;</span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: 0cm; mso-char-indent-count: 0;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">看命名就知道是针对什么做权限限制，所以初学者要注意了，在你的程序运行的时候报</span><span lang="EN-US"><span style="font-family: Calibri;">SecurityException</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">的时候要看看你的程序是否涉及到限制操作，呵呵。这些在</span><span lang="EN-US"><span style="font-family: Calibri;">android.Manifest.permission</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">里面，大家自己看可能会更好，自己学习的能力很重要哦，要不然你做的不可能是前沿的东西啦。</span></span></p>
<p class="MsoListParagraph" style="margin: 0cm 0cm 0pt 18.75pt; text-indent: -18.75pt; mso-char-indent-count: 0; mso-list: l0 level1 lfo1;"><span lang="EN-US" style="mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-bidi-font-family: Calibri; mso-bidi-theme-font: minor-latin;"><span style="mso-list: Ignore;"><span style="font-size: small; font-family: Calibri;">4，</span><span style="font-family: &quot;Times New Roman&quot;;">&nbsp; </span></span></span><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">自己定义类的引用。怎么定义、怎么使用，可以参考</span><span lang="EN-US"><span style="font-family: Calibri;">ApiDemo</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">里面的经典实例：</span><span lang="EN-US"><span style="font-family: Calibri;">com.example.android.apis.view.LableView.java </span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">。这也是很重哦，因为在我们开发的过程中</span><span lang="EN-US"><span style="font-family: Calibri;">,Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">提供的</span><span lang="EN-US"><span style="font-family: Calibri;">UI</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">肯定不能满足我们的要求，这样你就得自己写新的</span><span lang="EN-US"><span style="font-family: Calibri;">UI</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">类，我在开发中就遇到很多这样的问题。如，</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">现有的</span><span lang="EN-US"><span style="font-family: Calibri;">TabHost</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">，在</span><span lang="EN-US"><span style="font-family: Calibri;">TabSpec</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">多的时候你就感觉出</span><span lang="EN-US"><span style="font-family: Calibri;">TabHost</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">英雄无用武之地啦，这样就得自己写了。</span></span></p>
<h3 style="margin: 13pt 0cm;"><span style="font-size: large;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">写自己的</span><span lang="EN-US"><span style="font-family: Calibri;">Android Components</span></span></span></h3>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">上面的第四点已经提到了一下，学会写自己的控件的重要性。在</span><span lang="EN-US"><span style="font-family: Calibri;">Android</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">里面，提供了丰富的类库，如何使用好也是值得探讨的问题。当然这里说的也是</span><span lang="EN-US"><span style="font-family: Calibri;">api</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">里面说的，这里说的主要是我在学习的过程中认为很重要的方面</span><span lang="EN-US"><span style="font-family: Calibri;">.</span></span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">主要把界面布局类：</span><span lang="EN-US"><span style="font-family: Calibri;">LinearLayout</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">和</span><span lang="EN-US"><span style="font-family: Calibri;">FrameLayout</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">弄懂简单的开发就够了，再深入一点就要把</span><span lang="EN-US"><span style="font-family: Calibri;">ViewManager</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">及其子类弄清楚了。</span></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: small;"><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">其中，</span><span lang="EN-US"><span style="font-family: Calibri;">LinearLayout</span></span><span style="font-family: 宋体; mso-ascii-font-family: Calibri; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: 宋体; mso-fareast-theme-font: minor-fareast; mso-hansi-font-family: Calibri; mso-hansi-theme-font: minor-latin;">垂直和水平两种，他们之间可以相互嵌套，嵌套时候要注意高和宽的属性，如。</span></span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">LinearLayout </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">xmlns:android</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"http://schemas.android.com/apk/res/android"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">xmlns:app</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"http://schemas.android.com/apk/res/com.srk.study"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:id</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"@+id/screen" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_width</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"fill_parent"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_height</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"fill_parent"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:background</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"@drawable/background" </span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:focusable</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"true"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:orientation</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"vertical"</span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;">&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&lt;</span><span style="font-size: 10pt; color: #3f7f7f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">LinearLayout<span style="mso-spacerun: yes;">&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_width</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"fill_parent"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:layout_height</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"65dip"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:background</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"@drawable/background"</span></p>
<p class="MsoNormal" align="left" style="margin: 0cm 0cm 0pt; text-align: left; mso-layout-grid-align: none;"><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="font-size: 10pt; color: #7f007f; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">android:orientation</span><span style="font-size: 10pt; color: #000000; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">=</span><span style="font-size: 10pt; color: #2a00ff; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">"horizontal"</span><span style="font-size: 10pt; color: #008080; font-family: &quot;Courier New&quot;; mso-font-kerning: 0pt;">&gt;</span></p>
<p class="MsoNormal" align="left" style="margin: 0