<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[maxthon的net学习地带]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[maxthon的net学习地带]]></description>
<link>http://hi.baidu.com/maxthon1983</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[.net中上传视频并将各种视频文件转换成.flv格式]]></title>
        <link><![CDATA[http://hi.baidu.com/maxthon1983/blog/item/51561412b7cb5a56f819b89e.html]]></link>
        <description><![CDATA[
		
		首先，我们部署一下文件夹.在工程的目录下新建几个文件夹如下图：<br>
<img border="0" src="http://bbs.51aspx.com/upload/auto/2_080227061102086.gif"><br>
UpFiles文件夹是要保存你上传的文件，PlayFiles文件夹是用于你转换后保存的文件（用于网上播放）<br>
ImgFile文件夹是保存截取视频文件的图片，然后那两个mencoder和ffmpeg文件夹是视频转换工具.此视频转换也<br>
可叫做mencoder+ffmpeg视频转换.<br>
首先，在配置文件中给这些文件夹进行路径的配置.如下<br>
<div class="msgheader">
<div class="right"> </div>
<strong>CODE:</strong></div>
<div class="msgborder">&lt;appSettings&gt;<br>
&lt;!--工具文件夹--&gt;<br>
&lt;add key=&quot;ffmpeg&quot; value=&quot;ffmpeg/ffmpeg.exe&quot;/&gt;<br>
&lt;add key=&quot;mencoder&quot; value=&quot;mencoder/mencoder.exe&quot;/&gt;<br>
&lt;add key=&quot;mplayer&quot; value=&quot;mencoder/mplayer.exe&quot;/&gt;<br>
&lt;!--上传文件的路径--&gt;<br>
&lt;add key=&quot;upfile&quot; value=&quot;UpFiles&quot;/&gt;<br>
&lt;!--上专文件图片路径--&gt;<br>
&lt;add key=&quot;imgfile&quot; value=&quot;ImgFile&quot;/&gt;<br>
&lt;!--上传文件图片大小--&gt;<br>
&lt;add key=&quot;CatchFlvImgSize&quot; value=&quot;240x180&quot;/&gt;<br>
&lt;add key=&quot;widthSize&quot; value=&quot;400&quot;/&gt;<br>
&lt;add key=&quot;heightSize&quot; value=&quot;350&quot;/&gt;<br>
&lt;!--转换后文件路径--&gt;<br>
&lt;add key=&quot;playfile&quot; value=&quot;PlayFiles&quot;/&gt;<br>
&lt;/appSettings&gt;</div>
<br>
<br>
在上传.ASPX页面中<br>
<br>
<div class="msgheader">
<div class="right"><strong>CODE:</strong></div>
</div>
<div class="msgborder">标题：&lt;asp:TextBox ID=&quot;txtTitle&quot; runat=&quot;server&quot; Width=&quot;358px&quot;&gt;&lt;/asp:TextBox&gt;<br>
&lt;asp:RequiredFieldValidator ID=&quot;RequiredFieldValidator2&quot; runat=&quot;server&quot; ControlToValidate=&quot;txtTitle&quot;<br>
ErrorMessage=&quot;标题不为空&quot;&gt;&lt;/asp:RequiredFieldValidator&gt;<br>
&lt;br /&gt;<br>
&lt;asp:FileUpload ID=&quot;FileUpload1&quot; runat=&quot;server&quot; Width=&quot;339px&quot; /&gt;<br>
&lt;asp:Button ID=&quot;btnUpload&quot; runat=&quot;server&quot; OnClick=&quot;btnUpload_Click&quot; Text=&quot;上传视频&quot; Width=&quot;70px&quot; /&gt;<br>
文件类型&lt;span style=&quot;color:Red;&quot;&gt;(.asf|.flv|.avi|.mpg|.3gp|.mov|.wmv|.rm|.rmvb)&lt;/span&gt;<br>
&lt;asp:RegularExpressionValidator ID=&quot;imagePathValidator&quot; runat=&quot;server&quot; ErrorMessage=&quot;文件类型不正确&quot;<br>
ValidationGroup=&quot;vgValidation&quot; Display=&quot;Dynamic&quot; ValidationExpression=&quot;^[a-zA-Z]:(\\.+)(.asf|.flv|.avi|.mpg|.3gp|.mov|.wmv|.rm|.rmvb)$&quot;<br>
ControlToValidate=&quot;FileUpload1&quot;&gt;<br>
&lt;/asp:RegularExpressionValidator&gt;<br>
&lt;asp:RequiredFieldValidator ID=&quot;RequiredFieldValidator1&quot; runat=&quot;server&quot; ControlToValidate=&quot;FileUpload1&quot;<br>
ErrorMessage=&quot;文件不为空&quot;&gt;&lt;/asp:RequiredFieldValidator&gt;&lt;/div&gt;<br>
&lt;div style=&quot; height:0px; border-top:solid 1px red; font-size:0px;&quot;&gt;&lt;/div&gt;<br>
&lt;div&gt;上传列表.&lt;/div&gt;</div>
<br>
<br>
程序工作的原理是：视频先上传上去，然后跟着就是开始转换.<br>
所以.在CS 文件中有<br>
这里为了方便我是用sqlDatasource数据控件做数据的操作.<br>
<br>
<div class="msgheader">
<div class="right"><strong>CODE:</strong></div>
</div>
<div class="msgborder">using System;<br>
using System.Data;<br>
using System.Configuration;<br>
using System.Web;<br>
using System.Web.Security;<br>
using System.Web.UI;<br>
using System.Web.UI.WebControls;<br>
using System.Web.UI.WebControls.WebParts;<br>
using System.Web.UI.HtmlControls;<br>
public partial class _Default : System.Web.UI.Page <br>
{<br>
// 扩展名定义<br>
string[] strArrFfmpeg = new string[] {&quot;asf&quot;,&quot;avi&quot;,&quot;mpg&quot;,&quot;3gp&quot;,&quot;mov&quot; };<br>
string[] strArrMencoder = new string[] {&quot;wmv&quot;,&quot;rm&quot;,&quot;rmvb&quot; };<br>
protected void Page_Load(object sender, EventArgs e)<br>
{<br>
}<br>
//<br>
protected void btnUpload_Click(object sender, EventArgs e)<br>
{<br>
string upFileName = &quot;&quot;;<br>
if (this.FileUpload1.HasFile)<br>
{<br>
string fileName = PublicMethod.GetFileName(this.FileUpload1.FileName);// GetFileName();<br>
if ((string)Session[&quot;file&quot;] == fileName)<br>
{<br>
return;<br>
}<br>
upFileName = Server.MapPath(PublicMethod.upFile + fileName);<br>
this.FileUpload1.SaveAs(upFileName);<br>
string saveName = DateTime.Now.ToString(&quot;yyyyMMddHHmmssffff&quot;) ;<br>
string playFile = Server.MapPath(PublicMethod.playFile + saveName);<br>
string imgFile = Server.MapPath(PublicMethod.imgFile + saveName);<br>
//System.IO.File.Copy(Server.MapPath(PublicMethod.playFile + &quot;00000002.jpg&quot;), Server.MapPath(PublicMethod.imgFile+&quot;aa.jpg&quot;));<br>
PublicMethod pm = new PublicMethod();<br>
string m_strExtension = PublicMethod.GetExtension(this.FileUpload1.PostedFile.FileName).ToLower();<br>
if (m_strExtension == &quot;flv&quot;)<br>
{//直接拷贝到播放文件夹下<br>
System.IO.File.Copy(upFileName, playFile+&quot;.flv&quot;);<br>
pm.CatchImg(upFileName, imgFile);<br>
}<br>
string Extension = CheckExtension(m_strExtension);<br>
if (Extension == &quot;ffmpeg&quot;)<br>
{<br>
　　pm.ChangeFilePhy(upFileName, playFile, imgFile);<br>
}<br>
else if (Extension == &quot;mencoder&quot;)<br>
{<br>
pm.MChangeFilePhy(upFileName, playFile, imgFile);<br>
}<br>
InsertData(this.txtTitle.Text, fileName,saveName);<br>
Session[&quot;file&quot;] = fileName;<br>
}<br>
}<br>
//<br>
private string CheckExtension(string extension)<br>
{<br>
string m_strReturn = &quot;&quot;;<br>
foreach (string var in this.strArrFfmpeg)<br>
{<br>
if (var == extension)<br>
{<br>
m_strReturn = &quot;ffmpeg&quot;; break;<br>
}<br>
}<br>
if (m_strReturn == &quot;&quot;)<br>
{<br>
foreach (string var in strArrMencoder)<br>
{<br>
if (var == extension)<br>
{<br>
m_strReturn = &quot;mencoder&quot;; break;<br>
}<br>
}<br>
}<br>
return m_strReturn;<br>
}<br>
#region 插入数据到数据库中<br>
private void InsertData(string MediaName,string fileName,string saveName)<br>
{<br>
//string name=fileName.Substring(0, fileName.LastIndexOf('.'));<br>
string imgName = saveName + &quot;.jpg&quot;;//图片文件名;<br>
string playName = saveName + &quot;.flv&quot;;<br>
string sqlstr = &quot;insert into Media(FMediaName,FMediaUpPath,FMediaPlayPath,FMediaImgPath) values(@MName,@MUppath,@MPlaypath,@MImgpath)&quot;;<br>
//string constr = ConfigurationManager.ConnectionStrings[&quot;sqlcon&quot;].ToString();<br>
SqlDataSource1.InsertCommand = sqlstr;<br>
SqlDataSource1.InsertCommandType = SqlDataSourceCommandType.Text;// CommandType.Text;<br>
SqlDataSource1.InsertParameters.Add(&quot;MName&quot;,MediaName);<br>
SqlDataSource1.InsertParameters.Add(&quot;MUppath&quot;,PublicMethod.upFile+fileName);<br>
SqlDataSource1.InsertParameters.Add(&quot;MPlaypath&quot;,PublicMethod.playFile+playName);<br>
SqlDataSource1.InsertParameters.Add(&quot;MImgpath&quot;,PublicMethod.imgFile+imgName);<br>
SqlDataSource1.Insert();<br>
}<br>
#endregion<br>
}<br>
<strong>PublicMethod类如下：</strong><br>
在这个类里面主要是做文件转换和保存，在转换文件的时候CPU的利用率可以达100%.<br>
它的主要原理是另起一个进程在转换的时候你会发现你的进程里多了一个.<br>
using System;<br>
using System.Configuration;<br>
/// &lt;summary&gt;<br>
/// Summary description for PublicMethod<br>
/// &lt;/summary&gt;<br>
public class PublicMethod:System.Web.UI.Page<br>
{<br>
public PublicMethod()<br>
{<br>
}<br>
//文件路径<br>
public static string ffmpegtool = ConfigurationManager.AppSettings[&quot;ffmpeg&quot;];<br>
public static string mencodertool = ConfigurationManager.AppSettings[&quot;mencoder&quot;];<br>
public static string mplayertool = ConfigurationManager.AppSettings[&quot;mplayer&quot;];<br>
public static string upFile = ConfigurationManager.AppSettings[&quot;upfile&quot;] + &quot;/&quot;;<br>
public static string imgFile = ConfigurationManager.AppSettings[&quot;imgfile&quot;] + &quot;/&quot;;<br>
public static string playFile = ConfigurationManager.AppSettings[&quot;playfile&quot;] + &quot;/&quot;;<br>
//文件图片大小<br>
public static string sizeOfImg = ConfigurationManager.AppSettings[&quot;CatchFlvImgSize&quot;];<br>
//文件大小<br>
public static string widthOfFile = ConfigurationManager.AppSettings[&quot;widthSize&quot;];<br>
public static string heightOfFile = ConfigurationManager.AppSettings[&quot;heightSize&quot;];<br>
// // //获取文件的名字<br>
public static string GetFileName(string fileName)<br>
{<br>
int i = fileName.LastIndexOf(&quot;\\&quot;) + 1;<br>
string Name = fileName.Substring(i);<br>
return Name;<br>
}<br>
//获取文件扩展名<br>
public static string GetExtension(string fileName)<br>
{<br>
int i = fileName.LastIndexOf(&quot;.&quot;)+1;<br>
string Name = fileName.Substring(i);<br>
return Name;<br>
}<br>
//<br>
#region //运行FFMpeg的视频解码，(这里是绝对路径)<br>
/// &lt;summary&gt;<br>
/// 转换文件并保存在指定文件夹下面(这里是绝对路径)<br>
/// &lt;/summary&gt;<br>
/// &lt;param name=&quot;fileName&quot;&gt;上传视频文件的路径（原文件）&lt;/param&gt;<br>
/// &lt;param name=&quot;playFile&quot;&gt;转换后的文件的路径（网络播放文件）&lt;/param&gt;<br>
/// &lt;param name=&quot;imgFile&quot;&gt;从视频文件中抓取的图片路径&lt;/param&gt;<br>
/// &lt;returns&gt;成功:返回图片虚拟地址; 失败:返回空字符串&lt;/returns&gt;<br>
public string ChangeFilePhy(string fileName, string playFile, string imgFile)<br>
{<br>
//取得ffmpeg.exe的路径,路径配置在Web.Config中,如:&lt;add key=&quot;ffmpeg&quot; value=&quot;E:\51aspx\ffmpeg.exe&quot; /&gt; <br>
string ffmpeg = Server.MapPath(PublicMethod.ffmpegtool);<br>
if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(fileName)))<br>
{<br>
return &quot;&quot;;<br>
}<br>
//获得图片和(.flv)文件相对路径/最后存储到数据库的路径,如:/Web/User1/00001.jpg <br>
string flv_file = System.IO.Path.ChangeExtension(playFile, &quot;.flv&quot;);<br>
<br>
//截图的尺寸大小,配置在Web.Config中,如:&lt;add key=&quot;CatchFlvImgSize&quot; value=&quot;240x180&quot; /&gt; <br>
string FlvImgSize = PublicMethod.sizeOfImg;<br>
System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);<br>
FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;<br>
FilestartInfo.Arguments = &quot; -i &quot; + fileName + &quot; -ab 56 -ar 22050 -b 500 -r 15 -s &quot; + widthOfFile + &quot;x&quot; + heightOfFile + &quot; &quot; + flv_file;<br>
//ImgstartInfo.Arguments = &quot; -i &quot; + fileName + &quot; -y -f image2 -t 0.05 -s &quot; + FlvImgSize + &quot; &quot; + flv_img;<br>
try<br>
{<br>
//转换<br>
System.Diagnostics.Process.Start(FilestartInfo);<br>
//截图<br>
CatchImg(fileName, imgFile);<br>
//System.Diagnostics.Process.Start(ImgstartInfo);<br>
}<br>
catch<br>
{<br>
return &quot;&quot;;<br>
}<br>
//<br>
return &quot;&quot;;<br>
}<br>
//<br>
public string CatchImg(string fileName,string imgFile)<br>
{<br>
//<br>
string ffmpeg = Server.MapPath(PublicMethod.ffmpegtool);<br>
//<br>
string flv_img =imgFile+&quot;.jpg&quot;;<br>
//<br>
string FlvImgSize = PublicMethod.sizeOfImg;<br>
//<br>
System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);<br>
ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;<br>
//<br>
ImgstartInfo.Arguments = &quot; -i &quot; + fileName + &quot; -y -f image2 -ss 2 -vframes 1 -s &quot; + FlvImgSize + &quot; &quot; + flv_img;<br>
try<br>
{<br>
System.Diagnostics.Process.Start(ImgstartInfo);<br>
}<br>
catch<br>
{<br>
return &quot;&quot;;<br>
}<br>
//<br>
if (System.IO.File.Exists(flv_img))<br>
{<br>
return flv_img;<br>
}<br>
return &quot;&quot;;<br>
}<br>
#endregion<br>
//<br>
#region //运行FFMpeg的视频解码，(这里是(虚拟)相对路径)<br>
/// &lt;summary&gt;<br>
/// 转换文件并保存在指定文件夹下面(这里是相对路径)<br>
/// &lt;/summary&gt;<br>
/// &lt;param name=&quot;fileName&quot;&gt;上传视频文件的路径（原文件）&lt;/param&gt;<br>
/// &lt;param name=&quot;playFile&quot;&gt;转换后的文件的路径（网络播放文件）&lt;/param&gt;<br>
/// &lt;param name=&quot;imgFile&quot;&gt;从视频文件中抓取的图片路径&lt;/param&gt;<br>
/// &lt;returns&gt;成功:返回图片虚拟地址; 失败:返回空字符串&lt;/returns&gt;<br>
public string ChangeFileVir(string fileName, string playFile, string imgFile)<br>
{<br>
//取得ffmpeg.exe的路径,路径配置在Web.Config中,如:&lt;add key=&quot;ffmpeg&quot; value=&quot;E:\51aspx\ffmpeg.exe&quot; /&gt; <br>
string ffmpeg = Server.MapPath(PublicMethod.ffmpegtool);<br>
if ((!System.IO.File.Exists(ffmpeg)) || (!System.IO.File.Exists(fileName)))<br>
{<br>
return &quot;&quot;;<br>
}<br>
//获得图片和(.flv)文件相对路径/最后存储到数据库的路径,如:/Web/User1/00001.jpg <br>
string flv_img = System.IO.Path.ChangeExtension(Server.MapPath(imgFile), &quot;.jpg&quot;);<br>
string flv_file = System.IO.Path.ChangeExtension(Server.MapPath(playFile), &quot;.flv&quot;);<br>
<br>
//截图的尺寸大小,配置在Web.Config中,如:&lt;add key=&quot;CatchFlvImgSize&quot; value=&quot;240x180&quot; /&gt; <br>
string FlvImgSize = PublicMethod.sizeOfImg;<br>
System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);<br>
System.Diagnostics.ProcessStartInfo ImgstartInfo = new System.Diagnostics.ProcessStartInfo(ffmpeg);<br>
FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;<br>
ImgstartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;<br>
//此处组合成ffmpeg.exe文件需要的参数即可,此处命令在ffmpeg 0.4.9调试通过 <br>
//ffmpeg -i F:\01.wmv -ab 56 -ar 22050 -b 500 -r 15 -s 320x240 f:\test.flv<br>
FilestartInfo.Arguments = &quot; -i &quot; + fileName + &quot; -ab 56 -ar 22050 -b 500 -r 15 -s &quot; + widthOfFile + &quot;x&quot; + heightOfFile + &quot; &quot; + flv_file;<br>
ImgstartInfo.Arguments = &quot; -i &quot; + fileName + &quot; -y -f image2 -t 0.001 -s &quot; + FlvImgSize + &quot; &quot; + flv_img;<br>
try<br>
{<br>
System.Diagnostics.Process.Start(FilestartInfo);<br>
System.Diagnostics.Process.Start(ImgstartInfo);<br>
}<br>
catch<br>
{<br>
return &quot;&quot;;<br>
}<br>
/**/<br>
///注意:图片截取成功后,数据由内存缓存写到磁盘需要时间较长,大概在3,4秒甚至更长; <br>
///这儿需要延时后再检测,我服务器延时8秒,即如果超过8秒图片仍不存在,认为截图失败; <br>
///此处略去延时代码.如有那位知道如何捕捉ffmpeg.exe截图失败消息,请告知,先谢过! <br>
if (System.IO.File.Exists(flv_img))<br>
{<br>
return flv_img;<br>
}<br>
return &quot;&quot;;<br>
}<br>
#endregion<br>
#region //运行mencoder的视频解码器转换(这里是(绝对路径))<br>
public string MChangeFilePhy(string vFileName, string playFile, string imgFile)<br>
{<br>
string tool = Server.MapPath(PublicMethod.mencodertool);<br>
//string mplaytool = Server.MapPath(PublicMethod.ffmpegtool);<br>
if ((!System.IO.File.Exists(tool)) || (!System.IO.File.Exists(vFileName)))<br>
{<br>
return &quot;&quot;;<br>
}<br>
string flv_file = System.IO.Path.ChangeExtension(playFile, &quot;.flv&quot;);<br>
<br>
//截图的尺寸大小,配置在Web.Config中,如:&lt;add key=&quot;CatchFlvImgSize&quot; value=&quot;240x180&quot; /&gt; <br>
string FlvImgSize = PublicMethod.sizeOfImg;<br>
System.Diagnostics.ProcessStartInfo FilestartInfo = new System.Diagnostics.ProcessStartInfo(tool);<br>
FilestartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;<br>
FilestartInfo.Arguments = &quot; &quot; + vFileName + &quot; -o &quot; + flv_file + &quot; -of lavf -lavfopts<br>
i_certify_that_my_video_stream_does_not_use_b_frames -oac mp3lame -lameopts abr:br=56 -ovc lavc <br>
-lavcopts vcodec=flv:vbitrate=200:mbd=2:mv0:trell:v4mv:cbp:last_pred=1:dia=-1:cmp=0:vb_strategy=1 <br>
-vf scale=&quot; + widthOfFile + &quot;:&quot; +heightOfFile + &quot; -ofps 12 -srate 22050&quot;;<br>
try<br>
{<br>
System.Diagnostics.Process.Start(FilestartInfo);<br>
CatchImg(flv_file, imgFile);<br>
}<br>
catch<br>
{<br>
return &quot;&quot;;<br>
} <br>
//<br>
return &quot;&quot;;<br>
}<br>
#endregion<br>
}</div> <a href="http://hi.baidu.com/maxthon1983/blog/item/51561412b7cb5a56f819b89e.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/maxthon1983/blog/category/asp%2Enet">asp.net</a>&nbsp;<a href="http://hi.baidu.com/maxthon1983/blog/item/51561412b7cb5a56f819b89e.html#comment">查看评论</a>]]></description>
        <pubDate>2009-02-18  13:21</pubDate>
        <category><![CDATA[asp.net]]></category>
        <author><![CDATA[syau]]></author>
		<guid>http://hi.baidu.com/maxthon1983/blog/item/51561412b7cb5a56f819b89e.html</guid>
