Tag搜索结果

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


模块中的类方法    2008-09-02 09:38
Tag:  向下走 Ruby
Blog:
 梦想风暴
   作为Ruby程序员的你正在编写一个权限管理的模块,受到DSL风潮的影响,你希望用户这样使用它:
class User
  include Permission

  grant :operation, Role::Admin
end

这样的话,意味着grant是一个类方法,于是,按照惯性思路...


Hello, ASM——代码生成    2006-12-10 16:59
Tag:  向下走 ASM
Blog:
 梦想风暴
   这里要说的ASM,并不是指汇编语言,而是一个操作Java bytecode的框架。对于Java平台而言,bytecode便是它的“汇编语言”,所以,ASM这个名字倒也算是实至名归。ASM本身很强大,有不少软件和框架选择它作为底层的实现,比如cglib。在这篇blog中,主要来关注


Javac背后的故事——创建对象    2007-06-30 17:29
Tag:  Java 向下走 ASM
Blog:
 梦想风暴
   要让Java这个面向“对象”的世界正常运作,创建对象就是一项不可或缺的操作。

public class NewMain {
    public static void main(String[] args) {
      &...


ID和Symbol(二)    2007-05-22 18:43
Tag:  向下走 Ruby XRuby
Blog:
 梦想风暴
   从抽象的角度来说,C和Java相比有很多不尽如人意的地方,它的数据和方法不能像Java那样封装在一起。但是,某些地方它的抽象可以做得比Java更好,比如typedef。如果我们要面对的是一个复杂类型,Java的优势尽显无疑,但是如果我们面对的是一个简单的类型呢?比如,只是一个long类型。我们这里要讨论的ID和Symbol就面临着这种问题。

之前,我们已经见过...


生成方法的Wrapper    2007-07-08 23:35
Tag:  向下走 XRuby
Blog:
 梦想风暴
   在《管窥Ruby——方法定义》中,我们曾经讨论过在Java中实现方法定义时,因为Java语言的限制,我们不得不为方法加上了一个Wrapper,让它可以满足接口定义的需要。事实上,XRuby一直就是这么做的,通常Wrapper放在com.xruby.runtime.builtin这个包中,而诸如Array、Hash、String之类的具体实现放在com.xru...


编译与解释    2007-10-10 14:03
Tag:  向下走
Blog:
 梦想风暴
   如果我们想将程序设计语言编写的源代码运行起来,通常情况下,我们有两条路可以走:解释和编译。

计算机能够认识的只是01串,所以,我们编写的源代码要想真正启到应有的作用,必须经过转换,转换成一种可执行的格式,然后,由专门的执行引擎将它运行。

解释,通常是将源代码解析为一个中间形式(比如抽象语法树,AST),然后,经由一个软件的执行引擎执行这个...


用Ruby编写builtin    2007-05-23 19:16
Tag:  向下走 Ruby XRuby
Blog:
 梦想风暴
   或许你已经知道了,XRuby在用Ruby编写builtin。

XRuby很早就开始用Ruby编写builtin,甚至在我加入XRuby的时候就是这个样子了。在这个问题上,比XRuby走得更远的是rubinius,这个项目中用Ruby所写的builtin的比例比XRuby要大得多,事实上,XRuby从中借鉴了不少东西。

其实,我对用Ruby...


管窥Ruby——包含模块    2007-01-15 23:13
Tag:  向下走 Ruby
Blog:
 梦想风暴
   在《管窥Ruby——类层次结构》中,我们已经见识过Ruby是如何实现包含一个模块的,不过,那里的侧重点不同,我们忽略了很多东西。
让我们回顾一下那段代码:
void
rb_include_module(klass, module)
    VALUE klass, module;



管窥Ruby——类层次结构    2006-10-30 19:45
Tag:  向下走 Ruby
Blog:
 梦想风暴
   关于一个RClass结构,我已经写了几篇blog来讨论其中的内容,没办法,谁让Ruby是一种面向对象的程序设计语言呢!类是核心的概念之一,而且很多看似魔术的东西,就是靠这些基础的东西支撑起来的。前面的讨论,我们已经见识过方法和


管窥Ruby——类的变量(更新版)    2007-09-19 09:13
Tag:  向下走 Ruby
Blog:
 梦想风暴
   《管窥Ruby——类的变量》写在去年,写成之后便更新了一次,因为最初的描述存在一些偏差。即便如此,jxb8901依然指出了其中的一些不足。最近,dennis-zane再次提出了这个问题。回过头来仔细品味,确实有些地方写得不是很到位,索性把它重新写过。

管窥Ruby——类的变量
...


管窥Ruby——方法缓存    2007-01-04 23:51
Tag:  向下走 Ruby
Blog:
 梦想风暴
   Charles Oliver Nutter,JRuby的开发者,最近一直致力于解决JRuby臭名昭著的性能问题,在他的一篇blog中,他谈到了动态调用的问题:
Making Dynamic Invocation Fast: An Idea? 谈到


用Annotation标记Ruby方法    2007-07-30 20:23
Tag:  向下走 XRuby
Blog:
 梦想风暴
   JRuby最近在讨论是否要支持Java 5。

JRuby邮件列表的讨论
http://www.nabble.com/Moving-to-Java-5--tf4131923.html

InfoQ报道



Javac背后的故事——空类    2007-06-18 23:35
Tag:  Java 向下走 ASM
Blog:
 梦想风暴
   程序员最熟悉的是源代码,但是要让程序真正的发挥功效,少不了编译器的帮助。javac的作用就是将Java代码编译为JVM指令。由于Java语言和JVM同出一门,所以,稍微熟悉一下,我们便不难发现,二者几乎是直接对应的。当然,为了简化代码的编写,javac除了直接翻译之外,还暗地里帮我们做了不少工作,我们从最简单的情况看起。

public class Test {...


一个多核程序的优化方法小结    2007-04-04 20:43
Tag:  向下走
Blog:
 梦想风暴
   最近一个月时间,周围的所有人在做的是一件事,优化。让一个物理模拟的程序尽可能快的运行在多核平台上。一个月前,知道要做什么,但心里完全没有 底,一个月后,坐在计算机前看着程序运行的录像时,心里还是挺有成就感的。当然,优化是一条无止境的路,即便程序做到目前的状态依然有很大的提升空间,这 里只是简单总结一下之前用到的一些方法。

硬件
CPU
说 过


优化XRuby的方法调用    2007-06-12 17:50
Tag:  向下走 Ruby XRuby
Blog:
 梦想风暴
   方法调用是一种在Ruby运行过程中常见的不能再常见的行为了,据说即便是一个空的Rails应用,也有十万次以上的方法调用。所以,对于XRuby来说,方法调用的性能优劣会对Ruby程序运行产生很重要的影响。方法调用分为方法查找和执行两个部分,其中,方法查找的主要优化手段就是方法缓存,这个问题我已经在《管窥Ruby——方法缓存》解释过了。这里来看看XRuby中对方...


等在循环内    2007-03-06 21:33
Tag:  向下走 wait 多线程
Blog:
 梦想风暴
   《Effective Java》的第50个条款,不要在循环外调用wait。其中告诉我们,wait的标准用法如下:

synchronized (obj) {
    while (<condition does not hold>)
     &nbs...


ID和Symbol(一)    2007-05-21 21:17
Tag:  向下走 Ruby
Blog:
 梦想风暴
   ID和Symbol是Ruby中同字符串相关的两个东西,他们的存在是为了一个共同的目的:替代字符串。因为字符串的比较通常代价不菲,以ID和Symbol代替字符串可以提高字符串比较的性能,所以,用到字符串比较的地方都可以选择用ID或是Symbol作为替代品,比如,做Hash表的键值。不同的是,ID用在C层次,而Symbol用在Ruby层次。

下面是ID的定义:...


添加方法的小魔术    2007-05-14 22:58
Tag:  向下走 Ruby
Blog:
 梦想风暴
   Ruby中有很多钩子,可以用来监控系统中的各种事件,比如,添加一个新的方法时,会调用类的method_added方法,下面是一段示例代码:
class A
    def A.method_added symbol
        p symbol...


整数对象    2006-11-27 23:54
Tag:  向下走
Blog:
 梦想风暴
   整数,对于程序员来说,再熟悉不过了。在那个C/C++年代,很少有人认为在程序中使用整数是个负担。
当Java走入人们的生活,“Everything is an Object”成了街知巷闻的口号。为了让这个口号叫得更加彻底,于是,在Java里,有一个类对应着整数,这样,每个整数便被对应为一个对象。后来,为了更方便的在二者之间进行转换,C#把autoboxing和unboxing...


Hello, Java Compiler API    2006-12-12 22:06
Tag:  Java 向下走
Blog:
 梦想风暴
   Java 6发布了,想必很多人还不没有来得及玩熟Java 5,很多人还在与1.4打交道,稳定归稳定,发展是不能停止的。Java 6并不像Java 5那样在语法上下了很大的功夫,更多的力气用在丰富API上。其中有一项是我比较感兴趣的,就是Compiler API,也就是JDK为我们提供的访问Java编译器的接口。下面便是一个使用Compiler API编译Java程序的例子。


有趣的属性赋值    2007-04-11 21:20
Tag:  向下走 Ruby
Blog:
 梦想风暴
   beanworms问了一个有趣的问题,下面这段Ruby代码的输出是什么?为什么?

class A
    def m=(value)
        @m = value
     ...


Hello, Java Compiler API    2006-12-12 22:06
Tag:  Java 向下走
Blog:
 梦想风暴
   Java 6发 布了,想必很多人还不没有来得及玩熟Java 5,很多人还在与1.4打交道,稳定归稳定,发展是不能停止的。Java 6并不像Java 5那样在语法上下了很大的功夫,更多的力气用在丰富API上。其中有一项是我比较感兴趣的,就是Compiler API,也就是JDK为我们提供的访问Java编译器的接口。下面便是一个使用Compiler API编译Java程序的例子。...


管窥Ruby——类的变量    2006-10-17 22:22
Tag:  向下走 Ruby
Blog:
 梦想风暴
   UPDATE
这篇blog的叙述存在一些偏差,所以,又重新写过:《管窥Ruby——类的变量(更新版)》

变量和方法是面向对象难以割舍的两个重要组成部分。在《


栈的增长方向    2007-03-23 22:53
Tag:  向下走
Blog:
 梦想风暴
   如何判断栈的增长方向?

对于一个用惯了i386系列机器的人来说,这似乎是一个无聊的问题,因为栈就是从高地址向低地址增长。不过,显然这不是这个问题的目的,既然把这个问题拿出来,问的就不只是i386系列的机器,跨硬件平台是这个问题的首先要考虑到的因素。

在一个物质极大丰富的年代,除非无路可退,否则我们坚决不会使用汇编去解决问题,而对于这种有系...


锁住数据    2007-02-08 22:52
Tag:  向下走 多线程
Blog:
 梦想风暴
   这几天在写多线程程序。
有了一定的开发经验之后,写程序主要是查找API用法的过程。对于多线程来说,主要就是线程创建、同步互斥这些基本API的用法。互斥主要是用锁,我查了一下用Mutex做锁的方法,基本上是看一下用法就知道怎么用了。不过,写代码的时候,突然发现一个很别扭的地方,我不知道自己的锁该锁在哪里了。想来想去,原来是我找到那几篇教程的误导。
通常多线程教程中,给人的...


扩展Ruby    2006-09-24 23:04
Tag:  向下走 Ruby
Blog:
 梦想风暴
   这个例子来自《Programming Ruby》(第二版)的第21章《Extending Ruby》,实现的功能类似于下面这段Ruby代码:
class MyTest
  def initialize
    @arr = Array.new
  end
  def add(obj)
    @arr.push(obj)...


管窥Ruby——方法定义    2006-11-06 21:53
Tag:  向下走 Ruby
Blog:
 梦想风暴
   在C/C++中,函数虽然不像functional语言中一样,拥有first class的地位,但函数指针的存在,还是让它在一些表达上显得很简洁。在C层次上,定义一个Ruby方法的API是这样的:
void rb_define_method( VALUE classmod, char *name, VALUE(*func)(), int argc )
它为类或模块(cla...


管窥Ruby——Allocator    2006-11-02 21:35
Tag:  向下走 Ruby
Blog:
 梦想风暴
   Allocator,熟悉编程的人一看到这个名字,自然就会把它与内存分配联系起来,再近一步,它通常是与对象初始化联系到一起。在《对象的生命》中,我讨论过对象初始化的过程,将它分为“分配内存”和“初始化对象”两个动作,Allocator主要就是承担分配内存的工作。
如果以Java之类可以合分配与初始化于一体的语言来实现Ruby


体验YARV    2007-02-02 23:21
Tag:  向下走 Ruby YARV
Blog:
 梦想风暴
   YARV,Yet Another Ruby VM,又一个Ruby VM。
其实,我觉得它的名字算不上准确,因为原来Ruby算不上拥有VM。当然,按照作者的本意,这个名字不会长久的存在下去,因为项目如果成功,它就会成为Ruby的一部分,不成功的话,没人会记住它。事实上,它正一步步走向成功,因为现在它已经被合并到Ruby的主干代码中。
我不想苦苦等待YARV随着发行版来到我...


管窥Ruby——方法调用    2006-11-21 23:56
Tag:  向下走 Ruby
Blog:
 梦想风暴
   在进入正题之前,先声明一下,这里讨论的是方法调用的结构,而非方法执行的过程。
我一直觉得了解Ruby内部结构的一个很好的入口点是Ruby的API,讨论方法定义的时候,我们便是从Ruby API起步。同样,这次先来看看方法调用的Ruby API。在方法调用这个问题上,Ruby显得特别的大方,一口气提供了四个API:


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

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

了解更多什么是Tag »

  • 搜索Tag
  •