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

2011年1月6日

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 听说读写 阅读(490) 评论(0) 推荐(0) 编辑

2011年1月1日

面试题 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 听说读写 阅读(1909) 评论(1) 推荐(0) 编辑

2010年12月31日

微软面试题 状态机

摘要: 已知 圆盘上有4个开关 分布在正方形的4个角上1.每个开关都只有两个状态 开或者关 ; 触摸一下开关 它的状态就会互相转换(开-关 关-开)2.你看不到现在开关的状态是什么,你也不能通过触摸判断现在的开关是开还是关3.每一次操作你可以选择改变一个开关的状态,或者改变两个开关的状态4.操作完成后 ,圆盘会随机转动, (也就是说你下一次操作的时候这些开关的位置都已经移动了)5.由于正方形的相邻点和对角点距离不一样 ,那么在你改变两个开关的时候,你可以通过这个判断你改变的是对角点还是相邻点6.当开关完全打开或者完全关闭的时候, 外面有个灯就会亮起来, 那么恭喜你 你搞定了问:有没有一种严格的流程 阅读全文

posted @ 2010-12-31 09:45 听说读写 阅读(1739) 评论(2) 推荐(1) 编辑

2010年12月22日

面试:等车时间

摘要: 已知我家门口的公交站有两班公交车.其中一辆每隔M分钟经过我家门口.另外一辆每隔N分钟经过我家门口.我随便等到一辆车都可以坐车去上班....那么平均情况下 我要等多久 才能等到一辆车??应用场景是在做地图寻路算法的时候....要计算等车时间, (用于估计你要多久才能到达目的地).一个很简单的提示:如果只有一辆车M,平均时间是M/2,如果多了一辆车n...用的时间必然小于M/2.PS: 有很多朋友会认为答案是(M+N)/2 这明显是不对的 因为我只要随便等到一辆车就能上班了.PS: M*N/(M+N)也是错的.PS:我也不知道什么时候出门等车啦 ,也不知道m和n什么时候发车,反正就是随机的.附上一 阅读全文

posted @ 2010-12-22 22:52 听说读写 阅读(922) 评论(3) 推荐(0) 编辑

2010年12月21日

OData 1-5 OData语法(下)

摘要: 接上篇 http://www.cnblogs.com/PurpleTide/archive/2010/12/21/1912299.html 7) $expand 包含属性和关系  假设的WagerInformation拥有一个属性 UserInformation User 表示用户信息, 另一个属性 IEnumerableCommonInformation Commons 表示评论信息  使用 http://localhost:9527/ODataService.svc/WagerInformations?$expand=User ,Commons   返回的信息中就会包含相 阅读全文

posted @ 2010-12-21 11:46 听说读写 阅读(12215) 评论(1) 推荐(2) 编辑

OData 1-4 OData语法(上)

摘要: 假设目前提供OData的服务地址是http://localhost:9527/ODataService.svc提供的服务内容如下所示 (提供了一个WagerInformations)代码1.基础查询   1)列出所有的WagerInformations    http://localhost:9527/ODataService.svc/WagerInformations  2)按照主键查询    http://localhost:9527/ODataService.svc/WagerInformations(1)    PS:在.net里面一般使用DataServiceKeyAttrib 阅读全文

posted @ 2010-12-21 10:51 听说读写 阅读(26409) 评论(3) 推荐(0) 编辑

2010年12月20日

OData 1-3 自定义身份验证和OData

摘要: 和windows身份验证相比,在实际程序中应用更多的是自定义身份验证1.在WCF服务内做身份验证 代码这里我目前还有一些疑问,例如这里客户端的数据是非结构化的,虽然方法名称 列名什么都有,但是要自己实现分析代码以确定客户访问的是什么权限(例如什么表 什么列) 总归是麻烦的希望有微软官方的实现或者第三方实现(目前我还没有找到)2.使用HttpModule做验证.  其实这个方法实现和wcf内实现是一样的...只是放的地方不一样而已3.OAuth WRAP 阅读全文

posted @ 2010-12-20 18:06 听说读写 阅读(3735) 评论(0) 推荐(0) 编辑

OData 1-2 windows 身份验证和OData

摘要: windows 身份验证和OData1.服务器端  1) 集成身份验证    在使用IIS作为服务宿主的情况下,需要打开集成身份验证,关闭匿名身份验证    windows身份验证要求请求中包含以下的http header: (以下例子是服务器发生401时给客户端的错误提示)    WWW-Authenticate: NTLM     WWW-Authenticate: Negotiate    其中NTLM意味着你需要使用windows身份验证    Negotiate意味着客户端可以尝试Kerberos身份验证  2)基本身份验证    当你把IIS配置为基本身份验证的时候    服务器返 阅读全文

posted @ 2010-12-20 16:43 听说读写 阅读(3295) 评论(0) 推荐(1) 编辑

OData 1-1 入门:实现一个简单的OData服务

摘要: 1.什么是OData:开放数据协议(OData)是一个查询和更新数据的Web协议。OData应用了web技术如HTTP、Atom发布协议(AtomPub)和JSON等来提供对不同应用程序,服务和存储的信息访问2.OData 优势(个人看法)  1)一种通用的跨语言的协议,  2)基于.net的实现可以非常方便的实现一些功能(例如在客户端使用lambda表达式, 使用odata 传递请求到server,最后服务器返回一个结果集 , 注意 过滤排序什么操作是在服务器实现的,我个人觉得这个功能封装的很彻底,实现也很酷)以下代码就是一个最简单的OData的实现代码如果需要对多个不同对象实现OData 阅读全文

