上一页 1 ··· 4 5 6 7 8 9 10 11 下一页

2011年2月14日

private 和 protected 构造函数的选择

摘要: 实现单例模式的时候经常要把构造函数标记为private 和protected以防止外部直接通过new操作符 构造一个新的实例众所周知 private 和protected的主要区别就是 后者允许子类调用被标记为protected的方法另外一个常识: 使用new操作符构造一个子类的过程中 .net会先构造一个父类出来 ,如此递归 直到object对象那么也就是说 标记为protected的时候 实际上还是可以通过继承的方式间接的构造父类对象代码如下: (new ClassB的同时也间接的new ClassA了)[代码]private则没有这个问题, 但是! 标记为private以后实际上也就意味 阅读全文

posted @ 2011-02-14 13:11 听说读写 阅读(3814) 评论(1) 推荐(0) 编辑

某项目要调用现有的100多个DLL 三 先解决为一个类型做一个跨域的问题

摘要: 将同类的操作Wrap在同一个类型中,如以下代码: [代码]这是一个简单的wrap 用于调用另外一个dll的OPATest 类 , 同时测试一下代码是否运行在独立的域中构造函数变为Protected的主要原因是禁止直接通过构造函数新建wrap实例,强迫通过DefaultInstance的方式调用代码 (这样才是应用程序隔离的)不变成Private的原因是之后还需要有继承 如果把父类的构造函数设置为private 那么子类也构造不了但是在当前代码中 你应该把protected改为public 才可以正常的运行, 为了解决跨域的问题 将wrap类继承于 MarshalByRefObject ,Opa 阅读全文

posted @ 2011-02-14 11:40 听说读写 阅读(520) 评论(0) 推荐(0) 编辑

面试题:红绿灯

摘要: 已知一个十字路口,1.每次切换红绿灯的时间间隔总是M2.相对的红绿灯总是同样的状态3.相邻的红绿灯总是不同的状态( 即状态要么是 0101 要么是1010 不可能出现其他状态,如1100)4.一个人通过一个人行横道的时间是N (N<M)5.请问一个人任意时间到达路口,到达对角所需的平均时间6.按照国外的情况 只要你上人行道的时候还是绿灯, 那么你就可以一直走过去 (即使下一秒变成了红灯)大意就是碰运气啦 一个人要走到对角 平均需要多久 阅读全文

posted @ 2011-02-14 11:06 听说读写 阅读(922) 评论(2) 推荐(0) 编辑

2011年1月28日

某项目要调用现有的100多个DLL 二 最最简单原型的思考

摘要: 最最简单的原型:假设某个类库提供了一个方法 [代码]Input Onput是两个类, 分别代表了输入输出参数的格式 ,没有实现可序列化Serializable, 不能直接跨域UserManager不是可序列化 不能用Marshal by value的方式跨域操作UserManager没有继承MarshalByRefObject 无法通过Marshal by refrence 的方式跨域操作这里有几个小小的技术难点1.如何让没有实现Serializable的类,变成跨域操作所需的可以序列化的类 (下面的章节解决这个问题) 2.有没有一种简单的方式可以实现跨域的简单代码操作, 就像平常的dll直接 阅读全文

posted @ 2011-01-28 21:16 听说读写 阅读(522) 评论(0) 推荐(0) 编辑

某项目要调用现有的100多个DLL 一 开始

