从制造到创造
软件工程师成长之路
posts - 292,  comments - 96,  trackbacks - 0
1、Google Ajax Search api 以及 web api 的设计和架构?
2、如何让学来的技术不至于忘记的太快
3、[下载]浙江大学 徐镜春《数据结构与算法》csf视频
4、JDBC操作Image类型数据(添加和查询)
5、Java学习过程中应该理解的一些重点内容
6、XML Schema介绍之namespace
7、A Glossary of Name Reuse
8、[转] RCP能否取代WEB技术?
posted @ 2007-07-26 14:24 CoderDream 阅读(214) | 评论 (0)编辑 收藏


import java.util.ArrayList;
import java.util.List;

public class Sum {
    
public static void main(String[] args) {

        
int[] temp = new int[1000];
        
for (int i = 1; i < 1001; i++) {
            temp[i 
- 1= i;
        }

        
int total = 0;// 存储总数
        int sum = 0// 和
        int k = 0;
        List list 
= null// 存储每次新循环时的数据
        int size = 0;
        
int num = 0;
        
for (int j = 0; j < 1000; j++) {
            k 
= j;
            sum 
= 0// sum 每次循环都要重置
            list = new ArrayList(); // list 每次循环都要清空
            do {
                sum 
+= temp[k];

                list.add(temp[k]);
                
if (sum == 1000) {// 洽好等于1000就打印
                    total++;
                    System.out.println(
"Group" + total + ":  ");
                    
if (list != null && list.size() > 0) {
                        size 
= list.size();
                    }
                    
for (int x = 0; x < size; x++) {
                        num 
= x + 1;
                        System.out.println(
"    " + num + " : " + list.get(x));
                    }
                }

                
if (k < 999) {
                    k
++;
                }
            } 
while (sum < 1001);// 超过1000就退出
        }

        System.out.println(
"  total :  " + total);
    }
}


输出结果:

Group1:  
    
1 : 28
    
2 : 29
    
3 : 30
    
4 : 31
    
5 : 32
    
6 : 33
    
7 : 34
    
8 : 35
    
9 : 36
    
10 : 37
    
11 : 38
    
12 : 39
    
13 : 40
    
14 : 41
    
15 : 42
    
16 : 43
    
17 : 44
    
18 : 45
    
19 : 46
    
20 : 47
    
21 : 48
    
22 : 49
    
23 : 50
    
24 : 51
    
25 : 52
Group2:  
    
1 : 55
    
2 : 56
    
3 : 57
    
4 : 58
    
5 : 59
    
6 : 60
    
7 : 61
    
8 : 62
    
9 : 63
    
10 : 64
    
11 : 65
    
12 : 66
    
13 : 67
    
14 : 68
    
15 : 69
    
16 : 70
Group3:  
    
1 : 198
    
2 : 199
    
3 : 200
    
4 : 201
    
5 : 202
Group4:  
    
1 : 1000
  total :  
4
posted @ 2007-07-20 14:49 CoderDream 阅读(1494) | 评论 (0)编辑 收藏

作者: 王玉磊 出处:Csdn 

07年已经是陈皓在程序员行业里的第十个年头了。总结这十年,毕业的头两年,陈皓在银行中昏昏沉沉中度过,“这是我最失败的时候,两年的时间几乎完全白费了。”后来在上海的两年,我拼命地学习看书,并不断总结所做的项目,这个阶段是我补课的阶段,也是我量变的阶段。到了北京的这五年,是我从量变向质变转换的阶段。

拼命看书

刚毕业的时候,陈皓也像很多刚毕业的学生一样,根本没有对自己的职业进行过比较好的规划。“还记得当时什么都没有想,就是想做一些实际的事情,好好的钻研一些技术。实在没有别的什么想法。”在毕业头三年中(1998年到2001年),不要说是对未来的职业有所规划,对所学的技术也是毫无规划。

离开银行后到上海加入了一家专做银行的系统集成的公司,发现自己和别人的差距非常的大,所以开始拼命地看书和学习,在到上海的头一年中,看了四、五十本书,研究的技术包括PB, delphi, SQL, HTML, CSS, DHTML, java, Perl, CGI, ASP, PHP, JSP, XML, UML, MFC, Lotus Notes, Unix, Oracle, Informix, C++, ActiveX, ODBC, ADO, .NET, COM, 乃至CISCO路由器的配置,Photoshop, 3DMAX……陈皓学得很杂很泛,完全没有目的,只是觉得别人懂的自己也要懂。

“看了许多许多的书,完全没有好好想想自己应该走什么方向。现在回头看来也不知道是好还是不好。”

也许是看的书太多,懂的东西太多,后来有机会参与了一次全国性质的项目。后台是AIX+Informix用C开发,前台是用PB的PFC做界面,通过IBM的CICS这个中间件连通前后台。在开发这个项目的一年时间里,陈皓对Unix/C/C++以及分布式系统有了非常深刻地认识,并深深地迷上了它们,同时对大型软件工程的流程和管理有了非常深刻的了解。

这个项目对陈皓的影响非常大,除了技术上的收获之外,更让陈皓逐渐确定了自己的规划。

技术之外

2002年底,北京一家做分布式计算/网格计算平台的加拿大公司对我产生了兴趣,经过5轮面试陈皓拿到了offer,又一次开始了我的奔走——从上海来到了北京。

新的公司让陈皓的Unix/C/C++得到了非常大的巩固,“这个公司也让我这个土狼学到了很多很多,特别是认识和观念上。”特别是在带领一个team对公司欧洲用户做Customer Service方面的工作时,陈皓学到了很多客户管理的知识,英语能力、与人沟通的能力以及对软件的认识得到了完全的升华。

陈皓开始使用一种和以前完全不一样的方法去思考问题——从用户的角度对问题进行思考。“此时,技术方向对我来说已不重要,技术对我来说已经变得非常简单,因为技术只需要看书看文档就可以获取。”陈皓开始用全新的方式思考如何管理一个团队,如何制造一个成功的软件,如何管理客户。并由此有了更进一步的职业规则——成为一个成功的技术主管、建立一个成功的团队、开发一个成功的软件产品。

给新人程序员的八点建议

走过弯路,有过迷茫,回首九年陈皓感慨万千。“今天,我对许多刚上路的朋友都会说,人生的规则很重要,从上大学时就要好好规划。”他结合自身经历,对许多刚踏入程序员行列的新人程序员,他给出了以下八点建议:

1.在大学的时候尽量多地进入公司参与实际工作,一方面积累工作经验,另一方面,提前认识工作和自己,以便毕业时更准确地把握自己的方向。

2.从毕业开始到毕业后至少5年内,踏踏实实地专研技术,这是一个积累过程,千万不要把心思放在钱和职位上。钱和职位只是能力的附属品,不要让其喧宾夺主。

3.从毕业后3年到7年的时间,注意学习工作当中的方法以及相关的管理和流程,不但要知其然,还要知其所以然。

4.30岁以前,踏踏实实地学习。学技术,学做人,学做事。30岁以后再谈自己的发展。

5.毕业后的前5年主要是量的积累,要不停地积累知识和方法。毕业后的5到10年主要是质变,应该着重于思维和想法的更新。后五年应该有很强的包容能力和接受新东西的能力,千万不要太过固执和坚持自己的想法。

6.换工作要“承前启后”,前面的工作会成为后面工作的一个基础,而后面的工作又会成为前面工作的一个很自然的延续。

7.不要只把心思放在技术上,技术是hard skill,只要下工夫就一定会掌握。更要注意与人沟通等为人处事的soft skill上。hard skill像一个大树的根,而soft skill则像一个大树的枝叶。树根是你的根基,能让你站得很稳,而枝叶能让你向天空伸展,获得发展。

8.对于程序员来说,应该始终记住,技术不是主要的,主要的是通过技术能够解决什么样的问题。一定经常想要解决什么的问题,要满足什么样的需求,而不是要用什么样的技术

posted @ 2007-07-19 16:26 CoderDream 阅读(457) | 评论 (2)编辑 收藏
作者: 王玉磊 出处:Csdn  

阅读提示:本文通过陈皓的自身的职业选择经历来说明程序员的职业规划要像软件工程一样要有目标、计划地去实施。

电信、银行等行业一直是许多人非常向往的工作单位,清差厚禄,旱涝保收,陈皓却不以此为然。所以当记者采访他的时候,他连用了两个“最”字来形容他离开银行的成就感。

陈皓毕业后的前两年就职于云南省工商银行,从事银行电信内全国性业务系统开发。后来在全球最大的网格计算/分布式平台软件公司从事研发工作,熟悉Unix系统以及C/C++语言,擅长大型系统软件需求分析、设计、架构、实施和维护,目前是某全球金融信息数据处理公司的技术主管。  

随波逐流  

回想当初,陈皓颇有感慨。还在大三的时候,他就被系里优先推荐给了工行。那时他参与了系上的一个项目(用HTML+Java开发一个在线教学课件),由于当时国内根本买不到HTML和Java的书,而学校也没有上网条件,所以关于HTML和Java对系里的老师都是比较新的东西,当开发完成后,系里对此评价比较高。因此就在大三下学期把陈皓推荐给了工行。

由于早早地被银行“预定”,所以陈皓的大四生活很自由,整个一年他基本是在一家很小的软件公司打工度过的。就是在那家公司工作的经历,让陈皓后来产生了离开银行的念头。

那家公司主要做些MIS系统,陈皓不仅获得了一定的实际工作经验和能力的锻炼,还习惯了软件公司高节奏、快学习、充满挑战的环境和氛围。这造成了他毕业后到银行工作时极度的不适应——效率低下,工作毫无激情,工作当中充满了相当复杂的人际关系和政治斗争。  

最主要的是,由于初到银行,很多技术和产品从未见过,而主要实施却由外面公司来完成,银行自己内部中有经验的人又不愿意与人分享知识。虽然可以拿很多红包,整天也很清闲,不是看报纸就是打游戏,但陈皓感觉到那并不是自己喜欢的工作,没有任何激情和斗志可言。和大四时在那个软件公司中的技术氛围相比,完全就是天壤之别。

所以在银行工作的这两年,陈皓天天都在彷徨和思想斗争,“因为没有自己的职业规划,所以,浪费了至少两年的时间”。最后,陈皓打定信念,决意离开去寻找自己的道路。  

“因为我是在一个相对比较闭塞的城市(昆明),所以,我要离开银行的决定遭到了父母、同学、朋友、同事,几乎是身边所有人的反对。但最终,我还是一意孤行离开了银行,远走他乡到上海这座大城市去寻找自己的人生道路。”  

“从此,我走上了一条不可回头,并和以前完完全全不一样的道路。”从国企到民企再到外企,从打杂到程序员再到高级程序员到team leader到技术主管,从小酒店MIS到企业OA到全国性的大系统到世界领先的分布式计算平台集群软件,“若干年过去了,经历了高速的发展和获得了很多不同的经历,但唯有当时选择离开银行这件事情让我至今都为之兴奋。迄今为止,这是我自己觉得最最有成就感的事情。”

正如陈皓所说,“也许,最让一个人感到最有成就的事情,不是他做成了什么,而是他选择了什么。”  

认识自己  

多年打拼后,陈皓虽已是技术主管,但走的那些弯路,浪费的两年时间,一路中的心酸让他明白了很多道理。“今天,我对许多刚上路的朋友都会说,人生的规则很重要,从上大学时就要好好规划,这对国人来说尤其重要。因为对于国人来说,人生的头20年都是被别人规划的,导致了自己根本不会给自己做规划。这点是相当危险的。” 

人生短暂,属于自己黄金的时间不多,如果把太多的时间浪费在寻找道路和方向上,很有可能会导致一事无成,要及早确定自己的规划,然后照着这个规划坚定不移的去执行。陈皓认为,做规划时最重要的是两个方面:一是清楚地认识自己的能力、优势和性格;二是确定自己的专业和想从事的行业。只有在确定这两方面后,才能做出自己的职业规划。  

两方面看起来很简单,但认识自己并不是一件容易的事情。陈皓认为应当从下面十五个方面审视和认识自己,帮助自己确立人生规划:A)所掌握的知识,B)问题的解决能力、判断能力和分析能力,C)对待困难的心态,D)团队合作能力,E)表达能力和语言组织能力,F)创造和创新能力,G)沟通能力,H)自己的性格内向还是外向,I)是否有坚韧不拔的专研精神,J)自己的弱点和性格上的缺陷,K)学习能力,获得知识的能力,L)领导组织能力,M)目前自己能够进入的企业,N)目前自己在社会中的地位,O)目前自己的竞争实力。 