posted @ 2010-12-20 15:08 听说读写 阅读(12317) 评论(3) 推荐(2) 编辑

2010年12月13日

CLR via C# 读书笔记 5-7 GC的工作模式

摘要: 垃圾回收目前支持两种工作模式, 并且在进程运行过程中无法修改这个工作模式1.工作站模式,该模式为客户端应用程序优化,GC假设当前机器上还有其他应用程序并且它们都没有完全占用CPU,工作站还有两个子模式  1)支持同时收集    会有更好的交互体验,因此适用于GUI应用程序,通常这个模式会占用更多的内存,并且性能更差  2)不支持同时收集2.服务器模式,该模式为服务器端应用程序优化,该模式假设当前应用程序是服务器上唯一的应用程序,该模式会导致托管堆被分隔为多个部分,每一个CPU一份.并且这些部分是可以并行执行的,默认情况下应用程序运行在工作站模式,并且支持同时收集(Asp.net和Sqlserv 阅读全文

posted @ 2010-12-13 17:42 听说读写 阅读(775) 评论(0) 推荐(0) 编辑

2010年12月10日

CLR via C# 读书笔记 5-6 垃圾回收的Generation

摘要: 直接用代码和注释说明问题吧~~代码第一次感觉一个对象的Finalize要等这么久....当然,如果在0代对象的时候就被回收了 就没这么麻烦了- -# PS:GC的简单逻辑:  1.遍历Generation 0 没用的拉出去杀掉,还有用的升级到Generation 1 ,  2.如果空间已经过了, 就不继续回收了 ,返回  3.如果空间还不够或者Generation 1 也满了, 把G1没用的拉出去烧了祭天,然后还活着的升级到G2  4.如果有必要 继续回收G2...如果g2也不够了 那么就OutOfMemoryException ....  参数:GC在初始化完成的时候Generation 0 阅读全文

posted @ 2010-12-10 10:30 听说读写 阅读(401) 评论(0) 推荐(0) 编辑

2010年12月9日

CLR via C# 读书笔记 5-5 预留大内存

摘要: 在进行需要很大内存空间的计算时,非常容易发生OutOfMemoryExceptionSystem.Runtime.MemoryFailPoint提供了在运行需要大内存的计算前进行内存检查的功能在调用该方法的时候执行了以下步骤(如果不完全确定所需的内存大小,可以传近似值)1.检查系统的页面文件是否有足够大的可用空间,检查进程中是否有足够的连续虚拟地址空间2.如果这里没有足够的空间,就会启动GC尝试回收一些内存3.如果GC之后依然没有足够的页面文件空间,,尝试扩大页面文件,如果页面文件大小还是没法达到要求,抛出InsufficientMemoryException4.如果进程中没有足够的连续虚拟地 阅读全文

posted @ 2010-12-09 15:44 听说读写 阅读(986) 评论(0) 推荐(0) 编辑

CLR via C# 读书笔记 5-4 在使用非托管资源情况下的GC

摘要: 有些时候,非托管资源会占用大量的内存, 而托管资源只占用一点资源,那么GC很难估计是否应该对这个资源进行垃圾回收,因为很难满足原来提到过的GC回收的条件(例如Gnereation 0 满了)为了解决这个情况,GC提供了以下两个方法[代码]所有包含大型非托管资源的托管类应该使用这些方法告诉GC他们准备使用多少内存由此,GC在内部监控内存压力,当内存压力很大的时候,就会执行一次GCGC.AddMemoryPressure 和 HandleCollector.Add其实内部也是使用GC.Collect方法来回收内存过多的调用GC.Collect在这里会造成性能损耗,不过性能损耗总比程序崩溃来的好.. 阅读全文

posted @ 2010-12-09 14:46 听说读写 阅读(315) 评论(0) 推荐(0) 编辑

2010年12月8日

CLR via C# 读书笔记 5-3 对象复活(Resurrection)

摘要: 1. 对象复活当GC想调用一个对象的Finalize方法的时候GC会强制这个对象处于 活 的状态只有当Finalize方法调用完成以后,这个对象才会永久的消失主要原因是:Finalize方法中可能使用到这个对象的字段(Field),所以Finalize的过程中需要保证可以访问这些字段,所以要保证对象处在 活的状态当Finalize方法执行完成的时候,这个对象才会真正的消失2. 应用场景一般情况下需要尽量避免使用对象复活,除非是一个对象需要被重复的使用,(其实我觉得还不如不回收这个对象呢,就让他一直活着吧)3.当一个静态字段被Finalize的时候[代码]当SomeType对象的Finalize 阅读全文

posted @ 2010-12-08 16:38 听说读写 阅读(760) 评论(0) 推荐(0) 编辑

2010年12月7日

CLR via C# 读书笔记 5-3 使用GC Handle手动控制对象生命周期

摘要: 使用System.Runtime.InteropServices.GCHandle类来手动控制对象的生命周期(个人感觉这里可能有一些问题...只是草稿而已..还请高手指正)1.GCHandle.Alloc 传递一个Object和一个GCHandleType枚举给Alloc方法以控制Object的生命周期,返回一个GCHandle 1) GCHandleType.Weak 此标志位允许你监视对象生命周期,当对象被标记为不可到达的时候,这个对象的Finalize方法可能执行也可能没有执行,这个对象可能依然存在于内存中 2) GCHandleType.WeakTrackResurrection... 阅读全文

posted @ 2010-12-07 15:57 听说读写 阅读(1511) 评论(0) 推荐(0) 编辑

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

导航