2012年9月5日
摘要: 在第一部分中,我解释了在 Orchard 页面视图模型中我们的需求以及为什么我们认为 dynamic 是这种对象模型的一种非常好的解决方案。现在,我们准备来看一下 Louis’Clay 库,看看怎样利用它创建并使用对象图。在我们开始之前,我想先说明两个问题。1.如果使用动态技术,我们不就失去了智能感知和编译时检查以及所有静态类型语言拥有的一切好处吗?C#是不是变得概念太多了,而想在每一方面都做好,但结果却没有一方面做得好呢?安静,安静,一切都会很好的,放松。现在想想你在.NET里所认识的所有 XML/DOM 方式的AIPs(或者Java里面类似的东西)。除非是在处理代码生成,否则你已经失去了智 阅读全文
posted @ 2012-09-05 22:43 linven 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 当我正尝试建立一种合适的数据结构用于在Orchard中承载视图模型(view model)——由许多不同的实体毫无约束地构建而成的时候,很快就变得非常明显必须要用一种动态结构。我们需要的是一分层结构:一个页面可能包涵一个博客文章列表和一些微件(widgets),而每篇博客文章是由许多部件组成的,比如评论,而评论又包涵作者,作者又包涵头像、等级等等。这就带出了第二个需求:多个实体必须在互不知道对方的情况下共同构建那个对象图(视图模型)。我们预先并不知道这个对象图的形状,且对象图的每个节点都很容易受到后来扩展节点的影响。现在的问题是使用C#的静态类型来解决这些需求是非常不爽的。你可以使用类似XML 阅读全文
posted @ 2012-09-05 22:38 linven 阅读(294) 评论(0) 推荐(0) 编辑
  2010年5月9日
摘要: c++对象缺省初始化行为总结 7.1内存分配方式 内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器 的指令集中,效率很高,但是分配的内存容量有限。(3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete 释放内存。动态内存的生存期由我们决定,使用非常灵活,但问题也最多。7.2常见 阅读全文
posted @ 2010-05-09 17:06 linven 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 堆和栈的区别 一、预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下 几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。 2、 堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。 3、全局区(静态区)(static)—,全局变量和静态变量的存储是放在一 块的,初始化的全局变量和静态变量在一块区域, 未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。 - 程序结束后有系统释放 4、 文字常量区—常量字符串就是放在这里的。 程序结束后由系统释放 5、程序代码区—存放函数体的二进制代码。 阅读全文
posted @ 2010-05-09 16:39 linven 阅读(265) 评论(0) 推荐(0) 编辑