职业规划就像软件工程

确定了自己的行业和专业领域后,接下来的事情应该是:1)努力掌握这个行业的知识,2)用最短的时间了解这个专业和行业更为具体的各个子方向。然后在实际过程中再认识自己。比如,选择了计算机行业,应该尽量地尝试软件、硬件、网络、娱乐、媒体等计算机行业不同方向的工作,如果从事软件,又分Web、系统、项目、ERP、CRM、数据库、嵌入式……,在工种上又分开发、测试、技术支持、流程管理,项目管理,系统架构,售前,售后……。当然,我们并不需要去尝试所有的工作或工种才能知道自己适合什么,我们完全可以向从事不同方向的人咨询并结合自我认识来做出判断。

在这个过程中,迷茫的摸索可能是很难避免的。能够及时得到前人的指点可能会是一个捷径,征求前人的建议可以起到参考的作用,快速原型(快速尝试)或许也是好的办法。因为人与人不同,他人的路并不一定适合自己,适合自己的路还要自己去规划,别人是帮不上忙的。 

要经常性地跳出自己再来看自己,客观地分析自己的优势和劣势。让自己和别人掂量掂量自己到底几斤几两,了解到自己的长处和特点,然后才能知道自己适合做怎么样的事和并调整自己的职业路线,这是一个“肯定到否定再到肯定”螺旋上升的进化过程。当度过对自己对社会的“陌生期”后,才有谈得上对自己人生和职业的规划。

