代码改变世界

随笔档案-2011年09月

Silverlight实战示例总结(兼对Object类型绑定的处理)

2011-09-29 19:49 by java线程例子, 202 阅读, 收藏,
摘要: 在前面的博文中,如果要能进行修改,都是用strValue进行绑定的,但这只说明string类型的在datagrid自动生成的列中是可以编辑的,用Object进行绑定一样也可以编辑,但需要进行一定的处理,而且用strvalue,intvalue分别绑定也不符合开发友好原则,我在示例中有Object属性,而且也进行了通知属性处理,这里我们利用一个convert来处理object类型的绑定,根据字段自带的数据类型,其实我们可以做得很通用化。下面是代码(其它代码见示例):1)ObjectAutoConverter.cs 用于值的转换,在这里可以进行数据类型转换和格式化。不过我处理的比较简单。/// & 阅读全文

Silverlight实战示例补充(数据集模拟挂接事件)

2011-09-27 18:46 by java线程例子, 188 阅读, 收藏,
摘要: 这里是部分代码,其它代码见Silverlight实战示例,直接上代码:1)DynamicDataField.cs [Serializable] public partial class DynamicDataField { public string FieldName { get; set; } public string StrValue { get; set; } public DateTime DTValue { get; set; } public Byte[] ByteArrayValue { get; set; } public string DataType { get; se 阅读全文

MVC、WebForm和Silverlight的一点比较

2011-09-23 19:16 by java线程例子, 258 阅读, 收藏,
摘要: 今天比较深入的接触了一下VS的MVC开发,有点感触,所以写点感言。因为接触不是很久,研究不够深入,写这些主要是测试一下自己的技术敏感度,如果下次发现自己写得不对,其实也是一种提高,所以大家看的时候,就当娱乐吧。我们首先来看看MVC和WebForm:1)首先MVC和webForm还是属于比较典型的BS程序,所以本质上它们没什么区别,理由如下: A)构成:Web的构成是Aspx+CS文件,MVC是M+ASPX+Controller(CS),其实M相对独立,传统的Aspnet也可以拥有这层,因此比较的时候可以除掉相同项M,得到Aspx+cs和Aspx+Controller.cs,大家看看,是不是没什 阅读全文

WPF架构关键技术剖析(4)--总结

2011-09-21 23:36 by java线程例子, 150 阅读, 收藏,
摘要: 结合这个系列博文,加上我前面的对依赖属性模拟的博文,如果大家仔细看过,应该收获很大,可以讲Silverlight的页面交互机制应该是非常的清楚了,而这篇博文的Action实现,其实就是一个简易的交互框架。Silverlight本身提供的Triggers,Behaviors也是这个原理,当然,他们做得更细更好些。理解了这种交互机制,其实我们可以很轻松的增加一些巧妙功能来加快silverlight页面开发。比如,我们多采用MVVM,我们就可以直接执行VM中的公共方法,而不必用什么Command.将你的目标指向页面的ViewModel,怎么访问,自己定义一个规则即可。虽然因为时间关系,我没有按原来的 阅读全文

WPF架构关键技术剖析(3)--做自己的交互Action(3)

2011-09-21 23:27 by java线程例子, 187 阅读, 收藏,
摘要: 1)测试数据准备://这是我学习treeview绑定时用的,也随带给不是很会用treeview绑定的网友们一个例子.A)层级类,树形结构.public class Folder { public ObservableCollection<Folder> Children { get; set; } public string A { get; set; } public string B { get; set; } }B)一个简单的ViewModelpublic class MainViewModel : ViewModelBase { public string Welcome 阅读全文

WPF架构关键技术剖析(3)--做自己的交互Action(2)

2011-09-21 23:17 by java线程例子, 187 阅读, 收藏,
摘要: 下面我们利用附加属性,将我们准备好的Action集合能作为附加属性出现在xaml中:1)附加属性类:/// <summary> /// 附加属性定义类,注意必须是静态的,这有点类似于给类增加扩展方法。 /// </summary> public static class WPFTestDettach { /// <summary> /// 注册附加属性。 /// </summary> public static readonly DependencyProperty MyObjectsProperty = DependencyProperty.R 阅读全文

WPF架构关键技术剖析(3)--做自己的交互Action(1)