</item>

<item>
        <title><![CDATA[WebChart 部分属性说明]]></title>
        <link><![CDATA[http://hi.baidu.com/maxthon1983/blog/item/d8856b23ea6aae549822eda2.html]]></link>
        <description><![CDATA[
		
		<p><span>曲线图：</span></p>
<p style="text-align: left" align="left">&nbsp;&nbsp;  <span style="font-size: 9pt; "> <span style="color: teal">ChartPointCollection</span> d = <span style="color: blue">new</span> <span style="color: teal">ChartPointCollection</span>();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  </span></p>
<p><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: teal">Chart</span> c = <span style="color: blue">new</span> <span style="color: teal">LineChart</span>(d,<span style="color: teal">Color</span>.Blue);</span></p>
<p><span>柱状图：</span></p>
<p style="text-align: left" align="left">&nbsp;&nbsp;  <span style="font-size: 9pt; color: teal; ">Chart</span><span style="font-size: 9pt; "> c = <span style="color: blue">new</span> <span style="color: teal">StackedColumnChart</span>();</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;<span style="color: teal">ChartPointCollection</span> d;</span></p>
<p style="text-indent: 18pt"><span style="font-size: 9pt; ">d = c.Data;</span></p>
<p><span>饼状图：</span></p>
<p>&nbsp;&nbsp;  <span style="font-size: 9pt; color: teal; ">ChartPointCollection</span><span style="font-size: 9pt; "> data = <span style="color: blue">new</span> <span style="color: teal">ChartPointCollection</span>();</span></p>
<p style="text-indent: 18pt"><span style="font-size: 9pt; color: teal; ">PieChart</span><span style="font-size: 9pt; "> c = <span style="color: blue">new</span> <span style="color: teal">PieChart</span>(data, <span style="color: teal">Color</span>.Blue);</span></p>
<p style="text-indent: 18pt"><span style="font-size: 9pt; ">c.Colors = <span style="color: blue">new</span> <span style="color: teal">Color</span>[] { <span style="color: teal">Color</span>.Red, <span style="color: teal">Color</span>.Blue, <span style="color: teal">Color</span>.Yellow, <span style="color: teal">Color</span>.Cyan, <span style="color: teal">Color</span>.AntiqueWhite, <span style="color: teal">Color</span>.RosyBrown };</span></p>
<p><span>添加数据：</span></p>
<p style="text-align: left" align="left"> <span style="font-size: 9pt; ">data.Add(<span style="color: blue">new</span> <span style="color: teal">ChartPoint</span>(<span style="color: maroon">&quot;Ene&quot;</span>, 40));</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; "> data.Add(<span style="color: blue">new</span> <span style="color: teal">ChartPoint</span>(<span style="color: maroon">&quot;Feb&quot;</span>, 40));</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; "> data.Add(<span style="color: blue">new</span> <span style="color: teal">ChartPoint</span>(<span style="color: maroon">&quot;Mar&quot;</span>, 30));</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; "> data.Add(<span style="color: blue">new</span> <span style="color: teal">ChartPoint</span>(<span style="color: maroon">&quot;Abr&quot;</span>, 20));</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; "> data.Add(<span style="color: blue">new</span> <span style="color: teal">ChartPoint</span>(<span style="color: maroon">&quot;May&quot;</span>, 10));</span></p>
<p><span style="font-size: 9pt; "> data.Add(<span style="color: blue">new</span> <span style="color: teal">ChartPoint</span>(<span style="color: maroon">&quot;Jun&quot;</span>, 25));</span></p>
<p><span style="font-size: 9pt; ">属性说明：</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">////</span></span><span style="font-size: 9pt; color: green; ">绘制箭头</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: teal">AdjustableArrowCap</span> MyArrow = <span style="color: blue">new</span> <span style="color: teal">AdjustableArrowCap</span>(4, 4, <span style="color: blue">true</span>);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   c.Line.CustomEndCap = MyArrow;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  c.Line.EndCap = <span style="color: teal">LineCap</span>.Custom;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">////</span></span><span style="font-size: 9pt; color: green; ">线段颜色</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  c.Line.Color = <span style="color: teal">Color</span>.Red;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: gray">///</span></span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  c.ShowLineMarkers = <span style="color: blue">true</span>;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  c.LineMarker = <span style="color: blue">new</span> <span style="color: teal">CircleLineMarker</span>(2, c.Fill.Color, <span style="color: teal">Color</span>.Black);</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">/////</span></span><span style="font-size: 9pt; color: green; ">显示文字</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  c.DataLabels.Visible = <span style="color: blue">true</span>;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  c.DataLabels.NumberFormat = <span style="color: maroon">&quot;C&quot;</span>;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  c.DataLabels.ForeColor = <span style="color: teal">Color</span>.Black;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  c.Fill.Color = <span style="color: teal">Color</span>.Black;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: green">////</span></span><span style="font-size: 9pt; color: green; ">显示边侧说明</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  c.Legend = <span style="color: maroon">&quot;</span></span><span style="font-size: 9pt; color: maroon; ">浏览次数&quot;</span><span style="font-size: 9pt; ">;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  WebChart1.HasChartLegend = <span style="color: blue">true</span>;</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <span style="color: gray">///</span></span><span style="font-size: 9pt; color: green; ">将设置好的图像添加至图表</span></p>
<p style="text-align: left" align="left"><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  WebChart1.Charts.Add(c);</span></p>
<p><span style="font-size: 9pt; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  WebChart1.RedrawChart();</span></p> <a href="http://hi.baidu.com/maxthon1983/blog/item/d8856b23ea6aae549822eda2.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/maxthon1983/blog/category/asp%2Enet">asp.net</a>&nbsp;<a href="http://hi.baidu.com/maxthon1983/blog/item/d8856b23ea6aae549822eda2.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-07  13:58</pubDate>
        <category><![CDATA[asp.net]]></category>
        <author><![CDATA[syau]]></author>
		<guid>http://hi.baidu.com/maxthon1983/blog/item/d8856b23ea6aae549822eda2.html</guid>
</item>

<item>
        <title><![CDATA[ASP.Net面试题分享]]></title>
        <link><![CDATA[http://hi.baidu.com/maxthon1983/blog/item/f4f6bc23855f9f42ad34dece.html]]></link>
        <description><![CDATA[
		
		1. 简述 private、 protected、 public、 internal 修饰符的访问权限。 <br>
答 . private :  私有成员, 在类的内部才可以访问。 <br>
    protected : 保护成员，该类内部和继承类中可以访问。 <br>
    public :    公共成员，完全公开，没有访问限制。 <br>
    internal:  在同一命名空间内可以访问。 <br>
    protected internal: 成员只能从同一程序集内的派生类访问。 <br>
<br>
2 .列举ASP.NET 页面之间传递值的几种方式。 <br>
答. 1.使用QueryString,  如....?id=1; response. Redirect().... <br>
    2.使用Session变量 <br>
    3.使用Server.Transfer <br>
<br>
3. 一列数的规则如下: 1、1、2、3、5、8、13、21、34......  求第30位数是多少， 用递归算法实现。 <br>
答：public class MainClass <br>
    { <br>
        public static void Main()  <br>
        { <br>
            Console.WriteLine(Foo(30)); <br>
        } <br>
        public static int Foo(int i) <br>
        { <br>
            if (i &lt;= 0) <br>
                return 0; <br>
            else if(i &gt; 0 &amp;&amp; i &lt;= 2) <br>
                return 1; <br>
            else return Foo(i -1) + Foo(i - 2); <br>
        } <br>
    } <br>
<br>
4.C#中的委托是什么？事件是不是一种委托？ <br>
答 ：      <br>
委托可以把一个方法作为参数代入另一个方法。 <br>
委托可以理解为指向一个函数的引用。 <br>
是，是一种特殊的委托 <br>
<br>
5.override与重载的区别 <br>
答 ： <br>
override 与重载的区别。重载是方法的名称相同。参数或参数类型不同，进行多次重载以适应不同的需要 <br>
Override 是进行基类中函数的重写。为了适应需要。 <br>
<br>
6.如果在一个B/S结构的系统中需要传递变量值，但是又不能使用Session、Cookie、Application，您有几种方法进行处理？ <br>
答 ： <br>
this.Server.Transfer <br>
<br>
7.请编程遍历页面上所有TextBox控件并给它赋值为string.Empty？ <br>
答： <br>
      foreach (System.Windows.Forms.Control control in this.Controls) <br>
      { <br>
      if (control is System.Windows.Forms.TextBox) <br>
      { <br>
        System.Windows.Forms.TextBox tb = (System.Windows.Forms.TextBox)control ; <br>
        tb.Text = String.Empty ; <br>
      } <br>
      } <br>
<br>
8.请编程实现一个冒泡排序算法？ <br>
答： <br>
        int [] array = new int [*] ; <br>
      int temp = 0 ; <br>
      for (int i = 0 ; i &lt; array.Length - 1 ; i++) <br>
      { <br>
        for (int j = i + 1 ; j &lt; array.Length ; j++) <br>
        { <br>
          if (array[j] &lt; array[i]) <br>
            { <br>
              temp = array[i] ; <br>
              array[i] = array[j] ; <br>
              array[j] = temp ; <br>
            } <br>
        } <br>
      } <br>
<br>
9.描述一下C#中索引器的实现过程，是否只能根据数字进行索引？ <br>
答：不是。可以用任意类型。 <br>
<br>
10.求以下表达式的值，写出您想到的一种或几种实现方法： 1-2+3-4+……+m <br>
答： <br>
    int Num = this.TextBox1.Text.ToString() ; <br>
  int Sum = 0 ; <br>
  for (int i = 0 ; i &lt; Num + 1 ; i++) <br>
  { <br>
    if((i%2) == 1) <br>
    { <br>
      Sum += i ; <br>
    } <br>
    else <br>
    { <br>
      Sum = Sum  - I ; <br>
    } <br>
  } <br>
  System.Console.WriteLine(Sum.ToString()); <br>
  System.Console.ReadLine() ; <br>
<br>
11.用.net做B/S结构的系统，您是用几层结构来开发，每一层之间的关系以及为什么要这样分层？ <br>
答：一般为3层 <br>
        数据访问层，业务层，表示层。 <br>
        数据访问层对数据库进行增删查改。 <br>
        业务层一般分为二层，业务表观层实现与表示层的沟通，业务规则层实现用户密码的安全等。 <br>
        表示层为了与用户交互例如用户添加表单。 <br>
优点：  分工明确，条理清晰，易于调试，而且具有可扩展性。 <br>
缺点：  增加成本。 <br>
<br>
12.在下面的例子里 <br>
    using System; <br>
    class A <br>
    { <br>
          public A() <br>
          { <br>
                PrintFields(); <br>
          } <br>
          public virtual void PrintFields(){} <br>
      } <br>
      class B:A <br>
      { <br>
          int x=1; <br>
          int y; <br>
          public B() <br>
  { <br>
              y=-1; <br>
          } <br>
          public override void PrintFields() <br>
          { <br>
              Console.WriteLine(&quot;x={0},y={1}&quot;,x,y); <br>
          } <br>
当使用new B()创建B的实例时，产生什么输出？ <br>
答：X=1,Y=0;x= 1 y = -1 <br>
<br>
13.什么叫应用程序域？ <br>
答：应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。 <br>
<br>
14.CTS、CLS、CLR分别作何解释？ <br>
答：CTS：通用语言系统。CLS：通用语言规范。CLR：公共语言运行库。 <br>
<br>
15.什么是装箱和拆箱？ <br>
答：从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。 <br>
<br>
16.什么是受管制的代码？ <br>
答：unsafe：非托管代码。不经过CLR运行。 <br>
<br>
17.什么是强类型系统？ <br>
答：RTTI：类型识别系统。 <br>
<br>
18.net中读写数据库需要用到那些类？他们的作用？ <br>
答：DataSet:数据存储器。 <br>
    DataCommand:执行语句命令。 <br>
    DataAdapter:数据的集合，用语填充。 <br>
<br>
19.ASP.net的身份验证方式有哪些？分别是什么原理？ <br>
答：10。Windwos(默认)用IIS...From(窗体)用帐户....Passport(密钥) <br>
<br>
20.什么是Code-Behind技术？ <br>
答：代码后植。 <br>
<br>
21.在.net中，配件的意思是？ <br>
答：程序集。（中间语言，源数据，资源，装配清单） <br>
<br>
22.常用的调用WebService的方法有哪些？ <br>
答：1.使用WSDL.exe命令行工具。 <br>
    2.使用VS.NET中的Add Web Reference菜单选项 <br>
<br>
23..net Remoting 的工作原理是什么？ <br>
答：服务器端向客户端发送一个进程编号，一个程序域编号，以确定对象的位置。 <br>
<br>
24.在C＃中，string str = null 与 string str = &ldquo;&rdquo; 请尽量使用文字或图象说明其中的区别。 <br>
答：string str = null 是不给他分配内存空间,而string str = &quot;&quot; 给它分配长度为空字符串的内存空间。 <br>
<br>
25.请详述在dotnet中类(class)与结构(struct)的异同？ <br>
答：Class可以被实例化,属于引用类型,是分配在内存的堆上的,Struct属于值类型,是分配在内存的栈上的. <br>
<br>
26.根据委托(delegate)的知识，请完成以下用户控件中代码片段的填写： <br>
namespace test <br>
{ <br>
public delegate void OnDBOperate(); <br>
public class UserControlBase : System.Windows.Forms.UserControl <br>
{ <br>
public event OnDBOperate OnNew; <br>
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgs e) <br>
{ <br>
if(e.Button.Equals(BtnNew)) <br>
{ <br>
//请在以下补齐代码用来调用OnDBOperate委托签名的OnNew事件。 <br>
} <br>
} <br>
} <br>
答：if( OnNew != null )  <br>
    OnNew( this, e ); <br>
<br>
27.分析以下代码，完成填空 <br>
string strTmp = &quot;abcdefg某某某&quot;; <br>
int i= System.Text.Encoding.Default.GetBytes(strTmp).Length; <br>
int j= strTmp.Length; <br>
以上代码执行完后，i= j= <br>
答：i=13,j=10 <br>
<br>
28.SQLSERVER服务器中，给定表 table1 中有两个字段 ID、LastUpdateDate，ID表示更新的事务号， LastUpdateDate表示更新时的服务器时间，请使用一句SQL语句获得最后更新的事务号 <br>
答：Select ID FROM table1 Where LastUpdateDate = (Select MAX(LastUpdateDate) FROM table1) <br>
<br>
29.根据线程安全的相关知识，分析以下代码，当调用test方法时i&gt;10时是否会引起死锁?并简要说明理由。 <br>
public void test(int i) <br>
{ <br>
  lock(this) <br>
{ <br>
  if (i&gt;10) <br>
  { <br>
    i--; <br>
    test(i); <br>
  } <br>
} <br>
} <br>
答：不会发生死锁，（但有一点int是按值传递的，所以每次改变的都只是一个副本，因此不会出现死锁。但如果把int换做一个object，那么死锁会发生） <br>
<br>
30.简要谈一下您对微软.NET 构架下remoting和webservice两项技术的理解以及实际中的应用。 <br>
答：WS主要是可利用HTTP，穿透防火墙。而Remoting可以利用TCP/IP，二进制传送提高效率。 <br>
<br>
<br>
31.公司要求开发一个继承System.Windows.Forms.ListView类的组件，要求达到以下的特殊功能：点击ListView各列列头时，能按照点击列的每行值进行重排视图中的所有行 (排序的方式如DataGrid相似)。根据您的知识，请简要谈一下您的思路 <br>
答：根据点击的列头,包该列的ID取出,按照该ID排序后,在给绑定到ListView中。 <br>
<br>
32.给定以下XML文件，完成算法流程图。 <br>
&lt;FileSystem&gt; <br>
&lt; DriverC &gt; <br>
&lt;Dir DirName=&rdquo;MSDOS622&rdquo;&gt; <br>
&lt;File FileName =&rdquo; Command.com&rdquo; &gt; &lt;/File&gt; <br>
&lt;/Dir&gt; <br>
&lt;File FileName =&rdquo;MSDOS.SYS&rdquo; &gt; &lt;/File&gt; <br>
&lt;File FileName =&rdquo; IO.SYS&rdquo; &gt; &lt;/File&gt; <br>
&lt;/DriverC&gt; <br>
&lt;/FileSystem&gt; <br>
请画出遍历所有文件名（FileName）的流程图(请使用递归算法)。 <br>
答： <br>
void FindFile( Directory d ) <br>
{ <br>
  FileOrFolders = d.GetFileOrFolders(); <br>
  foreach( FileOrFolder fof in FileOrFolders )  <br>
  { <br>
    if( fof is File )  <br>
    You Found a file; <br>
    else if ( fof is Directory )  <br>
    FindFile( fof ); <br>
    } <br>
} <br>
<br>
33.写出一条Sql语句：取出表A中第31到第40记录（SQLServer,以自动增长的ID作为主键,注意：ID可能不是连续的。 <br>
答：解1:  select top 10 * from A where id not in (select top 30 id from A) <br>
    解2:  select top 10 * from A where id &gt; (select max(id) from (select top 30 id from A )as A) <br>
<br>
34.面向对象的语言具有________性、_________性、________性 <br>
答：封装、继承、多态。 <br>
<br>
35.能用foreach遍历访问的对象需要实现 ________________接口或声明________________方法的类型。 <br>
答：IEnumerable 、 GetEnumerator。 <br>
<br>
36.GC是什么? 为什么要有GC? <br>
答：GC是垃圾收集器。程序员不用担心内存管理，因为垃圾收集器会自动进行管理。要请求垃圾收集，可以调用下面的方法之一： <br>
  System.gc() <br>
  Runtime.getRuntime().gc() <br>
<br>
37.String s = new String(&quot;xyz&quot;);创建了几个String Object? <br>
答：两个对象，一个是&ldquo;xyx&rdquo;,一个是指向&ldquo;xyx&rdquo;的引用对象s。 <br>
<br>
38.abstract class和interface有什么区别? <br>
答： <br>
声明方法的存在而不去实现它的类被叫做抽象类（abstract class），它用于要创建一个体现某些基本行为的类，并为该类声明方法，但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量，其类型是一个抽象类，并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。Abstract 类的子类为它们父类中的所有抽象方法提供实现，否则它们也是抽象类为。取而代之，在子类中实现该方法。知道其行为的其它类可以在类中实现这些方法。 <br>
接口（interface）是抽象类的变体。在接口中，所有方法都是抽象的。多继承性可通过实现这样的接口而获得。接口中的所有方法都是抽象的，没有一个有程序体。接口只可以定义static final成员变量。接口的实现与子类相似，除了该实现类不能从接口定义中继承行为。当类实现特殊接口时，它定义（即将程序体给予）所有这种接口的方法。然后，它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类，它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换，instanceof 运算符可以用来决定某对象的类是否实现了接口。 <br>
<br>
39.启动一个线程是用run()还是start()? <br>
答：启动一个线程是调用start()方法，使线程所代表的虚拟处理机处于可运行状态，这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 <br>
<br>
40.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? <br>
答：接口可以继承接口。抽象类可以实现(implements)接口，抽象类是否可继承实体类，但前提是实体类必须有明确的构造函数。 <br>
<br>
41.构造器Constructor是否可被override? <br>
答：构造器Constructor不能被继承，因此不能重写Overriding，但可以被重载Overloading。 <br>
<br>
42.是否可以继承String类? <br>
答：String类是final类故不可以继承。 <br> <a href="http://hi.baidu.com/maxthon1983/blog/item/f4f6bc23855f9f42ad34dece.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/maxthon1983/blog/category/asp%2Enet">asp.net</a>&nbsp;<a href="http://hi.baidu.com/maxthon1983/blog/item/f4f6bc23855f9f42ad34dece.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-07  13:24</pubDate>
        <category><![CDATA[asp.net]]></category>
        <author><![CDATA[syau]]></author>
		<guid>http://hi.baidu.com/maxthon1983/blog/item/f4f6bc23855f9f42ad34dece.html</guid>
</item>

<item>
        <title><![CDATA[网站代码优化]]></title>
        <link><![CDATA[http://hi.baidu.com/maxthon1983/blog/item/35305f8b38389414c8fc7a34.html]]></link>
        <description><![CDATA[
		
		<p>一个网站不管大小，其实都是一套很完整的系统，从无到有都要经过设计、制作、编码、测试这几个阶段，而在这几个阶段中影响整个网站运行效率的主要是前期的数据库<br>
设计和后期的编码阶段，下面就这两大阶段跟大家讲下，如何制作出一个相对高效的网站。<br>
1.数据库设计<br>
 一般来说你的数据库结构肯定是要按照给我们提要求的人来设计的，必须用到的字段是不可少的，这一点我们是无法控制的，我们能控制的可以有以下几点:<br>
 1.数据库字段(常用的分为int,bit,datetime,decimal,nvarchar,text)，<br>
&nbsp;&nbsp; 1.数字型:一般用来记录次数分数等等，还有一种可以用在检索，排序，它比字符型来的快,如果你能用数字型的那就用数字型，特别是用来区分某条数据<br>
&nbsp;&nbsp; 是什么类型时用，比如我们的订单是处于新建订单还是已确认还是已结，完全可以用数字1,2,3,4,5,6来表示，更重要的是如果我想看处于确认入住或<br>
&nbsp;&nbsp; 者已结或者对账中状态的订单，如果已经是按照1,2,3,4这种顺序来区分的话那我只要查询大于某个数字的记录就可以了，而现在我们必须是按照某个字段<br>
&nbsp;&nbsp; 等于H(已确认)或者等于D(对账中)或者等于O(已结)这在效率上明显下降很多，因为你用到了或,并且是字符型的，他是毫无规律可言的，那数据库必须把每条记录看一遍才能找到记录。<br>
&nbsp;&nbsp; 而用大于3(比如4是已确认)的话数据库会用二分法很快就能找到记录.<br>
&nbsp;&nbsp; 2.字符型:建议大家在用到字符型时一定要用nvarchar类型，因为实践证明用varchar等其他字符类型在存储不同编码格式的文字时会出现乱码现象(text类型除外)，<br>
&nbsp;&nbsp; 能不使用text类型就不要使用，因为text在数据库字段中他只是存储了一个指针而已，当你在查询时他首先要通过指针找具体内容然后再根据你的有求来查询，<br>
&nbsp;&nbsp; 这在效率上已经慢人一步了,并且需要用到convert函数转换后才能进行查询，这又慢人一步，整体效率就可想而知了。<br>
&nbsp;&nbsp; 3.日期型:主要是要注意你这个字段是需要精确到某一天还是某一天的时分秒，这主要是从数据库的整体大小考虑，数据库越大查询效率越低。<br>
&nbsp;&nbsp; 4.添加的每个字段都要不允许为空，因为一旦为空后在查询时你会增加一个不为null的判断，这是额外的负担，而且也是可以人为避免的<br>
&nbsp;&nbsp; 5.数据库的冗余字段，主要是用在一些统计方面，我们在数据库设计的初期虽然提要求的人没有这方面的需求，但我们必须事前做好准备，<br>
&nbsp;&nbsp; 应该考虑到后期需要做这样的功能，尽量把统计工作分散到日常的每个简单操作中去，提高统计页面统计速度<br>
&nbsp;&nbsp; 6.对数据库做适当的索引(索引就好像一本书的目录一样可以让你快速找到或者接近你要找的内容)<br>
2.编码阶段<br>
 1.网站目录的架构<br>
&nbsp;&nbsp; 1.上传,需要把所有上传的文件都统一归到一个目录下并且设置为可写无执行权限，这样做有2个好处:<br>
&nbsp;&nbsp;&nbsp; 1.可以避免浏览者上传木马等恶意程序，因为已经把执行权限关闭了<br>
&nbsp;&nbsp;&nbsp; 2.如果整站需要换服务器或者多站需要共享文件的话可以很快速的做成一个虚拟目录的形式统一调用<br>
&nbsp;&nbsp;&nbsp; 3.设置方便<br>
&nbsp;&nbsp; 2.目录层次，一般在windows操作系统中如果一个目录中存放大约超过5000个文件的话，系统或者说磁盘的的寻道时间会在1-2秒或以上，这会使前台应用程序<br>
&nbsp;&nbsp; 产生额外的等待时间，如果这时访问量很大就很容易造成阻塞现象，解决的方法是尽量分多级目录(比如按年月日等)，实践证明分3级目录是最科学有效的。<br>
 2.Sql语句<br>
&nbsp;&nbsp; 1.Sql语句和索引的关系，必须对经常用来查询的SQL语句建立索引并保证数据库确实使用了.<br>
&nbsp;&nbsp; 2.SQL语句必须很高效，如何实现，可以用查询分析器来分析判断，具体怎么使用和分析可以问我，这里不具体讲了.<br>
&nbsp;&nbsp; 3.SQL语句必须做到你的页面需要用到哪些数据你才去取哪些数据</p>
<p>&nbsp;&nbsp; 4.Sql语句中不要出现datepart,convert等的函数，因为用这些函数表示需要数据库在计算完这些函数之后他才能返回给你数据，那这又会使前台页面产生<br>
&nbsp;&nbsp; 额外的等待时间，解决方法是我们宁愿从数据库中多取出数据然后再在页面中使用asp内置算法去计算，这样做后我们就把应该让数据库去计算的工作分散到<br>
&nbsp;&nbsp; 每个页面中去，浪费的只是CPU资源，而现在的CPU是完全够用的，而且可以让数据库马上释放资源迎接下一轮的查询，<br>
&nbsp;&nbsp; 5.SQL语句中不要使用Select中再次使用select的复合语句，一是语句混乱，二是效率低下，也不要使用&lt;&gt;，in，not in等带有不确定因素的方法，这些都是<br>
&nbsp;&nbsp; 导致效率低下的语句</p>
<p><font face="Verdana"> 3.分页<br>
&nbsp;&nbsp; 这个在asp和asp.net中已经有很好的解决方案，这里也不多讲了，自己看以前的代码就可以了<br>
其他还有很多细节的地方，那只有在遇到时才能跟大家一起探讨</font></p> <a href="http://hi.baidu.com/maxthon1983/blog/item/35305f8b38389414c8fc7a34.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/maxthon1983/blog/category/%BA%C3%CE%C4%D5%C2">好文章</a>&nbsp;<a href="http://hi.baidu.com/maxthon1983/blog/item/35305f8b38389414c8fc7a34.html#comment">查看评论</a>]]></description>
        <pubDate>2008-08-01  09:21</pubDate>
        <category><![CDATA[好文章]]></category>
        <author><![CDATA[syau]]></author>
		<guid>http://hi.baidu.com/maxthon1983/blog/item/35305f8b38389414c8fc7a34.html</guid>
</item>

<item>
        <title><![CDATA[一、MagicAjax介绍]]></title>
        <link><![CDATA[http://hi.baidu.com/maxthon1983/blog/item/7f65c6f85879be0ad9f9fd39.html]]></link>
        <description><![CDATA[
		
		<div align="center">一、MagicAjax介绍</div>
<div> </div>
<div>
<div class="postcontent">（一）用途<br>
&nbsp;&nbsp;&nbsp;  以最简单的方式整合AJAX功能到页面中,不需要修改ASP.NET控件,不需要学习新的控件,不需要撰写JAVASCRIPT。<br>
<br>
（二）特点<br>
&nbsp;&nbsp;&nbsp;  1,只需在WEB.CONFIG里加入一点点配置信息<br>
&nbsp;&nbsp;&nbsp;  2,只用一个AJAXPANNEL就实现AJAX功能<br>
&nbsp;&nbsp;&nbsp;  3,只要把需要无刷的控件放进AJAXPANNEL就可以了(这个好玩,局部无刷)<br>
&nbsp;&nbsp;&nbsp;  4,AJAXPANNEL跟ASP.NET的PANNEL控件差不多,可以在设计器里拖控件到里面(这点要提出异议,虽然他跟PANNEL一样,可是,PANNEL的设计时本来就不是令我很满意,他完全可以做得更好)<br>
&nbsp;&nbsp;&nbsp;  5,不需要写JAVASCRIPT(估计不少人对这个头痛)<br>
&nbsp;&nbsp;&nbsp;  6,实现起来太容易了,如果你有旧的站点要支持AJAX,你只要用AJAXPANNEL把这些控件包起来就OK<br>
&nbsp;&nbsp;&nbsp;  7,AJAX功能和普通的POSTBACK可以共存于一个WEBFORM,MAGICAJAX处理模块只处理包含在AJAXPANNEL中的控个的CALLBACK动作<br>
&nbsp;&nbsp;&nbsp;  8,VIEWSTATE的内容对于POSTBACK和CALLBACK来说,都是可见的,因此,无论是CALLBACK产生的VIEWSTATE也好,还是POSTBACK产生的,都是可见的(爽吧)<br>
&nbsp;&nbsp;&nbsp;  9,提供一个类似POSTBACK的AJAXCALL的事件模型<br>
&nbsp;&nbsp;&nbsp;  10,提供许多静态方法帮你处理AJAXCALL,例如发送JS到客户端<br>
&nbsp;&nbsp;&nbsp;  11,CALLPACK时有一个LOADING指示(跟GOOGLE差不多,不过,好像这个LOADING没法配置样式,郁闷,难道真要重编译吗?这点不好吧,毕竟这个作者应该考到)<br>
&nbsp;&nbsp;&nbsp;  12.MAGICAJAX的页面会缓存至IE缓存,当用户点回退按钮时,会看到他前一步的操作(爽呀,POSTBACK的那个REFRESH提示就不爽了)<br>
&nbsp;&nbsp;&nbsp;  13,支持IE和FIREFOX(嗯,不支持OPERA?),未来支持更多浏览器<br>
&nbsp;&nbsp;&nbsp;  14,还好,当浏览器不支持JS或者不是MAGICAJAX支持的类型的时候,页面将渲染成传统的形式<br>
<br>
特性不少,最重要的是通过上面,你可以看到,它不用你大动干弋,而且兼容性确实不错,细节上处理的也好</div>
<div class="postcontent"> </div>
<div class="postcontent">(三)实现方法</div>
<div class="postcontent">&nbsp;&nbsp;&nbsp;  AJAX是概念，不是编程语言、更不是一个dll。没有具体的实现标准。</div>
<div class="postcontent">&nbsp;&nbsp;&nbsp;  总结一下MagicAjax的实现方法，包括一下几点：</div>
<div class="postcontent">&nbsp;&nbsp;&nbsp;&nbsp; 1.通过JS截获客户端的HTML元素的事件，如FORM, INPUT等。</div>
<div class="postcontent">&nbsp;&nbsp;&nbsp;&nbsp; 2.放弃默认的浏览器行为。</div>
<div class="postcontent">&nbsp;&nbsp;&nbsp;&nbsp; 3.打包截获到的事件上下文。</div>
<div class="postcontent">&nbsp;&nbsp;&nbsp;&nbsp; 4.通过HTTP对象把打包的内容向服务器提交。</div>
<div class="postcontent">&nbsp;&nbsp;&nbsp;&nbsp; 5.服务器预先截获客户端到来的数据包，并做相应处理。</div>
<div class="postcontent">&nbsp;&nbsp;&nbsp;&nbsp; 6.当服务端将要发送Response数据给客户端时，进行再次截获，更改这些数据。</div>
<div class="postcontent">&nbsp;&nbsp;&nbsp;&nbsp; 7.客户端HTTP对象收到Response数据进行处理（不是浏览器处理），主要是通过DOM操作特定ID的HTML元素。</div>
<div class="postcontent">&nbsp;&nbsp;&nbsp;  MagicAjax的指导思想是：总是通过透明的截获用户调用的方式处理正常的ASP.NET的逻辑。</div>
</div> <a href="http://hi.baidu.com/maxthon1983/blog/item/7f65c6f85879be0ad9f9fd39.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/maxthon1983/blog/category/ajax%2Bcss">ajax+css</a>&nbsp;<a href="http://hi.baidu.com/maxthon1983/blog/item/7f65c6f85879be0ad9f9fd39.html#comment">查看评论</a>]]></description>
        <pubDate>2008-07-09  15:14</pubDate>
        <category><![CDATA[ajax+css]]></category>
        <author><![CDATA[syau]]></author>
		<guid>http://hi.baidu.com/maxthon1983/blog/item/7f65c6f85879be0ad9f9fd39.html</guid>
</item>

<item>
        <title><![CDATA[Javascript学习第一季（1）]]></title>
        <link><![CDATA[http://hi.baidu.com/maxthon1983/blog/item/4870d5199d21e07fdab4bd05.html]]></link>
        <description><![CDATA[
		
		<strong><font color="#ff0000">1 , javascript字符集：<br>
</font></strong>javascript采用的是Unicode字符集编码。<br>
为什么要采用这个编码呢？<br>
原因很简单，16位的Unicode编码可以表示地球人的任何书面语言。这是语言 国际化的一个重要特征。(大家也许见过用中文写脚本，比如：function 我的函数() {}&nbsp;&nbsp; );<br>
Javascript中每个字符都是用2个字节表示的。（因为是16位编码）<br>
<br>
<br>
<font color="#ff0000">2 ,大小写敏感：</font><br>
js是一种区分大小写的语言。<br>
注意下：以前我也犯过的错误。<br>
HTML是不区分大小写的。经常看见有人这么写,<br>
&lt;input type=&rdquo;button&rdquo; onClick=&rdquo;a()&rdquo; /&gt; （这样写是对的）<br>
如果放到JS中，就必须使用onclick（小写哦！）<br>
同时XHTML中也只能使用小写。<br>
这个我们并不需要太关心，象这种问题，其实都可以自己给自己定一个标准，自己写程序的时候全部小写。<br>
另外每行程序后 分号 也是一样，我们都写上。<br>
<br>
<br>
<font color="#ff0000">3 ,注释：</font><br>
单行：<br>
//   注释1<br>
/*   注释2&nbsp;&nbsp; */&nbsp;&nbsp;<br>
多行：<br>
/*&nbsp;&nbsp; 注释3<br>
*&nbsp;&nbsp; 注释3<br>
*&nbsp;&nbsp; 注释3<br>
*/<br>
<br>
<br>
<br>
<font color="#ff0000">4 ,标识符：</font><br>
标识符就是一个名字，用来命名变量和函数。<br>
规则：第一个字母必须是字母，下划线(_)，或美圆符号($)。<br>
为什么第一个字母不能为数字？<br>
如果第一个为数字，js很容易就把它当作数字处理了，那么命名就没意义了，js规定了后，就很容易的区分了标识符和数字了。<br>
<br>
<br>
<font color="#ff0000">5 ,直接量：</font><br>
就是程序中直接显示出来的数据值。<br>
比如：12&nbsp;&nbsp; , 1.2&nbsp;&nbsp; , &ldquo; hello &ldquo; , true ,&nbsp;&nbsp; null&nbsp;&nbsp; , [1,2,3,4] <br>
这些都是直接量。<br>
<br>
<br>
<br>
<font color="#ff0000">6 ,保留字和关键字：</font><br>
具体是哪些，可以去google.cn。<br>
其实我们只要不取一些特郁闷的名字，都不会冲突的。<br>
<br>
<br>
<br>
<font color="#ff0000">7 ,js数据类型：</font><br>
3种基本的类型；数字，字符串和布尔值。<br>
2种小数据类型：null 和 undefined . (为什么叫小数据类型？因为他们只定义了一个值)<br>
1种复合类型：object. (在这个类型中，它的值可以是基本数据类型，也可以是复合类型，比如其他的object. ) <br>
注意：在对象中有一个特殊的对象----function.(它是一个可以执行代码的对象.)<br>
其他的一些对象:<br>
数组：<br>
Date类 ： 是日期的对象。<br>
RegExp类： 正则表达式的对象。<br>
Error 类：js中发生错误的对象。<br>
<br>
<br>
<br>
<font color="#ff0000">8 ,使用数据类型注意的地方：<br>
</font><br>
<font color="#ff8c00">1):数字：</font><br>
由于数字有什么8进制，10进制，16进制等。。。<br>
八进制：var num = 011; //以&quot;0&quot;开头<br>
十六进制：var num =0x1f; //以&quot;0x&quot;开头<br>
所以对于js这个都能识别的语言来说，就必须得注意。<br>
alert(377);   // 377<br>
alert(0377);    //255   =&nbsp;&nbsp; 3 * 64 + 7 * 8&nbsp;&nbsp; + 7 * 1<br>
进行算术运算有个重要的对象：Math.<br>
具体可以去网上下载手册，查询里面的方法。<br>
2个有用的函数：isNaN()和isFinite()<br>
isNaN() : 用于检查其参数是否是非数字值。// 提示：是非数字哦。(not a number)<br>
document.write(isNaN(0) )&nbsp;&nbsp; //返回false<br>
document.write(isNaN(5-2) ) //返回false<br>
document.write(isNaN (&quot;Hello&quot;) ) //返回true<br>
isFinite(number) 函数用于检查其参数是否是无穷大。<br>
如果number是有限的，则返回true. 如果 number 是 NaN(非数字)或者是无穷大，则返回false;<br>
<br>
<br>
<font color="#ff8c00">2):字符：</font><br>
&lsquo;you&rsquo;re right&rsquo;;<br>
这样写的话js会误以为 在you字母后就结束了，引起错误。<br>
所以当遇到这种情况的时候，必须用到转义。<br>
我们可以这么写：<br>
&lsquo;you\&rsquo;re right&rsquo;;<br>
另外：你可以 google.com搜索 转义序列表 。<br>
字符串的简单操作例子：<br>
var a = &quot;cssrain&quot;;<br>
var b = a.charAt(a.length-1); // 从字符串a中截取最后一个字符。&nbsp;&nbsp; 输出：n<br>
var c = a.substring(0 , 2);&nbsp;&nbsp; // 从字符串a中截取第1，2个字符。 输出：cs<br>
var d = a.indexOf('s');   // 从字符串a中查找第一个s出现的位置。 输出：1   <br>
从例子可以看出，基数都是从0开始的。<br>
var e = a.substring( a.length-1 ); //可以看出，substring第2个参数不写的话，<br>
//默认 是到最后。<br>
var f = a.substring( a.length-1 , a.length);//等价于<br>
<br>
<br>
<font color="#ff8c00">3):数字跟字符之间的转换：<br>
</font>数字转字符：<br>
var number_to_string = number + &ldquo; &rdquo;; //方法1：添加一个空的字符串。<br>
var number_to_string =String(number); //方法2：使用String()函数。<br>
var number_to_string =number. toString(); //方法3：使用toString()函数。<br>
注：toString()方法默认是以10进制转换。<br>
如果要使用8进制转换可以 这么写： number. toString(8);<br>
字符转数字：<br>
var string_to_number = string &ndash; 0 ; //方法1： 字符串减去0。<br>
var string_to_number = Number(string) ; //方法2：使用Number ()函数。<br>
var string_to_number = parseInt(string) ; //方法3：使用parseInt ()函数。<br>
方法1中不能 用string+0 ; 这样会导致字符串拼接，而不是类型转换。<br>
方法2 中的Number函数转换，比较严格。<br>
比如：<br>
var a = &quot;19cssrain86&quot;;<br>
var b = Number(a);&nbsp;&nbsp; //输出NaN.<br>
如果我们使用方法3。<br>
var c = parseInt(a); //输出 19<br>
可以看出parseInt()会自动忽略非数字的部分。<br>
parseInt()只取整数部分，忽略小数部分。<br>
parseFloat()会把小数部分也取到。<br>
和toString()一样，parseInt也有进制，默认是10进制。<br>
如果想使用8进制，可以这么写： parseInt( &ldquo;077&rdquo; , 8 ); // 输出63 = 7 * 8 + 7<br>
当字符以0开头的时候，我们必须把 第二个参数 指明，不然js可能会以8进制去转换。 <br>
<br>
<br>
<font color="#ff8c00">4):布尔类型：</font><br>
布尔在数字环境中：true&nbsp;&nbsp; 转换为&nbsp;&nbsp; 1&nbsp;&nbsp; ，false&nbsp;&nbsp; 转换为&nbsp;&nbsp; 0&nbsp;&nbsp; 。<br>
在字符环境中：true&nbsp;&nbsp; 转换为&nbsp;&nbsp; &ldquo;true&rdquo;&nbsp;&nbsp; ，false&nbsp;&nbsp; 转换为&nbsp;&nbsp; &ldquo;false&rdquo;&nbsp;&nbsp; 。<br>
布尔转换：<br>
var x_to_Boolean = Boolean(x); //方法1：使用Boolean ()函数。<br>
var x_to_Boolean = !x; //方法2：使用 感叹号。<br>
<br>
<br>
<font color="#ff8c00"><font color="#ff8c00">5):函数的定义：</font><br>
</font>方法1：普通定义<br>
function square(x){<br>
  &nbsp;&nbsp;   return x*x;<br>
}<br>
方法2：函数直接量定义<br>
var square = function(x){&nbsp;&nbsp; return x*x; }   //推荐使用<br>
方法3：构造参数<br>
var square = new Function(&ldquo;x&rdquo;,&rdquo;return x*x;&rdquo;);   //效率低<br>
<br>
<br>
<font color="#ff8c00">6):对象：</font><br>
如果有一个名为 cssrain 的对象 ， 他有一个高度height的属性。<br>
那么我们可以这么引用：<br>
cssrain.height;<br>
还可以使用关联数组定义：cssrain[&ldquo;height&rdquo;];<br>
创建对象：<br>
<br>
方法1：<br>
var point = new Object();<br>
point.x = 3;<br>
point.y = 5;<br>
<br>
方法2：使用对象直接量<br>
var point = {x:3 , y:5 }<br>
当然json也可以咯。<br>
对象在字符的环境下，会调用toString()方法。<br>
数字环境下，会调用valueOf()方法。<br>
布尔环境下，非空对象为true;<br>
<br>
<br>
<font color="#ff8c00">7):数组：</font><br>
常规数组：以非负整数做为下标。image[0]<br>
关联数组：以字符做为下标。如：image[&ldquo;width&rdquo;]<br>
js不支持多维数组，但数组里面可以嵌套数组。<br>
<br>
创建数组：<br>
<br>
方法1：<br>
var a = new Array();<br>
a[0] = &ldquo;1&rdquo;;<br>
a[1] = 2;<br>
a[2] = { x:1, y:3};<br>
<br>
方法2： <br>
var&nbsp;&nbsp; a&nbsp;&nbsp; =&nbsp;&nbsp; new Array(&ldquo;1&rdquo; , 2 , {x:1,y:3} );<br>
注意下：如果只传了一个参数；比如var a = new Array(3);<br>
那么它是表示：3个未定义元素 的 新数组。<br>
<br>
方法3：使用数组直接量<br>
var&nbsp;&nbsp; a =[&ldquo;1&rdquo; ,&nbsp;&nbsp; 2 , {x:1 , y :3 }]; //注意外面的 括号&nbsp;&nbsp; ，&nbsp;&nbsp; 不是花 括号。<br>
<br>
<br>
<font color="#ff8c00">8):null和undefined：<br>
</font>null表示无值；<br>
undefined : 使用一个并未声明的变量，或者使用了已经声明的变量但未赋值或者使用了一个并不存在的属性。<br>
undefined==null<br>
如果要区分：<br>
可以使用===&nbsp;&nbsp; 或者typeof运算符。<br>
<br>
<br>
<font color="#ff0000">9 ,新手常遇到的疑惑：</font><br>
var s =&rdquo;you are right&rdquo;;<br>
var b = s.substring(s.lastIndexOf(&ldquo; &rdquo;)-1 , s.length);<br>
疑惑：s是对象还是字符串，为什么字符串会有方法呢？<br>
回答：s是字符串。之所以有方法 ，是因为 string类型 有一个相应的对象类（String）。<br>
同样数字和布尔都有相应的Number , Boolean类。<br>
Js会内部进行相应的包装对象。String对象就替换了原始的字符串。<br>
总结：<br>
简单了介绍了js中的一些概念（词法结构） 和 数据类型（部分）。<br>
好了，今天就说到这里， 明天我们 继续。^_^。<br>
笔记我已给部分群员看过，有好的评论也有不好的评论。所以我郑重声明下：<br>
这是我看了DOM编程艺术，悟透JavaScript，javascript权威指南5做的笔记，<br>
我资质不深，不能写出高深的文章，<br>
如果你觉得笔记写得不好，可以不看我以后的。这篇文章就当作浪费你几分钟。<br> <a href="http://hi.baidu.com/maxthon1983/blog/item/4870d5199d21e07fdab4bd05.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/maxthon1983/blog/category/Javacript">Javacript</a>&nbsp;<a href="http://hi.baidu.com/maxthon1983/blog/item/4870d5199d21e07fdab4bd05.html#comment">查看评论</a>]]></description>
        <pubDate>2008-06-30  10:14</pubDate>
        <category><![CDATA[Javacript]]></category>
        <author><![CDATA[syau]]></author>
		<guid>http://hi.baidu.com/maxthon1983/blog/item/4870d5199d21e07fdab4bd05.html</guid>
</item>

<item>
        <title><![CDATA[jQuery基础教程笔记3]]></title>
        <link><![CDATA[http://hi.baidu.com/maxthon1983/blog/item/292197a11920a48e4710643d.html]]></link>
        <description><![CDATA[
		
		<font color="#ff0000">17, 做一个实例 ： 段落<br>
</font>&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;<br>
    &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;<br>
&lt;head&gt;<br>
&lt;meta http-equiv=&quot;Content-Type&quot; c /&gt;<br>
&lt;title&gt;DOM Manipulation&lt;/title&gt;<br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
// $('&lt;a href=&quot;#top&quot;&gt;回到顶部&lt;/a&gt;').insertAfter('div.chapter p');//每个段落后面添加 超链接<br>
$('&lt;a href=&quot;#top&quot;&gt;回到顶部&lt;/a&gt;').insertAfter('div.chapter p:gt(2)');//（除掉前3个 ）每个段落后面添加 超链接<br>
$('&lt;a name=&quot;top&quot;&gt;&lt;/a&gt;').prependTo('body');//在body后的开始位置 添加 超链接。<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;/head&gt;<br>
&lt;body&gt;<br>
&lt;h1 id=&quot;excerpt&quot;&gt;Demo&lt;/h1&gt;<br>
&lt;div class=&quot;chapter&quot;&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落1段落1段落1段落1&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落2段落2段落2段落2&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落3段落3段落3段落3&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落4段落4段落4段落4&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
   <br>
&nbsp;&nbsp; &lt;p&gt;段落5段落5段落5段落5&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
    <br>
&nbsp;&nbsp; &lt;p&gt;段落6段落6段落6段落6&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落7段落7段落7段落7&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
&lt;/body&gt;<br>
&lt;/html&gt;<br>
<br>
改进：<br>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;<br>
    &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;<br>
&lt;head&gt;<br>
&lt;meta http-equiv=&quot;Content-Type&quot; c /&gt;<br>
&lt;title&gt;DOM Manipulation&lt;/title&gt;<br>
&lt;script src=&quot;[url=http://www.cssrain.cn/demo/JQuery+API/jquery-1[1].2.1.pack.js]http://www.cssrain.cn/demo/JQuery+API/jquery-1[1].2.1.pack.js[/url]&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
    // $('&lt;a href=&quot;#top&quot;&gt;回到顶部&lt;/a&gt;').insertAfter('div.chapter p');//每个段落后面添加 超链接<br>
    $('&lt;a href=&quot;#top&quot;&gt;回到顶部&lt;/a&gt;').insertAfter('div.chapter p:gt(2)');//（除掉前3个 ）每个段落后面添加 超链接<br>
    $('&lt;a name=&quot;top&quot;&gt;&lt;/a&gt;').prependTo('body');//在body后的开始位置 添加 超链接。<br>
    <br>
  &nbsp;&nbsp;    $('div.chapter p').each(function(index){<br>
  &nbsp;&nbsp;    $(this).attr(&quot;id&quot;,&quot;node_&quot;+(index+1) );<br>
    //瞄点：在 标签a 上可以用name<br>
    //在标签p上 我用name不可以，只能用id<br>
    })<br>
    var k =&quot;&quot;;<br>
    $('div.chapter p').each(function(index){<br>
  &nbsp;&nbsp;    k += &quot;&lt;a href='#node_&quot;+(index+1)+&quot;'&gt;段落&quot;+(index+1)+&quot;&lt;/a&gt;&nbsp;&nbsp; &quot;;<br>
    })<br>
    $(k).insertBefore('.chapter');//在body后的开始位置 添加 超链接。<br>
    //用prependTo（）的时候， 发现k的内容 被倒置了。我晕。。。<br>
    //所以 改用 insertBefore（）、<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;/head&gt;<br>
&lt;body&gt;<br>
&lt;h1 id=&quot;excerpt&quot;&gt;Demo&lt;/h1&gt;<br>
&lt;div class=&quot;chapter&quot;&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落1段落1段落1段落1&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落2段落2段落2段落2&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落3段落3段落3段落3&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落4段落4段落4段落4&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
   <br>
&nbsp;&nbsp; &lt;p&gt;段落5段落5段落5段落5&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
    <br>
&nbsp;&nbsp; &lt;p&gt;段落6段落6段落6段落6&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落7段落7段落7段落7&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;br/&gt;&lt;/p&gt;<br>
&lt;/body&gt;<br>
&lt;/html&gt;<br>
<br>
<font color="#ff0000">18，包装元素 : wrap():</font><br>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;<br>
    &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;<br>
&lt;head&gt;<br>
&lt;meta http-equiv=&quot;Content-Type&quot; c /&gt;<br>
&lt;title&gt;DOM Manipulation&lt;/title&gt;<br>
&lt;script src=&quot;jqurey.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
  &nbsp;&nbsp;&nbsp; $(&quot;p&quot;).wrap(&quot;&lt;div class='chapter'&gt;&lt;/div&gt;&quot;);<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;/head&gt;<br>
&lt;body&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落1段落1段落1段落1&lt;/p&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落2段落2段落2段落2&lt;/p&gt;<br>
&lt;/body&gt;<br>
&lt;/html&gt;<br>
&lt;!--<br>
结果为：<br>
&lt;div class=&quot;chapter&quot;&gt;<br>
&lt;p&gt;<br>
段落1段落1段落1段落1<br>
&lt;/p&gt;<br>
&lt;/div&gt;<br>
&lt;div class=&quot;chapter&quot;&gt;<br>
&lt;p&gt;<br>
段落2段落2段落2段落2<br>
&lt;/p&gt;<br>
&lt;/div&gt;<br>
而不是：<br>
&lt;div class=&quot;chapter&quot;&gt;<br>
&lt;p&gt;<br>
段落1段落1段落1段落1<br>
&lt;/p&gt;<br>
&lt;p&gt;<br>
段落2段落2段落2段落2<br>
&lt;/p&gt;<br>
&lt;/div&gt;<br>
--&gt;<br>
<br>
<font color="#ff0000">19, 关于clone：</font><br>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot;<br>
    &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;en&quot; lang=&quot;en&quot;&gt;<br>
&lt;head&gt;<br>
&lt;meta http-equiv=&quot;Content-Type&quot; c /&gt;<br>
&lt;title&gt;DOM Manipulation&lt;/title&gt;<br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
  &nbsp;&nbsp;&nbsp; $(&quot;p&quot;).bind(&quot;click&quot;,function(){ <br>
&nbsp;&nbsp; alert(&quot;cssrain test:&quot;);<br>
&nbsp;&nbsp; })<br>
  &nbsp;&nbsp;&nbsp; $(&quot;p&quot;).clone(true).appendTo(&quot;body&quot;);<br>
&nbsp;&nbsp; $(&quot;p&quot;).clone(false).appendTo(&quot;body&quot;);<br>
  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; //我们发现 clone(true) 会连带绑定的事件一起复制，<br>
&nbsp;&nbsp; //false只复制元素，而绑定的事件已经被它扔掉。<br>
&nbsp;&nbsp; $(&quot;p&quot;).clone().appendTo(&quot;body&quot;);//默认是 false<br>
   /*<br>
  &nbsp;&nbsp;&nbsp; 这点 jquery的clone（）跟dom里的clone有点区别了。<br>
  &nbsp;&nbsp;  &nbsp;&nbsp;  &nbsp;&nbsp;&nbsp; 如果想实现dom 里的clone（）<br>
  &nbsp;&nbsp;&nbsp; 可以这么做;<br>
  &nbsp;&nbsp;&nbsp; $(&quot;p&quot;).clone(true).empty().appendTo(&quot;body&quot;);<br>
   */<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;/head&gt;<br>
&lt;body&gt;<br>
&nbsp;&nbsp; &lt;p&gt;段落1段落1段落1段落1&lt;/p&gt;<br>
&lt;/body&gt;<br>
&lt;/html&gt;<br>
<br>
<font color="#ff0000">20, DOM操作总结：</font><br>
创建节点：<br>
直接 $(&quot;&lt;p&gt;cssrain&lt;/p&gt;&quot;)<br>
复制节点:<br>
.clone()<br>
插入节点：<br>
.append()<br>
.appendTo()<br>
.prepend()<br>
.prependTo()<br>
.after()<br>
.insertAfter()<br>
.before()<br>
.insertBefore()<br>
删除节点：<br>
.remove()<br>
清空节点:<br>
.empty()<br>
包装节点：<br>
.wrap()<br>
设置属性<br>
.attr()<br>
删除属性<br>
.removeAttr()<br>
基本跟javascript中的DOM操作一样，clone()稍微不一样，前面例子说过区别了。。<br> <a href="http://hi.baidu.com/maxthon1983/blog/item/292197a11920a48e4710643d.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/maxthon1983/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/maxthon1983/blog/item/292197a11920a48e4710643d.html#comment">查看评论</a>]]></description>
        <pubDate>2008-06-30  10:03</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[syau]]></author>
		<guid>http://hi.baidu.com/maxthon1983/blog/item/292197a11920a48e4710643d.html</guid>
</item>

<item>
        <title><![CDATA[jQuery基础教程笔记2]]></title>
        <link><![CDATA[http://hi.baidu.com/maxthon1983/blog/item/5965803424b364b2d0a2d33d.html]]></link>
        <description><![CDATA[
		
		<div class="t_msgfont" ><font color="#ff0000">14，width()和css('width')</font><br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$('#test').click(function(){<br>
var t1&nbsp;&nbsp; =&nbsp;&nbsp; $('#a').width();<br>
var t2&nbsp;&nbsp; =&nbsp;&nbsp; $('#a').css('width');<br>
alert( t1 ); //200 ， 不带单位<br>
alert( t2 ); //200px ， 带单位<br>
alert( parseInt(t2) ) //200 ， 不带单位<br>
})<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;DIV id=&quot;a&quot; style=&quot;width:200px&quot;&gt;a&lt;/div&gt;<br>
&lt;input type=&quot;button&quot; id=&quot;test&quot; value=&quot;test&quot; /&gt;<br>
<br>
<font color="#ff0000">15：animate()做动画效果时，动画执行的顺序。</font><br>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;zh-CN&quot; lang=&quot;zh-CN&quot;&gt;<br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$('#test').click(function(){<br>
$('#a').animate({left : &quot;300px&quot; } , &quot;slow&quot; )<br>
.animate({ top : &quot;300px&quot; } , &quot;slow&quot; );<br>
})<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;DIV id=&quot;a&quot; style=&quot;position:absolute;width:10px;height:10px;&quot;&gt;a&lt;/div&gt;<br>
&lt;input type=&quot;button&quot; id=&quot;test&quot; value=&quot;test&quot; /&gt;<br>
//发生上面是按照顺序来执行的。先改变left，然后再改变top<br>
<br>
对比:<br>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;zh-CN&quot; lang=&quot;zh-CN&quot;&gt;<br>
&lt;script src=&quot;[url=http://www.cssrain.cn/demo/JQuery+API/jquery-1[1].2.1.pack.js]http://www.cssrain.cn/demo/JQuery+API/jquery-1[1].2.1.pack.js[/url]&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$('#test').click(function(){<br>
$('#a').animate({left : &quot;300px&quot; ,&nbsp;&nbsp; top : &quot;300px&quot;} , &quot;slow&quot; )<br>
})<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;DIV id=&quot;a&quot; style=&quot;position:absolute;width:10px;height:10px;&quot;&gt;a&lt;/div&gt;<br>
&lt;input type=&quot;button&quot; id=&quot;test&quot; value=&quot;test&quot; /&gt;<br>
//发生上面是一起执行的，也就是 left和top 一起改变。<br>
区别知道了吧。<br>
<br>
<font color="#ff0000">16,同理，我们再看一个例子：</font><br>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;zh-CN&quot; lang=&quot;zh-CN&quot;&gt;<br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$('#test').click(function(){<br>
$('#a').animate({left : &quot;300px&quot; } , &quot;slow&quot; )<br>
.fadeTo('slow',0.2)<br>
.animate({ top : &quot;300px&quot; } , &quot;slow&quot; )<br>
.fadeTo('slow',1);<br>
//排队效果会一个个执行。<br>
})<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;DIV id=&quot;a&quot; style=&quot;position:absolute;width:40px;height:40px;top:100px;background:red;&quot;&gt;a&lt;/div&gt;<br>
&lt;input type=&quot;button&quot; id=&quot;test&quot; value=&quot;test&quot; /&gt;<br>
//当animate()跟其他动画效果执行的时候，也是排队执行的。也就是一个个来。<br>
对比：css()<br>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;zh-CN&quot; lang=&quot;zh-CN&quot;&gt;<br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$('#test').click(function(){<br>
$('#a').animate({left : &quot;300px&quot; } , &quot;slow&quot; )<br>
.fadeTo('slow',0.2)<br>
.animate({ top : &quot;300px&quot; } , &quot;slow&quot; )<br>
.fadeTo('slow',1)<br>
.css(&quot;backgroundColor&quot;,&quot;#000&quot;);<br>
//虽然css写在最后，但点击一开始就会执行。<br>
//排队效果并不适合 .css()<br>
})<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;DIV id=&quot;a&quot; style=&quot;position:absolute;width:40px;height:40px;top:100px;background:red;&quot;&gt;a&lt;/div&gt;<br>
&lt;input type=&quot;button&quot; id=&quot;test&quot; value=&quot;test&quot; /&gt;<br>
<br>
解决：<br>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;zh-CN&quot; lang=&quot;zh-CN&quot;&gt;<br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$('#test').click(function(){<br>
$('#a').animate({left : &quot;300px&quot; } , &quot;slow&quot; )<br>
.fadeTo('slow',0.2)<br>
.animate({ top : &quot;300px&quot; } , &quot;slow&quot; )<br>
.fadeTo('slow',1 ,function(){<br>
$(this).css(&quot;backgroundColor&quot;,&quot;#000&quot;);<br>
})<br>
//我们可以把他写在 最后一个效果的 回调函数里。<br>
})<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;DIV id=&quot;a&quot; style=&quot;position:absolute;width:40px;height:40px;top:100px;background:red;&quot;&gt;a&lt;/div&gt;<br>
&lt;input type=&quot;button&quot; id=&quot;test&quot; value=&quot;test&quot; /&gt;<br>
总结：<br>
当在animate 中以多个属性的方式应用时， 效果是同时发生的。<br>
当以 连续方式 应用时， 是按顺序来的。<br>
非效果方法，比如.css()方式不是按照顺序来的，解决方法是 放在回调函数里。</div> <a href="http://hi.baidu.com/maxthon1983/blog/item/5965803424b364b2d0a2d33d.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/maxthon1983/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/maxthon1983/blog/item/5965803424b364b2d0a2d33d.html#comment">查看评论</a>]]></description>
        <pubDate>2008-06-30  10:03</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[syau]]></author>
		<guid>http://hi.baidu.com/maxthon1983/blog/item/5965803424b364b2d0a2d33d.html</guid>
</item>

<item>
        <title><![CDATA[jQuery基础教程笔记1]]></title>
        <link><![CDATA[http://hi.baidu.com/maxthon1983/blog/item/df5eb32f2039fe3d1f30893d.html]]></link>
        <description><![CDATA[
		
		看完jquery基础教程做的笔记，笔记并不适合所有人，觉得好，可以看，觉得不好，可以不看。<br>
<font color="#ff0000">1, ：eq()和nth-child()</font> <br>
看下面代码：<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$(&quot;#selected-plays &gt; li:eq(1)&quot;).addClass(&quot;a&quot;);<br>
//等价于&nbsp;&nbsp; $(&quot;#selected-plays &gt; li:nth-child(2)&quot;).addClass(&quot;a&quot;);<br>
//注意：js数组是从 0 开始的，所以eq（1）是取第二个元素。<br>
//而css选择器:nth-child（）是从 1 开始的， 所以要选择第二个元素， 得使用 :nth-child(2)&nbsp;&nbsp; ，而不是:nth-child(1)。<br>
&nbsp;&nbsp; })<br>
&lt;/SCRIPT&gt;<br>
<br>
<font color="#ff0000">2，:odd 和&nbsp;&nbsp; :even</font>   <br>
:odd  &nbsp;&nbsp;   : 奇数行    <br>
:even  &nbsp;&nbsp;&nbsp; : 偶数行<br>
新手经常会说，好像跟我们做的相反？<br>
其实与 :eq() 选择器一样， 下标都是从 0开始的，<br>
也就是&nbsp;&nbsp; 表格的第一行 编号是 0&nbsp;&nbsp; （偶数）；<br>
第二行 编号是 1   （奇数）；以此类推。。。<br>
<br>
<font color="#ff0000">3, $(&quot;tr:odd&quot;).addClass()</font><br>
可以写成&nbsp;&nbsp; $(&quot;tr&quot;).filter(&quot;:odd&quot;).addClass()<br>
<br>
<font color="#ff0000">4，$('td:contains(&quot;cssrain&quot;)')</font>  &nbsp;&nbsp;  &nbsp;&nbsp;    //取得 包含 字符串 cssrain 的所有td<br>
<br>
<font color="#ff0000">5，jquery 转 dom ：</font><br>
$(&quot;td&quot;).get(0).tagName 或 $(&quot;td&quot;)[0].tagName<br>
<br>
<font color="#ff0000">6，load():</font><br>
jquery中的load（）有2层意思，<br>
第一层 意思 可以等价于 dom中 window.onload<br>
第二层 意思 可以load（url ）。<br>
<br>
<font color="#ff0000">7：ready简写：</font><br>
1;<br>
$(document).ready(function(){   <br>
   //do something<br>
})<br>
2;<br>
$().ready(function(){   <br>
   //do something<br>
})<br>
3;<br>
$(function(){   <br>
   //do something<br>
})<br>
<br>
<font color="#ff0000">8，事件冒泡：</font><br>
正常的来说：点击B&nbsp;&nbsp; 会触发a的click。<br>
如果我们不想触发A，可以用stopPropagation() 阻止冒泡.<br>
具体例子：<br>
&lt;div id=&quot;a&quot;&gt;aaaaaaa<br>
&lt;div id=&quot;b&quot;&gt;bbbbbbbb&lt;/div&gt;<br>
aaaaaa&lt;/div&gt;<br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$('#a').click(function(){<br>
alert(&quot;A&quot;)<br>
})<br>
$('#b').click(function(e){<br>
alert(&quot;B&quot;)<br>
e.stopPropagation();//阻止冒泡， 从来不输出 &ldquo;A&quot; 。 可以去掉 ，试试对比效果。<br>
})<br>
})<br>
&lt;/SCRIPT&gt;<br>
<br>
<font color="#ff0000">9, hide()show()会记住上一次的dipslay状态</font><br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$('#test').toggle(function(){<br>
$('#a').hide();//display : none ，记住display 为 inline<br>
$('#b').hide();//display : none ，记住display 为 block<br>
},function(){<br>
$('#a').show(); //display : inline<br>
$('#b').show(); //display : block<br>
})<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;DIV id=&quot;a&quot; style=&quot;display:inline;&quot;&gt;a&lt;/div&gt;<br>
&lt;DIV id=&quot;b&quot; style=&quot;display:block;&quot;&gt;b&lt;/div&gt;<br>
&lt;input type=&quot;button&quot; id=&quot;test&quot; value=&quot;test&quot; /&gt;<br>
<br>
<font color="#ff0000">10, hide()&nbsp;&nbsp; show()加时间参数</font><br>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;zh-CN&quot; lang=&quot;zh-CN&quot;&gt;<br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$('#test').toggle(function(){<br>
$('#a').hide(500);//display : none<br>
$('#b').hide(500);//display : none<br>
},function(){<br>
$('#a').show(500); //display : inline<br>
$('#b').show(500); //display : block<br>
})<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;DIV id=&quot;a&quot; style=&quot;display:inline;&quot;&gt;a&lt;/div&gt;<br>
&lt;DIV id=&quot;b&quot; style=&quot;display:block;&quot;&gt;b&lt;/div&gt;<br>
&lt;input type=&quot;button&quot; id=&quot;test&quot; value=&quot;test&quot; /&gt;<br>
<br>
<font color="#ff0000">11，效果：</font><br>
show(), hide()会同时修改多个样式属性&nbsp;&nbsp; : 高度，宽度和不透明度。<br>
fadeIn() fadeOut() : 不透明度<br>
fadeTo()   : 不透明度<br>
slideDown() , slideUp()&nbsp;&nbsp; :高度<br>
如果都不能满意，只能用animate（）了<br>
animate()提供了更为强大的，复杂的效果。<br>
<br>
<br>
<font color="#ff0000">12，animate() :</font> <br>
之前 .show('slow');&nbsp;&nbsp; // slow代表的是0.6秒内同时改变高度，宽度和透明度 。 如果用时间表示是 600 ；===&nbsp;&nbsp; .show(600);<br>
那么我们再来看看 animate()<br>
animate({heigth : 'slow' ,width : 'slow' } , 'slow' )&nbsp;&nbsp;<br>
这里之所以可以 height : 'slow'   其实就跟 .show('slow')&nbsp;&nbsp; 类似，当然他前面规定了height&nbsp;&nbsp; 。。<br>
<br>
<br>
<font color="#ff0000">13,做动画之前 先确定位置。</font><br>
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Strict//EN&quot; &quot;<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd</a>&quot;&gt;<br>
&lt;html xmlns=&quot;<a href="http://www.w3.org/1999/xhtml" target="_blank">http://www.w3.org/1999/xhtml</a>&quot; xml:lang=&quot;zh-CN&quot; lang=&quot;zh-CN&quot;&gt;<br>
&lt;script src=&quot;jquery.js&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;<br>
&lt;SCRIPT LANGUAGE=&quot;JavaScript&quot;&gt;<br>
$(function(){<br>
$('#a').css(&quot;position&quot;,&quot;absolute&quot;);//如果把这句去掉，动画就没了。<br>
/*<br>
在使用.animate之前，请先把位置确定，不管你是用的 absolute 还是relative<br>
总之要设置其中的一种，因为所有的块级元素默认是static。<br>
其实是跟css有关。<br>
*/<br>
$('#test').click(function(){<br>
$('#a').animate({ left : '300' } , 'slow' )<br>
})<br>
})<br>
&lt;/SCRIPT&gt;<br>
&lt;DIV id=&quot;a&quot; &gt;a&lt;/div&gt;<br>
&lt;input type=&quot;button&quot; id=&quot;test&quot; value=&quot;test&quot; /&gt;<br> <a href="http://hi.baidu.com/maxthon1983/blog/item/df5eb32f2039fe3d1f30893d.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/maxthon1983/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/maxthon1983/blog/item/df5eb32f2039fe3d1f30893d.html#comment">查看评论</a>]]></description>
        <pubDate>2008-06-30  10:02</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[syau]]></author>
		<guid>http://hi.baidu.com/maxthon1983/blog/item/df5eb32f2039fe3d1f30893d.html</guid>
</item>

<item>
        <title><![CDATA[最近的一些随感——简历]]></title>
        <link><![CDATA[http://hi.baidu.com/maxthon1983/blog/item/5339ba2b2c44fbffe6cd400f.html]]></link>
        <description><![CDATA[
		
		<div class="postText">博客园技术帖子太多了，这是我真实的感受。也许是因为博客园定位于技术博客，所以会把其他内容划分到别的区里面，这一直是我觉得最不爽的地方。因为这样，有可能很多优秀的文章就被埋没了。其实完全可以都集中在首页显示，不好的刷下来，好的顶上去。以前说是没有人管，那也确实是有心无力。现在有点人力资源了，我觉得还是希望赶紧考虑一下这方面的事情。我写这个随笔的时候，就犹豫，该不该发在首页？最后还是觉得发吧，我觉得我想和大家交流的这些内容，估计还是会对一部分人产生一定帮助的。其实，我还想听听dudu的创业经验谈。<br>
<br>
好，牢骚发完了，回到正题。<br>
<br>
今天一晚上连着看了十几个简历，看得我头都大了。什么？不就是看看简历么，有什么好头痛的？没错，以前我也这么想的，可最近公司做了一个有关招聘的培训，才知道面试之前、之中、之后的工作事项有这么多。于是，最近的面试就要好好做功课准备准备了。可当我真看这么多简历的时候，就有点麻木了。不是么？平时已经够忙的了，各种大小事务纷涌而至，而且我所在部门还是&ldquo;重要且紧急&rdquo;甚至&ldquo;不重要但紧急&rdquo;事项的窗口。可想而知，当你看一堆的简历的时候，就多么的期望你面前的简历最好能够回答你一切想要知道的问题。可是偏偏最头痛的是，大部分的简历给我带来的问题，比我想要知道的答案还要多。<br>
<br>
举例说明之前，先说说我从培训中得到的知识吧：<br>
一个公司，尤其是靠脑力挣钱的公司，其人力相关成本是极高的。这里面，自然也包含了招聘和解雇的成本。不要以为招聘成本就是一个HR员工的成本，还应该包括：<br>
1、因为面试，需要占用的人力资源成本；<br>
2、因为试用失败，所支付的资金成本和时间成本；<br>
3、因为最终雇佣了错误的人，所造成的资金损失，人力资源损失等。<br>
<br>
具体数字我还真忘了，但是可以肯定的是，最终找到的合适员工，和你面试过的候选人之比，是非常小的，所以说招聘成本高。这还不包含招聘后，该员工所占用空间所需要花费的资金成本，该员工造成规模扩大之后的管理成本等。由此可见，招聘是一件多么重要的事情。比如说，找到一个合适的人，可以完成十个不合适的员工才能完成的工作量，前者的人力成本比后者的要明显低很多。那么为什么我们不多花一点经历，来认真对待招聘的事情呢？据我所知，很多公司的招聘工作，可能主要是HR那边出力，然后具体相关部门的主管进行面试。实际上这是有很大问题的，应该是相关部门主管要在面试前做很多的功课，具体做什么这里不多说了，只说一个：你打算问候选人什么问题？<br>
<br>
问题有哪些呢？这个我也不多列，至少得有下面这几个吧（不限于此）：<br>
1、简历中有什么疑点？例如工作经历断档等；<br>
2、过去的工作中，面对了什么问题，如何处理（而不是假大空的问：如果你是经理，你能面对压力吗？回答：能！@_@）<br>
<br>
其中，我发现最有趣的一个问题是，很多人的简历中普遍存在一个（套）疑点：你回报的上级是什么人，职责是什么，你管理多少人，职责是什么，在你所在的工作中具体做什么事情？<br>
很多人的简历都是这么列的：<br>
2007.1-2008.1&nbsp;&nbsp;  北京XXX公司<br>
职位：程序员<br>
工作内容：用ABC.NET、OrnDB技术以及JUNK语言，构建了一个BC结构的XXX项目，该项目采用了0.5层的技术，实现了XXX、YYY、ZZZ的功能。全程参与了该项目的开发。<br>
<br>
那么，我上面的疑点，一个都没有解决。还有一个更严重的问题，是使用大量烂掉的关键字，例如：熟悉、精通、理解&mdash;&mdash;当我面对这些词的时候，几乎已经看到发腻，甚至都搞不清楚到底是熟悉比精通厉害呢，还是理解才是万岁。最糟糕的莫过于列出了一大堆的熟悉精通理解，我看到这样的情况，就想不明白，到底哪个才是你最强的方面，哪一个是你最弱的方面，基本上说了等于没说一样。<br>
<br>
<span><span style="font-size: 14pt"><span>好，反过来说，如果你是求职者，如何从几百上千份的简历中脱颖而出呢？除了不要犯上述的常识性错误，还要注意突出你的不同之处。如何突出呢？要看你的工作经验如何了。</span></span><br>
</span><br>
<strong>如果你是刚毕业的毛头小子</strong><br>
<br>
记住，不要列出一大堆的在校工作项目，尤其不要列你的毕设。中国大学的毕设水平有多烂，大家心知肚明，你又何苦把它统统列出来让人鄙视一番呢？很不幸我当年就犯了这个错误。虽说现在想起来，我的毕设水平仍然有资格说是比普通的学生好上那么一点点，可是如果和真正的、成功的商业系统比起来，那都是小菜一碟。你向往的某个公司真的会觉得你做过的文件拷贝程序感兴趣吗？那只是一个程序，不是系统，因此人家不会觉得你做过什么。很不幸，我以前曾经也做过类似的事情。不过，我并不是说不列，列出一条你认为最自豪的就可以了。虽然比不上商业系统，但这足以证明你是一个积极的人，真正做过一点事情的人，不是那种浑浑噩噩过一生的人。其他的项目，一笔带过就行了，写多了简直是浪费你的精力和版面，也浪费面试官的时间和感情。<br>
<br>
除此之外，你还可以提供程序的源代码（全部或部分），这是展示你的程序风格的一个很好的方式。不过建议你在给出这样的代码之前，仔细地考虑一下，你是否应该规整规整，重构重构？对于一个企业，要决定是否聘用一个员工，是一件很严肃的事情，因此真正面试之前，理应进行相应的准备工作。那么当你去准备面试的时候，也更应该如此了。我收到过一个源代码，里面写了一些.NET其实已经提供的功能，除此之外也出现了一些很长的方法，还有一些遗留的、被注释掉的代码，写着这个没有做出来。这样的代码其实在向你的主顾宣示着：其实我很糟糕，看，我的代码就是这么糟糕，甚至于我来面试了，我也不乐于稍微修饰一下。您觉得这样能获得你想要的工作吗？如果是你不在乎的工作，那另当别论，可你都不在乎这样的工作，为什么要投这份简历呢？<br>
 <br>
你应该重点展示什么呢？相对于有经验的人来讲，缺乏经验是你的缺点，同时也是你的优点。在雇主看来，你就是一张白纸，未来在这张白纸上可能会画出一幅很棒的画。可并不是每一张白纸都有同样的结果，原因在于纸张的质量。上好的纸张应该是好的东西点拨一下，就能自然展开，而糟糕的东西不会被画上去。糟糕的纸张则相反，美好的东西画了半天没反应，糟糕的东西不知道怎么自动就有了。这个比喻还不太直接，直白的说，雇主期望你是这样的一个人：<br>
1、你很勤奋并且你很好学<br>
2、你很好学并且一学就会<br>
3、你学会了不止，还学得很精<br>
4、学得很精了不止，还态度好<br>
<br>
一个不勤奋的不好学的人，如何展望未来能给公司带来价值呢？一个好的公司，会有一些培训，纵然没有，也会要求你自学。如果你学了半天都不会，你是勤奋好学那也没有用。这个一学就会，其实是平日长时间进行自学锻炼的结果，我也没有一个&ldquo;银弹&rdquo;供你解决这个问题。接下来，你不仅仅要学会了，还要精。所谓的精，就是你能说出道道来，能说出个所以然来。我非常头痛的一点是，每次我面试都会问&ldquo;interface&rdquo;你是怎么理解的，其结果十有八九就是大眼瞪小眼。可是这些人的简历上，会写着自己会X、Y、Z还会三层结构，那interface是干嘛使的、为什么存在怎么会说不出来呢？每天花点时间，先把这些最基本的思想弄清楚了，你才可能找到一份好工作。也许会花你几个月的时间，不过如果不花时间做这样的事情，你花多少时间也找不到一份你觉得满意的工作的。最后一点其实是很重要，有句话：态度决定行为，行为决定习惯，习惯决定性格，性格决定命运。如果你整天懒懒散散，上面交待你做的事情不到最后一天不做，又或者没有明确的利益你就不做事情，这样的态度肯定会决定你没有什么好命运的（含着金钥匙的除外，这种人不需要找工作）。<br>
<br>
上面这些是刚毕业的学生的写简历时的一些基本思路。<br>
<br>
<strong>如果你是工作几年，有了一定经验，甚至是丰富经验的人</strong><br>
<br>
那么很显然，你的优势在于经验。这个经验不在于你坐过了什么项目，而是你用什么知识、工具做了个多大规模的事情，其间遇到些什么样的困难，最后如何克服了。很多的简历里面，都只是说作了一个什么项目。至于说这个项目有多复杂，你负责其中的什么内容，你在其间使用了什么知识和工具，遇到什么困难，统统不说。这样的结果就是我看完了还是等于什么都不知道，就算你说我05-08年期间参与的项目有Windows Server 2008，Visual Studio 2008，那又怎么样呢？我心里面也许会觉得，可能其实你只不过作了其中里面一个很小很小的部分，比如写了一个计算器，或者OpenFileDialog。这样对于你是不利的，因为如果另一个和你竞争的候选人，把他的经历写得比较具体，那也许就会约见他而不约见你。<br>
<br>
当我看过这么多的简历之后，我就觉得，如果我再找工作的时候，我就会用PPT把我这几年做的工作列出来，把我参与过的最大的一个系统的拓扑图画出来，把我遇到过并解决过的问题举一个出来，把我参加过的某个重要培训以及心得列出来。这样的PPT，至少让人能看得津津有味，直到我参与过什么样的事情，也能证明我能胜任我想要争取的岗位。说到这里，我也想提一下，我认为，文字太多其实不是好事，所以简历文字要精炼在精炼。详细列出10个项目，你说有多少人能耐着性子看完？几乎没有。详细列出1个项目呢？我觉得大部分人应该还是愿意看的。所以你觉得用同样多的文字，粗略列出10个项目好呢，还是详细介绍1个？我建议剩余的可以一笔带过，附带说明如果面试时有兴趣了解，可以详细说明。同时，图片比文字的说明力强多了，为什么不多摆几个图片呢？一个拓扑图，基本上就能把你的项目复杂度给说清楚了，用文字可得要写好大一段，是否能看得明白还不一定。图基本上瞄一眼就明白，文字可得要反复琢磨，对于面试官来讲前者绝对是赏心悦目，后者绝对是折磨人。<br>
<br>
与刚出道的人比起来，你的劣势在于经验。经验多了难免容易坐享其成，不愿意接受新东西，或者有自觉牛X的感觉。<br>
先说前者。我遇到过工作多年的候选人，面试时问3.5的东西例如linq、WCF等一问三不知，倒是不停的说很古董的解决方案。不懂就算了，有的东西还强装了解，说出来的不对。其实不知道就不知道好了，多数企业需要的是踏实的人，不希望你掩盖真相。俗话说有问题不可怕，有问题不知道不解决才可怕。也许你也是对很多最新的知识不了解，毕竟工作经验多的人，可能会负责比较多的事情。公司也可能不愿意冒风险使用新技术，平时也没有时间学习，怎么办？其实解决的办法很简单：开始投简历之前，赶紧先多学习一些新的东西。宁愿少工作一两个月，也要先把这些工作做好，磨刀不误砍柴工嘛。再说了，也算给自己放个假。当然了，如果工作中有机会，或者能够争取机会，那是再好不过的。<br>
再说后者。平时自己给自己打气，没人的时候，或者对着老婆的时候，你可以自觉牛X一下，但是写简历的时候千万不要。先不说面试官是否比你厉害，这样的感觉面试官至少会判断你态度有问题。其次，你要真那么牛X，为什么还要去面试呢？猎头早该找上门来啦，准东家早就对你求贤若渴啦，三顾茅庐啦。嗯，有人会觉得，牛X怎么可能写简历里面呢？我举一个例子，我就看到一些简历，会罗列很多会的东西。其实完全没有必要，首先，这么十几个技术知识里面，总有强弱之分，列出强的那么两三个就够了。再牛X，面试官也没有时间问你超过5个以上的技术知识，所以你也没必要列超过5个。其次，这就是一种想告诉别人&ldquo;我其实是很牛X的&rdquo;。如果万一别人问到的，就是你列出的那十几个技术中最弱的那一个，而恰好面试官最强的就是这项，后果可想而知。<br>
<br>
工作经历比较多的人当中，还有一部分的是有创业经历的，我也可以分享一下。对于这种候选人，面试官最担心的恐怕是&ldquo;你的心很野&rdquo;的问题。因此，如果你能够把你的人生规划说清楚，也许更能打动面试官。此外，由创业经验的人，一定不是平常人。不是平常人有两种：一种是非常优秀，只是暂时失败；还有一种，就是想法偏执，其实运气再好，也就那样。前者后者该如何写简历，我没有什么可以分享的，因为我还没有仔细想过。但有一点，无论前者后者，都是很重要的：就是要承认你的失败，同时还要总结原因。理由是，不承认失败的人，感觉不太踏实，或者不太现实；而没有总结的人，有可能就是总结能力欠缺，或者从来不做总结。当然，其实这些问题有没有创业经历的候选人，都有这种&ldquo;维度&rdquo;&mdash;&mdash;即需要衡量的方面。但是有创业经历在简历上，无疑就在提醒面试官这方面的问题。你不解答这些问题，如果面试官忘了问，那么这个困惑就会存在，你就很可能会被刷下来。我已有的案例中，就有一个我觉得个方面都不错的，结果上司担心他干一段时间还会再次创业，于是没有考虑。<br>
<br>
最后，当你面试的时候，一定要想办法弄清楚面试官的困惑点，要解答这些困惑点，才能得到你想要的工作。当然了，我上面说的那些，都是假设你已经比较有料的情况。如果你自觉能力不足，简历再好，面试能力再强，也是不能解救的，试用期必定暴露问题。因此，能力不足的，首先补能力，这篇文章恐怕对你帮助不大。</div> <a href="http://hi.baidu.com/maxthon1983/blog/item/5339ba2b2c44fbffe6cd400f.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/maxthon1983/blog/category/%BA%C3%CE%C4%D5%C2">好文章</a>&nbsp;<a href="http://hi.baidu.com/maxthon1983/blog/item/5339ba2b2c44fbffe6cd400f.html#comment">查看评论</a>]]></description>
        <pubDate>2008-06-27  09:11</pubDate>
        <category><![CDATA[好文章]]></category>
        <author><![CDATA[syau]]></author>
		<guid>http://hi.baidu.com/maxthon1983/blog/item/5339ba2b2c44fbffe6cd400f.html</guid>
</item>


</channel>
</rss>