??xml version="1.0" encoding="utf-8" standalone="yes"?>在线一级成人,www.亚洲一区,av网站在线免费观看http://www.aygfsteel.com/cherishchen/category/23926.htmlThe art of living is to know when to hold fast and when to let gozh-cnSat, 07 Jul 2007 14:45:49 GMTSat, 07 Jul 2007 14:45:49 GMT60裸设备(转自|络Q?/title><link>http://www.aygfsteel.com/cherishchen/archive/2007/07/04/128034.html</link><dc:creator>cherishchen</dc:creator><author>cherishchen</author><pubDate>Wed, 04 Jul 2007 02:10:00 GMT</pubDate><guid>http://www.aygfsteel.com/cherishchen/archive/2007/07/04/128034.html</guid><wfw:comment>http://www.aygfsteel.com/cherishchen/comments/128034.html</wfw:comment><comments>http://www.aygfsteel.com/cherishchen/archive/2007/07/04/128034.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/cherishchen/comments/commentRss/128034.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/cherishchen/services/trackbacks/128034.html</trackback:ping><description><![CDATA[裸设备,也叫裸分区(原始分区Q,是一U没有经q格式化Q不被Unix通过文gpȝ来读取的Ҏ(gu)字符讑֤?br><br>1Q什么叫做裸讑֤Q?br>  裸设备,也叫裸分区(原始分区Q,是一U没有经q格式化Q不被Unix通过文gpȝ来读取的Ҏ(gu)字符讑֤。它由应用程序负责对它进行读写操作。不l过文gp?br>l的~冲?br><br>2Q如何L别裸讑֤Q?br>  在Unix?dev 目录下,有许多文Ӟ其中有两个大c:(x)字符讑֤文g和块讑֤文g。字W设备特D文件进行I/O操作不经q操作系l的~冲区, 而块?br>备特D文件用来同外设q行定长的包传输。字W特D文件与外设q行I/o操作时每ơ只传输一个字W?而对于块讑֤Ҏ(gu)文g来说Q它用了cache机制Q在外设?br>内存之间一ơ可以传送一整块数据?裸设备用字W特D文件。在/dev 目录下,你可以看到许多这L(fng)文g?br><br>3Q用裸讑֤的好?br>  因ؓ(f)使用裸设备避免了再经qUnix操作pȝq一层,数据直接从Disk到Oracleq行传输Q所以用裸讑֤对于d频繁的数据库应用来说Q可以极大地<br>提高数据库系l的性能。当Ӟq是以磁盘的I/O 非常大,盘I(y)/O已经UCؓ(f)pȝ瓉的情况下才成立?如果盘d实非常频繁Q以至于盘d成ؓ(f)pȝ?br>颈的情况成立Q那么采用裸讑֤实可以大大提高性能Q最大甚臛_以提高至40Q,非常明显?br>  而且Q由于用的是原始分区,没有采用文gpȝ的管理方式,对于Unixl护文gpȝ的开销也都没有了,比如不用再维护I-nodeQ空闲块{,q也能够?br>致性能的提高?br><br>4Q如何决定是否应该用裸讑֤Q?br>  判断是否使用裸设备要从以下方面进行考虑Q首先,数据库系l本w需要已l被比较好的l过了优化。优化是一门很有些技术的话题Q很隄单地讲述。其ơ,使用<br>Unix命o(h)来L别是否存在磁盘读写瓶颈。比如Unix的vmstat, sar {命令都可以较好的进行鉴别。如果决定采用裸讑֤Q需要磁盘上q有I闲的分<br>区。否则,p新添盘Q或者对原有pȝ重新规划?br><br>5Q什么系l必M用裸讑֤Q?br>  如果使用了Oracle q行服务器选项Q则必须采用裸设备来存放所有的数据文gQ?控制文gQ重做日志文件。只有把q些文g攑ֈ裸设备上Q才能保证所?br>Oracle实例都可以读取这个数据库的文件。这是由Unix操作pȝ的特性决定的?br>  q有一U情冉|Q如果你想用异步I/OQ那么在有些Unix上也必须采用裸设备?q个需要参考具体Unix的相x档?br><br>6Q能够用一个磁盘的W一个分Z讑֤吗?<br>  可以Q但是不推荐。在Unix的比较旧的版本是银行Q磁盘的W一个分区常常包含这个磁盘的一些信息,以及(qing)逻辑L(fng)一些控制信息。若q些部分被裸讑֤覆盖?br>话,盘׃(x)变得不可识别Q导致系l崩溃?br>  较新的Unix版本不会(x)发生q样的情况,因ؓ(f)它们采用了更复杂的技术来理盘Q逻辑L(fng)一些信息?br>  但是Q除非很信不要使用盘的第一个分区来作ؓ(f)裸设备?br><br>7Q我可以把整个裸讑֤都作为Oracle的数据文件吗Q?br>  不行。必让数据文g的大稍微小于该裸设备的实际大小。至要I出两个oracle块的大小来?br><br>8Q裸讑֤应该属于那个用户Q?br>  应该由root来创讑֤Q然后再分配lOracle用户以供使用。同时还要把它归入Oracle用户所在的那个l里边(通常都是DBAQ?br><br>9Q在创徏数据文g时如何指定裸讑֤Q?br>  和普通文件没有什么太大的区别Q一样都是在单引号里边写上裸讑֤的详l\径就可以了。D一个例子:(x)要在创徏一个表I间Q用两个裸讑֤Q每个分别ؓ(f)30M?br>大小Q?br>Oracle块的大小?KQ可以用下面的命令:(x)<br>  CREATE TABLESPACE RAW_TS<br>  DATAFILE '/dev/raw1' size 30712k<br>  DATAFILE '/dev/raw2' size 30712k;<br><br>10.Oracle块的大小和裸讑֤有什么关pdQ?br>  Oracle?x)必L裸设备上物理块大的倍数?br><br>11Q如何在裸设备上q行备䆾Q?br>  在裸讑֤上,不能使用Unix实用E序来进行备份,唯一的办法是使用最基本的Unix命o(h)QDD来进行备份。比如:(x)dd if=/dev/raw1 <br>of=/dev/rmt0 bs=16k?dd的具体语法可?br>参考unix手册Q或者联机帮助。你也可以先用dd把裸讑֤上的数据文g备䆾到磁盘上Q然后再利用Unix实用E序q一步处理?br><br>12Q如果我没有使用Oracleq行服务器选项Q我可以在数据库上让一部分数据文g使用文gpȝQ另一部分使用裸设备吗Q?br>  可以。但是这L(fng)话,?x)备䆾q程更加复杂?br><br>13Q我应该把联机重做日志文件放到裸讑֤上吗Q?br>  q是一个极好的选择。联机重做日志文件是写操作非帔RJ的文gQ放到裸讑֤上非<br>常合适。如果你使用了ƈ行服务器选项Q那么联机重做日志文件必L到裸讑֤上面?br><br>14Q可以把归档日志文g攑ֈ裸设备上吗?<br>  不行。归档日志文件必L到常规的Unix文gpȝ上面Q或者直接放到磁带上面去?br><br>15Q我可以在裸讑֤上边攄多个数据文g吗?<br>  不行。所以你必须在设|裸讑֤旉常小心。太的话,?x)导致空间很快用完,太大的话Q空间就白白费了?br><br>16Q应该把几个裸设备放到同一个物理磁盘上吗?<br>  q样做不好。因Z用裸讑֤是Z提高盘d速度。而把多个裸设备放到同一个物理磁盘上?x)导致读写竞争,q样对于提高I(y)/O速度是不利的。应该尽量分?br>裸设备到不同的物理磁盘上Q最好是分散C同的盘控制器上。这是最佳选择?br><br>17Q需要把所有裸讑֤都定义成同样的大吗Q?br>  q不是必dQ但是划分成同样的大对于管理数据库比较有利?br><br>18Qؓ(f)了在Unix上用裸讑֤Q我需要改变Unix核心参数吗?<br>  不需要。但可以选择减小~冲区的大小Q如果没有别的应用也在同一台Unix机器上运行。因用了裸设备以后,不再使用Unix的系l缓冲区?br><br>19Qؓ(f)了提高读写速度Q在操作pȝU别上,q有什么办法可以采取吗Q?br>  使用RAIDQ廉价冗余磁盘阵列)也是非常有效的办法,其实那U读写非帔RJ的pȝ?br><br>20Q在考虑了以上所有方面后Q还能有什么办法可以提高性能的吗Q?br>  q就需要对Oracle q行优化Qƈ且购买更多的盘和磁盘控制器Q来分散I/OC同的盘上?br><br>     裸设备是一个物理概念,指的是一块物理硬盘或者是盘的一个分区或片区QPARTRION OR SLICEQ,在UNIXpȝ中,裸设备等同于字符讑֤Q用裸讑֤的好处在于可以用第三方的YӞ如数据库软gQ提供的I/O处理机制Q而不使用OS本n的I/O机制Q逻辑h逻辑概念Q可以包含多块物理硬盘,提供的最大的好处在于实现了存储跨盘功能,同时提供了数据复制机Ӟ提供了数据安全保护机?br> <img src ="http://www.aygfsteel.com/cherishchen/aggbug/128034.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/cherishchen/" target="_blank">cherishchen</a> 2007-07-04 10:10 <a href="http://www.aygfsteel.com/cherishchen/archive/2007/07/04/128034.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 让linux下的sqlplush回朔功能http://www.aygfsteel.com/cherishchen/archive/2007/06/26/126262.htmlcherishchencherishchenTue, 26 Jun 2007 01:58:00 GMThttp://www.aygfsteel.com/cherishchen/archive/2007/06/26/126262.htmlhttp://www.aygfsteel.com/cherishchen/comments/126262.htmlhttp://www.aygfsteel.com/cherishchen/archive/2007/06/26/126262.html#Feedback0http://www.aygfsteel.com/cherishchen/comments/commentRss/126262.htmlhttp://www.aygfsteel.com/cherishchen/services/trackbacks/126262.html    参?br>http://www.dbanotes.net/Oracle/uniread-howto.htm
或?http://bbs.chinaunix.net/forum/viewtopic.php?show_type=&p=3785067#3785067
安装uniread
然后工作目录{Ud$ORACLE_HOME/bin下,sqlplus 改名为sqlpluso
建立脚本sqlplus,内容如下Q?br>============start from here====================
#!/bin/bash
uniread sqlpluso $@
=============end to here=====================
然后使用 chmod a+x sqlplus
使所有用户可以执行sqlplus。现在启动sqlplus,可以具有像bash下一L(fng)回朔功能了?br>

cherishchen 2007-06-26 09:58 发表评论
]]>
各类开源协议介l?LUPA论坛http://www.aygfsteel.com/cherishchen/archive/2007/06/25/126146.htmlcherishchencherishchenMon, 25 Jun 2007 08:39:00 GMThttp://www.aygfsteel.com/cherishchen/archive/2007/06/25/126146.htmlhttp://www.aygfsteel.com/cherishchen/comments/126146.htmlhttp://www.aygfsteel.com/cherishchen/archive/2007/06/25/126146.html#Feedback0http://www.aygfsteel.com/cherishchen/comments/commentRss/126146.htmlhttp://www.aygfsteel.com/cherishchen/services/trackbacks/126146.html各类开源协议介l?br>LUPA论坛

  MPL LicenseQ允许免贚w发布、免费修改,但要求修改后的代码版权归软g的发赯。这U授权维护了商业软g的利益,Q它要求Zq种软g得修Ҏ(gu)偿A(ch)? 版权l该软g。这P围绕该Y件得所有代码得版权都集中在发v开发h得手中。但MPL是允怿改,无偿使用得。MPL软g寚w接没有要求?

  BSD开源协?

  BSD开源协议是一个给于用者很大自q协议。可以自q使用Q修Ҏ(gu)代码Q也可以修改后的代码作为开源或者专有Y件再发布?当你发布使用了BSD协议的代码,或则以BSD协议代码为基做二ơ开发自q产品Ӟ需要满三个条Ӟ(x)

  1Q?如果再发布的产品中包含源代码Q则在源代码中必d有原来代码中的BSD协议?

  2Q?如果再发布的只是二进制类?软gQ则需要在cd/软g的文档和版权声明中包含原来代码中的BSD协议?

  3Q?不可以用开源代码的作?机构名字和原来品的名字做市场推qѝ?

