自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(27)
  • 收藏
  • 关注

原创 减少函数的副作用

目录:一.什么样的方法被称作是有”副作用的”二.如何减少方法的副作用     1.分离修改与查询。     2.将查询分离到一个value object     3 .demeter定律,也叫得墨忒耳定律,迪米特法则。一,什么是副作用     为了方便下面的讨论,有必要对副作用做一个定义。    如果一个函数修改了对象的状态,无论这个修改操作是有意还是无意的,都被称

2012-09-17 17:57:10 840

转载 递归使用lambda

原文地址:http://blogs.msdn.com/b/madst/archive/2007/05/11/recursive-lambda-expressions.aspxThis is a very geeky post. The tiny piece of useful information comes right at the bottom. The rest of it is

2013-09-05 21:00:46 774

原创 初时相等性判断

1.      概述C#中有四种方式用来进行相等性判断,如下:Object.Equals(object value,object value2):会调用第一个参数的实例Equals方法,永远不要重写他。 Object.ReferenceEquals(objectvalue1,value2):比较两个对象的地址,永远不要重写他。 Object的virtualinstance

2013-07-23 22:37:56 493

原创 略讲类型转换

一些常见的问题:1.      为什么C#不能讲字符串直接强制转换为int,而是额外提供一个System.Convert.ToInt32()方法。2.      几种常见转换之间的性能对比。1.      关于溢出,如何检查溢出。 1.基元类型之间的类型转换。需要注意的是,基元类型之间的转换是不会抛出异常的,这一点很重要,譬如int可以转换为byte(溢出也算)而不会抛出任

2013-07-23 21:23:41 540

原创 从IL看强制转换和is,as

