<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_不一样的坚强</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/26507/rss</id><updated>2012-01-31T08:15:59Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/26507/rss"/><entry><id>http://www.cnblogs.com/happyday56/archive/2012/01/31/2332625.html</id><title type="text">初识Byte</title><summary type="text">硬盘和内存的存储的单位，可以理解为文件就是以byte存储的 Stream 支持读取和写入字节。Stream 集成了异步支持</summary><published>2012-01-31T02:06:00Z</published><updated>2012-01-31T02:06:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2012/01/31/2332625.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2012/01/31/2332625.html"/><content type="html">&lt;p&gt;硬盘和内存的存储的单位，可以理解为文件就是以byte存储的 &lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;Stream 支持读取和写入字节。&lt;strong&gt;Stream&lt;/strong&gt; 集成了异步支持&lt;/p&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/2332625.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2012/01/31/2332625.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2012/01/11/2319136.html</id><title type="text">sqlserver数据库大型应用解决方案总结 数据库负载均衡</title><summary type="text">随着互联网应用的广泛普及，海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用，每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。一、负载均衡技术负载均衡集群是由一组相互独立的计算机系统构成，通过常规网络或专用网络进行连接，由路由器衔接在一起，各节点相互协作、共同负载、均衡压力，对客户端来说，整个群集可以视为一台具有超高性能的独立服务器。1、实现原理实现数据库的负载均衡技术，首先要有一个可以控制连接数据库的控制端。在这里，它截断了数据库和程序的直接连接，由所有的程序来访问这个中间层，然后再由中间层来访问数据库。这样，我们就可以具</summary><published>2012-01-11T05:03:00Z</published><updated>2012-01-11T05:03:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2012/01/11/2319136.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2012/01/11/2319136.html"/><content type="html">&lt;div id="cnblogs_post_body"&gt;&#xD;
&lt;p&gt;随着互联网应用的广泛普及，海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用，每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;一、负载均衡技术&lt;/strong&gt;&lt;br /&gt;负载均衡集群是由一组相互独立的计算机系统构成，通过常规网络或专用网络进行连接，由路由器衔接在一起，各节点相互协作、共同负载、均衡压力，对客户端来说，整个群集可以视为一台具有超高性能的独立服务器。&lt;/p&gt;&#xD;
&lt;p&gt;1、实现原理&lt;br /&gt;实现数据库的负载均衡技术，首先要有一个可以控制连接数据库的控制端。在这里，它截断了数据库和程序的直接连接，由所有的程序来访问这个中间层，然后再由中间层来访问数据库。这样，我们就可以具体控制访问某个数据库了，然后还可以根据数据库的当前负载采取有效的均衡策略，来调整每次连接到哪个数据库。&lt;br /&gt;2、实现多据库数据同步&lt;br /&gt;对于负载均衡，最重要的就是所有服务器的数据都是实时同步的。这是一个集群所必需的，因为，如果数不据实时、不同步，那么用户从一台服务器读出的数据，就有别于从另一台服务器读出的数据，这是不能允许的。所以必须实现数据库的数据同步。这样，在查询的时候就可以有多个资源，实现均衡。比较常用的方法是Moebius for SQL Server集群，Moebius for SQL Server集群采用将核心程序驻留在每个机器的数据库中的办法，这个核心程序称为Moebius for SQL Server 中间件，主要作用是监测数据库内数据的变化并将变化的数据同步到其他数据库中。数据同步完成后客户端才会得到响应，同步过程是并发完成的，所以同步到多个数据库和同步到一个数据库的时间基本相等；另外同步的过程是在事务的环境下完成的，保证了多份数据在任何时刻数据的一致性。正因为Moebius 中间件宿主在数据库中的创新，让中间件不但能知道数据的变化，而且知道引起数据变化的SQL语句，根据SQL语句的类型智能的采取不同的数据同步的策略以保证数据同步成本的最小化。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;a href="http://www.pczpg.com/a/uploadfile/2010/0205/20100205113200888.jpg"&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ejiyuan/20100205113200888.gif" width="500" height="345" /&gt;&lt;/a&gt;&lt;/p&gt;&#xD;
&lt;p&gt;数据条数很少，数据内容也不大，则直接同步数据&lt;br /&gt;数据条数很少，但是里面包含大数据类型，比如文本，二进制数据等，则先对数据进行压缩然后再同步，从而减少网络带宽的占用和传输所用的时间。&lt;br /&gt;数据条数很多，此时中间件会拿到造成数据变化的SQL语句， 然后对SQL语句进行解析，分析其执行计划和执行成本，并选择是同步数据还是同步SQL语句到其他的数据库中。此种情况应用在对表结构进行调整或者批量更改数据的时候非常有用。&lt;br /&gt;3、优缺点&lt;br /&gt;(1) 扩展性强：当系统要更高数据库处理速度时，只要简单地增加数据库服务器就 可以得到扩展。&lt;br /&gt;(2) 可维护性：当某节点发生故障时，系统会自动检测故障并转移故障节点的应用，保证数据库的持续工作。&lt;br /&gt;(3) 安全性：因为数据会同步的多台服务器上，可以实现数据集的冗余，通过多份数据来保证安全性。另外它成功地将数据库放到了内网之中，更好地保护了数据库的安全性。&lt;br /&gt;(4) 易用性：对应用来说完全透明，集群暴露出来的就是一个IP&lt;/p&gt;&#xD;
&lt;p&gt;(1) 不能够按照Web服务器的处理能力分配负载。&lt;br /&gt;(2) 负载均衡器(控制端)故障，会导致整个数据库系统瘫痪。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;二、数据库的读写分离&lt;/strong&gt;&lt;br /&gt;1，实现原理：读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器，这样能有效地减轻数据库压力，也能减轻io压力。主数据库提供写操作，从数据库提供读操作，其实在很多系统中，主要是读的操作。当主数据库进行写操作时，数据要同步到从的数据库，这样才能有效保证数据库完整性。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ejiyuan/6eb28920-0b0a-34e1-932d-78970198ec23.jpg" width="474" height="326" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(ebay的读写比率是260:1,ebay的读写分离)&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ejiyuan/sql_02.JPG" width="394" height="448" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;(微软数据库分发)&amp;nbsp;&lt;/p&gt;&#xD;
&lt;p&gt;2，实现方法：在MS Sql server中可以使用发布定义的方式实现数据库复制，实现读写分离，复制是将一组数据从一个数据源拷贝到多个数据源的技术，是将一份数据发布到多个存储站点上的有效方式。使用复制技术，用户可以将一份数据发布到多台服务器上。复制技术可以确保分布在不同地点的数据自动同步更新，从而保证数据的一致性。SQL SERVER复制技术类型有三种，分别是：快照复制、事务复制、合并复制。SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器，负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器，分发服务器包含有一个分发数据库，可接收数据的所有改变，并保存这些改变，再把这些改变分发给订阅服务器。&lt;/p&gt;&#xD;
&lt;p&gt;3，优缺点&lt;br /&gt;(1)数据的实时性差:数据不是实时同步到自读服务器上的，当数据写入主服务器后，要在下次同步后才能查询到。&lt;/p&gt;&#xD;
&lt;p&gt;(2)数据量大时同步效率差：单表数据量过大时插入和更新因索引,磁盘IO等问题，性能会变的很差。&lt;/p&gt;&#xD;
&lt;p&gt;(3)同时连接多个（至少两个）数据库：至少要连接到两个数据数据库，实际的读写操作是在程序代码中完成的，容易引起混乱&lt;/p&gt;&#xD;
&lt;p&gt;(4)读具有高性能高可靠性和可伸缩:只读服务器，因为没有写操作，会大大减轻磁盘IO等性能问题，大大提高效率；只读服务器可以采用负载均衡，主数据库发布到多个只读服务器上实现读操作的可伸缩性。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;三、数据库/数据表 &amp;nbsp;拆分(分布式)&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;通过某种特定的条件，将存放在同一个数据库中的数据分散存放到多个数据库上，实现分布存储，通过路由规则路由访问特定的数据库，这样一来每次访问面对的就不是单台服务器了，而是N台服务器，这样就可以降低单台机器的负载压力。提示：sqlserver 2005版本之后，可以友好的支持&amp;#8220;表分区&amp;#8221;。&lt;/p&gt;&#xD;
&lt;p&gt;垂直(纵向)拆分：是指按功能模块拆分，比如分为订单库、商品库、用户库...这种方式多个数据库之间的表结构不同。&lt;/p&gt;&#xD;
&lt;p&gt;水平(横向)拆分：将同一个表的数据进行分块保存到不同的数据库中，这些数据库中的表结构完全相同。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ejiyuan/%E5%88%86%E5%8C%BA1.jpg" width="302" height="325" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;（纵向拆分）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;img border="0" alt="" src="http://images.cnblogs.com/cnblogs_com/ejiyuan/%E5%88%86%E5%8C%BA2.jpg" width="121" height="384" /&gt;&lt;/p&gt;&#xD;
&lt;p&gt;（横向拆分）&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;1，实现原理：使用垂直拆分，主要要看应用类型是否合适这种拆分方式，如系统可以分为，订单系统，商品管理系统，用户管理系统业务系统比较明的，垂直拆分能很好的起到分散数据库压力的作用。业务模块不明晰，耦合（表关联）度比较高的系统不适合使用这种拆分方式。但是垂直拆分方式并不能彻底解决所有压力问题，例如 有一个5000w的订单表，操作起来订单库的压力仍然很大，如我们需要在这个表中增加（insert）一条新的数据，insert完毕后，数据库会针对这张表重新建立索引，5000w行数据建立索引的系统开销还是不容忽视的，反过来，假如我们将这个表分成100个table呢，从table_001一直到table_100，5000w行数据平均下来，每个子表里边就只有50万行数据，这时候我们向一张只有50w行数据的table中insert数据后建立索引的时间就会呈数量级的下降，极大了提高了DB的运行时效率，提高了DB的并发量，这种拆分就是横向拆分&lt;/p&gt;&#xD;
&lt;p&gt;2，实现方法：垂直拆分，拆分方式实现起来比较简单，根据表名访问不同的数据库就可以了。横向拆分的规则很多，这里总结前人的几点，&lt;/p&gt;&#xD;
&lt;p&gt;(1)顺序拆分：如可以按订单的日前按年份才分，2003年的放在db1中，2004年的db2,以此类推。当然也可以按主键标准拆分。&lt;/p&gt;&#xD;
&lt;p&gt;优点：可部分迁移&lt;/p&gt;&#xD;
&lt;p&gt;缺点：数据分布不均，可能2003年的订单有100W，2008年的有500W。&lt;/p&gt;&#xD;
&lt;p&gt;(2)hash取模分： 对user_id进行hash（或者如果user_id是数值型的话直接使用user_id的值也可），然后用一个特定的数字，比如应用中需要将一个数据库切分成4个数据库的话，我们就用4这个数字对user_id的hash值进行取模运算，也就是user_id%4,这样的话每次运算就有四种可能：结果为1的时候对应DB1；结果为2的时候对应DB2；结果为3的时候对应DB3；结果为0的时候对应DB4，这样一来就非常均匀的将数据分配到4个DB中。&lt;br /&gt;优点：数据分布均匀&lt;br /&gt;缺点：数据迁移的时候麻烦；不能按照机器性能分摊数据 。&lt;br /&gt;(3)在认证库中保存数据库配置&lt;br /&gt;就是建立一个DB，这个DB单独保存user_id到DB的映射关系，每次访问数据库的时候都要先查询一次这个数据库，以得到具体的DB信息，然后才能进行我们需要的查询操作。&lt;br /&gt;优点：灵活性强，一对一关系&lt;br /&gt;缺点：每次查询之前都要多一次查询，会造成一定的性能损失。&lt;/p&gt;&#xD;
&lt;p&gt;本文出自&lt;a href="http://blog.csdn.net/dinglang_2009/"&gt;&lt;font color="#336699"&gt;http://blog.csdn.net/dinglang_2009/&lt;/font&gt;&lt;/a&gt;，&lt;a href="http://www.cnblogs.com/dinglang/"&gt;&lt;font color="#336699"&gt;http://www.cnblogs.com/dinglang/&lt;/font&gt;&lt;/a&gt;转载请注明出处。&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/2319136.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2012/01/11/2319136.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2011/03/15/1984390.html</id><title type="text">中国内地楼市泡沫严重 租售比1000倍超美国</title><summary type="text">我从2005年开始关注国内的房地产，每次和国内亲友聊天，都会提及房子，这几乎成了永恒的话题。 如果用国际最权威的租售比(房价除以月租金，超过160倍则是泡沫的开始)来看，即使在2005年，国内一线大城市，就已经有泡沫了。但也就是从2005年开始，中国房价向上飙飞，一飞冲天。虽然政府不断出台调控措施来抑制房价，可房价是越调越涨。 然而在美国，即使在次贷危机爆发之前房价处于最高位时，租售比也只刚超过200而已，比之上海北京的500到800倍，以及高档公寓和别墅的上千倍来说，简直不值一提。 欧美的房价为何涨不上天？ 首先，欧美征收高额房产税。 在欧美，只要是私人的房子，即便房屋的主人已经去世，也必须</summary><published>2011-03-15T00:26:00Z</published><updated>2011-03-15T00:26:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2011/03/15/1984390.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2011/03/15/1984390.html"/><content type="html">我从2005年开始关注国内的房地产，每次和国内亲友聊天，都会提及房子，这几乎成了永恒的话题。 &#xD;
&lt;p&gt;如果用国际最权威的租售比(房价除以月租金，超过160倍则是泡沫的开始)来看，即使在2005年，国内一线大城市，就已经有泡沫了。但也就是从2005年开始，中国房价向上飙飞，一飞冲天。虽然政府不断出台调控措施来抑制房价，可房价是越调越涨。&lt;/p&gt;&#xD;
&lt;p&gt;然而在美国，即使在次贷危机爆发之前房价处于最高位时，租售比也只刚超过200而已，比之上海北京的500到800倍，以及高档公寓和别墅的上千倍来说，简直不值一提。&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;欧美的房价为何涨不上天？&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;首先，欧美征收高额房产税。&lt;/strong&gt;&lt;/p&gt;&#xD;
&lt;p&gt;在欧美，只要是私人的房子，即便房屋的主人已经去世，也必须要缴纳房产税，每年缴纳的税率从1%到3%不等，平均为2%，且房产税的征收，是根据你所拥有房子的实际价值来征收的。也就是说，房价越涨，房产税越高。如果税率为3%的话，哪怕房价不涨，每33年(即使不算贷款利息)，你的实际付出，便已超过了房价的一倍。&lt;/p&gt;&#xD;
&lt;p&gt;我一个好朋友，为了让孩子能在好学区受教育，夫妇俩12年前在纽约上州，买下一幢50万美元的房子，与克林顿总统退休隐居的地方是同一个社区，可以算是克林顿夫妇的邻居，可见地段之好。前几年房价猛涨，他们房产的市价一度高达100万美元。有一次聚会相见，我恭贺他们成为&amp;#8220;百万富翁&amp;#8221;了！没想到他们苦笑道：&amp;#8220;有什么好祝贺的。这几年Property tax(房产税)随着房价年年涨，本来15000美元的税，现在房价100万，每年要交3万美元的税。再这样下去，明年我们可能就住不起啦！&amp;#8221;他们话音未落，&amp;#8220;幸好&amp;#8221;房价开始下跌，目前他们房子的市值，已回落到六七十万美元，他们这才松了口气，可见房产税之犀利了。&lt;/p&gt;&#xD;
&lt;p&gt;其次，在欧美，房子和汽车一样属于消费品，并不是投资品，房价是进入CPI加以计算的。所以，一旦房价高涨，CPI超过5%的话，便属于恶性通胀，政府就非得出重手。比如里根时代，美国一度恶性通胀，里根政府便连续加息，一直加到18%，硬生生地控制住了&lt;span id="Info.7913"&gt;&lt;a  href="http://topic.eastmoney.com/Inflation/" target="_blank"&gt;&lt;font color="#000000"&gt;通货膨胀&lt;/font&gt;&lt;/a&gt;&lt;/span&gt;。同时，因为借贷成本太高，房价应声回落。&lt;/p&gt;&#xD;
&lt;p&gt;第三，欧美政府在征收了高房产税之后，大量提供各种类型租金稳定的房子，使大多数民众并不需要非得购房而居。&lt;/p&gt;&#xD;
&lt;p&gt;事实上，在欧洲的多数国家，多少年来租房者和拥有住房的比例一半一半，大城市的租房比例则更高，像德国，更有高达57%以上的人一辈子租房而住。即使在地广人稀的美国，在次贷危机爆发之前，拥有房子的屋主数量破了历史最高纪录，可依然有超过33%的人租房而住。&lt;/p&gt;&#xD;
&lt;p&gt;在欧美，租房而居，还是买房自住，对大众来说只不过是不同的生活方式选择而已。无论在理财上，以及其他方面，并无优劣之分。&lt;/p&gt;&#xD;
&lt;p&gt;结论：在欧美，平均2%的房地产税，是一个控制房价的平衡器，而房贷利息的随时上涨，以及政府&amp;#8220;劫富济贫&amp;#8221;所推出的大量廉租屋，由这三种利器糅合在一起，好似绞索一般套住了房价的恶性攀升。所以，欧美的房价不可能像中国涨到天上去。他山之石，可以攻玉。如果中国希望遏制投机炒房，使房价回归正常的水平，不妨全面同时借鉴欧美这三个方法。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/1984390.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2011/03/15/1984390.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2011/02/14/1954314.html</id><title type="text">北京市参保人查询个人信息</title><summary type="text">北京市参保人查询个人信息:点击进入&amp;gt;&amp;gt;&amp;gt; 说明：个人用户第一次访问网上申报系统，需要进行用户认证，设置用户的初始密码，请在下面的表单中，填入您的真实信息，以便核对身份！密码重置&amp;gt;&amp;gt;-----北京市社会保险网上办事大厅------其他查询方法：1、持本人身份证或社保卡号直接到北京市劳动和社会保障局养老保险处查询； 2、拨打北京市社保中心统一咨询电话12333； 北京市劳动和社会保障局-养老保险处:地址：北京市宣武区永定门西街5号address: 5 West Yong Ding Men St., Xuan Wu District, Beijing, P.R.Chin</summary><published>2011-02-14T06:24:00Z</published><updated>2011-02-14T06:24:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2011/02/14/1954314.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2011/02/14/1954314.html"/><content type="html">&lt;div &gt;北京市参保人查询个人信息:&lt;a href="http://www.bjld.gov.cn/csibiz/home/static/articles/catalog_62200/2010-01-14/article_297e990e26069dc50126074a6bdc0005/297e990e26069dc50126074a6bdc0005.html" target="_blank"&gt;点击进入&amp;gt;&amp;gt;&amp;gt;&lt;/a&gt; &lt;br /&gt;说明：个人用户第一次访问网上申报系统，需要进行用户认证，设置用户的初始密码，请在下面的表单中，填入您的真实信息，以便核对身份！&lt;a href="http://www.bjld.gov.cn/csibiz/reset_password.jsp" target="_blank"&gt;密码重置&amp;gt;&amp;gt;&lt;/a&gt;&lt;br /&gt;-----&lt;a href="http://www.bjld.gov.cn/csibiz/home/index.html" target="_blank"&gt;北京市社会保险网上办事大厅&lt;/a&gt;------&lt;br /&gt;其他查询方法：&lt;br /&gt;1、持本人身份证或社保卡号直接到北京市劳动和社会保障局养老保险处查询； &lt;br /&gt;2、拨打北京市社保中心统一咨询电话12333； &#xD;
&lt;p&gt;北京市劳动和社会保障局-养老保险处:&lt;br /&gt;地址：北京市宣武区永定门西街5号&lt;br /&gt;address: 5 West Yong Ding Men St., Xuan Wu District, Beijing, P.R.China&lt;br /&gt;邮编：100050&lt;br /&gt;电话：(010)63167928&lt;br /&gt;监督电话：(010)12333、（010）63182700&lt;br /&gt;办公时间：周一至周五8:30-17:30&lt;br /&gt;网址: &lt;a href="http://www.bjld.gov.cn/"&gt;http://www.bjld.gov.cn/&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/1954314.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2011/02/14/1954314.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2010/05/26/1744671.html</id><title type="text">Session失效的处理办法</title><summary type="text">最近最一个电子商务网站，发现了好多问题，不过还好都顺利解决了，关于session的问题记录如下，以便日后查阅，同时也希望能给网友们带来帮助，本文内容并非完全出自本人，是本人对网络上的一些处理方法的整理。 检查是否超时,默认是20分钟,设置的方法是Session.TimeOut=30;或者您可以设置到更高，这个数值的单位是分钟，大家视情况而定。检查代码有无Session.Abandon()之类的。一...</summary><published>2010-05-26T10:32:00Z</published><updated>2010-05-26T10:32:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2010/05/26/1744671.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2010/05/26/1744671.html"/><content type="html">&lt;div&gt;最近最一个电子商务网站，发现了好多问题，不过还好都顺利解决了，关于session的问题记录如下，以便日后查阅，同时也希望能给网友们带来帮助，本文内容并非完全出自本人，是本人对网络上的一些处理方法的整理。 &#xD;
&lt;hr /&gt;&#xD;
&lt;br /&gt;&lt;li&gt;检查是否超时,默认是20分钟,设置的方法是Session.TimeOut=30;或者您可以设置到更高，这个数值的单位是分钟，大家视情况而定。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;检查代码有无Session.Abandon()之类的。一旦调用 Abandon 方法，当前会话不再有效，同时会启动新的会话。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;ASP.NET中使用了ACCESS数据库，而且数据库是放在bin目录中的。解决方法是不要放会更新的文件在BIN目录中。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;从同一个页面传到另一个页面才能延续同一个session,也就是说session&lt;strong&gt;不可跨域&lt;/strong&gt;,同时客户端一关闭浏览器或一关闭浏览页 Session也消失了,再次访问时又会创建新的Session 但还会在服务器上存活等待超时,只是调用不到了.&amp;nbsp;&amp;nbsp;另外比如在第一个页面置了SESSION，然后REDIRECT去第二个页面。&lt;strong&gt;解决方法是在REDIRECT中设置endResponse为FALSE。&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Iframe丢Session的原因：session是客户端和服务器端共同认证的，客户端存储标识，通过附加在页面的头发送给服务器端，服务器进行识别，如果符合条件就可以获得相应的session操作权。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;但如果页面是来自框架的，而框架的父页和框架不是一个站点的话，客户端默认是禁止向页面附加头信息的，这样服务器端就无法识别客户端框架里面的页面，自然不能操作Session。解决办法:&amp;nbsp;&amp;nbsp;&lt;strong&gt;Response.AddHeader("P3P", "CP=CAO PSA OUR")'&lt;/strong&gt;&amp;nbsp;&amp;nbsp;或者在Window服务中将&lt;strong&gt;ASP.NET State Service 启动&lt;/strong&gt;。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;有些杀病毒软件会去扫描您的Web.Config文件，那时Session肯定掉，这是微软的说法。解决办法:&amp;nbsp;&amp;nbsp;使杀病毒软件屏蔽扫描Web.Config文件(程序运行时自己也不要去编辑它)&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Asp.net 默认配置下，Session莫名丢失的原因及解决办法&lt;br /&gt;&amp;nbsp;&amp;nbsp; 正常操作情况下Session会无故丢失。因为程序是在不停的被操作，排除Session超时的可能。另外，Session超时时间被设定成60分钟，不会这么快就超时的。这次到CSDN上搜了一下帖子，发现好多人在讨论这个问题，然后我又google了一下，发现微软网站上也有类似的内容。 &#xD;
&lt;hr /&gt;&#xD;
&lt;br /&gt;现在我就把原因和解决办法写出来。&lt;br /&gt;&lt;strong&gt;原因：&lt;/strong&gt;&lt;br /&gt;由于Asp.net程序是默认配置，所以Web.Config文件中关于Session的设定如下：&lt;br /&gt;&amp;lt;&lt;strong&gt;sessionState&lt;/strong&gt; mode='InProc' stateConnectionString='tcpip=127.0.0.1:42424' sqlConnectionString='data source=127.0.0.1;Trusted_Connection=yes' cookieless='true' timeout='60'/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们会发现sessionState标签中有个属性mode，它可以有3种取值：InProc、StateServer?SQLServer（大小写敏感）。默认情况下是InProc，也就是将Session保存在进程内（IIS5是aspnet_wp.exe，而IIS6是W3wp.exe），这个进程不稳定，在某些事件发生时，进程会重起，所以造成了存储在该进程内的Session丢失。 &#xD;
&lt;hr /&gt;&#xD;
&lt;br /&gt;哪些情况下该进程会重起呢？微软的一篇文章告诉了我们：&lt;br /&gt;1、配置文件中processModel标签的memoryLimit属性&lt;br /&gt;2、Global.asax或者Web.config文件被更改&lt;br /&gt;3、Bin文件夹中的Web程序（DLL）被修改&lt;br /&gt;4、杀毒软件扫描了一些.config文件。&lt;br /&gt;更多的信息请参考PRB: Session variables are lost intermittently in ASP.NET applications&lt;br /&gt;&lt;strong&gt;解决办法：&lt;/strong&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; 前面说到的sessionState标签中mode属性可以有三个取值，除了InProc之外，还可以为StateServer、SQLServer。这两种存Session的方法都是进程外的，所以当aspnet_wp.exe重起的时候，不会影响到Session。&lt;br /&gt;&amp;nbsp;&amp;nbsp; 现在请将mode设定为StateServer。StateServer是本机的一个服务，可以在系统服务里看到服务名为&lt;strong&gt;ASP.NET State Service&lt;/strong&gt;的服务，默认情况是不启动的。当我们设定mode为StateServer之后，请手工将该服务启动。&lt;br /&gt;&amp;nbsp;&amp;nbsp; 这样，我们就能利用本机的StateService来存储Session了，除非电脑重启或者StateService崩掉，否则Session是不会丢的（因Session超时被丢弃是正常的）。&lt;br /&gt;&amp;nbsp;&amp;nbsp; 除此之外，我们还可以将Session通过其他电脑的StateService来保存。具体的修改是这样的。同样还在sessionState标签中，有个stateConnectionString='tcpip=127.0.0.1:42424'属性，其中有个ip地址，默认为本机（127.0.0.1），你可以将其改成你所知的运行了StateService服务的电脑IP，这样就可以实现位于不同电脑上的Asp.net程序互通Session了。&lt;br /&gt;&amp;nbsp;&amp;nbsp;如果你有更高的要求，需要在服务期重启时Session也不丢失，可以考虑将mode设定成SQLServer，同样需要修改sqlConnectionString属性。关于使用SQLServer保存Session的操作，在使用StateServer或者SQLServer存储Session时，所有需要保存到Session的对象除了基本数据类型（默认的数据类型，如int、string等）外，都必须序列化。只需将[Serializable]标签放到要序列化的类前就可以了。&lt;br /&gt;如：&lt;br /&gt;[Serializable]&lt;br /&gt;public class MyClass&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;......&lt;br /&gt;} &lt;/li&gt;&lt;/div&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/1744671.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2010/05/26/1744671.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2010/03/30/1700243.html</id><title type="text">ASP.NET 异常处理</title><summary type="text">在Asp.net开发过程中，我们会遇到很多Exception，不处理这些Exception的话会出现很难看的页面。还有一些我们未预料到的Exception，当发生Exception时，我们也必须进行记录具体位置，以便我们修正错误。asp.net异常处理的位置大概有以下3个地方1. 程序的代码段中，这是最直接处理异常的地方。如下try{ n=Convert.ToInt32(info);}catch(...</summary><published>2010-03-30T01:07:00Z</published><updated>2010-03-30T01:07:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2010/03/30/1700243.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2010/03/30/1700243.html"/><content type="html">&lt;p&gt;&lt;span style="font-size: 9pt"&gt;在&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Asp.net&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;开发过程中，我们会遇到很多&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Exception&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;，不处理这些&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Exception&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;的话会出现很难看的页面。&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;还有一些我们未预料到的&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Exception&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;，当发生&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Exception&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;时，我们也必须进行记录具体位置，以便我们修正错误。&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&lt;br /&gt;asp.net&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;异常处理的位置大概有以下&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;3&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;个地方&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&lt;br /&gt;&lt;strong&gt;1. &lt;/strong&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size: 9pt"&gt;程序的代码段中，这是最直接处理异常的地方。如下&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;try&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; n=Convert.ToInt32(info);&lt;br /&gt;}&lt;br /&gt;catch(Exception)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;只是最基本处理异常的地方。&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;2. ASP.NET&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt"&gt;的中的&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Application_Error&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt"&gt;中&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;.Application_Error &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt"&gt;事件。对于应用程序中引发的任何未处理异常都会引发此事件。一般我们处理如下&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&lt;br /&gt;protected void Application_Error(Object sender, EventArgs e)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exception exp=Server.GetLastError();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string strE="&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;内部错误&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;:"+ exp.InnerException.ToString()+"\r\n&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;堆栈：&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;"+ exp.StackTrace+"\r "+"Message:"+exp.Message+"\r &lt;/span&gt;&lt;span style="font-size: 9pt"&gt;来源&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;:"+exp.Source;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp; // 在事件日志中记录异常信息&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Log(strE);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Server.ClearError();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Server.Transfer("Error.aspx",false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;这样我们就可以处理&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Server&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;端出现的错误。我们记录出错的源头。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;3. &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt"&gt;也可以在页级别或者应用程序级别处理代码错误。&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Page &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt"&gt;基类公开了一个&lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt; Page_Error &lt;/span&gt;&lt;/strong&gt;&lt;strong&gt;&lt;span style="font-size: 9pt"&gt;方法，此方法在页中可以被重写。每当运行时引发未捕获的异常时都调用此方法。&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&lt;br /&gt;void Page_Error(Object source, EventArgs e) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; String message = "&amp;lt;font face=verdana color=red&amp;gt;"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "&amp;lt;h4&amp;gt;" + Request.Url.ToString() + "&amp;lt;/h4&amp;gt;"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "&amp;lt;pre&amp;gt;&amp;lt;font color='red'&amp;gt;" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + Server.GetLastError().ToString() + "&amp;lt;/pre&amp;gt;"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; + "&amp;lt;/font&amp;gt;";&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Response.Write(message);&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 9pt"&gt;下面我讲述一下怎么在&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;ASP.NET&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;程序里面统一的处理异常，我们以最常见的&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Session&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;过期为例&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 9pt"&gt;我们先写一个&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Session&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;过期的异常&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&lt;br /&gt;public class YSessionException:Exception&lt;br /&gt;{&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 9pt"&gt;我们再定义一个属性&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&lt;br /&gt;public int SessionValue&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get{ if(Session["SessionValue"]==null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; throw new YSessionException(""); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 9pt"&gt;下面我们在&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Page_Error&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;或者&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Application_Error&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;中处理这个异常&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Exception exp=Server.GetLastError();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(exp is YSessionException)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ..................&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Server.ClearError();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Server.Transfer("Error.aspx",false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;span style="font-size: 9pt"&gt;这样就可以为我们程序提供很好的&lt;/span&gt;&lt;span style="font-size: 9pt; font-family: 'Courier New'"&gt;Exception&lt;/span&gt;&lt;span style="font-size: 9pt"&gt;处理界面。&lt;/span&gt;&lt;/p&gt;&#xD;
&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/1700243.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2010/03/30/1700243.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2010/02/04/1663604.html</id><title type="text">IIS下配置Php+Mysql+zend的图文教程(完整版)</title><summary type="text">网上有很多关于PHP在IIS下配置的教程,但都是一些很理性化的东西,我从里面整理出来这个教程 发出来为了方便参考,,有什么问题也可以大家一起交流,,如果有什么不对的地方,请指正.. 下面的教程都是在windows 2000下实现的,其他系统请自己参照修改, 操作系统目录:c:\winnt PHP默认安装目录:C:\php PHP版本：PHP 4.3.10 下载地址：http://www.php.n...</summary><published>2010-02-04T06:14:00Z</published><updated>2010-02-04T06:14:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2010/02/04/1663604.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2010/02/04/1663604.html"/></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2010/01/29/1659461.html</id><title type="text">JavaScript 获取页面宽高的方法</title><summary type="text">JavaScript 获取页面宽高的方法&amp;lt;script&amp;gt;function getInfo(){var s = "";s += " 网页可见区域宽："+ document.body.clientWidth;s += " 网页可见区域高："+ document.body.clientHeight;s += " 网页可见区域宽："+ document.body.offsetWidth + "...</summary><published>2010-01-29T11:44:00Z</published><updated>2010-01-29T11:44:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2010/01/29/1659461.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2010/01/29/1659461.html"/></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2010/01/19/1651438.html</id><title type="text">Photoshop 隐藏的快捷键</title><summary type="text">Photoshop 隐藏的快捷键Photoshop是每个图形设计师和主页制作者不能不用和不得不用的东西。它功能的强大，不用我说，我只是想把在使用过程中常常不被人留意的和一些高级使用技巧端出来以飨众神，使你操作流畅，创意成真。秘技1：快捷键真快! &amp;#9670; 双击面板=Open file ctrl+双击面板=New file shift+双击面板=Save alt+双击面板=Open as ct...</summary><published>2010-01-19T05:24:00Z</published><updated>2010-01-19T05:24:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2010/01/19/1651438.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2010/01/19/1651438.html"/></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2009/11/09/1599073.html</id><title type="text">IE, FireFox, Opera 浏览器支持CSS实现Alpha半透明的方法</title><summary type="text">这个世界变化很快，IE8也快出来了，它将不在支持以前{filter:alpha(opacity=50);}的私有属性，转而支持更规范的私有属性-ms-filter: &amp;#8220;progid:DXImageTransform.Microsoft.Alpha(Opacity=50)&amp;#8221;;加之Firefox2.0和Opera9.0以前版本很少见到，所以所有的主流浏览器都已经支持纯CSS而不...</summary><published>2009-11-09T07:25:00Z</published><updated>2009-11-09T07:25:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2009/11/09/1599073.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2009/11/09/1599073.html"/></entry></feed>