BSD代码鼓励代码׃nQ但需要尊重代码作者的著作权。BSD׃允许使用者修改和重新发布代码Q也允许使用或在BSD代码上开发商业Y件发布和销售, 因此是对商业集成很友好的协议。而很多的公司企业在选用开源品的时候都首选BSD协议Q因为可以完全控制这些第三方的代码,在必要的时候可以修Ҏ(gu)者二 ơ开发?

  Apache Licence 2.0

  Apache Licence是著名的非盈利开源组lApache采用的协议。该协议和BSDcMQ同样鼓׃码共享和重原作者的著作权,同样允许代码修改Q再发布(作ؓ(f)开源或商业软g)。需要满的条gQ?

  1Q?需要给代码的用户一份Apache Licence

  2Q?如果你修改了代码Q需要再被修改的文g中说明?

  3Q?在g伸的代码中(修改和有源代码衍生的代码中)需要带有原来代码中的协议,商标Q专利声明和其他原来作者规定需要包含的说明?

  4Q?如果再发布的产品中包含一个Notice文gQ则在Notice文g中需要带有Apache Licence。你可以在Notice中增加自q许可Q但不可以表Cؓ(f)对Apache Licence构成更改?

  Apache Licence也是对商业应用友好的许可。用者也可以在需要的时候修改代码来满需要ƈ作ؓ(f)开源或商业产品发布/销售?br>
  GPL

