摘要: 本文分析了现下各架构CPU内存访问模型的原则及实现, 内存访问指令的重新排序, 及其对.NET框架的影响, 尤其是编写单例模型的过程中应该注意的问题. 另外, 在编程之余, 将本文作为一篇对CPU模型的浮光掠影式的了解材料, 换换思路也是不错的. 阅读全文
posted @ 2010-02-03 22:47 Jeffrey Sun 阅读(4957) 评论(26) 推荐(10) 编辑
摘要: 本文简单介绍了显示DWFx文档的WPF DocumentViewer控件, 介绍了XPS Packaging类库的组织和几个重要的类, 揭示了从DWFx到XAML的转换过程中, 针对于自动化的系统需求, 所需要的数据和转换. 最后提供了一个DWFx 解包, 转换的类库, 并且提供了一个简单的演示程序. 阅读全文
posted @ 2010-01-25 23:59 Jeffrey Sun 阅读(5016) 评论(9) 推荐(4) 编辑
摘要: 上一篇文章简单介绍了DWG格式的历史, 现状, 以及互操作的选择. 在本篇中,详尽的分析了XPS规范的框架,内容,组织结构, DWFx文件的特有数据和结构, 以及从DWG文件转换为DWFx文件的步骤和应该注意的问题. 阅读全文
posted @ 2010-01-20 22:36 Jeffrey Sun 阅读(7467) 评论(7) 推荐(2) 编辑
摘要: 本文作为本系列的第一篇, 以时间为轴, 浅析了AutoDesk公司的AutoCAD软件的主力格式DWG, 在历史上的发展, 现状, 以及向其他格式转化的途径及可能. 阅读全文
posted @ 2010-01-16 10:41 Jeffrey Sun 阅读(4499) 评论(7) 推荐(6) 编辑
摘要: 最近在看Dictionary的源代码的时候, 突然想到Dictionary的不当使用中有一种隐含内存泄漏的可能. Dictionary的.NET实现有一个隐含的特性比较容易让人忽略, 那就是它对于存储数据的定位方式. Dictionary是通过对键的哈希值进行散列计算, 从而确定其对应的值存放的位置. 而Dictionary内部的添加/删除/修改操作, 都完全地依赖于这一定位方式. 这个定位方式, 在Dictionary源代码中体现为FindEntry()操作. 阅读全文
posted @ 2010-01-13 23:48 Jeffrey Sun 阅读(2404) 评论(3) 推荐(3) 编辑
摘要: 在不常见的情况下, 我们往往需要在团队项目之间迁移更改.在推荐的情况下, 同一个codebase的所有不同版本或者branch的源代码要放在同一个团队项目下, 这样方便源代码的分支/合并操作, 也同样方便工作项和代码更改集的关联. 但是, 在某些公司特定策略也可能是历史遗留策略的要求下, 在TFS上, 往往带来不好的实践. 比如, 给某些特定版本的源代码创建单独的团队项目来管理, 使TFS本身的合并分支操作难于在Team Projects之间进行, 必须特别注意创建项目时候的选项. 那么如何在独立的团队项目之间迁移更改呢? 阅读全文
posted @ 2010-01-12 14:04 Jeffrey Sun 阅读(1793) 评论(1) 推荐(1) 编辑
摘要: 在某些场景下, 对于内存数据结构, 当需要用多个键值来唯一确定一个值的时候, 我们经常会面临这样一个选择: * 组合键: 将多个键组合成一个组合键, 在一个词典中存储和定位数据; * 多级词典: 使用多级词典, 在多级词典中依次保存键-词典的键值对, 定位数据时由键依次确定下一级词典, 最终确定所在的数据; 抛开内存数据的空间效率不谈, 以上这两类做法的主要时间效率影响在于: * 使用多级词典可以降低散列冲突及计算的时间消耗, 由于人为地添加了数据的分类, 数据散列的冲突概率也被大大降低. * 使用多级词典在创建子Dictionary的时候带来额外的时间消耗, * 使用多级词典可能会影响散列的数据均匀度, 这方面的影响类似于桶算法中的均匀度. 不均匀的桶长度会降低散列的效率. * 使用组合键时所采用的组合键生成算法的生成效率和算法对散列值分布的影响. * 在线程安全的要求对性能的影响. 在加锁的情况下, 锁的申请和释放对时间性能也有比较大的影响. 那么, 综合这些因素, 最终哪种做法会有比较好的性 阅读全文
posted @ 2010-01-09 21:58 Jeffrey Sun 阅读(3024) 评论(4) 推荐(3) 编辑
摘要: 工作中遇到了一个关于ListBox的问题. 简单描述一下: 使用ListBox来显示某对象集合, 在排版的时候, 发现无论怎么调整ListBox的属性, 都无法让ListItem充满整个空间; 令人郁闷的是,ListItem中排放的TextBlock/TextBox总会根据自身文本的大小, 自动设定自己的长度; ListItem中的所有控件都自动向左对齐,造成了一副"甘特图"式的图像...... 阅读全文
posted @ 2009-03-04 00:03 Jeffrey Sun 阅读(2406) 评论(7) 推荐(0) 编辑
摘要: 其实这个话题已经有很多文章了. 看了博友一篇抽象工厂的文章, 利用.NET的反射特性, 避免使用if else判断, 从而为对象的创建解耦. 考虑到性能问题, 不禁自己想写一篇, 只是为了有机会的时候 阅读全文
posted @ 2009-01-11 15:41 Jeffrey Sun 阅读(757) 评论(3) 推荐(0) 编辑
摘要: 我们程序的威胁来自于各个方面.在互联网高度发达的今天, 安全性问题已经是企业软件开发所必须面对的最重要的问题. 阅读全文
posted @ 2008-12-15 16:50 Jeffrey Sun 阅读(4087) 评论(17) 推荐(1) 编辑
摘要: 这不是一篇关于windows服务和注册表编辑的全面解释文章。-------------------------------------------------------------我们知道, 在C#代码中启动一个已经存在的windows服务,我们可以用这样的代码来完成://ACPI is an example of service nameSystem.ServiceProcess.Servic... 阅读全文
posted @ 2008-08-19 10:08 Jeffrey Sun 阅读(3916) 评论(2) 推荐(0) 编辑
摘要: 这个系列的第一篇文章,向大家演示了一个最简单的WiX实例.这一篇开始,作为一个逻辑上的延展,我们有义务让WiX引擎知道去哪里取得需要打包的文件. 更深入的,我们需要让WiX在编译生成的时候,动态的知道一些信息... 阅读全文
posted @ 2008-08-12 11:19 Jeffrey Sun 阅读(5015) 评论(3) 推荐(0) 编辑
摘要: 如果说Windows Server 2008是一堆狗屎, 那么SCOM就是这堆狗屎上的一朵奇葩. -题记 阅读全文
posted @ 2008-08-07 10:18 Jeffrey Sun 阅读(12517) 评论(5) 推荐(1) 编辑
摘要: 估计写这么个题目会被扔鸡蛋, 因为实在是太大了. 各位不要期望太高啊,我写这东西,就是为了给自己个备忘. 你们要是把它当垃圾看, 说不定还能发现点什么东西. 言归正题. 说实话, .NET... 阅读全文
posted @ 2008-08-01 11:10 Jeffrey Sun 阅读(2648) 评论(2) 推荐(1) 编辑
摘要: 记得3年前还在上一家公司的时候, 一天下午一个哥们很激动的在偶旁边念叨"散列表真是个好东西,散列表真是个好东西...."绵绵不绝, 偶石化继而抓狂,奋起曰:"你复读机啊你复读机啊你复读机啊...". 散列表不是复读机, 散列表更像是一个大池子(但是不是所有的大池子都可以认为是散列表). 这个特殊的大池子有这样的特点, 它的容量总是要比你想要存储的元素数量大, 它能利用大出一部分容量的特点, 让你能更加快速的查找定位某一元素. 阅读全文
posted @ 2008-07-29 14:01 Jeffrey Sun 阅读(1259) 评论(0) 推荐(1) 编辑