﻿<?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>博客园-JAVALONG .NET PR</title><link>http://www.cnblogs.com/javalong/</link><description>.NET 从这里开始</description><language>zh-cn</language><lastBuildDate>Fri, 29 Aug 2008 23:32:38 GMT</lastBuildDate><pubDate>Fri, 29 Aug 2008 23:32:38 GMT</pubDate><ttl>60</ttl><item><title>VS2005 中通过MasterPage来更方便实现网站模板替换 </title><link>http://www.cnblogs.com/javalong/archive/2006/12/24/602050.html</link><dc:creator>javalong</dc:creator><author>javalong</author><pubDate>Sun, 24 Dec 2006 03:26:00 GMT</pubDate><guid>http://www.cnblogs.com/javalong/archive/2006/12/24/602050.html</guid><wfw:comment>http://www.cnblogs.com/javalong/comments/602050.html</wfw:comment><comments>http://www.cnblogs.com/javalong/archive/2006/12/24/602050.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/javalong/comments/commentRss/602050.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/javalong/services/trackbacks/602050.html</trackback:ping><description><![CDATA[<p>1、定制模板。</p>
<p>可以先在网站建一Skins目录，这样将所有的模板都统一放在它之下。</p>
<p>接着添加模板，在该目录下添加新项：Master.Page。命名为：&lt;指定名字&gt;.master。创建之后会发现它和新建的一个ASPX页面没什么太多区别。所以也应可以通过制作普通页面的方面来设计它。只不过，对于需要在不同场合由于不同内容来替换的地方用：Contentplaceholder组件来定义就行。这样，一个模板就制作好了。完成后的代码如：</p>
<p>&lt;%@ Master Language="C#" AutoEventWireup="true" CodeFile="Skin2.master.cs" Inherits="Skins_Skin2" %&gt;</p>
<p>&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>"&gt;</p>
<p>&lt;html xmlns="<a href="http://www.w3.org/1999/xhtml">http://www.w3.org/1999/xhtml</a>" &gt;<br>&lt;head runat="server"&gt;<br>&nbsp;&nbsp;&nbsp; &lt;title&gt;Untitled Page&lt;/title&gt;<br>&lt;/head&gt;<br>&lt;body&gt;<br>&nbsp;&nbsp;&nbsp; &lt;form id="form1" runat="server"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;nbsp;&lt;table border="1" bordercolor="#ffcc66" cellpadding="0" cellspacing="0" style="width: 606px"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td colspan="3" style="height: 234px"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:ContentPlaceHolder&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:ContentPlaceHolder ID="ContentPlaceHolder2" runat="server"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:ContentPlaceHolder&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dsfsdaf&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 4px"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:ContentPlaceHolder ID="ContentPlaceHolder4" runat="server"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sdfdsafasd122&lt;/asp:ContentPlaceHolder&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sdfsdadsafsd&lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:ContentPlaceHolder ID="ContentPlaceHolder3" runat="server"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:ContentPlaceHolder&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td style="width: 4px"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/td&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/form&gt;<br>&lt;/body&gt;<br>&lt;/html&gt;</p>
<p>2、使用模板。</p>
<p>建一个你要显示内容的ASPX页面。将里面的所有html元素全清掉。注意保留下：<br>&lt;%@ Page Language="C#" AutoEventWireup="true"&nbsp; CodeFile="Default.aspx.cs" Inherits="_Default" %&gt;<br>这行</p>
<p>完后在该面页中通过&lt;asp:Content&gt;来定义及实现每一块的在模板中通过Contentplaceholder已定义的区域。如：</p>
<p>&lt;asp:Content ID="content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="server"&gt;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:Panel ID="Panel3" runat="server" Height="50px" Width="125px"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:DropDownList name="dfgddf" ID="DropDownList1" runat="server"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:DropDownList&gt;&lt;/asp:Panel&gt;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:Panel ID="Panel4" runat="server" Height="50px" Width="125px"&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;asp:TextBox ID="TextBox2" runat="server"&gt;&lt;/asp:TextBox&gt;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/asp:Panel&gt;<br>&nbsp;&nbsp;&nbsp; <br>&lt;/asp:Content&gt;</p>
<p>完后，再在Page_PreInit中加载需要用的模板。如：</p>
<p>&nbsp;&nbsp;&nbsp;protected void Page_PreInit(object sender, EventArgs e)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; this.MasterPageFile = "Skins/Skin2.master";//实际使用时，可以在别处先设定模板，完后该处读取指定的模板，当然这个处理就可以多种多样了。<br>&nbsp;&nbsp;&nbsp; }</p>
<img src ="http://www.cnblogs.com/javalong/aggbug/602050.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41960/" target="_blank">[新闻]微软4.86亿美元收购Greenfield</a>]]></description></item><item><title>.Net程序如何防止被注入(整站通用)</title><link>http://www.cnblogs.com/javalong/archive/2006/11/23/570213.html</link><dc:creator>javalong</dc:creator><author>javalong</author><pubDate>Thu, 23 Nov 2006 11:42:00 GMT</pubDate><guid>http://www.cnblogs.com/javalong/archive/2006/11/23/570213.html</guid><wfw:comment>http://www.cnblogs.com/javalong/comments/570213.html</wfw:comment><comments>http://www.cnblogs.com/javalong/archive/2006/11/23/570213.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/javalong/comments/commentRss/570213.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/javalong/services/trackbacks/570213.html</trackback:ping><description><![CDATA[<p>防止sql注入，通常一个一个文件修改不仅麻烦而且还有漏掉的危险，下面我说一上如何从整个系统防止注入。<br><br>做到以下三步，相信的程序将会比较安全了，而且对整个网站的维护也将会变的简单。<br><br>一、数据验证类：<br>parameterCheck.cs <br><br>
<div class=code>public class parameterCheck{<br>&nbsp;public static bool isEmail(string emailString){<br>&nbsp;return System.Text.RegularExpressions.Regex.IsMatch(emailString, "['//w_-]+(//.['//w_-]+)*@['//w_-]+(//.['//w_-]+)*//.[a-zA-Z]{2,4}");<br>&nbsp;}<br>&nbsp;public static bool isInt(string intString){<br>&nbsp;return System.Text.RegularExpressions.Regex.IsMatch(intString ,"^(//d{5}-//d{4})|(//d{5})$");<br>&nbsp;}<br>&nbsp;public static bool isUSZip(string zipString){<br>&nbsp;return System.Text.RegularExpressions.Regex.IsMatch(zipString ,"^-[0-9]+$|^[0-9]+$");<br>&nbsp;}<br>} </div>
<br><br>二、Web.config<br><br>在你的Web.config文件中，在&lt;appSettings&gt;下面增加一个标签：如下<br>
<div class=code>&nbsp;&lt;appSettings&gt;<br>&nbsp;&lt;add key="safeParameters" value="OrderID-int32,CustomerEmail-email,ShippingZipcode-USzip" /&gt;<br>&lt;/appSettings&gt; </div>
<br>其中key是&lt;saveParameters&gt;后面的值为"OrderId-int32"等，其中"-"前面表示参数的名称比如：OrderId，后面的int32表示数据类型。<br><br>三、Global.asax<br><br>在Global.asax中增加下面一段：<br><br>
<div class=code>protected void Application_BeginRequest(Object sender, EventArgs e){<br>&nbsp;String[] safeParameters = System.Configuration.ConfigurationSettings.AppSettings["safeParameters"].ToString().Split(',');<br>&nbsp;for(int i= 0 ;i &lt; safeParameters.Length; i++){<br>&nbsp;String parameterName = safeParameters[i].Split('-')[0];<br>&nbsp;String parameterType = safeParameters[i].Split('-')[1];<br>&nbsp;isValidParameter(parameterName, parameterType);<br>&nbsp;}<br>} <br><br>public void isValidParameter(string parameterName, string parameterType){<br>&nbsp;string parameterValue = Request.QueryString[parameterName];<br>&nbsp;if(parameterValue == null) return;<br><br>&nbsp;if(parameterType.Equals("int32")){<br>&nbsp;if(!parameterCheck.isInt(parameterValue)) Response.Redirect("parameterError.aspx");<br>&nbsp;}<br>&nbsp;else if (parameterType.Equals("double")){<br>&nbsp;if(!parameterCheck.isDouble(parameterValue)) Response.Redirect("parameterError.aspx");<br>&nbsp;}<br>&nbsp;else if (parameterType.Equals("USzip")){<br>&nbsp;if(!parameterCheck.isUSZip(parameterValue)) Response.Redirect("parameterError.aspx");<br>&nbsp;}<br>&nbsp;else if (parameterType.Equals("email")){<br>&nbsp;if(!parameterCheck.isEmail(parameterValue)) Response.Redirect("parameterError.aspx");<br>&nbsp;}<br>} <br>&nbsp;</div>
<br>以后需要修改的时候我们只需要修改以上三个文件，对整个系统的维护将会大大提高效率，当然你可以根据自己的需要增加其它的变量参数和数据类型。 
<img src ="http://www.cnblogs.com/javalong/aggbug/570213.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41959/" target="_blank">[新闻]苹果已然取代微软地位成行业众矢之的</a>]]></description></item><item><title>不走寻常路 设计ASP.NET应用程序的七大绝招</title><link>http://www.cnblogs.com/javalong/archive/2006/10/30/544414.html</link><dc:creator>javalong</dc:creator><author>javalong</author><pubDate>Mon, 30 Oct 2006 04:55:00 GMT</pubDate><guid>http://www.cnblogs.com/javalong/archive/2006/10/30/544414.html</guid><wfw:comment>http://www.cnblogs.com/javalong/comments/544414.html</wfw:comment><comments>http://www.cnblogs.com/javalong/archive/2006/10/30/544414.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/javalong/comments/commentRss/544414.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/javalong/services/trackbacks/544414.html</trackback:ping><description><![CDATA[随着微软.NET的流行，ASP.NET越来越为广大开发人员所接受。作为ASP.NET的开发人员，我们不仅需要掌握其基本的原理，更要多多实践，从实践中获取真正的开发本领。在我们的实际开发中，往往基本的原理满足不了开发需求，我们更多的要积累一些开发技巧，本文就向大家介绍一些实用技巧，希望对大家的开发有所裨益。
<p>　　1. ~ 的用法</p>
<p>　　一般的情况下，我们是使用./../ 这样的相对路径来确定和规划我们的资源(比如图片、资源文件)，但这种方式下在我们部署应用的时候，可能会出错，另外对于.ascx的控件中如果包含了一个图片，而这个控件被我们在不同层次的两个目录的aspx文件分别引用时，问题就会出现了。</p>
<p>　　~/image/about.bmp 是一种非常好的方法，它以Web应用程序的根目录为起始点，这样使得比你使用./image/about.bmp这样的方式要更加灵活和方便。有一点不好，是这种方式是在ASP.NET运行时动态解析的，所以在IDE设计模式中，你可能不能预览它。</p>
<p>　　2. 在刷新和提交页面后，保存你的页面滚动条的位置</p>
<p>　　经常有这样的情况，我们需要用户提交一个表单，但是表单中有超过500+个?控件或文本框要填写，也就是说用户需要拉动IE的滚动条才能够填得完，那么假如用户正在可见IE范围的2/3处，选择了一个组合框的值，很不幸组合框是服务器端的，那么也就意味着页面会提交一次，而当用户再看见刷新过的页面时，页面确定在3/1的地方也就是显示在页面最开始的地方，用户只有拖动鼠标，然后接着刚刚的地方再填写剩下的250个控件，很不幸，370个控件又需要他选择一下? </p>
<p>　　用下面的方法可以很快地确定和记住你提交前的位置。</p>
<p>　　网上的Old Dog Learns New Tricks也有一个类似的例子Maintain Scroll Position in any Page Element，不过他使用了Web Behavior这意味着你需要使用一个.htc文件</p>
<p>Private Sub RetainScrollPosition()</p>
<p>Dim saveScrollPosition As New StringBuilder<br>Dim setScrollPosition As New StringBuilder </p>
<p>RegisterHiddenField("__SCROLLPOS", "0")<br>saveScrollPosition.Append("＜script language='javascript'＞")<br>saveScrollPosition.Append("function saveScrollPosition() {")<br>saveScrollPosition.Append(" document.forms[0].__SCROLLPOS.value = thebody.scrollTop;")<br>saveScrollPosition.Append("}")<br>saveScrollPosition.Append("thebody.onscroll=saveScrollPosition;")<br>saveScrollPosition.Append("＜/script＞") </p>
<p>RegisterStartupScript("saveScroll", saveScrollPosition.ToString())</p>
<p>If (Page.IsPostBack = True) Then</p>
<p>setScrollPosition.Append("＜script language='javascript'＞")<br>setScrollPosition.Append("function setScrollPosition() {")<br>setScrollPosition.Append(" thebody.scrollTop = " &amp; Request("__SCROLLPOS") &amp; ";")<br>setScrollPosition.Append("}")<br>setScrollPosition.Append("thebody.onload=setScrollPosition;")<br>setScrollPosition.Append("＜/script＞")<br>RegisterStartupScript("setScroll", setScrollPosition.ToString()) </p>
<p>End If</p>
<p>End Sub</p>
<p>Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<br>RetainScrollPosition()<br>End Sub <br>　　3. DataList使用不同风格的模板 </p>
<p>　　这招也非常实用，你可以制作两个不同的模板或表现形式，分别以.ascx控件的形式保存，运行时根据某个条件动态的选择使用其中的一个模板，另外ScottGu认为ItemDataBound方法也可以定制你显示的表现，比如加亮某个元素或是加一个促销广告图等等。</p>
<p>Dim theme As String<br>theme = DropDownList1.SelectedValue </p>
<p>DataList1.ItemTemplate = Page.LoadTemplate(theme &amp; ".ascx") ---Cool<br>DataList1.DataSource = DS<br>DataList1.DataBind() </p>
<p>　　4. 设置服务器端控件的焦点</p>
<p>Private Sub SetFocus(ByVal controlToFocus As Control)<br>Dim scriptFunction As New StringBuilder<br>Dim scriptClientId As String </p>
<p>scriptClientId = controlToFocus.ClientID<br>scriptFunction.Append("＜script language='javascript'＞")<br>scriptFunction.Append("document.getElementById('" &amp; scriptClientId &amp; "').focus();")<br>scriptFunction.Append("＜/script＞")<br>RegisterStartupScript("focus", scriptFunction.ToString())<br>End Sub </p>
<p>Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load<br>If (Page.IsPostBack = False) Then<br>SetFocus(TextBox1)<br>End If<br>End Sub </p>
<p>　　5. 滚动DataGrid</p>
<p>　　这招就更简单了，有时候你的页面只有一个固定的地方，但是需要显示非常多的数据，亦或是也不定，但是只有固定的一个地方给你显示它了。这时你就可以用下面这招，自动出滚动条，而且适用许多控件。很简单将你的控件放在一个DIV中将overflow属性设置成auto</p>
<p>＜div style=&#8220;height:400px;width:200px;overflow:auto&#8221;＞<br>＜asp:datagrid id=&#8220;MyGrid&#8221; runat=&#8220;server&#8221;/＞<br>＜/div＞ </p>
<p>　　6. 动态创建控件</p>
<p>　　利用PlaceHolder控件，这东西在ASP.NET 2.0 Mutil-View和Master Page中运用的就更加多了。</p>
<p>Sub Page_Load()<br>Dim i as Integer<br>For i=0 to 4 <br>Dim myUserControl as Control<br>myUserControl = Page.LoadControl(&#8220;foo.ascx&#8221;)<br>PlaceHolder1.Controls.Add(myUserControl)<br>PlaceHolder1.Controls.Add(New LiteralControl(&#8220;＜br＞&#8221;))<br>Next i<br>End Sub </p>
<p>　　7. 客户端代码的使用</p>
<p>　　1). 可以使用客户端的事件代码，但两者不能同名，服务器端代码的名是你可以控制的。对于非ASP.NET的标准控件的自定义控件必须实现IAttributeAccessor接口或从WebControl派生并且可用expando属性</p>
<p>asp:ImageButton id=&#8220;foo&#8221; <br>ImageUrl=&#8220;start.jpg&#8221;<br>onMouseOver=&#8220;rollover(this);&#8221; <br>onMouseOut=&#8220;rollout(this)&#8221;<br>rolloversrc=&#8220;myrollover.jpg&#8221;<br>rolloutsrc=&#8220;myrollout.jpg&#8221;<br>runat=&#8220;server&#8221;/＞ </p>
<p>＜input type=Button onClick=&#8220;return clientHandler()&#8221; <br>onServerClick=&#8220;Button1_Click&#8221; &#8230; /＞ </p>
<p>　　2). 使用可以在Postback之前执行客户端代码，当然也可以取消这次Postback，另外也可以访问客户端该页所有的客户端控件。</p>
<p>Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) 　Handles MyBase.Load<br>　RegisterOnSubmitStatement("foo", "return confirm('Are you sure you want to submit the order?');")<br>End Sub </p>
<p>　　3). 还有更复杂的我认为不实用，大家可以自己去看，主要是运用RegisterStartupScript和JavaScript的技术</p>
<img src ="http://www.cnblogs.com/javalong/aggbug/544414.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41958/" target="_blank">[新闻]Intel 收购 Poky Linux ,为 MID 注入新的动力</a>]]></description></item><item><title>进制转换（一）</title><link>http://www.cnblogs.com/javalong/archive/2006/10/16/530318.html</link><dc:creator>javalong</dc:creator><author>javalong</author><pubDate>Mon, 16 Oct 2006 06:49:00 GMT</pubDate><guid>http://www.cnblogs.com/javalong/archive/2006/10/16/530318.html</guid><wfw:comment>http://www.cnblogs.com/javalong/comments/530318.html</wfw:comment><comments>http://www.cnblogs.com/javalong/archive/2006/10/16/530318.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnblogs.com/javalong/comments/commentRss/530318.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/javalong/services/trackbacks/530318.html</trackback:ping><description><![CDATA[<div id=title>生活中其实很多地方的计数方法都多少有点不同进制的影子。</div>
<div>
<p>比如我们最常用的10进制，其实起源于人有10个指头。如果我们的祖先始终没有摆脱手脚不分的境况，我想我们现在一定是在使用20进制。</p>
<p>至于二进制&#8230;&#8230;没有袜子称为0只袜子，有一只袜子称为1只袜子，但若有两袜子，则我们常说的是：1双袜子。</p>
<p>生活中还有：七进制，比如星期。十六进制，比如小时或&#8220;一打&#8221;，六十进制，比如分钟或角度&#8230;&#8230;</p>
<p>&nbsp;</p>
<h3><a name=6.1>6.1</a> 为什么需要八进制和十六进制?</h3>
<p>　</p>
<p>编程中，我们常用的还是10进制&#8230;&#8230;必竟C/C++是高级语言。</p>
<p>比如：</p>
<p>int a = 100,b = 99;</p>
<p>不过，由于数据在计算机中的表示，最终以二进制的形式存在，所以有时候使用二进制，可以更直观地解决问题。</p>
<p>但，二进制数太长了。比如int 类型占用4个字节，32位。比如100，用int类型的二进制数表达将是：</p>
<p>0000 0000 0000 0000 0110 0100</p>
<p>面对这么长的数进行思考或操作，没有人会喜欢。因此，C,C++ 没有提供在代码直接写二进制数的方法。</p>
<p>　</p>
<p>用16进制或8进制可以解决这个问题。因为，<strong>进制越大，数的表达长度也就越短</strong>。不过，为什么偏偏是16或8进制，而不其它的，诸如9或20进制呢？</p>
<p>2、8、16，分别是2的1次方，3次方，4次方。这一点使得三种进制之间可以非常直接地互相转换。8进制或16进制缩短了二进制数，但保持了二进制数的表达特点。在下面的关于进制转换的课程中，你可以发现这一点。</p>
<p>　</p>
<h3><a name=6.2>6.2</a> 二、八、十六进制数转换到十进制数</h3>
<h4><a name=6.2.1>6.2.1</a> 二进制数转换为十进制数</h4>
<p>二进制数第0位的权值是2的0次方，第1位的权值是2的1次方&#8230;&#8230;</p>
<p>所以，设有一个二进制数：0110 0100，转换为10进制为：</p>
<p>下面是竖式：</p>
<p>　</p>
<p>0110 0100 换算成 十进制</p>
<p>　</p>
<p>第0位 0 * 2<sup>0</sup>&nbsp; =&nbsp; 0</p>
<p>第1位 0 * 2<sup>1</sup>&nbsp; =&nbsp; 0</p>
<p>第2位 1 * 2<sup>2</sup>&nbsp; =&nbsp; 4</p>
<p>第3位 0 * 2<sup>3</sup>&nbsp; =&nbsp; 0</p>
<p>第4位 0 * 2<sup>4</sup>&nbsp; =&nbsp; 0</p>
<p>第5位 1 * 2<sup>5</sup>&nbsp; = 32</p>
<p>第6位 1 * 2<sup>6</sup>&nbsp; = 64</p>
<p>第7位 0 * 2<sup>7</sup>&nbsp; =&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp; ＋</p>
<p>---------------------------</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 100&nbsp;&nbsp; </p>
<p>　</p>
<p>用横式计算为：</p>
<p>0 * 2<sup>0 </sup>+ 0 * 2<sup>1</sup> + 1 * 2<sup>2</sup> + 1 * 2<sup>3</sup> + 0 * 2<sup>4</sup> + 1 * 2<sup>5</sup> + 1 * 2<sup>6</sup> + 0 * 2<sup>7</sup> = 100</p>
<p>　</p>
<p>0乘以多少都是0，所以我们也可以直接跳过值为0的位：</p>
<p>1 * 2<sup>2</sup> + 1 * 2<sup>3</sup> +&nbsp; 1 * 2<sup>5</sup> + 1 * 2<sup>6</sup> = 100</p>
<p>　</p>
<h4><a name=6.2.2>6.2.2</a> 八进制数转换为十进制数</h4>
<p>八进制就是逢8进1。</p>
<p>八进制数采用 0～7这八数来表达一个数。</p>
<p>八进制数第0位的权值为8的0次方，第1位权值为8的1次方，第2位权值为8的2次方&#8230;&#8230;</p>
<p>所以，设有一个八进制数：1507，转换为十进制为：</p>
<p>用竖式表示：</p>
<p>　</p>
<p>1507换算成十进制。</p>
<p>　</p>
<p>第0位 7 * 8<sup>0</sup> = 7</p>
<p>第1位 0 * 8<sup>1</sup> = 0 </p>
<p>第2位 5 * 8<sup>2</sup> = 320 </p>
<p>第3位 1 * 8<sup>3</sup> = 512&nbsp;&nbsp; ＋</p>
<p>--------------------------</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 839</p>
<p>同样，我们也可以用横式直接计算：</p>
<p>7 * 8<sup>0</sup> + 0 * 8<sup>1</sup> + 5 * 8<sup>2</sup> + 1 * 8<sup>3 = </sup>839</p>
<p>　</p>
<p>结果是，八进制数 1507 转换成十进制数为 839</p>
<p>　</p>
<h4><a name=6.2.3>6.2.3</a> 八进制数的表达方法</h4>
<p>C,C++语言中，如何表达一个八进制数呢？如果这个数是 876,我们可以断定它不是八进制数，因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567，或12345670，那么它是八进制数还是10进制数，都有可能。</p>
<p>所以,C,C++规定，<strong>一个数如果要指明它采用八进制，必须在它前面加上一个0</strong>，如：123是十进制，但0123则表示采用八进制。这就是八进制数在C、C++中的表达方法。</p>
<p>由于C和C++都没有提供二进制数的表达方法，所以，这里所学的八进制是我们学习的，CtC++语言的数值表达的第二种进制法。</p>
<p>现在，对于同样一个数，比如是100，我们在代码中可以用平常的10进制表达，例如在变量初始化时：</p>
<p>　</p>
<p>int a = 100;</p>
<p>我们也可以这样写：</p>
<p>int a = 0144; //0144是八进制的100；一个10进制数如何转成8进制，我们后面会学到。</p>
<p>　</p>
<p>千万记住，用八进制表达时，你不能少了最前的那个0。否则计算机会通通当成10进制。不过，有一个地方使用八进制数时，却不能使用加0，那就是我们前面学的用于表达字符的&#8220;转义符&#8221;表达法。</p>
<p>　</p>
<h4><a name=6.2.4>6.2.4</a> 八进制数在转义符中的使用</h4>
<p>我们学过用一个转义符'\'加上一个特殊字母来表示某个字符的方法，如：'\n'表示换行(line)，而'\t'表示Tab字符，'\''则表示单引号。今天我们又学习了一种使用转义符的方法：转义符'\'后面接一个八进制数，用于表示ASCII码等于该值的字符。</p>
<p>比如，查一下<a href="http://www.d2school.com/bcyl/bhcpp/newls/ls05.htm#美国信息交换标准码">第5章中的ASCII码表</a>，我们找到问号字符（?)的ASCII值是63，那么我们可以把它转换为八进值：77，然后用 '\77'来表示'?'。由于是八进制，所以本应写成 '\077'，但因为C,C++规定不允许使用斜杠加10进制数来表示字符，所以这里的0可以不写。</p>
<p>事实上我们很少在实际编程中非要用转义符加八进制数来表示一个字符，所以，6.2.4小节的内容，大家仅仅了解就行。</p>
<p>　</p>
<h4><a name=6.2.5>6.2.5</a> 十六进制数转换成十进制数</h4>
<p>2进制，用两个阿拉伯数字：0、1；</p>
<p>8进制，用八个阿拉伯数字：0、1、2、3、4、5、6、7；</p>
<p>10进制，用十个阿拉伯数字：0到9；</p>
<p>16进制，用十六个阿拉伯数字&#8230;&#8230;等等，阿拉伯人或说是印度人，只发明了10个数字啊？</p>
<p>　</p>
<p>16进制就是逢16进1，但我们只有0~9这十个数字，所以我们<strong>用A，B，C，D，E，F这五个字母来分别表示10，11，12，13，14，15</strong>。字母不区分大小写。</p>
<p>十六进制数的第0位的权值为16的0次方，第1位的权值为16的1次方，第2位的权值为16的2次方&#8230;&#8230;</p>
<p>所以，在第N（N从0开始）位上，如果是是数 X （X 大于等于0，并且X小于等于 15，即：F）表示的大小为 X * 16的N次方。</p>
<p>假设有一个十六进数 2AF5, 那么如何换算成10进制呢？</p>
<p>　</p>
<p>用竖式计算： </p>
<p>　</p>
<p>2AF5换算成10进制:</p>
<p>　</p>
<p>第0位：&nbsp; 5 * 16<sup>0</sup> = 5</p>
<p>第1位：&nbsp; F * 16<sup>1</sup> = 240</p>
<p>第2位：&nbsp; A * 16<sup>2</sup> = 2560</p>
<p>第3位：&nbsp; 2 * 16<sup>3</sup> = 8192&nbsp; ＋</p>
<p>-------------------------------------</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10997&nbsp; </p>
<p>直接计算就是：</p>
<p>5 * 16<sup>0</sup>&nbsp; + F * 16<sup>1</sup> + A * 16<sup>2 </sup>+<sup> </sup>2 * 16<sup>3</sup> = 10997</p>
<p>(别忘了，在上面的计算中，A表示10，而F表示15)</p>
<p>　</p>
<p>现在可以看出，所有进制换算成10进制，关键在于各自的权值不同。</p>
<p>假设有人问你，十进数 1234 为什么是 一千二百三十四？你尽可以给他这么一个算式：</p>
<p>1234 = 1 * 10<sup>3</sup> + 2 * 10<sup>2</sup> + 3 * 10<sup>1</sup> + 4 * 10<sup>0</sup></p>
<p>　</p>
<h4><a name=6.2.6>6.2.6</a>&nbsp; 十六进制数的表达方法</h4>
<p>如果不使用特殊的书写形式，16进制数也会和10进制相混。随便一个数：9876，就看不出它是16进制或10进制。</p>
<p>C，C++规定，<strong>16进制数必须以 0x开头</strong>。比如 0x1表示一个16进制数。而1则表示一个十进制。另外如：0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意：0x中的0是数字0，而不是字母O)</p>
<p>以下是一些用法示例：</p>
<p>　</p>
<p>int a = 0x100F;</p>
<p>int b = 0x70 + a;</p>
<p>　</p>
<p>至此，我们学完了所有进制：10进制，8进制，16进制数的表达方式。最后一点很重要，C/C++中，10进制数有正负之分，比如12表示正12，而-12表示负12，；但<strong>8进制和16进制只能用达无符号的正整数</strong>，如果你在代码中里：-078，或者写：-0xF2,C,C++并不把它当成一个负数。</p>
<p>　</p>
<h4><a name=6.2.7>6.2.7</a> 十六进制数在转义符中的使用</h4>
<p>　</p>
<p>转义符也可以接一个16进制数来表示一个字符。如在6.2.4小节中说的 '?' 字符，可以有以下表达方式：</p>
<p>　</p>
<p>'?'&nbsp;&nbsp;&nbsp;&nbsp; //直接输入字符</p>
<p>'\77'&nbsp;&nbsp; //用八进制，此时可以省略开头的0</p>
<p>'\0x3F' //用十六进制</p>
<p>　</p>
<p>同样，这一小节只用于了解。除了空字符用八进制数 '\0' 表示以外，我们很少用后两种方法表示一个字符。</p>
<p>　</p>
<h3><a name=6.3>6.3</a> 十进制数转换到二、八、十六进制数</h3>
<h4><a name=6.3.1>6.3.1</a> 10进制数转换为2进制数</h4>
<p>　</p>
<p>给你一个十进制，比如：6，如果将它转换成二进制数呢？</p>
<p>　</p>
<p>10进制数转换成二进制数，这是一个连续除2的过程：</p>
<p><strong>把要转换的数，除以2，得到商和余数，</strong></p>
<p><strong>将商继续除以2，直到商为0。最后将所有余数倒序排列，得到数就是转换结果。</strong></p>
<p>　</p>
<p>听起来有些糊涂？我们结合例子来说明。比如要转换6为二进制数。</p>
<p>　</p>
<p>&#8220;把要转换的数，除以2，得到商和余数&#8221;。</p>
<p>&nbsp;那么：</p>
<p>&nbsp;要转换的数是6， 6 &#247; 2，得到<strong>商是3，余数是0</strong>。 （不要告诉我你不会计算6&#247;3！）</p>
<p>&nbsp;</p>
<p>&#8220;将商继续除以2,直到商为0&#8230;&#8230;&#8221;</p>
<p>现在商是3，还不是0，所以继续除以2。</p>
<p>那就： 3 &#247; 2, 得到<strong>商是1,余数是1</strong>。</p>
<p>　</p>
<p>&#8220;将商继续除以2，直到商为0&#8230;&#8230;&#8221;</p>
<p>现在商是1，还不是0，所以继续除以2。</p>
<p>那就： 1 &#247; 2, 得到<strong>商是0，余数是1</strong> （拿笔纸算一下，1&#247;2是不是商0余1!）</p>
<p>　</p>
<p>&#8220;将商继续除以2，直到商为0&#8230;&#8230;最后将所有余数倒序排列&#8221;</p>
<p>好极！现在商已经是0。</p>
<p>我们三次计算依次得到余数分别是：0、1、1，将所有余数倒序排列，那就是：110了！</p>
<p>　</p>
<p>6转换成二进制，结果是110。</p>
<p>　</p>
<p>把上面的一段改成用表格来表示，则为：</p>
<table borderColor=#000000 cellSpacing=0 cellPadding=0 width="42%" border=1>
    <tbody>
        <tr>
            <td width="25%">被除数</td>
            <td width="25%">计算过程</td>
            <td width="25%">商</td>
            <td width="25%">余数</td>
        </tr>
        <tr>
            <td width="25%">6</td>
            <td width="25%">6/2</td>
            <td width="25%">3</td>
            <td width="25%">0</td>
        </tr>
        <tr>
            <td width="25%">3</td>
            <td width="25%">3/2</td>
            <td width="25%">1</td>
            <td width="25%">1</td>
        </tr>
        <tr>
            <td width="25%">1</td>
            <td width="25%">1/2</td>
            <td width="25%">0</td>
            <td width="25%">1</td>
        </tr>
    </tbody>
