- 浏览: 2651980 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
我有一双定做的休闲鞋,一只鞋上赫然写着“KISS”,另一只则写着“YAGNI”——这是程序员圈子里的“黑话”,也算是我对自己职业的一点炫耀吧,它们的意思分别是“Keep It Simple and Stupid”和“You Aren'tGonna Need It”。这是来自敏捷社群的两句箴言,我愿意把它们留在我的鞋子上,让它们随时提醒自己:不要过度追求程序设计的完美,因为我可能永远不需要那样一个完美的设计。
然而,上个星期我却只做了一件事:对一个项目的业务层代码进行重构,将它的体系结构设计从Transaction Script模式变成Domain Model模式。如果说软件开发者应该始终选择可行所有方案中的最简单者,如果说编程的唯一目的是实现业务需求,我的这一行为恐怕将无法解释。也许唯一合理的解释,只能是对惟美的偏爱了。
柏拉图认为万事万物都有一个完美的、先验的“理型”(eidos)存在,而我们眼见身受的事物无非是这理型的一个不完美的投影或者复制品———就像用模子烤出来的蛋糕。如果我们愿意传承这位先贤的世界观,那么在我手边的这本Patterns of Enterprise Application Architecture(PoEAA)就多少有些像是柏拉图所设想的“理型的花园”了。如果要为这本PoEAA设计广告词的话,我会说它“承载了Martin Fowler之于企业级应用开发的思想精华”———英文中的“idea”一词恰好源自希腊文的“eidos”,这也算是词源学的一次巧合吧。
MartinFowler在面向对象社群素有“教父”的美名———我们当然还记得UML Distilled、Analysis Patterns和Refactoring。据说有位先生曾在一个技术研讨会的午餐时间与他的邻桌讨论OO技术,当他得知对方是Thought Works的员工时,立刻懊恼地说:“我竟然试图教Martin Fowler的同事OO技术,这简直就是木匠门前玩斧头、大江边上卖水了。”作为这个圈子里最著名的“传教士”,MartinFowler有一种常人所不及的归纳总结、提纲挈领的能力。很多“古已有之”的技术都是经过了他的点石成金,才真正在开发者的芸芸众生中流行起来———重构技术就是一个最好的例子,而最近的例子则是Dependency Injection模式。
从他的作品中,我们可以明显地看出:Martin Fowler一直致力于为企业级应用开发者提供一套完备、自足的话语系统,一个理型的世界。Analysis Patterns告诉我们如何分析用户需求,Refactoring告诉我们如何改善代码质量,Planninge Xtreme Programming告诉我们如何规划敏捷的开发过程。这本PoEAA恰好是拼图的最后一块,它所记录的47个模式直指架构企业级应用时无法回避的那些问题。现在,Martin Fowler的信徒们可以完全用自己的一套话语来谈论企业级应用开发了。
面对这本PoEAA,或许不少读者会冒出这样一个念头:为什么我要使用这些模式?——这个问题从前的版本是“为什么要重构”、“为什么要采用多层结构”,它们背后的潜台词是“为什么我要给自己增加这些麻烦”。实用主义的陈词滥调我们已经听得太多了:优雅的设计提升灵活性和复用性、使系统便于维护……噢,一边做着设计,一边还要考虑“这里是否需要灵活性”,我不认为自己有那么好的精力。在我看来,这里只有一个问题:系统是否呈现出一种内在的美。在我的系统中采用Transaction Script模式让我感到缺乏美感,所以我把它重构成Domain Model模式,这就是我的方式。
我提到了“美感”,这是一种形而上学吗?软件开发的全部艺术就是权衡:在简单与复杂之间权衡,在一种方案与另一种方案之间权衡。如果把每个问题、每个权衡的利弊都考虑得清清楚楚,恐怕开发一个应用程序的成本会高得惊人。所以,很多时候我们更依赖自己的审美眼光,用平静的心去设计一个赏心悦目的系统。缺乏美感的程序通常也同时缺乏质量,从前曾经流行的“万能JSP”就已经充分证明了这一点。这本PoEAA就像一幅画卷,它向我们展示了具有美感的架构方案。如果能暂时抛开实用主义的立场,用审美的眼光去浏览这幅画卷,或许能引起你更多的共鸣。
但是,请不要忘了,MartinFowler同时也是一位敏捷方法的鼓吹者。在他看来,过度设计、堆砌模式的系统同样是缺乏美感的。就像这本PoEAA,如果把这47个模式全部用在一个系统里,最终得到的只能是一堆臃肿不堪的垃圾。于是,我只好不时看看自己脚上的鞋子,在心里默念“KISS”、“YAGNI”,然后继续在完美与简单之间权衡。PoEAA给了我们优雅的设计方案,但它并不保证用这些方案能够得到具有美感的架构设计,你仍然必须不断地选择、权衡。在这个领域里,没有银弹。不然,还要我们程序员干什么?
然而,上个星期我却只做了一件事:对一个项目的业务层代码进行重构,将它的体系结构设计从Transaction Script模式变成Domain Model模式。如果说软件开发者应该始终选择可行所有方案中的最简单者,如果说编程的唯一目的是实现业务需求,我的这一行为恐怕将无法解释。也许唯一合理的解释,只能是对惟美的偏爱了。
柏拉图认为万事万物都有一个完美的、先验的“理型”(eidos)存在,而我们眼见身受的事物无非是这理型的一个不完美的投影或者复制品———就像用模子烤出来的蛋糕。如果我们愿意传承这位先贤的世界观,那么在我手边的这本Patterns of Enterprise Application Architecture(PoEAA)就多少有些像是柏拉图所设想的“理型的花园”了。如果要为这本PoEAA设计广告词的话,我会说它“承载了Martin Fowler之于企业级应用开发的思想精华”———英文中的“idea”一词恰好源自希腊文的“eidos”,这也算是词源学的一次巧合吧。
MartinFowler在面向对象社群素有“教父”的美名———我们当然还记得UML Distilled、Analysis Patterns和Refactoring。据说有位先生曾在一个技术研讨会的午餐时间与他的邻桌讨论OO技术,当他得知对方是Thought Works的员工时,立刻懊恼地说:“我竟然试图教Martin Fowler的同事OO技术,这简直就是木匠门前玩斧头、大江边上卖水了。”作为这个圈子里最著名的“传教士”,MartinFowler有一种常人所不及的归纳总结、提纲挈领的能力。很多“古已有之”的技术都是经过了他的点石成金,才真正在开发者的芸芸众生中流行起来———重构技术就是一个最好的例子,而最近的例子则是Dependency Injection模式。
从他的作品中,我们可以明显地看出:Martin Fowler一直致力于为企业级应用开发者提供一套完备、自足的话语系统,一个理型的世界。Analysis Patterns告诉我们如何分析用户需求,Refactoring告诉我们如何改善代码质量,Planninge Xtreme Programming告诉我们如何规划敏捷的开发过程。这本PoEAA恰好是拼图的最后一块,它所记录的47个模式直指架构企业级应用时无法回避的那些问题。现在,Martin Fowler的信徒们可以完全用自己的一套话语来谈论企业级应用开发了。
面对这本PoEAA,或许不少读者会冒出这样一个念头:为什么我要使用这些模式?——这个问题从前的版本是“为什么要重构”、“为什么要采用多层结构”,它们背后的潜台词是“为什么我要给自己增加这些麻烦”。实用主义的陈词滥调我们已经听得太多了:优雅的设计提升灵活性和复用性、使系统便于维护……噢,一边做着设计,一边还要考虑“这里是否需要灵活性”,我不认为自己有那么好的精力。在我看来,这里只有一个问题:系统是否呈现出一种内在的美。在我的系统中采用Transaction Script模式让我感到缺乏美感,所以我把它重构成Domain Model模式,这就是我的方式。
我提到了“美感”,这是一种形而上学吗?软件开发的全部艺术就是权衡:在简单与复杂之间权衡,在一种方案与另一种方案之间权衡。如果把每个问题、每个权衡的利弊都考虑得清清楚楚,恐怕开发一个应用程序的成本会高得惊人。所以,很多时候我们更依赖自己的审美眼光,用平静的心去设计一个赏心悦目的系统。缺乏美感的程序通常也同时缺乏质量,从前曾经流行的“万能JSP”就已经充分证明了这一点。这本PoEAA就像一幅画卷,它向我们展示了具有美感的架构方案。如果能暂时抛开实用主义的立场,用审美的眼光去浏览这幅画卷,或许能引起你更多的共鸣。
但是,请不要忘了,MartinFowler同时也是一位敏捷方法的鼓吹者。在他看来,过度设计、堆砌模式的系统同样是缺乏美感的。就像这本PoEAA,如果把这47个模式全部用在一个系统里,最终得到的只能是一堆臃肿不堪的垃圾。于是,我只好不时看看自己脚上的鞋子,在心里默念“KISS”、“YAGNI”,然后继续在完美与简单之间权衡。PoEAA给了我们优雅的设计方案,但它并不保证用这些方案能够得到具有美感的架构设计,你仍然必须不断地选择、权衡。在这个领域里,没有银弹。不然,还要我们程序员干什么?
发表评论
-
博客链接收藏
2014-03-22 11:18 566这里记录一些我觉得好的博客地址: http://iamm ... -
要看的好文
2011-11-16 12:48 854一致性 hash 算法( consistent hashing ... -
cronolog
2011-05-25 20:58 3613原作者:陈明 很多 ... -
Be more efficient
2011-05-24 11:37 1310svndiff 快捷键 Gnome快捷键: ... -
google 绑定地址
2011-05-20 16:49 104974.125.153.104 code.google.com ... -
JS疑难杂症
2010-01-19 16:42 1043通过a标签提交表单有问题,必须使用button提交表单. & ... -
javascript实现语法高亮
2009-09-09 17:32 0http://hi.baidu.com/erik168/blo ... -
使用JAVA对图片进行效果变换
2008-12-12 22:42 1577原文: http://blog.ccidnet.com/blo ... -
针对Oracle数据库的优化器详细介绍
2008-02-23 12:52 1200http://unixboy.iteye.com/blog/1 ... -
优化数据库大幅度提高Oracle的性能
2008-02-23 12:49 1224http://unixboy.iteye.com/blog/1 ... -
在线HTML编辑器原理
2008-01-10 09:57 2297为什么能实现在线编辑呢? 首先需要ie 的支持,在 ie 5 ... -
Oracle高级查询
2007-06-27 15:31 2573使用Oracle特有的查询语法, 可以达到事半功倍的效果 转 ... -
Domain-Driven Design领域驱动设计(转)
2007-03-21 13:51 2359越来越多人开始使用Java ... -
我的2006 ―― 战斗的一年(转)
2007-03-21 13:49 1455圣诞假期开始了,下午多数美国同事都早早回家了。我差不多是最后一 ... -
十年学会编程(著者: Peter Norvig)
2007-03-21 13:46 2040为何人人都这么着急? 信步走进任何一家书店,你会看到名为《如 ... -
判断是否是质数
2007-03-21 13:45 1866java 代码 import java.io.* ... -
如何成为一名真正的高级程序员(转)
2007-03-21 13:43 6536那么作为高级程序员,以至于系统分析员,也就是对于一个程序项目的 ... -
如何成为一名真正的程序员(转)
2007-03-21 13:42 1919中国有很多小朋友,他 ...
相关推荐
Patterns of Enterprise Application Architecture By Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, Randy Stafford
Martin Fowler的大作。
《企业应用架构模式》是Martin Fowler撰写的一本经典著作,对于理解并构建大型、复杂的IT系统具有极高的指导价值。这本书深入探讨了在企业级应用开发中常见的设计模式和架构决策,旨在帮助开发者提高代码质量,提升...
Patterns of Enterprise Application Architecture is written in direct response to the stiff challenges that face enterprise application developers. The author, noted object-oriented designer Martin ...
Patterns of Enterprise Application Architecture,构架师必备,epub格式,英文原版,排版非常好。
《Patterns of Enterprise Application Architecture》是由著名面向对象设计专家Martin Fowler撰写的一本关于企业级应用架构模式的书籍。虽然这本书首次出版于2002年,但其内容直至今日仍具有相当的前瞻性和实用性。...
《企业应用架构模式》是Martin Fowler于2002年出版的一本经典IT著作,它深入探讨了在构建大型企业级应用时所面临的设计和架构问题,并提供了多种可复用的解决方案,即“架构模式”。这本书是软件开发人员、系统架构...
Martin Fowler名箸 Patterns of Enterprise Application Architec
注:英文版 作者:Martin Fowler 本书作者是当今面向对象软件开发的权威,他在一组专家级合作者的帮助下,将40多种经常出现的解决方案转化成模式,最终写成这本能够应用于任何一种企业应用平台的、关于解决方案的、...
Enterprise Application Architecture with .NET Core by Ganesan Senthilvel English | 25 Apr. 2017 | ASIN: B01M18CQNP | 564 Pages | AZW3 | 9.94 MB Architect and design highly scalable, robust, clean and...
Patterns+of+Enterprise+Application+Architecture