<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Mikel</title>
	<atom:link href="http://www.mikel.cn/feed" rel="self" type="application/rss+xml" />
	<link>http://www.mikel.cn</link>
	<description>专注于C#,Java,ASP.Net,jQuery,JavaScript,SQLServer,Android开发技术的博客</description>
	<lastBuildDate>Sat, 19 May 2012 06:14:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>[转载]11 个最常用的 AJAX 开发框架汇总</title>
		<link>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bd11-%e4%b8%aa%e6%9c%80%e5%b8%b8%e7%94%a8%e7%9a%84-ajax-%e5%bc%80%e5%8f%91%e6%a1%86%e6%9e%b6%e6%b1%87%e6%80%bb.html</link>
		<comments>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bd11-%e4%b8%aa%e6%9c%80%e5%b8%b8%e7%94%a8%e7%9a%84-ajax-%e5%bc%80%e5%8f%91%e6%a1%86%e6%9e%b6%e6%b1%87%e6%80%bb.html#comments</comments>
		<pubDate>Sat, 19 May 2012 06:14:24 +0000</pubDate>
		<dc:creator>mikel</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[开发笔记]]></category>
		<category><![CDATA[11 个最常用的 AJAX 开发框架汇总]]></category>
		<category><![CDATA[AJAX]]></category>
		<category><![CDATA[JQuery]]></category>

		<guid isPermaLink="false">http://www.mikel.cn/?p=9927</guid>
		<description><![CDATA[[转载]11 个最常用的 AJAX 开发框架汇总_IT新闻_博客园. 　　AJAX（Asynchronous JavaScript and XML，异步 JavaScript 和 XML)，是创建交互式 Web 应用的主要开发技术。互联网中也有大量的关于 AJAX 的框架，本文汇总了最常用的 11 个框架。 1.   jQuery JQuery 是一个轻量级的 JavaScript 库，兼容 CSS3，还兼容各种浏览器。JQuery 使用户能更方便地处理 HTML documents、events、实现动画效果，并且方便地为网站提供 AJAX 交互。 2.   MooTools MooTools 是一个简洁、模块化、面向对象的 JavaScript 库。它能够帮助你更快、更简单地编写可扩展和兼容性强的 JavaScript 代码。Mootools 跟 prototypejs 相类似，语法几乎一样。但它提供的功能要比 prototypejs 多，而且更强大。比如增加了动画特效、拖放操作等等。 3.   Prototype Prototype 是 Sam Stephenson 写的一个非常优雅的 JavaScript 基础类库，对 JavaScript [...]]]></description>
		<wfw:commentRss>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bd11-%e4%b8%aa%e6%9c%80%e5%b8%b8%e7%94%a8%e7%9a%84-ajax-%e5%bc%80%e5%8f%91%e6%a1%86%e6%9e%b6%e6%b1%87%e6%80%bb.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转载]Asp.Net MVC路由调试的好帮手RouteDebugger</title>
		<link>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdasp-net-mvc%e8%b7%af%e7%94%b1%e8%b0%83%e8%af%95%e7%9a%84%e5%a5%bd%e5%b8%ae%e6%89%8broutedebugger.html</link>
		<comments>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdasp-net-mvc%e8%b7%af%e7%94%b1%e8%b0%83%e8%af%95%e7%9a%84%e5%a5%bd%e5%b8%ae%e6%89%8broutedebugger.html#comments</comments>
		<pubDate>Fri, 18 May 2012 07:05:01 +0000</pubDate>
		<dc:creator>mikel</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[开发笔记]]></category>
		<category><![CDATA[Asp.Net MVC路由调试的好帮手RouteDebugger]]></category>

		<guid isPermaLink="false">http://www.mikel.cn/?p=9924</guid>
		<description><![CDATA[[转载]Asp.Net MVC路由调试的好帮手RouteDebugger &#8211; Lyon.L &#8211; 博客园. RouteDebugger是什么？ 在ASP.NET MVC程序中，路由(Route)是一个非常核心的概念，可以说是MVC程序的入口，因为每一个Http请求都要经过路由计算，然后匹配到相应的 Controller和Action。通常我们的路由都会注册在Global.asax.cs文件中的RegisterRoutes方法中，路由会从上往 下依次匹配，因此自定义的（优先级高）的路由需要放在默认（通用）路由的前面。但是，如何确保所有的路由都是正确的，或者是没有重复的 呢？RouteDebugger就是这样一个分析工具。 安装 可以使用NuGet很方便的安装RouteDebugger，在项目上面右键-”Manage NuGet Packages”-”Online”输入”RouteDebugger”然后”Install”，或者在”Package Manager Console”中输入：”Install-Package routedebugger”安装即可。由于NuGet有时会莫名其妙被墙，我上传了一个压缩文件：RouteDebugger 2.1.3 注意：RouteDebugger 2.x版本对应.NET4.0和MVC3，旧版本请参考Phil Haack的ASP.NET Routing Debugger 使用 当你成功安装后，可以看到项目引用了”RouteDebugger”，然后？然后按F5运行程序你就可以看到效果了。是的，你甚至都不需要配置任何 一行代码！这是因为.NET4.0新增的程序集Microsoft.Web.Infrastructure允许动态注册 HttpModule，RouteDebugger将格式化的路由调试信息追加（append）到每一个request里。对于.NET3.5和MVC3 之前的项目，如果要使用RouteDebugger，还需要在Application_Start中注册： ? 1 2 3 4 5 protected void Application_Start(object sender, EventArgs e) {   RegisterRoutes(RouteTable.Routes);   RouteDebug.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes); } 从浏览器的输出我们可以看到详细的Route匹配信息，当前请求可以成功匹配哪些路由。 注意：{*catchall}路由是RoutDebugger自动添加的，这样即使没有任何一个路由匹配成功，也会显示相应的路由信息，而不是404（不过我本地测试发现非法url还是返回了404，有人在Phil Haack的博客提出了这个问题但是没有得到回答）。 &#160; 禁用RouteDebugger 当使用了RouteDebugger后，你会发现每一个页面的后面都会附带路由信息。如果你需要禁用这个功能，打开Web.config： 将RouteDebugger:Enabled后面的value=”false”即可关闭RouteDebugger模式。 相关日志[转载]ASP.NET MVC [...]]]></description>
		<wfw:commentRss>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdasp-net-mvc%e8%b7%af%e7%94%b1%e8%b0%83%e8%af%95%e7%9a%84%e5%a5%bd%e5%b8%ae%e6%89%8broutedebugger.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转载]程序崩溃后如何更好的反馈信息</title>
		<link>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bd%e7%a8%8b%e5%ba%8f%e5%b4%a9%e6%ba%83%e5%90%8e%e5%a6%82%e4%bd%95%e6%9b%b4%e5%a5%bd%e7%9a%84%e5%8f%8d%e9%a6%88%e4%bf%a1%e6%81%af.html</link>
		<comments>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bd%e7%a8%8b%e5%ba%8f%e5%b4%a9%e6%ba%83%e5%90%8e%e5%a6%82%e4%bd%95%e6%9b%b4%e5%a5%bd%e7%9a%84%e5%8f%8d%e9%a6%88%e4%bf%a1%e6%81%af.html#comments</comments>
		<pubDate>Fri, 18 May 2012 05:44:15 +0000</pubDate>
		<dc:creator>mikel</dc:creator>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[开发笔记]]></category>
		<category><![CDATA[项目管理]]></category>
		<category><![CDATA[程序崩溃后如何更好的反馈信息]]></category>
		<category><![CDATA[错误日志]]></category>

		<guid isPermaLink="false">http://www.mikel.cn/?p=9922</guid>
		<description><![CDATA[[转载]程序崩溃后如何更好的反馈信息 &#8211; 2012 &#8211; 博客园. 我们使用Windows都知道，整个Windows和微软提供的应用软件的稳定性和崩溃后的体验是逐步提升的。在大牛的作品《软件调试》 中有描述。 在Windows下，软件出错，常见的报告手段： 1、事件日志：这里记录了很多关键的错误信息 2、崩溃报告：可以自动提交错误的信息，或者手动提交，以不断的改进软件和方便排错 3、专用的日志工具：如Netmon，sysinternal等 &#160; 那我们的软件在崩溃后如何处理呢？主要目的： 1、方便我们的排错 2、提供更好的使用体验 最近在设计一个应用系统时对这个问题进行处理。 这方面有比较多的参考： 首先在stackoverflow上可以看到，c++ release  program crashes report http://stackoverflow.com/questions/112831/how-to-get-a-stack-trace-when-c-program-crashes-using-msvc8-2005 以上有比较多的框架和工具 Windows应用程序处理的一个框架和详细参考资料 Integrating Crash Reporting into Your Application &#8211; A Beginners Tutorial http://www.codeproject.com/Articles/308634/Integrating-Crash-Reporting-into-Your-Application http://code.google.com/p/crashrpt/ http://www.codeproject.com/Articles/1934/Post-Mortem-Debugging-Your-Application-with-Minidu Google breakPad Google breakpad是 一个非常实用的跨平台的崩溃转储和分析模块，他支持Windows，Linux和Mac和Solaris。由于他本身跨平台，所以很大的减少我们在平台移 植时的工作，毕竟崩溃转储，每个平台下都不同，使用起来很难统一，而Google breakpad就帮我们做到了这一点，不管是哪个平台下的崩溃，都能够进行统一的分析。现在很多工程都在使用他：最著名的几个如 Chrome，Firefox，Picasa和Google Earth。另外他的License是BSD的，也就是说，我们即便是在商业软件中使用，也是合法的 http://code.google.com/p/google-breakpad/ http://bigasp.com/archives/450 &#160; 调试Release发布版程序的Crash错误 http://www.cppblog.com/Walker/articles/146153.html http://blog.sina.com.cn/s/blog_48f93b530100fsln.html &#160; 对于托管程序也有 Good crash [...]]]></description>
		<wfw:commentRss>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bd%e7%a8%8b%e5%ba%8f%e5%b4%a9%e6%ba%83%e5%90%8e%e5%a6%82%e4%bd%95%e6%9b%b4%e5%a5%bd%e7%9a%84%e5%8f%8d%e9%a6%88%e4%bf%a1%e6%81%af.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转载]Android开发手机上的消息推送</title>
		<link>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdandroid%e5%bc%80%e5%8f%91%e6%89%8b%e6%9c%ba%e4%b8%8a%e7%9a%84%e6%b6%88%e6%81%af%e6%8e%a8%e9%80%81.html</link>
		<comments>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdandroid%e5%bc%80%e5%8f%91%e6%89%8b%e6%9c%ba%e4%b8%8a%e7%9a%84%e6%b6%88%e6%81%af%e6%8e%a8%e9%80%81.html#comments</comments>
		<pubDate>Fri, 18 May 2012 02:03:21 +0000</pubDate>
		<dc:creator>mikel</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[开发笔记]]></category>
		<category><![CDATA[Android开发手机上的消息推送]]></category>

		<guid isPermaLink="false">http://www.mikel.cn/?p=9920</guid>
		<description><![CDATA[[转载]手机上的消息推送 &#8211; 心笑峰 &#8211; 博客园. 最近在找Android手机上的消息推送的解决方案。目前看来有以下几种常用的方式：1.定期查询：按照指定的时间间隔连接服务器查询获取最新的消息。实现起来简单，非实时，查询时间过短则流量耗费多，耗电量大。下面是一个爱立信的测试结果： &#160; 2.短信方式：需要及时发送消息给客户端时也可以通过这种方式，但大家都懂的，这个很花钱。 &#160; 3.长轮询：基本上与目前很多网站使用的方式一样（WEB阿里旺旺、微博、人人等等）。客户端发起一个很长超时时间的请求，然后服务器端在没有消息的时候阻塞这个请求（一直不给返回值）直到快要超时为止，有消息到来再返回响应。客户端收到响应或超时后立即再发起请求。 这种算是比较好的方式了，消息能够及时地到达客户端。但考虑到移动互联网的特点（网络不稳定、设备内存小）这种方式不能保证重要的消息一定能推送到客户端，另外anroid在手机内存小的情况下可能会杀这个在等待PUSH消息不怎么活动的进程。 &#160; 4.C2DM：GOOGLE提供了消息的PUSH功能，需要和GOOGLE账号绑定，目前看来这种方式在国内是没戏的。 &#160; 5.XMPP：在客户端集成asmack，服务器端使用ejabberd或openfire等开源的XMPP服务器软件也是一种可行的方式。 缺点就是先要有注册、登陆等过程，无线网络环境下连接的效果不怎么样。重要消息的PUSH需要自己实现确认逻辑。 &#160; 6.MQTT：基于代理发布/订阅 模式的消息传输协议，适用于受限环境： 网络代价昂贵、带宽低、不可靠； 在嵌入设备中运行、处理器和内存资源有限。 特点是： 使用发布/订阅模式，解除应用程序耦合； 对负载内容屏蔽的消息传输； 使用TCP/IP； 提供“至多一次”、“至少一次”、“有且仅有一次”三种级别的消息传输； 小型传输、流量开销少； 使用LAST WILL 和TESTAMENT特性通知有关各方客户端异常中断机制。 （听起来简直就是为移动互联网设计的 ） 下面是基于MQTT的简单实现方案： &#160; 服务器： 可以采用IBM的MQTT服务器RSMB； 开源的Mosquitto &#160; 客户端： IBM的wmqtt.jar 适用于JAVA客户端。 &#160; 1.下载安装运行Mosquitto服务器。 2.在anroid客户端集成以下代码： import com.ibm.mqtt.IMqttClient; import com.ibm.mqtt.MqttClient; import com.ibm.mqtt.MqttException; import com.ibm.mqtt.MqttPersistence; import com.ibm.mqtt.MqttPersistenceException; import [...]]]></description>
		<wfw:commentRss>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdandroid%e5%bc%80%e5%8f%91%e6%89%8b%e6%9c%ba%e4%b8%8a%e7%9a%84%e6%b6%88%e6%81%af%e6%8e%a8%e9%80%81.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转载]Android系统如何实现UI的自适应</title>
		<link>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdandroid%e7%b3%bb%e7%bb%9f%e5%a6%82%e4%bd%95%e5%ae%9e%e7%8e%b0ui%e7%9a%84%e8%87%aa%e9%80%82%e5%ba%94.html</link>
		<comments>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdandroid%e7%b3%bb%e7%bb%9f%e5%a6%82%e4%bd%95%e5%ae%9e%e7%8e%b0ui%e7%9a%84%e8%87%aa%e9%80%82%e5%ba%94.html#comments</comments>
		<pubDate>Fri, 18 May 2012 01:14:02 +0000</pubDate>
		<dc:creator>mikel</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[开发笔记]]></category>
		<category><![CDATA[Android系统如何实现UI的自适应]]></category>

		<guid isPermaLink="false">http://www.mikel.cn/?p=9918</guid>
		<description><![CDATA[[转载]Android系统如何实现UI的自适应 &#8211; Melanie Deng &#8211; 博客园. 做Android应用的人都知道，要一个apk适用多个不同的手机屏幕是很容易的，就是在项目的res文件夹下面有多套相关的资源文件。程序运行的 时候，Android系统会根据当前设备的信息去加载不同文件夹下的资源文件。但是Android系统是怎么做到这一点的呢？上网上搜了一下，很少有这方 便的介绍，只好自己研究下代码了。下面是我研究代码得到的结果（正确性有待确认），在这里分享一下。 &#160; 这里以ICS上在Activity的onCreate()方法里面调用setContentView(int resourceID)为例，介绍一下系统如何根据我们的id（R.layout.xxxx）找到合适的layout文件进行解析加载： 如果你的res下面有三种不同的layout：layout, layout-sw480dp和 layout-sw600dp，这里的sw&#60;N&#62;dp表示这个layout文件夹下面的布局文件只有在设备短边的最小宽带为N时才加载。你的 设备是800&#215;480的分辨率，那么这个apk安装在你的设备上就会加载 layout-sw480dp里面的布局文件。下面是framework的 java层调用链： Activity.setContentView(int resourceID) -&#62; PhoneWindow.setContentView(int resourceID) -&#62; LayoutInflater.inflate(int resource, ViewGroup root) -&#62; LayoutInflater.inflate(int resource, ViewGroup root, boolean attachToRoot) -&#62; Resources.getLayout(int id) -&#62; Resources.loadXmlResourceParser(int id, String type) -&#62; Resources.getValue(int id, TypedValue outValue, boolean resolveRefs) -&#62; AssetManager.getResourceValue(int ident, int density, TypedValue [...]]]></description>
		<wfw:commentRss>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdandroid%e7%b3%bb%e7%bb%9f%e5%a6%82%e4%bd%95%e5%ae%9e%e7%8e%b0ui%e7%9a%84%e8%87%aa%e9%80%82%e5%ba%94.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转载]JavaScript倒计时跳转或后退</title>
		<link>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdjavascript%e5%80%92%e8%ae%a1%e6%97%b6%e8%b7%b3%e8%bd%ac%e6%88%96%e5%90%8e%e9%80%80.html</link>
		<comments>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdjavascript%e5%80%92%e8%ae%a1%e6%97%b6%e8%b7%b3%e8%bd%ac%e6%88%96%e5%90%8e%e9%80%80.html#comments</comments>
		<pubDate>Thu, 17 May 2012 05:34:55 +0000</pubDate>
		<dc:creator>mikel</dc:creator>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[开发笔记]]></category>
		<category><![CDATA[JavaScript倒计时跳转或后退]]></category>
		<category><![CDATA[倒计时]]></category>

		<guid isPermaLink="false">http://www.mikel.cn/?p=9915</guid>
		<description><![CDATA[[转载]JavaScript倒计时跳转或后退 &#8211; 前端组qianduanzu.com &#8211; 博客园. 有的时候用户访问到一个错误或不可访问的页面，我们可以做一些这样的处理：倒计时N秒跳转到另一个页面或后退到前一个页面。 你可直接前往DEMO页看效果！ 这种效果可以用JavaScript实现： HTML &#60;p&#62; &#60;span id=&#34;timer&#34;&#62;&#60;/span&#62; 秒后自动返回 &#60;a href=&#34;http://www.qianduanzu.com/&#34;&#62;直接跳转&#60;/a&#62; &#60;/p&#62; JavaScript window.onload = function(){ var time = 3; //设置时间为几秒 var timer = document.getElementById('timer'); //获取ID为timer的对象 timer.innerHTML = time; //初始化显示秒数 time = time - 1; var g = window.setInterval(function(){ if(time&#60;0){ window.clearTimeout(g); //清除动画 window.location.href = 'http://www.qianduanzu.com/'; //跳转到指定地址 //window.history.back(-1); //后退 } else { [...]]]></description>
		<wfw:commentRss>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdjavascript%e5%80%92%e8%ae%a1%e6%97%b6%e8%b7%b3%e8%bd%ac%e6%88%96%e5%90%8e%e9%80%80.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转载]利用log4net记录操作日志</title>
		<link>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bd%e5%88%a9%e7%94%a8log4net%e8%ae%b0%e5%bd%95%e6%93%8d%e4%bd%9c%e6%97%a5%e5%bf%97.html</link>
		<comments>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bd%e5%88%a9%e7%94%a8log4net%e8%ae%b0%e5%bd%95%e6%93%8d%e4%bd%9c%e6%97%a5%e5%bf%97.html#comments</comments>
		<pubDate>Thu, 17 May 2012 02:55:35 +0000</pubDate>
		<dc:creator>mikel</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[开发笔记]]></category>
		<category><![CDATA[架构设计]]></category>
		<category><![CDATA[项目管理]]></category>
		<category><![CDATA[log4net]]></category>
		<category><![CDATA[利用log4net记录操作日志]]></category>
		<category><![CDATA[操作日志]]></category>

		<guid isPermaLink="false">http://www.mikel.cn/?p=9913</guid>
		<description><![CDATA[[转载]利用log4net记录操作日志 &#8211; justconnor &#8211; 博客园. 1，目的：将用户操作日志写入SQL server 数据库中 2，实现步骤： 一，下载log4net.dll （推荐从官网下载 http://logging.apache.org/log4net/download_log4net.cgi） 二，在项目中引用 log4net.dll 三，添加一个配置文件：我这里命名为 log4net.config（也可以在web.config里面配置为便于管理故新建了一个配置文件） View Code &#60;!--?xml version=&#34;1.0&#34;?--&#62; &#60;section name=&#34;log4net&#34; type=&#34;log4net.Config.Log4NetConfigurationSectionHandler, log4net &#34;&#62;&#60;/section&#62; &#60;!--这里是表示是记录1 条到缓冲区，满1条后再写入SQL server 可根据需要自定义配置--&#62; 四，在项目的 AssemblyInfo.cs 文件的指定log4net 的配置文件路径 [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 五，自定义记录函数 View Code 　　public static void Operate_Log(string operateType, string describe) { log4net.ILog logToSQL = log4net.LogManager.GetLogger(&#34;iNotes&#34;); [...]]]></description>
		<wfw:commentRss>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bd%e5%88%a9%e7%94%a8log4net%e8%ae%b0%e5%bd%95%e6%93%8d%e4%bd%9c%e6%97%a5%e5%bf%97.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>转载LINQ学习扩展方法,委托,Lambda表达式 第二篇</title>
		<link>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdlinq%e5%ad%a6%e4%b9%a0%e6%89%a9%e5%b1%95%e6%96%b9%e6%b3%95%e5%a7%94%e6%89%98lambda%e8%a1%a8%e8%be%be%e5%bc%8f-%e7%ac%ac%e4%ba%8c%e7%af%87.html</link>
		<comments>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdlinq%e5%ad%a6%e4%b9%a0%e6%89%a9%e5%b1%95%e6%96%b9%e6%b3%95%e5%a7%94%e6%89%98lambda%e8%a1%a8%e8%be%be%e5%bc%8f-%e7%ac%ac%e4%ba%8c%e7%af%87.html#comments</comments>
		<pubDate>Thu, 17 May 2012 02:53:11 +0000</pubDate>
		<dc:creator>mikel</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[开发笔记]]></category>
		<category><![CDATA[Lambda]]></category>
		<category><![CDATA[Linq]]></category>
		<category><![CDATA[委托]]></category>
		<category><![CDATA[扩展方法]]></category>

		<guid isPermaLink="false">http://www.mikel.cn/?p=9911</guid>
		<description><![CDATA[转载LINQ学习扩展方法,委托,Lambda表达式 第二篇 &#8211; 韩迎龙 &#8211; 博客园. LINQ基本查询操作符-获取数据 (1) select()  语法是： public static IEnumerable&#60;TResult&#62; select&#60;TSource,TResult&#62;( this IEnumerbale&#60;TSource&#62; source. Func&#60;TSource,TResult&#62; selector) 说明：1) select方法本身是一个泛型扩展方法 2) 它作用于IEnumerable&#60;TSource&#62;类型 3) 他只接受一个Func&#60;TSource,TResult&#62;类型参数 4) Func&#60;TSource,TResult&#62;是一个泛型委托，位于System名字的空间下，System.Core.dll中，在这里Selector是一个提取器。  (2) 举例说明，先定义一个静态类ExtraClass，然后再静态类中在定义一个静态的扩展方法，实现输出信息。代码如下： public static class ExtraClass     {         //为IEnumerable提供输出的方法         public static void Print(this IEnumerable&#60;string&#62; ie)         {             IEnumerator&#60;string&#62; result = ie.GetEnumerator();             while (result.MoveNext())             [...]]]></description>
		<wfw:commentRss>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdlinq%e5%ad%a6%e4%b9%a0%e6%89%a9%e5%b1%95%e6%96%b9%e6%b3%95%e5%a7%94%e6%89%98lambda%e8%a1%a8%e8%be%be%e5%bc%8f-%e7%ac%ac%e4%ba%8c%e7%af%87.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转载]SQL调优日记之发挥SQL性能与你的写法有关</title>
		<link>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdsql%e8%b0%83%e4%bc%98%e6%97%a5%e8%ae%b0%e4%b9%8b%e5%8f%91%e6%8c%a5sql%e6%80%a7%e8%83%bd%e4%b8%8e%e4%bd%a0%e7%9a%84%e5%86%99%e6%b3%95%e6%9c%89%e5%85%b3.html</link>
		<comments>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdsql%e8%b0%83%e4%bc%98%e6%97%a5%e8%ae%b0%e4%b9%8b%e5%8f%91%e6%8c%a5sql%e6%80%a7%e8%83%bd%e4%b8%8e%e4%bd%a0%e7%9a%84%e5%86%99%e6%b3%95%e6%9c%89%e5%85%b3.html#comments</comments>
		<pubDate>Wed, 16 May 2012 02:00:31 +0000</pubDate>
		<dc:creator>mikel</dc:creator>
				<category><![CDATA[开发笔记]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[SQLServer]]></category>
		<category><![CDATA[SQL性能]]></category>
		<category><![CDATA[SQL调优日记之发挥SQL性能与你的写法有关]]></category>

		<guid isPermaLink="false">http://www.mikel.cn/?p=9909</guid>
		<description><![CDATA[[转载]SQL调优日记之发挥SQL性能与你的写法有关－－对比三种方式实现相同功能 &#8211; 谢堂文(Darren Xie) &#8211; 博客园. 今天再次改老系统，看着前边的师兄留下的SQL，就想起了MS SQL 7.5和SQL2000。可能很多人都还没有习惯新版本（05版之后）的SQL语法，还是用以前开发MS SQL2000的方式实现功能，但是多少人会明白，换一种写法后，性能却相差十倍百倍呢！ 我用来做例子的是我们MES系统用到的一段简单功能T－SQL，都是使用同一个库、相同的表、相同的逻辑： 开始前先记录时间，计算完成后看用了多少时间。 我先用推荐的语法来写的方式，代码1是好的写法，由于是在我们系统的情景下描述的，看管不可照抄，只说明性能的差别。 &#160; 代码1： 用WITH，把各个逻辑分开处理，再终合出最后结果，推荐！ 1: declare @P INT,@T DATETIME; 2: SELECT @P=1,@T=GETDATE(); 3: ;WITH R0 -- 4: AS ( 5: SELECT TOP 1 M.WPCODE,t.RID,MACNO,LEFT(WFCNO,CHARINDEX('-',WFCNO)-1) WO FROM MES_WFCIO M,MES_WFCIODTL t 6: WHERE M.RID=t.RID AND WFCNO='JSAC00334D-033-001' 7: ORDER BY t.RID DESC 8: ) 9: ,R1 [...]]]></description>
		<wfw:commentRss>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdsql%e8%b0%83%e4%bc%98%e6%97%a5%e8%ae%b0%e4%b9%8b%e5%8f%91%e6%8c%a5sql%e6%80%a7%e8%83%bd%e4%b8%8e%e4%bd%a0%e7%9a%84%e5%86%99%e6%b3%95%e6%9c%89%e5%85%b3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[转载]ASP.NET MVC 让Html.RenderAction支持Lamda表达式</title>
		<link>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdasp-net-mvc-%e8%ae%a9html-renderaction%e6%94%af%e6%8c%81lamda%e8%a1%a8%e8%be%be%e5%bc%8f.html</link>
		<comments>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdasp-net-mvc-%e8%ae%a9html-renderaction%e6%94%af%e6%8c%81lamda%e8%a1%a8%e8%be%be%e5%bc%8f.html#comments</comments>
		<pubDate>Wed, 16 May 2012 00:40:29 +0000</pubDate>
		<dc:creator>mikel</dc:creator>
				<category><![CDATA[ASP.NET MVC]]></category>
		<category><![CDATA[开发笔记]]></category>
		<category><![CDATA[ASP.NET MVC 让Html.RenderAction支持Lamda表达式]]></category>

		<guid isPermaLink="false">http://www.mikel.cn/?p=9907</guid>
		<description><![CDATA[[转载][ASP.NET MVC]让Html.RenderAction支持Lamda表达式 &#8211; dudu &#8211; 博客园. 今天在ASP.NET MVC代码时用到了Html.RenderAction，代码如下： @{Html.RenderAction("RecentNews")} 通过字符串指定Action的名称，有两点不爽： 1. 输入时不能智能感知； 2. 输错了不能实时提示。 有这两点不爽，写代码的乐趣就大减。有享受感觉的代码应该是这样的： @{Html.RenderAction&#60;AggSiteController&#62;(c =&#62; c.RecentNews());} 是的，Lamda，给你写代码带来畅快感觉的Lamda！ 微软不让我们享受，我们就自己动手，丰衣足食。自己写一个支持Lamda表达式的Html.RenderAction，代码如下： using System.Web.MVC; using System.Web.MVC.Html; using System.Linq.Expressions; namespace System.Web.Mvc.Html { public static class HtmlHelperExtensions { public static void RenderAction(this HtmlHelper htmlHelper, Expression&#38;gt; operation) where TController : Controller { var actionName = ((MethodCallExpression)operation.Body).Method.Name; htmlHelper.RenderAction(actionName); } } } [...]]]></description>
		<wfw:commentRss>http://www.mikel.cn/%e5%bc%80%e5%8f%91%e7%ac%94%e8%ae%b0/%e8%bd%ac%e8%bd%bdasp-net-mvc-%e8%ae%a9html-renderaction%e6%94%af%e6%8c%81lamda%e8%a1%a8%e8%be%be%e5%bc%8f.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->
