<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[a52846132007的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/a52846132007</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; a52846132007]]></copyright><item><title><![CDATA[ASP.NET常被忽视的一些细节]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271138</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271138</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:27 +0800</pubDate><description><![CDATA[前段时间碰到一个问题：为什么在ASP.NET程序中定时器有时候会不工作？


这个问题看起来很奇怪，代码好像也没错，但就是结果与预期不一致。
其实这里是ASP.NET应用程序中一个容易被忽略的经节。
后来想想，类似这样的细节问题何止这一个，我今天就把我能想到的容易被忽视的细节问题都写出来，希望大家小心这些问题。



想到我以前的博客中也零散的说过了一些...]]></description><category></category></item><item><title><![CDATA[IIS日志-网站运维的好帮手]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271136</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271136</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:25 +0800</pubDate><description><![CDATA[对于一个需要长期维护的网站来说，如何让网站长久稳定运行是件很有意义的事情。
有些在开发阶段没有暴露的问题很有可能就在运维阶段出现了，这也是很正常的。
还有些时候，我们希望不断地优化网站，让网站更快速的响应用户请求，
这些事情都发生在开发之后的运维阶段。



与开发阶段不同的，运维阶段不可能让你去调试程序，发现各类问题，
我们只能通过各种系统日志来分析网站的运...]]></description><category></category></item><item><title><![CDATA[HttpContext.Current并非无处不在]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271132</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271132</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:24 +0800</pubDate><description><![CDATA[了解ASP.NET的开发人员都知道它有个非常强大的对象 HttpContext，而且为了方便，ASP.NET还为它提供了一个静态属性HttpContext.Current来访问它，
今天的博客打算就从HttpContext.Current说起。





无处不在的HttpContext

由于ASP.NET提供了静态属性HttpContext....]]></description><category></category></item><item><title><![CDATA[在.net中序列化读写xml方法的总结]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271131</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271131</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:23 +0800</pubDate><description><![CDATA[XML是一种很常见的数据保存方式，我经常用它来保存一些数据，或者是一些配置参数。
使用C#，我们可以借助.net framework提供的很多API来读取或者创建修改这些XML，
然而，不同人使用XML的方法很有可能并不相同。
今天我打算谈谈我使用XML的一些方法，供大家参考。





最简单的使用XML的方法

由于.net fram...]]></description><category></category></item><item><title><![CDATA[Fish Li 该如何帮助您呢？]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271130</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271130</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:22 +0800</pubDate><description><![CDATA[不知不觉中，来博客园写博已经二年了。
经过二年时间的积累，人气提高了许多，或许正因为这个原因，最近一年中经常会收到一些朋友的提问。
在所有的提问中，有些问题被多次问过了，还有部分问题是没有结果的。


对于一些没有结果的问题，Fish Li也表示遗憾。
趁着3月12日这个对于我来说特殊的日子里，我也想谈谈另一个问题：Fish Li 该如何帮助您呢？...]]></description><category></category></item><item><title><![CDATA[如何在ASP.NET应用程序中初始化]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271129</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271129</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:21 +0800</pubDate><description><![CDATA[每个程序都需要初始化的过程，用来读取配置或者设置一些运行环境（变量），对于ASP.NET程序来说，又该在哪里执行初始化的任务呢？


我想应该绝大多数人都知道在Global.asax中执行初始化的过程，
然而有些细节是我们需要关注的。







本文用例


在这篇博客的示例代码中，AppInitializer包含了网站的初始化的实现代码：...]]></description><category></category></item><item><title><![CDATA[优化反射性能的总结（上）]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271128</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271128</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:21 +0800</pubDate><description><![CDATA[反射是一种很重要的技术，然而它与直接调用相比性能要慢很多，因此如何优化反射性能也就成为一个不得不面对的问题。
目前最常见的优化反射性能的方法就是采用委托：用委托的方式调用需要反射调用的方法（或者属性、字段）。


那么如何得到委托呢？ 目前最常见也就是二种方法：Emit, ExpressionTree 。其中ExpressionTree可认为是Emit方法的简化版本，...]]></description><category></category></item><item><title><![CDATA[优化反射性能的总结（下）]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271126</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271126</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:20 +0800</pubDate><description><![CDATA[在前二篇博客中，我分别介绍了二种优化反射的方法：
1. Delegate：委托。
2. CodeDOM：动态代码生成。
这是二种截然不同的方法，性能的差距也很大。
今天的博客将着重比较它们的优缺点，以及给出它们的使用建议。







用Delegate优化反射的缺点

在评价委托方案时，我认为有必要细分一下委托方案：
1. 强类型委托，例如：...]]></description><category></category></item><item><title><![CDATA[选择HttpHandler还是HttpModule？]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271125</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271125</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:19 +0800</pubDate><description><![CDATA[最近收到几个疑问：HttpHandler和HttpModule之间有什么差别，我到底该选择哪个？
之所以有这个疑问，是因为在这二类对象中都可以访问Request, Response对象，都能处理请求。


我原以为在博客 用Asp.net写自己的服务框架
中做了那么多的演示应该把它们的使用方法说清楚了，
然而有些人看了我的那些示例，仍然不知道该如何选择它们，为了实...]]></description><category></category></item><item><title><![CDATA[优化反射性能的总结（中）]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271124</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271124</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:18 +0800</pubDate><description><![CDATA[问题回顾


在上篇博客中，我介绍了优化反射的第一个步骤：用委托调用代替直接反射调用。
然而，那只是反射优化过程的开始，因为新的问题出现了：如何保存大量的委托？


如果我们将委托保存在字典集合中，会发现这种设计会浪费较多的执行时间，因为这种设计会引发三个新问题：
1. 代码的执行路径变长了。
2. 字典查找是有成本开销的。
3. 字典集合的并发读写需...]]></description><category></category></item><item><title><![CDATA[ASP.NET状态管理的总结]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271121</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271121</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:17 +0800</pubDate><description><![CDATA[由于HTTP协议的无状态特性，导致在ASP.NET编程中，每个请求都会在服务端从头到执行一次管线过程，
对于ASP.NET页面来说，Page对象都会重新创建，所有控件以及内容都会重新生成，
因此，如果希望上一次的页面状态能够在后续页面中保留，则必需引入状态管理功能。


ASP.NET为了实现状态管理功能，提供了8种方法，可帮助我们在页面之间或者整个用户会话期间保留状态...]]></description><category></category></item><item><title><![CDATA[各种AJAX方法的使用比较]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271118</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271118</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:16 +0800</pubDate><description><![CDATA[AJAX技术经过这么多年的发展，出现了一些框架或类库用于简化开发工作，不同的框架类库的使用方法也各不相同。
现在，再回头看看这些技术，看看这些框架类库，我们能感受到技术在不断地发展，AJAX开发越来越容易了。


本文收集了在ASP.NET平台上，一些具体代表性的AJAX开发方法，我将用实际的示例代码来演示如何使用它们，
让您感受AJAX的进化历程，同时也希...]]></description><category></category></item><item><title><![CDATA[解决ASP.NET中的各种乱码问题]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271116</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271116</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:15 +0800</pubDate><description><![CDATA[经常发现有人被乱码困扰着，而我感觉比较幸运，很少为此烦恼过。


在这篇博客中，我将把我想到的一些与乱码有关的经验总结出来，供大家参考。




页面显示乱码问题

在一个网站中，有些页面会正常显示，然而，有些页面会显示成乱码。
如果发生这种情况，可以检查一下web.config和文件编码。


如果web.config是这样配置的：

&...]]></description><category></category></item><item><title><![CDATA[不修改代码就能优化ASP.NET网站性能的一些方法]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271115</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271115</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:14 +0800</pubDate><description><![CDATA[本文将介绍一些方法用于优化ASP.NET网站性能，这些方法都是不需要修改程序代码的。
它们主要分为二个方面：
1. 利用ASP.NET自身的扩展性进行优化。
2. 优化IIS设置。





配置OutputCache

用缓存来优化网站性能的方法，估计是无人不知的。
ASP.NET提供了HttpRuntime.Cache对象来缓存数据，也提供了Outpu...]]></description><category></category></item><item><title><![CDATA[ClownFish 使用说明]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271114</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271114</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:13 +0800</pubDate><description><![CDATA[ClownFish 是什么？
ClownFish 能做什么？
ClownFish 有什么特色？
如果您有这些疑问，那么请浏览ClownFish的介绍博客：ClownFish：比手写代码还快的通用数据访问层






ClownFish适合我吗？


我认为，对于数据库的访问方式目前有以下5种方案：
1. 有些人喜欢使用存储过程。
2. 有些...]]></description><category></category></item><item><title><![CDATA[程序在发布前就应该发现的一些错误]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271113</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271113</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:12 +0800</pubDate><description><![CDATA[在软件开发过程中，写出影响性能或者有BUG的代码，都是我们无法回避的现实问题。
不过，如果能够在程序发布前（自测或者测试阶段）将这些问题找出来，我想大家都是可接受的。


今天就来介绍一种方法，用来发现在网站开发过程中，容易被我们忽略的一些问题，而这些问题其实是容易被发现的。
将要介绍的方法需要使用Fiddler这样一款工具，
我将演示如何使用Fiddler来发现40...]]></description><category></category></item><item><title><![CDATA[揭秘 ClownFish 比手写代码还快的原因]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271110</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271110</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:11 +0800</pubDate><description><![CDATA[说明：本文的第一版由于反对人数较多（推荐/反对数量是：23 / 17），
我在8月20日删除了博文内容，只留下一段简单的内容。





既然分享技术也引来这么多的反对，那我就不分享了。

如果希望知道我的优化方法，请回复留下email地址。





但是让我万万没有想到的是：到10月17日为止，内容没有了，推荐数量还翻了一倍。
为了表示对所有点...]]></description><category></category></item><item><title><![CDATA[哈哈，我评上了 ASP.NET MVP]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271109</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271109</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:10 +0800</pubDate><description><![CDATA[国庆节这二天一直在为我的ClownFish写《使用说明》。
偶乐闲得无聊，打开了我的网易邮箱，发现有一封未读邮件：恭喜您成为 2012 年度 Microsoft MVP !



哈哈，总算评上了。

上次（7月份）没被评上，当时非常失望。
经过周围朋友的劝告，于是鼓足勇气，决定再试一次，最后试一次，
而且MVP申请表也写简单了，也不翻译成英语了，也不找博客园推...]]></description><category></category></item><item><title><![CDATA[ClownFish：比手写代码还快的通用数据访问层]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271108</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271108</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:09 +0800</pubDate><description><![CDATA[最近花了二个月的业余时间重写了我以前的通用数据访问层，
由于是重写，所以我给这个项目取了个新名字：ClownFish


如果需要了解ClownFish的使用方法，请点击ClownFish 使用说明



ClownFish是什么？


ClownFish 是我编写的一个通用数据访问层，设计它的目的是为了：
1. 方便在 .net 项目中执行数据访问任务。...]]></description><category></category></item><item><title><![CDATA[CPQuery, 解决拼接SQL的新方法]]></title><link>https://blog.youkuaiyun.com/a52846132007/article/details/101271106</link><guid>https://blog.youkuaiyun.com/a52846132007/article/details/101271106</guid><author>a52846132007</author><pubDate>Tue, 24 Sep 2019 10:55:09 +0800</pubDate><description><![CDATA[我一直都不喜欢在访问数据库时采用拼接SQL的方法，原因有以下几点：
1. 不安全：有被SQL注入的风险。
2. 可能会影响性能：每条SQL语句都需要数据库引擎执行[语句分析]之类的开销。
3. 影响代码的可维护性：SQL语句与C#混在一起，想修改SQL就得重新编译程序，而且二种代码混在一起，可读性也不好。
所以我通常会选择【参数化SQL】的方法去实现数...]]></description><category></category></item></channel></rss>