- 浏览: 1135564 次
- 性别:
- 来自: 上海
最新评论
-
LD_21:
...
无锡旅游归来 -
cat:
赞,这招有点创意。一般他们提交的demo都是些什么样的?
招人不难 -
daly1987:
不错啊,找到这个帖子学习。
ANTLR学习心得——表达式(1) -
hbsycw:
文笔不错,平铺直叙,坦诚~
我的野蛮成长 -
RonQi:
potian后来没有回复吗
与potian兄闲聊
今天去参加了北京博文视点出版社在上海办的一个Open
Party(http://www.douban.com/event/11051981/)。其中有两个topic给我很大的启发,一个是温昱的《架构
设计的事实与谬误》,另一个是老赵(@jeffz_cn)的《Web应用中的缓存》。
当然,我的收获未必是他们两位想要传达的主旨,只是引发了很多联想,所以也就不写思考的过程了,直接说一些结论吧。
1、架构设计需要关注需求,而需求有两大部分 ,一部分是与业务相关的需求,另一部分是与业务无关的需求。
2、与业务无关的需求,包括可重用性、高性能、可靠性、易用性、安全性等等。
3、经典的GoF的设计模式,其实只解决了(甚至只能说部分解决了)可重用性的需求。
4、在高性能的需求领域,也可以总结出很多设计模式,其中,老赵今天特别提出的缓存,是跨越N多领域的,提高性能的重要模式。
5、在我看来,要提高性能,无非这么三大思路:缓存、切分、并行。在三大思路之上,还有一个总的思路,就是找到性能瓶颈,然后尝试优化这个瓶颈。
6、缓存的思路,今天老赵已经谈得非常好了,每一个层次,有每一个层次的缓存实现思路和方案,有优点,有缺点。如果能够再展开谈一谈缓存模式的共性,就更棒了。也许可以总结为:针对80%的情况进行特殊处理,以更加快捷的方式减少CPU与IO。
7、切分,比如将数据分开存放、将静态内容与动态内容分开处理、将缓存分散在多个memcached服务器上等等等等,总的思路,是将原本的瓶颈分散化、将原本的问题,分别细化处理。
8、并行,当然也是一大门类,就不展开了,总得思路是:让计算机在同一个时间断内,做尽可能多的工作。
9、也许,应该有这么一本书:《高性能设计模式》,与“以可重用性为目标的设计模式”应该同等重要。
10、依此类推,还应该有《安全性设计模式》、《高可靠性设计模式》、《易用性设计模式》等等,这些跨应用、跨业务、跨领域的设计模式,都是架构设计师,应该深度掌握的设计模式。
11、也许,应该有出版社,组织高人,写这么一套《架构师设计模式丛书》出来。
评论
异步(不如消息系统)也是一种思路哦
设计模式与开源库,是两个不能互相取代的东西。
比如,你在CPU设计领域,积累了很多经验,其中有一级缓存、二级缓存之类的实践经验。
这些经验,在新的领域,比如数据库服务器上,能用得上吗?
查询缓存,当然也是缓存的思路,但是,CPU硬件设计的思路,肯定不能直接照搬过来就用。
但是,假设能够跨N多的领域,将缓存这个模式讲清楚,就算将来做到一个全新的,从未接触过的领域,也可以用得上,不是吗?
如果共同点很多,稍稍修改或者做做 code transformation 就能拿过去用了。
如果共同点很少,只是都带“缓存”二字而已,讲了对其他领域的应用也没帮助 ……
从范畴的角度看:
一个范畴的代码模式,做 morphism,也就是态射(代码转换器)可以把模式 port 到另一个范畴。
人的脑子也是一个代码转换器,把 A 场景的模式态射到脑子里,再态射到另一场景领域,做的事情比机器高级不到哪去。
解决问题应该记题库,还是研究代数方程?
我觉得模式看过几个就足够了,这种量变不能达成质变,死抠住不放很难达到新的高度。
写库同时也可以减少他人的知识包袱:告诉你这个是干嘛的,不用重复思考,更无须听耶稣讲经,拿去用就行了。
能力好的可以添加语言特性甚至搞新语言,精力不济的也可以向语言、框架的设计者提个 issue 啊。
---
写一段代码,觉得不错,命名为一个模式,让子孙后代学习去 —— 遗臭万年。
不要说不能写成库,抽象不出来 —— 能力问题。
设计模式与开源库,是两个不能互相取代的东西。
比如,你在CPU设计领域,积累了很多经验,其中有一级缓存、二级缓存之类的实践经验。
这些经验,在新的领域,比如数据库服务器上,能用得上吗?
查询缓存,当然也是缓存的思路,但是,CPU硬件设计的思路,肯定不能直接照搬过来就用。
但是,假设能够跨N多的领域,将缓存这个模式讲清楚,就算将来做到一个全新的,从未接触过的领域,也可以用得上,不是吗?
毕竟很多从java转向ruby的人很多先去找的是有没有什么设计模式. 然后把java这边的设计模式套过去用.. 还有象现在很多的后端处理.用java处理 .跟用其他的fp类似Erlang跟Scala的Actor模型也是不能相提并论的.. 让人们抛弃side-effects .. 还不如让他们放弃语言. 况且各种技术选型的瓶颈也不相同 ..
综上所述.我写了本Java的高可靠性设计模式. 是不是就真的是最好的选择呢? 作为一个架构师而言. 单纯的考虑一种方案的应该不会犯这种错误吧.
任何知识,都有可能禁锢思想,所以,这个要看那个运用知识的人,能不能跳出来。
设计模式,作为一种思想,肯定是存在的,也在相当程度上,是成立的。不过,有些时候,内化在语言语法里,有些得靠自己去实现。作为一个起点和基础,是必须掌握的,当然,强行套用,总是不可取的。
不同的问题,有不同的解决方案。有些问题,是跨语言的,那么就需要一个跨语言的思路来统一考虑,当然,具体到实现,肯定扎根于某个语言来编程,那么也就必须考虑到具体语言的特性,以更好的实现解决方案。
但没有一个人的经验会涵盖各个领域,实践会遍布各个类型的应用,精通各个细节,所以个人认为掌握了多少模式不是最重要的,关键是要学会其面对问题时,怎样去思考,怎样去判断和选择。
西方人就不同,最伟大的发明就是代数。碰到问题先列成方程,映射到数学语言,再用数学语言解决,不管你什么题型、什么模式,一列方程本质就出来了。
中国数学没发展那是因为从来没重视过数学,古代一群民间爱好者。。。都没有职业的
方程和模型,本身就是很抽象的东西,架构师的设计也很抽象,程序员很难全面的理解和体会,设计模式就是个很好的桥梁,架构师通过设计模式解释意图,程序员通过设计模式了解意图,它有它存在的意义
没啥值得玩味的,动态语言达到设计模式的方式成本本身就很低廉,而且更容易理解,java这种破j8静态语言,没有抽象,接口和继承鸟毛都玩不出来,要搞灵活性,不玩接口玩什么啊。。。抓个动态脚本语言出来,什么面向接口编程,提都不用提,怎么写都算面向接口,完全可以靠约定搞定,天生就是灵活,设计模式基本都木有啥鸟用了,在ruby里面提设计模式,确实很多模式没啥可研究的,语言特性就已经把问题解决了
西方人就不同,最伟大的发明就是代数。碰到问题先列成方程,映射到数学语言,再用数学语言解决,不管你什么题型、什么模式,一列方程本质就出来了。
话说确实模式降低了程序员之间的交流成本.解决的一部分问题.但是我不保证他没有禁锢思想的东西存在. 为啥rails这种东西被DHH玩出来. 而精通模式的大牛们还在不停的耍弄接口. 是不是值得玩味呢? ..
btw: 博客的回复不能编辑. 导致我每次回复都要慎之又慎...
有关模式的书真是不少
设计模式
实现模式
企业架构模式
反模式
读一读还是总有收获的
我觉的
设计模式本身标准意义大于对一个程序员的提高
程序员之间可以直接说出模式的名字,就可以简单的明白一些模块的结构了
所以我认为设计模式应该是基本能力他关乎程序员之间的交流,而不是评价一个程序员是否懂得什么叫可复用的软件设计。
而另外的一些模式,是一些经验的东西,写成书也不是逼着人们这么写,而是从开发经历中去发现一些badcode 的前生往事,追随作者的思考,传承经验,才是模式书籍的根本意义所在吧
写库同时也可以减少他人的知识包袱:告诉你这个是干嘛的,不用重复思考,更无须听耶稣讲经,拿去用就行了。
能力好的可以添加语言特性甚至搞新语言,精力不济的也可以向语言、框架的设计者提个 issue 啊。
---
写一段代码,觉得不错,命名为一个模式,让子孙后代学习去 —— 遗臭万年。
不要说不能写成库,抽象不出来 —— 能力问题。
毕竟很多从java转向ruby的人很多先去找的是有没有什么设计模式. 然后把java这边的设计模式套过去用.. 还有象现在很多的后端处理.用java处理 .跟用其他的fp类似Erlang跟Scala的Actor模型也是不能相提并论的.. 让人们抛弃side-effects .. 还不如让他们放弃语言. 况且各种技术选型的瓶颈也不相同 ..
综上所述.我写了本Java的高可靠性设计模式. 是不是就真的是最好的选择呢? 作为一个架构师而言. 单纯的考虑一种方案的应该不会犯这种错误吧.
设计模式,是思考的起点,以减少闭门造车与重复思考的风险。
但是,设计模式不是设计的目标,更不是设计的终点。
to:狂放不羁
谢谢,去学习ing
to:night_stalker
很多模式,在多种领域与应用中存在,写一个库,不一定能解决问题。
话说真的有必要有那么多的设计模式么?刨去业务. 将这些 安全性. 易用性. 等等的设计模式全都整理出来.那是不是还要一本整合这些所有模式的设计模式呢? .况且不同的系统技术选型之间也有很多差异.. 拿最平常的语言来说. GOF的设计模式就不适用于ruby嘛. 所以.我还是觉得很不靠谱.
以上言论是我从别处copy的. 我不懂具体是什么意思. 随便粘贴了一下. 切勿跨省追捕.
发表评论
-
作为一个JavaEye的老会员,我感到羞愧
2010-12-08 12:36 3863这次的Bambook SDK大赛,我在其中做一些社区联络与维护 ... -
开发应用程序 白拿Bambook
2010-11-11 22:29 2261本月,盛大电子书Bambook程序达人赛将正式启动。大赛奖 ... -
TCDatabase介绍(3)
2010-05-15 22:57 2685四、存储数据结构 1、TCT的存储数据结构 TC的不同 ... -
TCDatabase介绍(2)
2010-05-11 21:35 2286三、TokyoTyrant的网络协 ... -
TCDatabase介绍(1)
2010-05-08 22:54 3070TCDatabase,是我在创新院的同事,riceball的一 ... -
美国软件和菜头——《软件随想录》读后感
2010-01-16 22:44 3039一口气读完了《软件随想录》(More Joel on So ... -
与potian兄闲聊
2009-10-03 23:01 3135昨天的一篇blog,potian兄 ... -
帖子虽老,却不过时
2009-10-02 20:43 5462我昨天发的那篇《咱圈真乱 》,potian在下面留了一个言: ... -
《观止》读后感
2009-09-06 10:21 1905这篇blog,我是先在twitter上写的,然后再转帖过来,这 ... -
有关语言设计的一些联想
2009-08-01 21:51 1859引发我这些思考的,是最近一篇InfoQ的文章:《语言约束 ... -
我用Twitter的烦恼与解决方案
2009-07-20 23:12 2388挺早以前,我就注册了 ... -
我最想做的是什么?
2009-07-14 23:18 1967《费曼的彩虹》,是我最近读到的一本极好的书。最 ... -
JavaEye的历史,翻开了新的一页!
2008-11-19 22:06 6372JavaEye的Robbin昨天发了一篇blog,题目叫做《推 ... -
外国大牛也不过如此——《梦断代码》读后感
2008-09-13 20:51 8226花了一周的时间, ... -
IT开发与管理——新收获
2008-09-08 22:02 30449月4日,我略尽地主之宜,招待了大概20多位朋友。那一场研讨会 ... -
Play with Quiz — 找零钱 (3)
2008-05-06 22:50 2361要改进这两种算法,都是一个目标,就是寻找不需要列出所有解的办法 ... -
Play with Quiz — 找零钱(2)
2008-05-03 23:25 2555接着上回的讨论,我们需要写两个方法,一个找出所有的零钱组合,g ... -
Play with Quiz — 找零钱 (1)
2008-05-01 23:14 3101先把题目再抄一遍: 这周的题目是找零钱,假设我们需要找给别人3 ... -
Play with Quiz (0)
2008-04-29 22:45 2404自从Quake Wang在JavaEye贴出第一个Ruby每周 ... -
发布DynamicStruct-0.2 and BytecodeStruct-0.1
2008-02-05 00:26 3740DynamicStruct,是我最近自己在鼓捣的一个ruby项 ...
相关推荐
蚂蚁架构师之并发编程设计模式与分布式性能优化视频教程 java架构师视频教程推荐,真正的轻量级架构体系,学习java你不可或缺,java自学网作为国内顶尖的java学习论坛社区,专注提供高质量,含金量的视频教程!...
架构师应该亲力亲为 持续集成 避免进度调整失误 取舍的艺术 打造数据库堡垒 重视不确定性 不要轻易放过不起眼的问题 让大家学会复用 架构里没有大写的“I” 使用“一千英尺高”的视图 先尝试后决策 掌握业务领域知识...
设计模式与软件架构设计 (1)面向对象软件架构设计思想 (2)设计模式的本质论 (3)分析创建型模式 (4)分析结构型模式 (5)分析行为型模式 (6)设计模式的综合应用 等等。。。。。
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
主要介绍做为一名java软件架构师都需要掌握哪些技能 Java语法与编程基础 面向对象程序设计与编码 Java流操作和文件系统 Java图形用户界面编程 异常处理与事件响应 Java基础类库与中期项目实战 Java多线程编程、网络...
3. **架构师和技术领导**:对于负责系统架构设计和代码审查的技术领导和架构师来说,熟悉设计模式可以帮助他们设计出更健壮、可扩展和易于维护的系统架构,并能够指导团队成员正确地应用设计模式。 4. **面试准备者...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
本课程设计从IT系统性和实用性出发,结合惠普公司多年IT系统架构设计实战经验,为学员教授IT系统架构设计的整套知识体系,包括架构设计原则、设计模式、设计方法及主流架构技术。从而有效提升学员的系统架构设计...
课程主体部分从软件架构体系结构、架构设计、技术体系等角度出发,详细介绍了架构师区别于一般开发人员所需要掌握的架构设计方法论与相关实践,包括架构风格与模式、领域驱动设计、类与框架设计、分布式系统架构设计...
50、下面,哪些是Process Service的要求:/可以方便的修改和定义 /对于业务人员来说易于掌握 /方便的工具来开发和调试 /健壮的异常处理(交易补偿) /大的Process可以包含对于一系列小的Process的调用 51、MSF 构思...
如果你想要深入透彻地理解和掌握设计模式,并期望能真正把设计模式应用到项目中去,那么这是你不可错过的一本好书。 《研磨设计模式》难度为初级到中级,适合与所有开发人员、设计人员或者即将成为开发人员的朋友。...
⼤数据架构师应该做到的 ---- ---- 关于软实⼒部分同步会更新场景落地 ---- ---- ---- 技能图 ⼤数据架构师该掌握的技能 主要分为两块 与 ⼀.平台建设 ⼆.数据搜集 三.数据价值 四.数据安全 五.质量保障 六.个⼈素质...
国内首本讲解企业级.net应用架构与设计的专著,由国内经验丰富的.net专家和架构师亲自执笔,权威性毋庸置疑。本书的重点不在于架构与设计的理论,而是从实践的角度出发,结合大量示例和一个完整的项目案例循序渐进地...
使用人群:软件开发工程师、Java程序员、架构师、设计模式爱好者 用途:帮助读者了解抽象工厂模式的定义、使用场景、主要角色以及相应的类图,并通过Java示例代码演示其实现方法,从而在实际开发中运用该模式提高...
除了基本知识与技能,高级系统架构师还需要具备较强的系统架构设计能力,包括对软件系统整体结构的把握、对各层次之间交互的清晰认识、对系统性能和安全性的全面考虑等。在实际工作中,高级系统架构师应能够根据项目...
C++属于难学易用的工程开发语言,C++繁复的语法往往使得开发...设计模式是来源于工业实践的重要开发经验,它实际上是面向对象的数据结构,掌握设计模式是掌握面向对象设计的根本要求,该课程基于C++语言讲解设计模式。
软件工程师和架构师:作为软件工程师和架构师,掌握抽象工厂模式有助于您更好地设计系统架构,提高软件的可维护性和可扩展性。 能学到什么 通过阅读本文,您将能够:了解抽象工厂模式的基本概念和应用场景。
设计模式秘籍图谱 架构师技能图谱 机器学习技能图谱 JVM垃圾回图谱 Java并发图谱 Java集合图谱 Java集合类图 Java List类图 Java Map类图 Java Set类图 Java TCP IP Hadoop 家族技能图谱 大数据工程师技能图谱 ...
设计模式系列23种设计模式设计模式是一套被反复使用,多数人知道的,...对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,简化系统的开发,是其架构生涯的第一步。对于一个开发团队而言,能在短期内开发出用