1.强制类型转换。 Is和as的作用不多说,下面主要从IL角度来看一下他们的工作原理。请看如下代码:class CastTest { static void Main(string[]args) { objecto = "OK!"; stringstr = (string)o;

2013-07-20 20:19:56 903

原创 手动篡改局部变量签名

请看如下代码:            inta = 123445;            Console.WriteLine(a); 编译(debug版,未优化),运行,输出结果为123445。使用ILdasm来查看其IL指令。如下:.method private hidebysig static void  Main(string[] args) cil managed

2013-07-20 19:14:29 563

原创 细说C#中的字段布局

对于值类型,字段在内存中的顺序与我们定义时候的顺序一致。对于引用类型,加载程序会选择最合适的方式进行布局,至于什么事最合适的方式,后面会说。此外C#中有一个叫做StructLayout的特性,可以显示对字段的布局进行更多的控制。下面来细细说说这个特性。     StructLayout(LayoutKind kind)。    LayoutKind有三个枚举值:Auto,Explicit,

2013-06-08 12:18:15 815

原创 使用默认参数带来的版本问题

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------  默认参数在.net 3.0新增的内容,这是一个非常方便的内容,但是也可能带来意想不到的版本问题!!新建一个程序集DefaultPara,里面的代码如下:namespace DefaultPara{ public class SomeClass {

2013-06-04 11:07:43 482

原创 程序集的加载过程

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------1.windows加载器是如何加载.net程序集的?       首先使用dumpbin命令行工具来分析下要分析的程序集BinarySearchPractice.exe。输入如下命令行即可:     dumpbin -all BinarySearchPractice>d:anal

2013-06-04 08:12:48 824

原创 通过源代码分析C#Dictionary的关键实现

1.Dictionary的Add实现。   在Dictionary内部有几个关键字段,他们是理解Dictionary的关键。这些关键字段如下:   private int[] buckets;   private Dictionary.Entry[] entries;   private IEqualityComparer compare这几个字段的用途稍后讲解。接下来

2013-06-03 20:14:54 152

原创 剖析C#集合初始化器

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------1..一个简单的实例  代码如下: static void Main(string[] args) { List list = new List() { 1,2}; }这段代码使用了集合初始化器,其实他和下

2013-06-03 19:53:09 1859 1

原创 深入剖析委托,匿名委托

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------1.预热 为了更好的理解委托,先预一下热,看看代码清单1和代码清单2. 代码清单1: Func addFunc = (left, right) => left + right; Console.WriteLine(addFunc(12,13));编译,运行,输

2013-06-03 12:22:43 550

原创 委托

1.C#委托与C++中函数指针的关系       从功能实现角度来看,委托和函数指针是一样的。但是C#之所以没有使用函数指针 ,是因为指针是不安全的,所以C#使用了一个叫做委托的东西。委托在内部封装了函数指针,所以使用委托可以达到和函数指针一样的效果。委托的强大之处不仅仅在于此,他还是类型安全的,可验证的。2.委托的内部构造      所有的委托都隐式继承于System.Multi

2013-06-03 10:31:30 80

原创 从元数据角度看抽象方法,接口方法和虚方法的区别。

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------       1,virtual方法        代码如下: public class VirtualClass { public virtual void virtualMethod() { Console

2013-06-03 09:59:03 657

原创 C++:使用const报告链接错误

今天在用c++写程序的时候,蹦出一个未找到符号的链接错误,都是const惹的祸啊。  在cconst.cpp中有如下代码:const int bufsize=1024*4;  在consttest中有如下代码:  externconst int bufsize;  intmain()  {     printf(“%d”,bufsize);}用vs编译链接,结果

2013-05-12 09:17:34 510

原创 从程序员的角度看总线和控制器(-)

一般来说,对于计算机中的总线,都是被多个部件共享的,也就是说A设备和B设备可以共享同一根总线。共享同一根总线,可能会引起一些问题,譬如当信息流过总线时,是应该给A还是给B呢。并且,A和B还要将总线上的信号翻译成自己能够处理的信号,否则A和B就不能处理信息咯。如下图:对于第一种情况,通常引入一个叫做控制器(control)/桥(bridge)的部件,他负责决定将总线上的信息传递给A还是B。对

2013-03-06 19:24:36 774

原创 编译器对基元类型的特殊对待

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------    无论是从语法方面,还是从代码优化方面,编译器都会对基元类型进行特殊的对待。这些特殊对待主要体现在运算,直接量,操作符重载。下面一一讨论。    一,基元类型的运算   在基元类型的运算方面,C#编译器所提供的最大的特性就是,能够根据用户的设置进行溢出检查,当产生溢出时CL

2013-03-05 19:15:00 623

原创 JAVA If-else语句

本文主要内容如下:1.从java字节码的角度去看if…else语句.3.Java虚拟机会对if…else做哪些优化.4.如何让if…else更易读(参考了代码大全和重构) 1.  从java字节码的角度去看if…else语句。相比于汇编指令集,java字节码指令集要更少,更简单。在汇编语言不仅有直接跳转指令,还有间接跳转。同时根据目标指令的偏移量大小,还分为近跳,远跳等等。

2013-02-21 18:44:37 4895

原创 C#哈希表

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------1.      为什么要用哈希表因为哈希表的插入,删除,查找等算法都是常量级的,速度要远远大于基于数组的集合。因此,如果频繁的执行插入,删除,查找操作,应当优先考虑哈希表。2.      使用哈希表时应主要的问题       2.1如果重写了GetHashCode,也必须重写

2013-02-21 18:43:11 1403

原创 JAVA异常处理

Try就像一个警报器,任何进入他领域的陌生人,这个警报器就会发出警报声,然后把陌生人交给catch处理。在try语句中发生了任何异常,try语句块就会把控制权转移给catch语句,如果这个异常与catch语句相匹配,那么控制流程就进入这个catch中,否则,匹配下一个catch语句。在一个方法中可以有多个try语句,虽然很少这样做,同时,一个try语句也可以有多个catch语句。

2013-01-23 13:25:12 479

原创 为什么静态函数不能使用实例字段以及实例函数

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------阅读本文可以获得以下知识点:1.      This 指针的用途2.      实例对象是如何调用实例构造函数以及实例方法的.3.       CLR如何调用一个类的静态方法4.      抽象类到底能不能有构造函数,为什么抽象类不能有public构造函数。 1.

2013-01-10 02:15:21 1110

原创 JAVA奇妙的类型转换

------- android培训、java培训、期待与您交流! ----------注意:下面的所有内容在java和C#中均适用。二者唯一的不同就是java字节码与.NET IL指令的形式。首先看看看一下代码,猜测运行结果是什么,结局肯定出乎你的意料package MyPackage;public class TypeCast { public static void mai

2013-01-08 11:11:53 589

原创 java字节码和.NET IL

------- android培训、java培训、期待与您交流! ----------为了方便讨论,以下统将java字节码与.net IL称为“中间指令”;将java的.class文件和.net的托管模块或者程序集称作“中间模块”;将java虚拟机和.netCLR统称为“执行者”。       编译器将源代码编译成中间语言,然后由某一”执行者”将中间语言翻译并执行成某一具体平台下的

2013-01-07 12:08:05 1334 1

转载 恢复数据库表

同事找回时操作的数据库为oracle 10g , 之前删除方式为delete 不晓得trancate好使不 SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。  SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的  注释:Oracle 仅根据 SCN 执行恢复。  它定义了数据

2012-09-25 19:07:19 212

翻译 程序员,我如何为未来做准备

注:本文摘自杰拉尔德温伯格著的《理解专业程序员》。“请问,你能告诉我,我从这儿该走哪条路么?”“这可要看你想去哪儿了。”那只猫说。“我该去哪儿无所谓——“艾丽丝说。“那样你走哪条路也都无所谓。”猫说。“——只要能走到某个地方就成。”艾丽丝又解释了一句。“你肯定能走到某个地方,”猫说,“这只要走的足够远足够远就成。”

2012-09-13 15:34:53 893

原创 代码的演进以及常见的设计错误

1.         将对象的ID列设置为readonly,同时为它提供一个get访问器。注:虽然我给出的C#代码,但是下面所有的知识点在C++,java中同样适用。首先,让我们先来看一下这个Commodity类。public class Commodity    {        string customerID;        publ

2012-09-13 10:47:47 528

原创 第一部分:深入了解泛型List<T>性能问题

C#  深入理解泛型结构第一部分为了说明List的存储结构,我会简单的和ArrayList做对比,并说出他们各自的性能优缺点。第二部分,着重概述List缓冲区的内存浪费问题,并提出一些意见。第三部分,通过对上面问题的了解,继续讨论关于他的插入,删除,搜索,排序问题,然后确定我们在什么时候考虑使用List,什么时候应该避免使用。 但是,关于List的搜索排序,有许多许多东西要讲,要想

2012-03-17 12:04:42 254

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除