摘要: CDN是互联网中使用较频繁的一种技术。你也许常听人说:“我们的网站使用了CDN技术”,但可能他们对CDN的了解并不多,也许只局限于--用了以后网站访问速度会变快。其实,CDN的原理非常简单。当浏览器请求一资源时,第一步是做DNS解析,DNS解析就像是从通讯录根据姓名找号码,浏览器发送域名,然后得到DNS服务器返回的IP地址。浏览器通过IP地址和服务器连接并获取资源(DNS服务器会有很多层的缓存,但超出本文范围)。对于小站点或个人博客,一个域名对应一个IP地址,而大站点可能含多个IP地址。当请求一个资源时(如网站),距离会影响连接速度,所以从国内访问国外的网站会比较慢。因此,一些大公司在世界各地 阅读全文
posted @ 2012-03-12 22:21 许两会 阅读(3385) 评论(13) 推荐(12) 编辑
摘要: 无论书还是博客, 耦合这个词已被无数人说烂,任何一位程序员都会告诉你设计软件要注意低耦合,可究竟什么是低耦合?每次去查这个问题,就会牵扯出各种术语和理论,让人头晕。最近看了一些英文资料,发现低耦合其实没那么复杂。 阅读全文
posted @ 2012-03-07 22:14 许两会 阅读(3638) 评论(12) 推荐(5) 编辑
摘要: 最近找工作,面试了几家公司,其中有一家公司的面试题给我印象很深,不久前在博客园看过类似的题目,但这次的更复杂,题目如下: public class BaseA{ public static MyTest a1 = new MyTest("a1"); public MyTest a2 = new MyTest("a2"); static BaseA() { MyTest a3 = new MyTes... 阅读全文
posted @ 2011-06-05 23:03 许两会 阅读(3819) 评论(22) 推荐(9) 编辑
摘要: 从类名就可以看出SortedDictionary<TKey,TValue>和上篇介绍的SortedList一样,都是有序集合,但从类内部的存储结构上看,两者有很大区别,SortedList内部用数组保存,只能算是有序线性表,而SortedDictionary<TKey,TValue>的内部结构是红黑树。 园子里有不少关于红黑树的好文章,已将红黑树分析的很透彻。所以这里不讨论红黑树的结构原理,而讨论... 阅读全文
posted @ 2011-05-30 11:27 许两会 阅读(3615) 评论(5) 推荐(2) 编辑
摘要: 无论是常用的List<T>、Hashtable还是ListDictionary<TKey,TValue>,在保存值的时候都是无序的,而今天要介绍的集合类SortedList和SortedList<TKey,TValue>在保存值的时候是有序保存。SortedList之二分查找法一个集合有序,意味着什么?意味着可以利用一些算法来提高遍历集合时的效率,最常见的就是运用二分查找法,SortedList集合的核心就是运用二分查找。SortedList保存数据时和哈希表一样用Key-Value的方式进行存储,但不同的是,它把Key和Value分别保存在两个object 阅读全文
posted @ 2011-05-24 09:26 许两会 阅读(3763) 评论(4) 推荐(3) 编辑
摘要: 链表是数据结构中存储数据的一种形式,我们经常使用的List<T>,ArrayList,Hashtable等容器类,存取操作时是用数组Array来保存,ListDictionary和LinkedList<T>不用Array,而是用链表的形式来保存。 链表的优点和缺点 以ListDictionary为例,在源码中,看不到Array类型的的变量,取而代之的是一个DictionaryNode类型的变量,查... 阅读全文
posted @ 2011-05-18 22:09 许两会 阅读(4780) 评论(6) 推荐(9) 编辑
摘要: .Net3.5之后出现了HashSet<T>,硬翻译过来就是“哈希集合”,跟“哈希”两字挂钩说明这种集合的内部实现用到了哈希算法,用Reflector工具就可以发现,HashSet<T>和Dictionary<TKey,TValue>使用了相同的存储方式和哈希冲突算法,那么,它跟Dictionary<TKey,TValue>和Hashtable在使用上到底有什么不同?HashSet<T>对集合运算的操作HashSet<T>是一个Set集合,虽然List、Collection也叫集合,但Set集合和它们却大有不同。HashS 阅读全文
posted @ 2011-05-09 11:28 许两会 阅读(6909) 评论(16) 推荐(8) 编辑
摘要: 今天来探究哈希表,.net内置的哈希表容器是Hashtable类,而Dictionary<TKey,TValue>是对应的泛型哈希表.哈希表-Hashtable的实例化一般我们实例化ArrayList或List<T>的时候,如果不指定容量,则其内部是赋值为一个静态的空数组。当有添加操作时,会实例化为一个长度为4的数组,如果容量满了以后,再添加,就会自动扩充为两倍的容量。哈希表也有一个类似的情况,new Hashtable()如果不指定长度,则会将内置bucket数组的长度默认指定为11。如果给定一个值如new Hashtable(20),也并不会将bucket数组长度设 阅读全文
posted @ 2011-05-06 18:14 许两会 阅读(3507) 评论(12) 推荐(8) 编辑
摘要: 最近研究Nhibernate,看着样例代码一知半解,苦恼万分,发现中间又引用了一个Iesi.Collections,不禁要产生疑问--为什么要专门引用一个集合类程序集?这个程序集里的集合数组类与.net自带的有什么不一样?结果此问题一出就一发不可收拾,扪心自问冒出了一大堆的问题--.net有哪些集合类?array和ArrayList有什么区别?Hashtable与集合有什么不一样?....等等.这时才意识到,如果对.net本身提供的集合类不了解,根本不会明白引用Iesi.Collections的用意.由<<CLR via C#>>的书中所说:"所有的数组(如i 阅读全文
posted @ 2011-05-02 22:17 许两会 阅读(1372) 评论(2) 推荐(2) 编辑
摘要: 在博客园潜水一年多,半年前开了博,但一直闲置着,前阵子看了老赵的博客二三事后,终于下了决定要认真写几篇。正巧最近园子在讨论“值类型和引用类型”相关的话题,我就谈谈个人见解。 阅读全文
posted @ 2010-12-13 23:19 许两会 阅读(700) 评论(2) 推荐(0) 编辑