﻿<?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>语源科技BlogJava-小飞侠的窝</title><link>http://www.blogjava.net/XXOO/</link><description>职业扫盲</description><language>zh-cn</language><lastBuildDate>Sat, 18 Apr 2026 11:12:17 GMT</lastBuildDate><pubDate>Sat, 18 Apr 2026 11:12:17 GMT</pubDate><ttl>60</ttl><item><title>web services 到底是什么？</title><link>http://www.blogjava.net/XXOO/archive/2008/09/20/230089.html</link><dc:creator>小飞侠</dc:creator><author>小飞侠</author><pubDate>Sat, 20 Sep 2008 01:15:00 GMT</pubDate><guid>http://www.blogjava.net/XXOO/archive/2008/09/20/230089.html</guid><wfw:comment>http://www.blogjava.net/XXOO/comments/230089.html</wfw:comment><comments>http://www.blogjava.net/XXOO/archive/2008/09/20/230089.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/XXOO/comments/commentRss/230089.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/XXOO/services/trackbacks/230089.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;首先，web services翻译过来就是web服务的意思。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Web &nbsp; Service是一种使用一个标准的输出接口来定义实现程序代码提供的功能，以便让外界通过这个标准的输出接口来调用各种服务的平台。Web &nbsp; service这个平台，定义了应用程序如何在Web上实现互操作性。你可以用任何你喜欢的语言，在任何你喜欢的平台上写Web &nbsp; service &nbsp; ，只要我们可以通过Web &nbsp; service标准对这些服务进行查询和访问就可以了。它是通过SOAP协议封装XML语言提供的信息，然后通过WSDL（Web &nbsp; Service &nbsp; Description &nbsp; Language，Web &nbsp; Service描述语言）来对这个服务进行解说和描述，这就可以构成一个标准的输出接口，然后再通过UDDI（Universal &nbsp; Description &nbsp; Discovery &nbsp; and &nbsp; Integeration）在Internet上公布这个服务接口。而其它的用户（包括建立服务者本身）就可以利用这些来使用这种服务了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;简单的说，就是一种通过URL就可以调用组件的方式。或者说，组件不在本地，也许在英国，也许美国吧，呵呵。比如，你想计算一个复杂的数学运算，例如计算sin75是多少。以前你用的是一个COM组件对吧？现在，我们可以通过URL来远程调用它了。这样的好处是，如果组件原来有一点点小的BUG，那么他们就给你更新了。你不用再下载了。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SOAP(简单对象访问协议)是一种用于在非集中、分布式环境中交换信息的轻型网络协议。它是一种基于 XML 的协议，由三部分组成： <br />
<br />
1.一个定义框架的封套，用于描述消息的内容以及如何对它进行处理 <br />
2.一组表示应用程序定义的数据类型实例的编码规则 <br />
3.一个表示远程过程调用和响应的约定 <br />
<br />
iAMT编程接口是iAMT FirmWare提供的基于 SOAP 的 API，可与远程主机上运行的 ISV 管理控制台软件进行通信。在 Web 服务描述语言（WSDL）中对 API 进行了描述。每个固件服务（也称为接口）都有一个 WSDL 文件。
<img src ="http://www.blogjava.net/XXOO/aggbug/230089.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/XXOO/" target="_blank">小飞侠</a> 2008-09-20 09:15 <a href="http://www.blogjava.net/XXOO/archive/2008/09/20/230089.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>华为C/C++笔试题及答案</title><link>http://www.blogjava.net/XXOO/archive/2008/09/18/229610.html</link><dc:creator>小飞侠</dc:creator><author>小飞侠</author><pubDate>Thu, 18 Sep 2008 03:03:00 GMT</pubDate><guid>http://www.blogjava.net/XXOO/archive/2008/09/18/229610.html</guid><wfw:comment>http://www.blogjava.net/XXOO/comments/229610.html</wfw:comment><comments>http://www.blogjava.net/XXOO/archive/2008/09/18/229610.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/XXOO/comments/commentRss/229610.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/XXOO/services/trackbacks/229610.html</trackback:ping><description><![CDATA[&nbsp;
<p><span lang="EN-US">1.</span>写出判断<span lang="EN-US">ABCD</span>四个表达式的是否正确<span lang="EN-US">, </span>若正确<span lang="EN-US">, </span>写出经过表达式中<span lang="EN-US"> a</span>的值<span lang="EN-US">(3</span>分<span lang="EN-US">)<br />
int a = 4;<br />
(A)a += (a++); (B) a += (++a) ;(C) (a++) += a;(D) (++a) += (a++);<br />
a = ?<br />
</span>答：<span lang="EN-US">C</span>错误，左侧不是一个有效变量，不能赋值，可改为<span lang="EN-US">(++a) += a;<br />
</span>改后答案依次为<span lang="EN-US">9,10,10,11</span></p>
<p><span lang="EN-US">2.</span>某<span lang="EN-US">32</span>位系统下<span lang="EN-US">, C++</span>程序，请计算<span lang="EN-US">sizeof </span>的值<span lang="EN-US">(5</span>分<span lang="EN-US">).<br />
char str[] = &#8220;http://www.ibegroup.com/&#8221;<br />
char *p = str ;<br />
int n = 10;<br />
</span>请计算<span lang="EN-US"><br />
sizeof (str ) = </span>？（<span lang="EN-US">1</span>）<span lang="EN-US"><br />
sizeof ( p ) = </span>？（<span lang="EN-US">2</span>）<span lang="EN-US"><br />
sizeof ( n ) = </span>？（<span lang="EN-US">3</span>）<span lang="EN-US"><br />
void Foo ( char str[100]){<br />
</span>请计算<span lang="EN-US"><br />
sizeof( str ) = </span>？（<span lang="EN-US">4</span>）<span lang="EN-US"><br />
}<br />
void *p = malloc( 100 );<br />
</span>请计算<span lang="EN-US"><br />
sizeof ( p ) = </span>？（<span lang="EN-US">5</span>）<span lang="EN-US"><br />
</span>答：（<span lang="EN-US">1</span>）<span lang="EN-US">17 </span>（<span lang="EN-US">2</span>）<span lang="EN-US">4 </span>（<span lang="EN-US">3</span>）<span lang="EN-US"> 4 </span>（<span lang="EN-US">4</span>）<span lang="EN-US">4 </span>（<span lang="EN-US">5</span>）<span lang="EN-US">4</span></p>
<p><span lang="EN-US">3. </span>回答下面的问题<span lang="EN-US">. (4</span>分<span lang="EN-US">)<br />
(1).</span>头文件中的<span lang="EN-US"> ifndef/define/endif </span>干什么用？预处理<span lang="EN-US"><br />
</span>答：防止头文件被重复引用<span lang="EN-US"><br />
(2). </span>＃<span lang="EN-US">i nclude </span>和 ＃<span lang="EN-US">i nclude &#8220;filename.h&#8221; </span>有什么区别？<span lang="EN-US"><br />
</span>答：前者用来包含开发环境提供的库头文件，后者用来包含自己编写的头文件。<span lang="EN-US"><br />
(3).</span>在<span lang="EN-US">C++ </span>程序中调用被<span lang="EN-US"> C </span>编译器编译后的函数，为什么要加<span lang="EN-US"> extern &#8220;C&#8221;</span>声明？<span lang="EN-US"><br />
</span>答：函数和变量被<span lang="EN-US">C++</span>编译后在符号库中的名字与<span lang="EN-US">C</span>语言的不同，被<span lang="EN-US">extern "C"</span>修饰的变<span lang="EN-US"><br />
</span>量和函数是按照<span lang="EN-US">C</span>语言方式编译和连接的。由于编译后的名字不同，<span lang="EN-US">C++</span>程序不能直接调<span lang="EN-US"><br />
</span>用<span lang="EN-US">C </span>函数。<span lang="EN-US">C++</span>提供了一个<span lang="EN-US">C </span>连接交换指定符号<span lang="EN-US">extern&#8220;C&#8221;</span>来解决这个问题。<span lang="EN-US"><br />
(4). switch()</span>中不允许的数据类型是<span lang="EN-US">?<br />
</span>答：实型</p>
<p><span lang="EN-US">4. </span>回答下面的问题<span lang="EN-US">(6</span>分<span lang="EN-US">)<br />
(1).Void GetMemory(char **p, int num){<br />
*p = (char *)malloc(num);<br />
}<br />
void Test(void){<br />
char *str = NULL;<br />
GetMemory(&amp;str, 100);<br />
strcpy(str, "hello");<br />
printf(str);<br />
}<br />
</span>请问运行<span lang="EN-US">Test </span>函数会有什么样的结果？<span lang="EN-US"><br />
</span>答：输出<span lang="EN-US">&#8220;hello&#8221;<br />
(2). void Test(void){<br />
char *str = (char *) malloc(100);<br />
strcpy(str, &#8220;hello&#8221;);<br />
free(str);<br />
if(str != NULL){<br />
strcpy(str, &#8220;world&#8221;);<br />
printf(str);<br />
}<br />
}<br />
</span>请问运行<span lang="EN-US">Test </span>函数会有什么样的结果？<span lang="EN-US"><br />
</span>答：输出<span lang="EN-US">&#8220;world&#8221;<br />
(3). char *GetMemory(void){<br />
char p[] = "hello world";<br />
return p;<br />
}<br />
void Test(void){<br />
char *str = NULL;<br />
str = GetMemory();<br />
printf(str);<br />
}<br />
</span>请问运行<span lang="EN-US">Test </span>函数会有什么样的结果？<span lang="EN-US"><br />
</span>答：无效的指针，输出不确定</p>
<p><span lang="EN-US">5. </span>编写<span lang="EN-US">strcat</span>函数<span lang="EN-US">(6</span>分<span lang="EN-US">)<br />
</span>已知<span lang="EN-US">strcat</span>函数的原型是<span lang="EN-US">char *strcat (char *strDest, const char *strSrc);<br />
</span>其中<span lang="EN-US">strDest </span>是目的字符串，<span lang="EN-US">strSrc </span>是源字符串。<span lang="EN-US"><br />
</span>（<span lang="EN-US">1</span>）不调用<span lang="EN-US">C++/C </span>的字符串库函数，请编写函数<span lang="EN-US"> strcat<br />
</span>答：<span lang="EN-US"><br />
VC</span>源码：<span lang="EN-US"><br />
char * __cdecl strcat (char * dst, const char * src)<br />
{<br />
char * cp = dst;<br />
while( *cp )<br />
cp++; /* find end of dst */<br />
while( *cp++ = *src++ ) ; /* Copy src to end of dst */<br />
return( dst ); /* return dst */<br />
}<br />
</span>（<span lang="EN-US">2</span>）<span lang="EN-US">strcat</span>能把<span lang="EN-US">strSrc </span>的内容连接到<span lang="EN-US">strDest</span>，为什么还要<span lang="EN-US">char * </span>类型的返回值？<span lang="EN-US"><br />
</span>答：方便赋值给其他变量</p>
<p><span lang="EN-US">6.MFC</span>中<span lang="EN-US">CString</span>是类型安全类么？<span lang="EN-US"><br />
</span>答：不是，其它数据类型转换到<span lang="EN-US">CString</span>可以使用<span lang="EN-US">CString</span>的成员函数<span lang="EN-US">Format</span>来转换</p>
<p><span lang="EN-US">7.C++</span>中为什么用模板类。<span lang="EN-US"><br />
</span>答：<span lang="EN-US">(1)</span>可用来创建动态增长和减小的数据结构<span lang="EN-US"><br />
</span>（<span lang="EN-US">2</span>）它是类型无关的，因此具有很高的可复用性。<span lang="EN-US"><br />
</span>（<span lang="EN-US">3</span>）它在编译时而不是运行时检查数据类型，保证了类型安全<span lang="EN-US"><br />
</span>（<span lang="EN-US">4</span>）它是平台无关的，可移植性<span lang="EN-US"><br />
</span>（<span lang="EN-US">5</span>）可用于基本数据类型</p>
<p><span lang="EN-US">8.CSingleLock</span>是干什么的。<span lang="EN-US"><br />
</span>答：同步多个线程对一个数据类的同时访问</p>
<p><span lang="EN-US">9.NEWTEXTMETRIC </span>是什么。<span lang="EN-US"><br />
</span>答：物理字体结构，用来设置字体的高宽大小</p>
<p><span lang="EN-US">10.</span>程序什么时候应该使用线程，什么时候单线程效率高。<span lang="EN-US"><br />
</span>答：<span lang="EN-US">1</span>．耗时的操作使用线程，提高应用程序响应<span lang="EN-US"><br />
2</span>．并行操作时使用线程，如<span lang="EN-US">C/S</span>架构的服务器端并发线程响应用户的请求。<span lang="EN-US"><br />
3</span>．多<span lang="EN-US">CPU</span>系统中，使用线程提高<span lang="EN-US">CPU</span>利用率<span lang="EN-US"><br />
4</span>．改善程序结构。一个既长又复杂的进程可以考虑分为多个线程，成为几个独立或半独<span lang="EN-US"><br />
</span>立的运行部分，这样的程序会利于理解和修改。<span lang="EN-US"><br />
</span>其他情况都使用单线程。</p>
<p><span lang="EN-US">11.Windows</span>是内核级线程么。<span lang="EN-US"><br />
</span>答：见下一题</p>
<p><span lang="EN-US">12.Linux</span>有内核级线程么。<span lang="EN-US"><br />
</span>答：线程通常被定义为一个进程中代码的不同执行路线。从实现方式上划分，线程有两<span lang="EN-US"><br />
</span>种类型：<span lang="EN-US">&#8220;</span>用户级线程<span lang="EN-US">&#8221;</span>和<span lang="EN-US">&#8220;</span>内核级线程<span lang="EN-US">&#8221;</span>。 用户线程指不需要内核支持而在用户程序<span lang="EN-US"><br />
</span>中实现的线程，其不依赖于操作系统核心，应用进程利用线程库提供创建、同步、调度<span lang="EN-US"><br />
</span>和管理线程的函数来控制用户线程。这种线程甚至在象<span lang="EN-US"> DOS </span>这样的操作系统中也可实现<span lang="EN-US"><br />
</span>，但线程的调度需要用户程序完成，这有些类似<span lang="EN-US"> Windows 3.x </span>的协作式多任务。另外一<span lang="EN-US"><br />
</span>种则需要内核的参与，由内核完成线程的调度。其依赖于操作系统核心，由内核的内部<span lang="EN-US"><br />
</span>需求进行创建和撤销，这两种模型各有其好处和缺点。用户线程不需要额外的内核开支<span lang="EN-US"><br />
</span>，并且用户态线程的实现方式可以被定制或修改以适应特殊应用的要求，但是当一个线<span lang="EN-US"><br />
</span>程因<span lang="EN-US"> I/O </span>而处于等待状态时，整个进程就会被调度程序切换为等待状态，其他线程得不<span lang="EN-US"><br />
</span>到运行的机会；而内核线程则没有各个限制，有利于发挥多处理器的并发优势，但却占<span lang="EN-US"><br />
</span>用了更多的系统开支。<span lang="EN-US"> <br />
Windows NT</span>和<span lang="EN-US">OS/2</span>支持内核线程。<span lang="EN-US">Linux </span>支持内核级的多线程</p>
<p><span lang="EN-US">13.C++</span>中什么数据分配在栈或堆中，<span lang="EN-US">New</span>分配数据是在近堆还是远堆中？<span lang="EN-US"><br />
</span>答：栈<span lang="EN-US">: </span>存放局部变量，函数调用参数<span lang="EN-US">,</span>函数返回值，函数返回地址。由系统管理<span lang="EN-US"><br />
</span>堆<span lang="EN-US">: </span>程序运行时动态申请，<span lang="EN-US">new </span>和　<span lang="EN-US">malloc</span>申请的内存就在堆上</p>
<p><span lang="EN-US">14.</span>使用线程是如何防止出现大的波峰。<span lang="EN-US"><br />
</span>答：意思是如何防止同时产生大量的线程，方法是使用线程池，线程池具有可以同时提<span lang="EN-US"><br />
</span>高调度效率和限制资源使用的好处，线程池中的线程达到最大数时，其他线程就会排队<span lang="EN-US"><br />
</span>等候。</p>
<p><span lang="EN-US">15</span>函数模板与类模板有什么区别？<span lang="EN-US"><br />
</span>答：函数模板的实例化是由编译程序在处理函数调用时自动完成的，而类模板的实例化<span lang="EN-US"><br />
</span>必须由程序员在程序中显式地指定。</p>
<p><span lang="EN-US">16</span>一般数据库若出现日志满了，会出现什么情况，是否还能使用？<span lang="EN-US"><br />
</span>答：只能执行查询等读操作，不能执行更改，备份等写操作，原因是任何写操作都要记<span lang="EN-US"><br />
</span>录日志。也就是说基本上处于不能使用的状态。</p>
<p><span lang="EN-US">17 SQL Server</span>是否支持行级锁，有什么好处？<span lang="EN-US"><br />
</span>答：支持，设立封锁机制主要是为了对并发操作进行控制，对干扰进行封锁，保证数据<span lang="EN-US"><br />
</span>的一致性和准确性，行级封锁确保在用户取得被更新的行到该行进行更新这段时间内不<span lang="EN-US"><br />
</span>被其它用户所修改。因而行级锁即可保证数据的一致性又能提高数据操作的迸发性。</p>
<p><span lang="EN-US">18</span>如果数据库满了会出现什么情况，是否还能使用？<span lang="EN-US"><br />
</span>答：见<span lang="EN-US">16</span></p>
<p><span lang="EN-US">19 </span>关于内存对齐的问题以及<span lang="EN-US">sizof()</span>的输出<span lang="EN-US"> <br />
</span>答：编译器自动对齐的原因：为了提高程序的性能，数据结构（尤其是栈）应该尽可能<span lang="EN-US"><br />
</span>地在自然边界上对齐。原因在于，为了访问未对齐的内存，处理器需要作两次内存访问<span lang="EN-US"><br />
</span>；然而，对齐的内存访问仅需要一次访问。</p>
<p><span lang="EN-US">20 int i=10, j=10, k=3; k*=i+j; k</span>最后的值是？<span lang="EN-US"><br />
</span>答：<span lang="EN-US">60</span>，此题考察优先级，实际写成：<span lang="EN-US"> k*=(i+j);</span>，赋值运算符优先级最低</p>
<p><span lang="EN-US">21.</span>对数据库的一张表进行操作<span lang="EN-US">,</span>同时要对另一张表进行操作<span lang="EN-US">,</span>如何实现<span lang="EN-US">?<br />
</span>答：将操作多个表的操作放入到事务中进行处理</p>
<p><span lang="EN-US">22.TCP/IP </span>建立连接的过程<span lang="EN-US">?(3-way shake)<br />
</span>答：在<span lang="EN-US">TCP/IP</span>协议中，<span lang="EN-US">TCP</span>协议提供可靠的连接服务，采用三次握手建立一个连接。<span lang="EN-US"><br />
</span>　　第一次握手：建立连接时，客户端发送<span lang="EN-US">syn</span>包<span lang="EN-US">(syn=j)</span>到服务器，并进入<span lang="EN-US">SYN_SEND</span>状<span lang="EN-US"><br />
</span>态，等待服务器确认；<span lang="EN-US"><br />
</span>第二次握手：服务器收到<span lang="EN-US">syn</span>包，必须确认客户的<span lang="EN-US">SYN</span>（<span lang="EN-US">ack=j+1</span>），同时自己也发送一个<span lang="EN-US"><br />
SYN</span>包（<span lang="EN-US">syn=k</span>），即<span lang="EN-US">SYN+ACK</span>包，此时服务器进入<span lang="EN-US">SYN_RECV</span>状态；<span lang="EN-US"><br />
</span>　　第三次握手：客户端收到服务器的<span lang="EN-US">SYN</span>＋<span lang="EN-US">ACK</span>包，向服务器发送确认包<span lang="EN-US">ACK(ack=k+1)<br />
</span>，此包发送完毕，客户端和服务器进入<span lang="EN-US">ESTABLISHED</span>状态，完成三次握手。</p>
<p><span lang="EN-US">23.ICMP</span>是什么协议<span lang="EN-US">,</span>处于哪一层<span lang="EN-US">?<br />
</span>答：<span lang="EN-US">Internet</span>控制报文协议，处于网络层（<span lang="EN-US">IP</span>层）</p>
<p><span lang="EN-US">24.</span>触发器怎么工作的<span lang="EN-US">?<br />
</span>答：触发器主要是通过事件进行触发而被执行的，当对某一表进行诸如<span lang="EN-US">UPDATE</span>、<span lang="EN-US"> INSERT<br />
</span>、<span lang="EN-US"> DELETE </span>这些操作时，数据库就会自动执行触发器所定义的<span lang="EN-US">SQL </span>语句，从而确保对数<span lang="EN-US"><br />
</span>据的处理必须符合由这些<span lang="EN-US">SQL </span>语句所定义的规则。</p>
<p><span lang="EN-US">25.winsock</span>建立连接的主要实现步骤<span lang="EN-US">?<br />
</span>答：服务器端：<span lang="EN-US">socker()</span>建立套接字，绑定（<span lang="EN-US">bind</span>）并监听（<span lang="EN-US">listen</span>），用<span lang="EN-US">accept</span>（）<span lang="EN-US"><br />
</span>等待客户端连接。<span lang="EN-US"><br />
</span>客户端：<span lang="EN-US">socker()</span>建立套接字，连接（<span lang="EN-US">connect</span>）服务器，连接上后使用<span lang="EN-US">send()</span>和<span lang="EN-US">recv</span>（<span lang="EN-US"><br />
</span>），在套接字上写读数据，直至数据交换完毕，<span lang="EN-US">closesocket()</span>关闭套接字。<span lang="EN-US"><br />
</span>服务器端：<span lang="EN-US">accept</span>（）发现有客户端连接，建立一个新的套接字，自身重新开始等待连<span lang="EN-US"><br />
</span>接。该新产生的套接字使用<span lang="EN-US">send()</span>和<span lang="EN-US">recv</span>（）写读数据，直至数据交换完毕，<span lang="EN-US">closesock<br />
et()</span>关闭套接字。</p>
<p><span lang="EN-US">26.</span>动态连接库的两种方式<span lang="EN-US">?<br />
</span>答：调用一个<span lang="EN-US">DLL</span>中的函数有两种方法：<span lang="EN-US"><br />
1</span>．载入时动态链接（<span lang="EN-US">load-time dynamic linking</span>），模块非常明确调用某个导出函数<span lang="EN-US"><br />
</span>，使得他们就像本地函数一样。这需要链接时链接那些函数所在<span lang="EN-US">DLL</span>的导入库，导入库向<span lang="EN-US"><br />
</span>系统提供了载入<span lang="EN-US">DLL</span>时所需的信息及<span lang="EN-US">DLL</span>函数定位。<span lang="EN-US"> <br />
2</span>．运行时动态链接（<span lang="EN-US">run-time dynamic linking</span>），运行时可以通过<span lang="EN-US">LoadLibrary</span>或<span lang="EN-US">Loa<br />
dLibraryEx</span>函数载入<span lang="EN-US">DLL</span>。<span lang="EN-US">DLL</span>载入后，模块可以通过调用<span lang="EN-US">GetProcAddress</span>获取<span lang="EN-US">DLL</span>函数的<span lang="EN-US"><br />
</span>出口地址，然后就可以通过返回的函数指针调用<span lang="EN-US">DLL</span>函数了。如此即可避免导入库文件了<span lang="EN-US"><br />
</span>。</p>
<p><span lang="EN-US">27.IP</span>组播有那些好处<span lang="EN-US">?<br />
</span>答：<span lang="EN-US">Internet</span>上产生的许多新的应用，特别是高带宽的多媒体应用，带来了带宽的急剧<span lang="EN-US"><br />
</span>消耗和网络拥挤问题。组播是一种允许一个或多个发送者（组播源）发送单一的数据包<span lang="EN-US"><br />
</span>到多个接收者（一次的，同时的）的网络技术。组播可以大大的节省网络带宽，因为无<span lang="EN-US"><br />
</span>论有多少个目标地址，在整个网络的任何一条链路上只传送单一的数据包。所以说组播<span lang="EN-US"><br />
</span>技术的核心就是针对如何节约网络资源的前提下保证服务质量。</p>
<p><span lang="EN-US">28. <br />
</span>定义<span lang="EN-US"> int **a[3][4], </span>则变量占有的内存空间为：<span lang="EN-US">_____</span></p>
<p><span lang="EN-US">29.<br />
</span>编写一个函数，要求输入年月日时分秒，输出该年月日时分秒的下一秒。如输入<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="31" month="12" year="2004"><span lang="EN-US">2004</span>年<span lang="EN-US">12</span>月<span lang="EN-US">31</span>日</st1:chsdate><span lang="EN-US">23</span>时<span lang="EN-US">59</span>分<span lang="EN-US">59</span>秒，则输出<st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="1" month="1" year="2005"><span lang="EN-US">2005</span>年<span lang="EN-US">1</span>月<span lang="EN-US">1</span>日</st1:chsdate><span lang="EN-US">0</span>时<span lang="EN-US">0</span>分<span lang="EN-US">0</span>秒</p>
<p style="text-indent: 24pt"><span lang="EN-US">void ResetTheTime(int *year,int *month,int *date,int *hour,int *minute,int*second)</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">{</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp; int dayOfMonth[12]={31,28,31,30,31,30,31,31,30,31,30,31};</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp; if( *year &lt; 0&nbsp;&nbsp; || *month &lt; 1 || *month &gt; 12 ||</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *date &lt; 1&nbsp;&nbsp; || *date &gt; 31 || *hour &lt; 0&nbsp;&nbsp; || *hour &gt; 23 ||</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *minute &lt; 0 ||*minute &gt; 59|| *second &lt;0 || *second &gt;60 )</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; return;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp; if( *year%400 == 0 || *year%100 != 0 &amp;&amp; *year%4 == 0 )</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dayOfMonth[1] = 29;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp; if(*second &gt;= 60)</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp; {</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *second = 0;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *minute += 1;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(*minute &gt;= 60)</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *minute = 0;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *hour += 1;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(*hour &gt;= 24)</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *hour = 0;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *date += 1;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(*date &gt; dayOfMonth[*month-1])</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *date = 1;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *month += 1;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(*month &gt; 12)</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *month=1;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *year += 1;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp; }</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">&nbsp;&nbsp;&nbsp; return;</span></p>
<p style="text-indent: 24pt"><span lang="EN-US">} </span></p>
<img src ="http://www.blogjava.net/XXOO/aggbug/229610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/XXOO/" target="_blank">小飞侠</a> 2008-09-18 11:03 <a href="http://www.blogjava.net/XXOO/archive/2008/09/18/229610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>