
Design
buaawhl
这个作者很懒,什么都没留下…
展开
-
AOP = Proxy Pattern + Method Reflection + Aspect DSL + 自动代码生
学如逆水行舟,不进则退。半年多来,居无常所,没有稳定的上网环境,这次抽空上来一看,又有好多陌生的名词漫天飞舞了。落伍退化得很厉害。不过,我还能温故而知新,炒炒冷饭,写写基本的内容AOP。怀旧一番。AOP = Proxy Pattern + Method Reflection + Aspect DSL + 自动代码生成Declarative Programming & D...2007-05-28 11:36:05 · 363 阅读 · 0 评论 -
ajoo JRC
http://jrc.dev.java.netajoo项目批准了。想参与的去java.net上申请一个账号吧。告诉ajoo,可以把你加进去。cvs:host: cvs.dev.java.netrepository: /cvsmodule: /jrc项目的缘起可以看这里。http://forum.iteye.com/viewtopic.php?p=1320...2006-08-17 16:20:57 · 275 阅读 · 0 评论 -
Generice Java (and c#)
人心思动的年代,还有人学习静态范型(static generic type),令人欣慰。网上流传的Java范型学习资料,基本上都是些入门用法的知识。我在这里试图解释一下原理。Java Generic 采用的实现方案是Type Erasure;C# Generic采用的实现方案是Reification。Java Generic -- Type ErasureJav...2006-08-23 11:44:14 · 146 阅读 · 0 评论 -
JavaScript Monads
from "JS is Best Language" article.---------------------------JavaScript Monads(with aplogies to Shannon Behrens)20[code="java"]function MonadClass(value){this.value = value || undef...2006-09-03 17:33:24 · 109 阅读 · 0 评论 -
Tail Recursion = 循环 = CPS
Tail Recursion的一点经验简单的不说了。只说复杂的,需要重用runtime stack上的计算结果的情况。经验就是tail recursion = continuation passing style。可以看看 continuation passing style, CPS。这个continuation其实就可以看作当前的运行栈。只是我们并不需要整个运行...2006-09-06 01:58:24 · 343 阅读 · 1 评论 -
Re: ajoo JRC
ajoo牛 代码观感刚开始接触JParsec的时候,我就对照着ajoo的calculator, mssql的等比较复杂深入的例子,向下挖掘,并随之构建一套类体系。遇到不懂的地方,就向ajoo询问。ajoo给我的建议是从简单的步骤开始做起,这样更有信心。我的回答是,简单的步骤并不能免除我今后应对复杂的地方。现在弄不懂的,后面还是不懂。我习惯于一开始尽量把所有障碍和难点思考清楚,提前拔...2006-09-16 08:56:27 · 227 阅读 · 0 评论 -
Re: java将死?
楼上早。同意T1。动态性就是带来了松耦合,把静态语言的dispatch by type强契约,变成了dispatch by name,甚至dispatch by pattern等弱契约。到了最后,dispatch 干脆就弱化为 DSL,Message Protocal。到了Message Protocal,这就是SOA。动态性最终带来的就是DSL, SOA。关于静态类型的更为臭名昭...2006-09-19 07:40:17 · 156 阅读 · 0 评论 -
Yield in Python/Ruby - Iterator/Visitor
Yield in Python/Ruby - Iterator/Visitor首先,我们从Ruby的Iterator开始。Ruby程序员可以用yield关键字定义Iterator。例如,下面的abc()就是一个Iterator。def abc() yield “a” yield “b” yield “c”endabc Iterator的调用方法如下:...2008-02-24 21:53:15 · 155 阅读 · 0 评论 -
ErLang Map 函数的尾递归形式 / Final List
ErLang Map 函数的尾递归形式循环语句需要计数器变量控制循环次数,而计数器变量需要多次改变数值。ErLang语言不支持可以重复赋值的变量,因而也不支持循环语句。ErLang程序员只能用递归表示循环。有些服务程序需要运行在在一个无穷循环中。while true listen and respond to user request ….这种情况下,ErLang程序也...2008-02-24 22:06:05 · 235 阅读 · 0 评论 -
线程同步
线程同步作者 : buaawhl我们可以在计算机上运行各种计算机软件程序。每一个运行的程序可能包括多个独立运行的线程(Thread)。线程(Thread)是一份独立运行的程序,有自己专用的运行栈。线程有可能和其他线程共享一些资源,比如,内存,文件,数据库等。当多个线程同时读写同一份共享资源的时候,可能会引起冲突。这时候,我们需要引入线程“同步”机制,即各位线程之间要有个先来后到...2008-02-25 22:32:04 · 712 阅读 · 0 评论 -
线程同步模型, 生产者/消费者, 读写同步,线程池,concurrent map.
之前写了一篇线程同步的原理分析的文章.线程同步http://www.iteye.com/topic/164905看到大家的反馈,感到深受鼓励.看来这种举例说明本质原理的浅显易懂的文章, 还是比较受欢迎的.关于线程, 我以前也写过一些文章.只是写得不那么清楚易懂.一是因为自己的理解也有限, 二是很难找到灵感,很难写出一个非常贴切的例子.应一些坛友的意见. ...2008-03-21 18:15:07 · 159 阅读 · 0 评论 -
Copy On Write Hash Map (线程同步相关)
本文是继前两篇文章之后的有一篇线程数据结构相关文章.线程同步http://www.iteye.com/topic/164905线程同步模型, 生产者/消费者, 读写同步,线程池,concurrent maphttp://www.iteye.com/topic/174591我以前写过这个Fast Read Map 数据结构的文章.但是那个时候, 理解得并不...2008-03-21 18:19:54 · 408 阅读 · 0 评论 -
函数的副作用及其他
函数的副作用及其他Pure Function、Impure Function、副作用、Referential Transparent纯函数(Pure Function)是这样一种函数——输入输出数据流全是显式(Explicit)的。显式(Explicit)的意思是,函数与外界交换数据只有一个唯一渠道——参数和返回值;函数从函数外部接受的所有输入信息都通过参数传递到该函数内部;函数输...2008-03-28 19:48:14 · 434 阅读 · 0 评论 -
祝贺Javaeye2.0, 关联数据结构
Javaeye2.0 社区的版面,感觉很不错。我也在做一个数据关联结构的开源内容系统。现在把核心数据结构写在这里,供参考,抛砖引玉。文中的例子和说明,是和femto讨论的过程中加上的。-----------------------------------------我正在做一个内容组织整理的开源作品。主要功能是:能够让用户自由指定homepage (或者...2006-08-09 06:39:46 · 128 阅读 · 0 评论 -
Functor组合, 参数集合, Curry
Functor组合, 参数集合, CurryAjoo曾经写过面向组合子编程系列。我也帮着助威。面向组合子编程和并不是简单意义上的Composite Pattern。Composite Pattern只是一个简单的基本Pattern。面向组合子编程只是用到了Composite Pattern,面向组合子编程本身的内容复杂许多,以至于复杂到这样的程度,数据和行为必须分开,形成Visit...2006-07-27 15:24:33 · 179 阅读 · 0 评论 -
servlet thread, SEDA
也是和程序员朋友聊天。说到了SEDA。关于请求分类合并,批量处理。谈到一个问题,就是thread个数问题。目前的servlet container的thread策略是一个request,一个thread。如果换成如下的方式,就可能减少thread个数。request进来,不启动一个thread。而是产生一个listner task,进入task queue。有一个t...2006-07-24 21:43:57 · 148 阅读 · 0 评论 -
ErLang语法提要
ErLang语法提要ErLang中的标点符号ErLang语法中充满了一些约定。大写字母开头的名字(比如Address),表示一个变量,包括参数、局部变量等;小写字母开头的单词(比如ok),表示一个常量,叫做atom(原子的意思),包括常量名、函数名、模块名等。ErLang的注释用%开头。ErLang用下划线“_”表示任意变量,类似于Java的switch语法里面的default选项...2007-05-28 11:39:32 · 349 阅读 · 0 评论 -
比较话题: 轻量级与重量级比较
收到一封关于 pojo in action 图书的信。------------------ editor said 我是营销编辑。为了更好的销售图书《POJOs IN ACTION》,我想做一个EJB VS POJOS专题,您一看专题就能明白,我想做一个轻量级与重量级比较。形式是:引出一个话题,吸引读者。目的是:读者买这本书。但是我遇到了一个问题:我不太清楚如何引出一个...2007-07-04 11:12:41 · 445 阅读 · 0 评论 -
域对象 & 面向对象 & 结构化编程
本来我尽量避免关于方法论方面的主义之争,但一些话如骨鲠在喉,不吐不快。软件领域方法论大师的著作发人深省,通常代表着软件开发的未来模式。当然,我们在读大师之后,掩卷沉思之余,最好也保持自己的独立意见。希望本文能够唤起一些对基本概念和基本功的重视(追逐新潮概念之余,同时也固本培源 :D)。1. Domain Object的重新提出的背景Domain Object并不是一个全新的...2005-01-02 15:59:49 · 229 阅读 · 0 评论 -
以前写的一个Design Pattern的文章
Design Pattern Practice1.序本文从一个简单的多列排序的例子入手,由浅入深地讲解Design Pattern(设计模式)的目的、分析和实践。文中的例子用到Compositor Pattern和Proxy Pattern。同时,文中的例子也提供了一类问题(条件组合问题)的解决方案。2.问题的引入Design Pattern(设计模式)的目标是,把共通...2005-06-17 21:20:39 · 146 阅读 · 0 评论 -
OOP/AD basic
OOP/AD basic本文是为了配合庄子的论文,做一些OO的基础知识普及工作。当然,即使是OO基础知识,我也不一定有足够的资格来普及,主要目的还是为了相互学习,共同进步。因此,为了便于读者找出漏洞,进行批评和抨击,帮助我进步,我尽量使用朴实无华,简单易懂的语言。用咱老百姓自己的话,讲述老百姓自己的故事。为了突出重点,加强效果,文中不免矫枉过正,提出一些片面极端的看法。为了方便起见...2005-06-18 18:14:02 · 161 阅读 · 0 评论 -
Domain Pollution Resolution 域污染解除
Domain Pollution Resolution域污染解除0. Domain 名词解释首先说明一下 Domain 在本文中的意思。 一书,令 Domain 这个词很火。引起了广泛争论:哪些Logic 应该放在 Business Service Layer, 哪些应该放在 Domain Object里面。这类争论纷纷扬扬,最后通常都上升到哲学高度,世界观高度,认知心理学高度...2005-12-04 18:42:23 · 128 阅读 · 0 评论 -
静态 vs 动态,编译 vs 解释,类型 vs 数据,定义 vs 操作
静态 vs 动态,编译 vs 解释,类型 vs 数据,定义 vs 操作关于静态类型、动态类型、编译语言、解释语言等,有过不少讨论。其间的界限越来越不明显。本文试图提出这样一种判断基准:在程序运行的时候,如果类型定义能够当作(元)数据来操作,那么就是动态的,解释的;反之就是静态的,编译的。(注:这只是一种观察角度和判断标准,而不是定论!这个世界上总有一些打歪靶爱好者,迫使我加上这类的...2005-12-23 14:33:14 · 134 阅读 · 0 评论 -
Hard Code Logic -> Static Type -> Dynamic Type Data
Hard Code Logic -> Static Type -> Dynamic Type Data 在一篇介绍Design Pattern的文章中,我写过这样的看法:Design Pattern的目标就是分离代码中的 变化部分 和 不变部分,我们尽量把 变化部分 单独抽取出来,以便达到 不变部分 的 最大限度的重用。最大限度的重用,也是软件开发技术追求的目标。下面通过一个典...2005-12-24 16:11:00 · 134 阅读 · 0 评论 -
override, overload, covariance
java语法如此多娇,引无数英雄竞折腰。java语法细抠起来,极其诡异,充满了陷阱。尤其是java语法里面的继承问题。论坛里面关于java语法里面的继承问题的讨论,可以说是长篇累牍,罄竹难书。长江后浪推前浪,江上代有才人出。前仆后继,香火不绝。我只是希望下面的内容,a. 一劳永逸地阐述清楚关于java继承的相关问题。能够帮助一些年轻朋友节省宝贵的时间. ...2006-06-21 12:44:49 · 106 阅读 · 0 评论 -
DemeterJ, DJ, AP
根据BirdGu的指导。我搜索了Demeter。发现和以前看到的Adaptive Programming有密切联系。先解释一下名词:AP -- Adaptive ProgrammingDemeter J -- Demeter JavaDJ -- Dynamic Adaptive Programming in Java这些和AOP同样有紧密的联系。Demeter是...2006-07-13 14:02:32 · 155 阅读 · 0 评论 -
VBA竟然支持命名参数 -- 合并多个Excel workbooks为一个Excel文件
在网上找到这么一段 Excel 宏代码。可以合并多个Excel Workbooks (即Excel文件) 合并成一个 Excel文件。http://exceltips.vitalnews.com/Pages/T002409_Merging_Many_Workbooks.htmlMerging Many WorkbooksSummary: Got a whole sl...2008-06-14 17:42:47 · 462 阅读 · 0 评论 -
Logger MVC体系的Lazy Model设计思路
Log4J 和 JDK Logging 属于经典的过度设计的例子。非常复杂,非常难用。:D just kidding. Logger体系是非常灵活强大的。Logger体系也可以看作是MVC结构。其中的View做的最好,Formatter, Outputer,都可以任意组合。Controller部分也不错,能够很好地支持Logger层次结构的控制。[b]Model部分...2006-07-23 13:22:38 · 120 阅读 · 0 评论 -
Faramita语言设计草案0.1 -- 真正的可移动代码(mobile code)
Faramita语言设计草案0.1广告语(不可当真):真正的可移动代码(mobile code),真正的分布式计算名词缩写解释:RPC: Remote Procedure Call 远程调用DSL: Domain Specific Language 领域专用语言AOP: Aspect Oriented Programming 面向方面编程1. 为什么叫Faramit...2010-04-19 12:05:23 · 2009 阅读 · 0 评论