代码改变世界

[置顶]基于委托的异步编程实现

2015-04-24 16:35 by jiejiep, 1095 阅读, 2 推荐, 收藏, 编辑
摘要:神麽是异步调用 在主线程中异步调用的方法不在主线程中执行,而是在另一个辅助线程中与主线程代码并行执行。给出一段示例代码: 当我们调用UploadPictureAsync方法时,图片尚未上传完成,我们就可以在控制台输出提示信息:“图片开始上传”。 /// /// 异步上传图片 /// /// public voi... 阅读全文

理解C#中的闭包

2014-04-30 12:33 by jiejiep, 16571 阅读, 5 推荐, 收藏, 编辑
摘要:闭包的概念 内层的函数可以引用包含在它外层的函数的变量,即使外层函数的执行已经终止。但该变量提供的值并非变量创建时的值,而是在父函数范围内的最终值。 闭包的优点 使用闭包,我们可以轻松的访问外层函数定义的变量,这在匿名方法中普遍使用。比如有如下场景,在winform应用程序中,我们希望做这么一个效果 阅读全文

Mongodb索引

2012-11-30 12:55 by jiejiep, 2463 阅读, 0 推荐, 收藏, 编辑
摘要:引言 从今年年初开始接触Mongodb,就一直被如何建立最合理的索引这个问题折磨着,没办法,应用中的筛选条件太复杂。而关于Mongodb索引方面的中文资料并不多,所以只能在google上找找资料,然后就匆忙的开始用了。成长很曲折,也充满了惊喜,结合最近读的《Mongodb实战》,这里把一些经验和大家分享一下。基础语法此处略过,可参见《Mongodb权威指南》。索引结构Mongodb中的索引,是按照B树结构来存储的。B树有2个特点:第一,它能用于多种查询,包括精确匹配(等于)、范围条件($in, $lt,$lte,$gt,$gte)、排序、前缀匹配和仅用索引的查询;第二,在添加和删除键的时候,B 阅读全文

深入理解Delegate(委托)

2012-02-09 16:26 by jiejiep, 1390 阅读, 2 推荐, 收藏, 编辑
摘要:委托,这个在 net framework 中引入的新概念,实际上在 c/c++ 中能够找到原型,即函数指针,如 c 运行时的 qsort 函数,该函数获取指向一个回调函数的指针,以便对数组中的元素进行排序。众所周知,指针变量中存放的是一个地址,这个地址不包含回调函数的任何信息,比如参数个数、参数类型、返回值,这样编译器就无法对传入的参数是否合法进行判断,如果非法,只能在运行时报错。也就是说,非托管C/C++回调函数不是类型安全的。委托,则能保证回调函数的类型安全,如果传入的回调函数不合法,编译就不会通过。 委托的声明:public delegate void DemoDelegate(s... 阅读全文

分页控件 AspnetPager

2011-10-29 19:54 by jiejiep, 495 阅读, 0 推荐, 收藏, 编辑
摘要:--在我们的项目中,通常会要对查询结果进行分页展示,以提高系统的响应速度,减轻服务器负荷。ASP.NET提供的 Gridview 控件虽然提供了分页,但是需要将查询的所有数据都提取绑定到Gridview后,才能显示分页工具栏,这样当数据量很大时,性能就会下降很多。用户控件 AspnetPager 应运而生。它需要与分页存储过程联合使用。--AspNetPager 使用方法:1. 将该用户控件放入工程,然后在aspx页面中添加引用。添加引用代码:<%@RegisterSrc="~/Parts/AspnetPager.ascx"TagName="AspNetPa 阅读全文

SqlDependency建立数据库表依赖实现自动刷新缓存

2011-09-04 23:10 by jiejiep, 1618 阅读, 0 推荐, 收藏, 编辑
摘要:在项目开发中,我们通常会遇到这样的需求:缓存中的数据需要监听数据库表,当表的数据发生变化时,更新缓存中的数据。一般情况下,我们首先想到的可能是使用 timer,但是这种方式更新数据的实时性不够。这里我们提供另外一种方式:SqlDependency 与 SQL Server Broker Servicer 组合使用,来实现当依赖的表中的数据发生变化时,在代码中做相关的操作:刷新缓存或者其他你想要的任何处理。 在SQLServer2005中,SQL Server Service Broker 用于创建会话以交换消息。 消息交换在目标和发起方这两端之间进行。要启用数据库的该功能,需要执行如下命... 阅读全文

javascript 父窗体获取子窗体操作结果

2011-07-08 18:31 by jiejiep, 686 阅读, 0 推荐, 收藏, 编辑
摘要:在父窗体 A.html 页面中,当点击某个按钮时,使用 window.open("B.html","anyName"); 来打开 B.html 页面。 在 B.html 页面中进行相应的操作后,如何将操作结果返回给 A.html 页面呢,现在,让我们来做进一步的分析。 首先,我们要知道,使用 window.open 方法打开页面 B.html 页面时,允许我们在 B.html 页面中调用 window.opener 方法来获取父窗体对象,然后通过该对象调用父窗体 A.html 页面的 js 方法来设置 A.html 页面的控件或标签值。如:A.html 阅读全文

安装 sql server 2005 时提示 com+ 错误解决方案

2011-05-19 12:57 by jiejiep, 1754 阅读, 0 推荐, 收藏, 编辑
摘要:今天把机子装了个 32位的 win7 旗舰版,大体感受了一下,挺爽的,不禁暗自庆幸,自己这老掉牙的机子装 win7 还挺牢道,哈哈。 后来装开发环境的时候,问题就给出来了,花了我半天才弄好,差点放弃 win7... 我先安装好 iis ,然后安装 sql server 2005 时,给我来个提示 com+ 错误,于是我本能的在运行中输入 dcomcnfg, 进入“组件服务”界面,逐个点开节点树,发现“计算机”节点下的“我的电脑”节点异常,于是立刻想到重装msdtc....以前碰到这种情况我都是这么做的,而且基本屡试不爽,哈哈。可惜,这次我错了,任我怎么卸载重装卸载重装总是总是没用。“我的电脑. 阅读全文

类型对象和类实例对象

2011-04-24 16:16 by jiejiep, 1040 阅读, 0 推荐, 收藏, 编辑
摘要:在开始正文之前,我先来区分一下标题的这两个词的含义。所谓类型对象,就是指运行时为加载到应用程序中的类型在堆中分配的一块内存区域,该区域中,包括的信息有:类型对象指针、同步索引块、静态字段、指向基类的引用字段、方法列表等等。而类实例对象,就是指当使用关键字 new 初始化一个对象实例时,在堆中分配的一块内存区域,这里面包含的信息有:类型对象指针、同步索引块、实例字段,以及基类的实例字段,这里的类型对象指针,就是指向该类的类型对象的。我们还是先引入一张图。上图中,左边部分为代码调用,右边部分为堆栈和堆上的内存分配情况。其中,Manager 是派生自 Person 类。当调用 Person 的静态. 阅读全文

类型转换(二):是使用 is 还是 as

2011-04-24 11:22 by jiejiep, 270 阅读, 0 推荐, 收藏, 编辑
摘要:在上一篇类型转换(一)中,我们介绍了类型转换的基本知识,这里我们将来介绍一下使用操作符 is 和 as 来进行类型转换。 我们先来说 is ,它判断指定的类型是否兼容于目标类型,并返回一个 bool 类型的值。例如: Dictionary<string, int> a = new Dictionary<string, int>( ); ///返回 true ,因为 Dictionary<TKey,TValue> 实现了 IEnumerable 接口 bool b = a is IEnumerable; //返回 true ,所有的类都派生自 System.O 阅读全文