个人的职业规划就像软件工程。我们都知道软件项目最大的敌人是需求的不明确和需求的大面积变更,同样,在个人的职业规划中,自我需求的不明确和需求的变更也是非常危险的,尤其是在职业计划实施了四五年后需求的变动和改变。只有需求确定以后,才谈得上个人的职业设计的HLD(High Level Design)和LLD(Low Leave Design),以及具体实现。此后随着自身的日益成熟,可以随时为自己的Bug打补丁(Patch)改进自己的职业生涯的设计和实施细则(Enhancement),并为自己加上更多更强的能力(New Feature Requirement)。最终达到软件版本的升级。

posted @ 2007-07-19 16:24 CoderDream 阅读(384) | 评论 (0)编辑 收藏
通过T-SQL,我们左联(内联、右连类似)的查询语法如下:

-- 通過 InsuredIn 查詢 累計類別 

select * from ris.re_master as rm left join ris.re_detail as rd on rm.REINSURANCE_NO=rd.REINSURANCE_NO
    
where rd.INSURED_ID='A120670116'
    
order by rm.POLICY_NO asc, rm.POLICY_SEQNO asc
    ;


但是使用 HSQL 查询数据库时,我们要改为:

from ReMaster as rm left join rm.reDetails as rd 


Hibernate 会自动找相同的键,不用on,而且关联表要写成:rm.reDetails