GPL许可证是自由软g的应用最q泛的Y件许可证Qh们可以修改程式的一个或几个副本或程式的M部分Q以此Ş成基D些程式的衍生作品。必d修改q? 的档案中附有明显的说明:(x)(zhn)修改了此一档案?qing)Q何修改的日期? (zhn)必让(zhn)发布或出版的作品,包括本程式的全部或一部分Q或内含本程式的全部或部分所衍生的作品,允许W三方在此许可证条款下用,q且不得因ؓ(f)此项授权 行ؓ(f)而收贏V?

  LGPL

  Linux是采用了GPL。GPL协议和BSD, Apache Licence{鼓׃码重用的许可很不一栗GPL的出发点是代码的开?免费使用和引?修改/衍生代码的开?免费使用Q但不允怿改后和衍生的? 码做为闭源的商业软g发布和销售。这也就是ؓ(f)什么我们能用免费的各种linuxQ包括商业公司的linux和linux上各U各L(fng)׃人,l织Q以?qing)? 业Y件公司开发的免费软g了?

  GPL协议的主要内Ҏ(gu)只要在一个Y件中使用(“使用”指类库引用,修改后的代码或者衍生代? GPL协议的品,则该软g产品必须也采用GPL协议Q既必须也是开源和免费。这是所谓的”传染?#8221;。GPL协议的品作Z个单独的产品使用没有M 问题Q还可以享受免费的优ѝ?

  ׃GPL严格要求使用了GPLcd的Y件品必M用GPL协议Q对于用GPL协议的开源代码,商业软g或者对代码有保密要求的部门׃适合集成/采用作ؓ(f)cd和二ơ开发的基础?

  其它l节如再发布的时候需要伴随GPL协议{和BSD/Apache{类?

  Public Domain

  公共域授权。将软g授权为公共域Q这些Y件包没有授权协议QQ何h都可以随意用它?

  Artistic许可

  使作者保持对q一步开发的控制?/span>

cherishchen 2007-06-25 16:39 发表评论
]]>
IPC和管道简介(转)http://www.aygfsteel.com/cherishchen/archive/2007/06/25/126139.htmlcherishchencherishchenMon, 25 Jun 2007 08:31:00 GMThttp://www.aygfsteel.com/cherishchen/archive/2007/06/25/126139.htmlhttp://www.aygfsteel.com/cherishchen/comments/126139.htmlhttp://www.aygfsteel.com/cherishchen/archive/2007/06/25/126139.html#Feedback0http://www.aygfsteel.com/cherishchen/comments/commentRss/126139.htmlhttp://www.aygfsteel.com/cherishchen/services/trackbacks/126139.html IPC和管道简?/span>
 
本文:http://www.china-pub.com 作?span>: 黄浩?span> (2001-08-08 09:00:00)

1 Interprocess Communication (IPC)和管?span lang="EN-US">Pipes 

  ?span lang="EN-US">UNIX的内核环境中Q要解决的一个首要问题是Q如何控制和处理不同q程之间的通信和数据交换?span lang="EN-US">
本章中我们将通过研究一个简单的实例Q看看在同一台机器的UNIX环境下多个进E是如何q行和被我们控制?span lang="EN-US">
Q?span lang="EN-US">fork()Ҏ(gu)Q?span lang="EN-US"> 
  能够实现q程间通信的方法有Q?span lang="EN-US">
  · Pipes 
  · Signals 
  · Message Queues 
  · Semaphores 
  · Shared Memory 
  · Sockets 
  本文先学?fn)如何?span lang="EN-US">Pipes Ҏ(gu)来实C个进E间的通信Q而其它进E间通信的方法我们将在接下来的文?span lang="EN-US">
