随笔 - 106  文章 - 2  评论 - 2017  阅读 - 43万 

随笔分类 -  .NET应用

在WPF的Canvas上绘制二叉树
摘要:二叉树是数据结构最重要的部分之一,数据结构据说是学习编程的基础课程,虽然好像和平时工作关系不大,但面试时面试官很喜欢出点数据结构算法来***难你。一直以来,写算法好像只是C/C++的事,一串串数字输出在冰冷的手术台,sorry,是控制台上。但中间的过程,只能画在草纸上,或者像下盲棋一样用用脑汁算。其实我们多数人并不需要到高手的那个境界,只要会走法,能走两步就够了,所以有一个棋盘的话会对我们练习帮助很大。下面是我在WPF窗口上画的一个二叉树:每个节点都是一个Canvas,里面又包含一个Ellipse和TextBlock。节点通过Margin属性来定位。在递归显示时,先计算子节点的Margin,然后再 阅读全文
posted @ 2012-03-03 16:59 小城故事 阅读(3478) 评论(1) 推荐(2) 编辑
视图分离技术的认识和应用
摘要:在过去Win32编程时代,我们看到的程序界面都是由静态编程语言,从一个按钮的尺寸到布局,一行行地绘制出来。比如现在我们创建一个.Net WinForm窗体,打开其对应的designer.cs文件,就会看到长篇累牍窗体绘制代码。打从VB和Delphi出现后,尽管通过界面设计器自动生成代码成为主流,然而随之互联网时代的发展,我们需要丰富多样的软件界面,更灵活地应对需求变动。比如一个软件往往有多种界面,包括C/S和B/S,C/S中包括Windows/Linux/IPhone,B/S包括IE/Firefox/Chrome。无论是先设计业务,还是先构勒界面,最好能独立、清晰、明确的进行。更不想影响业务逻 阅读全文
posted @ 2011-11-18 14:45 小城故事 阅读(2287) 评论(0) 推荐(4) 编辑
兼容标准的CSV文件读写类
摘要:这几天工作要读写CSV文件,CSV格式虽然很简单,为省事想先从网上找一个现成的,但找了半天只有一个看上去可以,至少读写都支持,在此基础上,按照标准修正了一下,标准才是王道。贴一下CSV格式标准规则,来自百度百科 http://baike.baidu.com/view/468993.htm: 1 开头是不留空,以行为单位。 2 可含或不含列名,含列名则居文件第一行。 3 一行数据不垮行,无空行。 4 以半角逗号(即,)作分隔符,列为空也要表达其存在。 5 列内容如存在半角逗号(即,)则用半角引号(即"")将该字段值包含起来。 6 列内容如存在半角引号(即")则应替换 阅读全文
posted @ 2011-10-28 12:51 小城故事 阅读(2010) 评论(3) 推荐(0) 编辑
运用Composite模式构造JSON
摘要:Json是如今流行的Ajax或Service数据交换格式,.NET使用DataContractJsonSerializer(System.Runtime.Serialization.Json命名空间下),可以很方便地在json字符串和实体对象间转换。 在Restful WCF服务站点上,更无须写代码序列化Json。服务默认以xml形式返回结果,但如果Web请求头信息中的Accept属性为application/json,客户端得到的就是以json格式序列化了结果。 客户端用jquery实现很简单,只要调用ajax函数时,设置dataType:’json’就可以了。 客户端也可以发送j... 阅读全文
posted @ 2011-08-19 23:10 小城故事 阅读(2210) 评论(11) 推荐(4) 编辑
B/S项目树状目录结构的完整实现(二)
摘要:上一文中讲了带编号(或说是路径)的树状目录结构基本操作。谢谢有朋友提醒SQL Server2008以上版本可以采用HierarchyId类型字段,也很希望能看到阐述这方面最佳实践的文章。 理论联系实践,再提高理论认识,这是我一直追求的一个良性循环。本文将目录结构在实践中的一个应用,其实和结构存储方式倒没直接关系。 先请大家看个截图,这是一个部门选择菜单控件。 这是一个纯CSS实现的多层级下拉菜单,相对来说在网页上较少见。当点击选择一个部门时,旁边的文本框会显示该部门的各层级名称,并将该部门编号记录到一个隐藏域中,用于提交查询。 这个控件和遍历目录下的文件一样,用递归方式写入HTML... 阅读全文
posted @ 2011-04-14 14:16 小城故事 阅读(3404) 评论(1) 推荐(3) 编辑
再议在Asp.Net中缓存ADO.Net Entity
摘要:上一篇文章中,曾经讲在Asp.Net中采用ADO.Net Entity做缓存的处理方式,就是继承默认的ObjectContext,在保存更新时,Detach所有被Attach过的实体。曾经认为是天衣无缝,其实根本没考虑到在附加实体后,保存更新前,这中间如果出现异常的情况。比如有一个页面有这样的语句:var DB = new DBContext(); //实体上下文var person = EmployeeHelper.GetPersonByID(id); //从缓存中取数据DB.Attach(person);person.Name = "流川枫";person.JoinDa 阅读全文
posted @ 2011-04-11 00:30 小城故事 阅读(942) 评论(0) 推荐(2) 编辑
Ado.Net Entity Framework之直接更新
摘要:Ado.Net Entity Framework一如微软其它产品,用起来相当方便,基本可以无师自通。可“自通”背后也隐藏了不少陷阱,比如它正常情况下的更新模式就是如此:var db = new DBEntities(); //Ado.net Entitesvar section= db.Sections.First(s => s.SectionNo.Equals(sectionNo));section.Name = "人事";db.SaveChanges(): 这会导致每次更新一条记录,必须先将其查询出来。看SQL Profiler后,发现一个简单的更新要进行两次数据 阅读全文
posted @ 2011-02-20 14:04 小城故事 阅读(3773) 评论(14) 推荐(2) 编辑
正则表达式一点迷惑
摘要:正则表达式很强大,当然,也很复杂,我看到有本书专门讲这个,不过内容没看,没耐心。我看的是:《30分钟精通正则表达式》。 当然,讫今已经不知道看了多少个30分钟了,还是搞不懂一些基本问题,比如这个: var match = Regex.Match("0px", @"^0|\d+px$"; Console.WriteLine(match.Value); 结果输出0,为什么不是0px呢?如果将pattern倒过来"^\d+px\0$",就可以匹配0px。 如同.Net中的指针运用一样,掌握正则表达式好像还是一个高级的编程技能,有两三年经验的 阅读全文
posted @ 2010-11-21 21:34 小城故事 阅读(555) 评论(1) 推荐(0) 编辑
.Net 4.0并行库实用性演练(续)
摘要:接着上一次说,即使用了新的线程安全的集合BlockingCollection,这段代码还是会有问题。 static void testFillParallel() { var list = new BlockingCollection<Person>(9999); Enumerable.Range(1, 99999).AsParallel().ForAll(n => { var name = "Person " + n % 9; if (list.Count(p => p.Name == na... 阅读全文
posted @ 2010-09-10 16:25 小城故事 阅读(1312) 评论(2) 推荐(1) 编辑
.Net 4.0并行库实用性演练
摘要:前面说在练习Parallel时,发现另有乾坤,是这样的代码:代码Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->static IEnumerable<Person> testFill(){ var list =new List<Person>(9); Enumerable.Range(1, 99999).ToList().ForEach(n => { var name ="Person"+ n 阅读全文
posted @ 2010-09-08 19:00 小城故事 阅读(3028) 评论(6) 推荐(3) 编辑
XML数据读取方式性能比较(二)
摘要:话说上期概括了一下通用的XML读取方式,不过平时我们未必要用到XML源的全部数据,所以我又实验了一下读取部分数据的情况,比如根据标题的开头字母,出现位置进行筛选。 对于三种随机读取方式来说,只要改变查询条件即可 XmlDocument:Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->var nodeList = doc.DocumentElement.SelectNodes("item[substring(title,1,1)=&# 阅读全文
posted @ 2010-08-15 22:05 小城故事 阅读(2358) 评论(4) 推荐(1) 编辑
XML数据读取方式性能比较(一)
摘要:几个月来,疑被SOA,一直在和XML操作打交道,SQL差不多又忘光了。现在已经知道,至少有四种常用人XML数据操作方式(好像Java差不多),不过还没有实际比较过这些方式各有哪些特点或优劣。正好看到网上也没有这方面的实验,偶来总结一下。 测试开始先读取XML源,用一个比较大的RSS文件链接,复制到项目bin/debug目录下。Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->Stream xmlStream =new MemoryStream( 阅读全文
posted @ 2010-08-12 06:33 小城故事 阅读(7673) 评论(29) 推荐(6) 编辑
Nunit单元测试演练
摘要:学以致用,单元测试的工具越来越多,可是想找一篇如何单元测试的文章却很难。所以偶来写一点自己的心得,也是一步步摸索着。先从测试一个方法开始,偶随便找了一个小算法。这个方法看来正合适:不能太简单,比如一加一等于二;也不能太复杂,比如牵涉到数据库操作。这个算法的功能是取得小于Max的N个随机不重复正整数,代码如下:CodeCode highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->publicstaticList<Int32>GetRandomNu 阅读全文
posted @ 2009-09-11 17:28 小城故事 阅读(2209) 评论(6) 推荐(1) 编辑

点击右上角即可分享
微信分享提示