自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

转载 谈表达式树的缓存(5):引入散列值 (2)

  回想起第一种做法,我们使用最原始的方式,使用字典来存储对象,不过我们需要拼接出一个庞大的字符串,因为它具有“唯一性”。但是其实从那时开始,我们就已经走了一条弯路。在.NET Framework中,一个对象如果要作为字典的“键”,难道一定要是字符串吗?很显然,答案是否定的。事实上,任何类型的对象都可以作为字典的键,而字典认为两个“键”对象相同依靠的是对象的GetHashCode方法和Equals

2009-05-16 12:26:00 344

转载 谈表达式树的缓存(5):引入散列值(1)

  到目前为止,我们已经实现了三种缓存方式:首先我们设法构建唯一字符串,但是由于它的代价较高,于是我们使用了前缀树进行存储;又由于前缀树在实际操作中所花的时间和空间都有不令人满意之处,我们又引入了二叉搜索树。那么二叉搜索树又有什么缺点呢?其实前文已经谈到过了,那就是从理论上来说,它的时间复杂度相对前两个要高,在最坏情况下将会出现O(m * log(n))的时间复杂度——每次比较两个前缀树需要耗费O

2009-05-16 12:24:00 332

转载 谈表达式树的缓存(4):使用二叉搜索树(AVL树)

 上一篇文章中谈到的前缀树实现方式,时间复杂度从理论上来讲已经达到了最优,而空间复杂度理论上也可以做到较优。但是理论和实际是有差别的,而对于上文前缀树的实现来说,这两方面并不是非常理想:时间:前缀树时间复杂度为O(m)的前提是每次哈希表查找操作的时间复杂度为O(1),不过这个O(1)与一次数值比较相比,从性能上来说还是有比较明显的差距。 空间:前缀树空间复杂度较优的前提是“精细”地

2009-05-16 12:22:00 368

转载 谈表达式树的缓存(3):使用前缀树

在上一篇文章里我们设法将前缀树构造为一个唯一的字符串,然后使用字符串作为key缓存在字典中。这个想法非常直接,做法也不困难(在遍历时记录详细信息便可)。不过事实上,老赵在思考表达式树的缓存问题时,这种字符串拼接的方式只存在于脑海当中,而上文的实现是为了这一系列文章的完整性而特地编写的。这是因为它的缺点较为明显,正如上文所述,字符串拼接操作较为耗时耗资源,且很容易生成一个长度可观的字符串(并非不能优

2009-05-16 12:20:00 309

转载 谈表达式树的缓存(2):由表达式树生成字符串

  谈到使用表达式树作为key进行缓存,您脑海中最早浮现出来的解决方案是什么?老赵看来,大部分朋友的第一反应自然就是将作为key的表达式树,使用一定规则生成一个字符串。简而言之,这个生成字符串的规则F需要能够保证: 在同一个缓存空间内,同样的表达式树能够生成相同的字符串。 在同一个缓存空间内,不同的表达式树生成不同的字符串。  似乎有些罗嗦,朋友们明白便是。其中“在同一个缓存空

2009-05-16 12:19:00 299

转载 谈表达式树的缓存(1):引言

 表达式树(Expression Tree)是.NET 3.5中引入的一种表达方式。表达式树的运用十分广泛,可以直观地表现出各种“数据”,甚至“逻辑”和“行为”。再者,表达式树是强类型的,因此合理地使用这个新特性可以让代码编写变得优雅,方便。一个最简单而常见的例子便是,某些朋友目前就已经喜欢使用表达式树来代替传统的ByXxx方法,尤其是在访问一些直接支持表达式树的数据源时(例如IEnumerabl

2009-05-16 12:17:00 285

转载 用lambda构建ORM查询语句

用lambda构建ORM查询语句 本文介绍如何解析lambda表达式来获取一个满足条件的查询语句。先看个截图  通过设置实体对象Article_Content的查询表达式,就可以获取对应的参数化SQL语句,使用起来很方便,减少了代码的书写,同时提高了安全性。 本文需要了解的基础知识有:lambda表达式 Expression表达式树 扩展方法

2009-05-16 12:10:00 1448

转载 jQuery入门[6]-动画

 jQuery直接各种动画,常见的被封装成各种方法,如show()/hide()/slideDown()/fadeIn()等等,参见:Effects最灵活的则属于animate( params, [duration], [easing], [callback] )方法,参见:animate 其中params为动画的运行结果,可以为各种样式属性,jQuery将在duration指定的时间内,将对象的

2009-04-29 10:36:00 268

转载 jQuery入门[5]-AJAX

 jQuery为AJAX提供了非常丰富的支持,参见Ajax其中最基本当属$ajax(),通过不同的参数,这个方法可以录活支持各种AJAX应用场景。如:$.ajax({url: "test.html",cache: false,success: function(html){$("#results").append(html);}});完整参数列表参见:options

2009-04-29 10:34:00 206

转载 jQuery入门[4]-链式代码

 jQuery另一个很令人惬意的地方是,一般的代码都是一行一行写,jQuery的代码可以一串一串写。这一点,在前面的文章中已经介绍过了。直接来一个Demo:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->DOCTYPE html

2009-04-29 10:30:00 243

转载 jQuery入门[3]-事件

 jQuery对事件的支持主要包括:bind()--为事件绑定处理程序,如: $("p").bind("mouseenter mouseleave", function(e){ $(this).toggleClass("over"); });unbind()--注销绑定在事件上的处理程序,如:$(document).unbind(ready);,如

2009-04-29 10:28:00 307

转载 jQuery入门[2]-选择器

 jQuery之所以令人爱不释手,在于其强大的选择器表达式令DOM操作优雅而艺术。jQuery的选择符支持id,tagName,css1-3 expressions,XPath,参见:http://docs.jquery.com/SelectorsDEMO:Code highlighting produced by Actipro CodeHighlighter (freeware)

2009-04-29 10:17:00 302

转载 jQuery入门[1]-构造函数

 体积小(v1.2.3 15kb)◦丰富的DOM选择器(CSS1-3 + XPath) ◦跨浏览器(IE6,FF,Safari,Opera)◦链式代码◦强大的事件、样式支持◦强大的AJAX功能◦易于扩展,插件丰富jQuery的构造函数接收四种类型的参数: jQuery(expression,context) jQuery(html) jQuery(elements) jQuer

2009-04-29 10:15:00 283

空空如也

空空如也

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

TA关注的人

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