离弦之Ray

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  55 Posts :: 0 Stories :: 33 Comments :: 0 Trackbacks

#

一直疑惑 ArrayList<int> 怎么搞,但懒得去查,今天网上搜到了:

The generics facility in Java can be used only for
object (reference) types.  It cannot be used primitive
types like 'int' or 'float'.

So, if you wanted an ArrayList that contained only
integer data, then you'd need to use the object type
which corresponds to int: java.lang.Integer.

   ArrayList<Integer> numbers;
   numbers = new ArrayList<Integer>(40);

Fortunately, the new Autobox/unbox features of Java can
make this work just like an ArrayList of int.

   numbers.add(27);

The value 27 will be automatically boxed as an Integer
object, then added to the ArrayList<Integer>.

For more information, consult
http://java.sun.com/developer/technicalArticles/J2SE/generics/index.html
http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf

posted @ 2007-12-23 15:22 离弦之ray的技术天空 阅读(927) | 评论 (0)编辑 收藏

中国和开源在政治文化上的冲突与交集

摘要
本文着重分析了中国和开源在政治文化上的冲突,并通过分析开源文化和中国文化中的交集来探求解决矛盾冲突的方法。

I前言
        如今在中国,开源正发展的如火如荼。国内的技术专家们对开源技术津津乐道。然而,事情并不是像表面上如此和谐。自九十年代,以宫敏为代表的第一批技术专家从国外将开源软件引入中国已经有了近十年光景,但中国的开源社区在世界开源社区的眼中一直不是一个合格的成员。其中的原因是多方面的,但事实上,阻止中国融入开源并不是技术上的原因,更多的是文化上甚至是政治上的原因。本文在查阅了中外业内人士对这个问题发表的文章后,提出了自己的理解。



II文化上的冲突
        东西方文化有着巨大的差异,这里以美国和中国为例,对此进行对比和分析。

A.个人主义VS集体主义
        表面上看,对于开源软件开发这种群体性的活动,中国的集体主义似乎更贴合。但事实上恰恰相反。西方社会崇尚的个人主义不是没有条件的个人主义,而是在不破坏集体利益的前提下充分尊重个人,给予每个人广阔的发展空间,对个人的研究成果给予充分的承认和尊重。
而中国人的集体主义更强调为了集体要牺牲个人利益等等。这样的指导思想过于强调牺牲,某种程度上让人在潜意识里面认为个人利益和集体利益是相冲突和对立的,所以挫伤了个人对集体贡献的积极性。
开源能发展的立足点就是有很多的志愿者的贡献,如果没有贡献,开源就无法发展下去。

B.平等主义VS等级主义
        美国的文化向来强调人与人之间平等,在开源领域,强调的是开发者之间的平等,不同的只是分工。这在一定程度上鼓励了开发者的贡献热情,大家都以平等的姿态对某个项目发表自己的观点,做出力所能及的贡献。并且你贡献的越多,你被赋予的权力也越大。
而中国在几千年的封建文化的影响下,依然保留着等级观念的残余。这和开源所强调的每个人平等显得格格不入。
在现实中可以从西方开源社区的红红火火和中国社区的徘徊不前可见一斑。

C.其它文化冲突
        另外,东方文化向来表现得比较含蓄,而西方文化更加的开放。对邮件列表上的数据统计可以发现,来自中国日本等东方国家的意见明显比其它地区少。究其原因,是因为东方文化常常把批评看作是耻辱,而西方文化却把批评看作是别人对自己的尊重,并通过别人的批评来改进自己的不足。这种文化上的“害羞”,甚至影响到了中国开发者对开源社区的贡献。
当然,“贡献少”的原因是多方面的,中国文化中的一些劣根性对其也有一定的消极作用。正因为如此,在西方开源世界眼中,中国开源开发者一直是“消费者”,而不是“社区成员”。这在一定程度上阻碍了中国开发者融入开源社区。

III政治上的冲突
        对比西方政府和中国政府,西方政府强调市场化和经济自由,而中国政府虽然自从改革开放以来不断地把经济制度向市场化的方向进行改革,但毕竟这个过程时间不长,相比西方政府,行政手段还是比较多。看起来似乎是西方政府市场化的经济政策更符合开源的发展。