中详l讨论?span lang="EN-US">
  ?span lang="EN-US">UNIX环境下可以用两U方式打开一个管道:(x)Formatted Piping方式?span lang="EN-US">Low Level Piping方式?span lang="EN-US"> 

1.1 popen() -- Formatted Piping 

  FILE *popen(char *command, char *type)
  描述了打开一?span lang="EN-US">I/O道的方法?span lang="EN-US">
  其中command参数描述创徏道的进E,type参数描述了管道打开的类型:(x)"r"表示以读方式打开Q?span lang="EN-US">"w"表示?span lang="EN-US">
写方式打开?span lang="EN-US">
  popen()的返回值是一个指针流?span lang="EN-US">NULL指针Q出现错误时Q?span lang="EN-US">
  使用popen()Ҏ(gu)打开的管道,在用完毕后必须?span lang="EN-US">pclose(FILE *stream)Ҏ(gu)关闭?span lang="EN-US">

  用户界面可以通过fprintf()?span lang="EN-US">fscanf()Ҏ(gu)来实现和道的通信?span lang="EN-US">

1.2 pipe() -- Low level Piping 

  int pipe(int fd[2]) 
  创Z个管道和两个文g描述W:(x)fd[0], fd[1]?span lang="EN-US">
  其中fd[0] 文g描述W将用于L作,?span lang="EN-US">fd[1] 文g描述W将用于写操作?span lang="EN-US"> 
  pipe()的成功返回值是0Q如果创建失败将q回-1q将p|原因记录?span lang="EN-US">errno中?span lang="EN-US"> 
  使用int pipe(int fd[2])创徏道的标准编E模式如下:(x)
  1Q?span lang="EN-US"> 创徏道Q?span lang="EN-US">
  2Q?span lang="EN-US"> 使用fork( )Ҏ(gu)创徏两个Q或多个Q相兌的进E;
  3Q?span lang="EN-US"> 使用read()?span lang="EN-US">write()Ҏ(gu)操作道Q?span lang="EN-US">
  4Q?span lang="EN-US"> 道使用完毕后用close(int fd)Ҏ(gu)关闭道?span lang="EN-US">

  下一D늨序中使用了该U?span lang="EN-US">Low Level Piping的方法,实现了父q程对子q程的写操作Q?span lang="EN-US">

  int pdes[2];
  pipe(pdes);
  if ( fork() == 0 )
  {/* child */
  close(pdes[1]); /* not required */
  read( pdes[0]); /* read from parent */
  .....
  }
  else
  { close(pdes[0]); /* not required */
  write( pdes[1]); /* write to child */
  .....
  }

