狂奔 lion

自强不息

编程的6个原则

     摘要: 原作:Joseph Ottinger, 来自近日的theServerSide,本文是译文。

原作网址:http://www.theserverside.com/news/thread.tss?thread_id=42598


Empathy Box在blog中介绍了编程应该注意的5个问题,这篇文章实际表述了编程时应引起注意的很重要的6个思想  阅读全文

posted @ 2006-10-13 22:03 杨一 阅读(1591) | 评论 (2)编辑 收藏

数字验证码小图生成程序

     摘要: 做了一个登陆验证码的生成小程序,或许对大家有用。支持背景图和文字旋转  阅读全文

posted @ 2006-09-21 20:13 杨一 阅读(1406) | 评论 (2)编辑 收藏

开源软件优于商业软件吗?

     摘要: 本文是TheServerSide首页的文章,本文是译文,本文基于一个调查,结合关于开源软件质量的文章,发表了作者关于开源软件质量的一些看法  阅读全文

posted @ 2006-09-16 18:07 杨一 阅读(1386) | 评论 (1)编辑 收藏

值得借鉴的SWT shell构造方法的编程模式

SWT shell的构造方法影响深远,是值得我们借鉴的编程模式,采用了如下的形式:
new MyClass(MyClass.A | MyClass.B | MyClass.C)
其中,对于MyClass.A定义为 1<<1,MyClass.B 定义为 1<<2 以此类推。
在我们都知道,在java中整形是4个字节,那么除去符号位,还可以有31bit用来加入各种各样的开关,
当31个条件都满足时,将得到Integer.MAX_VALUE.这样保证了传入的是一个整型的数,而在构造方法内部可以这样判断:

public MyClass(int types){
  
if(types & MyClass.A != 0){
    
//表示在A条件被设定时的情况
    
  }
}

这种模式主要用来配置当一个类中的多个属性都是“开关型”的变量 —— 即位布尔型时的情况,从用

户接口的角度,增加了利用接口开发程序人员所编写程序的可读性,因此当所编写的程序仅供自己使用

时,我个人不推荐这种方法;而对于相反的情况,则强烈推荐。另一方面来说,这种编程模式提高了程

序的运行效率。

posted @ 2006-09-10 14:00 杨一 阅读(519) | 评论 (0)编辑 收藏

Spring Ioc值得注意的两个特性

1 Spring支持生命周期的回调,通过在bean配置属性中增加init-method来做一些初始化的工作,随之而产生了一个疑问:property设值注入和init-method哪个在先呢?结论是前者!这样最大的好处是,我们不必再为第三方的框架代码编写单独的适配器,仅仅通过在本类中property设置,然后在init-method中初始化即可;
2 设值注入时,在setXX方法中可以不仅仅是简单的this.xX = xX;而可以对xX做一些加工,如:
setXX(int xX){
if(xX > 10){
 
this.xX = xX/2;
}
else
 
this.xX = xX;
}
这两个小技巧还停留在使用软件而不是开发软件的浅层次上,然而随着Spring的日益流行,他们也许能给站在巨人肩膀上的您的开发带来莫大的便利。

posted @ 2006-08-24 01:03 杨一 阅读(978) | 评论 (0)编辑 收藏

关于一些java框架“中文问题”的看法

     摘要: 今天上blogjava,发现首页技术区突然多了好几篇关于中文问题的文章。作者一出手便洋洋洒洒不下千言,而且好像言语中充满了对spring支持者的不屑。在这里仅从技术角度发表一下我的个人看法,有说得不对的地方,欢迎批评指正。  阅读全文

posted @ 2006-08-21 14:07 杨一 阅读(1743) | 评论 (11)编辑 收藏

如何用java做数组乱序?