2011-09-21 23:01 by java线程例子, 210 阅读, 收藏,
摘要: 本来打算写得细些,但最近要换工作,所以比较忙点,而且也觉得没必要写那么多虚的东西,因此这里不再按照提纲进行,而是从代码入手,看清Silverlight的交互机制.依赖属性和附加属性的基本类都是一样的,但依赖属性和附加属性的用途还是有区别的,依赖属性更多的是属性,而附加属性更多的是扩展,有点类似于类的扩展方法,附加属性非常重要,很多交互的实现其实都是利用这个特性来实现的,附加属性为你对现有UI元素进行交互注入提供了切入点。从某种意义上来讲,这也是AOP编程的一个典范。依赖属性的模拟可以参见我前面的博文,这里不再对依赖属性进行讨论,附加属性的实现我会有具体的代码,因为这些代码也是我们自己的交互Ac 阅读全文

WPF架构关键技术剖析(2)--XAML、对象序列化、类动态实例化

2011-09-18 22:39 by java线程例子, 373 阅读, 收藏,
摘要: 我们知道对于界面元素的描述,WPF的XAML不是第一个,HTML就要早很多,delphi的dfm也是一种。界面描述和界面交互逻辑的分离是有很多好处的,比如有利于可视化设计,有利于界面复用等。微软总是想一统天下,WPF的出现也是这种理想。当然,这种理想的出现也是有实际需求支持的。对于应用程序架构来说,传统的CS和BS都在相互融合,所以整合这两种模式下的界面设计也有其需求,并有利于两种模式的转换和融合。WPF采用XAML作为UI呈现的描述语言,而作为一种语言,XAML本身并没有什么需要特别关注的东西,我们只要去遵循这种规则即可。XAML语言的基本思想更HTML并无太大的区别,只是采用XML格式,依 阅读全文

WPF架构关键技术剖析(1)--序言

2011-09-18 11:01 by java线程例子, 149 阅读, 收藏,
摘要: 技术的发展其实都是有迹可寻的.无论多高超,多神秘的技术都是在实践->经验->理论->再实践->...的过程中发展起来的。今天之所以写这个系列的文章,不是为了炫耀我有多牛,当然更不是为了装B,“天外有天,人外有人”的自知自明我还是有的。我的目的其实很简单: 1)对我两个多月来学习和应用Silverlight做一个总结,以此纪念我为此耗费的青春; 2)给那些和我一样奋战在Coder战线,已经涉足或准备涉足Silverlight,WPF开发的新老同志一些经验,并通过这种交流来减少我们花费在技术跟踪上的成本(时间和精力),多点时间做更有意义的事情,比如多陪陪家人等; 3) 如果 阅读全文

WPF的原理与MVVM模式的思考

