﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>博客园-tangdh</title><link>http://www.cnblogs.com/tangdh/</link><description>PB and .net 乐园</description><language>zh-cn</language><lastBuildDate>Sun, 07 Sep 2008 09:35:26 GMT</lastBuildDate><pubDate>Sun, 07 Sep 2008 09:35:26 GMT</pubDate><ttl>60</ttl><item><title>sql 收藏</title><link>http://www.cnblogs.com/tangdh/archive/2008/07/25/1251176.html</link><dc:creator>tangdh</dc:creator><author>tangdh</author><pubDate>Fri, 25 Jul 2008 04:03:00 GMT</pubDate><guid>http://www.cnblogs.com/tangdh/archive/2008/07/25/1251176.html</guid><wfw:comment>http://www.cnblogs.com/tangdh/comments/1251176.html</wfw:comment><comments>http://www.cnblogs.com/tangdh/archive/2008/07/25/1251176.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/tangdh/comments/commentRss/1251176.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tangdh/services/trackbacks/1251176.html</trackback:ping><description><![CDATA[/*计算个人所得税函数20050930&nbsp;&nbsp;&nbsp; */<br />
/*输入参数为：第一个参数为字符一位：'1' 正常全额计税　'0'不计税&nbsp;&nbsp; 第二个参数为金额*/<br />
/* 返回应交税额*/<br />
/*作者：*** 调用方法:dbo.jstax('1',900) */<br />
<br />
CREATE FUNCTION jstax (@jsfs int ,@je decimal(10,2)) <br />
RETURNS decimal(10,2) AS <br />
BEGIN <br />
<br />
DECLARE @jshj decimal(10,2)<br />
if @jsfs=1&nbsp;&nbsp; /*&nbsp; 工资薪金计税&nbsp;&nbsp;&nbsp; */<br />
set @jshj=<br />
CASE <br />
&nbsp;&nbsp;&nbsp; WHEN @je&lt;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN&nbsp; 0<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;0 and @je&lt;500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN&nbsp; @je*0.05<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=500 and @je&lt;2000&nbsp;&nbsp;&nbsp;&nbsp; THEN&nbsp; @je*0.10-25<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=2000 and @je&lt;5000&nbsp;&nbsp;&nbsp; THEN&nbsp; @je*0.15-125<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=5000 and @je&lt;20000&nbsp;&nbsp; THEN&nbsp; @je*0.20-375<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=20000 and @je&lt;40000&nbsp; THEN&nbsp; @je*0.25-1375<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=40000 and @je&lt;60000&nbsp; THEN&nbsp; @je*0.3-3375<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=60000 and @je&lt;80000&nbsp; THEN&nbsp; @je*0.35-6375<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=80000 and @je&lt;100000 THEN&nbsp; @je*0.4-10375<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=100000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN&nbsp; @je*0.45-15375<br />
END<br />
if @jsfs=2&nbsp;&nbsp; /* 不扣税&nbsp; */<br />
&nbsp;&nbsp;&nbsp; set @jshj=0<br />
if @jsfs=3&nbsp;&nbsp; /*&nbsp; 年终奖计税&nbsp; */<br />
&nbsp;&nbsp;&nbsp; set @jshj=<br />
CASE <br />
&nbsp;&nbsp;&nbsp; WHEN @je&lt;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN&nbsp; 0<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;0 and @je&lt;500&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN&nbsp; @je*0.05<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=500 and @je&lt;2000&nbsp;&nbsp;&nbsp;&nbsp; THEN&nbsp; @je*0.10-25<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=2000 and @je&lt;5000&nbsp;&nbsp;&nbsp; THEN&nbsp; @je*0.15-125<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=5000 and @je&lt;20000&nbsp;&nbsp; THEN&nbsp; @je*0.20-375<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=20000 and @je&lt;40000&nbsp; THEN&nbsp; @je*0.25-1375<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=40000 and @je&lt;60000&nbsp; THEN&nbsp; @je*0.3-3375<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=60000 and @je&lt;80000&nbsp; THEN&nbsp; @je*0.35-6375<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=80000 and @je&lt;100000 THEN&nbsp; @je*0.4-10375<br />
&nbsp;&nbsp;&nbsp; WHEN @je&gt;=100000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; THEN&nbsp; @je*0.45-15375<br />
END<br />
RETURN @jshj<br />
END<br />
\\\\<br />
/*当月已扣除税合计*/<br />
CREATE FUNCTION jsget_kshj (@ygbh int,@jdate char(15)) <br />
RETURNS decimal(10,2) AS <br />
BEGIN <br />
<br />
DECLARE @returnstring&nbsp; decimal(10,2)<br />
DECLARE @CountItems int<br />
<br />
SELECT<br />
&nbsp;&nbsp;&nbsp; @CountItems = Count(GoodsID)<br />
FROM<br />
&nbsp;&nbsp;&nbsp; ordercontent<br />
WHERE<br />
&nbsp;&nbsp;&nbsp; GoodsID = @ygbh<br />
&nbsp; AND<br />
&nbsp;&nbsp;&nbsp; jsdate = @jdate<br />
and cwsh=1<br />
<br />
<br />
if @CountItems&gt;0<br />
set @returnstring=(select sum(kosui)+sum(czks) from ordercontent <br />
where&nbsp;&nbsp; GoodsID = @ygbh AND jsdate = @jdate and jsfs=1 and cwsh=1)<br />
&nbsp; <br />
else<br />
set @returnstring=0<br />
<br />
<br />
RETURN @returnstring<br />
END<br />
<br />
\\\\\\<br />
/*函数20051101&nbsp;&nbsp;&nbsp; */<br />
/*输入参数为：当前日期*/&nbsp; <br />
/* 返回200511*/<br />
/*作者：*** 调用方法:dbo.jsgetdate(getdate()) */<br />
<br />
CREATE FUNCTION jsgetdate (@js_date datetime) <br />
RETURNS nvarchar(6) AS <br />
BEGIN <br />
<br />
DECLARE @returnstring&nbsp; nvarchar(6)<br />
<br />
set @returnstring=convert(nvarchar(4),datepart(year,@js_date))+convert(nvarchar(2),datepart(month,@js_date))<br />
<br />
RETURN @returnstring<br />
END<br />
<br />
\\\\<br />
/*根据指定的职工编号和月份<br />
取得当月工资性收入的合计<br />
*/<br />
<br />
CREATE FUNCTION jsgetjehj (@ygbh int,@jdate char(15)) <br />
RETURNS decimal(10,2) AS <br />
BEGIN <br />
<br />
DECLARE @returnstring&nbsp; decimal(10,2)<br />
DECLARE @CountItems int<br />
<br />
SELECT<br />
&nbsp;&nbsp;&nbsp; @CountItems = Count(GoodsID)<br />
FROM<br />
&nbsp;&nbsp;&nbsp; ordercontent<br />
WHERE<br />
&nbsp;&nbsp;&nbsp; GoodsID = @ygbh<br />
&nbsp; AND<br />
&nbsp;&nbsp;&nbsp; jsdate = @jdate<br />
&nbsp; and&nbsp; cwsh=1<br />
<br />
<br />
if @CountItems&gt;0<br />
set @returnstring=(select sum(GoodsQuantity) from ordercontent <br />
where&nbsp;&nbsp; GoodsID = @ygbh AND jsdate = @jdate and jsfs=1 and cwsh=1)<br />
&nbsp; <br />
else<br />
set @returnstring=0<br />
<br />
<br />
RETURN @returnstring<br />
END<br />
<br />
\\\\\\<br />
/*根据指定的职工编号和12月份<br />
工资性收入的合计 作为计算年终奖的依据<br />
<br />
*/<br />
<br />
CREATE FUNCTION jsget12jehj (@ygbh int,@jdate char(15)) <br />
RETURNS decimal(10,2) AS <br />
BEGIN <br />
<br />
DECLARE @returnstring&nbsp; decimal(10,2)<br />
DECLARE @CountItems int<br />
<br />
SELECT<br />
&nbsp;&nbsp;&nbsp; @CountItems = Count(GoodsID)<br />
FROM<br />
&nbsp;&nbsp;&nbsp; ordercontent<br />
WHERE<br />
&nbsp;&nbsp;&nbsp; GoodsID = @ygbh<br />
&nbsp; AND<br />
&nbsp;&nbsp;&nbsp; jsdate = @jdate<br />
<br />
<br />
if @CountItems&gt;0<br />
set @returnstring=(select sum(GoodsQuantity) from ordercontent <br />
where&nbsp;&nbsp; GoodsID = @ygbh AND jsdate = @jdate and jsfs=1)<br />
&nbsp; <br />
else<br />
set @returnstring=0<br />
RETURN @returnstring<br />
END<br />
<br />
\\\\\<br />
/*<br />
用于在财务个人项目中查询收入明细情况<br />
输入参数为员工编号<br />
*/<br />
CREATE Procedure srmx<br />
(<br />
&nbsp;&nbsp;&nbsp; @IDCardNumber&nbsp; int<br />
)<br />
As<br />
SELECT&nbsp; <br />
&nbsp;&nbsp;&nbsp; orderid,<br />
&nbsp;&nbsp;&nbsp; GZBASE.GZBASE_YGBH, <br />
&nbsp;&nbsp;&nbsp; GZBASE.GZBASE_YGXM,<br />
&nbsp;&nbsp;&nbsp; GoodsQuantity,<br />
&nbsp;&nbsp;&nbsp; kosui,<br />
&nbsp;&nbsp;&nbsp; sifa,<br />
&nbsp;&nbsp;&nbsp; czks,<br />
&nbsp;&nbsp; jsfs,<br />
&nbsp; jsdate<br />
&nbsp;&nbsp;&nbsp; <br />
FROM<br />
&nbsp;&nbsp;&nbsp; OrderContent<br />
&nbsp; INNER JOIN GZBASE ON OrderContent.GoodsID = GZBASE.GZBASE_YGBH<br />
&nbsp; <br />
where OrderContent.GoodsID=@IDCardNumber and cwsh=1<br />
<br />
order by&nbsp; jsdate,orderid<br />
GO<br />
<br />
\\\\<br />
/*<br />
此存储过程用于将工资数据从cur_gzbase读入ordercontent表<br />
不需要参数<br />
*/<br />
<br />
CREATE Procedure curgz_read<br />
<br />
AS<br />
DECLARE @OrderID int<br />
DECLARE @tmp&nbsp; Decimal(10,2)<br />
DECLARE @yhhj&nbsp; Decimal(10,2)<br />
<br />
BEGIN TRAN OrderAdd1<br />
<br />
<br />
INSERT INTO Orders<br />
(<br />
&nbsp;&nbsp;&nbsp; UserID, <br />
&nbsp;&nbsp;&nbsp; OrderDate,<br />
&nbsp;&nbsp;&nbsp; zy<br />
&nbsp;&nbsp; <br />
)<br />
VALUES<br />
(&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; 20, <br />
&nbsp;&nbsp;&nbsp; getdate() ,<br />
&nbsp;&nbsp; '工资'<br />
)<br />
<br />
<br />
<br />
SELECT<br />
&nbsp;&nbsp;&nbsp; @OrderID = @@Identity&nbsp;&nbsp;&nbsp; <br />
--select&nbsp; @yhhj=[GZBASE_XM040]+[GZBASE_XM032]-[GZBASE_XM021]-[GZBASE_XM045]&nbsp; from cur_gzbase<br />
--select&nbsp;&nbsp; @tmp= dbo.jstax(1,dbo.jsgetjehj(GZBASE_YGBH,dbo.jsgetdate(getdate()))+@yhhj-1600)-dbo.jsget_kshj(GZBASE_YGBH,dbo.jsgetdate(getdate()))<br />
<br />
from cur_gzbase<br />
<br />
<br />
<br />
<br />
INSERT INTO OrderContent<br />
(<br />
&nbsp;&nbsp;&nbsp;&nbsp; [OrderID], <br />
&nbsp;&nbsp;&nbsp; [GoodsID], <br />
&nbsp;&nbsp;&nbsp; [GoodsQuantity], <br />
&nbsp;&nbsp;&nbsp; [GZBASE_YGXM],<br />
&nbsp;&nbsp;&nbsp; [kosui],<br />
&nbsp;&nbsp;&nbsp; [sifa],<br />
&nbsp;&nbsp;&nbsp; [jsfs],<br />
&nbsp;&nbsp; [czks],<br />
&nbsp;&nbsp;&nbsp; [gzyn]&nbsp; <br />
&nbsp; <br />
&nbsp;&nbsp;&nbsp; <br />
)<br />
<br />
<br />
SELECT <br />
&nbsp;&nbsp; @OrderID, <br />
&nbsp;&nbsp;&nbsp; [GZBASE_YGBH], <br />
&nbsp;&nbsp;&nbsp; [GZBASE_XM040]+[GZBASE_XM032]-[GZBASE_XM021]-[GZBASE_XM045], <br />
&nbsp;&nbsp;&nbsp; "",<br />
case <br />
&nbsp;&nbsp; when substring(GZBASE_BMBH,1,2)='02'&nbsp; THEN 0<br />
&nbsp;&nbsp; ELSE <br />
&nbsp;&nbsp;&nbsp; dbo.jstax(1,dbo.jsgetjehj(GZBASE_YGBH,dbo.jsgetdate(getdate()))+([GZBASE_XM040]+[GZBASE_XM032]-[GZBASE_XM021]-[GZBASE_XM045])-1652)-dbo.jsget_kshj(GZBASE_YGBH,dbo.jsgetdate(getdate()))-[GZBASE_XM022]<br />
END,<br />
<br />
&nbsp;&nbsp; 0,<br />
&nbsp;&nbsp;&nbsp; 1,<br />
&nbsp;&nbsp;&nbsp;&nbsp; [GZBASE_XM022],<br />
&nbsp;&nbsp;&nbsp; 1<br />
&nbsp;&nbsp; <br />
<br />
FROM <br />
&nbsp;&nbsp; cur_gzbase<br />
<br />
<br />
COMMIT TRAN OrderAdd1<br />
GO<br />
<br />
\\\\\\<br />
CREATE Procedure js_orderdetal<br />
(<br />
&nbsp;&nbsp;&nbsp; @orderid int<br />
)<br />
As<br />
SELECT&nbsp; <br />
&nbsp;&nbsp;&nbsp; GZBASE.GZBASE_YGBH, <br />
&nbsp;&nbsp;&nbsp; GZBASE.GZBASE_YGXM,<br />
&nbsp;&nbsp;&nbsp; GoodsQuantity,<br />
&nbsp;&nbsp;&nbsp; kosui,<br />
&nbsp;&nbsp;&nbsp; sifa<br />
&nbsp;&nbsp;&nbsp; <br />
FROM<br />
&nbsp;&nbsp;&nbsp; OrderContent<br />
&nbsp; INNER JOIN GZBASE ON OrderContent.GoodsID = GZBASE.GZBASE_YGBH<br />
&nbsp; <br />
where orderid=@orderid<br />
GO<br />
\\\\<br />
CREATE Procedure js_orderdetal<br />
(<br />
&nbsp;&nbsp;&nbsp; @orderid int<br />
)<br />
As<br />
SELECT&nbsp; <br />
&nbsp;&nbsp;&nbsp; GZBASE.GZBASE_YGBH, <br />
&nbsp;&nbsp;&nbsp; GZBASE.GZBASE_YGXM,<br />
&nbsp;&nbsp;&nbsp; GoodsQuantity,<br />
&nbsp;&nbsp;&nbsp; kosui,<br />
&nbsp;&nbsp;&nbsp; sifa<br />
&nbsp;&nbsp;&nbsp; <br />
FROM<br />
&nbsp;&nbsp;&nbsp; OrderContent<br />
&nbsp; INNER JOIN GZBASE ON OrderContent.GoodsID = GZBASE.GZBASE_YGBH<br />
&nbsp; <br />
where orderid=@orderid<br />
GO<br />
<br />
<br />
\\\\<br />
<br />
CREATE Procedure Updateordercontent_hz<br />
(<br />
&nbsp;&nbsp;&nbsp; @GoodsID int,<br />
&nbsp;&nbsp;&nbsp; @GoodsQuantity Decimal(10,2)<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp; <br />
)<br />
As<br />
<br />
DECLARE @CountItems int<br />
<br />
SELECT<br />
&nbsp;&nbsp;&nbsp; @CountItems = Count(GoodsID)<br />
FROM<br />
&nbsp;&nbsp;&nbsp; ordercontent_hz<br />
WHERE<br />
&nbsp;&nbsp;&nbsp; GoodsID = @GoodsID<br />
&nbsp; AND<br />
&nbsp;&nbsp;&nbsp; jsdate = dbo.jsgetdate(getdate())<br />
<br />
IF @CountItems &gt; 0&nbsp; /* There are items - update the current quantity */<br />
<br />
&nbsp;&nbsp;&nbsp; UPDATE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ordercontent_hz<br />
&nbsp;&nbsp;&nbsp; SET<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GoodsQuantity = (@GoodsQuantity + ordercontent_hz.GoodsQuantity)<br />
&nbsp;&nbsp;&nbsp; WHERE<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GoodsID = @GoodsID<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AND<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; jsdate = dbo.jsgetdate(getdate())<br />
<br />
ELSE&nbsp; /* New entry for this Cart.&nbsp; Add a new record */<br />
<br />
&nbsp;&nbsp;&nbsp; INSERT INTO ordercontent_hz<br />
&nbsp;&nbsp;&nbsp; (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GoodsQuantity,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GoodsID&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; )<br />
&nbsp;&nbsp;&nbsp; VALUES<br />
&nbsp;&nbsp;&nbsp; (<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @GoodsQuantity,<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; @GoodsID<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; )<br />
GO<br />
<br />
<br />
<img src ="http://www.cnblogs.com/tangdh/aggbug/1251176.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42132/" target="_blank">[新闻]Google 10周岁生日</a>]]></description></item><item><title>浪潮财务从一套帐备份到另一套帐</title><link>http://www.cnblogs.com/tangdh/archive/2008/06/24/1229059.html</link><dc:creator>tangdh</dc:creator><author>tangdh</author><pubDate>Tue, 24 Jun 2008 08:37:00 GMT</pubDate><guid>http://www.cnblogs.com/tangdh/archive/2008/06/24/1229059.html</guid><wfw:comment>http://www.cnblogs.com/tangdh/comments/1229059.html</wfw:comment><comments>http://www.cnblogs.com/tangdh/archive/2008/06/24/1229059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/tangdh/comments/commentRss/1229059.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tangdh/services/trackbacks/1229059.html</trackback:ping><description><![CDATA[<p><font face="Verdana">//财务从一套帐到另一套帐<br />
use master <br />
go<br />
select * from syslogins<br />
use cwbase14<br />
</font><font face="Verdana">go<br />
select * from sysusers<br />
//<br />
use master<br />
go<br />
sp_configure "allow updates",1<br />
go<br />
reconfigure with override<br />
go<br />
use cwbase14<br />
go<br />
update sysusers set suid = 129,name = 'lc0149999'&nbsp; where suid = 57<br />
go<br />
sp_configuer "allow updates",0<br />
go<br />
reconfigure with override<br />
go</font></p>
<p><font face="Verdana"><br />
//设置数据库状态<br />
sp_dboption&nbsp; cwbase1 , "select into/bulkcopy", true<br />
go</font></p>
<img src ="http://www.cnblogs.com/tangdh/aggbug/1229059.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42131/" target="_blank">[新闻]祝Google 10周岁生日快乐</a>]]></description></item><item><title>酒桌上的潜规则，男人必学，女人必知</title><link>http://www.cnblogs.com/tangdh/archive/2008/06/22/1227712.html</link><dc:creator>tangdh</dc:creator><author>tangdh</author><pubDate>Sun, 22 Jun 2008 10:18:00 GMT</pubDate><guid>http://www.cnblogs.com/tangdh/archive/2008/06/22/1227712.html</guid><wfw:comment>http://www.cnblogs.com/tangdh/comments/1227712.html</wfw:comment><comments>http://www.cnblogs.com/tangdh/archive/2008/06/22/1227712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/tangdh/comments/commentRss/1227712.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tangdh/services/trackbacks/1227712.html</trackback:ping><description><![CDATA[&nbsp; 酒桌上的规矩: <br />
　　(一)如果自己真不能喝，丫就别开第一口，端着饭碗夹了菜一边吃着去 <br />
　　(二)如果确信自己要喝，就别装墨迹，接下来就是规矩了 <br />
　　 <br />
　　规矩一：酒桌上虽然&#8220;感情深，一口闷；感情浅，舔一舔&#8221;但是喝酒的时候决不能把这句话挂在嘴上。&nbsp; <br />
　　规矩二：韬光养晦，厚积薄发，切不可一上酒桌就充大。&nbsp; <br />
　　规矩三：领导相互喝完才轮到自己敬。&nbsp; <br />
　　规矩四：可以多人敬一人，决不可一人敬多人，除非你丫是领导。&nbsp; <br />
　　规矩五：自己敬别人，如果不碰杯，自己喝多少可视乎情况而定，比如对方酒量，对方喝酒态度，切不可比对方喝得少，要知道是自己敬人。&nbsp; <br />
　　规矩六：自己敬别人，如果碰杯，一句，我喝完，你随意，方显大肚。&nbsp; <br />
　　规矩七：自己职位卑微，记得多给领导添酒，不要瞎给领导代酒，就是要代，也要在领导确实想找人代，还要装作自己是因为想喝酒而不是为了给领导代酒而喝酒。比如领导甲不胜酒力，可以通过旁敲侧击把准备敬领导甲的人拦下。&nbsp; <br />
　　规矩八：端起酒杯（啤酒杯），右手扼杯，左手垫杯底，记着自己的杯子永远低于别人。自己如果是领导，知趣点，不要放太低，不然怎么叫下面的做人？&nbsp; <br />
　　规矩九：如果没有特殊人物在场，碰酒最好按时针顺序，不要厚此薄彼。&nbsp; <br />
　　规矩十：碰杯，敬酒，要有说词，不然，我tmd干吗要喝你的酒？&nbsp; <br />
　　规矩十一：桌面上不谈生意，喝好了，生意也就差不多了，大家心里面了了然，不然人家也不会敞开了跟你喝酒。&nbsp; <br />
　　规矩十二：不要装歪，说错话，办错事，不要申辩，自觉罚酒才是硬道理。&nbsp; <br />
　　规矩十三：假如，纯粹是假如，遇到酒不够的情况，酒瓶放在桌子中间，让人自己添，不要傻不垃圾的去一个一个倒酒，不然后面的人没酒怎么办？&nbsp; <br />
　　规矩十四：最后一定还有一个闷杯酒，所以，不要让自己的酒杯空着。跑不了的～&nbsp; <br />
　　规矩十五：注意酒后不要失言，不要说大话，不要失态，不要吐沫横飞，筷子乱甩，不要手指乱指，喝汤噗噗响，不要放屁打嗝，憋不住去厕所去，没人拦你。&nbsp; <br />
　　规矩十六：不要把&#8220;我不会喝酒&#8221;挂在嘴上（如果你喝的话），免得别人骂你虚伪，不管你信不信，人能不能喝酒还真能看出来。&nbsp; <br />
　　规矩十七：领导跟你喝酒，是给你face，不管领导怎么要你喝多少，自己先干为敬，记着啊，双手，杯子要低。&nbsp; <br />
　　规矩十八：花生米对喝酒人来说，是个好东西。保持清醒的头脑，酒后嘘寒问暖是少不了的，一杯酸奶，一杯热水，一条热毛巾都显得你关怀备至。 <br />
　　 <br />
　　如果你不能喝　　 <br />
　　1、不要主动出击，实行以守为攻战略；&nbsp; <br />
　　2、桌前放两个大杯，一杯放白酒，一杯放矿泉水，拿小酒盅干杯，勤喝水，到酒桌上主客基本都喝8分醉时，可以以水代酒，主动出击；&nbsp; <br />
　　3、干杯后，不要马上咽下去，找机会用餐巾抹嘴，把酒吐餐巾里；&nbsp; <br />
　　4、上座后先吃一些肥肉类、淀粉类食品垫底，喝酒不容易醉；&nbsp; <br />
　　5、掌握节奏，不要一下子喝得太猛；&nbsp; <br />
　　6、不要几种酒混着喝，特别容易醉；&nbsp; <br />
　　7、领导夹菜时，千万不要转酒桌中间的圆盘，领导夹菜你转盘是酒桌上大忌；&nbsp; <br />
　　8、喝到六分醉时，把你面前的醋碟中的醋喝下，再让服务员添上； <br />
　　9、每次干杯时，倒满，然后在喝前假装没有拿稳酒盅，尽量洒出去一些，这样每次可以少喝进去不少； <br />
　　10、喝酒前面前放好半杯茶，喝了酒不要咽,赶紧拿起茶杯，喝水的功夫把酒吐进酒杯里，吐满了换水就行了，管用的!　　 <br />
<br />
　　酒宴上的礼仪　　&nbsp; <br />
　　 <br />
　　1、众欢同乐，切忌私语&nbsp; <br />
　　&nbsp;大多数酒宴宾客都较多，所以应尽量多谈论一些大部分人能够参与的话题，得到多数人的认同。因为个人的兴趣爱好、知识面不同，所以话题尽量不要太偏，避免唯我独尊，天南海北，神侃无边，出现跑题现象，而忽略了众人。特别是尽量不要与人贴耳小声私语，给别人一种神秘感，往往会产生&#8220;就你俩好&#8221;的嫉妒心理，影响喝酒的效果。&nbsp; <br />
　　2、瞄准宾主，把握大局&nbsp; <br />
　　&nbsp;大多数洒宴都有一个主题，也就是喝酒的目的。赴宴时首先应环视一下各位的神态表情，分清主次，不要单纯地为了喝酒而喝酒，而失去交友的好机会，更不要让某些哗众取宠的酒徒搅乱东道主的意思。&nbsp; <br />
　　3、语言得当，诙谐幽默&nbsp; <br />
　　&nbsp;洒桌上可以显示出一个人的才华、常识、修养和交际风度，有时一句诙谐幽默的语言，会给客人留下很深的印象，使人无形中对你产生好感。所以，应该知道什么时候该说什么话，语言得当，诙谐幽默很关键。&nbsp; <br />
　　4、劝酒适度，切莫强求&nbsp; <br />
　　&nbsp;在酒桌上往往会遇到劝酒的现象，有的人总喜欢把酒场当战场，想方设法劝别人多喝几杯，认为不喝到量就是不实在。&nbsp; <br />
　　&nbsp;&#8220;以酒论英雄&#8221;，对酒量大的人还可以，酒量小的就犯难了，有时过分地劝酒，会将原有的朋友感情完全破坏。&nbsp; <br />
　　5、敬酒有序，主次分明&nbsp; <br />
　　&nbsp;敬酒也是一门学问。一般情况下敬酒应以年龄大小、职位高低、宾主身份为序，敬酒前一定要充分考虑好敬酒的顺序，分明主次。好使与不熟悉的人在一起喝酒，也要先打听一下身份或是留意别人如何称呼，这一点心中要有数，避免出现尴尬或伤感情的局面。&nbsp; <br />
　　敬酒时一定要把握好敬酒的顺序。有求于某位客人在席上时，对他自然要倍加恭敬，但是要注意，如果在场有更高身份或年长的人，则不应只对能帮你忙的人毕恭毕敬，也要先给尊者长者敬酒，不然会使大家都很难为情。&nbsp; <br />
　　6、察言观色，了解人心&nbsp; <br />
　　&nbsp;要想在酒桌上得到大家的赞赏，就必须学会察言观色。因为与人交际，就要了解人心，左右逢源，才能演好酒桌上的角色。&nbsp; <br />
　　7、锋芒渐射，稳坐泰山&nbsp; <br />
　　&nbsp;酒席宴上要看清场合，正确估价自己的实力，不要太冲动，尽量保留一些酒力和说话的分寸，既不让别人小看自己又不要过分地表露自身，选择适当的机会，逐渐放射自己的锋芒，才能稳坐泰山，不致给别人产生"就这点能力"的想法，使大家不敢低估你的实力。 <br />
　　 <br />
　　注意细节　　&nbsp; <br />
　　 <br />
　　1——座次&nbsp;　　 <br />
　　&nbsp;总的来讲，座次是&#8220;尚左尊东&#8221;、&#8220;面朝大门为尊&#8221;。若是圆桌，则正对大门的为主客，主客左右手边的位置，则以离主客的距离来看，越靠近主客位置越尊，相同距离则左侧尊于右侧。若为八仙桌，如果有正对大门的座位，则正对大门一侧的右位为主客。如果不正对大门，则面东的一侧右席为首席。 <br />
　　&nbsp;如果为大宴，桌与桌间的排列讲究首席居前居中，左边依次2、4、6席,右边为3、5、7席，根据主客身份、地位，亲疏分坐。&nbsp; <br />
　　&nbsp;如果你是主人，你应该提前到达，然后在靠门位置等待，并为来宾引座。如果你是被邀请者，那么就应该听从东道主安排入座。&nbsp; <br />
　　&nbsp;一般来说，如果你的老板出席的话，你应该将老板引至主座，请客户最高级别的坐在主座左侧位置。除非这次招待对象的领导级别非常高。　　 <br />
　　2——点菜&nbsp; <br />
　　&nbsp;如果时间允许，你应该等大多数客人到齐之后，将菜单供客人传阅，并请他们来点菜。当然，作为公务宴请，你会担心预算的问题，因此，要控制预算，你最重要的是要多做饭前功课，选择合适档次的请客地点是比较重要的，这样客人也能大大领会你的预算。况且一般来说，如果是你来买单，客人也不太好意思点菜，都会让你来作主。如果你的老板也在酒席上，千万不要因为尊重他，或是认为他应酬经验丰富，酒席吃得多，而让他／她来点菜，除非是他／她主动要求。否则，他会觉得不够体面。&nbsp; <br />
　　&nbsp;如果你是赴宴者，你应该知道，你不该在点菜时太过主动，而是要让主人来点菜。如果对方盛情要求，你可以点一个不太贵、又不是大家忌口的菜。记得征询一下桌上人的意见，特别是问一下&#8220;有没有哪些是不吃的？&#8221;或是&#8220;比较喜欢吃什么？&#8221;让大家感觉被照顾到了。点菜后，可以请示&#8220;我点了菜，不知道是否合几位的口味&#8221;，&#8220;要不要再来点其它的什么&#8221;等等。&nbsp; <br />
　　点菜时，一定要心中有数。点菜时，可根据以下三个规则 <br />
　　一看人员组成。一般来说，人均一菜是比较通用的规则。如果是男士较多的餐会可适当加量。 <br />
　　二看菜肴组合。一般来说，一桌菜最好是有荤有素，有冷有热，尽量做到全面。如果桌上男士多，可多点些荤食，如果女士较多，则可多点几道清淡的蔬菜。 <br />
　　三看宴请的重要程度。若是普通的商务宴请，平均一道菜在50元到80元左右可以接受。如果这次宴请的对象是比较关键人物，那么则要点上几个够份量的菜，例如龙虾、刀鱼、鲥鱼，再要上规格一点，则是鲍鱼、翅粉等。&nbsp; <br />
　　还有一点需要注意的是，点菜时不应该问服务员菜肴的价格，或是讨价还价，这样会让你公司在客户面前显得有点小家子气，而且客户也会觉得不自在。&nbsp; <br />
　　 <br />
　　附：中餐点菜指导——三优四忌&nbsp; <br />
　　一顿标准的中式大餐，通常，先上冷盘，接下来是热炒，随后是主菜，然后上点心和汤，如果感觉吃得有点腻，可以点一些餐后甜品，最后是上果盘。在点菜中要顾及到各个程序的菜式。&nbsp; <br />
　　优先考虑的菜肴 <br />
　　一、有中餐特色的菜肴。宴请外宾的时候，这一条更要重视。像炸春卷、煮元宵、蒸饺子、狮子头、宫爆鸡丁等，并不是佳肴美味，但因为具有鲜明的中国特色，所以受到很多外国人的推崇。&nbsp; <br />
　　二、有本地特色的菜肴。比如西安的羊肉泡馍，湖南的毛家红烧肉，上海的红烧狮子头，北京的涮羊肉，在那里宴请外地客人时，上这些特色菜，恐怕要比千篇一律的生猛海鲜更受好评。&nbsp; <br />
　　三、本餐馆的特色菜。很多餐馆都有自己的特色菜。上一份本餐馆的特色菜，能说明主人的细心和对被请者的尊重。&nbsp; <br />
　　在安排菜单时，还必须考虑来宾的饮食禁忌，特别是要对主宾的饮食禁忌高度重视。这些饮食方面的禁忌主要有四条 <br />
　　1．宗教的饮食禁忌，一点也不能疏忽大意。例如，穆斯林通常不吃猪肉，并且不喝酒。国内的佛教徒少吃荤腥食品，它不仅指的是肉食，而且包括葱、蒜、韭菜、芥末等气味刺鼻的食物。一些信奉观音的佛教徒在饮食中尤其禁吃牛肉，这点要招待港澳台及海外华人同胞时尤要注意。&nbsp; <br />
　　2．出于健康的原因，对于某些食品，也有所禁忌。比如，心脏病、脑血管、脉硬化、高血压和中风后遗症的人，不适合吃狗肉，肝炎病人忌吃羊肉和甲鱼，胃肠炎、胃溃汤等消化系统疾病的人也不合适吃甲鱼，高血压、高胆固醇患者，要少喝鸡汤等。&nbsp; <br />
　　3．不同地区，人们的饮食偏好往往不同。对于这一点，在安排菜单时要兼顾。比如，湖南省份的人普遍喜欢吃辛辣食物，少吃甜食。英美国家的人通常不吃宠物、稀有动物、动物内脏、动物的头部和脚爪。另外，宴请外宾时，尽量少点生硬需啃食的菜肴，老外在用餐中不太会将咬到嘴中的食物再吐出来，这也需要顾及到。&nbsp; <br />
　　4．有些职业，出于某种原因，在餐饮方面往往也有各自不同的特殊禁忌。例如，国家公务员在执行公务时不准吃请，在公务宴请时不准大吃大喝，不准超过国家规定的标准用餐，不准喝烈性酒。再如，驾驶员工作期间不得喝酒。要是忽略了这一点，还有可能使对方犯错误。&nbsp; <br />
　　 <br />
　　3——吃菜&nbsp; <br />
　　&nbsp;中国人一般都很讲究吃，同时也很讲究吃相。随着职场礼仪越来越被重视，商务饭桌上的吃和吃相也更加讲究。以下以中餐为例，教你如何在餐桌上有礼有仪，得心应手。&nbsp; <br />
　　&nbsp;中餐宴席进餐伊始，服务员送上的第一道湿毛巾是擦手的，不要用它去擦脸。上龙虾、鸡、水果时，会送上一只小小水孟，其中飘着拧檬片或玫瑰花瓣，它不是饮料，而是洗手用的。洗手时，可两手轮流沾湿指头，轻轻涮洗，然后用小毛巾擦干。&nbsp; <br />
　　&nbsp;用餐时要注意文明礼貌。对外宾不要反复劝菜，可向对方介绍中国菜的特点，吃不吃由他。有人喜欢向他人劝菜，甚至为对方夹菜。外宾没这个习惯，你要是一再客气，没准人家会反感：&#8220;说过不吃了，你非逼我干什么?&#8221;依此类推，参加外宾举行的宴会，也不要指望主人会反复给你让菜。你要是等别人给自己布菜，那就只好俄肚子。&nbsp; <br />
　　&nbsp;客人入席后，不要立即动手取食。而应待主人打招呼，由主人举杯示意开始时，客人才能开始；客人不能抢在主人前面。夹菜要文明，应等菜肴转到自已面前时，再动筷子，不要抢在邻座前面，一次夹菜也不宜过多。要细嚼慢咽，这不仅有利于消化，也是餐桌上的礼仪要求。决不能大块往嘴里塞，狼吞虎咽，这样会给人留下贪婪的印象。不要挑食，不要只盯住自己喜欢的莱吃，或者急忙把喜欢的菜堆在自己的盘子里。用餐的动作要文雅，夹莱时不要碰到邻座，不要把盘里的菜拨到桌上，不要把汤泼翻。不要发出不必要的声音，如喝汤时&#8220;咕噜咕噜&#8221;，吃菜时嘴里&#8220;叭叭&#8221;作响，这都是粗俗的表现。不要一边吃东西，一边和人聊天。嘴里的骨头和鱼刺不要吐在桌子上，可用餐巾掩口，用筷子取出来放在碟子里。掉在桌子上的菜，不要再吃。进餐过程中不要玩弄碗筷，或用筷子直向别人。不要用手去嘴里乱抠。用牙签剔牙时，应用手或餐巾掩住嘴。不要让餐具发出任何声响。&nbsp; <br />
　　&nbsp;用餐结束后，可以用餐巾、餐巾纸或服务员送来的小毛巾擦擦嘴，但不宜擦头颈或胸脯；餐后不要不加控制地打饱嗝或嗳气；在主人还没示意结束时，客人不能先离席。&nbsp; <br />
<br />
4——喝酒&nbsp; <br />
　　&nbsp;俗话说，酒是越喝越厚，但在酒桌上也有很多学问讲究，以下总结了一些酒桌上的你不得不注意的小细节。&nbsp; <br />
　　细节一：领导相互喝完才轮到自己敬酒。敬酒一定要站起来，双手举杯。&nbsp; <br />
　　细节二：可以多人敬一人，决不可一人敬多人，除非你是领导。&nbsp; <br />
　　细节三：自己敬别人，如果不碰杯，自己喝多少可视乎情况而定，比如对方酒量，对方喝酒态度，切不可比对方喝得少，要知道是自己敬人。&nbsp; <br />
　　细节四：自己敬别人，如果碰杯，一句，我喝完，你随意，方显大度。&nbsp; <br />
　　细节五：记得多给领导或客户添酒，不要瞎给领导代酒，就是要代，也要在领导或客户确实想找人代，还要装作自己是因为想喝酒而不是为了给领导代酒而喝酒。比如领导甲不胜酒力，可以通过旁敲侧击把准备敬领导甲的人拦下。&nbsp; <br />
　　细节六：端起酒杯（啤酒杯），右手扼杯，左手垫杯底，记着自己的杯子永远低于别人。自己如果是领导，知趣点，不要放太低，不然怎么叫下面的做人？&nbsp; <br />
　　细节七：如果没有特殊人物在场，碰酒最好按时针顺序，不要厚此薄彼。&nbsp; <br />
　　细节八：碰杯，敬酒，要有说词，不然，我tmd干吗要喝你的酒？&nbsp; <br />
　　细节九：桌面上不谈生意，喝好了，生意也就差不多了，大家心里面了了然，不然人家也不会敞开了跟你喝酒。&nbsp; <br />
　　细节十：假如，纯粹是假如，遇到酒不够的情况，酒瓶放在桌子中间，让人自己添，不要傻不垃圾的去一个一个倒酒，不然后面的人没酒怎么办？&nbsp; <br />
　　 <br />
　　关于敬酒 <br />
　　1、主人敬主宾。&nbsp; <br />
　　2、陪客敬主宾。&nbsp; <br />
　　3、主宾回敬。&nbsp; <br />
　　4、陪客互敬。&nbsp; <br />
　　记住：作客绝不能喧宾夺主乱敬酒，那样是很不礼貌，也是很不尊重主人的。 <br />
　　 <br />
　　5——倒茶&nbsp; <br />
　　&nbsp;这里所说的倒茶学问既适用于客户来公司拜访，同样也适用于商务餐桌。&nbsp; <br />
　　&nbsp;首先，茶具要清洁。客人进屋后，先让坐，后备茶。冲茶之前，一定要把茶具洗干净，尤其是久置未用的茶具，难免沾上灰尘、污垢，更要细心地用清水洗刷一遍。在冲茶、倒茶之前最好用开水烫一下茶壶、茶杯。这样，既讲究卫生，又显得彬彬有礼。如果不管茶具干净不干净，胡乱给客人倒茶，这是不礼貌的表现。人家一看到茶壶、茶杯上的斑斑污迹就反胃，怎么还愿意喝你的茶呢?&nbsp;现在一般的公司都是一次性杯子，在倒茶前要注意给一次性杯子套上杯托，以免水热烫手，让客人一时无法端杯喝茶。&nbsp; <br />
　　&nbsp;其次，茶水要适量。先说茶叶，一般要适当。茶叶不宜过多，也不宜太少。茶叶过多，茶味过浓；茶叶太少，冲出的茶没啥味道。假如客人主动介绍自己喜欢喝浓茶或淡茶的习惯，那就按照客人的口胃把茶冲好。再说倒茶，无论是大杯小杯，都不宜倒得太满，太满了容易溢出，把桌子、凳子、地板弄湿。不小心，还会烫伤自己或客人的手脚，使宾主都很难为情。当然，也不宜倒得太少。倘若茶水只遮过杯底就端给客人，会使人觉得是在装模作样，不是诚心实意。&nbsp; <br />
　　&nbsp;再次，端茶要得法。按照我国人民的传统习惯，只要两手不残废，都是用双手给客人端茶的。但是，现在有的年青人不懂得这个规矩，用一只手把茶递给客人了事。双手端茶也要很注意，对有杯耳的茶杯，通常是用一只手抓住杯耳，另一只手托住杯底，把茶端给客人。没有杯耳的茶杯倒满茶之后周身滚烫，双手不好接近，有的同志不管三七二十一，用五指捏住杯口边缘就往客人面前送。这种端茶方法虽然可以防止烫伤事故发生，但很不雅观，也不够卫生。请试想，让客人的嘴舐主人的手指痕，好受吗?&nbsp; <br />
　　&nbsp;添茶。如果上司和客户的杯子里需要添茶了，你要义不容辞地去做。你可以示意服务生来添茶，或让服务生把茶壶留在餐桌上，由你自己亲自来添则更好，这是不知道该说什么好的时候最好的掩饰办法。当然，添茶的时候要先给上司和客户添茶，最后再给自己添。&nbsp; <br />
　　 <br />
　　6——离席&nbsp; <br />
　　&nbsp;一般酒会和茶会的时间很长，大约都有在两小时以上。也许逛了几圈，认得一些人后，你很快就想离开了。这时候，中途离席的一些技巧，你不能不了解。&nbsp; <br />
　　&nbsp;常见一场宴会进行得正热烈的时候，因为有人想离开，而引起众人一哄而散的结果，使主办人急得真跳脚。欲避免这种煞风景的后果，当你要中途离开时，千万别和谈话圈里的每一个人一一告别，只要悄悄地和身边的两、三个人打个招呼，然后离去便可。&nbsp; <br />
　　&nbsp;中途离开酒会现场，一定要向邀请你来的主人说明、致歉，不可一溜烟便不见了。&nbsp; <br />
　　&nbsp;和主人打过招呼，应该马上就走，不要拉着主人在大门大聊个没完。因为当天对方要做的事很多，现场也还有许多客人等待他（她）去招呼，你占了主人太多时间，会造成他（她）在其他客人面前失礼。&nbsp; <br />
　　&nbsp;有些人参加酒会、茶会，当中途准备离去时，会一一问她所认识的每一个人要不要一块走。结果本来热热闹闹的场面，被她这么一鼓动，一下子便提前散场了。这种闹场的事，最难被宴会主人谅解，一个有风度的人，可千万不要犯下这钟错误。 <br />
<br />
　　喝酒前的准备&nbsp; <br />
　　&nbsp;酒能伤肝，这是人人皆知道的，为了尽量减少酒精对胃和肝脏的伤害，减少脂肪肝的发生。酒前的准备工作很重要，这是能保证你在酒桌上千杯不醉的关键因素。在去赴宴之前，在家先吃点东西，让胃里有点东西垫着。那具体吃点什么好呢？一般吃点高蛋白的比较好，例如吃两个鸡蛋，喝点牛奶，豆浆等，因为这些高蛋白的食品在胃中可以和酒精结合，发生反应，减少对酒精的吸收。另外，吃点饼干，糕点等也可以，让胃里有点东西，因为空腹喝酒，酒精在胃内很容易被吸收，从而导致容易醉酒。注意，切忌用咸鱼、香肠、腊肉下酒，因为此类熏腊食品含有大量色素与亚硝胺，与酒精发生反应，不仅伤肝，而且损害口腔与食道粘膜，甚至诱发癌症。&nbsp; <br />
　　&nbsp;另外，对于经常喝酒或者经常陪酒的人士，可以一试一些古书上记载的方法。如清代无名氏在《调鼎集》载：&#8220;饮酒欲不醉者，服硼砂末少许，其饮葛汤，葛丸者效迟&#8221;。《千金方》：&#8220;七夕日采石菖蒲，末服之，饮酒不醉。&#8221;&nbsp; <br />
　　 <br />
　　喝酒中的保护&nbsp; <br />
　　&nbsp;&#8220;酒过三循、菜过五味&#8221;，这是古代留下来的酒场谚语，这也从另外一方面说明了，喝酒时吃菜的重要性。在喝酒前，尽量先吃点菜，然后再喝酒，其原理和前面说的一样。严禁空腹喝酒，既容易醉，又容易伤胃。&nbsp; <br />
　　 <br />
　　喝酒后的醒酒措施&nbsp; <br />
　　&nbsp;喝酒后，头晕，头疼，呕吐，甚至人事不醒，醉酒者要经受很大的痛苦，这个时候需要尽快醒酒，以减少醉酒带来的痛苦，并防止有可能出现的更大的伤害。在这里教你几招醒酒的方法，简单易行，饮酒者可以根据自己的情况，选择适合自己的方法，不妨一试。&nbsp; <br />
　　★☆饮服白萝卜汁：生白萝卜,洗净榨汁,稍加热服下,每次一茶杯,10分钟一次,三次可解去酒气。&nbsp; <br />
　　★☆吃大白菜心：取出大白菜心切丝,一个不够取两,加少量白糖和白醋拌匀后腌渍三五分钟服下,此法很快解酒。&nbsp; <br />
　　★☆服芹菜汁：鲜芹菜洗净切碎榨汁,当茶喝,连续喝三次(隔5分钟),此对酒后头痛脑胀脸红有特效。&nbsp; <br />
　　★☆饮鲜桔皮水：2两鲜桔皮加1斤水煮沸，再加入少量食盐摇匀后当茶喝，一次一茶杯，5分钟再饮，三次见效。&nbsp; <br />
　　★☆喝绿豆汁：绿豆2两，加水煮熟后饮，连汤带豆.如将绿豆捣碎用开水冲服有解酒效果。&nbsp; <br />
　　另外怎么来减少醉酒后引起的头疼，头晕，反胃等症状呢？下面也介绍几种食物，这是美国国家头痛研究基金会的研究人员发现，大家不妨做一个参考：&nbsp; <br />
　　★☆蜂蜜水治酒后头痛：蜂蜜中含有一种特殊的果糖，可以促进酒精的分解吸收，减轻头痛症状，尤其是红酒引起的头痛。另外，蜂蜜还有催眠作用，能使人很快入睡，第二天起床后也不会头痛。&nbsp; <br />
　　★☆西红柿汁治酒后头晕：西红柿汁也富含特殊果糖，能帮助促进酒精分解，一次饮用300毫升以上，能使酒后头晕感逐渐消失。饮用前若加入少量食盐，还有助于稳定情绪。&nbsp; <br />
　　★☆新鲜葡萄治酒后反胃、恶心：如果在饮酒前吃，还能有效预防醉酒。&nbsp; <br />
　　★☆西瓜汁治酒后全身发热：西瓜具可以清热去火，能加速酒精从尿液中排出。&nbsp; <br />
　　★☆柚子消除口中酒气：柚肉蘸白糖吃，对消除酒后口腔中的酒气有很大帮助。&nbsp; <br />
　　★☆芹菜汁治酒后胃肠不适、颜面发红：这是因为芹菜中含有丰富的B族维生素，能分解酒精。&nbsp; <br />
　　★☆酸奶治酒后烦躁：酸奶能保护胃黏膜、延缓酒精吸收，其中钙含量丰富，对缓解酒后烦躁尤其有效。&nbsp; <br />
　　★☆香蕉治酒后心悸、胸闷：酒后吃1—3根香蕉，能增加血糖浓度，降低酒精在血液中的比例，达到解酒目的。同时，它还能减轻心悸症状、消除胸口郁闷。&nbsp; <br />
　　★☆橄榄治酒后厌食：橄榄自古以来就是醒酒、清胃热、促食欲的&#8220;良药&#8221;，既可直接食用，也可加冰糖炖服。&nbsp; <br />
　　 <br />
　　都以为茶能解酒，却不知就这样被&#8220;贻误&#8221;多年—— <br />
　　 <br />
　　酒后忌饮茶 <br />
　　&nbsp;李时珍在《本草纲目》中记载：酒后饮茶伤肾，腰腿坠重，膀胱冷痛，兼患痰饮水肿。现代医学研究也指出，茶水会刺激胃酸分泌，使酒精更容易损伤到胃黏膜；同时，茶水中的茶碱和酒精一样会导致心跳加速，更加重了心脏负担。 <br />
　　 <br />
　　醒酒的药物 <br />
　　&nbsp;目前市场上面出现不少醒酒的药物,例如海王金樽,&#8220;客格博&#8221;胶囊,陪酒师&#8221;解酒茶，还有一种美国进口的ZEO等等，那么这些药物真的有效吗?说到底,所谓的醒酒药物无非都是通过以下两个途径来达到醒酒的目的的:一是能迅速分解究竟,使酒精失去功效，或者阻断酒精在胃肠中的吸收,减少酒精进入血液的量,这样自然也可以达到醒酒的目的。但是,不管什么醒酒药物,也不管其功效如何神奇,都是有一定副作用的,不能常吃,尤其对那些经常陪酒或者经常需要应酬的人,更是如此。一般情况下不要吃，因为即使你吃药了，酒精还是进入了体内，对肝脏造成伤害，最好的是不喝，必须要喝的时候，也先用别的方法来醒酒。&nbsp; <br />
　　 <br />
　　醉酒后的照顾 <br />
　　&nbsp;醉酒者自己往往不知道自己的行为，无法来自己照顾自己，那么作为亲人或者朋友就必须照顾好，要注意一下几个方面：&nbsp; <br />
　　1.醉酒者如行走不稳，应该注意不要让其跌倒，防止跌打损伤，或者磕碰头部等重要部位。&nbsp; <br />
　　2.注意保暖，因为醉酒者身体机能下降，这个时候容易受凉。让醉酒者的头歪向一侧，防止其呕吐，如果有呕吐，要清除其口腔内的呕吐物，防止进入气管，导致窒息或者肺部感染。&nbsp; <br />
　　3.醉酒较严重者，并且无法服用醒酒品的，则应该使其将胃内容物吐出来，可以用手指，棉棒等插入其咽喉部位来使其呕吐。必要时还可以用温水或2%碳酸氢钠液洗胃。更严重者则赶紧拨打120或者马上送医院急救。 
<img src ="http://www.cnblogs.com/tangdh/aggbug/1227712.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42130/" target="_blank">[新闻]Google十年市值达1500亿美元 创造奇迹</a>]]></description></item><item><title>excel个人所得税计算公式</title><link>http://www.cnblogs.com/tangdh/archive/2008/06/22/1227702.html</link><dc:creator>tangdh</dc:creator><author>tangdh</author><pubDate>Sun, 22 Jun 2008 09:47:00 GMT</pubDate><guid>http://www.cnblogs.com/tangdh/archive/2008/06/22/1227702.html</guid><wfw:comment>http://www.cnblogs.com/tangdh/comments/1227702.html</wfw:comment><comments>http://www.cnblogs.com/tangdh/archive/2008/06/22/1227702.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/tangdh/comments/commentRss/1227702.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tangdh/services/trackbacks/1227702.html</trackback:ping><description><![CDATA[<u><font face="Times New Roman" size="3"><font face="Verdana">=ROUND(MAX((B2-C2-2000)*0.05*{1,2,3,4,5,6,7,8,9}-25*{0,1,5,15,55,135,255,415,615},0),2)<br />
=ROUND(MAX((B2-C2-2000)*{0.05,0.10,0.15,0.20,0.25,0.30,0.35,0.40,0.45}-{0,25,125,375,1375,3375,6375,10375,15375},0),2)</font></font></u>
<img src ="http://www.cnblogs.com/tangdh/aggbug/1227702.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42130/" target="_blank">[新闻]Google十年市值达1500亿美元 创造奇迹</a>]]></description></item><item><title>全国大学FTP站列表</title><link>http://www.cnblogs.com/tangdh/archive/2008/06/19/1226254.html</link><dc:creator>tangdh</dc:creator><author>tangdh</author><pubDate>Thu, 19 Jun 2008 15:26:00 GMT</pubDate><guid>http://www.cnblogs.com/tangdh/archive/2008/06/19/1226254.html</guid><wfw:comment>http://www.cnblogs.com/tangdh/comments/1226254.html</wfw:comment><comments>http://www.cnblogs.com/tangdh/archive/2008/06/19/1226254.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/tangdh/comments/commentRss/1226254.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tangdh/services/trackbacks/1226254.html</trackback:ping><description><![CDATA[<p><font face="Verdana">成都信息工程学院ftp </font></p>
<p><font face="Verdana">ftp://xsc.cuit.edu.cn/ </font></p>
<p><font face="Verdana">大连理工大学 </font></p>
<p><font face="Verdana">ftp://ftp.dlut.edu.cn ; </font></p>
<p><font face="Verdana">上海交通大学 </font></p>
<p><font face="Verdana">ftp://ftp.shnet.edu.cn ; </font></p>
<p><font face="Verdana">ftp://mssite.sjtu.edu.cn ; </font></p>
<p><font face="Verdana">同济大学 </font></p>
<p><font face="Verdana">ftp://ftp.tongji.edu.cn ; </font></p>
<p><font face="Verdana">南京大学 </font></p>
<p><font face="Verdana">ftp://ftp.nju.edu.cn ; </font></p>
<p><font face="Verdana">南京邮电学院 </font></p>
<p><font face="Verdana">ftp://ftp.njupt.edu.cn/ ; </font></p>
<p><font face="Verdana">南京理工大学 </font></p>
<p><font face="Verdana">ftp://ftp.njnet.edu.cn/ ; </font></p>
<p><font face="Verdana">浙江大学 </font></p>
<p><font face="Verdana">ftp://ftp.zju.edu.cn/ ; </font></p>
<p><font face="Verdana">科学技术大学 </font></p>
<p><font face="Verdana">ftp://ftp.ustc.edu.cn ; </font></p>
<p><font face="Verdana">厦门大学 </font></p>
<p><font face="Verdana">ftp://ftp.xmu.edu.cn ; </font></p>
<p><font face="Verdana">山东大学 </font></p>
<p><font face="Verdana">ftp://ftp.sdu.edu.cn ; </font></p>
<p><font face="Verdana">哈尔滨工业大学 <br />
ftp://ftp.hit.edu.cn ; </font></p>
<p><font face="Verdana">哈尔滨建筑大学 <br />
ftp://hrbucea.edu.cn ; </font></p>
<p><font face="Verdana">武汉测绘科技大学 </font></p>
<p><font face="Verdana">ftp://ftp.wtusm.edu.cn ; </font></p>
<p><font face="Verdana">武汉水利电力大学 </font></p>
<p><font face="Verdana">ftp://ftp.wuhee.edu.cn/ ; </font></p>
<p><font face="Verdana">中南财经大学 <br />
ftp://ftp.znufe.edu.cn/ ; </font></p>
<p><font face="Verdana">中南工业大学 <br />
ftp://ftp.csut.edu.cn ; </font></p>
<p><font face="Verdana">上海理工大学ftp <br />
202.120.223.50 </font></p>
<p><font face="Verdana">用户名：download </font></p>
<p><font face="Verdana">密码：usstdown </font></p>
<p><font face="Verdana">教育ftp站点 </font></p>
<p><font face="Verdana">221.6.101.26 </font></p>
<p><font face="Verdana">用户名：guest </font></p>
<p><font face="Verdana">密码：guest </font></p>
<p><font face="Verdana">山东大学英语学习ftp <br />
ftp://211.87.235.172/ </font></p>
<p><font face="Verdana">请单线程下载 </font></p>
<p><font face="Verdana">清华java服务器。 </font></p>
<p><font face="Verdana">ftp://java:java@166.111.164.21 <br />
东北师大FTP </font></p>
<p><font face="Verdana">202.198.128.107 </font></p>
<p><font face="Verdana">成都理工大学 FTP 服务器 </font></p>
<p><font face="Verdana">http://ftp.cdut.edu.cn/ <br />
郑州航院视频中心,内容丰富 </font></p>
<p><font face="Verdana">202.196.160.15 </font></p>
<p><font face="Verdana">哈工大FTP </font></p>
<p><font face="Verdana">ftp://ftp.hagongda.com/ ;; </font></p>
<p><font face="Verdana">有人数限制的，人太多了进不去的！ </font></p>
<p><font face="Verdana">东北师大FTP（影视教学齐全） <br />
ftp://202.198.128.107 </font></p>
<p><font face="Verdana">清华C语言服务器 <br />
ftp://cpp:cpp@166.111.168.29 </font></p>
<p><font face="Verdana">上海电力学院 </font></p>
<p><font face="Verdana">哪个地方有LOTUS 5设计教程 </font></p>
<p><font face="Verdana">公用Ftp服务器：210.35.88.9 </font></p>
<p><font face="Verdana">校外上传用户名：suepoutup 密码：suepoutup </font></p>
<p><font face="Verdana">校外下载用户名：suepoutdown 密码：suepoutdown </font></p>
<p><font face="Verdana">ＦＴＰ１６（铁通北分网络FTP站点） </font></p>
<p><font face="Verdana">地址： ftp://ftp.crcbj.com ; </font></p>
<p><font face="Verdana">帐号: crcbj 密码: crcbj </font></p>
<p><font face="Verdana">山东大学2003年本科教学优秀课件 </font></p>
<p><font face="Verdana">ftp://202.194.14.235/ecourse/ </font></p>
<p><font face="Verdana">主机名: ftp.gdut.edu.cn </font></p>
<p><font face="Verdana">用户名: gdut </font></p>
<p><font face="Verdana">密码: 2003gdut@ftp </font></p>
<p><font face="Verdana">端口: 21 <br />
<br />
<br />
</p>
<p><font face="Verdana">清华大学 </font></p>
<p><font face="Verdana">ftp://www.lib.tsinghua.edu.cn ; </font></p>
<p><font face="Verdana">ftp://ftp.net.edu.cn ; </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">北京大学 </font></p>
<p><font face="Verdana">ftp://www.lib.pku.edu.cn ; </font></p>
<p><font face="Verdana">ftp://ftp.pku.edu.cn ; </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">北京邮电大学 </font></p>
<p><font face="Verdana">ftp://ftp.bupt.edu.cn ; </font></p>
<p><font face="Verdana">ftp://ftp.buptnet.edu.cn ; </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">华中理工大学 </font></p>
<p><font face="Verdana">ftp://ftp.whnet.edu.cn </font></p>
<p><font face="Verdana">ftp://nlcc.hust.edu.cn </font></p>
<p><font face="Verdana">ftp://dlbftp.dhs.org </font></p>
<p><font face="Verdana">ftp://202.114.22.148 </font></p>
<p><font face="Verdana">ftp://iprai.hust.edu.cn </font></p>
<p><font face="Verdana">ftp://ia.hust.edu.cn </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">暨南大学 </font></p>
<p><font face="Verdana">ftp://202.116.9.61 ; </font></p>
<p><font face="Verdana">ftp://202.116.9.59 ; </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">大连理工大学 </font></p>
<p><font face="Verdana">ftp://ftp.dlut.edu.cn ; </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">上海交通大学 </font></p>
<p><font face="Verdana">ftp://ftp.shnet.edu.cn ; </font></p>
<p><font face="Verdana">ftp://mssite.sjtu.edu.cn ; </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">同济大学 </font></p>
<p><font face="Verdana">ftp://ftp.tongji.edu.cn ; </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">河北师范大学的FTP </font></p>
<p><font face="Verdana">地址：ftp.hebtu.edu.cn </font></p>
<p><font face="Verdana">用户：movie </font></p>
<p><font face="Verdana">密码：movie </font></p>
<p><font face="Verdana">端口：21 </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">西安电子 </font></p>
<p><font face="Verdana">ftp:// 202.117.35.170 </font></p>
<p><font face="Verdana">内有大量资料 </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">成都理工大学的ftp </font></p>
<p><font face="Verdana">里面有很多unix和linux的资料和系统及工具哦~~~ </font></p>
<p><font face="Verdana">速度不错~~~~~强烈推荐！！！！ </font></p>
<p><font face="Verdana">http://ftp.cdut.edu.cn/ </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">同济大学FTP主页（各类教育FTP） </font></p>
<p><font face="Verdana">http://tjftp.tongji.net/ </font></p>
<p><font face="Verdana">不要密码 </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">南开大学数学学院匿名ftp </font></p>
<p><font face="Verdana">ftp://ftp.math.nankai.edu.cn/ </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">山东大学软件学院教学课件ftp </font></p>
<p><font face="Verdana">ftp://211.87.226.11/Downloads </font></p>
<p><font face="Verdana">ftp://211.87.226.11/skonline/study </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">北京信息工程学院 </font></p>
<p><font face="Verdana">ftp://pubftp.biti.edu.cn/ </font></p>
<p><font face="Verdana">ftp://ftp.biti.edu.cn/ </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">上海理工大学ftp </font></p>
<p><font face="Verdana">202.120.223.50【软件、学习】 </font></p>
<p><font face="Verdana">用户名：download </font></p>
<p><font face="Verdana">密码：usstdown </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">南开大学数学学院FTP服务器 </font></p>
<p><font face="Verdana">匿名　 </font></p>
<p><font face="Verdana">202.113.29.4 </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">清华大学FTP(匿名) </font></p>
<p><font face="Verdana">ftp.tsinghua.edu.cn </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">南大的三个ftp </font></p>
<p><font face="Verdana">ftp://ftp.nju.edu.cn </font></p>
<p><font face="Verdana">ftp://ftp2.nju.edu.cn/ </font></p>
<p><font face="Verdana">ftp://thephy.nju.edu.cn/ </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">扬州大学ftp服务器 </font></p>
<p><font face="Verdana">202.195.62.11 </font></p>
<p><font face="Verdana">不用密码 </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">清华31CD的网络课程ftp下载 </font></p>
<p><font face="Verdana">FTP：218.2.183.165 </font></p>
<p><font face="Verdana">端口：21 </font></p>
<p><font face="Verdana">用户名：guest </font></p>
<p><font face="Verdana">密码：yuanding </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">中山大学 </font></p>
<p><font face="Verdana">ftp://ftp.zsu.edu.cn </font></p>
<p><font face="Verdana"></font>&nbsp;<font face="Verdana">中南工业大学 </font></p>
<p><font face="Verdana">ftp://ftp.csut.edu.cn ; </font></p>
<p><font face="Verdana"></font>&nbsp;<font face="Verdana">广东大学FTP站点 </font></p>
<p><font face="Verdana">主机名: ftp.gdut.edu.cn </font></p>
<p><font face="Verdana">用户名: gdut </font></p>
<p><font face="Verdana">密码: 2003gdut@ftp </font></p>
<p><font face="Verdana">端口: 21 </font></p>
<p><font face="Verdana"></font>&nbsp;<font face="Verdana">同济大学ftp </font></p>
<p><font face="Verdana">ftp://plinux.org ;;24小时开机 </font></p>
<p><font face="Verdana">匿名，最大用户数100，速度50kb/s。【游戏，教学，软件，电子书籍，音乐，少量动画】 </font></p>
<p><font face="Verdana"></font>&nbsp;<font face="Verdana">中山大学化学与化学工程学院FTP服务器 </font></p>
<p><font face="Verdana">202.116.83.77 </font></p>
<p><font face="Verdana"></font>&nbsp;<font face="Verdana">西安交大，西工大课件之FTP </font></p>
<p><font face="Verdana">ftp://www.slsz.com/ </font></p>
<p><font face="Verdana">匿名登录。 </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">西安交大ftp </font></p>
<p><font face="Verdana">主机名: ftp.xjtu.edu.cn </font></p>
<p><font face="Verdana">匿名 </font></p>
<p><font face="Verdana">端口: 21</font></p>
<p><font face="Verdana">ftp地址&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 名字&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内容&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 速度星级<br />
202.115.112.29 光华影院 有很多电影、音乐、工具 ★★★★★<br />
<br />
202.112.94.136 北京师范大学 有音乐、游戏、软件，好象没有电影 ★★★★★<br />
<br />
166.111.168.118 清华大学 音乐&#8230;&#8230; ★★★ <br />
<br />
166.111.168.168 清华大学 动画、音乐、书 ★★★★ <br />
<br />
166.111.168.18 清华大学 电影、音乐 ★★★★ <br />
<br />
166.111.168.6 清华大学 动画、音乐、游戏、软件 ★★★★ <br />
<br />
162.105.92.40 北京大学 mp3、mtv、flash、少量电影 ★★★ <br />
<br />
162.105.90.53 北京大学 mp3、mtv、大量软件、game、少量电影 ★★★★ <br />
<br />
162.105.56.6 北京大学 有很多电影，值得一看 ★★★★<br />
<br />
162.105.90.54 北京大学 mp3、mtv、flash、少量电影 ★★★ <br />
<br />
162.105.43.253 北京大学 有不少电影，分类比较清楚 ★★★★ <br />
<br />
166.111.65.6 清华大学 有非常多电影 ★★★★ <br />
<br />
166.111.174.33 清华大学 有电影很音乐，电影非常多 ★★★ <br />
<br />
166.111.162.27 清华大学 没什么电影，但软件真的很多 ★★★<br />
<br />
166.111.168.8 清华大学 有大话西游的DivX版 ★★★<br />
<br />
166.111.60.159 清华大学 电影很少 ★★<br />
<br />
202.112.94.136 北京师范大学 有很多东西，不过没有电影 ★★★★<br />
<br />
202.112.105.119 北京邮电大学 有十多部电影、还有书、软件、字体库等 ★★★★<br />
<br />
tracy.bupt.edu.cn 北京邮电大学 有很多东西，不过好象没有电影 ★★★★<br />
<br />
202.38.240.223 华南理工大学 音乐、书籍、墙纸、少量电影、其它 ★★★<br />
<br />
202.38.248.1 华南理工大学 有十多部电影、音乐和其它东西 ★★★ <br />
<br />
ftp.nju.edu.cn 没什么电影,但还有很多其他东西 ★★★★★ <br />
<br />
ftp.xjtu.edu.cn 西交 电影非常多，还有很多东西。 ★★★★★ <br />
<br />
vod.sjtu.edu.cn 上海交通大学 电影不少，不过是拼音命名的。 ★★★★ <br />
<br />
ftp://ftp.nju.edu.cn ftp://ftp2.nju.edu.cn&nbsp;<br />
</font>&nbsp;</p>
</font>
<img src ="http://www.cnblogs.com/tangdh/aggbug/1226254.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42129/" target="_blank">[新闻]GMail:回过头来支持IE6</a>]]></description></item><item><title>使用命令行IPSec封锁端口</title><link>http://www.cnblogs.com/tangdh/archive/2008/06/05/1214696.html</link><dc:creator>tangdh</dc:creator><author>tangdh</author><pubDate>Thu, 05 Jun 2008 11:20:00 GMT</pubDate><guid>http://www.cnblogs.com/tangdh/archive/2008/06/05/1214696.html</guid><wfw:comment>http://www.cnblogs.com/tangdh/comments/1214696.html</wfw:comment><comments>http://www.cnblogs.com/tangdh/archive/2008/06/05/1214696.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/tangdh/comments/commentRss/1214696.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tangdh/services/trackbacks/1214696.html</trackback:ping><description><![CDATA[<p><font face="Verdana"><font face="Verdana">WIN2003下直接就是netsh IPSEC命令</font>,<font face="Verdana">XP系统用ipseccmd,2000下用ipsecpol,<font face="Verdana">常用的参数如下：</font><br />
<font face="Verdana">&nbsp;&nbsp;&nbsp;&nbsp; -w reg 表明将配置写入注册表，重启后仍有效。<br />
　　-p 指定策略名称，如果名称存在，则将该规则加入此策略，否则创建一个。<br />
　　-r 指定规则名称。<br />
　　-n 指定操作，可以是BLOCK、PASS或者INPASS，必须大写。<br />
　　-x 激活该策略。<br />
　　-y 使之无效。<br />
　　-o 删除-p指定的策略。<br />
　　其中最关键的是-f。它用来设置你的过滤规则，格式为<br />
　　A.B.C.Dmaskport=A.B.C.Dmaskportprotocol。其中=前面的是源地址，后面是目的地址。如果使用+，则表明此规则是双向的。IP地址中用*代表任何IP地址，0代表我自己的IP地址。还可以使用通配符，比如144.92.. 等效于 144.92.0.0255.255.0.0。使用ipseccmd 可以获得它的帮助。<br />
　　如果希望将规则删除，需要先使用-y使之无效，否则删除后它还会持续一段时间。</font></font><br />
<br />
myipsec2003.bat:<br />
rem 添加安全策略名称<br />
netsh ipsec static add policy name=我的安全策略</font></p>
<p><font face="Verdana">rem 添加 IP筛选器列表<br />
netsh ipsec static add filterlist name=允许列表<br />
netsh ipsec static add filterlist name=拒绝列表</font></p>
<p><font face="Verdana">rem 添加筛选器到IP筛选器列表(允许上网成功)<br />
netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=any description=web访问 protocol=tcp mirrored=yes dstport=80<br />
netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=any description=dns访问 protocol=tcp mirrored=yes dstport=53<br />
netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=any description=dns访问 protocol=udp mirrored=yes dstport=53<br />
rem 共享别机打印成功<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.77 description=打印 protocol=tcp mirrored=yes dstport=139<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.77 description=打印 protocol=udp mirrored=yes dstport=138<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.77 description=打印 protocol=udp mirrored=yes dstport=137<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.77 description=打印 protocol=tcp mirrored=yes dstport=445<br />
rem 服务器<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.201 description=服务器 protocol=tcp mirrored=yes dstport=139<br />
&nbsp; netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.201 description=服务器 protocol=udp mirrored=yes dstport=138<br />
&nbsp; netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.201 description=服务器 protocol=udp mirrored=yes dstport=137<br />
&nbsp; netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.201 description=服务器 protocol=tcp mirrored=yes dstport=445<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.203 description=服务器 protocol=tcp mirrored=yes dstport=139<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.203 description=服务器 protocol=udp mirrored=yes dstport=138<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.203 description=服务器 protocol=udp mirrored=yes dstport=137<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.203 description=服务器 protocol=tcp mirrored=yes dstport=445<br />
&nbsp; netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.202 description=服务器 protocol=tcp mirrored=yes dstport=139<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.202 description=服务器 protocol=udp mirrored=yes dstport=138<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.202 description=服务器 protocol=udp mirrored=yes dstport=137<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.202 description=服务器 protocol=tcp mirrored=yes dstport=445<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.105 description=服务器 protocol=tcp mirrored=yes dstport=139<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.105 description=服务器 protocol=udp mirrored=yes dstport=138<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.105 description=服务器 protocol=udp mirrored=yes dstport=137<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.105 description=服务器 protocol=tcp mirrored=yes dstport=445<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.88 description=服务器 protocol=tcp mirrored=yes dstport=139<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.88 description=服务器 protocol=udp mirrored=yes dstport=138<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.88 description=服务器 protocol=udp mirrored=yes dstport=137<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.88 description=服务器 protocol=tcp mirrored=yes dstport=445</font></p>
<p><font face="Verdana">&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.155 description=服务器 protocol=tcp mirrored=yes dstport=139<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.155 description=服务器 protocol=udp mirrored=yes dstport=138<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.155 description=服务器 protocol=udp mirrored=yes dstport=137<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.155 description=服务器 protocol=tcp mirrored=yes dstport=445<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=200.200.200.155 description=服务器 protocol=udp mirrored=yes dstport=445</font></p>
<p><font face="Verdana">&nbsp; netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=any description=ping访问 protocol=ICMP mirrored=yes <br />
&nbsp;<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=any description=sybase访问 protocol=tcp mirrored=yes dstport=5000<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=any description=dameware protocol=tcp mirrored=yes dstport=6129<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=any dstaddr=me description=remotelyanywhere protocol=tcp mirrored=yes dstport=2000<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=any description=pcanywhere protocol=tcp mirrored=yes dstport=5631<br />
&nbsp;netsh ipsec static add filter filterlist=允许列表&nbsp; srcaddr=me dstaddr=any description=pcanywhere protocol=udp mirrored=yes dstport=5632</font></p>
<p><font face="Verdana">rem 添加筛选器到IP筛选器列表(不让别人访问)<br />
&nbsp;netsh ipsec static add filter filterlist=拒绝列表&nbsp; srcaddr=any dstaddr=me description=别人到我任何访问 protocol=any mirrored=yes <br />
&nbsp;netsh ipsec static add filter filterlist=拒绝列表&nbsp; srcaddr=me dstaddr=any description=我到任何访问 protocol=any mirrored=yes </font></p>
<p><font face="Verdana">rem 添加筛选器操作<br />
netsh ipsec static add filteraction name=可以&nbsp; action=permit<br />
netsh ipsec static add filteraction name=不可以&nbsp; action=block</font></p>
<font face="Verdana">
<p><br />
rem 创建一个链接指定 IPSec 策略、筛选器列表和筛选器操作的规则(加入规则到我的安全策略)<br />
netsh ipsec static add rule name=允许规则&nbsp; policy=我的安全策略 filterlist=允许列表 filteraction=可以<br />
netsh ipsec static add rule name=拒绝规则&nbsp; policy=我的安全策略 filterlist=拒绝列表 filteraction=不可以</p>
<p>rem 激活我的安全策略<br />
netsh ipsec static set policy name=我的安全策略 assign=y</p>
<p>rem 总结一下，策略policy(规则rule(筛选器列表filterlist(筛选器filter))—筛选器操作filteraction) <br />
rem netsh ipsec static delete policy name=我的安全策略<br />
rem netsh ipsec static delete policy all<br />
rem netsh ipsec static show policy all<br />
rem netsh firewall delete portopening TCP 2000</font></p>
<font face="Verdana">myipsecdel.bat</font>:<br />
<font face="Verdana">netsh ipsec static delete policy name=我的安全策略<br />
rem netsh ipsec static delete policy all</font><br />
<br />
<font face="Verdana">winxpipsec.bat</font>:<br />
<p><font face="Verdana">rem 设置策略名称及策略中包括的规则详细内容</font></p>
<p><font face="Verdana">ipseccmd -w REG -p "Block default ports" -y <br />
ipseccmd -w REG -p "Block default ports" -o <br />
ipseccmd -w REG -p "Block default ports" -r "Block all" -f 0+* -n BLOCK </font></p>
<p><font face="Verdana">rem ipseccmd -w REG -p "Block default ports" -r "Block TCP/135" -f *+0:135:TCP -n BLOCK <br />
rem ipseccmd -w REG -p "Block default ports" -r "Block TCP/139" -f *+0:139:TCP -n BLOCK <br />
rem ipseccmd -w REG -p "Block default ports" -r "Block TCP/445" -f *+0:445:TCP -n BLOCK <br />
rem ipseccmd -w REG -p "Block default ports" -r "Block UDP/123" -f *+0:123:UDP -n BLOCK <br />
rem ipseccmd -w REG -p "Block default ports" -r "Block UDP/135" -f *+0:135:UDP -n BLOCK <br />
rem ipseccmd -w REG -p "Block default ports" -r "Block UDP/137" -f *+0:137:UDP -n BLOCK <br />
rem ipseccmd -w REG -p "Block default ports" -r "Block UDP/138" -f *+0:138:UDP -n BLOCK <br />
rem ipseccmd -w REG -p "Block default ports" -r "Block UDP/139" -f *+0:139:UDP -n BLOCK <br />
rem ipseccmd -w REG -p "Block default ports" -r "Block UDP/445" -f *+0:445:UDP -n BLOCK </font></p>
<p><font face="Verdana">ipseccmd -w REG -p "Block default ports" -r "allow server" -f 0+200.200.200.201:445:UDP -n PASS<br />
ipseccmd -w REG -p "Block default ports" -r "allow server" -f 0+200.200.200.201:445:TCP -n PASS</font></p>
<p><font face="Verdana">rem ipseccmd -w REG -p "Block default ports" -r "allow server" -f 0+200.200.200.201:137:UDP -n PASS<br />
rem ipseccmd -w REG -p "Block default ports" -r "allow server" -f 0+200.200.200.201:138:UDP -n PASS<br />
rem ipseccmd -w REG -p "Block default ports" -r "allow server" -f 0+200.200.200.201:139:tcp -n PASS</font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">ipseccmd -w REG -p "Block default ports" -r "allow print" -f 0+200.200.200.77:445:UDP -n PASS<br />
ipseccmd -w REG -p "Block default ports" -r "allow print" -f 0+200.200.200.77:445:TCP -n PASS<br />
ipseccmd -w REG -p "Block default ports" -r "allow print" -f 0+200.200.200.77:137:UDP -n PASS<br />
ipseccmd -w REG -p "Block default ports" -r "allow print" -f 0+200.200.200.77:138:UDP -n PASS<br />
ipseccmd -w REG -p "Block default ports" -r "allow print" -f 0+200.200.200.77:139:tcp -n PASS</font></p>
<p><font face="Verdana">ipseccmd -w REG -p "Block default ports" -r "allow sqlserver" -f 0+*:1433:tcp -n PASS</font></p>
<p><font face="Verdana">ipseccmd -w REG -p "Block default ports" -r "allow sybase" -f 0+*:5000:tcp -n PASS<br />
ipseccmd -w REG -p "Block default ports" -r "allow sybase" -f 0+*:5001:tcp -n PASS<br />
ipseccmd -w REG -p "Block default ports" -r "allow sybase" -f 0+*:5002:tcp -n PASS</font></p>
<font face="Verdana">
<p><br />
ipseccmd -w REG -p "Block default ports" -r "allow dameware" -f 200.200.200.106+0:6129:tcp -n PASS<br />
ipseccmd -w REG -p "Block default ports" -r "allow pcanywhere" -f 200.200.200.106+0:5631:tcp -n PASS</p>
<p>ipseccmd -w REG -p "Block default ports" -r "allow firebird" -f 0+*:211:tcp -n PASS<br />
ipseccmd -w REG -p "Block default ports" -r "allow firebird" -f 0+*:3050:tcp -n PASS</p>
<p>ipseccmd -w REG -p "Block default ports" -r "allow ping" -f *+*::ICMP -n PASS<br />
ipseccmd -w REG -p "Block default ports" -x <br />
rem 激活此策略<br />
<br />
<font face="Verdana">winxpipsec_del.bat</font>:<br />
<font face="Verdana">rem 不指派，第一条先不指派此策略，第二条再删除此策略<br />
ipseccmd -w REG -p "Block default ports" -y <br />
ipseccmd -w REG -p "Block default ports" -o <br />
</font></p>
<p><font face="Verdana">win2000ipsec.bat</font>:<br />
</p>
<p><font face="Verdana">rem 设置策略名称及策略中包括的规则详细内容</font></p>
<p><font face="Verdana">rem ipsecpol -w REG -p "Block default ports" -y <br />
rem ipsecpol -w REG -p "Block default ports" -o <br />
ipsecpol -w REG -p "Block default ports" -r "Block all" -f 0+* -n BLOCK <br />
rem ipsecpol -w REG -p "Block default ports" -r "Block TCP/135" -f *+0:135:TCP -n BLOCK <br />
rem ipsecpol -w REG -p "Block default ports" -r "Block TCP/139" -f *+0:139:TCP -n BLOCK <br />
rem ipsecpol -w REG -p "Block default ports" -r "Block TCP/445" -f *+0:445:TCP -n BLOCK <br />
rem ipsecpol -w REG -p "Block default ports" -r "Block UDP/123" -f *+0:123:UDP -n BLOCK <br />
rem ipsecpol -w REG -p "Block default ports" -r "Block UDP/135" -f *+0:135:UDP -n BLOCK <br />
rem ipsecpol -w REG -p "Block default ports" -r "Block UDP/137" -f *+0:137:UDP -n BLOCK <br />
rem ipsecpol -w REG -p "Block default ports" -r "Block UDP/138" -f *+0:138:UDP -n BLOCK <br />
rem ipsecpol -w REG -p "Block default ports" -r "Block UDP/139" -f *+0:139:UDP -n BLOCK <br />
rem ipsecpol -w REG -p "Block default ports" -r "Block UDP/445" -f *+0:445:UDP -n BLOCK </font></p>
<p><font face="Verdana"></font>&nbsp;</p>
<p><font face="Verdana">rem ipsecpol -w REG -p "Block default ports" -r "allow UDP/137" -f *+0:137:UDP -n PASS<br />
rem ipsecpol -w REG -p "Block default ports" -r "allow UDP/138" -f *+0:138:UDP -n PASS<br />
rem ipsecpol -w REG -p "Block default ports" -r "allow UDP/139" -f *+0:139:UDP -n PASS<br />
rem ipsecpol -w REG -p "Block default ports" -r "allow tcp/139" -f *+0:139:tcp -n PASS</font></p>
<p><font face="Verdana">ipsecpol -w REG -p "Block default ports" -r "allow tcP/445" -f *+0:445:tcp -n PASS<br />
ipsecpol -w REG -p "Block default ports" -r "allow UDP/445" -f *+0:445:udp -n PASS</font></p>
<p><font face="Verdana">rem ipsecpol -w REG -p "Block default ports" -r "allow sybase" -f 0+*:5000:tcp -n PASS<br />
ipsecpol -w REG -p "Block default ports" -r "allow sybase" -f *+0:5000:tcp -n PASS<br />
ipsecpol -w REG -p "Block default ports" -r "allow sybase sqlserver5001" -f *+0:5001:tcp -n PASS<br />
ipsecpol -w REG -p "Block default ports" -r "allow sybase sqlserver5002" -f *+0:5002:tcp -n PASS<br />
ipsecpol -w REG -p "Block default ports" -r "allow sqlserver" -f *+0:1433:tcp -n PASS<br />
ipsecpol -w REG -p "Block default ports" -r "allow pcanywhere tcp" -f 200.200.200.106+0:5631:tcp -n PASS<br />
ipsecpol -w REG -p "Block default ports" -r "allow pcanywhere udp" -f 200.200.200.106+0:5632:udp -n PASS</font></p>
<p><font face="Verdana">ipsecpol -w REG -p "Block default ports" -r "allow dameware" -f 200.200.200.106+0:6129:tcp -n PASS<br />
rem ipsecpol -w REG -p "Block default ports" -r "allow firebird" -f 0+*:211:tcp -n PASS<br />
ipsecpol -w REG -p "Block default ports" -r "allow firebird211" -f *+0:211:tcp -n PASS<br />
ipsecpol -w REG -p "Block default ports" -r "allow firebird3050" -f *+0:3050:tcp -n PASS<br />
ipsecpol -w REG -p "Block default ports" -r "allow ping" -f 0+*::ICMP -n PASS<br />
ipsecpol -w REG -p "Block default ports" -x <br />
rem 激活此策略</font></p>
<p><font face="Verdana"><br />
</font>&nbsp;<font face="Verdana">win2000ipsec_del.bat:<br />
</font></font>&nbsp;<font face="Verdana">rem 不指派，第一条先不指派此策略，第二条再删除此策略<br />
ipsecpol -w REG -p "Block default ports" -y <br />
ipsecpol -w REG -p "Block default ports" -o <br />
</font></p>
<br />
<br />
<br />
<br />
<img src ="http://www.cnblogs.com/tangdh/aggbug/1214696.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42128/" target="_blank">[新闻]Google十年大变样</a>]]></description></item><item><title>pb11.2 转asp.net成功 </title><link>http://www.cnblogs.com/tangdh/archive/2008/05/27/1208499.html</link><dc:creator>tangdh</dc:creator><author>tangdh</author><pubDate>Tue, 27 May 2008 08:04:00 GMT</pubDate><guid>http://www.cnblogs.com/tangdh/archive/2008/05/27/1208499.html</guid><wfw:comment>http://www.cnblogs.com/tangdh/comments/1208499.html</wfw:comment><comments>http://www.cnblogs.com/tangdh/archive/2008/05/27/1208499.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/tangdh/comments/commentRss/1208499.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tangdh/services/trackbacks/1208499.html</trackback:ping><description><![CDATA[<p dir="ltr" style="margin-right: 0px">--21 先把你的程序移植到pb11.2，用pb11打开workspace和target即可，pb11.2自动移植，调试能在c/sx下运行正常<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 转换前,请先安装<font face="Verdana">ASPAJAXExtSetup.msi</font>(到<a href="http://www.asp.net">http://www.asp.net</a>下载)<br />
--22 开始转换了，菜单操作file&gt;New打开[New]选择窗口选[target] - .NET Web Forms Application按向导操作即可，<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; step1 关于向导的介绍<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step2 选Use an existing library and application object<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step3 找到你的程序入口即application object<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step4 加上你所用的pbl文件<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step5 命名pbt文件名，也可直接下一步[next&gt;]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step6 命名project object,也可直接下一步[next&gt;]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step7 输入你在iis里的虚拟目录，也可直接下一步[next&gt;]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step8 加上你用的资源文件,如有连接数据库的ini文件,要在此加入<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step9 如果你用了第三方的动太库dll，在这里加上，没有就[next&gt;]<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step10 如果你想用了javascript,在这里加吧，我没有这玩意。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step11 你要发布的web服务器<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step12 汇总一下你的选择，[Finish&gt;],伟大的.net Web forms创建完成 <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; step13 发布吧，Deploy Project，你只要点一个按钮即可，<br />
发布过程如下：<br />
&nbsp;先检查你的iis是否服务<br />
&nbsp;生成.NET assembly 文件<br />
&nbsp;生成PBD文件<br />
&nbsp;拷贝文件到IIS服务器<br />
&nbsp;发布完成</p>
<p>step14 激动人心的时刻到了，换台机器用ie打开你的程序(看你的具体的ip地址、虚拟目录)http://gst-susue/oands<br />
经过漫长的等待，asp.net第一次运行要先编译一下，下次就快点了。</p>
<p>step15 &#8220;我转换成功了，我转换成功了！&#8221;<br />
&nbsp;&nbsp; 如图<img height="768" alt="" src="http://www.cnblogs.com/images/cnblogs_com/tangdh/mpg4.JPG" width="1024" border="0" /></p>
<img src ="http://www.cnblogs.com/tangdh/aggbug/1208499.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42127/" target="_blank">[新闻]谷歌十年创新路</a>]]></description></item><item><title>[ASP.Net 2.0] TreeView只能用XML資料的解決之道</title><link>http://www.cnblogs.com/tangdh/archive/2006/03/25/358464.html</link><dc:creator>tangdh</dc:creator><author>tangdh</author><pubDate>Sat, 25 Mar 2006 04:18:00 GMT</pubDate><guid>http://www.cnblogs.com/tangdh/archive/2006/03/25/358464.html</guid><wfw:comment>http://www.cnblogs.com/tangdh/comments/358464.html</wfw:comment><comments>http://www.cnblogs.com/tangdh/archive/2006/03/25/358464.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/tangdh/comments/commentRss/358464.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tangdh/services/trackbacks/358464.html</trackback:ping><description><![CDATA[摘要: 在前幾個章節所介紹的TreeView([ASP.NET 2.0]SiteMapPath無法正確指到帶有QueryString的路徑、[ASP.NET 2.0]SiteMapPath WebControl)有個限制(至少我覺得是限制)，那就是只能使用XML的資料格式但假如我們的資料是資料庫形式的資料該怎麼辦?有兩個解決方法：一是自己寫程式，將節點加到TreeViewNode裡；一是另外寫個類似Tre&nbsp;&nbsp;<a href='http://www.cnblogs.com/tangdh/archive/2006/03/25/358464.html'>阅读全文</a><img src ="http://www.cnblogs.com/tangdh/aggbug/358464.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42126/" target="_blank">[新闻]十年回顾：Google的互联网经济</a>]]></description></item><item><title>[转贴]编写高性能 Web 应用程序的10个技巧</title><link>http://www.cnblogs.com/tangdh/archive/2005/02/04/101785.html</link><dc:creator>tangdh</dc:creator><author>tangdh</author><pubDate>Fri, 04 Feb 2005 02:47:00 GMT</pubDate><guid>http://www.cnblogs.com/tangdh/archive/2005/02/04/101785.html</guid><wfw:comment>http://www.cnblogs.com/tangdh/comments/101785.html</wfw:comment><comments>http://www.cnblogs.com/tangdh/archive/2005/02/04/101785.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/tangdh/comments/commentRss/101785.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/tangdh/services/trackbacks/101785.html</trackback:ping><description><![CDATA[本文讨论：
<br/>
<br/>常见的&#160;ASP.NET&#160;性能神话&#160;
<br/>有用的&#160;ASP.NET&#160;性能技巧和诀窍&#160;
<br/>在&#160;ASP.NET&#160;中处理数据库的一些建议&#160;
<br/>缓冲以及用&#160;ASP.NET&#160;进行后台处理&#160;
<br/>本文使用下列技术：ASP.NET，.NET&#160;框架，IIS
<br/>
<br/>　　用&#160;ASP.NET&#160;编写&#160;Web&#160;应用程序其轻松程度令人难以置信。它是如此的容易，以至于许多开发人员不用花费多少时间来构筑其应用便能获得非常好的性能。在本文中，我将给出10个编写高性能&#160;Web&#160;应用的技巧。我的评论不仅仅局限与&#160;ASP.NET&#160;应用，因为它们只是&#160;Web&#160;应用的一个子集。本文也不是&#160;Web&#160;应用性能调整的权威指南——这方面的内容可以写成一本书。相反，本文可以被视作一个好的起点。
<br/>　　在废寝忘食地工作之前，我常常要去攀岩。在攀岩之前，我总是要看一下指南手册中的线路并阅读以前来此一游的人留下的建议和忠告。但是，不管指南手册有多磨好，在尝试一次特定的具有挑战性的攀爬之前，你都必须付诸实际的行动。同样，在你面临解决的性能问题或者营运一个高吞吐量的站点之前，你只能想方设法编写高性能&#160;Web&#160;应用程序。
<br/>　　我们个人经验来自在微软&#160;ASP.NET&#160;团队从事底层架构程序经理，运行和管理&#160;www.asp.net&#160;,并协助架构&#160;Community&#160;Server&#160;过程中的经历，Community&#160;Server&#160;是几个有名的&#160;ASP.NET&#160;应用程序的下一个版本（它将&#160;ASP.NET&#160;Forums，.Text&#160;和&#160;nGallery&#160;整合到一个平台）。我确信这些帮助过我的技巧也会对你有所裨益。
<br/>　　你应该考虑将应用程序分离成几个逻辑层。你可能听说过术语3-层（或n-层）物理体系结构。它们通常是跨进程和/或硬件对功能进行物理划分的规定的体系结构模式。当系统需要伸缩时，更多的硬件能被添加。然而，总是应该避免与进程和机器忙碌程度相关的性能问题。所以，不管什么时候，只要可能，都要在相同的应用中一起运行&#160;ASP.NET&#160;页面及其相关的组件。
<br/>　　由于代码和层之间的边界分离，使用&#160;Web&#160;服务或远程调用将降低20%以上的性能。
<br/>　　数据层则稍微有些不同，因为数据库通常都用专门的硬件。但是，数据库的处理成本仍然很高，因此最优化代码时，数据层的性能应该是首当其充要关注的地方。
<br/>　　在着手解决你的应用程序的性能问题之前，一定要剖析应用程序，确定问题之所在。获取关键的性能计数器值（如实现垃圾收集所花时间之百分比的性能计数器的值）对于查找应用程序在何处最耗时也是非常重要的。凭借直觉常常也能找到耗时所在。
<br/>　　本文所描述的性能改进有两种类型：大型优化，如使用&#160;ASP.NET&#160;Cache，以及不断重复进行的微型优化。这些微型优化有时很有意思。对代码的小小改动便会引起很大的动静，产生成千次的调用。对于大型优化，你可能会看到整体性能的大跳跃。而对微型优化，给定请求可能只是毫秒级的调整，但按每天的请求总数计算，其结果的改进可能是巨大的。
<br/>
<br/>数据层的性能
<br/>
<br/>　　当调整某个应用程序的性能时，有一个简单的试金石，你可以用它按先后次序：检查代码是否存取数据库？如果是，多长时间存取一次？注意相同的测试也可以被应用于使用&#160;Web&#160;服务或远程调用的代码，但我们本文中不涉及这方面内容。
<br/>　　如果在特定的代码流程中必须具有对数据库的请求以及要考察其它方面，如：想对字符串处理进行优先优化，那么暂且把它放一放，先按照上面定好的优先次序来做。除非你有异乎寻常的性能问题，否则你的时间应该用在尝试最优化与数据库的连接所花的时间，返回的数据量以及多长时间往返一次和数据库的通讯上。
<br/>　　有了这些概括信息，下面就让我们来看看能帮助你改善应用程序性能的十个技巧。我将从能获得最显著效果的改变开始。
<br/>
<br/>技巧&#160;1&#160;——&#160;返回多个结果集
<br/>
<br/>　　复审你的数据库代码，看看是否有多于一次的对数据库的访问请求。这样每次往返数据库都降低你的应用程序能处理的每秒请求数。通过在单个数据库请求中返回多结果集，你能降低与数据库通信的总体时间。同时你也将使系统更具伸缩性，因为你减少了数据库服务器处理请求的负担。
<br/>　　虽然你可以用动态&#160;SQL&#160;返回多结果集，我更喜欢使用存储过过程。是否将业务逻辑驻留在存储过程当中是个有待争论的问题，但我认为，如果存储过程中的逻辑能约束返回的数据（降低数据集的尺寸，在网络上传输的时间以及逻辑层不必过虑数据），这是一件好事情。
<br/>　　使用&#160;SqlCommand&#160;命令实例及其&#160;ExecuteReader&#160;方法来处理强类型的各个业务类，你通过调用&#160;NextResult&#160;可以向前移动结果集指针。Figure&#160;1&#160;示范了处理几个带类型的&#160;ArrayLists&#160;例子会话。从数据库只返回你需要的数据还会降低服务器上内存的分配。
<br/>
<br/>技巧&#160;2&#160;——&#160;分页数据存取
<br/>
<br/>　　ASP.NET&#160;DataGrid&#160;提供了非常好的能力：数据分页支持。当启用&#160;DataGrid&#160;中的分页功能，则每次只显示固定数量的记录。此外，分页用户界面也会显示在&#160;DataGrid&#160;底部用于导航记录。分页用户界面允许你向前向后导航所显示的记录，一次显示固定数量的记录。
<br/>　　有一个美中不足的是用&#160;DataGrid&#160;分页需要将所有数据邦定到此栅格控件（gird）。例如，你的数据层必须返回所有数据，然后&#160;DataGrid&#160;将根据当前页过滤掉所有显示的记录。当你通过&#160;DataGrid&#160;进行分页时，如果有&#160;100,000&#160;条记录被返回，那么每个请求有&#160;99,975&#160;条记录将被废弃掉（假设页尺寸为&#160;25）。当记录数不断增加，此应用程序的性能便会遭受痛苦，因为每次请求所要发送的数据会越来越多。
<br/>　　编写较好的分页代码的一个好的方法是用存储过程。Figure&#160;2&#160;示范了一个用&#160;Northwind&#160;数据库中&#160;Orders&#160;表通过存储过程分页的例子。很简单，只要你在页面中传递索引以及页尺寸即可。相应的结果集先被计算然后被返回。
<br/>　　在&#160;Community&#160;Server&#160;中，我们编写了几个分页控件来完成数据分页。你将会看到，我使用了技巧&#160;1&#160;中讨论的思路，从一个存储过程中返回连个结果集：总记录数和请求的数据。
<br/>　　返回的总记录数依赖于所执行的查询不同而不同。例如，某个&#160;WHERE&#160;子句可被用于约束返回的数据。为了计算在分页用户界面显示的总页数，返回的总记录数必须是已知的。例如，如果有&#160;1,000,000&#160;条记录，用一个&#160;WHERE&#160;子句对之过滤后为&#160;1,000&#160;条记录，则分页逻辑必须要知道总记录数以便在分页用户界面中正确呈现。
<br/>
<br/>技巧&#160;3&#160;——&#160;连接池
<br/>
<br/>　　建立&#160;Web&#160;应用程序与&#160;SQL&#160;Server&#160;之间的&#160;TCP&#160;连接是一项昂贵的操作。微软的开发人员利用连接池技术已经有好长一段时间了，这个技术使他们能重用到数据库的连接。而不是每次请求都建立新的&#160;TCP&#160;连接，新连接仅在连接池中得不到连接时才建立。当连接被关闭时，它被返回到连接池中，在那里它仍然保持与数据库的连接，与完全断开&#160;TCP&#160;连接相反。
<br/>　　当然，你需要提防泄漏的连接。当你处理完毕，一定要关闭连接。重申一次：不管人们怎么吹嘘微软&#160;.NET&#160;框架中的垃圾收集特性，每当你处理完毕，一定要显式地调用连接对象的&#160;Close&#160;或&#160;Dispose&#160;方法。不要指望公共语言运行时（CLR）来为你定时清除和关闭连接。CLR&#160;最终将销毁类并强行关闭连接，但你无法保证该对象的垃圾收集届时会起作用。
<br/>　　为了充分用好连接池，有几条规则必须了然于心。首先，打开连接，进行处理，然后关闭连接。宁愿每个请求的连接打开和关闭多次，也不要保持连接打开状态以及在不同的方法间将它传来传去。其次，使用相同的连接串（如果你使用集成身份检查，那么也要用相同的线程身份）。如果你不用相同的连接串，例如，根据登录用户来定制连接串，你将无法得到连接池所提供的相同的最优化值。当模拟大用户量情形时，如果你使用集成身份检查，那么你的连接池将效力大减。.NET&#160;CLR&#160;数据性能计数器在试图跟踪任何与连接池有关的性能问题时是非常有用的。
<br/>　　不管什么时候，只要你的应用程序连接到运行在其它进程中的资源，比如某个数据库，你都应该针对连接到资源所耗时间，发送和接收数据所耗时间以及往返次数进行优化。为了实现较好的性能，应该首当其充优化应用程序中任何种类的忙碌进程。
<br/>　　应用层包含到数据层的连接以及将数据转换成有意义的类实例和业务处理的逻辑。以&#160;Community&#160;Server&#160;为例，你要在其中处理&#160;Forums&#160;和&#160;Threads&#160;集合；以及应用许可这样的业务规则；尤其重要的是缓冲（Caching）逻辑也实现其中。
<br/>
<br/>技巧&#160;4&#160;——&#160;ASP.NET&#160;Cache&#160;API
<br/>
<br/>　　在编写代码之前要做的头等大事之一是最大限度地构建应用层并发掘&#160;ASP.NET&#160;的&#160;Cache&#160;特性。
<br/>　　如果你的组件在&#160;ASP.NET&#160;应用程序内运行，那么你只需要在应用程序工程中引用&#160;System.Web.dll&#160;即可。当你需要访问&#160;Cache&#160;时，用&#160;HttpRuntime.Cache&#160;属性（相同的对象也可以通过&#160;Page.Cache&#160;和&#160;HttpContext.Cache&#160;访问）。
<br/>　　缓冲数据有几个准则。首先，如果数据能被使用多次，缓冲是个好的后选方案。其次，如果数据对给定请求或用户是一般的数据而非专用数据，那么最好是选择缓冲。如果数据用户或请求专用，如果需要保存期很长但可能不被经常使用，那么仍然要用缓冲。第三，常常被忽略的一个准则是有时缓冲太多的东西。一般来说，在x86机器上，为了降低内存不足错误的几率，运行某个进程不要超过800MB私有字节。因此，缓冲应该有个上限。换句话说，你也许能重用某个计算的结果，但如果该计算有10个参数，你可能试图针对10个置换进行缓冲，这样做可能会给你带来麻烦。ASP.NET&#160;提供的最常见的容错是由覆盖缓冲导致的内存不足错误，尤其是大型数据集。
<br/>　　Cache&#160;有几个重要特性是必须要了解的。第一个是&#160;Cache&#160;实现了最近最少使用（least-recently-used）算法，允许&#160;ASP.NET&#160;强制&#160;Cache&#160;清除操作&#160;——&#160;如果可用内存下降到低水平&#160;——&#160;则自动从&#160;Cache&#160;中删除不使用的项目。第二个是&#160;Cache&#160;支持依赖性到期特性，它能强制包括时间，键值，文件失效。时间常常被使用，但&#160;ASP.NET&#160;2.0&#160;引入了具有更强大的失效类型：数据库缓冲失效。也就是当数据库中的数据改变时，缓冲中的条目会自动删除。有关数据库缓冲失效的更多信息参见&#160;Dino&#160;Esposito&#160;在&#160;MSDN&#160;杂志&#160;2004&#160;年七月刊的&#160;Cutting&#160;Edge&#160;专栏文章。该缓冲的体系结构，参见&#160;Figure&#160;3。
<br/>
<br/>
<br/>Figure&#160;3&#160;ASP.NET&#160;Cache
<br/>
<br/>技巧&#160;5&#160;——&#160;预请求缓冲（Per-Request&#160;Caching）
<br/>
<br/>　　在本文前面，我曾提到对频繁执行的代码块所做的小小改动可能产生很大的，整体性能的提升。我把其中一个我特别中意的叫做预请求缓冲（per-request&#160;caching）。
<br/>　　由于&#160;Cache&#160;API&#160;&#160;被设计用来缓冲长期数据或直到某个条件被满足，预请求缓冲意旨用于请求期间的缓冲该数据。特定的代码流程被每次请求频繁访问但是数据只需要被拾取，应用，修改或更新一次，这样说太理论化，还是让我们看一个具体的例子吧。
<br/>在&#160;Community&#160;Server&#160;的&#160;Forums&#160;（论坛）应用中，某个页面上使用的每个服务器控件需要个性化数据以确定使用那个皮肤和式样页，以及其它的个性化数据，其中有些数据可以被长时间缓冲，但有些数据，比如用于控件的皮肤在单个请求中只被拾取一次并在该请求执行期间被重用多次。
<br/>　　为了完成预请求缓冲，用&#160;ASP.NET&#160;HttpContext。HttpContext&#160;的实例是随每个请求创建的，并可以通过&#160;HttpContext.Current&#160;属性在那个请求执行期间的任何地方存取它。HttpContext&#160;类具有一个特别的&#160;Items&#160;&#160;集合属性，被添加到该&#160;Items&#160;&#160;集合的对象和数据只是在该请求期间被缓存。就像你可以使用&#160;Cache&#160;来保存频繁使用的数据一样，你可以用&#160;HttpContext.Items&#160;来保存只在某个预请求中使用的数据。在此背景后的逻辑很简单：当数据不存在时被添加到&#160;HttpContext.Items&#160;集合，以及在随后的并发查找中简单地返回&#160;HttpContext.Items&#160;中发现的数据。
<br/>
<br/>技巧&#160;&#160;6——后台处理
<br/>
<br/>　　你的代码流程应该尽可能快，对吧？你自己可能多次发现要完成每个请求或每n个请求的任务代价很高。发出&#160;e-mail&#160;或解析并检查输入数据的有效性就是个例。
<br/>　　在重新生成&#160;ASP.NET&#160;Forums&#160;1.0&#160;并把它整合到&#160;Community&#160;Server&#160;时，我们发现添加新贴的代码流程非常慢。每次添加帖子，应用程序首先要确保没有重复贴，然后必须用&#8220;badword&#8221;过滤器解析该贴的表情图像，记号并索引，如果必要还要将帖子添加到相应的队列中，对附件进行有效性检查，最终完成发贴后，给预订者发出&#160;e-mail&#160;通知。显然，这里做的工作太多。
<br/>　　我们发现大多数时间都花在了索引逻辑和发送e-mail上。索引帖子是一个很耗时的操作，此外，内建的&#160;System.Web.Mail&#160;功能要与&#160;SMTP&#160;服务器连接并顺序发送邮件。当特定帖子或主题预定者数量增加时，AddPost&#160;函数的执行时间会越来越长。
<br/>　　并不是每个请求都需要索引邮件，我们想最好是批量集中处理，并且一次只索引25个帖子或每隔五分钟发送一次邮件。我们决定使用的代码与我曾在原型数据库缓冲失效中所使用的代码相同，最终它也被纳入&#160;Visual&#160;Studio&#160;2005。
<br/>　　名字空间&#160;System.Threading&#160;中的&#160;Timer&#160;类非常有用，但在.NET&#160;框架中鲜为人知，至少对&#160;Web&#160;开发者来说是这样。一旦创建，Timer&#160;将以可定制的间隔针对线程池中的某个线程调用指定的回调函数。这意味着你不用输入请求到&#160;ASP.NET&#160;应用程序便能让代码实行，这是一种最合适后台处理的情形。你也可以在这种后台处理模式中进行例如索引或发送电子邮件这样的工作。
<br/>　　尽管如此，这个技术存在几个问题，如果你的应用程序域关闭，该定时器实例将停止触发其事件。另外，由于&#160;CLR&#160;有一个硬坎，即每个进程的线程数是固定的，你便可能陷入严重的服务器负荷当中，此时可能就没有线程来处理定时器，从而造成延时。为了让发生这种情况的几率最小化，ASP.NET&#160;通过在进程中预留一定数量的空闲线程，并只使用部分线程来处理请求。然而，如果你有许多异步处理，这样做会有问题。
<br/>　　由于篇幅所限，在此无法列出代码，但你可以从&#160;www.rob-howard.net&#160;下载可消化的例子。其中有&#160;Blackbelt&#160;TechEd&#160;2004&#160;展示的幻灯和&#160;Demo。
<br/>
<br/>技巧&#160;7——页面输出缓存和代理服务器
<br/>
<br/>　　ASP.NET&#160;是你的表示层（或者说应该是）；它由页面，用户控件，服务器控件（HttpHandlers&#160;and&#160;HttpModules）以及它们生成的内容组成。如果你有一个产生输出的&#160;ASP.NET&#160;页面，不管是输出&#160;HTML，XML，图像还是任何其它数据，而且每个请求你都运行这个代码并产生相同的输出，此时最好选择使用页面输出缓存。
<br/>只要在页面顶部添加这一行代码即可：
<br/>
<br/>&lt;%@&#160;Page&#160;OutputCache&#160;VaryByParams=&quot;none&quot;&#160;Duration=&quot;60&quot;&#160;%&gt;&#160;
<br/>　　你可以为此页面有效地产生一次输出并可以在60秒内多次重用它，一到这个时间点，该页面将重新执行并将再次将输出添加到&#160;ASP.NET&#160;Cache。这个行为还能用某些低级编程&#160;APIs&#160;来完成。输出缓存有几个可以配置的设置，比如：VaryByParams&#160;属性。VaryByParams&#160;不是必须的，但允许你指定&#160;HTTP&#160;GET&#160;或&#160;HTTP&#160;POST&#160;参数来改变缓存入口。例如，default.aspx?Report=1&#160;或&#160;default.aspx?Report=2&#160;可以简单地设置&#160;VaryByParam=&quot;Report&quot;&#160;来对输出进行缓存。额外的参数被命名并用用分号分隔。
<br/>　　在使用输出缓存机制时，许多人都不了解&#160;ASP.NET&#160;页还产生一组下游缓存服务器&#160;HTTP&#160;头，比如&#160;Microsoft&#160;Internet&#160;Security&#160;and&#160;Acceleration&#160;Server&#160;或&#160;Akamai&#160;使用的&#160;HTTP&#160;头。当设置&#160;HTTP&#160;缓存头，文档可以被缓存到这些网络资源，从而响应客户端请求不必返回原服务器。
<br/>　　然而，使用页面输出缓存并不会使你的应用程序更有效率，但它能通过下游缓存技术缓存文档从而潜在地降低服务器的负载。当然，这只能是异步内容；一旦实施下游缓存，你将无法看到任何请求，也不能实现身份认证来防止对它的存取。
<br/>
<br/>技巧&#160;8——运行&#160;IIS&#160;6.0&#160;(如果仅用于内核缓存)
<br/>
<br/>　　如果你不运行&#160;IIS&#160;6.O（Windows&#160;Server&#160;2003），那么你将得不到微软&#160;Web&#160;服务器中一些重大的性能改进。在技巧&#160;7&#160;中，我谈到了输出缓存。在&#160;IIS&#160;5.0&#160;中，请求到达&#160;IIS，然后到达&#160;ASP.NET。当使用缓存时，ASP.NET&#160;中的&#160;HttpModule&#160;接受该请求，并从该缓存中返回内容。
<br/>　　如果你用&#160;IIS&#160;6.0，有一些巧妙的特性叫内核缓存，它不需要将任何代码改成&#160;ASP.NET。当&#160;ASP.NET对请求进行缓存处理，IIS&#160;内核缓存便接收一份缓存数据的拷贝。当请求来自网络驱动器，内核一级的驱动程序（没有到用户模式的上下文转换）接收该请求，如果缓存，则直接用缓存数据响应并完成执行。这意味着当你使用&#160;IIS&#160;内核模式缓存和&#160;ASP.NET&#160;缓存时，你将看到无法置信的性能结果。在开发&#160;Visual&#160;Studio&#160;2005&#160;的&#160;ASP.NET&#160;期间，我是负责&#160;ASP.NET&#160;性能的程序经理。开发人员的工作做的真是棒极了，而我基本上每天都在看报告。内核模式缓存结果总是最有趣的。典型的情况是请求/响应往往使网络饱和，但&#160;IIS&#160;的运行仅占&#160;CPU&#160;的百分之五。真令人惊异！当然使用&#160;IIS&#160;6.O&#160;有其它一些原因，但内核模式缓存是显而易见的理由。
<br/>
<br/>技巧&#160;9——使用&#160;Gzip&#160;压缩
<br/>
<br/>　　虽然使用&#160;gzip&#160;压缩不是一个必须的服务器性能技巧（因为你可能看到&#160;CUP&#160;的使用率上升了），但它能降低服务器发送字节的数量。从而感觉页面更快，而且减少带宽的占用。其压缩的效果好坏取决于所发送的数据以及客户端浏览器是否支持这种压缩（IIS&#160;只会将数据发送到支持&#160;gzip&#160;的浏览器，比如：IE&#160;6.0&#160;和&#160;Firefox），从而使服务器可以在每秒钟里处理更多的请求。事实上，只要你降低返回数据的数量，便能提高每秒所处理的请求数。
<br/>　　有一个好消息是&#160;gzip&#160;压缩是&#160;IIS&#160;6.0&#160;的内建特性，并且比它在&#160;IIS&#160;5.0&#160;中使用的效果更好。但是，要想在&#160;IIS&#160;6.0&#160;中启用&#160;gzip&#160;压缩可能没那么方便，IIS&#160;的属性对话框里找不到设置它的地方。IIS&#160;团队将卓越的&#160;gzip&#160;压缩能力内建在服务器中，但忽视了建立一个启用压缩特性的管理用户界面。要想启用&#160;gzip&#160;压缩机制，你必须深入到&#160;IIS&#160;的&#160;XML&#160;配置设置内部（必须对之相当熟悉才能配置）。顺便提一下，在此感谢&#160;OrcsWeb&#160;的&#160;Scott&#160;Forsyth&#160;帮我解决了在&#160;OrcsWeb&#160;数个&#160;www.asp.net&#160;服务器上的这个问题。
<br/>　　与其在本文中包含整个过程，还不如阅读&#160;Brad&#160;Wilson&#160;在&#160;IIS6&#160;Compression&#160;上的文章。微软知识库也有一篇关于为ASPX启用压缩特性的文章：Enable&#160;ASPX&#160;Compression&#160;in&#160;IIS。但是，还必须注意一点，动态压缩与内核缓存由于某些实现细节的原因，其在&#160;IIS&#160;6.0&#160;中是相互排斥的。
<br/>
<br/>技巧&#160;10——服务器控件的可视状态
<br/>
<br/>　　可视状态（View&#160;State）对于&#160;ASP.NET&#160;来说是个奇特的名字，它在所产生的页面中隐藏输入域以存储某些状态数据。当页面被发回服务器，该服务器能解析，检查其有效性并将这个状态数据应用到页面的控件树中。可视状态是一种非常强大的能力，因为它允许状态被客户端持续化并且它不需要cookies&#160;或&#160;服务器内存来存储该状态。许多&#160;ASP.NET&#160;服务器控件使用可视状态来持续化与页面元素交互期间所作的设置，例如，对数据进行分页时保存当前页显示页。
<br/>　　然而，使用可视状态有许多不利之处，首先，不论是在请求的时候还是提供服务的时候，它都增加造成整个页面的负担。当序列化或反序列化被返回服务器的可视状态数据时还产生一些附加的开销。最终可视状态会增加服务器的内存分配。
<br/>　　最著名的服务器控件要数&#160;DataGrid&#160;了，使用可视状态有过之而无不及，即便是在不需要使用的时候也是如此。ViewState&#160;属性默认是启用的，但如果你不需要它，可以在页面控件级或页面级关闭它。在某个控件中，只要将&#160;EnableViewState&#160;设置为&#160;false，或者在页面里使用如下全局设置：
<br/>
<br/>&lt;%@&#160;Page&#160;EnableViewState=&quot;false&quot;&#160;%&gt;
<br/>　　如果在某页面中不进行回发，或每次请求页面时总是重新产生控件，那么你应该在页面级禁用可视状态。
<br/>
<br/>结论
<br/>
<br/>　　我已经向你提供了一些我认为有用的编写高性能&#160;ASP.NET&#160;应用程序的技巧。正如我在本文开头时所讲的那样，这是一些很初级的指南，而不是&#160;ASP.NET&#160;性能方面的最终定论。（更多有关改进&#160;ASP.NET&#160;应用程序性能方面的信息请参见：Improving&#160;ASP.NET&#160;Performance.）只有通过自己的经验方能找到最佳途径来解决具体的性能问题。不管怎样，在你解决问题的过程中，这些技巧多少会对你有所裨益的。在软件开发过程中，每一个应用都有其独特的一面，没有什么东西是绝对的。
<br/>
<br/>——常见的性能神话
<br/>
<br/>　　最常见的神话之一是&#160;C#&#160;代码比&#160;Visual&#160;Basic&#160;代码快。这样的说法是站不住脚的，虽然在&#160;Visual&#160;Basic&#160;中存在一些&#160;C#&#160;没有的性能阻碍行为，比如显式地声明类型。但是如果遵循良好的编程实践，没有理由说明&#160;Visual&#160;Basic&#160;和&#160;C#&#160;代码不能以几乎同样的性能执行。简单说来，相同的代码产生相同的结果。
<br/>　　另一个神话是后台代码比内联代码快，这是绝对不成立的。性能与你的&#160;ASP.NET&#160;应用程序代码在哪没有什么关系，无论是后台代码文件还是内联在&#160;ASP.NET&#160;页面。有时我更喜欢使用内联代码，因为变更不会产生后台代码那样的更新成本。例如，使用后台代码必须更新整个后台&#160;DLL，那时一个可能引起惊慌的主张。
<br/>　　第三个神话是组件比页面要快。这在经典的&#160;ASP&#160;中是存在的，因为编译的&#160;COM&#160;服务器要比&#160;VBScript&#160;快得多。但是对于页面和组件都是类的&#160;ASP.NET&#160;来说则不然。不论你的代码是以后台代码形式内联在页面，还是分离的组件，所产生的性能差别不大。只是这种组织形式能更好地从逻辑上对功能进行分组，在性能上没有差别。
<br/>　　我想澄清的最后一个神话是用&#160;Web&#160;服务来实现两个应用程序之间各个功能。Web&#160;服务应该被用于连接异构系统或提供系统功能及行为的远程访问。不应该将它用于两个相同系统的内部连接。虽然使用起来很容易，但有很多其它更好的可选方法。最糟的事情莫过于将&#160;Web&#160;服务用于相同服务器上&#160;ASP&#160;和&#160;ASP.NET&#160;应用程序之间的通讯，我已经不厌其烦地对之进行了说明。
<br/>
<br/>
<br/>&#160;
<br/>&#160;作者简介
<br/>　　Rob&#160;Howard&#160;是&#160;Telligent&#160;Systems&#160;创建者，擅长于高性能&#160;Web&#160;应用以及知识管理和协作系统。此前&#160;Rob&#160;受雇于微软，协助设计了&#160;ASP.NET&#160;1.0，1.1&#160;和&#160;2.0。你可以通过&#160;rhoward@telligentsystems.com&#160;与&#160;Rob&#160;联系。
<br/>　&#160;
<br/><img src ="http://www.cnblogs.com/tangdh/aggbug/101785.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/42123/" target="_blank">[新闻]Google 10周年大事记</a>]]></description></item></channel></rss>