08 2013 档案
摘要:vs2012以后的CallerMemberName可以获取调用方法的名称,这个attribute提供类似stackTrace的功能,是通过编译器实现的。using System.Runtime.CompilerServices;public void DoProcessing() { TraceMessage("Something happened."); } public void TraceMessage(string message, [CallerMemberName] string memberName = "", [CallerFilePat
阅读全文
摘要:因正则表达式搜索总是出现死循环,开始考虑改为其他搜索方式,因为.net自带的IndexOf默认只能找到第一个或最后一个,如果要把全部的匹配项都找出来,还需要自己写循环SubString,所以想找下有没有现成的,就发现了在这个领域里,BM算法是王道,而sunday算法据说是目前最好的改进版,这一点我没有从国外的网站尤其是wiki上找到印证,但中文谈论sunday的文章很多,我就姑且认为它是最好的吧。这篇的图文很清晰的描述了算法过程http://www.cnblogs.com/lbsong/archive/2012/05/25/2518188.html可惜文中给的代码有的缺陷,如果找不到匹配会报索
阅读全文
摘要:如果是.net app调用c++代码,既可以p/invoke,也可以c++/cli,反之,如果是c++ app调用.net,只有c++/cli。现在有一应用,本来是.net调用c++,但是又需要c++捕获事件,处理后传出结果给.net,这个需求类似于回调,但一般回调时c++函数指针,现在要把.net方法变成函数指针传进去。关键的代码是Marshal::GetFunctionPointerForDelegate,注意这个方法是不支持输入泛型委托的。示例http://files.cnblogs.com/devourer/InjectFuncToCpp.7z这个例子做的不完美,字符串传入c++后需要
阅读全文
摘要:惭愧的很,这个单词见过很多年,见人用过很多次,却不曾真正了解其本质作用。最近多线程工作多些,才开始重新注意这个关键词。默认情况下,内存在读写时会同时刷新至缓存、寄存器,那么下次再使用这个变量时,就会从缓存、寄存中读取,加快了速度。但是在多线程时,每个cpu的每个核心有自己的缓存,当改变内存值时,可能其他核心不知道这个改变,仍在使用自己的缓存值,就造成了错误。volatile标记这个内存不会被缓存,从而其他核心使用内存时总是从内存读取,只要内存值被改变,其他核心读取时就是最新值。好处是避免了使用错误值,坏处是降低了速度(但比使用锁快)。可以用来在类似isEnable之类的操作上使用,解决一些轻量
阅读全文
摘要:1 依赖QCall.net3个Timer,form.timer会占用ui线程,更重要的是非winform程序你会去引用form吗,所以一般不用。threading中的timer提供的方法不好用,一般也不用,常用的是System.Timer.TimerSystem.Timer.Timer实现上是依赖threading中的timer,而threading的timer又依赖TimerQueueTimer,最终是Qcall中的方法。再也反编译不到代码了,看不到具体如何实现的。Timer是很常用功能,往往这种常用的其实很难实现,即使实现了还可能一堆缺点。这种不知根知底的东西还是尽量少用吧。http://
阅读全文
摘要:当需要对磁盘做长时间高速IO时,为了避免IO争用造成大量时间用于寻道而导致吞吐量降低,以及长时间IO造成错误数超限导致磁盘进入降速模式。在这种极限耗尽磁盘性能的情况下,应当把磁盘当做只能做单个任务的串行设备来用,对所有IO自行控制,排队依次执行,不能过分相信操作系统能把该问题解决好。 1 using System; 2 using System.Collections.Concurrent; 3 using System.Collections.Generic; 4 using System.Diagnostics; 5 using System.IO; 6 using Syste...
阅读全文
摘要:Process.PriorityClass这个属性设定的优先级,仅仅在同一核心内发生CPU争用时,被系统的争用判定程序调用。只要等级比对方高,就会抢到时间片,相等时可能是等概率抢到时间片。但在不同核心上运行时,即使优先级不同,也不会发生CPU争用,此时看上去优先级属性似乎没有效果。在内存、硬盘上,这个优先级也不会起作用。测试过在不同核心上运行优先级不同的程序,都是相同的写文件代码,优先级高的进程并不能争到更多的写入时间片,写入速度更低都有可能。可见硬盘争用判定不是这个属性控制。内存争用目前想不出如何构建测试场景。
阅读全文

浙公网安备 33010602011771号