10 2011 档案

【设计原则和建议】 lock
摘要:lock是.net中最常用的锁了解lock机制,引用类型,值类型,字符串和应用程序域的朋友可能对以下的内容都很熟悉了1.先来看看推荐的lock代码 class LockDemo { private static object asyncLock = new object();//使用static object作为互斥资源 public static void Test() { lock (asyncLock)//保证该方法是线程安全的 { // 程序代码 ... 阅读全文

posted @ 2011-10-20 23:38 听说读写 阅读(2234) 评论(14) 推荐(3) 编辑

【高性能web开发】 网络传输环节
摘要:【高性能web开发】将会是一个系列.从html,js,css等前端,到HTTP/TCP等网络传输环节.从Asp.net等应用服务器语言到数据库优化.从架构设计到第三方组件和解决方案的应用.之后大约还有4-5篇Blog和高性能web开发有关.【高性能web开发】 网络传输环节1.减少请求数.缓存,使用Expires等设置过期时间;如果内容没有过期就不发送请求合并小体积内容,例如吧数量众多的小图片放在一个图片,之后用css部分呈现(大体积的内容就别合并了)延迟加载;部分内容,例如图片在页面呈现的时候才加载 (常用的就是滚动条到了以后才加载);减少不必要的请求合并重复内容和文件考虑使用第三方CDN资 阅读全文

posted @ 2011-10-18 10:28 听说读写 阅读(3044) 评论(4) 推荐(7) 编辑

【项目】 技术选型 - 平台和语言
摘要:又是一个很有争议的话题世界上有这么多的技术平台和解决方案; windows, linux, .NET, java, PHP, C++, C, Python 等等等。。在实现项目时,为什么我们选择其中一个,而不是其他呢?1.团队现有团队的组成 (对大部分情况来说 决定性因素)组建新团队的难度市场上是否容易找到该技术类型的人,(有些方面的人在公司所在地或者说国内不好找)如果找不到该类型的人,是否容易培养2.适应性在某些特定领域,某种技术有特别的优势或者劣势 (例如一般不会吧C++拿来做网站)由于历史原因,在某些行业,某种技术有特别的优势目标平台和语言本身的成熟度第三方支持,如商业公司,组件和解决方 阅读全文

posted @ 2011-10-16 12:40 听说读写 阅读(467) 评论(0) 推荐(0) 编辑

【设计原则和建议】 字段
摘要:希望和大家分享和讨论字段的设计思想和原则,共同进步。1.不要依赖字段的初始化顺序 class FieldDemo { private int id = 1;//通过某中方法获取Id的值 private ClassF f1 = new ClassF(1);//不要在这里依赖其他成员和执行顺序 public FieldDemo() { //在构造函数里面设置依赖关系和执行顺序 id = 1; f1 = new ClassF(id); } } ... 阅读全文

posted @ 2011-10-16 11:31 听说读写 阅读(1486) 评论(4) 推荐(1) 编辑

【设计原则和建议】 属性
摘要:基本1.在.NET中属性的本质实现是方法虽然本质是方法,不过当作互斥变量来使用还是挺方便的,(如Hashtable.SyncRoot)2.属性应该表现出相对静态的特征在没有其他代码干扰的时候,访问一个属性无论多少次 应该返回同样的结果 (DateTime.Now就是一个错误的设计)3.属性get方法一般不抛出异常现在很多地方使用到了延迟加载的设计,所以某些时候还是会抛出异常的4.谨慎使用集合类型的属性如直接返回List<T> 此类的元素可能,可能导致内部成员在外部被修改尽量把集合类型的属性设计为只读的(没有set)遍历集合类型的属性可能导致性能问题 public static L. 阅读全文

posted @ 2011-10-15 12:59 听说读写 阅读(1272) 评论(0) 推荐(3) 编辑

【设计原则和建议】 方法返回值
摘要:基本规则1.不要忽略返回值;如果不想处理返回值,就选择没有返回值的方法(如果有的话)2.公开给第三方的方法返回值类型在满足功能的情况下,尽量选择父类和接口,而不是具体类型 (面向对象的封装性)这点可能有很大的争议,我区分为对外的和对内的方法 (对内请看No.3)返回子类,意味要把子类的细节也暴露出去使用接口返回具体类型,就不用暴露细节了 public class ClassP //请忽略嵌套类的设计问题 { protected internal class User : IUser//我不想暴露User类的细节给外部 注:也可能是private等的访问性 ... 阅读全文

posted @ 2011-10-14 19:53 听说读写 阅读(3095) 评论(6) 推荐(1) 编辑

【设计原则和建议】 方法
摘要:方法 1.一个方法内的代码不能超过30行.绝大部分方法都可以在30行内结束.这是一种强迫开发者优化设计和代码的方式. 2.什么样的方法不应该抛出异常?静态构造函数,抛出以后整个类型就再也无法使用了.构析函数.属性的get方法 (有些类的设计会违背这个特性).Dispose (理论上也不应该抛出异常,不过有些设计已经抛出了异常). 3.还没有实现的方法应该抛出NotImplementedException 异常. 4.移除没有被调用到的方法 . 5.方法命名推荐Pascal命名.推荐动词+名词方式 例如 GetUser, DisableUser如果在类的实例方法上,推荐动词做方法名... 阅读全文

posted @ 2011-10-12 13:40 听说读写 阅读(4631) 评论(11) 推荐(7) 编辑

【设计原则和建议】 方法输入参数
摘要:个人在多年的开发中对设计有一些自己的想法,在此总结出一些规则希望和大家共同探讨当然很多设计大家应该已经知道了,当然对于某些设计可能每个人有不同的看法本系列文章不是为了讨论基本的语法,而是介绍和讨论一些设计的规则1.在允许的情况下,优先使用父类作为参数类型其好处是允许该函数有更大的适用范围,有更多的第三方可以调用该方法 (原来持有父类和其他子类变量的第三方现在也可以调用了)(可别为了更大的参数范围把变量都声明为Object了) class InputParameter { //如果可以 参数类型优先选择父类 public void Method1(IEnumer... 阅读全文

posted @ 2011-10-11 10:13 听说读写 阅读(2153) 评论(10) 推荐(4) 编辑

一次HTTP请求中的缓存
摘要:一个HTTP Request从用户点击的一瞬间,到服务器返回请求,一般会经过以下类型的缓存(按照由客户端到服务器端的顺序)1.浏览器端存储:HTML5中的本地存储功能允许在浏览器端保存数据.Flash等第三方插件也有类似的功能.JavaScript保存一些数据在当前Context也算这种类型.2.浏览器端文件缓存HTTP协议中在时间未过期等情况下,不请求服务器数据而直接使用本地的文件 (请参考HTTP协议中关于缓存控制的部分)常用于htmlJavaScriptcss等文件的缓存,以减少请求次数3.HTTP缓存304:HTTP协议中,如果服务器文件未发生变化,不返回用户请求的数据,而只是返回一个 阅读全文

posted @ 2011-10-10 12:00 听说读写 阅读(5822) 评论(6) 推荐(6) 编辑

如何扩展Visual Studio 的编译时功能
摘要:很多时候会想在vs编译的时候自定义一些事情或者动作,例如: 拷贝生成的文件到特定的目录。 部署程序到测试目录或者环境,例如注册到windows服务,更新GAC等。 根据编译环境生成特定的配置文件(例如web.config) PS: 身在一个复杂环境, 这是我最想要的功能。 自动执行外部exe。 同步DLL和其他资源文件。1.最简单的自然是用Visual Studio自带的编译事件,这东西使用方便,又是Visual Studio自带的功能,就是功能弱了一点(好吧 其实是很弱)将项目生成的DLL文件拷贝到特定目录,(如果你想拷贝一整个文件夹 用xcopy; 当然,熟悉命令行的人可以弄出更... 阅读全文

posted @ 2011-10-07 11:06 听说读写 阅读(4303) 评论(7) 推荐(4) 编辑

WCF 常见逻辑和代码 2.参数检查 BeforeCall And AfterCall
摘要:这段代码可以直接在wcf4.0中跑...需要的人就拷贝走吧...我经常也会忘记代码..做个备份虽然.net已经内置了一些类型用于检查输入参数 例如DataLengthAttribute不过毕竟功能有限,实现自己的参数检查会更强大点.有些东西是内置无法实现的, 例如在输入的时候检查权限,Request还有记录运行时间等以下是C#代码(这里只是一种实现, IParameterInspector 还可以被应用到其他的地方 例如面对EndPoint和Attribute)View Code public class ValidationBehaviorSection : BehaviorExte... 阅读全文

posted @ 2011-10-07 10:33 听说读写 阅读(638) 评论(0) 推荐(0) 编辑

WCF 常见逻辑和代码 1.错误处理和配置
摘要:这些东西都很多人写过了.....放在这里只是做一个备份,要用的时候找的到 - -#需要的人直接拷贝代码就可以运行了注意只能运行在WCF 4.0中...因为为了少些点.....以下是c#代码用于定义错误处理View Code public class ErrorHandler : IErrorHandler {#if DEBUG public static ConcurrentDictionary<DateTime, Exception> ExceptionList = new ConcurrentDictionary<DateTime, Exception>();#.. 阅读全文

posted @ 2011-10-07 10:23 听说读写 阅读(526) 评论(0) 推荐(0) 编辑

继续算法 哈希Hash (一) 概述
摘要:概述哈希表是非常常用的一种数据结构和算法其o(1)的查询时间复杂度让它可以傲视大部分其他算法这里是一些常见的数据结构的查询复杂度冒泡o(n) 二分法o(logn) [已经排序的数据]数组o(1)基本原理哈希表的主要原理就是hash值的计算hash vlaue =f(key)其中f() 可以视为o(1)复杂度 (通过 映射hashvalue 和内存地址,就可以在o(1)时间内完成查询)当然 hash函数要保证hash值的不重复, (为了性能,还要考虑分布的连续性等)具体Hash函数是怎么实现的之后再介绍,总体来说数组和Hash都可以达到o(1)的复杂度相比Hash来说,在数据量很大的情况下,数. 阅读全文

posted @ 2011-10-03 16:31 听说读写 阅读(326) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示