<?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-05-10T05:31:23Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><generator>feed.cnblogs.com</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/05/10/2494166.html</id><title type="text">解决js跨域问题</title><summary type="text">如何解决js跨域问题Js跨域问题是web开发人员最常碰到的一个问题之一。所谓js跨域问题，是指在一个域下的页面中通过js访问另一个不同域下 的数据对象，出于安全性考 虑，几乎所有浏览器都不允许这种跨域访问，这就导致在一些ajax应用中，使用跨域的web service会成为一个问题。 解决js跨域问题，目前在客户端和服务端都有一些现成的解决方案，但这些方案并不能解决所有问题。下面我们先来看下有哪些常用的解决方案，并针对空间产品 对跨域问题的需求给出一个space自己的解决方案，希望能对其他产品组有借鉴意义。客户端解决方案如何在客户端解决js跨域问题几乎是所有web开发人员会首先考虑的。目前最常</summary><published>2012-05-10T05:31:00Z</published><updated>2012-05-10T05:31:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2012/05/10/2494166.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2012/05/10/2494166.html"/><content type="html">&lt;h1 class="title"&gt;如何解决js跨域问题&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Js跨域问题是web开发人员最常碰到的一个问题之一。所谓js跨域问题，是指在一个域下的页面中通过js访问另一个不同域下 的数据对象，出于安全性考 虑，几乎所有浏览器都不允许这种跨域访问，这就导致在一些ajax应用中，使用跨域的web service会成为一个问题。 解决js跨域问题，目前在客户端和服务端都有一些现成的解决方案，但这些方案并不能解决所有问题。下面我们先来看下有哪些常用的解决方案，并针对空间产品 对跨域问题的需求给出一个space自己的解决方案，希望能对其他产品组有借鉴意义。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="%E5%AE%A2%E6%88%B7%E7%AB%AF%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88"&gt;&lt;/a&gt;客户端解决方案&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如何在客户端解决js跨域问题几乎是所有web开发人员会首先考虑的。目前最常用的方法有2种：设置document.domain、通过script 标签加载。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="%E8%AE%BE%E7%BD%AEdocument.domain"&gt;&lt;/a&gt;设置document.domain&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;采用这种方法的前提是跨域请求涉及的两个页面必须属于一个基础域（例如都是xxx.com，或是xxx.com.cn），使用同一协议（例如都是 http）和同一端口（例如都是80）。例如，aaa.xxx.com里面的一个页面需要调用bbb.xxx.com里的一个对象，则将两个页面的 document.domain都设置为xxx.com，就可以实现跨域调用了。 另外，需要注意的是，这种方式只能用在父、子页面之中，即只有在用iframe进行数据访问时才有用。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="%E9%80%9A%E8%BF%87script%E6%A0%87%E7%AD%BE%E5%8A%A0%E8%BD%BD"&gt;&lt;/a&gt;通过script标签加载&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;对于浏览器来说，script标签的src属性所指向资源就跟img标签的src属性所指向的资源一样，都是一个静态资源，浏览器会在适当的时候自 动去加 载这些资源，而不会出现所谓的跨域问题。这样我们就可以通过该属性将要访问的数据对象引用进当前页面而绕过js跨域问题。 例如，在space的我的空间项目中，需要在hi域下管理中心页面中随机推荐几个热门模块给用户，由于热门模块的相关信息都在act域下的php模块中维 护，如果直接在hi域下通过ajax请求去获取act域下的推荐模块列表相关信息就出现js跨域问题。解决这个问题的最简单方法就是，在hi域下通过 script标签去访问act域提供的这个http接口:&lt;/p&gt;&amp;lt;script type=&amp;#8221;text/javascript&amp;#8221; src=&amp;#8221;http://act.hi.baidu.com/widget/recommend&amp;#8221;&amp;gt;&amp;lt;script&amp;gt;&lt;p&gt;当然，前提是act域的这个http接口必须是返回一段js脚本，如一个json对象数组定义的脚本：&lt;/p&gt;modlist = [&lt;br/&gt;{&amp;#8220;modname&amp;#8221; : &amp;#8220;mod1&amp;#8221;,  &amp;#8220;usernum&amp;#8221; : 200, &amp;#8220;url&amp;#8221; : &amp;#8221; /widget/info/1&amp;#8221;},&lt;br/&gt;{&amp;#8220;modname&amp;#8221; : &amp;#8221;mod2&amp;#8221;,  &amp;#8220;usernum&amp;#8221; : 300, &amp;#8221;url&amp;#8221; : &amp;#8221; /widget/info/2&amp;#8221;},&lt;br/&gt;&amp;#8230;&lt;br/&gt;];&lt;p&gt;但script标签也有一定的局限性，并不能解决所有js跨域问题。script标签的src属性值不能动态改变以满足在不同条件下获取不同数据的需求， 更重要的是，不能通过这种方式正确访问以xml内容方式组织的数据。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="%E6%9C%8D%E5%8A%A1%E7%AB%AF%E8%A7%A3%E5%86%B3%E6%96%B9%E6%A1%88"&gt;&lt;/a&gt;服务端解决方案&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;从上面的说明可以看到，客户端的解决方案局限性太大，而且对于ajax跨域请求，无论两个域是否属于同个基础域，都无法在客户端加以解决。也就是 说，如果 我们要想在ajax请求中访问其他域下的数据，就只能通过服务端进行处理了。 服务端的解决方案的基本原理就是，由客户端将请求发给本域服务器，再由本域服务器的代理来请求数据并将响应返回给客户端。 最常用的服务器解决方案就是利用web服务器本身提供的proxy功能，如apache和lighttpd的mod_proxy模块。在百度内 部，transmit的分流功能也可以解决部分跨域问题。但这些方法都有一定的局限性，鉴于安全性等问题的考虑，space这边最后开发了一个专门用于处 理跨域请求代理服务的spproxy模块，用于彻底解决js跨域问题。 下面我们将以空间的开放平台为例，简单介绍下如何通过apache的mod_proxy、transmit的分流以及space的spproxy模块来解 决该跨域问题，并简单介绍下spproxy的一些特性、缺点及下一步的改进计划。 空间在展现每个UWA开放模块之前都必须请求该模块的xml源代码以进行解析，每个模块的源代码文件都是存放在act域下的/ow/uwa目录下，那么在 用户空间首页（hi域）中请求该xml文件时就会存在js跨域问题。要解决该问题，只能让js向hi域的web服务器请求xml文件，而hi域web服务 器则通过一定的代理机制（如mod_proxy、transmit分流、spproxy）向act域的web服务器请求文件。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="%E5%88%A9%E7%94%A8apache%E7%9A%84mod_proxy%E6%A8%A1%E5%9D%97"&gt;&lt;/a&gt;利用apache的mod_proxy模块&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;如果apache是2.0系列版本，则可以通过在httpd.conf文件中增加以下配置加以解决：&lt;/p&gt;ProxyRequests  Off&lt;br/&gt;&amp;lt;Proxy *&amp;gt;&lt;br/&gt;Order deny,allow&lt;br/&gt;Allow from all&lt;br/&gt;&amp;lt;/Proxy&amp;gt;&lt;br/&gt;ProxyPass  /ow/uwa  http://act.hi.baidu.com/ow/uwa&lt;p&gt;其中，ProxyRequests 指令关闭了mod_proxy的正向代理功能而启用反向代理功能，Proxy指令使得该配置对所有访问生效，ProxyPass指令使得对本域的/ow /uwa目录下的任何资源的访问都会在内部被转换为一个对act.hi.baidu.com域下的/ow/uwa目录下对应资源的代理请求。 这样，js就可以直接通过访问http://hi.baidu.com/ow/uwa/0/1/0/10001.xml 获取位于act域下的/ow/uwa/0/1/0/目录下的10001.xml文件。&lt;/p&gt;&lt;p&gt;如果apache是经过百度各产品线修改过的1.3版本，则需要mod_proxy和mod_rewrite模块一起配合来达到同样的目的。首先需要在 httpd.conf中增加以下Location指令：&lt;/p&gt;&amp;lt;Location /ow/uwa&amp;gt;&lt;br/&gt;SetHandler proxy-server&lt;br/&gt;order allow,deny&lt;br/&gt;Allow from all&lt;br/&gt;&amp;lt;/Location&amp;gt;&lt;p&gt;这样，对于本域下的/ow/uwa目录下的任何资源的访问都会首先由proxy-server这个handler（mod_proxy模块内部定义 的一个 handler）来处理，但光有这段配置还不行，因为还不proxy-server还不知道应该怎么处理，仅仅知道需要自己处理而已。这时还需要在配置段 中增加一个rewrite规则：&lt;/p&gt;RewriteRule ^/ow/uwa/(.*)$  http://act.hi.baidu.com/ow/uwa/$1?%{QUERY_STRING} [P,L]&lt;p&gt;Rewrite规则最后的[P,L]表明该rewrite是通过mod_proxy代理过去，而不是通过外部重定向过去。如果去掉P标志，即采用以下 rewrite规则：&lt;/p&gt;RewriteRule ^/ow/uwa/(.*)$  http://act.hi.baidu.com/ow/uwa/$1?%{QUERY_STRING} [L]&lt;p&gt;则响应返回给客户端时标明的资源uri将是重定向后的uri，在我们的例子中就是act.hi.baidu.com域的uri，则浏览器仍然会出现 js跨 域问题。 以上只是对apache的proxy功能的简单应用，更好更强大的介绍可以参考资料【1】和【2】。 Mod_proxy虽然强大，但我们并没有用它来解决跨域问题。首先，要使用它必须要求我们的每台前端机器都能够访问外网，否则我们就只能将请求代理到其 中一台前端机器上（通过机器名做内网域名进行rewrite或代理），而这显然是不可取的，因为我们的一个域名通常由很多前端机器组成，只代理到其中一台 机器会导致该机器压力与其他机器相比很不均衡，甚至撑不住压力，而给所有前端机器都加访问外网权限又可能会存在一些安全性策略问题（具体原因不清楚，但 op和sa显然是不会赞同这种做法）。其次，由于apache本身并没有很好的防ddos攻击机制，一旦有人通过代理去攻击目标域（比如说我们的竞争对手 的网站），则在目标域的web服务器上看来，攻击者就成了我们了，这样的事情发生时，我们就百口莫辩，跳进黄河也洗不清了。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="%E5%88%A9%E7%94%A8transmit%E5%88%86%E6%B5%81%E6%96%B9%E6%A1%88"&gt;&lt;/a&gt;利用transmit分流方案&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;用过transmit的产品线应该都知道，transmit除了用于防攻击之外，还有一个很重要的功能就是分流。有了分流功能，我们就可以将对特定 url 的访问分发给不同的apache处理，从而实现跨域访问的目的。 还是以空间开放平台的这个例子为例，假设我们的act域在jx机房内由jx-space-act00.jx和jx-space-act01.jx这两台机 器组成，apache的端口为8080，则只要我们在transmit的配置文件transmit_common.conf中增加以下配置：&lt;/p&gt;PP_APACHE_DIR    :   /ow/uwa/&lt;br/&gt;PP_APACHE0      :   jx-space-act00.jx:8080&lt;br/&gt;PP_APACHE1      :   jx-space-act01.jx:8080&lt;p&gt;则重启transmit后，南方用户就可以通过访问http://hi.baidu.com/ow/uwa/0/1/0/10001.xml 而获取http://act.hi.baidu.com/ow/uwa/0/1/0/10001.xml这个url所执行的xml内容，从而解决跨域问 题。如果我们在hi域下的js同时还想异步获取act域下的其他数据，比如说/sys/widget/xxx接口提供的数据，则只需要在 PP_APACHE_DIR配置项中增加一个目录定义：&lt;/p&gt;PP_APACHE_DIR    :   /ow/uwa/, /sys/widget/&lt;p&gt;由于旧版本的transmit只支持一个分流，所以不能通过它来同时解决对多个外域的跨域请求问题，同时，要支持旧版本transmit，后端的 apache需要做相应的代码修改和配置才行，这也限制了我们的分流功能不能解决跨非百度域的跨域问题。不过好消息是，gm最近发布的新版本 transmit允许增加n个分流，同时支持后端apache不做任何修改，那么对于旧版本transmit所碰到的限制也就不再存在了，通过它就可以在 一定程度上很好地解决跨域问题了。具体配置方法与旧版本类似，大家可以参考新版本transmit的配置文件做相应修改来实现这个目的。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="%E5%88%A9%E7%94%A8spproxy%E6%A8%A1%E5%9D%97"&gt;&lt;/a&gt;利用spproxy模块&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;但是，在space的开放平台系统中，我们并不是通过transmit来解决跨域问题，前面也提到了，transmit只能在一定程度上解决这个问 题。为 什么这么说呢？由于transmit增加分流是需要在修改配置后重启transmit程序的，而且随着分流分支的增加，其性能会不断降低，毕竟每次请求到 来时它都需要遍历所有分流分支以判断应该走哪条分支，而对于开放平台来说，任何一个新的开放模块都有可能会引入一个甚至多个新的外域，这会导致 transmit的分流分支数随着开放模块数量的增加而线性增加，这无论在op运维上还是程序性能上都将是不可接受的。 基于这样的考虑，space在开放平台二期项目中引入了一个新的模块&amp;#8212;&amp;#8212;spproxy模块，用于提供跨域请求代理服务，从而彻底解决了js跨域问题。 从某种意义上讲，spproxy其实就是一个ui，它接收来自apache的请求，并处理该请求获取真正的页面数据，然后返回给apache，再由 apache返回给客户端。Spproxy只接收一个apache命令号（AC_SYS_PROXY : 38），并提供了两个http接口：&lt;/p&gt;/sys/pxy/ajax?url=xxxx和/sys/pxy/xml?url=xxx&lt;p&gt;其中，/sys/pxy/是可以通过apache配置文件来修改成其他目录名的，url参数就是js希望跨域请求的数据的uri（需要进行url编 码，如 果url中有参数），xml接口与ajax接口的唯一区别是，spproxy会强制将前者返回的内容的Content-Type设为text/xml，而 对于后者，则是外域服务器返回的是何种Content-Type就是何种type。 Apache端只需要增加以下两个配置就可以让spproxy来处理以上两个http接口的请求，当然，前提是所用的apache是经过ns改写过的 apache，目前主要是1.3版本的apache：&lt;/p&gt;CmdNoMap   pxy      38&lt;br/&gt;CmdHost      pxy     10.23.64.185 20540&lt;p&gt;其中，pxy就是http接口中的第二个目录名，可以自定义，例如配置里如果写的是proxy，则http接口就是/sys/proxy /ajax?url=xxx和/sys/proxy/xml?url=xxx；38是spproxy能够处理的命令号，可以在编译时修改成其他 值；10.23.64.185 20540是spproxy所在机器的ip和spproxy的侦听端口。 通过以上配置后，hi域下的js就可以通过异步访问http://hi.baidu.com/sys/pxy/xml?url=http: //act.hi.baidu.com/ow/uwa/0/1/0/10001.xml来跨域访问http://act.hi.baidu.com/ow /uwa/0/1/0/10001.xml了。如果跨域访问的资源uri带参数，如http://act.hi.baidu.com/widget /recommend?num=6，则在访问时需要将参数值进行url编码，如http://hi.baidu.com/sys/pxy /xml?url=http%3A%2F %2Fact%2Ehi%2Ebaidu%2Ecom%2Fwidget%2Frecommend%3Fnum%3D6。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;a name="Spproxy%E4%BB%8B%E7%BB%8D"&gt;&lt;/a&gt;Spproxy介绍&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Spproxy是一个基于epoll网络模型开发的单进程模块，包含一个数据抓取线程和定时加载线程：  抓取线程 ，对跨域请求进行代理，抓取指定url对应的页面内容并返回给前端，此线程采用epoll模型提高请求处理的并发度  定时加载线程，定时加载域名白名单以及部分可重加载的配置项（如各种超时时间、是否强制指定cache过期时间等） spproxy通过一个域名白名单限制js能够跨域访问的域名以降低安全风险，需要增加一个js能够跨域访问的外域时只需要在spproxy的域名白名单 文件spproxy_domainlist.txt中增加一行即可，5分钟后（具体生效时间可配置）即会生效。 由于采用的是epoll网络模型，spproxy本身能够很好地抵御慢连接攻击，同时，它还具有与space ui同样强大的防攻击功能。 为了减少对外域服务器的请求以提高跨域请求的响应速度，同时又降低外域服务器封杀我们的代理服务的风险，spproxy本身做了一个相对简单的cache 功能。如果外域服务器返回的页面http头中指定了cache过期时间，spproxy就会根据该http头对该页面的cache过期时间算一个比较合理 的过期值并对页面进行cache；如果外域服务器返回的http头中没有指定cache过期时间或要求不进行cache，则spproxy还是会对该页面 进行短期的cache，过期时间可配置。 另外，对于spproxy模块中涉及的大多数超时时间配置及域名白名单都是可以定时重加载的，从而实现线上服务调整参数、增加信任域时无需重启服务作废 cache的目的。 不过，spproxy目前也还存在一些缺点：  返回给spproxy的响应体不能是经过压缩编码的，spproxy在向外域请求时会在http头中标明这一点，这会增加读响应时间和外域网站的带宽消耗  Spproxy目前只是根据外域服务器的http响应头中的Cache-Control字段中的max-age属性计算页面的cache过期时间，而实际 上很多网站返回的cache-control字段并不是通过max-age来标示cache过期时间的  Spproxy目前只支持GET方法，不支持其他http方法，而且，spproxy不支持任意大小的外域页面，但可以通过配置改变它所能接收的页面数据 量的最大值 下一步，spproxy将会在解析http响应头中的cache-control字段方面做些改进以便更加合理地控制spproxy对返回页面的 cache，另外，下一步还将支持通过POST方法进行跨域请求，以提高跨域请求的安全性。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/2494166.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2012/05/10/2494166.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2012/05/06/2485649.html</id><title type="text">Linux中国 QQ 交流群 大全</title><summary type="text">LinuxQQ群现在讨论群组如下，大家可以有选择的加入讨论： （征集各地地方Linux QQ群，联系QQ:24521657。） 一、QQ群： 群号 名称 描述 32915577 Linux中国 技术讨论超级群 综合Linux技术讨论。 8887905 Linux中国 技术一区 普通Linux技术讨论，新手入门。 38900257 Linux中国 技术二区 普通Linux技术讨论，新手入门。 2476473 Linux中国 技术三区 普通Linux技术讨论，新手入门。 17663178 Linux中国 技术四区 普通Linux技术讨论，新手入门。 35174568 Linux中国 技术五区 普通</summary><published>2012-05-06T02:08:00Z</published><updated>2012-05-06T02:08:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2012/05/06/2485649.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2012/05/06/2485649.html"/><content type="html">&lt;p&gt;&lt;strong&gt;LinuxQQ群&lt;/strong&gt;&lt;br /&gt;现在讨论群组如下，大家可以有选择的加入讨论： （征集各地地方Linux QQ群，联系QQ:24521657。）&amp;nbsp; &lt;br /&gt;一、QQ群： &lt;br /&gt;群号 名称 描述 &lt;br /&gt;32915577 Linux中国 技术讨论超级群 综合Linux技术讨论。 &lt;br /&gt;8887905 Linux中国 技术一区 普通Linux技术讨论，新手入门。 &lt;br /&gt;38900257 Linux中国 技术二区 普通Linux技术讨论，新手入门。 &lt;br /&gt;2476473 Linux中国 技术三区 普通Linux技术讨论，新手入门。 &lt;br /&gt;17663178 Linux中国 技术四区 普通Linux技术讨论，新手入门。 &lt;br /&gt;35174568 Linux中国 技术五区 普通Linux技术讨论，新手入门。 &lt;br /&gt;68558671 Linux中国 技术六区 普通Linux技术讨论，新手入门。 &lt;br /&gt;26695128 Linux中国 嵌入式Linux专区 嵌入式Linux技术讨论。 &lt;br /&gt;34200131 Linux中国 嵌入式一区 嵌入式专题讨论，ARM为主。 &lt;br /&gt;31163121 Linux中国 嵌入式二区 嵌入式专题讨论，ARM为主。 &lt;br /&gt;6239452 Linux中国 嵌入式三区 嵌入式专题讨论，ARM为主。 &lt;br /&gt;12528553 Linux中国 嵌入式四区 嵌入式专题讨论，ARM为主。 &lt;br /&gt;74401824 Linux中国 Redhat 专区 Redhat专区，讨论和Redhat Linux相关的内容。 &lt;br /&gt;10493835 Linux中国 Redhat 一区 Redhat专区一，只讨论和Redhat Linux相关的内容。 &lt;br /&gt;28026997 Linux中国 Redhat 二区 Redhat 专区二，只讨论和Redhat Linux相关的内容。 &lt;br /&gt;21778922 Linux中国 Redhat 三区 Redhat 专区三，只讨论和Redhat Linux相关的内容。 &lt;br /&gt;59698934 Linux中国 Redhat 四区 Redhat 专区四，只讨论和Redhat Linux相关的内容。 &lt;br /&gt;32082517 Linux中国 红旗专区 红旗专区，只讨论和红旗 Linux相关的内容。(满，请加II区) &lt;br /&gt;66134943 Linux中国 红旗II区 红旗2区，只讨论和红旗 Linux相关的内容。 &lt;br /&gt;36741016 Linux中国 Gentoo专区 Gentoo专区，只讨论和Gentoo Linux相关的内容。 &lt;br /&gt;168232 Linux中国 Centos专区 Centos专区，只讨论和Centos Linux相关的内容。 &lt;br /&gt;12737599 Linux中国 Ubuntu专区 Ubuntu专区，只讨论和Ubuntu Linux相关的内容。（满，新用户请加二群） &lt;br /&gt;66894901 Linux中国 Ubuntu 二群 Ubuntu专区，只讨论和Ubuntu Linux相关的内容。 &lt;br /&gt;75805322 Linux中国 Ubuntu 三群 Ubuntu专区，只讨论和Ubuntu Linux相关的内容。 &lt;br /&gt;筹建 Linux中国 Debian专区 Debian专区，只讨论和Debian Linux相关的内容。 &lt;br /&gt;19075332 Linux中国 Fedora专区 Fedora专区，只讨论和Fedora Linux相关的内容。 &lt;br /&gt;75776118 Linux中国 Fedora一区 Fedora一区，只讨论和Fedora Linux相关的内容。 &lt;br /&gt;筹建 Linux中国 SUSE专区 SUSE专区，只讨论和SUSE Linux相关的内容。 &lt;br /&gt;19241334 Linux中国 Unix专区 Unix专区，只讨论和Unix相关的内容。 &lt;br /&gt;11713694 Linux中国 服务器技术群 讨论Linux服务器技术。 &lt;br /&gt;49983436 Linux中国 设计软件应用专区 讨论设计类软件在Linux下的应用（犀牛 3D MAX CAD）。 &lt;br /&gt;74399915 Linux中国 综合讨论区 综合讨论区，Linux、开源技术，讨论什么都行。 &lt;br /&gt;16476435 Linux中国 综合讨论二区 综合讨论区，不局限于Linux，讨论什么都行。 &lt;br /&gt;34337870 Linux中国武汉群 武汉专群，欢迎武汉的Linux爱好者加盟！ &lt;br /&gt;79228734 Linux中国武汉二群 武汉专群二，欢迎武汉的Linux爱好者加盟！ &lt;br /&gt;44395158 Linux中国浙江群 浙江专群，欢迎浙江的Linux爱好者加盟！ &lt;br /&gt;12623227 Linux中国上海群 上海专群，欢迎上海的Linux爱好者加盟！ &lt;br /&gt;66457946 Linux中国上海群2群 上海专群2，欢迎上海的Linux爱好者加盟！ &lt;br /&gt;39444612 Linux中国福建群 福建专群，欢迎福建的Linux爱好者加盟！ &lt;br /&gt;42012412 Linux中国四川群 四川专群，欢迎四川的Linux爱好者加盟！ &lt;br /&gt;43439778 Linux中国广东群 广东专群，欢迎广东的Linux爱好者加盟！ &lt;br /&gt;65739697 Linux中国安徽群 安徽专群，欢迎安徽的Linux爱好者加盟！ &lt;br /&gt;44438836 Linux中国河北群 河北专群，欢迎河北的Linux爱好者加盟！ &lt;br /&gt;61268745 Linux中国北京群 北京专群，欢迎北京的Linux爱好者加盟！ &lt;br /&gt;44831270 Linux中国湖南群 湖南专群，欢迎湖南的Linux爱好者加盟！ &lt;br /&gt;52489700 Linux中国云南群 云南专群，欢迎云南的Linux爱好者加盟！ &lt;br /&gt;13776955 Linux中国陕西群 陕西专群，欢迎陕西的Linux爱好者加盟！ &lt;br /&gt;1160292 Linux中国黑龙江群 黑龙江省专群，欢迎黑龙江的Linux爱好者加盟！ &lt;br /&gt;23156896 Linux中国内蒙古群 内蒙古专群，欢迎内蒙古的Linux爱好者加盟！ &lt;br /&gt;72906791 Linux中国河南群 河南专群，欢迎河南的Linux爱好者加盟！ &lt;br /&gt;47579763 Linux中国吉林群 吉林专群，欢迎吉林的Linux爱好者加盟！ &lt;br /&gt;48334483 Linux中国湖北群 湖北专群，欢迎湖北的Linux爱好者加盟！ &lt;br /&gt;14272879 Linux中国海南群 海南专群，欢迎海南的Linux爱好者加盟！ &lt;br /&gt;75805235 Linux中国江苏群 江苏专群，欢迎江苏的Linux爱好者加盟！ &lt;br /&gt;60869449 Linux中国山东群 山东专群，欢迎山东的Linux爱好者加盟！ &lt;br /&gt;20466095 Linux中国深圳群 深圳专群，欢迎深圳的Linux爱好者加盟！ &lt;br /&gt;86883650 Linux中国贵州群 贵州专群，欢迎贵州的Linux爱好者加盟！&amp;nbsp;&lt;br /&gt;&lt;br /&gt;誉天红帽RHCA超级群：46397700 &lt;/p&gt;&lt;p&gt;华中红帽RHCE认证高级群1：29313983 &lt;/p&gt;&lt;p&gt;华中红帽RHCE认证超级群2：50376633 （500人）&lt;/p&gt;&lt;p&gt;华中红帽RHCE认证高级群3：64981877&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/2485649.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2012/05/06/2485649.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2012/04/30/2477124.html</id><title type="text">巴菲特选股标准曝光：只会看上75只A股</title><summary type="text">上市公司的年报和一季报将结束披露，95%的公司公布了业绩，整体回落已成定局。其中，中国远洋、中海集运等7家公司入驻“亏损大户榜”，央企中国远洋以104.49亿元的亏损额成为A股2011年当仁不让的“亏损之王”，每天亏损约3000万元，每股收益仅为-1.02元。 统计数据显示，2011年巨额亏损公司集中在航运、钢铁、有色、电力、化纤等行业，几乎都是一些大公司，在行业中有地位有影响……最后，还是栽了！ 近2400多只A股中，到底有多少公司值得我们投资？如果叫巴菲特来炒A股，他会告诉你，只有75只股票值得考虑。 航运和钢铁行业很悲惨 亏损额度前10大上市公司，折射出航运和钢铁行业很悲惨。 ...</summary><published>2012-04-30T11:45:00Z</published><updated>2012-04-30T11:45:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2012/04/30/2477124.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2012/04/30/2477124.html"/><content type="html">&lt;p&gt;上市公司的年报和一季报将结束披露，95%的公司公布了业绩，整体回落已成定局。其中，中国远洋、中海集运等7家公司入驻&amp;#8220;亏损大户榜&amp;#8221;，央企中国远洋以104.49亿元的亏损额成为A股2011年当仁不让的&amp;#8220;亏损之王&amp;#8221;，每天亏损约3000万元，每股收益仅为-1.02元。&lt;/p&gt;&lt;p&gt;统计数据显示，2011年巨额亏损公司集中在航运、钢铁、有色、电力、化纤等行业，几乎都是一些大公司，在行业中有地位有影响&amp;#8230;&amp;#8230;最后，还是栽了！&lt;/p&gt;&lt;p&gt;近2400多只A股中，到底有多少公司值得我们投资？如果叫巴菲特来炒A股，他会告诉你，只有75只股票值得考虑。&lt;/p&gt;&lt;p&gt;航运和钢铁行业很悲惨&lt;/p&gt;&lt;p&gt;亏损额度前10大上市公司，折射出航运和钢铁行业很悲惨。&lt;/p&gt;&lt;p&gt;除了&amp;#8220;状元&amp;#8221;中国远洋之外，航运业公司中海集运以27.43亿元的亏损额摘得&amp;#8220;榜眼&amp;#8221;；钢铁业录得3席，鞍钢股份以21.43亿元的亏损额摘得亏损榜&amp;#8220;探花&amp;#8221;，也成为钢铁行业的&amp;#8220;亏损王&amp;#8221;。&lt;/p&gt;&lt;p&gt;中国远洋在年报中称，2011年，受航运市场供需严重失衡、运价快速下跌、燃油等成本支出持续上升等因素影响，占公司业务比重最大的集装箱航运及相关业务、干散货航运及相关业务效益大幅下滑，致使净利润由2010年的盈利67.67亿元，转为2011年的亏损104.49亿元。&lt;/p&gt;&lt;p&gt;巴菲特只会看上75只股&lt;/p&gt;&lt;p&gt;好公司一定是高毛利率，巴菲特投资的可口可乐毛利率一直保持60%以上，穆迪及伯灵顿北方圣太菲铁路运输公司也是如此。美国包括通用汽车、美国钢铁在内的公司毛利率多在20%以下徘徊，属于赚钱辛苦的公司，不属于他钟意的类型。&lt;/p&gt;&lt;p&gt;巴菲特的选股标准可以用&amp;#8220;高帅富&amp;#8221;进行概括：毛利率持续高于40%的堪称是&amp;#8220;高&amp;#8221;，净利率高于5%以上叫&amp;#8220;帅&amp;#8221;，再加上净资产收益率高于15%的&amp;#8220;富&amp;#8221;，&amp;#8220;高帅富&amp;#8221;就这样诞生了。&lt;/p&gt;&lt;p&gt;不过A股近2400家上市公司，按毛利率高于40%、净资产收益率高于15%、净利率高于5%过滤后，仅剩下75家公司。&lt;/p&gt;&lt;p&gt;巴菲特炒也会&amp;#8220;喝酒吃药&amp;#8221;&lt;/p&gt;&lt;p&gt;75家&amp;#8220;高帅富&amp;#8221;公司主要有白酒、医药、旅游、IT等几大类。&lt;/p&gt;&lt;p&gt;按巴菲特的传统观念，一般不选择投资更新步伐太快、需要不断投资开发新产品的IT类公司。此外，黄山旅游、丽江旅游等旅游类企业虽也显现出良好的盈利能力，但景区类公司体现出一定的公益性质。&lt;/p&gt;&lt;p&gt;&amp;#8220;巴菲特强调连续10年以上保持高毛利率，就是要规避搭乘上行业高景气度的公司。巴菲特喜欢那种能够经得起时间考验的、依靠独特竞争力立足于市场的公司。&amp;#8221;平安证券财富部经理分析说，从数据上来看，初步符合巴菲特毛利率指标的主要是白酒公司和部分制药企业，如贵州茅台、张裕A、泸州老窖、五粮液，双鹭药业、华兰生物等。&lt;/p&gt;&lt;p&gt;如此看来，如巴菲特炒A股，也会像国内基金经理一样，喜欢&amp;#8220;喝酒吃药&amp;#8221;。&lt;/p&gt;&lt;p&gt;私募称：消费行业毛利率高&lt;/p&gt;&lt;p&gt;&amp;#8220;从已披露年报看，新兴行业高增长没有整体体现出来，在传统行业大面积亏损下，消费行业可以说一枝独秀。&amp;#8221;重庆君凯投资董事长张军分析说，虽较2010年有所下滑，从毛利率来看，消费行业的毛利率整体高。传统消费旺季将至，啤酒、饮料行业更看好。&lt;/p&gt;&lt;p&gt;统计数据也显示，餐饮旅游、房地产、食品饮料、信息服务、医药生物等行业的毛利率领跑。餐饮旅游有21家公司公布2011年报，平均毛利率水平为43.21%，餐饮的全聚德和湘鄂情，虽毛利率分别为69.19%、55.96%，去掉房租和人工，净利只剩下7.6%、7.97%。&lt;/p&gt;&lt;p&gt;食品饮料已公布年报43家公司，整体毛利率升1.26%，达40.07%。信息服务业整体毛利率达31.35%。医药生物行业整体毛利率达31.01%。&lt;/p&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/2477124.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2012/04/30/2477124.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2012/04/14/2447608.html</id><title type="text">磁盘映射与端口映射</title><summary type="text">“映射网络驱动器”，就是把在其它电脑上的一个共享文件夹变为自己电脑上的一个逻辑驱动器符，以供使用方便。 映射网络驱动器"的意思是将局域网中的某个目录映射成本地驱动器号，就是说把网络上其他机器的共享的文件夹映射自己机器上的一个磁盘，这样可以提高访问时间。 “映射网络驱动器”，就是把在其它电脑上的一个共享文件夹变为自己电脑上的一个逻辑驱动器符，以供使用方便。 比如说有“甲”与“乙”两台电脑，两台电脑上都有“C”、“D”、“E”三个逻辑驱动器，而且“甲”电脑的IP地址为：192.168.1.01假如“甲”电脑上有个文件名为“demo”文件夹，并且已经设置成共享状态。那么在“乙”电脑上我可以</summary><published>2012-04-14T13:53:00Z</published><updated>2012-04-14T13:53:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2012/04/14/2447608.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2012/04/14/2447608.html"/><content type="html">&lt;p&gt;&amp;#8220;映射网络驱动器&amp;#8221;，就是把在其它电脑上的一个共享文件夹变为自己电脑上的一个逻辑驱动器符，以供使用方便。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 映射网络驱动器"的意思是将局域网中的某个目录映射成本地驱动器号，就是说把网络上其他机器的共享的文件夹映射自己机器上的一个磁盘，这样可以提高访问时间。 &lt;br /&gt;&amp;#8220;映射网络驱动器&amp;#8221;，就是把在其它电脑上的一个共享文件夹变为自己电脑上的一个逻辑驱动器符，以供使用方便。 &lt;br /&gt;比如说有&amp;#8220;甲&amp;#8221;与&amp;#8220;乙&amp;#8221;两台电脑，两台电脑上都有&amp;#8220;C&amp;#8221;、&amp;#8220;D&amp;#8221;、&amp;#8220;E&amp;#8221;三个逻辑驱动器，而且&amp;#8220;甲&amp;#8221;电脑的IP地址为：192.168.1.01&lt;br /&gt;假如&amp;#8220;甲&amp;#8221;电脑上有个文件名为&amp;#8220;demo&amp;#8221;文件夹，并且已经设置成共享状态。那么在&amp;#8220;乙&amp;#8221;电脑上我可以通过：右单击&amp;#8220;网上邻居&amp;#8221;---》&amp;#8220;映射网络驱动器（N）...&amp;#8221;----》然后在&amp;#8220;文件夹（0）&amp;#8221;里输入&amp;#8220;\192.168.1.01demo&amp;#8221;,然后单击&amp;#8220;完成&amp;#8221;即可。&lt;br /&gt;如何用映射驱动器实现共享 &lt;br /&gt;&lt;br /&gt;在局域网上，要访问一个共享的驱动器或文件夹，只要在桌面上打开&amp;#8220;网上邻居&amp;#8221;窗口，然后选择有共享资源的计算机即可，但是，此法使用起来效果并不是很好，有时还不能解决实际问题，因此人们通常采用将驱动器符映射到共享资源的方法。 &lt;br /&gt;XP实用技巧:映射网络驱动器 &lt;br /&gt;&lt;br /&gt;如果你经常使用Windows中的文件共享的话，那你也许知道在Windows系统中不仅可以通过&amp;#8220;网上邻居&amp;#8221;浏览共享文件，还可以通过在&amp;#8220;我的电脑&amp;#8221;的地址栏中输入：共享计算机名来浏览共享文件。例如：&amp;#8220;\\计算机名\共享名\路径\文件名&amp;#8221;。 &lt;br /&gt;&lt;br /&gt;但是，使用共享计算机名来浏览共享文件会让我们觉得很麻烦。那有没有简单的方法可以来浏览共享文件呢？我们可以通过&amp;#8220;映射网络驱动器&amp;#8221;来简化浏览共享文件的过程。 &lt;br /&gt;&lt;br /&gt;Windows系统提供了几种&amp;#8220;映射网络驱动器&amp;#8221;的方法，在命令行模式下，我们可以使用：&amp;#8220;NET USE \\计算机名\共享名\路径&amp;#8221;。除了使用命令来实现之外，还可以通过在&amp;#8220;开始|网上邻居&amp;#8221;点击右键，选择&amp;#8220;映射网络驱动器&amp;#8221;。在弹出的窗口中（如图所示），可以直接输入例如：&amp;#8220;\\计算机名\共享路径&amp;#8221;映射网络驱动器，也可以点击图1中的&amp;#8220;浏览&amp;#8221;来找到目前局域网中存在的共享内容。 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;映射网络驱动器 &lt;br /&gt;&lt;br /&gt;将数据库文件所在文件夹映射成网络驱动器。这样连接另一台计算机上的数据库就象连接本机数据库一样了。 &lt;br /&gt;&lt;br /&gt;映射网络驱动器的操作步骤：回到操作系统的桌面，打开&amp;#8220;我的电脑&amp;#8221;。在&amp;#8220;工具&amp;#8221;菜单中，选择&amp;#8220;映射网络驱动器&amp;#8221;项，弹出设置窗口 &lt;br /&gt;&lt;br /&gt;单击&amp;#8220;确定&amp;#8221;按钮后，返回到图5所示，单击&amp;#8220;完成&amp;#8221;按钮，完成网络驱动器的设置。这样在&amp;#8220;我的电脑&amp;#8221;中，将直接增加一个盘符为&amp;#8220;Z&amp;#8221;的网络驱动器。操作网络驱动器如同操作作本机的其它硬盘驱动器一样。 &lt;br /&gt;&lt;br /&gt;注意：断开映射的网络驱动器，只需选中&amp;#8220;网络驱动器&amp;#8221;，单击&amp;#8220;右键&amp;#8221;弹出快速菜单，选择&amp;#8220;断开&amp;#8221;项即可。&lt;/ca&gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;什么是端口映射?&lt;br /&gt;在网络技术中，端口（Port）有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口，如RJ-45端口、Serial端口等。我们这里所说的端口，不是计算机硬件的I/O端口，而是软件形式上的概念。服务器可以向外提供多种服务，比如，一台服务器可以同时是WEB服务器，也可以是FTP服务器，同时，它也可以是邮件服务器。为什么一台服务器可以同时提供那么多的服务呢？其中一个很主要的方面，就是各种服务采用不同的端口分别提供不同的服务，比如：WEB采用80端口，FTP采用21端口等。这样，通过不同端口，计算机与外界进行互不干扰的通信。我们这里所指的端口不是指物理意义上的端口，而是特指TCP/IP协议中的端口，是逻辑意义上的端口。端口映射:内网的一台电脑要上因特网，就需要端口映射。端口映射分为动态和静态.动态端口映射:内网中的一台电脑要访问新浪网，会向NAT网关发送数据包，报头中包括对方(就是新浪网)IP、端口和本机IP、端口，NAT网关会把本机IP、端口替换成自己的公网IP、一个未使用的端口，并且会记下这个映射关系，为以后转发数据包使用。然后再把数据发给新浪网，新浪网收到数据后做出反应，发送数据到NAT网关的那个未使用的端口，然后NAT网关将数据转发给内网中的那台电脑，实现内网和公网的通讯.当连接关闭时，NAT网关会释放分配给这条连接的端口，以便以后的连接可以继续使用。动态端口映射其实也就是NAT网关的工作方式。静态端口映射:&amp;amp;nbsp;就是在NAT网关上开放一个固定的端口，然后设定此端口收到的数据要转发给内网哪个IP和端口，不管有没有连接，这个映射关系都会一直存在。就可以让公网主动访问内网的一个电脑。&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/2447608.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2012/04/14/2447608.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/happyday56/archive/2012/03/17/2403882.html</id><title type="text">Response.ContentType 详细列表</title><summary type="text">不同的ContentType 会影响客户端所看到的效果.默认的ContentType为 text/html 也就是网页格式.以下是详细列表：................... 不同的ContentType 会影响客户端所看到的效果.默认的ContentType为 text/html 也就是网页格式.代码如:&lt;% response.ContentType ="text/html" %&gt; &lt;!--＃i nclude virtual="/ContentType.html" --&gt;显示的为网页,而&lt;% response.Cont</summary><published>2012-03-17T10:38:00Z</published><updated>2012-03-17T10:38:00Z</updated><author><name>快乐就好</name><uri>http://www.cnblogs.com/happyday56/</uri></author><link rel="alternate" href="http://www.cnblogs.com/happyday56/archive/2012/03/17/2403882.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/happyday56/archive/2012/03/17/2403882.html"/><content type="html">&lt;div id="cnblogs_post_body"&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;不同的&lt;/span&gt;ContentType &lt;span style="font-family: 宋体"&gt;会影响客户端所看到的效果&lt;/span&gt;.&lt;span style="font-family: 宋体"&gt;默认的&lt;/span&gt;ContentType&lt;span style="font-family: 宋体"&gt;为&lt;/span&gt; text/html &lt;span style="font-family: 宋体"&gt;也就是网页格式&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;以下是详细列表：&lt;/span&gt;&lt;/p&gt;&lt;p&gt;................... &lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;不同的&lt;/span&gt;ContentType &lt;span style="font-family: 宋体"&gt;会影响客户端所看到的效果&lt;/span&gt;.&lt;span style="font-family: 宋体"&gt;默认的&lt;/span&gt;ContentType&lt;span style="font-family: 宋体"&gt;为&lt;/span&gt; text/html &lt;span style="font-family: 宋体"&gt;也就是网页格式&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;代码如&lt;/span&gt;:&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="text/html" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/ContentType.html" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;显示的为网页&lt;/span&gt;,&lt;span style="font-family: 宋体"&gt;而&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="text/plain" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/sscript/ContentType.html" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;则会显示&lt;/span&gt;html&lt;span style="font-family: 宋体"&gt;原代码&lt;/span&gt;.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;以下为一些常用的&lt;/span&gt; ContentType&lt;/p&gt;&lt;p&gt;GIF images &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="image/gif" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/myimage.gif" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;JPEG images &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="image/jpeg" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/myimage.jpeg" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;TIFF images &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="image/tiff" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/myimage.tiff" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;MICROSOFT WORD document &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="application/msword" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/myfile.doc" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;RTF document &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="application/rtf" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/myfile.rtf" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;MICROSOFT EXCEL document &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="application/x-excel" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/myfile.xls" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;MICROSOFT POWERPOINT document &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="application/ms-powerpoint" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/myfile.pff" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;PDF document &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="application/pdf" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/myfile.pdf" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;ZIP document &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="application/zip" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;lt;!--&lt;span style="font-family: 宋体"&gt;＃&lt;/span&gt;i nclude virtual="/myfile.zip" --&amp;gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Json数据&lt;/p&gt;&lt;p&gt;&amp;lt;% response.ContentType ="application/json" %&amp;gt; &lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family: 宋体"&gt;下面是更详细的&lt;/span&gt;ContentType&lt;/p&gt;&lt;p&gt;'ez' =&amp;gt; 'application/andrew-inset', &lt;/p&gt;&lt;p&gt;'hqx' =&amp;gt; 'application/mac-binhex40', &lt;/p&gt;&lt;p&gt;'cpt' =&amp;gt; 'application/mac-compactpro', &lt;/p&gt;&lt;p&gt;'doc' =&amp;gt; 'application/msword', &lt;/p&gt;&lt;p&gt;'bin' =&amp;gt; 'application/octet-stream', &lt;/p&gt;&lt;p&gt;'dms' =&amp;gt; 'application/octet-stream', &lt;/p&gt;&lt;p&gt;'lha' =&amp;gt; 'application/octet-stream', &lt;/p&gt;&lt;p&gt;'lzh' =&amp;gt; 'application/octet-stream', &lt;/p&gt;&lt;p&gt;'exe' =&amp;gt; 'application/octet-stream', &lt;/p&gt;&lt;p&gt;'class' =&amp;gt; 'application/octet-stream', &lt;/p&gt;&lt;p&gt;'so' =&amp;gt; 'application/octet-stream', &lt;/p&gt;&lt;p&gt;'dll' =&amp;gt; 'application/octet-stream', &lt;/p&gt;&lt;p&gt;'oda' =&amp;gt; 'application/oda', &lt;/p&gt;&lt;p&gt;'pdf' =&amp;gt; 'application/pdf', &lt;/p&gt;&lt;p&gt;'ai' =&amp;gt; 'application/postscript', &lt;/p&gt;&lt;p&gt;'eps' =&amp;gt; 'application/postscript', &lt;/p&gt;&lt;p&gt;'ps' =&amp;gt; 'application/postscript', &lt;/p&gt;&lt;p&gt;'smi' =&amp;gt; 'application/smil', &lt;/p&gt;&lt;p&gt;'smil' =&amp;gt; 'application/smil', &lt;/p&gt;&lt;p&gt;'mif' =&amp;gt; 'application/vnd.mif', &lt;/p&gt;&lt;p&gt;'xls' =&amp;gt; 'application/vnd.ms-excel', &lt;/p&gt;&lt;p&gt;'ppt' =&amp;gt; 'application/vnd.ms-powerpoint', &lt;/p&gt;&lt;p&gt;'wbxml' =&amp;gt; 'application/vnd.wap.wbxml', &lt;/p&gt;&lt;p&gt;'wmlc' =&amp;gt; 'application/vnd.wap.wmlc', &lt;/p&gt;&lt;p&gt;'wmlsc' =&amp;gt; 'application/vnd.wap.wmlscriptc', &lt;/p&gt;&lt;p&gt;'bcpio' =&amp;gt; 'application/x-bcpio', &lt;/p&gt;&lt;p&gt;'vcd' =&amp;gt; 'application/x-cdlink', &lt;/p&gt;&lt;p&gt;'pgn' =&amp;gt; 'application/x-chess-pgn', &lt;/p&gt;&lt;p&gt;'cpio' =&amp;gt; 'application/x-cpio', &lt;/p&gt;&lt;p&gt;'csh' =&amp;gt; 'application/x-csh', &lt;/p&gt;&lt;p&gt;'dcr' =&amp;gt; 'application/x-director', &lt;/p&gt;&lt;p&gt;'dir' =&amp;gt; 'application/x-director', &lt;/p&gt;&lt;p&gt;'dxr' =&amp;gt; 'application/x-director', &lt;/p&gt;&lt;p&gt;'dvi' =&amp;gt; 'application/x-dvi', &lt;/p&gt;&lt;p&gt;'spl' =&amp;gt; 'application/x-futuresplash', &lt;/p&gt;&lt;p&gt;'gtar' =&amp;gt; 'application/x-gtar', &lt;/p&gt;&lt;p&gt;'hdf' =&amp;gt; 'application/x-hdf', &lt;/p&gt;&lt;p&gt;'js' =&amp;gt; 'application/x-javascript', &lt;/p&gt;&lt;p&gt;'skp' =&amp;gt; 'application/x-koan', &lt;/p&gt;&lt;p&gt;'skd' =&amp;gt; 'application/x-koan', &lt;/p&gt;&lt;p&gt;'skt' =&amp;gt; 'application/x-koan', &lt;/p&gt;&lt;p&gt;'skm' =&amp;gt; 'application/x-koan', &lt;/p&gt;&lt;p&gt;'latex' =&amp;gt; 'application/x-latex', &lt;/p&gt;&lt;p&gt;'nc' =&amp;gt; 'application/x-netcdf', &lt;/p&gt;&lt;p&gt;'cdf' =&amp;gt; 'application/x-netcdf', &lt;/p&gt;&lt;p&gt;'sh' =&amp;gt; 'application/x-sh', &lt;/p&gt;&lt;p&gt;'shar' =&amp;gt; 'application/x-shar', &lt;/p&gt;&lt;p&gt;'swf' =&amp;gt; 'application/x-shockwave-flash', &lt;/p&gt;&lt;p&gt;'sit' =&amp;gt; 'application/x-stuffit', &lt;/p&gt;&lt;p&gt;'sv4cpio' =&amp;gt; 'application/x-sv4cpio', &lt;/p&gt;&lt;p&gt;'sv4crc' =&amp;gt; 'application/x-sv4crc', &lt;/p&gt;&lt;p&gt;'tar' =&amp;gt; 'application/x-tar', &lt;/p&gt;&lt;p&gt;'tcl' =&amp;gt; 'application/x-tcl', &lt;/p&gt;&lt;p&gt;'tex' =&amp;gt; 'application/x-tex', &lt;/p&gt;&lt;p&gt;'texinfo' =&amp;gt; 'application/x-texinfo', &lt;/p&gt;&lt;p&gt;'texi' =&amp;gt; 'application/x-texinfo', &lt;/p&gt;&lt;p&gt;'t' =&amp;gt; 'application/x-troff', &lt;/p&gt;&lt;p&gt;'tr' =&amp;gt; 'application/x-troff', &lt;/p&gt;&lt;p&gt;'roff' =&amp;gt; 'application/x-troff', &lt;/p&gt;&lt;p&gt;'man' =&amp;gt; 'application/x-troff-man', &lt;/p&gt;&lt;p&gt;'me' =&amp;gt; 'application/x-troff-me', &lt;/p&gt;&lt;p&gt;'ms' =&amp;gt; 'application/x-troff-ms', &lt;/p&gt;&lt;p&gt;'ustar' =&amp;gt; 'application/x-ustar', &lt;/p&gt;&lt;p&gt;'src' =&amp;gt; 'application/x-wais-source', &lt;/p&gt;&lt;p&gt;'xhtml' =&amp;gt; 'application/xhtml+xml', &lt;/p&gt;&lt;p&gt;'xht' =&amp;gt; 'application/xhtml+xml', &lt;/p&gt;&lt;p&gt;'zip' =&amp;gt; 'application/zip', &lt;/p&gt;&lt;p&gt;'au' =&amp;gt; 'audio/basic', &lt;/p&gt;&lt;p&gt;'snd' =&amp;gt; 'audio/basic', &lt;/p&gt;&lt;p&gt;'mid' =&amp;gt; 'audio/midi', &lt;/p&gt;&lt;p&gt;'midi' =&amp;gt; 'audio/midi', &lt;/p&gt;&lt;p&gt;'kar' =&amp;gt; 'audio/midi', &lt;/p&gt;&lt;p&gt;'mpga' =&amp;gt; 'audio/mpeg', &lt;/p&gt;&lt;p&gt;'mp2' =&amp;gt; 'audio/mpeg', &lt;/p&gt;&lt;p&gt;'mp3' =&amp;gt; 'audio/mpeg', &lt;/p&gt;&lt;p&gt;'aif' =&amp;gt; 'audio/x-aiff', &lt;/p&gt;&lt;p&gt;'aiff' =&amp;gt; 'audio/x-aiff', &lt;/p&gt;&lt;p&gt;'aifc' =&amp;gt; 'audio/x-aiff', &lt;/p&gt;&lt;p&gt;'m3u' =&amp;gt; 'audio/x-mpegurl', &lt;/p&gt;&lt;p&gt;'ram' =&amp;gt; 'audio/x-pn-realaudio', &lt;/p&gt;&lt;p&gt;'rm' =&amp;gt; 'audio/x-pn-realaudio', &lt;/p&gt;&lt;p&gt;'rpm' =&amp;gt; 'audio/x-pn-realaudio-plugin', &lt;/p&gt;&lt;p&gt;'ra' =&amp;gt; 'audio/x-realaudio', &lt;/p&gt;&lt;p&gt;'wav' =&amp;gt; 'audio/x-wav', &lt;/p&gt;&lt;p&gt;'pdb' =&amp;gt; 'chemical/x-pdb', &lt;/p&gt;&lt;p&gt;'xyz' =&amp;gt; 'chemical/x-xyz', &lt;/p&gt;&lt;p&gt;'bmp' =&amp;gt; 'image/bmp', &lt;/p&gt;&lt;p&gt;'gif' =&amp;gt; 'image/gif', &lt;/p&gt;&lt;p&gt;'ief' =&amp;gt; 'image/ief', &lt;/p&gt;&lt;p&gt;'jpeg' =&amp;gt; 'image/jpeg', &lt;/p&gt;&lt;p&gt;'jpg' =&amp;gt; 'image/jpeg', &lt;/p&gt;&lt;p&gt;'jpe' =&amp;gt; 'image/jpeg', &lt;/p&gt;&lt;p&gt;'png' =&amp;gt; 'image/png', &lt;/p&gt;&lt;p&gt;'tiff' =&amp;gt; 'image/tiff', &lt;/p&gt;&lt;p&gt;'tif' =&amp;gt; 'image/tiff', &lt;/p&gt;&lt;p&gt;'djvu' =&amp;gt; 'image/vnd.djvu', &lt;/p&gt;&lt;p&gt;'djv' =&amp;gt; 'image/vnd.djvu', &lt;/p&gt;&lt;p&gt;'wbmp' =&amp;gt; 'image/vnd.wap.wbmp', &lt;/p&gt;&lt;p&gt;'ras' =&amp;gt; 'image/x-cmu-raster', &lt;/p&gt;&lt;p&gt;'pnm' =&amp;gt; 'image/x-portable-anymap', &lt;/p&gt;&lt;p&gt;'pbm' =&amp;gt; 'image/x-portable-bitmap', &lt;/p&gt;&lt;p&gt;'pgm' =&amp;gt; 'image/x-portable-graymap', &lt;/p&gt;&lt;p&gt;'ppm' =&amp;gt; 'image/x-portable-pixmap', &lt;/p&gt;&lt;p&gt;'rgb' =&amp;gt; 'image/x-rgb', &lt;/p&gt;&lt;p&gt;'xbm' =&amp;gt; 'image/x-xbitmap', &lt;/p&gt;&lt;p&gt;'xpm' =&amp;gt; 'image/x-xpixmap', &lt;/p&gt;&lt;p&gt;'xwd' =&amp;gt; 'image/x-xwindowdump', &lt;/p&gt;&lt;p&gt;'igs' =&amp;gt; 'model/iges', &lt;/p&gt;&lt;p&gt;'iges' =&amp;gt; 'model/iges', &lt;/p&gt;&lt;p&gt;'msh' =&amp;gt; 'model/mesh', &lt;/p&gt;&lt;p&gt;'mesh' =&amp;gt; 'model/mesh', &lt;/p&gt;&lt;p&gt;'silo' =&amp;gt; 'model/mesh', &lt;/p&gt;&lt;p&gt;'wrl' =&amp;gt; 'model/vrml', &lt;/p&gt;&lt;p&gt;'vrml' =&amp;gt; 'model/vrml', &lt;/p&gt;&lt;p&gt;'css' =&amp;gt; 'text/css', &lt;/p&gt;&lt;p&gt;'html' =&amp;gt; 'text/html', &lt;/p&gt;&lt;p&gt;'htm' =&amp;gt; 'text/html', &lt;/p&gt;&lt;p&gt;'asc' =&amp;gt; 'text/plain', &lt;/p&gt;&lt;p&gt;'txt' =&amp;gt; 'text/plain', &lt;/p&gt;&lt;p&gt;'rtx' =&amp;gt; 'text/richtext', &lt;/p&gt;&lt;p&gt;'rtf' =&amp;gt; 'text/rtf', &lt;/p&gt;&lt;p&gt;'sgml' =&amp;gt; 'text/sgml', &lt;/p&gt;&lt;p&gt;'sgm' =&amp;gt; 'text/sgml', &lt;/p&gt;&lt;p&gt;'tsv' =&amp;gt; 'text/tab-separated-values', &lt;/p&gt;&lt;p&gt;'wml' =&amp;gt; 'text/vnd.wap.wml', &lt;/p&gt;&lt;p&gt;'wmls' =&amp;gt; 'text/vnd.wap.wmlscript', &lt;/p&gt;&lt;p&gt;'etx' =&amp;gt; 'text/x-setext', &lt;/p&gt;&lt;p&gt;'xsl' =&amp;gt; 'text/xml', &lt;/p&gt;&lt;p&gt;'xml' =&amp;gt; 'text/xml', &lt;/p&gt;&lt;p&gt;'mpeg' =&amp;gt; 'video/mpeg', &lt;/p&gt;&lt;p&gt;'mpg' =&amp;gt; 'video/mpeg', &lt;/p&gt;&lt;p&gt;'mpe' =&amp;gt; 'video/mpeg', &lt;/p&gt;&lt;p&gt;'qt' =&amp;gt; 'video/quicktime', &lt;/p&gt;&lt;p&gt;'mov' =&amp;gt; 'video/quicktime', &lt;/p&gt;&lt;p&gt;'mxu' =&amp;gt; 'video/vnd.mpegurl', &lt;/p&gt;&lt;p&gt;'avi' =&amp;gt; 'video/x-msvideo', &lt;/p&gt;&lt;p&gt;'movie' =&amp;gt; 'video/x-sgi-movie', &lt;/p&gt;&lt;p&gt;'ice' =&amp;gt; 'x-conference/x-cooltalk'&lt;/p&gt;&lt;/div&gt;&lt;script type="text/javascript"&gt;if ($ != jQuery) {$ = jQuery.noConflict();}var isLogined = true;var cb_blogId = 34197;var cb_entryId = 1826961;var cb_blogApp = "luluping";var cb_blogUserGuid = "232f420b-63cf-dd11-9e4d-001cf0cd104b";var cb_entryCreatedDate = '2010/9/15 14:11:00';&lt;/script&gt;&lt;img src="http://www.cnblogs.com/happyday56/aggbug/2403882.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/happyday56/archive/2012/03/17/2403882.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><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;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&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;&lt;p&gt;随着互联网应用的广泛普及，海量数据的存储和访问成为了系统设计的瓶颈问题。对于一个大型的互联网应用，每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、负载均衡技术&lt;/strong&gt;&lt;br /&gt;负载均衡集群是由一组相互独立的计算机系统构成，通过常规网络或专用网络进行连接，由路由器衔接在一起，各节点相互协作、共同负载、均衡压力，对客户端来说，整个群集可以视为一台具有超高性能的独立服务器。&lt;/p&gt;&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;&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;&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;&lt;p&gt;(1) 不能够按照Web服务器的处理能力分配负载。&lt;br /&gt;(2) 负载均衡器(控制端)故障，会导致整个数据库系统瘫痪。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、数据库的读写分离&lt;/strong&gt;&lt;br /&gt;1，实现原理：读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器，这样能有效地减轻数据库压力，也能减轻io压力。主数据库提供写操作，从数据库提供读操作，其实在很多系统中，主要是读的操作。当主数据库进行写操作时，数据要同步到从的数据库，这样才能有效保证数据库完整性。&lt;/p&gt;&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;&lt;p&gt;(ebay的读写比率是260:1,ebay的读写分离)&lt;/p&gt;&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;&lt;p&gt;(微软数据库分发)&amp;nbsp;&lt;/p&gt;&lt;p&gt;2，实现方法：在MS Sql server中可以使用发布定义的方式实现数据库复制，实现读写分离，复制是将一组数据从一个数据源拷贝到多个数据源的技术，是将一份数据发布到多个存储站点上的有效方式。使用复制技术，用户可以将一份数据发布到多台服务器上。复制技术可以确保分布在不同地点的数据自动同步更新，从而保证数据的一致性。SQL SERVER复制技术类型有三种，分别是：快照复制、事务复制、合并复制。SQL SERVER 主要采用出版物、订阅的方式来处理复制。源数据所在的服务器是出版服务器，负责发表数据。出版服务器把要发表的数据的所有改变情况的拷贝复制到分发服务器，分发服务器包含有一个分发数据库，可接收数据的所有改变，并保存这些改变，再把这些改变分发给订阅服务器。&lt;/p&gt;&lt;p&gt;3，优缺点&lt;br /&gt;(1)数据的实时性差:数据不是实时同步到自读服务器上的，当数据写入主服务器后，要在下次同步后才能查询到。&lt;/p&gt;&lt;p&gt;(2)数据量大时同步效率差：单表数据量过大时插入和更新因索引,磁盘IO等问题，性能会变的很差。&lt;/p&gt;&lt;p&gt;(3)同时连接多个（至少两个）数据库：至少要连接到两个数据数据库，实际的读写操作是在程序代码中完成的，容易引起混乱&lt;/p&gt;&lt;p&gt;(4)读具有高性能高可靠性和可伸缩:只读服务器，因为没有写操作，会大大减轻磁盘IO等性能问题，大大提高效率；只读服务器可以采用负载均衡，主数据库发布到多个只读服务器上实现读操作的可伸缩性。&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;三、数据库/数据表 &amp;nbsp;拆分(分布式)&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;通过某种特定的条件，将存放在同一个数据库中的数据分散存放到多个数据库上，实现分布存储，通过路由规则路由访问特定的数据库，这样一来每次访问面对的就不是单台服务器了，而是N台服务器，这样就可以降低单台机器的负载压力。提示：sqlserver 2005版本之后，可以友好的支持&amp;#8220;表分区&amp;#8221;。&lt;/p&gt;&lt;p&gt;垂直(纵向)拆分：是指按功能模块拆分，比如分为订单库、商品库、用户库...这种方式多个数据库之间的表结构不同。&lt;/p&gt;&lt;p&gt;水平(横向)拆分：将同一个表的数据进行分块保存到不同的数据库中，这些数据库中的表结构完全相同。&lt;/p&gt;&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;&lt;p&gt;（纵向拆分）&lt;/p&gt;&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;&lt;p&gt;&amp;nbsp;（横向拆分）&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;1，实现原理：使用垂直拆分，主要要看应用类型是否合适这种拆分方式，如系统可以分为，订单系统，商品管理系统，用户管理系统业务系统比较明的，垂直拆分能很好的起到分散数据库压力的作用。业务模块不明晰，耦合（表关联）度比较高的系统不适合使用这种拆分方式。但是垂直拆分方式并不能彻底解决所有压力问题，例如 有一个5000w的订单表，操作起来订单库的压力仍然很大，如我们需要在这个表中增加（insert）一条新的数据，insert完毕后，数据库会针对这张表重新建立索引，5000w行数据建立索引的系统开销还是不容忽视的，反过来，假如我们将这个表分成100个table呢，从table_001一直到table_100，5000w行数据平均下来，每个子表里边就只有50万行数据，这时候我们向一张只有50w行数据的table中insert数据后建立索引的时间就会呈数量级的下降，极大了提高了DB的运行时效率，提高了DB的并发量，这种拆分就是横向拆分&lt;/p&gt;&lt;p&gt;2，实现方法：垂直拆分，拆分方式实现起来比较简单，根据表名访问不同的数据库就可以了。横向拆分的规则很多，这里总结前人的几点，&lt;/p&gt;&lt;p&gt;(1)顺序拆分：如可以按订单的日前按年份才分，2003年的放在db1中，2004年的db2,以此类推。当然也可以按主键标准拆分。&lt;/p&gt;&lt;p&gt;优点：可部分迁移&lt;/p&gt;&lt;p&gt;缺点：数据分布不均，可能2003年的订单有100W，2008年的有500W。&lt;/p&gt;&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;&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;script type="text/javascript"&gt;if ($ != jQuery) {$ = jQuery.noConflict();}var isLogined = false;var cb_blogId = 88165;var cb_entryId = 2317748;var cb_blogApp = "dinglang";var cb_blogUserGuid = "bad608a8-eaca-de11-ba8f-001cf0cd104b";var cb_entryCreatedDate = '2012/1/10 9:40:00';&lt;/script&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年开始关注国内的房地产，每次和国内亲友聊天，都会提及房子，这几乎成了永恒的话题。 &lt;p&gt;如果用国际最权威的租售比(房价除以月租金，超过160倍则是泡沫的开始)来看，即使在2005年，国内一线大城市，就已经有泡沫了。但也就是从2005年开始，中国房价向上飙飞，一飞冲天。虽然政府不断出台调控措施来抑制房价，可房价是越调越涨。&lt;/p&gt;&lt;p&gt;然而在美国，即使在次贷危机爆发之前房价处于最高位时，租售比也只刚超过200而已，比之上海北京的500到800倍，以及高档公寓和别墅的上千倍来说，简直不值一提。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;欧美的房价为何涨不上天？&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;首先，欧美征收高额房产税。&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;在欧美，只要是私人的房子，即便房屋的主人已经去世，也必须要缴纳房产税，每年缴纳的税率从1%到3%不等，平均为2%，且房产税的征收，是根据你所拥有房子的实际价值来征收的。也就是说，房价越涨，房产税越高。如果税率为3%的话，哪怕房价不涨，每33年(即使不算贷款利息)，你的实际付出，便已超过了房价的一倍。&lt;/p&gt;&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;&lt;p&gt;其次，在欧美，房子和汽车一样属于消费品，并不是投资品，房价是进入CPI加以计算的。所以，一旦房价高涨，CPI超过5%的话，便属于恶性通胀，政府就非得出重手。比如里根时代，美国一度恶性通胀，里根政府便连续加息，一直加到18%，硬生生地控制住了&lt;span id="Info.7913"&gt;&lt;a class="infokey " 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;&lt;p&gt;第三，欧美政府在征收了高房产税之后，大量提供各种类型租金稳定的房子，使大多数民众并不需要非得购房而居。&lt;/p&gt;&lt;p&gt;事实上，在欧洲的多数国家，多少年来租房者和拥有住房的比例一半一半，大城市的租房比例则更高，像德国，更有高达57%以上的人一辈子租房而住。即使在地广人稀的美国，在次贷危机爆发之前，拥有房子的屋主数量破了历史最高纪录，可依然有超过33%的人租房而住。&lt;/p&gt;&lt;p&gt;在欧美，租房而居，还是买房自住，对大众来说只不过是不同的生活方式选择而已。无论在理财上，以及其他方面，并无优劣之分。&lt;/p&gt;&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">北京市参保人查询个人信息:点击进入&gt;&gt;&gt; 说明：个人用户第一次访问网上申报系统，需要进行用户认证，设置用户的初始密码，请在下面的表单中，填入您的真实信息，以便核对身份！密码重置&gt;&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 class="gaikuang"&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； &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="text">最近最一个电子商务网站，发现了好多问题，不过还好都顺利解决了，关于session的问题记录如下，以便日后查阅，同时也希望能给网友们带来帮助，本文内容并非完全出自本人，是本人对网络上的一些处理方法的整理。 检查是否超时,默认是20分钟,设置的方法是Session.TimeOut=30;或者您可以设置到更高，这个数值的单位是分钟，大家视情况而定。检查代码有无Session.Abandon()之类的。一...</content></entry></feed>
