安装和配置简述

    * 英文指南
    * 配置tomcat
          o 修改 server.xml ,在connector 加 URIEncoding="UTF-8"
          o 修改 catalina.sh ,加一行 CATALINA_OPTS="-DHUDSON_HOME=~/apprun/hudsonhome/ -Xms512m -Xmx512m"
                + 其中 HUDSON_HOME 是 hudson 的配置和运行文件所在地
          o 修改 tomcat-users.xml
                + <role rolename="admin"/>
                + <user username="hudson" password="hudson" roles="admin"/>
    * 把下载的hudson.war 放在 tomcat 的webapps 下,hudson 会自动启动起来,部署就完成了
          o 可以访问,比如 http://****:18080/hudson/
    * 安装 jdk
    * 安装 ant
    * 配置hudson
          o 配置和管理需要登陆 ,login
          o 打开管理页面,比如 http://****:18080/hudson/configure
          o 配置安全 ,Enable security ,两个选项:Delegate to servlet container --〉Legacy mode
          o 配置 jdk 路径, 比如 /home/**/tools/jdk1.6.0_13/
          o 配置 ant 路径, 比如 /home/**/apprun/ant171
          o 配置 System Admin E-mail Address ,//写一个很多项目公用的email
          o 记得 save
    * 新建一个job
          o 配置和管理需要登陆 ,login
          o new job ,选项 :Build a free-style software project
          o 配置 ,比如 :**:18080/hudson/job/icontent/configure
                + 填写svn 路径 ,比如 :http://svn.****
                + Build Triggers,选Poll SCM ,schedule 符合 cron 规则
                + Build ,invoke ant ,填写 ant target
                + Post-build Actions ,选 E-mail Notification , Recipients 填写邮件地址
    * 配置linux 的环境变量
          o vi .bash_profile
          o JAVA_HOME=$HOME/tools/jdk1.6.0_13
          o PATH=$JAVA_HOME/bin:$PATH:$HOME/bin:$HOME/apprun/ant171/bin
          o LANG=zh_CN.GB2312 //encoding 与.java 源代码文件的编码一致 ,这样javadoc 不会有警告
          o LC_CTYPE=zh_CN.GB2312

easy!
great tool!
posted @ 2009-05-11 18:48 西津渡 阅读(768) | 评论 (0)编辑 收藏
 
1. hibernate 变得不太重要了,jdbc 就很好
2. 数据库不够用了,bdb
3. bdb 不够用了, 自己写b+ tree
4. java 不行了,得用 c++

看来,这个转变是个革命。搞不好得丢饭碗。

从想做一个创业者,到想做一个proferssional 。

posted @ 2009-02-15 19:36 西津渡 阅读(153) | 评论 (0)编辑 收藏
 
<西津渡图解软件项目管理 〉从1年半之前,每当有新的感受,就修订一些。为自己的成长作个备注吧。
posted @ 2009-02-02 12:54 西津渡 阅读(149) | 评论 (1)编辑 收藏
 
code-block with mingw ,setup .
set path=c:\program file\code blocks\mingw\bin;%path%
bjam --toolset=gcc-3.4.5 --prefix=d:\boost\b137345 --build-type=complete install


posted @ 2009-01-13 10:18 西津渡 阅读(141) | 评论 (0)编辑 收藏
 
很久没有来blogjava 了。
一个原因是,关注的内容与blogjava 的东西,重叠的太少了。
不过,我也纳闷,我该去哪里找自己的同好?
blogjava 在云计算,web2.0 ,这些前途领域,没有什么内容。
struts,hibernate,spring, acegi,lucene 这些都是成熟的东西了。
说一下我最近用过的东西:
hadoop,hbase,zookeeper,深入研究了java concurrent.

下一步的方向是写一个,distribute document oriented file system.

技术和互联网的发展,绝对是web2.0,云计算,两端厚的架构。blogjava 也该多这方面的内容了。

posted @ 2009-01-09 10:35 西津渡 阅读(289) | 评论 (4)编辑 收藏
 