</table>
<p>（在计算机中，&#247;用 / 来表示） </p>
<p>　 </p>
<p>如果是在考试时，我们要画这样表还是有点费时间，所更常见的换算过程是使用下图的连除： </p>
<p><img height=315 alt="" src="http://www.d2school.com/bcyl/bhcpp/newls/images/ls06/ls06.h2.gif" width=441 border=0> </p>
<p>（图：1） </p>
<p>请大家对照图，表，及文字说明，并且自已拿笔计算一遍如何将6转换为二进制数。 </p>
<p>说了半天，我们的转换结果对吗？二进制数110是6吗？你已经学会如何将二进制数转换成10进制数了，所以请现在就计算一下110换成10进制是否就是6。 </p>
<p>　 </p>
<h4><a name=6.3.2>6.3.2</a> 10进制数转换为8、16进制数</h4>
<p>　</p>
<p>非常开心，10进制数转换成8进制的方法，和转换为2进制的方法类似，惟一变化：除数由2变成8。</p>
<p>　</p>
<p>来看一个例子，如何将十进制数120转换成八进制数。</p>
<p>　</p>
<p>用表格表示：</p>
<table borderColor=#000000 cellSpacing=0 cellPadding=0 width="42%" border=1>
    <tbody>
        <tr>
            <td width="25%">被除数</td>
            <td width="25%">计算过程</td>
            <td width="25%">商</td>
            <td width="25%">余数</td>
        </tr>
        <tr>
            <td width="25%">120</td>
            <td width="25%">120/8</td>
            <td width="25%">15</td>
            <td width="25%">0</td>
        </tr>
        <tr>
            <td width="25%">15</td>
            <td width="25%">15/8</td>
            <td width="25%">1</td>
            <td width="25%">7</td>
        </tr>
        <tr>
            <td width="25%">1</td>
            <td width="25%">1/8</td>
            <td width="25%">0</td>
            <td width="25%">1</td>
        </tr>
    </tbody>