摘要: 某个项目需要使用很多内部其他Team的DLL 和第三方的DLL (大概百来个吧......这是什么鬼啊...可怕的历史,又不能改 这些dll都上生产环境了)如果直接用dll引用之后调用 会有很多很多的问题  1.程序的质量会下降到 这百来个dll中质量最差的一个 (万一某些人在代码里面写什么lock(string) 啊什么的....死啦死啦的)  2.很多dll需要特殊的配置 把这些东西都放在web.config就准备等死吧...也不知道哪些是哪些,维护很容易死人  3.有些dll也许内部做了什么cache啊 或者开了什么socket端口啊 这种东西.. (有个组件TMD的内部缓冲了1G的数据 阅读全文

posted @ 2011-01-28 15:41 听说读写 阅读(671) 评论(1) 推荐(0) 编辑

2011年1月19日

一个简单的封装 .net的日志功能

摘要: 因为项目需要 ,经常自己写一点工具类下面就是一个简单的日志类,支持多线程,不锁定文件,需要CLFS支持,性能非常好0警告 0stylecop代码以下是单元测试代码:代码 阅读全文

posted @ 2011-01-19 15:01 听说读写 阅读(980) 评论(0) 推荐(1) 编辑

2011年1月18日

.net 自带的日志功能 System.IO.Log (读取)

摘要: 那些写出来的日志.....最终保存为二进制数据,直接用文本没法看(可能是为了考虑性能和体积吧)没法子 只好自己再写个功能读取日志了代码虽然很简单 不过不能直接用记事本查看日志还是很麻烦的.... 阅读全文

posted @ 2011-01-18 17:05 听说读写 阅读(1951) 评论(0) 推荐(0) 编辑

.net 自带的日志功能 System.IO.Log (写入)

摘要: 在.net 4.0中 framework自带了一组写日志的类,都位于System.IO.Log 命名空间下其中LogRecordSequence 提供了对公用日志文件系统 (CLFS) 日志的实现(xp不支持...)FileRecordSequence提供了对普通日志文件的支持代码  LogRecordSequence 的性能非常好,注:在我的机器上(windows 2008) 测试写入10000条耗时0.03秒 .(不要每写一条都Flush: 设置参数 RecordAppendOptions.None) PS: 可以将 RetryAppend设置为true开启功能: 文件满的时候,自动生成另 阅读全文

posted @ 2011-01-18 09:56 听说读写 阅读(5936) 评论(1) 推荐(0) 编辑

2011年1月12日

.net 哪些异常是没法catch的?

摘要: 1.StackOverFlowException (一般来说这个不是真的堆栈不够了,而是你的代码出现了无线递归),如果你用throw new StackOverFlowException 还是可以catch的2.OutOfMemoryException (好像只有 box newarr newobj 才会抛出这个异常)3.非CLS的异常(一般来源于本地代码,这些异常不继承于System.Exception)  在.net framework 4.0中默认行为不捕获非CLS的异常  在.net framework 2.0中会把非CLS的异常包装为System.Exception的之类(可以cat 阅读全文

posted @ 2011-01-12 09:41 听说读写 阅读(691) 评论(4) 推荐(2) 编辑

2011年1月10日

.net 虽然他们catch了异常,我们还是能知道的

摘要: 有的时候某些人的代码会把异常吃掉(catch以后不rethrow....)以下代码可以获取所有的异常...即使他们catch以后什么也不做代码PS: 其实拿来做log也不错..除了几种保留类型以外,其他异常都触发这个事件(某些异常是没法catch的) 阅读全文

posted @ 2011-01-10 10:58 听说读写 阅读(561) 评论(2) 推荐(0) 编辑

2011年1月7日

常见的Lambda表达式引起的闭包问题

摘要: 以下代码的原意是想找出list中满足Name字段包含t, Remark字段包含mark的数据代码不过实际情况是data中间一条记录都没有而hardcode算出来的data2中有3条记录原因如下:  这个lambda表达式 Where(p=p.Name.Contains(val)) , 实际上只是保留了一个指向函数外部的val的引用 , 他这个时候并没有把val的真实的值拷贝进来  真正去读取val值的时候是 lambda.ToList() 这个时候才真正执行lambda表达式取数据,过滤数据 ,也是这个时候才去读取val的值  而在foreach的第二次操作的时候 val的值被覆盖mark了 阅读全文

posted @ 2011-01-07 14:42 听说读写 阅读(1874) 评论(0) 推荐(0) 编辑

Lambda动态附加条件和排序语句 (可用于linq to sql)

摘要: 一种常见的情况, 使用linq-to-sql 或者lambda(Entity framework)去数据库取条件的时候需要附加多个条件或者排序语句以 Name="John" Age=23 为例先明确一个概念 对于Lambda来说 以下两个表达式是等价的  1. list.Where(p=p.Name=="John" && p.Age==23)   2. list.Where(p=p.Name=="John" ).Where(p=p.Age==23)lambda表达式只是创建了一个方法的定义 实际上并没有执行真正的执行一般等到ToList()方法(内部其实是IEnumerableT)被 阅读全文

posted @ 2011-01-07 14:00 听说读写 阅读(8349) 评论(3) 推荐(1) 编辑

CLR via C# 读书笔记 6-4 监控AppDomain资源使用

摘要: 可以通过将AppDomain.MonitoringIsEnabled 设置为true开启监控域的资源之后可以通过访问以下属性获取域的资源消耗  1. MonitoringSurvivedMemorySize 2. MonitoringSurvivedProcessMemorySize 3. MonitoringTotalAllocatedMemorySize 4. MonitoringTotalProcessorTime不过这里有些非常恶心的地方  1. 开启监控是全局的..你不能只能只监控某个域  2. 开了就关不掉了....如果在将MonitoringIsEnabled 设置为ture以后 阅读全文

posted @ 2011-01-07 11:41 听说读写 阅读(1126) 评论(0) 推荐(0) 编辑

2011年1月6日

CLR via C# 读书笔记 6-3 跨域访问的性能问题

摘要: 以下代码演示了跨域访问的性能问题大约不跨域比跨域快100多倍....代码test result in my machine:10117532 阅读全文

posted @ 2011-01-06 15:29 听说读写 阅读(1286) 评论(0) 推荐(0) 编辑

CLR via C# 读书笔记 6-2 不同AppDomain之间的通信

摘要: 跨AppDomain通信有两种方式  1.Marshal By reference : 传递引用  2.Marshal By Value : 把需要传递的对象 通过序列化反序列化的方式传递过去(值拷贝)    只有标记为 可序列化 Serializable 的类才能通过 Marshal By Value的方式通信以下代码描述了几种跨域通信的情况1.AppDomain是CLR的内部行为,windows完全不清楚有AppDomain的存在2.在新的域中加载Assembly和Type最好用完整限定名(如果直接加载Type, CLR会自动加载Type所在的和所用到的Assembly)3.默认情况下新建 阅读全文

posted @ 2011-01-06 14:00 听说读写 阅读(3750) 评论(0) 推荐(0) 编辑

上一页 1 ··· 4 5 6 7 8 9 10 11 下一页

导航