用java做了一个数组乱序,首先建立快速排序算法,排序的依据是根据序列中随机产生的序列号,序列号利用map保证在每次排序过程中只产生一次,不知道有没有效率更高的方法,大家咚咚脑筋哈

    
public static void randomList(List list) {
        Collections.sort(list, 
new Comparator(){
            HashMap map 
= new HashMap();
            
public int compare(Object v1, Object v2) {
                init(v1);
                init(v2);
                
                
double n1 = ((Double)map.get(v1)).doubleValue();
                
double n2 = ((Double)map.get(v2)).doubleValue();
                
if(n1 > n2)
                    
return 1;
                
else if(n1 < n2)
                    
return -1;
                
return 0;
            }
            
private void init(Object v){
                
if(map.get(v) == null){
                    map.put(v, 
new Double(Math.random()));
                }
            }
            
protected void finalize() throws Throwable {
                map 
= null;
            }
        });
    }

posted @ 2006-08-20 11:58 杨一 阅读(2459) | 评论 (1)编辑 收藏

如何利用apache, war包发布你的网站

    首先说明war包和jar包,zip包没有什么区别,都是zip格式的文件压缩流。因此在制作时除了利用sun jdk中的jar命令,完全可以直接用winrar之类的工具进行zip格式压缩,只要注意好扩展名就好了。
    在发布war包时,注意到$tomcat_home/webapps/ROOT下面是我们刚刚安装tomcat后的测试页面,也是我们部署的根位置所在.把这个文件夹备份到其他位置,或更改名称.然后把你要部署的war包,改名为ROOT.war,注意这里是大小写敏感的,一定要大写.登陆http://localhost:8080,怎么样,可以了吧?
    想利用apache更安全的发布你的网站?好,下载apache2.0,和tomcat调用模块mod_jk.so,放到安装好的apache2modules文件夹下,在$apache_home/conf/httpd.conf配置文件中加入如下内容:
<VirtualHost *:80>
    #你的电子邮箱
    ServerAdmin contactyang@163.com
    #DocumentRoot C:/Program Files/tomcat/webapps/ROOT
    #有域名吗
    ServerName localhost
    #Load module of mod_jk apache tomcat connecter
    LoadModule jk_module modules/mod_jk.so
    JkWorkersFile conf/workers.properties
    JkLogFile     logs/mod_jk.log
    JkMount  /*.jsp ajp13

    #Load jk2 apache tomcat connecter end
</VirtualHost>

在$apache_home/conf目录下建立workers.properties文件,加入如下内容:

workers.tomcat_home="c:\program files\tomcat"
#让mod_jk模块知道Tomcat的安装路径
workers.java_home=C:\Program Files\Java\jdk1.5.0
#让mod_jk模块知道jdk路径
ps=\
worker.list=ajp13
#这里是关键,名字要和httpd.conf的一致。如果这里改了httpd.conf也要改。
worker.ajp13.port=8009
#工作端口,tomcat的jk监听端口,可以查看Tomcat 的Server.xml中有port="8009" protocolHandlerClassName="org.apache.jk.server.JkCoyoteHandler"这样的Connector
worker.ajp13.host=localhost
#Tomcat所在机器,如果安装在与apache不同的机器则需要设置IP
worker.ajp13.type=ajp13
#类型,Apache与Tomcat之间传递使用的协议
worker.ajp13.lbfactor=1

登陆http://localhost/

怎么样?有了吧

posted @ 2006-08-20 09:35 杨一 阅读(5982) | 评论 (0)编辑 收藏

关于SOA与Web Services的疑问

    今天忽然想到一个问题,Web Service未来的发展趋势是什么?为什么近两年听到的声音越来越少了? 记得04年的时候,WS还是比较火的,不仅在课堂上学习,还做过一些java和.net的应用,以后就不怎么用了,也许是分布式理论受到了挑战吧 (Rod果然站在时代的前沿)。
    许多人说,现在最火的SOA里面用到的技术就是Web Service,可是SOA是个概念而已,大厂商主导的东西不一定经得起推敲的,正如WS一样。

网上一篇介绍SOA的文章如是说:

面向服务架构(SOA)的原则

Web service已经不再是新婚的娘子。众多企业都已经创建各种实验性Web Services 项目,事实证明,这项新兴的分布式计算技术确实能够降低集成和开发的成本。另外,一些关键的Web Services标准纷纷制定,强安全(robust security)和管理方面的产品也陆续问世。对于志向远大的企业来说,他们已经在考虑下一步了。

对大多数公司来说,下一步要考虑的不再是点对点的应用,而是Web services在企业间以及业务伙伴间更为宽广的应用。这种技术的变迁需要更松散耦合、面向基于标准的服务的架构。这样一个架构要求对IT在组织中的角色有新的观点和认识,而不仅仅是一种实现方法。通过对业务的敏捷反应,企业可以得到实实在在的回报,而要达到这一点,面向服务架构设计师的角色非常关键。除此之外,潜在的回报更是不可胜数-分布计算技术能够保证对业务需求足够灵活的反应,而这种业务上的敏捷正是各公司梦寐以求而目前还遥不可及的。

分布式计算将网络上分布的软件资源看作是各种服务。面向服务架构是一种不错的解决方案。但这种架构不是什么新思想;CORBA和DCOM就很类似,但是,这些过去的面向服务架构都受到一些难题的困扰:首先,它们是紧密耦合的,这就意味着如分布计算连接的两端都必须遵循同样API的约束。打比方说,如果一个COM对象的代码有了更改,那么访问该对象的代码也必须作出相应更改。其二,这些面向服务架构受到厂商的约束。Microsoft控制DCOM自不必说,CORBA也只是一个伪装的标准化努力,事实上,实现一个CORBA架构,经常都是在某个厂商对规范的实现上进行工作。

Web services是在改进DCOM和CORBA缺点上的努力。今天应用Web services的面向服务架构与过去不同的特点就在于它们是基于标准以及松散耦合的。广泛接受的标准(如XML和SOAP)提供了在各不同厂商解决方案之间的交互性。而松散耦合将分布计算中的参与者隔离开来,交互两边某一方的改动并不会影响到另一方。这两者的结合意味着公司可以实现某些Web services而不用对使用这些Web services的客户端的知识有任何了解。我们将这种基于标准的、松散耦合的面向服务的架构简称为SOA。

 
    这和当年的宣传WS并没有什么不同,仅仅多了个SOA而已, 试问今天的架构师,哪位应用了WS,哪位涉及了SOA? 有多少成功的案例?哪位知道这项技术在美国的发展情况,有很广泛的应用吗,还是仅限于SOA?
    真正项目中需要SOA思想的那种跨国财团有几个?对于在国内最多的中小型应用,暴露服务倒是极危险的事情。不过作为程序员,学习新技术,新概念实属无奈之举 。有些不必要的复杂性干扰人的思维,让你无法干净利落地做事。

posted @ 2006-08-18 17:51 杨一 阅读(435) | 评论 (0)编辑 收藏

也谈多层架构

敏捷开发中一个经典的原则YAGNI原则,就是通过重构提取公因式当出现一次时,不分层,以后业务复杂了,马上抽象出一个层次来,分层是依赖倒置原则和模版方法模式的应用。谈到时候应该分层,我想:如果只是一个非常简单的网站,3、5个页面,7、8张表如果在这种需求下去分层,无异于自己折磨自己,添加系统不必要的复杂性。

posted @ 2006-08-18 17:35 杨一 阅读(320) | 评论 (0)编辑 收藏

仅列出标题
共6页: 上一页 1 2 3 4 5 6 下一页 
<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

公告

本人在blogjava上发表的文章及随笔除特别声明外均为原创或翻译,作品受知识产权法保护并被授权遵从 知识分享协议:署名-非商业性使用-相同方式共享 欢迎转载,请在转载时注明作者姓名(杨一)及出处(www.blogjava.net/yangyi)
/////////////////////////////////////////
我的访问者

常用链接

留言簿(5)

随笔分类(55)

随笔档案(55)

相册

Java

其他技术

生活

最新随笔

搜索

积分与排名

最新评论

阅读排行榜

评论排行榜

自强不息


用心 - 珍惜时间,勇于创造