随笔分类 -  具体技术

具体的技术
摘要:WPF 是一个界面层框架技术,要对 WPF 技术达到熟练运用的程度,需要同时拥有开发和设计两方面的知识。而我作为一名开发人员,以前的总结都是站在开发人员的角度,今天这篇博文则期望更多地站在设计人员的角度来进行总结。其实,开发人员比较难理解WPF 框架中为什么会提出 Style、Template、Command、State、StoryBoard、Trigger 等这些概念,但是当你看一看 Flash 或者 PhotoShop 的设计人员平时的工作,就会发现原来许多概念早已是他们的常识,而 .NET 只是把这些概念在 WPF 框架上加以实现而已。 最近接了一个 WPF 的活,对方要求我按照他们美工 阅读全文
posted @ 2012-07-29 18:09 BloodyAngel 阅读(8708) 评论(14) 推荐(10) 编辑
摘要:前言 之前做网站时有做代码防御 XSS(Cross Site Script) 攻击,但是却只处于了解的阶段,并不知道其中具体的原理,更别说使用了。最近有朋友要求我帮助他 Hack 一个网站,达到一定的目的。思考来思考去,最后想了一套方案,并最终成功实施。现在回想起来,整套解决方案中,其实主要就是 X 阅读全文
posted @ 2012-06-30 21:24 BloodyAngel 阅读(1460) 评论(0) 推荐(1) 编辑
摘要:在软件开发中,从需求工程到代码工程,都离不开 UML 图的绘制。今天简要总结一下我以往使用 UML 图的一些体会。 很多图,都是由原始需求到代码的一种转换,只是转换的程度不一样。在软件开发过程中,不同的阶段需要不同的 UML 图,在选择使用哪些图时,我们必须理解该图能表达一些什么,即它的主要用途,以 阅读全文
posted @ 2012-05-23 15:14 BloodyAngel 阅读(3180) 评论(0) 推荐(0) 编辑
摘要:WPF 中命令的 CanExecute 执行逻辑,我一直觉得比较麻烦,画出来就清晰多了,备忘: 阅读全文
posted @ 2012-05-18 09:58 BloodyAngel 阅读(3471) 评论(0) 推荐(0) 编辑
摘要:在 OEA 平台 设计中,需要支持多种数据库,这至少包括了 SqlServer、Oracle、一个单机文件数据库。而之前对于这一块,我们一直没有实现,只是预留了许多接口。昨天花费了一天的时间,让 OEA 支持了本地数据库 SQLCE。 为什么要支持本地数据库呢? 支持开发简单的本地软件。 偶尔需要一些比较小的应用程序,例如“个人计帐管理”、“个人联系方式管理”等。这些... 阅读全文
posted @ 2012-04-25 13:08 BloodyAngel 阅读(5157) 评论(5) 推荐(5) 编辑
摘要:之前做秒杀器的时候,使用的是 WPF 客户端,借助 HttpWebRequest 来实现远程调用。后来看到别人抢火车票的软件是一个 Chrome 插件,发现这样写起来要简单太多了。一直想搞一个插件。今天比较闲,做了一个简单的插件,用于一次性打开多个连续的连接地址,例如这个网页:它一共有 15 页。一页一页点实在太累,这时,可以使用这个插件,点击一下,弹出以下窗口:Url 已经根据当前的连接地址修改好了,调整部分系数,点打开,即在 chrome 里面打开了所有的网页,看完一个关一个就好了:这样一次性加载好,不用点一下等一会儿。有兴趣的朋友可以下载下来玩下,看源码的也行,非常简单,下面是程序和源码 阅读全文
posted @ 2012-03-28 17:10 BloodyAngel 阅读(2245) 评论(2) 推荐(0) 编辑
摘要:本篇博客主要说明如何使用 UI Virtualization(以下简称为 UIV) 来提升 OEA 框架中 TreeGrid 控件的性能,同时,给出了一些学习 UIV 的资源。问题 最近对 OEA 的 TreeGrid 控件进行了比较大的改造,并使用新的控件来替换了系统中所有的 DataGrid 控件。新的 TreeGrid 控件实现了很多新的功能,(之后会写一篇文章说明),但是最后遗留了一个问题:由于使用它替换了原来的 DataGrid,而 DataGrid 默认是支持 UI Virtualization 的,当有些界面的数据量比较大时,没有支持 UIV 的TreeGrid 控件就显得有些. 阅读全文
posted @ 2011-12-12 00:14 BloodyAngel 阅读(10549) 评论(7) 推荐(12) 编辑
摘要:为 OEA 框架 做 WPF 树型表格控件时,浪费了许多时间在一些知识点上,所以写了这篇博客总结一下,和各位博友分享。ICollectionView 接口的简易使用方法 它的 SortDescriptions、GroupDescription 等属性会影响视图的结构,一般情况下会自动刷新。 也可以直接使用 Refresh 方法来命令视图的刷新(内部实现一般为重建内部视图模型集合)。 如果是批量操作,也可以使用 RefreshDefer 方法来抑制多次刷新,待多个更新操作后再统一刷新。CollectionView 相关知识点 实现它的类是 CollectionView,... 阅读全文
posted @ 2011-11-19 19:26 BloodyAngel 阅读(4027) 评论(0) 推荐(4) 编辑
摘要:本文记录对某网站A的秒杀活动编写秒杀器的经历和技术重点。 故事回顾 某日早上,朋友给我说最近A网站在开展秒杀活动,有IPad、IPhone,让大家一起去秒杀。结果我们四个人一起秒,都没有别人快,没有一个人秒到。然后下午我就开始尝试分析它网站的秒杀流程,并尝试使用自动提交数据的方案来进行秒杀。结果,在晚上的时候,成功做出了第一个版本的秒杀器,然后我们一起秒杀了几个IPad(大家都想要IPad,而对... 阅读全文
posted @ 2011-01-07 23:13 BloodyAngel 阅读(10969) 评论(10) 推荐(6) 编辑
摘要:问题描述 今天测试人员提了一个易用性的BUG,主要是说系统目前使用的树型控件不支持自动扩张列的宽度。其实客户那边已经对这个问题提了多次,不过由于对WPF只是入门级,所以一直都没改。这两天项目比较闲,就花了些时间把这个问题改了。原问题如下: 图1 问题描述 背景 树型控件在GIX4系统中已经被大量使用。这个控件是一年前其它同事在网上搜索到,再引入的。 一开始的时候,要解决这个问题,想到的最... 阅读全文
posted @ 2010-08-05 17:58 BloodyAngel 阅读(4336) 评论(6) 推荐(7) 编辑
摘要:用户在使用GIX4某模块的过程中,内存只见加不见减。我们怀疑出现了内存泄漏,所以我花了相当一段时间来进行此问题的排查。 我使用Red Gate公司的产品ANTS Memory Profiler 5进行应用程序的内存进行监视。并在过程中修改程序中出现的一些问题。但是最后留下一个不知道原因的引用,如图1: 图1 泄漏对象引用图 由图中可以看出,Application.Resources永久地引用了... 阅读全文
posted @ 2010-03-25 14:16 BloodyAngel 阅读(2515) 评论(9) 推荐(3) 编辑
摘要:看到这篇博客的朋友,你好。:) 如果你觉得这个问题有点意思,那么请留下你对这个问题的观点。 :) 类似的小问题,还有一个: null != obj 和 obj != null 之间的区别? 阅读全文
posted @ 2010-01-14 19:21 BloodyAngel 阅读(572) 评论(1) 推荐(0) 编辑
摘要:转自《关于静态方法和实例方法的一些误区。》 一、 静态方法常驻内存,实例方法不是,所以静态方法效率高但占内存。 事实上,方法都是一样的,在加载时机和占用内存上,静态方法和实例方法是一样的,在类型第一次被使用时加载。调用的速度基本上没有差别。 二、 静态方法在堆上分配内存,实例方法在堆栈上。 事实上所有的方法都不可能在堆或者堆栈上分配内存,方法作为代码是被加载到特殊的代码内存区域,这个内存区域是... 阅读全文
posted @ 2010-01-05 16:20 BloodyAngel 阅读(345) 评论(0) 推荐(0) 编辑
摘要:起因 使用SmartPhone上的WinForm做了一个WM的小程序,结果放到手机上实际一运行。发现动态生成的控件在里面显示得都非常小,难以看清。 原因 我的问题是需要在InitializeComponent方法结束后,动态生成一些控件,如下:/// <summary>/// 这个方法会根据传入的实体模型,生成一些选择框,设置它们的大小、位置;并会改变其它控件的大小、位置。/// ... 阅读全文
posted @ 2010-01-03 16:20 BloodyAngel 阅读(5251) 评论(4) 推荐(1) 编辑
摘要:我不会IL,也不想学IL,所以为了测试Lambda表达式编译的原理,只能使用调试进行试验来认识: 第一种情况,当Lambda表达式没有用到函数外的变量时:class MyClass2{ public Action TestLambda() { Action action = () => { Console.WriteLine(DateTime.Now); }; return action; } public static void Test() { MyClass2 c2 ... 阅读全文
posted @ 2009-12-25 14:15 BloodyAngel 阅读(536) 评论(0) 推荐(0) 编辑
摘要:预期读者 1. 初学者。 2. 想复习的人。 3. 原来学习并发觉得太复杂,没搞清楚,想以更简单的方式学习的人。 4. 懒得总结的人。 下面,我就以一个比较简单的方式来总结,和你们分享。:)目标 并发控制要做的是协调并发事务的执行,保证数据完整不受破坏,同时避免用户得到不正确的数据。主要目标有以下两个: 1. 保证事务的特性:ACID(Automicity,Consistency,Isolatio... 阅读全文
posted @ 2009-12-22 23:33 BloodyAngel 阅读(2340) 评论(2) 推荐(1) 编辑
摘要:The SortedList<TKey, TValue> generic class is a binary search tree with O(log n) retrieval, where n is the number of elements in the dictionary. In this, it is similar to the SortedDictionary<... 阅读全文
posted @ 2009-12-18 13:40 BloodyAngel 阅读(367) 评论(0) 推荐(0) 编辑
摘要:读写锁是进程同步中经常使用的锁。 在System.Core中ReaderWriterLockSlim类比较好用,它是基于写优先策略的。它还支持从读锁升级到写锁,称为Upgradable Mode. 简单测试代码如下:private static void Test(){ ReaderWriterLockSlim locker = new ReaderWriterLockSlim(); Parame... 阅读全文
posted @ 2009-12-15 16:50 BloodyAngel 阅读(615) 评论(0) 推荐(0) 编辑
摘要:System.Collections.Generic.List is a generic collection designed for performance not inheritance and, therefore, does not contain any virtual members. The following generic collections are designed fo... 阅读全文
posted @ 2009-12-04 20:18 BloodyAngel 阅读(536) 评论(0) 推荐(0) 编辑
摘要:最近,在使用LinqToXml的时候,使用到其中一个重要的类:XName。它表示一个XML元素/XML属性的“名字”。 System.Xml.Linq中的API,大量使用了这个类,如: 不过还好,我们不用每次都显式的new一个XName类的实例,因为它实现了从string类到它的隐式转换:public static implicit operator XName(stri... 阅读全文
posted @ 2009-11-23 15:55 BloodyAngel 阅读(688) 评论(5) 推荐(0) 编辑