</table>
<p>　</p>
<p>120转换为8进制，结果为：170。</p>
<p>　</p>
<p>非常非常开心，10进制数转换成16进制的方法，和转换为2进制的方法类似，惟一变化：除数由2变成16。</p>
<p>　</p>
<p>同样是120，转换成16进制则为：</p>
<table borderColor=#000000 cellSpacing=0 cellPadding=0 width="42%" border=1>
    <tbody>
        <tr>
            <td width="25%">被除数</td>
            <td width="25%">计算过程</td>
            <td width="25%">商</td>
            <td width="25%">余数</td>
        </tr>
        <tr>
            <td width="25%">120</td>
            <td width="25%">120/16</td>
            <td width="25%">7</td>
            <td width="25%">8</td>
        </tr>
        <tr>
            <td width="25%">7</td>
            <td width="25%">7/16</td>
            <td width="25%">0</td>
            <td width="25%">7</td>
        </tr>
    </tbody>
</table>
<p>　</p>
<p>120转换为16进制，结果为：78。</p>
<p>　</p>
<p>请拿笔纸，采用（图：1）的形式，演算上面两个表的过程。</p>
<p>　</p>
<h3><a name=6.4>6.4</a> 二、十六进制数互相转换</h3>
<p>　</p>
<p>二进制和十六进制的互相转换比较重要。不过这二者的转换却不用计算，每个C，C++程序员都能做到看见二进制数，直接就能转换为十六进制数，反之亦然。</p>
<p>我们也一样，只要学完这一小节，就能做到。</p>
<p>首先我们来看一个二进制数：1111，它是多少呢？</p>
<p>你可能还要这样计算：1 * 2<sup>0</sup> + 1 * 2<sup>1</sup> + 1 * 2<sup>2 </sup>+ 1 * 2<sup>3</sup> = 1 * 1 + 1 * 2 + 1 * 4 + 1 * 8 = 15。</p>
<p>然而，由于1111才4位，所以我们必须直接记住它每一位的权值，并且是从高位往低位记，：8、4、2、1。即，最高位的权值为2<sup>3 </sup>＝ 8，然后依次是 2<sup>2</sup> ＝ 4，<sup>21</sup>＝2， 2<sup>0</sup> ＝ 1。</p>
<p>　</p>
<p>记住8421，对于任意一个4位的二进制数，我们都可以很快算出它对应的10进制值。</p>
<p>　</p>
<p>下面列出四位二进制数 xxxx 所有可能的值（中间略过部分）</p>
<p>　</p>
<p>仅4位的2进制数&nbsp; 快速计算方法&nbsp;&nbsp; 十进制值&nbsp;&nbsp;&nbsp;&nbsp; 十六进值</p>
<p>1111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 8 + 4 + 2 + 1&nbsp; = 15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; F</p>
<p>1110&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 8 + 4 + 2 + 0&nbsp; = 14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E</p>
<p>1101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 8 + 4 + 0 + 1&nbsp; = 13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; D&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>1100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 8 + 4 + 0 + 0&nbsp; = 12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>1011&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 8 + 4 + 0 + 1&nbsp; = 11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>1010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 8 + 0 + 2 + 0&nbsp; = 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; A</p>
<p>1001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 8 + 0 + 0 + 1&nbsp; = 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9</p>
<p>....</p>
<p>0001&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0 + 0 + 0 + 1&nbsp; = 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1</p>
<p>0000&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = 0 + 0 + 0 + 0&nbsp; = 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0</p>
<p>　</p>
<p><strong>二进制数要转换为十六进制，就是以4位一段，分别转换为十六进制。</strong></p>
<p>如(上行为二制数，下面为对应的十六进制)：</p>
<p>　</p>
<p>1111 1101 ， 1010 0101 ， 1001 1011</p>
<p>&nbsp;F&nbsp;&nbsp;&nbsp; D&nbsp;&nbsp; ，&nbsp; A&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp; ，&nbsp; 9&nbsp;&nbsp;&nbsp; B&nbsp;&nbsp;</p>
<p>　</p>
<p>反过来，当我们看到 FD时，如何迅速将它转换为二进制数呢？</p>
<p>先转换F：</p>
<p>看到F，我们需知道它是15（可能你还不熟悉A～F这五个数），然后15如何用8421凑呢？应该是8 + 4 + 2 + 1，所以四位全为1 ：1111。</p>
<p>接着转换 D：</p>
<p>看到D，知道它是13，13如何用8421凑呢？应该是：8 + 2 + 1,即：1011。</p>
<p>所以,FD转换为二进制数，为： 1111 1011</p>
<p>　</p>
<p>由于十六进制转换成二进制相当直接，所以，我们需要将一个十进制数转换成2进制数时，也可以先转换成16进制，然后再转换成2进制。</p>
<p>比如，十进制数 1234转换成二制数，如果要一直除以2，直接得到2进制数，需要计算较多次数。所以我们可以先除以16，得到16进制数:</p>
<table borderColor=#000000 cellSpacing=0 cellPadding=0 width="42%" border=1>
    <tbody>
        <tr>
            <td width="25%">被除数</td>
            <td width="25%">计算过程</td>
            <td width="25%">商</td>
            <td width="25%">余数</td>
        </tr>
        <tr>
            <td width="25%">1234</td>
            <td width="25%">1234/16</td>
            <td width="25%">77</td>
            <td width="25%">2</td>
        </tr>
        <tr>
            <td width="25%">77</td>
            <td width="25%">77/16</td>
            <td width="25%">4</td>
            <td width="25%">13 (D)</td>
        </tr>
        <tr>
            <td width="25%">4</td>
            <td width="25%">4/16</td>
            <td width="25%">0</td>
            <td width="25%">4</td>
        </tr>
    </tbody>