/**
 * description: 通過被保人號碼查詢再保明細
 * 
 * 
@param insuredId
 *            被保人身份證號 String
 * 
@return List 結果列表
 * 
@throws DbAccessException
 *             數據庫異常
 
*/
public List selectReMasterDetail(String insuredId) 
    
throws DbAccessException {
    
if (DEBUGLOG.isDebugEnabled()) {
        DEBUGLOG.debug(
"[ReDetailDao]"
                
+ "[Function:selectReMasterDetail][Begin]");
    }
    StringBuffer hqlRd 
= new StringBuffer();

    hqlRd.append(
" from ReMaster as rm left join rm.reDetails as rd " +
            
"where 1=1");

    
if (insuredId != null) {
        hqlRd.append(
" and rd.insuredId = '" + insuredId + "'");
    }
    
    hqlRd.append(
" order by rm.policyNo asc, rm.policySeqno asc");

    
if (DEBUGLOG.isDebugEnabled()) {
        DEBUGLOG.debug(
"[ReDetailDao][Function:selectReMasterDetail][End]");
    }
    
    
return this.createQuery(hqlRd.toString());
}

在Service层进行调用:
// 通過 InsuredId 查詢ReMaster檔和ReDetail檔
rmdList = rdDao.selectReMasterDetail(iqVo.getInsuredId());

