摘要: 前几天公司内部有人搞了一个关于多线程及其同步问题的讲座,内容很丰富,覆盖面很广,让人听了大呼过瘾。他采取了横向铺陈的方法讲的,罗列了C#下异步编程方法和模式及各种同步机制,这种讲述方式对于熟悉这块的人来说总结一下,帮助很大,但对于新手有可能就云里雾里了。虽然我研究不深,但纵向讲一下这一块内容,对新手入门有可能会有所帮助,也算是自己对这块内容的一种总结。只讨论技术,不涉及细节和Demo。 本篇文章涵盖一下几部分内容: 1. 什么是异步编程,为什么会需要异步编程 2. .NET下的异步编程及其发展 3. .NET线程同步机制及线程间数据封送 4. 异步模式 5. 线程安全及异常处理 6. 线程取. 阅读全文
posted @ 2012-07-26 18:12 salomon 阅读(6788) 评论(9) 推荐(8) 编辑
摘要: 编写一个商业应用软件或者仅仅小范围流通的自动化办公软件抑或其他,在设计或者实现中会考虑种种,这篇帖子我想以我所学,讨论一下这个问题,如有疏漏错误,欢迎指正。 首先,需求分析明确需求之后,就开始进入这一繁复阶段。我们会基于以下种种因素考虑使用什么语言: 1. 应用的展示形式:虽然桌面开发和网页版应用开发的界限逐渐开始模糊,但对于开发来说,应用的展示形式还是会决定了你后续的很多技术细节的,语言知识一方面,各种平台上应用都有不同的开发技术开发语言,以网页版开发为例,LAMP下的HTML+CSS+JavaScript+PHP/Python,微软常见的ASP.net等等(Ajax不是语言,是融合了多种. 阅读全文
posted @ 2012-07-26 10:42 salomon 阅读(1922) 评论(2) 推荐(6) 编辑
摘要: 得益于和萱哥关于单元测试的聊天,让我开始想要了解Google的单元测试框架Google Test,(虽然以前也听勇哥提到过这个词,但是一直没有往心里去);以前基于C#反射特性Demo过一个C#的单元测试框架(http://www.cnblogs.com/salomon/archive/2012/05/30/2526746.html),所以更想明白Google Test测试框架的实现机制;这期间搞过一段Python,看Python文档时也看到相关的单元测试框架PyUnit,但没有深入研究,有时间深入研究一下。 自动化测试框架,主要目的就是自动化调用执行某些测试用例,将执行结果与目标结果进行比较. 阅读全文
posted @ 2012-07-25 17:55 salomon 阅读(6297) 评论(0) 推荐(0) 编辑
摘要: 我有可能是最近组内最闲的一个人,除了偶尔美国那边丢过来的小任务,我就剩大把的时间泡论坛,看博客和睡觉了。这期间C++0x,.net framework BCL及技术内幕,python,WinRT一通乱看,偶尔写写博客记录一下学习过程。除了逼自己忙碌一点和看过之后恍然大悟的舒畅之外,仔细想想还是感觉没有提高一点。编程是一种学后不断代码实践,不断犯错的过程。学习之余写一些Demo小代码只是为了在技巧方面加深理解,更深层次语言和技术的理解还是在工程实践中(不是特别关注的话你Demo代码是不会太考虑健壮性,可维护性,效率等方面的问题的,而工程实践中一切的编程技法或者语言都是为这些问题服务的,可以说是. 阅读全文
posted @ 2012-07-13 22:54 salomon 阅读(4259) 评论(13) 推荐(2) 编辑
摘要: 在连续看了MSDN杂志中的一些文章后,感觉有点腻了,于是转到C++上,换一下脑子,找找新鲜感。或许对于一个程序员来说,兴趣广泛并不是一个优点,有可能这也是为什么自己一直徘徊在所谓的程序员第一阶段而无法进阶的原因吧。现在尚能安慰自己的仅剩下还年轻了,再过两三年,这个理由也将不复存在。 言归正传,C++为人诟病的一个很大原因是由于标准制定周期太长,没有足够多的标准的类库支持新功能,新特性。完成XML操作,正则表达式,lambda表达式等等工作只能寻找第三方类库了(插一句,新C++0x标准中右值操作真的很酷)。而使用XML进行软件配置,或者数据存储等等在软件开发中是很常见的。所以闲来无事,写个De. 阅读全文
posted @ 2012-07-06 16:26 salomon 阅读(3977) 评论(1) 推荐(3) 编辑
摘要: 这个周末找了一堆的MSDN杂志中关于.net framework 基础的东西,有知道的又不知道的,看完了就全知道了,当然了只是大致了解。惊叹感慨之余,聊以记之,备忘。垃圾回收:http://msdn.microsoft.com/zh-cn/magazine/bb985010(en-us).aspxhttp://msdn.microsoft.com/zh-cn/magazine/bb985011(en-us).aspxhttp://msdn.microsoft.com/zh-cn/magazine/cc534993.aspxhttp://msdn.microsoft.com/zh-cn/maga 阅读全文
posted @ 2012-07-03 10:47 salomon 阅读(492) 评论(1) 推荐(0) 编辑
摘要: 最近在研究.net4.5中的有关异步编程的新特性,从自己Google Reader 订阅的一些博客中接触到了两个很陌生的单词ExecutionContext和SynchronizationContext,于是仔细研究了一下,记录下来备忘。什么是ExecutionContext在许多系统中thread-local storage(TLS)线程本地存储记录了正在运行的当前环境或者上下文的一些信息,而在CLR中ExecutionContext做了类似的事情.在同步的世界中,所有的一切都发生在当前线程内,线程内有关的所有数据对其内所有代码可见,也同时被所有代码所操纵影响.也就是说假设有方法ABC在当前 阅读全文
posted @ 2012-06-28 11:47 salomon 阅读(4635) 评论(1) 推荐(1) 编辑
摘要: 开篇第一句:.net4.5中异步方法的实现远不如看起来的那么简单,编译器背后代替开发人员生成了大量的代码 做了好多事情使它看起来简单了,这些代码和过去实现异步操作时必须开发人员手动编写并维护的样板代码的数量类似。此外,编译器生成的代码会在 .NET Framework 中调用库代码,再次代替开发人员完成更多的工作。要获得正确的思维模式并使用这一模式做出合适的开发决策,重要的一点是了解编译器代替您生成了哪些内容。 .net4.5中定义了大量的异步方法***Async(例如Windows.System.Launcher.LaunchUriAsync() )这些方法的返回类型是IAsyncInfo或 阅读全文
posted @ 2012-06-27 15:10 salomon 阅读(3385) 评论(3) 推荐(4) 编辑
摘要: 如果你已经走了这么远,不把整个过程讲完对你有点不公平。我已经讲了当异常发生时操作系统是如何调用用户定义的回调函数的。我也讲了这些回调的内部情况,以及编译器是如何使用它们来实现__try和__except的。我甚至还讲了当某个异常没有被处理时所发生的情况以及系统所做的扫尾工作。剩下的就只有异常回调过程最初是从哪里开始的这个问题了。好吧,让我们深入系统内部来看一下结构化异常处理的开始阶段吧。 图十四是我为 KiUserExceptionDispatcher 函数和一些相关函数写的伪代码。这个函数在NTDLL.DLL中,它是异常处理执行的起点。为了绝对准确起见,我必须指出:刚才说的并不是绝对准确。. 阅读全文
posted @ 2012-06-20 16:04 salomon 阅读(5177) 评论(1) 推荐(0) 编辑
摘要: __except_handler3 and the scopetable我真的很希望让你看一看Visual C++运行时库源代码,让你自己好好研究一下__except_handler3函数,但是我办不到。因为 Microsoft并没有提供。在这里你就将就着看一下我为__except_handler3函数写的伪代码吧View Code int __except_handler3( struct _EXCEPTION_RECORD * pExceptionRecord, struct EXCEPTION_REGISTRATION * pRegistrationFrame, ... 阅读全文
posted @ 2012-06-20 15:54 salomon 阅读(3310) 评论(0) 推荐(0) 编辑