</table>
<p>　</p>
<p>结果16进制为： 0x4D2</p>
<p>　</p>
<p>然后我们可直接写出0x4D2的二进制形式： 0100 1011 0010。</p>
<p>其中对映关系为：</p>
<p>0100 -- 4</p>
<p>1011 -- D</p>
<p>0010 -- 2</p>
<p>　</p>
<p>同样，如果一个二进制数很长，我们需要将它转换成10进制数时，除了前面学过的方法是，我们还可以先将这个二进制转换成16进制，然后再转换为10进制。</p>
<p>下面举例一个int类型的二进制数：</p>
<p>01101101 11100101 10101111 00011011</p>
<p>我们按四位一组转换为16进制： 6D E5 AF 1B</p>
</div>
<img src ="http://www.cnblogs.com/javalong/aggbug/530318.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41957/" target="_blank">[新闻]雅虎将关闭社交网站Mash</a>]]></description></item><item><title>关于ISA2004内网卡网线拔插造成ISA代理失效问题的一种解决方法(下列错误而失败:0x80072</title><link>http://www.cnblogs.com/javalong/archive/2006/09/24/513087.html</link><dc:creator>javalong</dc:creator><author>javalong</author><pubDate>Sun, 24 Sep 2006 01:02:00 GMT</pubDate><guid>http://www.cnblogs.com/javalong/archive/2006/09/24/513087.html</guid><wfw:comment>http://www.cnblogs.com/javalong/comments/513087.html</wfw:comment><comments>http://www.cnblogs.com/javalong/archive/2006/09/24/513087.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/javalong/comments/commentRss/513087.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/javalong/services/trackbacks/513087.html</trackback:ping><description><![CDATA[<div>关于ISA内网卡网线拔插造成ISA代理失效问题的一种解决方法<br><br>关于ISA内网卡网线拔下一段时间再接上（或者交换机断电一段时间），ISA代理失效<br><br>没拔网线前，ISA防火墙服务在内网卡IP侦听tcp8080,tcp1745,udp1745<br>拔掉网线后，ISA防火墙服务在内网卡IP不在侦听以上三个端口<br>重新接上网线，ISA防火墙服务在内网卡IP侦听tcp1745,udp1745，没有再侦听tcp8080了<br>随即在ISA警报中发现提示：<br>资源分配失败<br>Web Proxy 筛选器无法将其套接字绑定到 10.0.0.1 端口 8080。这可能是由于另一个服务在使用同一端口或由于网络适配器不能正常工作而引起的。要解决此问题，请重新启动 Microsoft 防火墙服务。在事件属性的数据区域内指定的错误代码指明了失败的原因。<br>由于下列错误而失败:0x80072740<br>此时ISA的代理功能已失效<br><br>此问题的解决可以通过禁用Windows的&#8220;媒体感知&#8221;功能<br><a href="http://support.microsoft.com/KB/239924" target=_blank><font color=#0000ff>http://support.microsoft.com/KB/239924</font></a><br>需要修改注册表<br>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters <br>添加以下注册表值： <br>数值名称：DisableDHCPMediaSense<br>数据类型：REG_DWORD<br>数值数据范围：0，1（False，True）默认值：0 (False) <br>说明：此参数控制 DHCP 媒体感知行为。如果将该数值数据设置为 1，DHCP（甚至非 DHCP）客户端忽略接口中的媒体感知事件。默认情况下，媒体感知事件触发 DHCP 客户端执行操作，如试图获取租约（当发生连接事件时），或者使接口和路由无效（当发生连接断开事件时）。<br><br>添加该注册表值并设置为１后，重启计算机，此问题得到解决！<br><br>无论是拔掉网线还是重新接上网线，ＩＳＡ防火墙服务都依然侦听tcp8080,tcp1745,udp1745三个端口<br>如何在 Windows 中为 TCP/IP 禁用&#8220;媒体感知&#8221;<br>察看这篇文章对应的产品<br>文章 ID : 239924 <br>最后更新日期 : 2004年6月25日 <br>版本 : 6.0 <br><br>重要说明：本文包含有关修改注册表的信息。修改注册表之前，一定要备份注册表，并且一定要知道在发生问题时如何还原注册表。有关如何备份、还原和编辑注册表的信息，请单击下面的文章编号，以查看 Microsoft 知识库中相应的文章：<br>256986 Microsoft Windows 注册表说明<br>本页内容<br>概要 <br>更多信息 <br>这篇文章中的信息适用于: <br><br>概要<br>Windows 包含&#8220;媒体感知&#8221;功能。在使用传输控制协议/Internet 协议 (TCP/IP) 且基于 Windows 的计算机上，您可以使用此功能检测网络媒体是否处于&#8220;链接状态&#8221;。按照定义，&#8220;链接状态&#8221;是指物理媒体与网络连接或插入到网络中。例如，假定计算机上有一个 10bt 或 100bt 的物理媒体，以太网网络适配器和集线器通常有一个指示当前连接状态的&#8220;链接&#8221;灯。这与 Windows 检测链接时的情况相同。只要 Windows 检测到媒体处于&#8220;故障&#8221;状态，它就会从该适配器中删除绑定的协议，直到检测到该适配器重新&#8220;正常工作&#8221;时为止。在某些情况下，您可能不希望网络适配器检测此状态，您可以通过编辑注册表进行此类配置。<br><br>注意：10b2 或同轴 (RG-58) 以太网电缆不是基于连接的媒体。为此，如果使用此类电缆，Windows 并不试图检测&#8220;连接&#8221;状态。 <br>返回页首 <br><br>更多信息<br>警告：注册表编辑器使用不当可导致严重问题，可能需要重新安装操作系统。Microsoft 不能保证您可以解决因注册表编辑器使用不当而导致的问题。使用注册表编辑器需要您自担风险。<br>若要禁止网络适配器检测链接状态，请按照下列步骤操作：<br><br>注意：NetBEUI 和 IPX 无法识别&#8220;媒体感知&#8221;。 1. 使用注册表编辑器 (Regedt32.exe) 来查看下面的注册表项： <br>HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters <br>添加以下注册表值： <br>数值名称：DisableDHCPMediaSense<br>数据类型：REG_DWORD - 布尔值<br>数值数据范围：0，1（False，True）默认值：0 (False) <br>说明：此参数控制 DHCP 媒体感知行为。如果将该数值数据设置为 1，DHCP（甚至非 DHCP）客户端忽略接口中的媒体感知事件。默认情况下，媒体感知事件触发 DHCP 客户端执行操作，如试图获取租约（当发生连接事件时），或者使接口和路由无效（当发生连接断开事件时）。 <br>2. 重新启动计算机。 <br>注意：禁用&#8220;媒体感知&#8221;功能会带来一些副作用。例如，如果计算机上有两个网络适配器，并且启用了&#8220;媒体感知&#8221;功能，如果一个网络适配器不能正常工作，则将其取消绑定并删除关联的路由，以便通过另一个网络适配器完成所有通讯（假设此处有默认网关）。此处，如果您是漫游用户（使用便携式计算机），您可以使用&#8220;媒体感知&#8221;功能连接到任何网络上，并且可以使用所有功能，而无需重新启动、重订租约以及续约等。在禁用&#8220;媒体感知&#8221;并重新启动后，Windows 仍然在任务栏上显示&#8220;网络已断开&#8221;图标；在电缆断开连接时，&#8220;ipconfig&#8221;命令仍然显示&#8220;Media State .....:Cable Disconnected&#8221;消息。然而，网络接口绑定到了 TCP/IP，通过查看路由表即可验证这一点：可以使用&#8220;route print&#8221;命令，它显示接口 IP 地址（也可以 ping 为 NIC 分配的 IP 地址）。</div>
<img src ="http://www.cnblogs.com/javalong/aggbug/513087.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41956/" target="_blank">[新闻]中国互联网战争局势图</a>]]></description></item><item><title>关于三层结构的一点使用心得与开发建议</title><link>http://www.cnblogs.com/javalong/archive/2006/09/19/508366.html</link><dc:creator>javalong</dc:creator><author>javalong</author><pubDate>Tue, 19 Sep 2006 04:26:00 GMT</pubDate><guid>http://www.cnblogs.com/javalong/archive/2006/09/19/508366.html</guid><wfw:comment>http://www.cnblogs.com/javalong/comments/508366.html</wfw:comment><comments>http://www.cnblogs.com/javalong/archive/2006/09/19/508366.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnblogs.com/javalong/comments/commentRss/508366.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/javalong/services/trackbacks/508366.html</trackback:ping><description><![CDATA[信息系统典型的开发架构是： <br>MS SQLSERVER + 存储过程 +DataAccess+ DAL + Model + BLL + UI<br><br>&#8226; 数据库设计 ： 在建表的时候，请添加对字段的描述。这将为后来的所有自动创建注释和前台页面做好准备。（字段描述可在codeplus里进行直接录入设置）<br><br>&#8226; 存储过程 ：商业逻辑基本不放在这个里面，存储过程的主要作用是完成对表的基本操，包括添加、删除、修改、选择等。而所有这些代码 CodePlus 都可以自动为您生成。<br><br>&#8226; DataAccess ：这个东西是从 Microsoft Application Blocks for .NET 中改造而来的，采用 CodePlus 的一个基础就是使用这个 DataAccess 做为连接和处理数据库的层。具体关于这个 DataAccess 在 CSDN 上我的 Blog 里已经发表了一篇 《 个性化Microsoft Data Access V2.0 以适用于应用系统开发 》，该Database.cs可点击这里下载 <a href="http://www.codeplus.net/download/DatabaseCSV2.0.rar" target=_blank><font color=#000000>DatabaseCSV2.0.rar</font></a><br><br>&#8226; DAL ： 即 Data Access Layer ，数据访问层。这里实现对于数据库的基本操作方法：如 Create ， Update ， Delete ， IsExist ， Select 等，当然，你还可以有更多的方法，这一层就是提供与数据库直接交流的。但值得说明一下的是，这一层，不同与 BLL 层，在 DAL 层里面，不需要要考虑如检验数据合法性、多步逻辑操作等，因为这是 BLL 的事，而 DAL 的任务是完成一个一个原子性的针对数据库操作的功能。而这些原子性的功能由 BLL 来组装调用，再暴露给表现层以更为粗粒度的方法。打了比喻，如果把做一个系统比成建一个房子，则 DAL 就是砖厂了。或者是其他原件厂。<br>&#8226; Model ：这个层就是数据结构层了，形象地说，这就是在 C# 里面的系统对应的数据库的结构了。（当然，并不完全相同，至少我们会考虑在这里添加很多的诸如 XXXCollection 的继承 System.Collections.CollectionBase 的结构集合类。这对于 BLL 调用起来，可会方便多了。 Model 层被 DAL 、 BLL 、 UI三层调用，成为他们三层之间传递数据参数的主要结构通道。举个例子，比如前台要显示一个产品信息，则在 BLL 里面会有一个方法叫做 : <br>Public ProductInfo GetProductInfo(int prodId) 。 <br>在前台，则可以这样来调用： <br>ProductInfo info = product.GetProductInfo(prodId); <br>在 BLL 里，设计这个 GetProductInfo 时，可能会考虑很多因素，即步骤，然后最后调用 DAL 里面的一个方面 Init(int prodId,out ProductInfo info) 而得到这个 info, 并返回给上层。<br>&#8226; BLL ： Business Logic Layer ，商业逻辑层。这是系统的核心位置，因为所有的主要逻辑都是在这里实现的，看 DAL ，那是一堆砖，到 BLL 这，就是清水房了。赫赫。再经过 Pres 表现层美化实现 UI, 则一个装修过的房子就搞定了哈。所以，在 BLL 里面，将按大对象进行方法设计，在每一个方法里，可能会调用到多个 DAL 里面的小方法。再举个例子，登录，很常见的了。给表现层， BLL 只应该提供一个叫 <br>public bool SignIn(string username,string password) ；的方法。而这个方法里面，将包含： 1 、 CheckUserExist(string username),2 、 Init(string username,out UserInfo info) ， 3 、加密 info 中的 password,4 、将这个 password 和传进来的 password 进行比较，如果相同，则返回 true, 否则 false. 而这 4 步中，有 3 步是 DAL 里面的方法。加密不是哈。<br><br>&#8226; UI： 表现层。这是用户界面的设计了，涉及到的有二个方面。一、数据显示与读取的方式：在 PetShop 3.0 中看到一个很好的思路，就介绍一下，其实页面要显示的东西，主要的都来自于同 Model 层相似内容，说得不明白，换一种说法，就是，是不可以试图把一个得来的 XXXInfo 直接赋值给页面，如果页面被用户修改了内容，则是不是可以直接回读一个 XXXInfo 来，如果这样可以实现，则重用度大大提高。而且，由于思路一致，则可以由 CodePlus 来生成。或者也这是很关键的一点吧，哈哈。因为如果你的页面上要显示的有 120 项，你光写赋值，可能就要 2 个小时。如果用这个方式，读写一起完成。 5 分钟时间（ 1 秒生成， 1 秒 copy 粘贴，还有 4 分 58 秒改一改。 (CodePlus 没有聪明到能替你做一切事 J ) 。二、调用方法的粒度，在 aspx.cs 里面，做一些字符层面的过滤是必要的，然后剩下的，就交给 BLL 来做吧。 <br>
<img src ="http://www.cnblogs.com/javalong/aggbug/508366.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41955/" target="_blank">[新闻]开源多点触摸技术试运行</a>]]></description></item><item><title>さくら～歌詞   いきものがかり SAKURA 歌词</title><link>http://www.cnblogs.com/javalong/archive/2006/09/17/506614.html</link><dc:creator>javalong</dc:creator><author>javalong</author><pubDate>Sun, 17 Sep 2006 06:44:00 GMT</pubDate><guid>http://www.cnblogs.com/javalong/archive/2006/09/17/506614.html</guid><wfw:comment>http://www.cnblogs.com/javalong/comments/506614.html</wfw:comment><comments>http://www.cnblogs.com/javalong/archive/2006/09/17/506614.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/javalong/comments/commentRss/506614.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/javalong/services/trackbacks/506614.html</trackback:ping><description><![CDATA[<h4 class=TextColor1 id=subjcns!28872EE0B749BD66!128 style="MARGIN-BOTTOM: 0px">さくら　　　</h4>
<div id=msgcns!28872EE0B749BD66!128>
<div>&nbsp;</div>
<div>唄～いきものがかり</div>
<div>作詞～水野良樹</div>
<div>作曲～水野良樹</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>さくら　ひらひら舞い降りて落ちて　揺れる想いのたけを　抱き閉めた</div>
<div>君と春に　願いしあの夢は今も見えているよ　さくら舞い散る</div>
<div>&nbsp;</div>
<div>電車から　見えたのはいつかのおもかげ　二人で通った　春の大橋</div>
<div>卒業の時が来て　君は故郷（まち）を出た　色ずく川辺に　あの日を探すの</div>
<div>&nbsp;</div>
<div>それぞれの道を選び　二人は春を終わった　咲き誇る明日（みらい）は　あたしを焦らせて</div>
<div>小田急線の窓に　今年もさくらが映る　君の声が　この胸に　聞こえてくるよ</div>
<div>&nbsp;</div>
<div>
<div>
<div>さくら　ひらひら舞い降りて落ちて　揺れる想いのたけを　抱き閉めた</div>
<div>君と春に　願いしあの夢は今も見えているよ　さくら舞い散る</div>
<div>&nbsp;</div>
<div>書きかけた　手紙には「元気でいるよ」と　小さな嘘は　見透かされるね</div>
</div>
<div>めぐりゆく　この街も　春を受け入れて　今年もあの花が　つぼみをひらく</div>
<div>&nbsp;</div>
<div>君がいない日々を超えて　あたしも大人になっていく　こうやって全て忘れていくのかな</div>
</div>
<div>「本当に好きだったんだ」さくらに手を伸ばす　この想いが　今春に　つつまれていくよ</div>
<div>&nbsp;</div>
<div>
<div>さくら　ひらひら舞い降りて落ちて　揺れる想いのたけを　抱き寄せた</div>
<div>君がくれし　強き　あの言葉は　今も　胸に残る　さくら舞い行く</div>
<div>&nbsp;</div>
<div>
<div>さくら　ひらひら舞い降りて落ちて　揺れる想いのたけを　抱き閉めた</div>
<div>遠き　春に　夢見し　あの日々は空に消えていくよ</div>
<div>&nbsp;</div>
<div>
<div>さくら　ひらひら舞い降りて落ちて　春のその向こうへと歩き出す</div>
<div>君と　春に　誓いし　この夢を　強く　胸に抱いて　さくら舞い散る</div>
</div>
</div>
</div>
</div>
<img src ="http://www.cnblogs.com/javalong/aggbug/506614.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41954/" target="_blank">[新闻]国内软件外包高管集聚大连 探讨竞争与应对策略</a>]]></description></item><item><title>修改数据库逻辑名</title><link>http://www.cnblogs.com/javalong/archive/2006/09/09/499888.html</link><dc:creator>javalong</dc:creator><author>javalong</author><pubDate>Sat, 09 Sep 2006 12:46:00 GMT</pubDate><guid>http://www.cnblogs.com/javalong/archive/2006/09/09/499888.html</guid><wfw:comment>http://www.cnblogs.com/javalong/comments/499888.html</wfw:comment><comments>http://www.cnblogs.com/javalong/archive/2006/09/09/499888.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/javalong/comments/commentRss/499888.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/javalong/services/trackbacks/499888.html</trackback:ping><description><![CDATA[ALTER DATABASE XXX MODIFY FILE (NAME = AAA, NEWNAME = BBB) 
<img src ="http://www.cnblogs.com/javalong/aggbug/499888.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41953/" target="_blank">[新闻]Mac OS X 10.5.5 Build 9F23 测试版和 Safari 4 预览版</a>]]></description></item><item><title>Windows 2003 R2 一些SN</title><link>http://www.cnblogs.com/javalong/archive/2006/09/09/499887.html</link><dc:creator>javalong</dc:creator><author>javalong</author><pubDate>Sat, 09 Sep 2006 12:44:00 GMT</pubDate><guid>http://www.cnblogs.com/javalong/archive/2006/09/09/499887.html</guid><wfw:comment>http://www.cnblogs.com/javalong/comments/499887.html</wfw:comment><comments>http://www.cnblogs.com/javalong/archive/2006/09/09/499887.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/javalong/comments/commentRss/499887.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/javalong/services/trackbacks/499887.html</trackback:ping><description><![CDATA[MDGJK-PF6YQ-PD8DJ-RFQVM-7WKWG<br>QV9XT-CV22K-D8MGR-4MD86-8MYR6<br>VB96B-VFG8F-74XWJ-W67Q7-8X82B<br>M6F6D-VFQWH-CGWRB-RC7JR-VCV4W<br>C49DP-CPHCB-MDGP3-MG334-W2V4W<br>DR4B3-66VPQ-CK3VB-Y3BPY-2CJ2G<br>JYCJX-CHTJX-RGH97-86WM9-RB6B6<br>MVDYF-X7FBW-H29XT-TCKWW-RBYRT<br>BXJXT-9F88V-XXQWV-3MWMG-FYDJT<br>MHFT3-YGHV4-G86P4-KQXJ3-GYH4W
<img src ="http://www.cnblogs.com/javalong/aggbug/499887.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41953/" target="_blank">[新闻]Mac OS X 10.5.5 Build 9F23 测试版和 Safari 4 预览版</a>]]></description></item><item><title>map blog</title><link>http://www.cnblogs.com/javalong/archive/2006/08/08/470617.html</link><dc:creator>javalong</dc:creator><author>javalong</author><pubDate>Tue, 08 Aug 2006 00:44:00 GMT</pubDate><guid>http://www.cnblogs.com/javalong/archive/2006/08/08/470617.html</guid><wfw:comment>http://www.cnblogs.com/javalong/comments/470617.html</wfw:comment><comments>http://www.cnblogs.com/javalong/archive/2006/08/08/470617.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/javalong/comments/commentRss/470617.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/javalong/services/trackbacks/470617.html</trackback:ping><description><![CDATA[<font face="Times New Roman" color=#000000 size=3>&lt;script language="javascript" src="http://blog.mapbar.com/blogmap/mapjs.jsp?nid=06080808404809060671&amp;width=190&amp;height=303"&gt;&lt;/script&gt;</font>
<img src ="http://www.cnblogs.com/javalong/aggbug/470617.html?type=1" width = "1" height = "1" /><br><br><a href="http://news.cnblogs.com/n/41952/" target="_blank">[新闻]十月上市 Google手机HTC Dream官方图现</a>]]></description></item></channel></rss>