01 2011 档案

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

posted @ 2011-01-28 21:16 听说读写 阅读(523) 评论(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 听说读写 阅读(675) 评论(1) 推荐(0) 编辑

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

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

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

posted @ 2011-01-18 17:05 听说读写 阅读(1954) 评论(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 听说读写 阅读(5950) 评论(1) 推荐(0) 编辑

.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 听说读写 阅读(694) 评论(4) 推荐(2) 编辑

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

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

常见的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 听说读写 阅读(1877) 评论(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 听说读写 阅读(8355) 评论(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 听说读写 阅读(1127) 评论(0) 推荐(0) 编辑

CLR via C# 读书笔记 6-3 跨域访问的性能问题
摘要:以下代码演示了跨域访问的性能问题大约不跨域比跨域快100多倍....代码test result in my machine:10117532 阅读全文

posted @ 2011-01-06 15:29 听说读写 阅读(1287) 评论(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 听说读写 阅读(3759) 评论(0) 推荐(0) 编辑

CLR via C# 读书笔记 6-1 AppDomain(应用程序域)
摘要:每一个托管程序启动的时候都会至少启动一个默认生成一个AppDomainAppDomain提供了隔离的功能  1)一个应用程序域不能直接访问其他应用程序域中的对象  2)应用程序域可以被卸载, 你无法卸载一个已经加载的程序域,不过你可以选择卸载一个应用程序域  3)应用程序域可以拥有独立的权限  4)应用程序域可以拥有独立的配置(app.config 什么的....)一般来说,如果两个应用程序域加载了同样的dll(例如System.dll) 那么这个被加载的dll需要2倍的内存并同时存在于这两个应用程序域.有些Assembly是应用程序域中立的(例如MSCorLib.dll) ,这些dll在被多 阅读全文

posted @ 2011-01-06 11:52 听说读写 阅读(492) 评论(0) 推荐(0) 编辑

面试题 M大小的数组中选出前N个元素
摘要:已知一个大小为M的数组 里面放着M个整数现在要找出前n个最大的元素问: 最优的算法,时间复杂度和空间复杂度解法有很多,最好的不好找, 这里随便先举几个一般的: 1.先给M的数组做一次排序 那么前n个元素就是结果, 假设用快速排序 那么时间复杂度就是 M*logM 2.已知使用冒泡法找出最大的一个元素, 需要M次, 那么找出N个,就需要M*N ,如果N很小这个算法就很优化补充以下是个人觉得最好的算法(快速排序的一部分)随机在m中挑选一个值, 然后比m小的放在m左边, 比m大的放在m右边假设右边有c个元素, 如果c小于5个, 在左边的元素中继续寻找 最大的n-c个元素,否则丢弃所有左侧元素,... 阅读全文

posted @ 2011-01-01 12:58 听说读写 阅读(1919) 评论(1) 推荐(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
点击右上角即可分享
微信分享提示