2014年11月21日星期五

.Net编译之AnyCPU - 进阶者系列 - 学习者系列文章 - lzhdim

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
.Net编译之AnyCPU - 进阶者系列 - 学习者系列文章 - lzhdim  阅读原文»

  Visual Studio是一款非常强大的IDE工具,它为我们提供了强大的编码、调试和测试等工具,为我们编好.NET软件提供了强大的支持。

  今天早晨想到了Visual Studio编译模式中的CPU类型选项,所以写一下以记录。

  从图中可以看到配置项和平台项。

  

  点击“配置管理器”,打开配置窗口。

  

  当然,这里的“活动解决方案配置”可以选择“Debug”和“Release”两项,分别对应调试版本和发布版本。这个在代码中我们可以编写调试代码以进行调试。

  在”活动解决方案平台“中,就有”Any CPU””.86””.64“项。

  

  

  这里可以选择的是x86的32位平台和x64的64位平台。

  有时候还会有下列平台:

  

  我们知道,现在的计算机系统分为32位和64位两种,所以对应的就有32位和64位的应用程序。

  打开Windows任务管理器,可以看到32位和64位程序的显示区别(这里我的操作系统是windows 7 Professional 64位 with sp1)。

  

  再来看看Visual Studio中的编译项,这里我们看看Debug和Release的区别。

  

  

  看看输出。

  

  再切换到Release,查看输出。

  

  这里看不出什么问题,文件大小也是一致的。但是在实际的编译过程中,已经有调试项和发行项的区别了。

  

  

  从上面我们可以看出,选择了x86生成的32位DLL和选择了x64生成的64位DLL从文件上是看不出问题来的。

  但是我们都有一点常识,那就是32位程序可以运行在32位和64位的操作系统上;而64位程序只能运行在64位操作系统上。这个是因为CPU的位长而决定的。

  从这里我们可以看出Visual Studio的强大和兼容性了。一般我们在编译的时候就选择”Any CPU“项就可以了,编译器会自动处理,而在实际的运行过程中也不需要考虑32位或者64位的操作系统,同样都能运行(这个因为.Net是一种编译性语言所决定的)。但是有一些Visual Studio 6所编译的程序暂时只能编译出32位的应用程序,所以如果迁移到.NET平台的话,那就需要编译成32位或者64位的编译器来进行编译以适应运行环境的问题了。

Ps.今天是周六,本人来这里墨迹了一下,写此文完全是因为想到了Any CPU项,在最后,祝大家周末快乐。。。


本文链接:.Net编译之AnyCPU - 进阶者系列 - 学习者系列文章,转载请注明。

Velocity魔法堂系列二:VTL语法详解 - ^_^肥仔John  阅读原文»

一、前言                            

Velocity作为历史悠久的模板引擎不单单可以替代JSP作为Java Web的服务端网页模板引擎,而且可以作为普通文本的模板引擎来增强服务端程序文本处理能力。而且Velocity被移植到不同的平台上,如.Net的NVelocity和js的Velocity.js,虽然各平台在使用和实现上略有差别,但大部分语法和引擎核心的实现是一致的,因此学习成本降低不少哦。

最好的学习资源——官网:http://velocity.apache.org/

本系列打算采用如下结构对Velocity进行较为全面的学习,若有不妥或欠缺望大家提出,谢谢。

1. 入门示例

2. VTL语法详解

3. 模板与宿主环境通信

4. 基础配置项

5. 深入模板引擎及调优配置

二、VTL语法详解                        

VTL的语句分为4大类:注释直接输出的内容引用指令。另外由于VTL中以 #$ 作为关键字起始字符,因此输出它们时需要通过转义符 \ 来将其转换为普通字符。

由于内容较多,特设目录一坨!

三. 注释行注释 块注释 文档注释

四. 直接输出的内容

五. 引用变量属性方法

六. 指令#set#if#foreach#include#parse#break#stop#macro#define#evaluate

七、转义符

三、注释                            

1. 行注释

## 行注释内容

2. 块注释

#*
块注释内容1
块注释内容2
*#

3. 文档注释

#**
文档注释内容1
文档注释内容2
*#

踩过的坑 

块注释和文档注释虽然均不输出到最终结果上,但会导致最终结果出现一行空行。使用行注释则不会出现此情况。

四、直接输出的内容                            

也就是不会被引擎解析的内容。

#[[
直接输出的内容1
直接输出的内容2
]]#

五、引用                                

引用语句就是对引擎上下文对象中的属性进行操作。语法方面分为常规语法( $属性 )和正规语法( ${属性} )。在普通模式下上述两种写法,当引擎上下文对象中没有对应的属性时,最终结果会直接输出 $属性${属性} ,若要不输出则需要改写为 $!属性$!{属性}

1. 变量(就是引擎上下文对象的属性)

$变量名, 常规写法,若上下文中没有对应的变量,则输入字符串"$变量名"
${变量名}, 常规写法,若上下文中没有对应的变量,则输入字符串
"${变量名}"
$
!变量名, 常规写法,若上下文中没有对应的变量,则输入空字符串""
$
!{变量名}, 常规写法,若上下文中没有对应的变量,则输入空字符串""

变量的命名规则:

由字母、下划线(_)、破折号(-)和数字组成,而且以字母开头。

变量的数据类型为:

Integer、Long等简单数据类型的装箱类型;

String类型

Object子类

Object[] 数组类型,从1.6开始Velocity将数组类型视为 java.util.List 类型看待,因此模板中可调用 size()get(int index)isEmpty() 的变量方法;

java.util.Collection子类;

java.util.Map子类;

java.util.Iterator对象;

java.util.Enumeration对象。

2. 属性(就是引擎上下文对象的属性的属性)

$变量名.属性, 常规写法
${变量名.属性}, 正规写法
$
!变量名.属性, 常规写法
$
!{变量名.属性}, 正规写法

属性搜索规则:

Velocity采用一种十分灵活的方式搜索变量的属性, 具体如下:

// 假如引用$var.prop,那么Velocity将对prop进行变形,然后在$var对象上尝试调用
// 变形和尝试的顺序如下
1. $var.getprop()
2. $var.getProp()
3. $var.get("prop")
4. $var.isProp()

// 对于$var.Prop则如下
1. $var.getProp()
2. $var.getprop()
3. $var.get("Prop")

没有评论:

发表评论