共10页 第一页 上一页 1 2 3 4 5 6 7 8 9 10 下一页 最后一页
2004-10-25 10:13
go well, not fast- []
Tag: READING
“We often blame managers for schedule pressure. We often complain that our companies set unreasonable deadlines and have unrealistic expectations. This might be true, but it's only half the problem. The other half, the most important half, is within us. We consider our worth as programmers to be more associated with speed than with quality. And that's a tragedy; because it leads us to create messes. It leads us down the slower path. By rushing we ruin our chance to truly go fast.”
Today's Links:
http://www.artima.com/weblogs/viewpost.jsp?thread=51769
toidi_asdd @ 10:13 | 阅读全文 | 评论(0) | 引用Trackback(0) | 编辑
2004-10-22 23:41
XP- []
Tag: READING
1. 模式
2. 重构
3. 测试
4. 增量交付
5. 频繁构建
toidi_asdd @ 23:41 | 阅读全文 | 评论(0) | 引用Trackback(0) | 编辑
2004-10-22 22:57
Layering Implements- []
Tag: Java
今天去听课,老师讲到persistence layer的时候,提到dao的出现主要应付数据库的移植,可能他出现的最初的原型确实如此,仔细想一下,真实的enterprise application的数据源有多少在移植呢,就我们一般而言,一般相对都是很固定,在软件的最初设计阶段就已经选型了。(在OO中讲,如果一个变化可能要等三五年,那么你就得去考虑现在考虑这个变化是不是有意义?)
现在在设计模式的基础上,提出了企业架构应用的诸多模式,这么多模式都是在依赖于设计模式来实现的。那么企业架构应用的诸多模式的价值何在?就persistence layer而言,抽象出数据持久化的一般问题解决方案,看下面的图:
在与数据源(一般都是大型数据库)交互的时候,对于网络的依赖是必不可少的。基本的原则:minimize distributed communication(今天老师刚讲的)。在持久层,既是DAO还需要做一定的数据缓冲,减少网络访问,对于本地persistence object的管理才是比较重要的。对于我们的工作中,不一定要做数据缓冲,但是应该考虑对于网络访问是否最小化了。
为什么要分层?
1. can understand a single layer as a coherent whole without knowing much about the other layers。就如现在我们在设计dao的时候,很少去考虑什么business logic,单纯的去研究数据的访问。
2. can substitute layers with alternative implementations of the same basic services.这个问题就跟接口有关了,还要讨论的。很好的满足了DIP(依赖倒置原则);
3. minimize dependencies between the layers.对象之间的应用不再是杂乱五章的,大家都依赖于抽象。
4. Layers make good places for standardization.现在datasource layer(persistence layer),domain layer,presentation lay.经过大家的群策群力,每一个层次都有了模式,加快了解决问题的速度,使得开发人员集中于一些必要的挑战。最近有提出了service layer.(今天老师讲了The Business Delegate Design Pattern,但是老师却讲到了field和object的对比,这个方式我们早已讲过了,这次SUN单独提出来,它的意义远不再这里,我理解和service layer有一定的关系。)
5. Once you have a layer built you can use it for many higher level services.这也是分离出层的原型吧。
我觉得Pattern of Enterprise Application Architecture讲分层的第一句话特别好:
Layering is one of the most common techniques that software designers use to break apart a complicated software system.
依然有了分层,就产生了层,有了层,就有了层与层之间的关系,那么就面对这些 层关系的设计和实现问题。
在企业应用架构有三层(也有四层的分法),这些层之间必然会有一些依赖,我们都知道依赖有一个原则:依赖倒置原则(DIP)
1. 高层模块不应该依赖于底层模块。二者都应该依赖于抽象。
2. 抽象不应该依赖于细节。细节应该以来于抽象。
对应于分层,较“高”层包含了什么,包含了策略选择和业务模型,而这些真是应用程序的价值所在,如果“高”层以来于“低”层,那么“低”层的变化就会影响到“高”层。
更不可能去让“低”层依赖于“高”层。
现在只有一种可能,“高”层和“低”层是独立的。这不也正是我们使用framework的价值所在吗?
这样层与层之间的依赖就必须是抽象,而不是实现和细节。
Service layer的出现,是为了面对客户层接入集成了一系列高效的操作集。主要目的提高数据存取和业务逻辑的利用率,减少重复调用。
Serverice layer是一个边缘层(boundary)。
toidi_asdd @ 22:57 | 阅读全文 | 评论(6) | 引用Trackback(0) | 编辑
2004-10-20 21:47
performance- []
Tag: Java
Network Connection |
Remote Network Call |
Local Network Call |
Local Call |
toidi_asdd @ 21:47 | 阅读全文 | 评论(0) | 引用Trackback(0) | 编辑
2004-10-14 12:36
《敏捷软件开发:原则、模式与实践》中文版序- []
Tag: READING
“最好的软件开发人员都知道一个秘密:美的东西比丑的东西创建起来更廉价,也更快捷。构建、维护一个美的软件系统所花费的时间、金钱都要少于丑的系统。软件开发新手往往不理解这一点。他们认为做每件事情都必须要快,他们认为美是不实用的。错!由于事情做得过快,他们造成的混乱致使软件僵化,难以理解。美的系统是灵活、易于理解的,构建、维护它们就是一种快乐。丑陋的系统才是不实用的。丑陋会降低你的开发速度,使你的软件昂贵而又脆弱。构建、维护美的系统所花费的代价最少,交付起来也最快。”
----摘自“Robert C. Martin《敏捷软件开发:原则、模式与实践》中文版序”
Robert C. Martin《敏捷软件开发:原则、模式与实践》中文版序
除了我的家庭,软件是我的挚爱。通过它,我可以创造出美的东西。软件之美在于它的功能,在于它的内部结构,还在于团队创建它的过程。对用户来说,通过直观、简单的界面呈现出恰当特性的程序就是美的。对软件设计者来说,被简单、直观地分割,并具有最小内部耦合的内部结构就是美的。对开发人员和管理者来说,每周都会取得重大进展,并且生产出无缺陷代码的具有活力的团队就是美的。美存在于所有这些层次之中,它们都是本书内容的一部分。
软件开发人员如何学到创造美的知识呢?在本书中,我讲授了一些原则、模式以及实践,它们可以帮助软件开发人员在追求美的程序、设计以及团队的道路上迈出第一步。其中,我们探索了基本的设计原则,软件设计结构的通用模式以及有助于团队融为一个有机整体的一系列实践。由于本书是关于软件开发的,所以包含了许多代码。仔细研究这些代码是学习本书所教授的原则、模式以及实践的最有效方法。
人们需要软件--需要许多的软件。50年前,软件还只是运行在少量大型、昂贵的机器之上。30年前,软件可以运行在大多数公司和工业环境之中。现在,移动电话、手表、电器、汽车、玩具以及工具中都运行有软件,并且对更新、更好软件的需求永远不会停止。随着人类文明的发展和壮大,随着发展中国家不断构建它们的基础设施,随着发达国家努力追求更高的效率,就需要越来越多的软件。如果在所有这些软件之中,都没有美存在,这将会是一个很大的遗憾。
我们知道软件可能会是丑陋的。我们知道软件可能会难以使用、不可靠并且是粗制滥造的;我们知道有一些软件系统,其混乱、粗糙的内部结构使得对它们的更改既昂贵又困难;我们还见过那些通过笨拙、难以使用的界面展现其特性的软件系统;我们同样也见过那些易崩溃且行为不当的软件系统。这些都是丑陋的系统。糟糕的是,作为一种职业,软件开发人员所创建出来的美的东西却往往少于丑的东西。如果你正在阅读这本书,那么你也许就是那个想去创造美而不是丑的人。
最好的软件开发人员都知道一个秘密:美的东西比丑的东西创建起来更廉价,也更快捷。构建、维护一个美的软件系统所花费的时间、金钱都要少于丑的系统。软件开发新手往往不理解这一点。他们认为做每件事情都必须要快,他们认为美是不实用的。错!由于事情做得过快,他们造成的混乱致使软件僵化,难以理解。美的系统是灵活、易于理解的,构建、维护它们就是一种快乐。丑陋的系统才是不实用的。丑陋会降低你的开发速度,使你的软件昂贵而又脆弱。构建、维护美的系统所花费的代价最少,交付起来也最快。
我希望你能喜爱这本书。我希望你能像我一样学着以创建美的软件而骄傲,并享受其中的快乐。如果你从本书中略微看到了这种快乐,如果本书使你开始感受到了这种骄傲,如果本书点燃了你内心欣赏这种美的火花,那么就远超过我的目标了。
分享到:
相关推荐
##### 1.3 Annotation简介 Annotation,即注解,是Java 5.0引入的一个新特性,用于向代码中插入元数据。它是一种声明式机制,允许开发者在代码中嵌入非功能性数据,这些数据不会影响代码的运行逻辑,但可以被编译器...
【Spring Annotation简介一】 在Java开发领域,Spring框架以其强大的功能和灵活性深受广大开发者喜爱。Spring Annotation是Spring框架中的一个重要特性,它极大地简化了配置,提高了代码的可读性和可维护性。这篇...
Hibernate Annotation简介** Hibernate Annotation是Hibernate框架的一个扩展,它允许开发者直接在Java类和属性上使用注解(Annotations),来定义实体类与数据库表之间的映射关系。相比于XML配置,注解提供了一种...
一、Annotation 简介 Annotation 是 Java5 中引入的一种元数据特性,用于描述数据的数据。它可以用来和 public、static 等关键字一样来修饰类名、方法名、变量名。Annotation 的作用是描述这个数据是做什么用的,...
**D3-Annotation简介** D3-Annotation是D3生态系统的一部分,它提供了丰富的注释功能,可以帮助开发者在SVG图表中添加各种类型的注释,如线性、矩形、圆形、箭头等,使得可视化更易理解,更具交互性。通过使用D3-...
一、Spring MVCAnnotation 验证简介 Spring MVC 框架提供了多种Annotation来实现验证,例如 @NotNull、@NotBlank、@Email 等。这些 Annotation 可以直接应用于模型(Model)中的属性上,从而实现数据验证。 二、...
一、Annotation简介 Annotation是一种声明式编程方式,它通过在代码中添加特殊标记(@符号后的名称)来提供附加信息。虽然Annotation本身不会改变程序的行为,但是可以通过Annotation Processing Tool (APT) 来解析...
### Hibernate Annotation 中文文档知识点概览 #### 一、创建注解项目 ##### 1.1 系统需求 在创建一个使用 Hibernate 注解的项目之前,需要满足一定的系统环境需求,例如支持 Java 的开发环境、JDK 版本、支持 ...
一、Hibernate 3简介 Hibernate 3是Hibernate ORM框架的一个重要版本,它引入了许多新特性,如对JPA(Java Persistence API)的支持,以及对注解的广泛使用。这一版本的更新使得Hibernate更加易于使用,同时也提高了...
**2.1 Annotation简介** Annotation是Java 1.5引入的新特性,用于向代码中添加元数据。它们可以用于各种目的,例如提供编译时的额外信息、指导工具行为等。为了创建和使用自定义Annotation,需要了解以下关键概念:...
"基于Annotation的Java单元测试框架" 本文主要介绍了基于Annotation的Java单元测试框架,讨论了...七、作者简介 作者黄索,湖南城建职业技术学院信息工程系教师,研究方向为Java企业级应用开发和自动化测试。
### Hibernate Annotation简介 1. **注解替代XML映射**:在Hibernate 3.2及更高版本中,引入了Annotation支持,开发者可以直接在Java实体类上使用注解来定义持久化字段和关系,不再需要创建单独的`.hbm.xml`映射...
本篇文章详细地介绍了springboot aspect通过@annotation进行拦截的方法,包括AspectJ简介、SpringBoot中AspectJ的使用、@annotation的使用、Around advice、拦截器的实现、使用@annotation进行拦截、单元测试和...
#### 一、Hibernate Annotation简介 Hibernate作为Java领域内最流行的ORM框架之一,在过去的几年中经历了显著的发展,已经成为Java数据库持久化的事实标准。它不仅功能强大,而且灵活性高、性能优越。随着Java 5的...
#### 二、Struts2框架简介 Struts2是基于Java的一个开源MVC框架,它继承了Struts1的设计理念,并且采用了拦截器架构,这使得它可以更好地与Spring、Hibernate等其他框架集成。Struts2支持多种配置方式,如XML配置、...
java8 源码 Java注解 简介 由于无论在Java后台或者Android开发中我们经常遇到注解这个...通过@Target进行添加到注解中,说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Ann
### PropBank Annotation Guideline #### 一、PropBank简介 PropBank是一种用于自然语言处理(NLP)领域的语义知识库标注工具。它主要用于构建动词框架(verb frames),这些框架能够帮助理解句子中动作的发生方式...
#### 一、Struts2框架简介 Struts2是一个基于MVC架构的Java Web应用框架,它继承了Struts1的优点,并在此基础上进行了改进。Struts2框架的核心是拦截器机制,这使得开发者能够更加灵活地处理请求和响应。Struts2还...