﻿<?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>C++博客-GoGo Jeffrey-文章分类-基础与概念性的文章</title><link>http://www.cppblog.com/jeffrey78/category/570.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 19 Jun 2008 10:50:03 GMT</lastBuildDate><pubDate>Thu, 19 Jun 2008 10:50:03 GMT</pubDate><ttl>60</ttl><item><title>XML诞生的原因</title><link>http://www.cppblog.com/jeffrey78/articles/2691.html</link><dc:creator>Jeffrey.Coding</dc:creator><author>Jeffrey.Coding</author><pubDate>Thu, 12 Jan 2006 09:54:00 GMT</pubDate><guid>http://www.cppblog.com/jeffrey78/articles/2691.html</guid><wfw:comment>http://www.cppblog.com/jeffrey78/comments/2691.html</wfw:comment><comments>http://www.cppblog.com/jeffrey78/articles/2691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jeffrey78/comments/commentRss/2691.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jeffrey78/services/trackbacks/2691.html</trackback:ping><description><![CDATA[<P>在介绍XML诞生原因前，先介绍一下HTML这个纵横网络多年的语言。HTML是一套很好的展示人机界面的语言，其设计的目的就是为了更好的在网路中展示和表现数据（以各种各样出色友好的界面方便人的阅读）。出色在于对原始的，枯燥的数据的排版，使用户更好地理解数据。<BR><BR>HTML出色的表现性掩盖了它的一个严重的缺陷，就是对各种各样，千奇百怪，相差甚远的数据表达得不够。不利于那种只是单纯使用（不需要友好界面）原始数据的应用。例如数据库中的数据存储。<BR><BR>XML就是为了泥补HTML在单纯数据处理方面的缺点而诞生的。其优点在于：<BR>1。可以自由定义数据的组织协议，只要使用的各方都尊从这种协议就可以互相通讯和使用该数据。<BR>2。数据是以文本形式存储，而不是2进制形式，能够以肉眼分辨出。<BR>3。支持XML的分析器短小精悍，而且很多是免费的，支持的平台又多，所以很多原本以有的数据都可以方便转换为xml形式存储。例如，mainframe平台的数据要想存放到win32平台，只要把mainframe的数据转换为xml格式，然后传输xml文档到win32平台，win32平台再转换为能够存在于win32平台的数据形式。</P>
<P>4。现有的每一种文档都有自己的格式，比如说微软的DOC。但很难说50年后还会有能读写这种格式的软件，但如果数据内容是以XML格式存储的，那么这种文档就可以保存到永远。<BR><BR>总结，XML就是一种跨平台，跨协议的通用的数据存储语言。</P><img src ="http://www.cppblog.com/jeffrey78/aggbug/2691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jeffrey78/" target="_blank">Jeffrey.Coding</a> 2006-01-12 17:54 <a href="http://www.cppblog.com/jeffrey78/articles/2691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++字符串</title><link>http://www.cppblog.com/jeffrey78/articles/1807.html</link><dc:creator>Jeffrey.Coding</dc:creator><author>Jeffrey.Coding</author><pubDate>Thu, 15 Dec 2005 15:17:00 GMT</pubDate><guid>http://www.cppblog.com/jeffrey78/articles/1807.html</guid><wfw:comment>http://www.cppblog.com/jeffrey78/comments/1807.html</wfw:comment><comments>http://www.cppblog.com/jeffrey78/articles/1807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jeffrey78/comments/commentRss/1807.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jeffrey78/services/trackbacks/1807.html</trackback:ping><description><![CDATA[1。<STRONG>字符基础 -- ASCII, DBCS, Unicode<BR></STRONG>首先，我们强调一下几个概念<BR>c-style字符串 : 字符串的长度要通过寻找结束符来计算。例如，SBCS和MBCS都是以单个字节的0字符作为结束符。UNICODE则以双字节的0字符作为结束符。<BR>pascal-style字符串 : 字符串长度被明确指出。<BR><BR>编码模式有3种 : <BR>单子节字符集（SBCS）,所有字符都使用一个字节表示。<BR>多字节字符集（MBCS) , 一个MBCS编码包含一些一个字节长的字符，而另一些字符大于一个字节的长度。<BR>Unicode, 是一种所有的字符都使用两个字节编码的编码模式。<BR><BR>由于编码模式有3种，所以微软对字符串或字符的处理也相应分别有3种函数。明确要处理的字符串的编码模式而采用相应的处理函数是非常重要的。<BR><BR>2。<STRONG>字符串的各种封装类<BR></STRONG>因为C语言风格的字符串容易出错且不易管理，黑客们甚至利用可能存在的缓冲区溢出bug把C语言风格的字符串作为攻击目标，所以出现了很多字符串封装类。不幸的是，在某些场合下我们不知道该使用哪个字符串类，也不知道怎样把一个C风格的字符串转换成一个字符串封装类。<BR><BR>CRT提供的类 ， _bstr_t&nbsp; ， _variant_t<BR>STL 类 ， basic_string<BR><STRONG>ATL 类 ，</STRONG>CComBSTR ， CComVariant<BR><STRONG>MFC类 ，</STRONG> CString&nbsp; ， COleVariant<BR><STRONG>WTL 类 ， </STRONG>CString<BR><BR><BR><img src ="http://www.cppblog.com/jeffrey78/aggbug/1807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jeffrey78/" target="_blank">Jeffrey.Coding</a> 2005-12-15 23:17 <a href="http://www.cppblog.com/jeffrey78/articles/1807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Big Endian 与 Little Endian</title><link>http://www.cppblog.com/jeffrey78/articles/1758.html</link><dc:creator>Jeffrey.Coding</dc:creator><author>Jeffrey.Coding</author><pubDate>Wed, 14 Dec 2005 14:37:00 GMT</pubDate><guid>http://www.cppblog.com/jeffrey78/articles/1758.html</guid><wfw:comment>http://www.cppblog.com/jeffrey78/comments/1758.html</wfw:comment><comments>http://www.cppblog.com/jeffrey78/articles/1758.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/jeffrey78/comments/commentRss/1758.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/jeffrey78/services/trackbacks/1758.html</trackback:ping><description><![CDATA[<P>此文章只是留给为留给自己一个记忆而已，技术性不大。<BR><BR>1。概念<BR>Big Endian : The most significant byte is on the left end of the word<BR>Little Endian : The most significant byte is on the right end of the word<BR>例如：word 0x1234 在内存中是<BR>Big Endian : 低字节（left end of the word )0x12<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;高字节（right end of the word ）0x34<BR>End Endian : 低字节（left end of the word )0x34<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;高字节（right end of the word ）0x12<BR><BR>2。其需要注意得地方<BR>由于不同cpu对字节序的处理可能是不同，比如x86系列是使用little-endian字节序，SGI机器则是使用big-endian字节序。所以在对跨平台通讯的时候特别要注意字节序的转换。由于历史问题，网络字节序统一为big-endian。只要通讯双方机器在网络传输中统一把字节转换为big-endian，则不会出现问题。由此你可以了解到socket编程中系统为用户提供的字节序转换函数ntohl, htonl, ntohs, htons的含义所在了。</P>
<P>3。总结<BR>假设我们要在不同byte&nbsp;ordering的机器之间传输和交换数据，那该怎么办呢，有两个方法，一是全部转换成文本来传输(如XML使用的)，另一个方法两方都按照某一方的byte&nbsp;order，这时就涉及到了不同byte&nbsp;order之间相互转换的问题（网络传输标准如TCP/IP采用第二种方法并且由于历史的原因，byte&nbsp;ordering是big-endian的）。<BR><BR><BR><BR><BR><BR><BR><BR><BR><BR></P><img src ="http://www.cppblog.com/jeffrey78/aggbug/1758.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/jeffrey78/" target="_blank">Jeffrey.Coding</a> 2005-12-14 22:37 <a href="http://www.cppblog.com/jeffrey78/articles/1758.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>