而事实上,标榜自由的西方政府却在政策上限制开源软件的自由发展,而中国政府却在
大力扶持开源软件。究其本质,是因为西方政府在制定政策和法律的时候常常受到某些大型商业软件公司的游说和影响,为了保护那些公司的商业利益和市场垄断地位,必定要限制开源软件的发展。
计算机科学起源于西方社会,应该说以中国为代表的发展中国家在这方面远远落后于西方发达国家,造成了国家机关甚至是一些关乎国家安全的部门也不可避免使用西方的一些基础软件,比如操作系统等等,这对国家安全来说存在着潜在的危险。而起源于西方的开源运动,让中国这样的发展中国家终于有机会接触到一些关键技术的核心部分。正是出于这些考虑,以中国政府为代表的广大发展中国家的政府都愿意大力支持开源软件发展。
        这些本来并无可厚非,但在西方的一些开源领袖以及开源社区眼中,中国的开源掺入了太多的政治因素。
“尤其在政治层面,我们看到有太多的人只是把开源当作一个手段,通过这个手段,中国可以建立一个与世界其它地方相独立的国家软件产业。”这样的论调非常普遍,说明了在很多西方人眼中,中国对开源的热衷仅仅是为了自身利益的考虑。
这与强调开放、交流、共享的开源文化背道而驰。甚至开源世界的教父级人物Eric Raymond也发表过“不屑于与中国政府有任何关系”的激烈言论。

IV交集
        解决冲突和矛盾最好的方法就是要寻找矛盾双方共通的地方,给予双方一个交流的平台,继而最终相互妥协达到一个比较和谐的状态。
        其实中国和西方开源世界并不是水火不容,利益也不是绝对冲突的。首先,中国需要开源世界来学习西方先进的计算机技术。如今的中国计算机教育,是在某些大公司的技术垄断之下的教育。无论在国家战略和个人发展来看,只有通过开源技术,中国才能真正掌握计算机核心技术,才能发挥个人的能力和创造激情,才能对全球软件产业的发展发挥自己的正面影响;其次,西方的开源世界也需要中国。虽然如今的开源运动发展的如火如荼,但客观的讲,与垄断商业的抗争还处于下风。开源运动的影响,几乎只是局限于技术人才之间,而对普通大众的影响微乎其微。在中国经济发展刚刚开始发展,经济基础比较薄弱,而WTO对中国政府反盗版压力与日俱增的时代背景下,通常是免费的开源软件相对于价格昂贵的商业软件在经济层面上有着无可比拟的先天优势。开源世界正可以利用这点来扩大开源软件的影响力,中国人口众多,计算机使用者的绝对数量也非常巨大。试想,如果中国的大众都在使用开源软件,那么对于那些垄断性的商业公司将是一场巨大的胜利。
在文化和哲学上,其实中外双方都有一批仁人志士在扮演着沟通桥梁的角色。有人就从古代中国道家的哲学思想中找到了与开源哲学的共通之处。
        有一个在中国广为流传的故事:孔子问老子什么是“道”?老子张开嘴,什么也没说,孔子说明白了。其他人问孔子到底什么是道,他回答说,老子张开嘴的意思是说,人老了,牙齿全掉了,但是舌头还在。意思是柔软的东西比坚硬的东西来得更长久,这就是道。
如果拿开源软件和垄断性的商业软件来比较,开源软件正是那软力量。当前来看,似乎是垄断性的商业软件更占上风一点,但是开源因为它的“柔软”,所以更加的灵活,更加的有生命力。长远来看,代表大众利益并有着深厚群众基础的开源软件必然会取得胜利。
        道家还有一个论点,就是大海之所以为大海,是因为大海把自己的姿态放的很低,江河才会流向大海。这个思想也和开源哲学不谋而合,开源组织只有广泛接纳来自各个领域、各种文化有志于开源软件的人才会壮大;开源文化只有吸收全世界的优秀文化,才能不断修正自己的不足,让自己对全球各地的技术人才有更大的吸引力。大海,才能越来越壮大。
在西方世界,同样有人在努力寻找开源在中国的立足点。在许多人眼中,似乎如今在亚洲如火如荼的开源运动仅仅是因为价格驱动。但要知道版权、商标还有“copyrights”这些都是西方提出的一些概念。在中国的历史中,事实上政府都没有出台过强硬的关于版权和知识产权的法令。在中国的核心观念中,聪明的统治者,会让智慧代代相传,只有大家有着
        共同的价值观我们在当代才能继续传播智慧。试想,如果发明造纸的中华民族为造纸申请了专利的话,那可能就没有当前人类的文明了。
        在开源世界,志愿者的贡献通常不是利益驱动的。他们的目的是追求对世界产生正面影响力的满足感。在心理学上也证明了,对于需要创造性的工作,设定具体的物质奖励反而会降低人的积极性进而影响到最后的成果。这与孔子“道之以政,齐之以刑,民免而无耻;道之以德,齐之以礼,有耻且格。”的思想不谋而合。
