Tag搜索结果

Tag:向上走       Technorati的“向上走”Tag 站内全文搜索“向上走”


Hello, XWork Interceptor    2004-12-20 21:40
Tag:  向上走
Blog:
 梦想风暴
   XWork是一个通用的Command模式框架,对它的关注始于我对Interceptor结构了解的需要。对于起步而言,Hello World级的东西总是最为快捷的选择。 在XWork中,Action用以处理核心的逻辑,下面就是一个: HelloAction.javaimport com.opensymphony.xwork.Action; public class HelloA...


程序设计语言的表达——内部DSL    2008-03-25 22:10
Tag:  向上走 DSL
Blog:
 梦想风暴
   使用Java实现内部领域特定语言
One Lair and Twenty Ruby DSLs
Implementing an Internal DSL

上面几个文章都是关于DSL的,不过,在这里,我并不是太关心DSL的话题,我更感兴趣的是代码的写法。按照这几篇的分类方法,直接用程序设计语言编写的DSL算是内部DSL,也就是说,所谓内部DSL...


EJB设计马后炮    2005-10-23 23:00
Tag:  向上走
Blog:
 梦想风暴
   在without EJB之后,EJB在开明人士的眼中已经快成了人人喊打的过街老鼠。我不妨也干一回落井下石的事,从设计的角度,品评一下EJB。鉴于without EJB嘹亮的声音,这篇blog也算是一篇读后感,故称马后炮。 谈到设计,最先在头脑中出现的Robert Martin的《敏捷软件开发》,这本Jolt大奖作品应该是给我冲击最大的几本书之一,它为我打开软件设计的大门,对我而言...


Hello Hivemind    2005-06-09 23:00
Tag:  向上走
Blog:
 梦想风暴
   Apache作为一个著名的开源组织,几乎涉足了Java企业级应用的方方面面,小到基本的类库,大到完整的应用。美妙的DI容器之争又怎么会少得了它呢!Hivemind便是Apache给我们的答案。
 


《Unix程序设计艺术》之身边的例子——透明性    2006-04-13 22:46
Tag:  向上走
Blog:
 梦想风暴
   《Unix程序设计艺术》的第六章讨论的是透明性,站在开发人员的角度,我愿意把它理解为将程序内部的信息暴露出来,便于外部观察。
最初和暴露内部信息打交道是开发服务器端应用的那会儿。对于开发服务器端应用来说,很重要的一点就是要对程序的行为进行监控,所以,日志是个不二之选。在开发的最初阶段,程序极其不稳定,幸好我们有日志帮忙,把程序的运行状态一一记录下来。通过只要分析日志,我们基本...


Hello, Weka    2008-03-11 16:16
Tag:  向上走 weka 数据挖掘
Blog:
 梦想风暴
   Weka,是一个用Java编写的数据挖掘软件。数据挖掘,从字面上来看,它是一个从数据中找寻有用信息的过程,不过,它涉及的内容很多,所以,这里借用“分类”这一面来说事。

分类,从名称上来看,再简单不过了,给你一样东西,给它分个类。你如何知道怎么分类呢?显然,这是基于你已有的经验。对于计算机而言,这种经验从何而来呢?只有让人来告诉它,也就是...


思考IoC    2005-05-29 23:32
Tag:  向上走
Blog:
 梦想风暴
   当人们面对复杂问题时应该何去何从?一种最为常用解决问题的方法便是分而治之,也就是将一个复杂问题分解为可以解决的小问题。这种思想在软件开发中得到了大量的应用,在软件架构方面的表现之一就是分层的思想。关于分层优劣的讨论,Martin Fowler在《企业应用架构模式》的第一章进行了深入的论述。