1.4 
应用实例分析

  本节提供了一个完整的道应用实例Q其l构说明如下Q?span lang="EN-US"> 
  1Q?span lang="EN-US"> 实例含有两个E序模块plot.c (ȝ?span lang="EN-US">)?span lang="EN-US">plotter.cQ?span lang="EN-US"> 
  2Q?span lang="EN-US"> E序q行?span lang="EN-US">Solaris2.6环境下ƈ必须预先安装?span lang="EN-US">GNU的免费画图Y?span lang="EN-US">gnuplot 在以下目录:(x)/usr/local/bin/Q?span lang="EN-US">
  3Q?span lang="EN-US"> E序plot.c调用gnuplotQ?span lang="EN-US"> 
  4Q?span lang="EN-US"> Plot生两个数据流Q?span lang="EN-US"> 
  y = sin(x) 
  y = sin(1/x) 
  5Q?span lang="EN-US"> E序创Z个管道:(x)每个数据对应一个管道?span lang="EN-US">
  本实例在Solaris2.6?span lang="EN-US">UNIX环境下调试通过?span lang="EN-US">

plot.cE序的源代码如下Q?span lang="EN-US">
/* plot.c - example of unix pipe. Calls gnuplot graph drawing package to draw
graphs from within a C program. Info is piped to gnuplot */
/* Creates 2 pipes one will draw graphs of y=0.5 and y = random 0-1.0 */
/* the other graphs of y = sin (1/x) and y = sin x */