取List中的对象时用对象数组接,因为返回的是两个对象:



    Object[] obj = null;
    ReDetail rd 
= null;
    ReMaster rm 
= null;
    
int rmdSize = 0;
    
if (rmdList != null) {
        rmdSize 
= rmdList.size();
    }
    
for (int rmdIndex = 0; rmdIndex < rmdSize; rmdIndex++) {
        obj 
= new Object[2];
        obj 
= (Object[])rmdList.get(rmdIndex);
    
        rm 
= new ReMaster(); // 用於存儲公司別信息
        rd = new ReDetail();
        rm 
= (ReMaster) (obj[0]);
        rd 
= (ReDetail) (obj[1]);

这样就可以处理得到的ReMaster对象和ReDetail对象了。
posted @ 2007-07-18 11:25 CoderDream 阅读(2457) | 评论 (1)编辑 收藏
1、tomcat6学习笔记 AnnotationProcessor
2、BlogJava 备份文章阅读器+离线浏览备份(含源码,SWT)
3、spring、Hibernate、Struts组建轻量级架构
4、项目管理几件宝
5、[java拾遗篇] java.beans.PropertyEditor(属性编辑器)简单应用
6、整合项目的难:业务理解的不一致、系统设计的不一致和协调
7、毕业六周年祭
8、hibernate3中配置proxool连接池
9、浅谈软件设计人员应具备的基本能力
10、第一个自定义标签的实现
11、Jsp 自定义标签
12、synchronized 关键字
13、javascript控制关键字高亮显示
14、java面试题及答案(基础题122道,代码题19道)
15、我们靠什么走向成熟
16、Hibernate下数据批量处理解决方案
17、java Logging API 使用
18、[转]狼性生存哲学
19、Get 与Post的区别
20、简易计算器(需要一个图标文件, 如果报错,随便找个小图片)
21、小型软件公司如何做大
22、定时执行程序
23、女孩嫁人的十条注意事项
24、struts2--Result Configuration
25、李嘉诚给年青商人的98条忠告
26、改善脑力的70条方法[翻译]
27、怎样渡过人生的各种难关?
28、ajax学习点滴(不断增加中)
29、Struts 2与AJAX(第二部分)
30、java读取文件夹下的所有文件夹和文件
31、[转]登录页面常用技巧(默认焦点、TAB顺序和回车键)
32、jsp数据库访问之三 —— ms sql server 2005
33、你幸福么?
34、Java相对路径总结
35、JAVA四种基本排序的总结
36、学习工作流的理由
37、[转]Java加密和licence控制的设计
38、当前Java软件开发中几种认识误区
39、Ruby,Java的劲敌
40、 Ruby on Rails学习笔记 (一)
41、敏捷的奇迹
42、除旧迎新Java2005回顾与2006展望
43、drools之helloworld
44、drools和spring的集成
45、一个感观(LookAndFeel)菜单类及其用法
46、[转载]让Grails + MySQL正确处理中文
47、男人总是花心的经济学解释
48、SQL语法手册
49、session
50、Acegi 参考手册(V1.0.4) 翻译
51、Acegi简介
52、贴一个以前的职业心理分析
53、腰背肌的锻炼很重要
54、sicp习题2.33-2.39尝试解答
55、Acegi中的ACL用来解决什么问题?
56、drools之helloworld
posted @ 2007-06-28 17:38 CoderDream 阅读(217) | 评论 (0)编辑 收藏
1、JSF笔记
2、JSF入門
3、RichFaces Demo:http://livedemo.exadel.com/richfaces-demo/richfaces/tabPanel.jsf
4、IBM JSF:http://www.ibm.com/developerworks/cn/java/j-jsf3/
5、EJB3开发笔记
6、AJAX基础
7、JAVA笔记(我要日积月累)
8、1.java面试题(web开发)
9、如何成为Java高手
10、解析SQL语句的engine
11、简单的用 Java Socket 编写的 HTTP 服务器应用,帮助学习HTTP协议
12、让DbUnit加入你的单元测试
13、jsp数据库连接大全
14、oracle 10g下载
15、SQL语句技巧总汇
16、我的Maven2之旅:十一.打包一个web工程.
17、JDOM简介
18、生活哲理五则
19、[mysql] 给定数据库表名,查主键字段名
20、推荐--jQuery使用手册
21、螺旋数字与坐标
22、JdbcTemplate学习笔记
23、JDBC通用的查询方法。
24、javascript 操作 excel
25、Java操作Excel电子表格(转)
26、Java 5.0多线程编程
27、基于JDK5.0的一些collection类的使用总结
28、服务型系统集成项目的沟通与团队管理技巧
29、从06年11月以来的总结
30、分页的存储过程
31、ejb3 jsf实用实例
32、js中innerHTML与innerText的用法与区别
33、[导入]在VC6中使用正则表达式解析字符串
34、Log4j 简要剖析
35、[导入]VC编程中常用快捷键【转】
posted @ 2007-06-26 17:03 CoderDream 阅读(224) | 评论 (0)编辑 收藏
在典型的J2EE Web应用中,至少有三个逻辑层:前端(Web)层、应用层、数据库层(用来保存应用持久化状态)。今天,我们可以看到许多J2EE应用都是使用这种三层方法建立的。

下图展示了JSF是如何适配到这种三层结构场景中的。



J2EE 应用的Web层,其基础为发送到浏览器的HTML。HTML是通过JSP和/或Servlet动态生成的。JSP和Servlet将应用逻辑委托给朴素Java对象(Plain Old Java Object--POJO),再由这些POJO(应用层)使用JDBC同数据库打交道来保存和取回应用的数据。

不过,在企业级的应用中,应用层将由EJB来实现(作为会话Bean 或作为实体Bean,亦或兼而有之)。

如果将EJB纳入其中的话,Web应用就由四层组成:Web、JSP/Servlet、EJB和数据库。JSF可以放到JSP/Servlet层,并提供基于组件的方法来建立应用。JSF提供了一种建立用户界面以及向下一层(即EJB层)委托业务处理的方法。

下图为典型 JSF 应用中的四层配置。

posted @ 2007-06-26 11:31 CoderDream 阅读(949) | 评论 (0)编辑 收藏
1、Tomcat中文问题的解决
posted @ 2007-06-12 15:25 CoderDream 阅读(120) | 评论 (0)编辑 收藏
有时候,由于查询的数据太多,时间太长,数据库会挂掉。
这时候通过 “控制中心”已经不能启动数据库了,因为“DB2-DB2-0”这个服务已经被停掉了。
直接启动这个服务会失败,因为在“任务管理器”中有很多与DB2相关的进程没有关闭,所以要先处理这些进程。

解决办法:
一、关闭所有与DB2有关的进程。



二、启动“DB2-DB2-0”和“DB2 JDBC”进程。如果想让别人远程访问你的数据库(非JDBC模式),这要启动其他4个服务。



这样,cmd-> db2cc,打开“控制中心”,就可以发现数据库可以正常使用了。
posted @ 2007-06-08 11:30 CoderDream 阅读(683) | 评论 (0)编辑 收藏
仅列出标题
共24页: First 上一页 13 14 15 16 17 18 19 20 21 下一页 Last 

<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

常用链接

留言簿(9)

我参与的团队

随笔分类(245)

随笔档案(239)

文章分类(3)

文章档案(3)

收藏夹(576)

友情链接

搜索

  •  

积分与排名

  • 积分 - 456257
  • 排名 - 114

最新评论

阅读排行榜

评论排行榜