综上所述,在面对开源运动的时候,中国必须看清其中的矛盾和冲突,也更要找到我们与开源哲学的共通点化解矛盾。首先要让自己的心胸更开阔,勇敢地说出自己的观点,并敢于面对别人的批评;其次要提倡“雷锋”精神,改变中国在开源世界“消费者”的角色,而真正成为开源社区的一分子;再次,在处理开源问题的时候,要淡化政治色彩,划清政治和开源的界线,这样中国的开发者才更容易被开源社区所接纳。最后,开源需要中国开发者的加入,所谓“水滴石穿”,水滴多了,石头才能更快地被化解。

参考文献
[1] Dirk Hohndel, “China Open Source Promotion Union”.
[2] Phil Albert, “China’s Love of Linux Has Roots in Ancient Past”.
[3] Phil Albert, “To Steal a Book is an Elegant Offense”.
[4] Lawrence Lessig, “Free Culture”, THE PENGUIN PRESS, NEW YORK, 2004.
[5] J Aaron Farr, “Open Source in China”, unpublished.
[6] Alfie Kohn, “Studies Find Reward Often No Motivator, Creativity and intrinsic interest diminish if task is done for gain”.
[7] Thompson, Nicholas, “The American Prospect”, 09-SEP-02.
[8] Chen Nan Yang, “Taoism of open source”, September 29, 2007.
[9] Richard Stallman, “Why Software Should Be Free”, April 24, 1992.
[10] Richard Stallman, “Why Software Should Not Have Owner”.
[11] 陈伟, “中国开源的冰与火”.

posted @ 2007-12-18 18:58 离弦之ray的技术天空 阅读(199) | 评论 (0)编辑 收藏

设计模式看懂了,好像是没什么用的。只有在你的开发中运用起来才有它的意义。

虽然还是小菜鸟,但既然看过了设计模式,还是希望能用起来的。

想做个自娱自乐的j2ee的东西。

关于得到数据库连接部分,一开始觉得是用工厂模式,用工厂模式得到Connection对象,试了几次好像不行。

然后尝试单态模式,创造了一个DatabaseGeneralServices类,来提供数据库连接和关闭数据库等一些通用的服务。
一切正常。有点小感悟,代码如下,希望高手指点。

package com.ClockWise.ray.persistence;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.sql.DataSource;

public class  DatabaseGeneralServices {
 private DataSource ds;
 private InitialContext ic;
 
 private static DatabaseGeneralServices dgs = new DatabaseGeneralServices();
 
 
 private DatabaseGeneralServices()//use singleton pattern, so the constructor is private
  { 
   try{
      ic = new InitialContext ();
      ds = (DataSource)ic.lookup("java:jdbc/readshare");//get database connection
  }catch(NamingException e){
   e.printStackTrace();
  }
 }
 
 public  Connection getConnection(){
  try{
   return ds.getConnection();
  }catch(SQLException e){
   e.printStackTrace();
  }
  return null;
 }
 
 public  void closeConnection(ResultSet rs,PreparedStatement ps,Connection conn){
     try{
      if(rs!=null){
       rs.close();
       }
      if(ps!=null){
       ps.close();
      }
      if(conn!=null){
       conn.close();
      }
     }catch(SQLException e ){
      e.printStackTrace();
     }
 }
 
 public static DatabaseGeneralServices getInstance()//get the sigleton instance
 {
  if(null==dgs){dgs= new DatabaseGeneralServices();} 
  return dgs;
 }

}

posted @ 2007-12-17 14:55 离弦之ray的技术天空 阅读(472) | 评论 (0)编辑 收藏

"Any fool can write code that a computer can understand. Good programmers write code that humans can understand."
- Martin Fowler, Refactoring - Improving the Design of Existing Code
posted @ 2007-12-16 23:16 离弦之ray的技术天空 阅读(240) | 评论 (0)编辑 收藏

     接连听了两个宣讲,一个Sun,一个Microsoft。

     Sun主推了它的操作系统Solaris,Microsoft倒是请到了图灵奖的得主。

    不过还是商业味太浓,也就是听听罢了。

    看图吧

    首先是Sun,是Sun的CTO,现在在负责OpenSolaris社区

    

     接下来是微软。图中是图灵奖得主
    

    牛人和学生Q&A
   
posted @ 2007-10-29 22:13 离弦之ray的技术天空 阅读(193) | 评论 (0)编辑 收藏

仅列出标题
共11页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last