面对具体应用时,我们应该如何设计层次呢?DIP(Dependency Inversio...


求导与抽象    2005-05-11 23:00
Tag:  向上走
Blog:
 梦想风暴
   这两天写了一个边缘提取算子,用来从图像中提取边缘。写程序没用多长时间,我把大部分时间奉献给了学习过程,至少我得知道边缘提取的原理大概是个什么样子。 在数字图像处理中,很多时候处理的都是灰度图像。理想的情况下,相邻两个点的灰度值不同,我们就可以认为找到了边缘,但实际情况往往没那么简单。简单一点的情况是,两个部分边缘的灰度是逐渐过渡的,也就是说在这个区域内,相邻点的灰度都是在变的,那...


思考微内核    2005-07-31 22:17
Tag:  向上走
Blog:
 梦想风暴
   关于微内核,我最早印象来自于操作系统。Andrew Tanebaum同Linus Torvalds的那场著名论战将微内核这个名词深深的印入了我的脑海,不过说实话,在很长一段时间内,我只是记住了这个词而已,一直没有弄清楚微内核究竟是怎样一回事。再次听说微内核是在工作以后,不过是在一个完全不同于操作系统的领域中,很多人都在说自己开发的系统是微内核的。同样,我也只是记住了名词,但是脑中却...


有状态的程序    2006-02-18 15:31
Tag:  向上走
Blog:
 梦想风暴
   我现在工作的一个程序是读入Video(或连续帧图像),然后逐帧进行处理。当前帧处理的结果需要依赖于之前的处理结果,所以,这个程序的状态逐步累加的。记得刚开始开发这个程序的时候,由于程序不稳定,经常出现崩溃的现象,为了找到原因所在,我们只有选择从头开始运行,虽然可以从中间开始运行,但由于状态累加的不同,bug很可能无法重现。那是一段相当逍遥的日子,因为当时的程序是Matlab版本,处...


Hello, Lucene    2008-01-07 13:20
Tag:  向上走 Lucene
Blog:
 梦想风暴
   Lucene是什么?下面是官方回答。

Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java.

简而言之,它是用来做搜索的库。提及搜索,我们的思绪就会情不自禁飞到串匹配上。没错,串匹配确实是...


IoC与DI    2005-12-30 22:46
Tag:  向上走
Blog:
 梦想风暴
   一个朋友发了封mail问了几个问题,其中的一个是关于IoC和DI的:
Inversion of Control和Dependency Injection 是什么关系,我认为两个词代表的是同一个意思,只是两种不同的表示,对吗?
下面是我对这个问题的一些理解。
准确的说,IoC和DI并不相同,这一点从字面上就可以看出,否则,它们可以叫一个名字。^_^
理...


程序设计语言的表达——一个例子    2007-11-07 21:27
Tag:  向上走
Blog:
 梦想风暴
   写程序的时候,经常遇到这样的代码。处理之前,先检验一下一些参数,之后再进行处理。下面是一段这样的Java程序。

public class Service {
  public void approve() {
    Target[] targets = getTargets();
&nbs...


程序设计语言的表达    2006-09-06 23:00
Tag:  向上走
Blog:
 梦想风暴
   我们经常会遇到连接字符串的需求,比如在服务器端记录日志的时候,描述的部分基本上一致,差别在于随运行状态,需要记录变量的内容不一致。
在Java中,我们可能会这样做:
StringBuffer sb = new StringBuffer("prefix:");
sb.append(logRecord);
sb.append(&q...


《Unix程序设计艺术》之身边的例子——文本化    2006-04-11 22:12
Tag:  向上走
Blog:
 梦想风暴
   《Unix程序设计艺术》是一本讲解Unix文化的书。作者——开源运动的发起者Eric Raymond将多年沉浸于Unix经验一一道出,对于后来者理解程序设计中一些不变的东西大有裨益。该书的第二部分讲解Unix程序在设计上的一些考虑。在我看来,这里所讲的一些设计原则,更多是站在程序的外部进行观察,比如建议程序与外部接口文本化,比如将程序的内部信息以恰当的形式暴露出来以便外部观察等等。...


知识的积累    2004-12-05 08:03
Tag:  向上走
Blog:
 梦想风暴
   最初认识Darwin的时候,我还是个没毕业的新手。那时,我在公司做毕业设计,题目就是用C++对部门内已有的一套C的库进行封装。那套库就是Darwin开发的,这次封装工作也是在他的领导之下进行的。当时,我对C++有着说不清的好感,心里认定那是成为高手的必经之路,因此很乐于参加到这个工作之中。Darwin当时的C语言已经达到了相当高的水准,而对于C++了解十分有限,大概比“C with...


《Unix程序设计艺术》之身边的例子——可移植性    2006-04-23 20:04
Tag:  向上走
Blog:
 梦想风暴
   《Unix程序设计艺术》的第十七章讨论的是可移植性,也就是我们常说的跨平台。这里的平台,包括硬件平台和软件平台。 或许是初学编程时受一些书的影响,在相当长的一段时间内,可移植性在我心目中是一个相当神圣的词汇,甚至理所当然的认为一个好的程序就应该跨平台,所以,偶尔写程序用到一些判断平台特征的#ifdef,自己都会觉得很了不起。 事实远没有理想那样美好。可移植性固然是一个很好的特征...


当Ruby遇到二进制    2006-07-17 00:32
Tag:  向上走 Ruby
Blog:
 梦想风暴
  
最近在用C写一些处理图像的程序。如果你尝试一下你就会知道调试这种程序会是怎样的痛苦,它的复杂在于大数据量。比如一个简单的八邻域处理,就需要该点周围八个象素的值。在C的开发环境下,查看变量是一种恶梦,我需要一个一个把所有变量敲进去,而其差异仅仅是地址上的差1。这时候倒是有点怀念Matlab了,至少在那里面,按照矩阵处理的图像,可以很容易的查看。于是决定写一个小工具,帮自己一把...


我眼中的OO特点    2006-05-10 21:33
Tag:  向上走
Blog:
 梦想风暴
   我们编写程序的目的是为了解决现实世界中遇到的问题。在我们受到的教育中,解决问题的一种途径是分而治之,将复杂的问题分解为可以解决的小问题,对应到软件开发中,我们习惯将其称为分模块。不过,在不同人的眼里,模块却是不同的,所以,我们对模块有了不同的叫法:子系统、组件、函数……。OO也是一种划分方法,只不过在这里,我们用了“对象(Object)”。 划分模块的一种原则是,高内聚低耦合。高...


Hello Velocity    2004-10-27 20:56
Tag:  向上走
Blog:
 梦想风暴
   Velocity是Apache提供的一种基于Java的模板引擎。先来看个Hello级的例子,体会一下Velocity的威力。它完成的功能就是向代码中设置的名字说一声“Hello”。先是源代码:HelloVelocity.java。import java.io.BufferedWriter;import java.io.OutputStreamWriter; import org.a...


XML与堆栈    2004-10-12 16:02
Tag:  向上走
Blog:
 梦想风暴
   最近在研究XML解析,我的任务是将XML映射成内存对象。我知道你会告诉我有JAXB和Castor等等将XML绑定到对象的实现。那些技术是不错,而且可以用DTD或者Schema生成代码,省去大量的工作,但它们并不是我需要的,其根本原因在于效率。 XML绑定技术生成的代码往往是针对XML本身的,而非我的应用。比如,在XML中有一项id,在我的应用中,它可能会代表不同的含义,而使用生成的...


逻辑耦合    2006-04-26 21:17
Tag:  向上走
Blog:
 梦想风暴
   关于设计,“高内聚,低耦合”一直是我心中的一个核心原则。
从前谈起耦合的话题,脑子首先闪现的是数据之间的耦合。最常见的便是所谓的全局变量,好好的一个变量,因为有太多地方访问,造成的结果就是我们无法得知自己无法准确的预期程序的行为,因为程序有副作用。我在《有状态的程序》中说过,自己对于有副作用的程序并无好感。最近因为技


鱼与熊掌    2004-11-23 22:29
Tag:  向上走
Blog:
 梦想风暴
   在《XML与堆栈》的最后,我提到“由于牵扯到reflection的使用,也许Commons Digester也会存在一些性能问题”。在写了一些代码之后,我想看看通过调整,性能可以有怎样的提高。 Commons Digester需要的是一个“模式(pattern)/规则(rule)”的组合,模式描述了处理中遇到的标签,规则则说明了怎样处理这个标签。Commons Digester提供...


当Java遭遇OUT参数    2004-11-08 23:52
Tag:  向上走
Blog:
 梦想风暴
   用Java写一个交换两个数的程序,这还不简单,下面是很容易写出的一个:    void swap(int a, int b) {        int temp = a;        a = b; &n...


虚假的泛型    2005-08-11 23:00
Tag:  向上走
Blog:
 梦想风暴
   一位网友引发了一次关于泛型数组创建的讨论,大胃给出了自己的回答。我也想就这个问题讨论一下,因为这也是我曾经遇到过的一个问题。


由Reflection想到的    2005-05-14 09:42
Tag:  向上走
Blog:
 梦想风暴
   Java为什么能够支持Reflection?答案是Java运行时仍然拥有类型信息,它包含了这个类一切:它有哪些字段、哪些方法,各是何种保护级别等等,还有这个类依赖于哪些类。在Java中,类信息以对象的形式存放,这些对象是一种元对象,它们的类型就是Class。拥有了这些信息,无论是动态创建对象还是调用某些方法都是轻而易举的。在C++中,通过RTTI(运行时类型识别),我们也可以知道类...


初识Python    2005-02-28 11:00
Tag:  向上走
Blog:
 梦想风暴
   当我学习一门新的程序设计语言时,我期待入门教程具有如下特征:
* 可以在尽可能短时间内读完
* 读起来很舒服
* 读完后,可以对这门语言有一个相对完整的认识
《A Byte of Python》(中文版《


走近SICP    2005-01-04 19:12
Tag:  向上走
Blog:
 梦想风暴
   元旦后上班的第一天,放假前在第二书店订购的书终于到了,其中一本是《Structure and Interpretation of Computer Programs》(中文版《计算机程序的构造与解释》。 JavaEye上关于函数编程的讨论让我大开眼界。我是科班出身,也写了一段时间的程序,了解的东西也不算太少,居然不知道这里别有洞天。在这..............


对象的生命    2004-10-23 17:25
Tag:  向上走
Blog:
 梦想风暴
   如同人有生老病死一样,对象同样也有自己生命周期。如果我们将生前和死后也算作对象的状态,那对象一生中将经历两次重大的状态转换。“创建对象”事件将对象混沌的生前状态带入自己的生命旅程,而“销毁对象”时间则宣告对象结束自己生命之旅,成为死后的状态。 在C/C++等传统程序设计语言中,我们——程序员凭借一己之力控制着对象的生杀大权。不错,我提到了C——我们认为与面向对象无关的语言。面向对...


Hello Velocity之后    2004-10-27 20:38
Tag:  向上走
Blog:
 梦想风暴
   模板技术的发明充分反映了程序员的懒惰,因为模板必然会产生大量类似的东西。模板技术就是将相同的东西一次完成,不同的东西每次写一下,然后二者合并产生了一个所谓的“新”东西。相同的,我们称之为“模板”(Template),不同的,称之为“数据模型”(Data Model),让二者合并的就是“模板引擎”(Template Engine),而“新”东西就是我们的“目标”(Target)。 D...


Tag(标签)是一种更为灵活有趣的日志分类方式。

您可以为每篇日志添加一个或多个Tag(标签),然后您可以看到BlogBus上所有和您使用了相同Tag的日志,并且由此和其他博客用户产生更多的联系。不仅如此,我们还与Technorati合作,把您的Tag发送到全球Blog空间,和全世界的人们共同分享。

了解更多什么是Tag »

  • 搜索Tag
  •