Conducting and Reviewing the Software Design Model

      The design model resides at the core of the software engineering process. It is the place where quality is built into the software (and the place where quality is assessed. For this checklist, the more questions that elicit a negative response, the higher the risk that the analysis model will adequately serve its purpose. . For this checklist, the more questions that elicit a negative response, the higher the risk that the design model will not adequately serve its purpose.

      General issues:

          o Does the overall design implement all explicit requirements? Has a traceability table been developed?

      设计对需求的匹配?



          o Does the overall design achieve all implicit requirements?

          
    
          o Is the design represented in a form that is easily understood by outsiders?

        易理解?

          o Is design notation standardized? Consistent?

        

          o Does the overall design provide sufficient information for test case design?

        可测试。

          o Is the design created using recognizable architectural and procedural patterns?

        常用的架构 和模式?
        

          o Does the design strive to incorporate reusable components?

        重用组件?

          o Is the design modular?

        模块化

          o Has the design defined both procedural and data abstractions that can be reused?
        重用的过程 / 数据 抽象?
        

          o Has the design been defined and represented in a stepwise fashion?
        逐渐细化的表述?    

          o Has the resultant software architecture been partitioned for ease of implementation? Maintenance?
        可部署性? 可维护性?


          o Have the concepts of information hiding and functional independence been followed throughout the design?

           封装性?

          o Has a Design Specification been developed for the software?

        文档?


      For data design:

          o Have data objected defined in the analysis model been properly translated into required data structured?

        数据映射with analysis?        

          o Do the data structures contain all attributes defined in the analysis model?
        数据属性?

          o Have any new data structures and/or attributes been defined at design time?

        新的数据结构?

          o How do any new data structures and/or attributes related to the analysis model and to overall user requirements?

        用户需求与数据结构匹配吗?

          o Have the simplest data structures required to do the job been chosen?

        数据结构简单吗?

          o Can the data structures be implemented directly in the programming language of choice?

        编程语言适合数据结构?

          o How are data communicated between software components?
        软件组件之间的数据交换?

          o Do explicit data components (e.g., a database) exist? If so, what is their role?

        数据库?

      For architectural design:

          o Has a library of architectural styles been considered prior to the definition of the resultant software architecture?
        
        架构模式?

          o Has architectural tradeoff analysis been performed?
        架构分析的tradeoff?

          o Is the resultant software architecture a recognizable architectural style?

        认可的架构风格?

          o Has the architecture been exercised against existing usage scenarios?
        架构有应用示例吗?    

          o Has an appropriate mapping been used to translate the analysis model into the architectural model?
        
        分析和架构之间的mapping?

          o Can quality characteristics associated with the resultant architecture (e.g., a factored call-and-return architecture) be readily identified from information provided in the design model?
        架构的质量特点?


      For user interface design:

          o Have the results of task analysis been documented?
          o Have goals for each user task been identified?
          o Has an action sequence been defined for each user task?
          o Have various states of the interface been documented?
          o Have objects and actions that appear within the context of the interface been defined?
          o Have the three "golden rules" (SEPA, 5/e, p. 402) been maintained throughout the GUI design?
          o Has flexible interaction been defined as a design criterion throughout the interface?
          o Have expert and novice modes of interaction been defined?
          o Have technical internals been hidden from the causal user?
          o Is the on-screen metaphor (if any) consistent with the overall applications?
          o Are icons clear and understandable?
          o Is interaction intuitive?
          o Is system response time consistent across all tasks?
          o Has an integrated help facility been implemented?
          o Are all error message displayed by the interface easy to understand? Do they help the user resolve the problem quickly?
          o Is color being used effectively?
          o Has a prototype for the interface been developed?
          o Have user's impressions of the prototype been collected in an organized manner?

      For component-level design:

    * Have proof of correctness techniques (SEPA, 5/e, Chapter 26) been applied to all algorithms?

    算法正确性?

    * Has each algorithm been "desk-tested" to uncover errors? Is each algorithm correct?

    算法?

    * Is the design of the algorithm consistent with the data structured that the component manipulates?

    算法?
    * Have algorithmic design alternatives been considered? If yes, why was this design chosen?

    替代算法考虑了吗?

    * Has the complexity of each algorithm been computed?
    
    每个算法的复杂性考虑了吗?

    * Have structured programming constructs been used throughout?
    
    结构好吗?

posted @ 2008-07-06 16:44 西津渡 阅读(317) | 评论 (1)编辑 收藏
 
     摘要:   阅读全文
posted @ 2008-04-09 12:14 西津渡 阅读(950) | 评论 (0)编辑 收藏
 
西津渡最近在修改 99街购物搜索引擎,www.99jie.com
根据体会,修订了图解软件项目管理一文。这是今年以来的第三次较大修订。
有需要者请下载。西津渡图解软件项目管理
下边是目录。
第一章 项目管理的目标
一、    产品,周期,成本的约束。
二、    关键路径管理
三、    可行性分析很重要
四、    人际技巧
五、    谈判技巧
第二章 项目过程
一、    计划阶段
二、    架构阶段和技术攻关
三、    迭代阶段
四、    结束阶段
第三章 分析,形成specification
一、    最重要的是specification 发挥作用
二、    重要的创造性工作
三、    选择适合的表达方式
四、    数据以及数据的key 和约束
五、    测试脚本
六、    Review ,评审
第四章 设计系统UI
一、    一幅图胜过千句话
第五章 设计,code ,build ,test
第六章 部署和重构
第七章 风险
一、    分析风险
二、    技术风险
三、    所有的风险是人的风险,trust and capable
四、    记住50%以上的软件项目以失败告终
五、    所有的风险是管理的风险,遵循一套项目管理哲学
第八章 保持项目的进展
一、    对项目负责,做出决定
二、    让进展可见,持续集成
三、执行,并检查
四、    解决冲突,大家都是兄弟姐妹
五、    能担当者是项目经理
六、    关键路径的变更
第九章 总结经验
第十章 一些效率关键指标
第十一章 项目管理工具
第十二章 参考
第十三章 口诀
posted @ 2007-11-02 11:17 西津渡 阅读(804) | 评论 (0)编辑 收藏
 

http://www.xker.com/edu/dev/104/0652109570034579.html

十二、不要在循环中调用synchronized(同步)方法


方法的同步需要消耗相当大的资料,在一个循环中调用它绝对不是一个好主意。

例子:
import java.util.Vector;
public class SYN {
    public synchronized void method (Object o) {
    }
    private void test () {
        for (int i = 0; i < vector.size(); i++) {
            method (vector.elementAt(i));    // violation
        }
    }
    private Vector vector = new Vector (5, 5);
}

更正:
不要在循环体中调用同步方法,如果必须同步的话,推荐以下方式:
import java.util.Vector;
public class SYN {
    public void method (Object o) {
    }
private void test () {
    synchronized{//在一个同步块中执行非同步方法
            for (int i = 0; i < vector.size(); i++) {
                method (vector.elementAt(i));   
            }
        }
    }
    private Vector vector = new Vector (5, 5);
}


十三、将try/catch块移出循环


把try/catch块放入循环体内,会极大的影响性能,如果编译JIT被关闭或者你所使用的是一个不带JIT的JVM,性能会将下降21%之多!
         
例子:         
import java.io.FileInputStream;
public class TRY {
    void method (FileInputStream fis) {
        for (int i = 0; i < size; i++) {
            try {                                      // violation
                _sum += fis.read();
            } catch (Exception e) {}
        }
    }
    private int _sum;
}
         
更正:         
将try/catch块移出循环         
    void method (FileInputStream fis) {
        try {
            for (int i = 0; i < size; i++) {
                _sum += fis.read();
            }
        } catch (Exception e) {}
    }
         
参考资料:
Peter Haggar: "Practical Java - Programming Language Guide".
Addison Wesley, 2000, pp.81 – 83


十九、不要在循环体中实例化变量


在循环体中实例化临时变量将会增加内存消耗

例子:         
import java.util.Vector;
public class LOOP {
    void method (Vector v) {
        for (int i=0;i < v.size();i++) {
            Object o = new Object();
            o = v.elementAt(i);
        }
    }
}
         
更正:         
在循环体外定义变量,并反复使用         
import java.util.Vector;
public class LOOP {
    void method (Vector v) {
        Object o;
        for (int i=0;i<v.size();i++) {
            o = v.elementAt(i);
        }
    }
}

二十一、尽可能的使用栈变量


如果一个变量需要经常访问,那么你就需要考虑这个变量的作用域了。static? local?还是实例变量?访问静态变量和实例变量将会比访问局部变量多耗费2-3个时钟周期。
         
例子:
public class USV {
    void getSum (int[] values) {
        for (int i=0; i < value.length; i++) {
            _sum += value[i];           // violation.
        }
    }
    void getSum2 (int[] values) {
        for (int i=0; i < value.length; i++) {
            _staticSum += value[i];
        }
    }
    private int _sum;
    private static int _staticSum;
}     
         
更正:         
如果可能,请使用局部变量作为你经常访问的变量。
你可以按下面的方法来修改getSum()方法:         
void getSum (int[] values) {
    int sum = _sum;  // temporary local variable.
    for (int i=0; i < value.length; i++) {
        sum += value[i];
    }
    _sum = sum;
}
         
参考资料:         
Peter Haggar: "Practical Java - Programming Language Guide".
Addison Wesley, 2000, pp.122 – 125



posted @ 2007-09-26 10:59 西津渡 阅读(249) | 评论 (0)编辑 收藏
 
http://www.javafan.net/menu/jczs/200701/20070108185247.html

1). 简单的认为 .append() 效率好于 "+" 是错误的!
    2). 不要使用 new 创建 String
    3). 注意 .intern() 的使用
    4). 在编译期能够确定字符串值的情况下,使用"+"效率最高
    5). 避免使用 "+=" 来构造字符串
    6). 在声明StringBuffer对象的时候,指定合适的capacity,不要使用默认值(18)
    7). 注意以下二者的区别不一样
        - String s = "a" + "b";
        - String s = "a";
          s += "b";

关键点
1. 无论何时只要可能的话使用字符串字面量来常见字符串而不是使用new关键字来创建字符串。
2. 无论何时当你要使用new关键字来创建很多内容重复的字符串的话,请使用String.intern()方法。
3. +操作符会为字符串连接提供最佳的性能――当字符串是在编译期决定的时候。
4. 如果字符串在运行期决定,使用一个合适的初期容量值初始化的StringBuffer会为字符串连接提供最佳的性能。

posted @ 2007-09-26 10:14 西津渡 阅读(220) | 评论 (0)编辑 收藏
仅列出标题
共11页: 上一页 1 2 3 4 5 6 7 8 9 下一页 Last