/* Also user a plotter.c module */
/* compile: cc -o plot plot.c plotter.c */

#include "externals.h"
#include 
#define DEG_TO_RAD(x) (x*180/M_PI)

double drand48();
void quit();
FILE *fp1, *fp2, *fp3, *fp4, *fopen();

main()
{ float i;
float y1,y2,y3,y4;

/* open files which will store plot data */
if ( ((fp1 = fopen("plot11.dat","w")) == NULL) ||
((fp2 = fopen("plot12.dat","w")) == NULL) ||
((fp3 = fopen("plot21.dat","w")) == NULL) ||
((fp4 = fopen("plot22.dat","w")) == NULL) )
{ printf("Error can't open one or more data files\n");
exit(1);
}

signal(SIGINT,quit); /* trap ctrl-c call quit fn */
StartPlot();
y1 = 0.5;
srand48(1); /* set seed */
for (i=0;;i+=0.01) /* increment i forever use ctrl-c to quit prog */
{ y2 = (float) drand48();
if (i == 0.0)
y3 = 0.0;
else
y3 = sin(DEG_TO_RAD(1.0/i));
y4 = sin(DEG_TO_RAD(i));

/* load files */
fprintf(fp1,"%f %f\n",i,y1);
fprintf(fp2,"%f %f\n",i,y2);
fprintf(fp3,"%f %f\n",i,y3);
fprintf(fp4,"%f %f\n",i,y4);
/* make sure buffers flushed so that gnuplot */
/* reads up to data file */ 
fflush(fp1);
fflush(fp2);
fflush(fp3);
fflush(fp4);

/* plot graph */
PlotOne();
usleep(250); /* sleep for short time */
}
}

void quit()
{ printf("\nctrl-c caught:\n Shutting down pipes\n");
StopPlot();

printf("closing data files\n");
fclose(fp1);
fclose(fp2);
fclose(fp3);
fclose(fp4);
printf("deleting data files\n");
RemoveDat();
}
The plotter.c module is as follows: 
/* plotter.c module */
/* contains routines to plot a data file produced by another program */
/* 2d data plotted in this version */
/**********************************************************************/
#include "externals.h"

static FILE *plot1,
*plot2,
*ashell;

static char *startplot1 = "plot [] [0:1.1]'plot11.dat' with lines, 
'plot12.dat' with lines\n";
static char *startplot2 = "plot 'plot21.dat' with lines, 
'plot22.dat' with lines\n";
static char *replot = "replot\n";
static char *command1= "/usr/local/bin/gnuplot> dump1";
static char *command2= "/usr/local/bin/gnuplot> dump2";
static char *deletefiles = "rm plot11.dat plot12.dat plot21.dat plot22.dat";
static char *set_term = "set terminal x11\n";

void
StartPlot(void)
{ plot1 = popen(command1, "w");
fprintf(plot1, "%s", set_term);
fflush(plot1);
if (plot1 == NULL)
exit(2);
plot2 = popen(command2, "w");
fprintf(plot2, "%s", set_term);
fflush(plot2);
if (plot2 == NULL)
exit(2);
}
void 
RemoveDat(void)
{ ashell = popen(deletefiles, "w");
exit(0);
}
void
StopPlot(void)
{ pclose(plot1);
pclose(plot2);
}
void
PlotOne(void)
{ fprintf(plot1, "%s", startplot1);
fflush(plot1);
fprintf(plot2, "%s", startplot2);
fflush(plot2);
}
void
RePlot(void)
{ fprintf(plot1, "%s", replot);
fflush(plot1);
}
The header file externals.h contains the following: 
/* externals.h */
#ifndef EXTERNALS
#define EXTERNALS

#include 
#include 
#include 

/* prototypes */

void StartPlot(void);
void RemoveDat(void);
void StopPlot(void);
void PlotOne(void);
void RePlot(void);
#endif 


作者的?sh)子邮g地址是:(x)vong@21cn.com


cherishchen 2007-06-25 16:31 发表评论
]]>
վ֩ģ壺 Ӫɽ| ̨| | Դ| | | | Ž| | ɽ| Ǹ| ۷| | Ʊ| 㽭ʡ| Ƹ| ű| | | ˫| ͤ| | | | | | | | ɽ| | | ̫| | | ƽ| | | | ¤| ɽ| |