随笔 - 75
文章 - 0
评论 - 190
阅读 -
29万
02 2012 档案
还要谈谈Equals和GetHashcode
摘要:这篇随笔和上篇随笔《从两个数组中查找相同的数字谈Hashtable》都是为了下面分析Dictionary的实现做的铺垫一.两个逻辑上相等的实例对象。两个对象相等,除了指两个不同变量引用了同一个对象外,更多的是指逻辑上的相等。什么是逻辑上相等呢?就是在一定的前提上,这两个对象是相等的。比如说某男生叫刘益红,然后也有另外一个女生叫刘益红,虽然这两个人身高,爱好,甚至性别上都不相同,但是从名字上来说,两者是相同的。Equals方法通常指的就是逻辑上相等。有些东西不可比较,比如说人和树比智力,因为树没有智力,所以不可比较。但是可以知道人和树不相等。二.Object的GetHashcode方法。计算Ha
阅读全文
Dictionary源码解析(未完)
摘要:private void Insert(TKey key, TValue value, bool add){ if (key == null) { ThrowHelper.ThrowArgumentNullException(ExceptionArgument.key); } if (this.buckets == null) { this.Initialize(0); } int num = this.comparer.GetHashCode(key) & 2147483647; int num2 = num % t...
阅读全文
基本有序,一次只能确定一个
摘要:提纲:1.在一次比较过程中,我们能确定位置的只有一个元素的位置,在外层循环中体现。比如说在插入排序和选择排序中,外层循环 i 就是已经排好序的元素的个数。那些大于等于 i 的当前的值的的都是等待排序的元素,也就是内层循环 j 需要处理的部分。但是我们能使得数组中的元素“基本有序"基于比较的排序算法,一次只能得出一个结果。最好的情况就是把问题分解成两个1/2的规模,而不是一个1/4,另一个3/4。因为你无法知道你是否处于另一个糟糕的状况之中。因为一次比较只能得出 “大于” 或者 “小于”两个结果,所以底数为log2,而问题的所有解的规模最初是n,当第一轮排序完成后,未排序的元素是n-1
阅读全文
数学归纳法与递归还有斐波那契数列(未完成)
摘要:提纲1.n和n+1的关系结论必须由一个整数n决定结论的定义必须明确,这样我们才可能检验由第n项过渡到下一项也就是n+1的时候,结论是否还能成立。我们期望得到这样一个结果:只要这个结论对n成立,那么对n+1也成立。所以我们要做的有两件事,一是证实结论在取某个值时是正确的,二就是证实取下一个值也是正确的。我们考虑,如果取某个值,那么这个值取什么数好呢?很显然,什么事情我们都希望从最简单的情况出发,因此取1就是我们的选择,也就是n=1。因此n=1时成立,所以n+=1,也就是n=2的时候也成立,同理,n=3的时候也成立。从任意整数过渡到下一个,我们就普遍的证明了这个结论。普遍的证明说明已经遍历了所有情
阅读全文
从两个数组中查找相同的数字谈Hashtable
摘要:我们最直观的就是通过两层for循环来对比每个数组中的数字。因此A数组中的每个元素都会和B数组中的每个元素对比过一次,所以总共要对比的次数是n个n相加(或者是n个m相加),也就是n2(或者为n x m).
阅读全文
多线程之旅二——线程与进程简介
摘要:进程:分配系统资源的一种数据结构。简而言之,就像一个储物箱一样,特点是为了保证安全,一个进程中的指针被设计为不可访问其他进程的地址。就像你的钥匙正常情况下不能随便打开任何一个人的储物箱一样,你只能打开自己的储物箱。如果打开别人的储物箱,不是无意的编码疏忽,就是恶意的攻击其他程序。线程:分配CPU运行周期的一种数据结构。线程其实是任务的抽象概念。创建一个线程,相当于告诉CPU我有一个新任务需要你分配时间来处理。多线程和一个线程执行多个任务的区别就在于创建多个线程就是要求cpu要同时处理一些事情,而不是有先后顺序。在unix下其实就没有线程这种概念,就只有任务的概念。一个任务就相当于只有一个线程的
阅读全文
多线程之旅——从概念开始
摘要:程序执行顺序是按照串行执行的假设:
比如我们读诗词,默认从上到下
1.床 前 明 月 光,
2.疑 是 地 上 霜。
3.举 头 望 明 月,
4.低 头 思 故 乡。
阅读全文
WCF中的REST是什么
摘要:基于SOAP消息格式的WCF之所以强大原因之一是因为SOAP消息头的高度扩展性。相应的WS-*协议很多都体现在消息头封装的信息上,包括诸如寻址,需要调用方法名,维护Session的信息等等……
SOAP示例
阅读全文
由传输过程中需要面对的问题探讨WCF中的“可靠性”
摘要:消息可靠性和传输可靠性是WCF区别于WebService的两大特征。在前面谈到TCP的可靠性的一些基本知识,那么它和WCF的可靠性有什么异同点呢?
WCF可以基于各种不同的协议,因此WCF的可靠性并不依赖于TCP协议,而是有自己的协议实现,也就是WS-RM。
在了解我们先看下Web环境下,我们所面对的问题:
传输通信可能产生的问题
1.服务器可能宕掉,或者路由器可能忙于处理大量请求而造成的网络阻塞。
阅读全文
由TCP的可靠性实现对比WCF中可靠性的实现(未完成)
摘要:TCP三次握手对比WS-RM的Message Flow• CreateSequence• CreateSequenceResponse• SequenceAcknowledgement• LastMessage• TerminateSequence
阅读全文