2011-09-17 09:02 by java线程例子, 335 阅读, 收藏,
摘要: 对于一般程序语言,执行分为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线程例子, 396 阅读, 收藏,
摘要: 下面的算法实现基于随机化快排,有一个前提是需要假设所有的元素都不相等,否则算法不成立。下面是具体实现: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线程例子, 181 阅读, 收藏,
摘要: 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线程例子, 480 阅读, 收藏,
摘要: 计数排序利用的是数组的随机访问特性,将要排序的数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线程例子, 307 阅读, 收藏,
摘要: 题目来自于QQ群友,今天无聊,试着把算法写出来活动一下脑子,题目如下:有一个单入口,单出口的有向无环图。给出一个算法,在已有结点之间插入若干结点,使得从入口结点到出口结点经过的任意路径长度一致,详细描述你的算法思路,并分析其时间复杂度和空间复杂度。分析:这个题的解显然是无数的,因为题目并没有限定任意路径长度的具体数字,只要一致即可。我们只考虑任意长度等于改图最大路径(长度),当然这里也没不要考虑权重。题目其实就变成了求任意节点P到结束点的最大路径,并平衡这个节点P到其后续节点最大路径差异。假设P有K个后续节点,N1,N2...,NK.我们知道P到结束点的最大路径Max(P)就等于Max(Max 阅读全文

快速排序(QuickSort)的C#实现(采用随机化主元方式)

2011-09-11 21:14 by java线程例子, 309 阅读, 收藏,
摘要: 算法代码如下:/// <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线程例子, 660 阅读, 收藏,
摘要: 前面我写的归并排序实现,虽然原理上没什么问题,但算法实现不是很理想,今天没什么事情,重新优化了一下,这里比较一下: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线程例子, 182 阅读, 收藏,
摘要: 我对归并排序(MergeSort)的原理及延伸性思考的内容进行了较大的修改,因为其中有部分表达式有误,进行了更正,而且因为看完了公开课的分治策略和递归解法两节,我也对算法增加了一些思考。不妥之处,还请原谅。 阅读全文

归并排序(MergeSort)的原理及延伸性思考

2011-09-10 11:59 by java线程例子, 345 阅读, 收藏,
摘要: 前面一篇博文写了归并排序的算法实现,虽然做了些注释,但没有写归并排序的原理,这篇就补上,同时对归并所隐含的思想做一个探讨。1)归并排序的原理 为了便于说明,这里我们提到的已排好序的序列都是指从小到大的升序(对于降序其实原理是一样的。 假设有两个已排好序的序列A,B: A:a1≤a2≤a3≤...≤an (i:1~n为下标); B:b1≤b2≤b3≤...≤bm(j:1-m为下标);如果我们要对A,B进行合并为C,并使得序列C是排好序的,这种情况下就很简单了,我们只要取两个序列的开头进行比较,谁小就取谁,相等任意取一个。然后对剩下的序列继续按照上述原则进行,直到两个序列都取完。比如:开始:A:{ 阅读全文

合并(归并)排序(MergeSort)

2011-09-10 00:35 by java线程例子, 256 阅读, 收藏,
摘要: //用来计数,测试执行循环次数. int count; private void button1_Click(object sender, EventArgs e) { Random theR = new Random(new Random().Next(30000)); List<int> theA = new List<int>(); int n = 1024; for (int i = 1; i <= n; i++) { theA.Add(theR.Next(10000)); } count = 0; int[] theB = theA.ToArray(); 阅读全文

Silverlight调用WCFRIAService 'Not Found'错误小结

2011-09-09 07:06 by java线程例子, 185 阅读, 收藏,
摘要: 1、确实没有服务方法;2、Web.Config中没有相应的DomainService配置(解决:在承载应用添加一个空的域服务,然后删除即可);3、服务方法是在于一个WCF RIA Services类库里,如果承载网站没有引用,或者是如果承载网站下Bin里的dll没有更新也会提示这种错误(VS的自动复制有的时候不是非常有效);(解决:同步更新相应的dll文件到bin目录下)4、服务方法没有打Invoke标签;5、返回的实体序列化有问题,这种情况引起的错误,非常隐蔽,非常让人伤脑筋,但这种情况下,我们是可以跟踪到服务器端代码的,一般都是服务方法调用一离开,客户端就报错。这种情况下,基本都是实体序列 阅读全文

WCF RIA Service实体嵌套问题(更正一下前面的动态数据集模拟)

2011-09-08 22:19 by java线程例子, 167 阅读, 收藏,
摘要: 至少在目前为止,经过测试,我发现一个实体A引用了另外一个实体成员B,如果另外一个成员B又引用实体成员A,如果A为null,没问题,如果A不为空,与B形成实例上的循环引用,就会导致客户端访问提示找不到调用方法的错误,我觉得应该是这个循环引用导致返回客户端时进行序列化时,导致无限循环引起的,当然,如果实例上不形成循环,就没问题。比如A的实例a,B的实例b,a.B引用的是b,而.A引用的如果是a,形成实例上的循环引用,就会有问题,而如果b.A引用的是另外一个A的实例a1,就没问题。这里说明一下,我在前面博文中模拟Datatable数据集中的行对表,列对行的引用是不行的,会导致上面提到的错误,请大家注 阅读全文

Linux operating system (Ubuntu) 学习-1

2011-09-06 20:25 by java线程例子, 239 阅读, 收藏,
摘要: Ubuntu操作系统中计算器的使用1. 登陆系统2. 输入“bc”启动计算器程序3. 进行相关的计算(注意:可以用scale变量设定计算结果所保留的小数位数目 例如:你要想保留小数点后5位数,可以输入命令“scale=5”)4.输入“quit”退出计算器程序 阅读全文