Effective C# 原则42:使用特性进行简单的反射

JerryXia 发表于 , 阅读 (1,542)
当你创建了一个与反射相关的系统时,你应该为你自己的类型,方法,以及属性定义一些自己的特性,这样可以让它们更容易的被访问。自定义的特性标示了你想让这些方法在运行时如何被使用。特性可以测试一些目标对象上的属性。测试这些属性可以最小化因为反射时可能而产生的类型错误。假设你须要创建一个机制,用于在运行时的软件上添加一个菜单条目到一个命令句柄上。这个须要很简单:放一个程序集到目录里,然后程序可以自己发现关于它的一些新菜单条目以及新的菜单命令。这是利用反射可以完成的最好的工作之一:你的主程序须要与一些... 阅读全文

Effective C# 原则41:选择DataSet而不是自定义的数据结构

JerryXia 发表于 , 阅读 (1,569)
因为两个原则,把DataSet的名声搞的不好。首先就是使用XML序列化的DataSet与其它的非.Net代码进行交互时不方便。如果在Web服务的API中使用DataSet时,在与其它没有使用.Net框架的系统进行交互时会相当困难。其次,它是一个很一般的容器。你可以通过欺骗.Net框架里的一些安全类型来错误DataSet。但在现代软件系统中,DataSet还可以解决很多常规的问题。如果你明白它的优势,避免它的缺点,你就可以扩展这个类型了。DataSet类设计出来是为了离线使用一些存储在相关数... 阅读全文

Effective C# 原则40:根据需求选择集合

JerryXia 发表于 , 阅读 (1,683)
“哪种集合是最好的?”答案是:“视情况而定。” 不同的集合有不同的性能,而且在不同的行为上有不同的优化。.Net框架支持很多类似的集合:链表,数组,队列,栈,以及其它的一些集合。C#支持多维的数组,它的性能与一维的数组和锯齿数组都有所不同。.Net框架同样包含了很多特殊的集合,在你创建你自己的集合类之前,请仔细参阅这些集合。你可以发现很多集合很快,因为所有的集合都实现了ICollection接口。在说明文档中列出了所有实现了ICollection接口的集合,你将近有20多个集合类可用。为了... 阅读全文

工作的节奏

JerryXia 发表于 , 阅读 (2,001)
今晚结束了连续3天3夜呆在公司工作而不回家的过程,原因是我想清楚了一件事,这件事就是工作的节奏。起因是我看到自己的项目目前的一些不好的现状,而这些我感觉正好是对下一个阶段的工作会造成影响,所以我的第一反应是对现有的项目中一些代码进行小范围的重构和优化,来达到我的目的。可恰巧是我最近对项目开发的理解又比之前改进了不少,于是又冒出了另一个想法:对现有项目代码进行重写。自己是一个想到就做的人,特别是在对负责的项目有充分了解之后,就有更大的信心了。想到自己刚到公司一段时间之后,就要负责该系统的重写... 阅读全文

缓存穿透

JerryXia 发表于 , 阅读 (2,809)
缓存系统不得不考虑的另一个问题是缓存穿透与失效时的雪崩效应。缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。解决办法:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。还有最常见的则是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的... 阅读全文

在.NET中使用WIN32 API

JerryXia 发表于 , 阅读 (1,277)
目前最全的PInvoke资源网站:www.pinvoke.net,里面包含了绝大部分已知Win32 API的 .NET封装。值得庆贺的是:里面一般都包含每个API的C#/VB.NET版本,还包含MSDN的引用连接。 阅读全文

女人最爱问的七个问题的标准答案

JerryXia 发表于 , 阅读 (2,005)
《女人最爱问的七个问题的标准答案》,哈哈,从豆瓣转来的,还是很涨姿势的,没看过的可以看看。 问题一:你爱我吗? 错误答案A:“爱。” 错误答案B:“这还用问吗?” 错误答案C:“你烦不烦啊? 标准答案:目光怜爱的望着对方三秒,然后神情的点一下头,同时发出“嗯”的声音,然后一把把她揽在怀里...... 解析:答案A会让她觉得你太不严肃了,纯粹胡弄她;答案B会让她觉得你对她的爱不够坚定,而且她一定会喋喋不休的问到底,让你给她明确的答案,够你烦的;答案C过后一定是一顿大架或冷战。其实女人对男人是... 阅读全文