线程上下文切换的性能损耗测试
摘要:线程上下文切换的性能损耗测试线程上下文切换的性能损耗到底有多少,一直没有直观的理解,今天写个程序测试一下。先看看下面的程序(点击下载):ThreadTester是所有Tester的基类。所有的Tester都干的是同样一件事情,把counter增加到100000000,每次只能加1。 1: pub...
阅读全文
一键部署mono 免费空间
摘要:一键部署mono 免费空间支持c# 再也不担心伙食费换空间了一直以来 部署mono 都是很头疼的事情 因为是我在是不熟悉非win环境,今天偶然发现这个项目,挺好的,分享下https://github.com/wshearn/openshift-community-cartridge-monohttp...
阅读全文
.NET序列化的一点技巧(附Demo)
摘要:.NET序列化的一点技巧(附Demo)这是一个从组件和分层角度的系统架构迭代过程的例子,选择这个角度因为这个角度最直观,也最具表现力,这个例子并不完整,不过没有包含进来的部分并不影响这个例子就是了,原本是有说明各个组件之间的调用关系,通讯方式什么的,不过感觉那个图看着乱,而且我觉得只要能说明问题就可...
阅读全文
StackTrace堆栈跟踪记录详细日志
摘要:使用StackTrace堆栈跟踪记录详细日志(可获取行号)2014-04-25 22:30 by 螺丝钉想要螺丝帽,350阅读,3评论,收藏,编辑 上一篇我们提到使用.NET自带的TraceSource实现简单的日志,具体请看《轻松背后的N+疲惫——系统日志》,这一篇注意想讲的是日志的详细记录,包...
阅读全文
DIY RazorEngine 的程序集生成方式
摘要:DIY RazorEngine 的程序集生成方式最近遇到一个项目,要使用RazorEngine做模板引擎,然后完成简易的CMS功能,以减轻重复的CDRU操作,同时复用管理后台。没错,使用的正是GIT HUB上的开源项目:https://github.com/Antaris/RazorEngine。模...
阅读全文
WXPP QuickFramework V2.0
摘要:微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github用了一个多星期的时间,把微信快速开发框架进行了改进,之前1.0版本针对的是普通订阅号,V2.0版本将会对微信所有接口都进行支持。楼主开发的目的也是想让大家能够快速建立起微信公众平台(WXPP),据说...
阅读全文
C# 序列化与反序列化
摘要:C# 序列化与反序列化C# 线程间互相通信 AutoResetEvent和ManualResetEvent摘要: C#线程间互相通信主要用到两个类:AutoResetEvent和ManualResetEvent。一、AutoResetEventAutoResetEvent允许线程通过发信号互相通信,...
阅读全文
系统日志
摘要:轻松背后的N+疲惫——系统日志2014-04-16 00:41 by 螺丝钉想要螺丝帽,324阅读,1评论,收藏,编辑相信很多coder都有这样的癖好:“自恋”!!对自己编写的code总是那么的自信,自豪,Alwaysbelieveittobesoperfect!!不喜欢做单元测试(总觉得它就那样了...
阅读全文
C#的泛型的类型参数可以有带参数的构造函数的约束方式吗
摘要:C#的泛型的类型参数可以有带参数的构造函数的约束方式吗?Review后看到标题让我十分羞愧自己语文功底太差,估计...请见谅......我还特地把这句写回开头了......问题前天遇到的一个问题,所以在MSDN发了个问,刚也丰富了下问题,关于泛型的。最近用EF尝试DDD常常有些奇怪的想法,比如“EF...
阅读全文
Apworks框架实战(三):单元测试与持续集成
摘要:Apworks框架实战(三):单元测试与持续集成虽然这部分内容并没有过多地讨论Apworks框架的使用,但这部分内容非常重要,它与Apworks框架本身的设计紧密相关,也是进一步了解Apworks框架设计的必修课。单元测试与持续集成概述在敏捷开发过程中,单元测试是非常重要的。这不同于传统的瀑布开发模...
阅读全文
MEF
摘要:MEF从接触MEF到现在,已经有些年头了,虽然有些年头,但一直未在实际项目中使用,这可能是因为它的Framework框架太高,毕竟目前公司的主流项目都是用Framework 3.5。如此,冷落了它,有点可惜。最近可能会需要用到了,所以写一些笔记,来让自己熟悉起来。题外话说一下,最近公司的小组里面一位...
阅读全文
基于Web的IIS管理工具
摘要:Servant:基于Web的IIS管理工具Servant for IIS是个管理IIS的简单、自动化的Web管理工具。安装Servant的过程很简单,只要双击批处理文件Install Servant Service.bat,然后按照屏幕上的说明操作即可。你可以直接通过浏览器或使用智能手机,在提供相关...
阅读全文
封装ReaderWriterLockSlim
摘要:封装ReaderWriterLockSlimReaderWriterLockSlim 类表示用于管理资源访问的锁定状态,可实现多线程读取或进行独占式写入访问。使用ReaderWriterLockSlim来保护由多个线程读取但每次只采用一个线程写入的资源。ReaderWriterLockSlim允许多...
阅读全文
异步编程模式
摘要:异步编程模式 C#可以有一个简单易用的机制用于异步执行方法,那就是委托。下面我介绍三种模式,对于这三种模式来说,原始线程都发起了一个异步方法,然后做一些其他处理。然而这些模式不同的是,原始线程获取发起的线程已经完成的消息的方式。1:在等待一直到完成(wait-nutil-done)模式。 在发起了异步方法以及做了一些其他处理之后,原始线程就中断并且等异步方法完成之后再继续。 + View Code 运行结果为2:轮询模式(polling)。 原始线程定期检查发起的线程是否完成,如果没有则可以继续做其他的事情。上代码+ View Code 运行结果为:3:回调模式(callbacl)。 ...
阅读全文
C# 6.0可能的新特性及C#发展历程
摘要:C# 6.0可能的新特性及C#发展历程 据扯,C# 6.0在不远的将来就发布了,对应的IDE可能是VS 2014(.Net Framework 5.0),因为VS 2013已于2013年10月份发布了,对应的是.Net Franework 4.5.1。从Visual Studio的更新规律上来看,微软2或者3年,更新增加的东西会比较多,所以对于C# 6.0,还是有一些期待的。下面这张图列出了C#每次重要更新的时间及增加的新特性,对于了解C#这些年的发展历程,对C#的认识更加全面,是有帮助的。其中图的最后一行C#6.0是根据一些博客整理的,如有错误,随时改正。C# 6.0可能的新特性1、主构造函
阅读全文
Delegate、Predicate、Action和Func
摘要:Delegate、Predicate、Action和Func写在前面DelegatePredicateActionFunc逆变和协变 先说下什么是委托(Delegate),委托在C#中是一种类型,和Class是一个级别,但是我们经常把它看做是一个方法。为什么是方法?准确的说应该是回调函数,在C运行时的qsort函数获取指向一个回调函数的指针,以便对数组中的元素进行排序。C#中提供了一种机制,就是委托,一种回调函数的机制。 在我们做项目的过程中,委托用到的地方很多,像线程中修改窗体的状态、窗体控件事件和异步操作已完成等,以前我们创建委托的时候用delegate关键字,而且也比较麻烦,自从C#..
阅读全文
集合
摘要:C#基础知识系列十(集合)前言 本节主要是来了解学习集合,以方便在程序编写时,什么地方该选用什么集合,让程序更健壮的运行起来。在学习了解集合之前,首先需要了解一些数据结构方面的知识。下面我们就先简单的来看一下数据结构。数据结构 数据结构就是相互之间存在一种或多种特定关系的数据元素的集合。 程序界有一点很经典的话,程序设计=数据结构+算法。用源代码来体现,数据结构,就是编程。 集合分类在上图中可以看到,集合总体上分为线性集合和非线性集合。线性集合按照存储方式又分为直接存储和顺序存储。 直接存储,是指该类型的集合数据元素可以直接通过下标(即index)来访问,在C#中直接存储的数据结构有三...
阅读全文
Jeffrey Richter's Power Threading Library
摘要:Jeffrey Richter's Power Threading LibraryThe Power Threading Library consists of a number of classes to assist you with building responsive, reliable, and scalable applications and components. There are also a bunch of general-purpose utility classes in this library that have nothing to do with
阅读全文
多线程中lock用法的经典实例
摘要:多线程中lock用法的经典实例一、Lock定义 lock 关键字可以用来确保代码块完成运行,而不会被其他线程中断。它可以把一段代码定义为互斥段(critical section),互斥段在一个时刻内只允许一个线程进入执行,而其他线程必须等待。这是通过在代码块运行期间为给定对象获取互斥锁来实现的。 在多线程中,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发生。 而在.NET中最好了解一下进程、应用域和线程的概念,因为Lock是针对线程一级的,而在.NET中应
阅读全文
(转载)Log4Net 在多层项目中的使用小记
摘要:(原创)Log4Net 在多层项目中的使用小记这几天刚好在调整一个项目,把一些自己不是很清楚的东西先试验一下,这篇文章主要是对我在项目中需要使用Log4Net的一些记录。网上有很多相关的教程,但是各有各的说法,我结合我自己这个项目的需要,首先,项目是分多层的,假如每一层都需要加入日志记录,那该怎么办呢,下面是我的一些操作步骤,记录出来和大家分享一下,不足之处希望大家多拍板砖多多指教。这个截图是我的当前项目的层次结构,首先在Common层先添加log4net.dll的引用(仅需这里添加引用即可),然后创建一个log4net.config(见红色数字2),我当前项目的1、4、5三处的log4net
阅读全文