上一页 1 2 3 4 5 6 7 8 ··· 11 下一页

2011年10月16日

【项目】 技术选型 - 平台和语言

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

posted @ 2011-10-16 12:40 听说读写 阅读(455) 评论(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 听说读写 阅读(1482) 评论(4) 推荐(1) 编辑

2011年10月15日

【设计原则和建议】 属性

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

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

2011年10月14日

【设计原则和建议】 方法返回值

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

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

2011年10月12日

【设计原则和建议】 方法

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

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

2011年10月11日

【设计原则和建议】 方法输入参数

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

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

2011年10月10日

一次HTTP请求中的缓存

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

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

2011年10月7日

如何扩展Visual Studio 的编译时功能

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

posted @ 2011-10-07 11:06 听说读写 阅读(4283) 评论(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 听说读写 阅读(635) 评论(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 听说读写 阅读(521) 评论(0) 推荐(0) 编辑

2011年10月3日

继续算法 哈希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 听说读写 阅读(320) 评论(0) 推荐(0) 编辑

2011年9月27日

visual studio 2010 中加载SOS失败

摘要: 尝试在visual studio 2010 中加载SOS失败错误提示如下:Error during command: extension C:\Windows\Microsoft.NET\Framework64\v4.0.30319\sos.dll could not load (error 193)原因是。。。visual studio是32的应用程序,如果应用程序是64位,那就会出现这个错误只要把应用程序的目标平台改成x86就ok啦 阅读全文

posted @ 2011-09-27 23:47 听说读写 阅读(453) 评论(0) 推荐(0) 编辑

2011年9月26日

一个挺有意思的Javascript小问题

摘要: 先来看以下3段代码 1 var firstName = "Mark"; 2 (function DisplayFirstName() { 3 console.log(firstName); 4 })();//必然输出 Mark 5 6 var lastName = "Aut"; 7 (function DisplayLastName() { 8 var lastName = "Bru"; 9 console.log(lastName);10 })();//必然输出 Bru, 本地作用域的优先级高于全局作用域11 12 //那么下面这段 阅读全文

posted @ 2011-09-26 11:44 听说读写 阅读(573) 评论(4) 推荐(0) 编辑

2011年9月23日

从一次意外的堆栈溢出异常说开来 (一)

摘要: 今天有一个朋友告诉我他的程序发生了StackOverFlowException可是查来查去不知道为什么,就一段递归代码几个人阅读过似乎都没有问题以下是简化版的代码 (真实的代码复杂很多,不过大意如下) static void Test(int i) { if (i > 20000)//或者其他退出条件 { return; } Test(i + 1); } static void Main() { ... 阅读全文

posted @ 2011-09-23 22:13 听说读写 阅读(687) 评论(3) 推荐(0) 编辑

2011年9月20日

.net 继承&多态情况下,调用方法的判断规则

摘要: 从子类开始,一直向父类递归如果方法声明在接口上,那么返回这个方法如果方法声明在父类上,如下所示 如果给定的方法是override,那么返回虚方法 (被override的方法) 如果给定的方法是new的 (注意,默认就是new), 那么将返回该方法本身, (在IL中可以看到newslot) 如果该方法没有被定义在当前类型中,那么返回开始分析当前类的父类以下是原文,我的翻译有改动部分内容If the method is declared on an interface, returns the method.If the method is defined in a base class, ... 阅读全文

posted @ 2011-09-20 22:22 听说读写 阅读(1291) 评论(1) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 ··· 11 下一页

导航