摘要:技术的发展其实都是有迹可寻的.无论多高超,多神秘的技术都是在实践->经验->理论->再实践->...的过程中发展起来的。今天之所以写这个系列的文章,不是为了炫耀我有多牛,当然更不是为了装B,“天外有天,人外有人”的自知自明我还是有的。我的目的其实很简单: 1)对我两个多月来学习和应用Silverlight做一个总结,以此纪念我为此耗费的青春; 2)给那些和我一样奋战在Coder战线,已经涉足或准备涉足Silverlight,WPF开发的新老同志一些经验,并通过这种交流来减少我们花费在技术跟踪上的成本(时间和精力),多点时间做更有意义的事情,比如多陪陪家人等; 3) 如果 阅读全文
WPF的原理与MVVM模式的思考
2011-09-17 09:02 by java线程例子, 326 阅读, 0 推荐, 收藏, 编辑
摘要:对于一般程序语言,执行分为3种:1)编译成二进制机器代码,由操作系统调用执行;典型的如C,C++,Delphi等.2)编译成中间语言,由虚拟机解释来执行或及时编译后执行(前者的典型是java,后者的典型是DotNet).3)不进行编译,有解释器边解释边执行,比较典型的是VB和HTML,Javascript.等上边这些与WPF有关系么?其实是有的,至少原理上非常相似.我们来看看WPF的XAML的执行机制:1)首先是实例化页面类;2)然后构建界面元素(控件树),这里很关键,因为xaml文件里有界面元素的描述性信息,对于一个界面元素E: A)首先实例化E,知道界面元素的类名,利用反射机制很容易实例化 阅读全文
算法实践系列--查找第K大值
2011-09-15 07:23 by java线程例子, 386 阅读, 0 推荐, 收藏, 编辑
摘要:下面的算法实现基于随机化快排,有一个前提是需要假设所有的元素都不相等,否则算法不成立。下面是具体实现:1)随机划分算法与快排一样: /// <summary> /// 快速排序的分隔,即:对于一个指定的主元x,找到位置i,使得i的左边元素都小于等于x,右边都大于等于x. /// </summary> /// <param name="A"></param> /// <param name="p"></param> /// <param name="q"> 阅读全文
Linux operating system (Ubuntu) 学习-2
2011-09-14 19:30 by java线程例子, 178 阅读, 0 推荐, 收藏, 编辑
摘要:Linux 系统由内核、外壳程序、实用程序、应用程序构成。内核(kernel)我把内核取名为“硬件管家”,它负责管理和控制计算机资源,分配资源给用户和进程,用户和其他程序都必须通过内核访问硬件资源,正是这种“内核机制”使Linux系统上编写的程序可以跨平台使用。外壳程序(shell)我把外壳程序称为“Windows”Linux系统提供2种形式的用户接口(user interface)<1>command line interface 它可以高效的完成所有的任务。<2>graphics user interface 它是command line interface 的衍生 阅读全文
计数排序实现及比较
2011-09-13 23:11 by java线程例子, 474 阅读, 0 推荐, 收藏, 编辑
摘要:计数排序利用的是数组的随机访问特性,将要排序的数k转换成数组的下标K,该数组中以k为下标的值A[k]代表这个数K的个数。这种排序非常快,但应用条件比较苛刻。主要受需要排序的序列规模(n),序列最大值(max(n))影响,如果max(n)过大,算法空间复杂度比较高,也是该算法的一个制约因素。下面是两种方式实现:1) 第一种方式速度比第2种快,但没有稳定性,而且不能用于基数计数排序。private void CountSort(int[] A) { List<int> theC = new List<int>(); int theLen = A.Length; int th 阅读全文
一个拓扑结构题得实现(2011baidu校招研发部门的面试题目)
2011-09-12 00:09 by java线程例子, 298 阅读, 0 推荐, 收藏, 编辑
摘要:题目来自于QQ群友,今天无聊,试着把算法写出来活动一下脑子,题目如下:有一个单入口,单出口的有向无环图。给出一个算法,在已有结点之间插入若干结点,使得从入口结点到出口结点经过的任意路径长度一致,详细描述你的算法思路,并分析其时间复杂度和空间复杂度。分析:这个题的解显然是无数的,因为题目并没有限定任意路径长度的具体数字,只要一致即可。我们只考虑任意长度等于改图最大路径(长度),当然这里也没不要考虑权重。题目其实就变成了求任意节点P到结束点的最大路径,并平衡这个节点P到其后续节点最大路径差异。假设P有K个后续节点,N1,N2...,NK.我们知道P到结束点的最大路径Max(P)就等于Max(Max 阅读全文
快速排序(QuickSort)的C#实现(采用随机化主元方式)
2011-09-11 21:14 by java线程例子, 302 阅读, 0 推荐, 收藏, 编辑
摘要:算法代码如下:/// <summary> /// 快速排序的分隔,即:对于一个指定的主元x,找到位置i,使得i的左边元素都小于等于x,右边都大于等于x. /// </summary> /// <param name="A"></param> /// <param name="p"></param> /// <param name="q"></param> /// <returns></returns> private 阅读全文
归并排序(MergeSort)两种实现方式比较
2011-09-11 20:47 by java线程例子, 644 阅读, 0 推荐, 收藏, 编辑
摘要:前面我写的归并排序实现,虽然原理上没什么问题,但算法实现不是很理想,今天没什么事情,重新优化了一下,这里比较一下:1) 第1种方式,我采用了辅助存储来进行归并,代码如下:private void MergeSort1(int[] A, int iS, int iE) { if (iS == iE) { count++; return; } int iE1 = (iS + iE) / 2; int iS2 = iE1 + 1; MergeSort1(A, iS, iE1); MergeSort1(A, iS2, iE); //针对两个排好序的段(iS-iE1,iS2-iE)进行整理 int i1 阅读全文
《归并排序(MergedSort)的原理及延伸性思考》进行了修正
2011-09-11 08:14 by java线程例子, 176 阅读, 0 推荐, 收藏, 编辑
摘要:我对归并排序(MergeSort)的原理及延伸性思考的内容进行了较大的修改,因为其中有部分表达式有误,进行了更正,而且因为看完了公开课的分治策略和递归解法两节,我也对算法增加了一些思考。不妥之处,还请原谅。 阅读全文
归并排序(MergeSort)的原理及延伸性思考
2011-09-10 11:59 by java线程例子, 330 阅读, 0 推荐, 收藏, 编辑
摘要:前面一篇博文写了归并排序的算法实现,虽然做了些注释,但没有写归并排序的原理,这篇就补上,同时对归并所隐含的思想做一个探讨。1)归并排序的原理 为了便于说明,这里我们提到的已排好序的序列都是指从小到大的升序(对于降序其实原理是一样的。 假设有两个已排好序的序列A,B: A:a1≤a2≤a3≤...≤an (i:1~n为下标); B:b1≤b2≤b3≤...≤bm(j:1-m为下标);如果我们要对A,B进行合并为C,并使得序列C是排好序的,这种情况下就很简单了,我们只要取两个序列的开头进行比较,谁小就取谁,相等任意取一个。然后对剩下的序列继续按照上述原则进行,直到两个序列都取完。比如:开始:A:{ 阅读全文