??xml version="1.0" encoding="utf-8" standalone="yes"?>18视频在线观看网站,999国产精品永久免费视频app,国产精品久久久久白浆http://www.aygfsteel.com/machilansing/Lansing--Coding 不是? zh-cnWed, 07 May 2025 03:07:14 GMTWed, 07 May 2025 03:07:14 GMT60关于Linux下的Inodehttp://www.aygfsteel.com/machilansing/archive/2007/07/13/Inode.htmlLansingLansingFri, 13 Jul 2007 01:54:00 GMThttp://www.aygfsteel.com/machilansing/archive/2007/07/13/Inode.htmlhttp://www.aygfsteel.com/machilansing/comments/130004.htmlhttp://www.aygfsteel.com/machilansing/archive/2007/07/13/Inode.html#Feedback0http://www.aygfsteel.com/machilansing/comments/commentRss/130004.htmlhttp://www.aygfsteel.com/machilansing/services/trackbacks/130004.html

inode 译成中文是索引节点。每个存储设备或存储讑֤的分区(存储讑֤是硬盘、Y盘、U?... ... Q被格式化ؓ文gpȝ后,应该有两部䆾Q一部䆾是inodeQ另一部䆾是BlockQBlock是用来存储数据用的。而inode呢,是用来存储q些数据的信息,q些信息包括文g大小、属丅R归属的用户l、读写权限等。inode为每个文件进行信息烦引,所以就有了inode的数倹{操作系l根据指令,能通过inode值最快的扑ֈ相对应的文g?

做个比喻Q比如一本书Q存储设备或分区q当于q本书,Block相当于书中的每一,inode q当于q本书前面的目录Q一本书有很多的内容Q如果想查找某部份的内容Q我们可以先查目录,通过目录能最快的扑ֈ我们惌看的内容。虽然不太恰当,但还是比较Ş象?

当我们用ls 查看某个目录或文件时Q如果加?i 参数Q就可以看到inode节点了;比如我们前面所说的例子Q?



[root@localhost ~]# ls -li lsfile.sh
2408949 -rwxr-xr-x 1 root root 7 04-21 12:47 lsfile.sh

lsfile.sh 的inode值是 2408949 Q?查看一个文件或目录的inodeQ要通过ls 命o的的 -i参数?


2.10 inode 相同的文件是链接文Ӟ


在Linux 文gpȝ中,inode值相同的文g是硬链接文gQ也是_不同的文件名Qinode可能是相同的Q一个inode值可以对应多个文件。理解链接文件ƈ不难Q看看例子就会了。在Linux中,链接文g是通过ln工具来创建的?


2.11 创徏链接,链接和源文件关p;


用ln 创徏文g链接的语法Q?



# ln 源文?目标文g

下面我们举一个例子,在这个例子中Q我们要为sun.txt 创徏其硬链接sun002.txt。然后看一下sun.txt和sun002.txt的属性的变化Q?


[root@localhost ~]# ls -li sun.txt 注:查看sun.txt的属性;
2408263 -rw-r--r-- 1 root root 29 04-22 21:02 sun.txt 注:q是sun.txt的属性;
[root@localhost ~]# ln sun.txt sun002.txt 注:我们通过ln 来创建sun.txt的硬链接文gsun002.txt
[root@localhost ~]# ls -li sun* 注:我们列一下sun.txt 和sun002.txt
2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun002.txt
2408263 -rw-r--r-- 2 root root 29 04-22 21:02 sun.txt

我们可以看到sun.txt在没有创建硬链接文gsun002.txt的时候,光接个数是1Q也是-rw-r--r--后的那个数|Q创Z链接sun002.txt创徏后,q个值变成了2。也是_我们每次为sun.txt创徏一个新的硬链接文g后,其硬链接个数都会增加1?

inode值相同的文gQ他们的关系是互为硬链接的关pR当我们修改其中一个文件的内容Ӟ互ؓ链接的文g的内容也会跟着变化。如果我们删除互为硬链接关系的某个文件时Q其它的文gq不受媄响。比如我们把sun.txt删除后,我们q是一栯看到sun002.txt的内容,q且sun02.txt仍是存在的?

可以q么理解Q互为硬链接关系的文Ӟ他们好象是克隆体Q他们的属性几乎是完全一P

下面的例子,我们把sun.txt删除Q然后我们看一下sun002.txt 是不是能看到其内宏V?



[root@localhost ~]# rm -rf sun.txt
[root@localhost ~]# more sun002.txt

注意Q硬链接不能为目录创建,只有文g才能创徏链接?


2.12 软链接的创徏Q及软接与源文g的关p;


创徏软链接(也被UCؓW号链接Q的语法Q?



# ln -s 源文文g或目?目标文g或目?

软链接也叫符号链接,他和链接有所不同QY链接文g只是其源文g的一个标记。当我们删除了源文g后,链接文g不能独立存在Q虽然仍保留文g名,但我们却不能查看软链接文件的内容了?



[root@localhost ~]# ls -li linuxsir001.txt
2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt
[root@localhost ~]# ln -s linuxsir001.txt linuxsir002.txt
[root@localhost ~]# ls -li linuxsir001.txt linuxsir002.txt
2408274 -rw-r--r-- 1 root root 29 04-22 21:53 linuxsir001.txt
2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt -> linuxsir001.txt

解释

上面的例子,首先我们查看 linuxsir001.txt 的属性,比如inode 、所属文件种cR创建或修改旉{?.. ...我们来对比一下:

首先 Ҏ(gu)一下节点:两个文g的节点不同;
其次 两个文g的归属的U类不同 linuxsir001.txt?Q也是普通文Ӟ而linuxsir002.txt 是lQ它是一个链接文Ӟ
W三 两个文g的读写权限不?linuxsir001.txt 是rw-r--r-- Q而linuxsir002.txt的读写权限是 rwxrwxrwx
W三 两者的链接个数相同;都是1
W四 两文件的属主和所归属的用L相同Q?
W五 修改(或访问、创建)旉不同Q?

我们q注意到了linuxsir002.txt 后面有一个标?->Q这表示linuxsir002.txt 是linuxsir001.txt的Y链接文g?

值得我们注意的是Q当我们修改链接文g的内Ҏ(gu)Q就意味着我们在修Ҏ(gu)文g的内宏V当然源文g的属性也会发生改变,链接文g的属性ƈ不会发生变化。当我们把源文g删除后,链接文g只存在一个文件名Q因为失M源文Ӟ所以Y链接文g也就不存在了。这一点和链接是不同的;



[root@localhost ~]# rm -rf linuxsir001.txt 注:删除linuxsir001.txt
[root@localhost ~]# ls -li linuxsir002.txt 注:查看linuxsir002 的属性;
2408795 lrwxrwxrwx 1 root root 15 04-22 21:54 linuxsir002.txt -> linuxsir001.txt
[root@localhost ~]# more linuxsir002.txt 注:查看linuxsir002.txt的内容;
linuxsir002.txt: 没有那个文g或目?注:得到提示Qlinuxsir002.txt不存在?

上面的例子告诉我们,如果一个链接文件失M源,意味着他已l不存在了;

我们可以看到软链接文Ӟ其实只是源文件的一个标讎ͼ当源文g失去Ӟ他也是存在了。Y链接文g只是占用了inode来存储Y链接文g属性等信息Q但文g存储是指向源文g的?

软g链接Q可以ؓ文g或目录都适用。无论是软链接还是硬链接Q都可以用rm来删除。rm工具是通用的?/ca>
参考资料:http://techcenter.dicder.com/2006/0908/content_185.htm

Lansing 2007-07-13 09:54 发表评论
]]>
PL/SQL的语?/title><link>http://www.aygfsteel.com/machilansing/archive/2007/01/23/95469.html</link><dc:creator>Lansing</dc:creator><author>Lansing</author><pubDate>Tue, 23 Jan 2007 02:10:00 GMT</pubDate><guid>http://www.aygfsteel.com/machilansing/archive/2007/01/23/95469.html</guid><wfw:comment>http://www.aygfsteel.com/machilansing/comments/95469.html</wfw:comment><comments>http://www.aygfsteel.com/machilansing/archive/2007/01/23/95469.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/machilansing/comments/commentRss/95469.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/machilansing/services/trackbacks/95469.html</trackback:ping><description><![CDATA[ <span style="COLOR: rgb(0,0,255)">写一些关于PL/SQL的语法,免得{到用到的时候还要去q?br />Q。控制流E?if,while)<br />Q。@?for)<br />Q。游?cursor)<br />Q。异常处?exceptionQ?br /></span> <p> <span style="COLOR: rgb(0,0,255)"> <span style="FONT-WEIGHT: bold">1。控制流E(Q?br /><br /></span> <br />A.条g语句<br />IF <statement> THEN<br />   PL/SQL <br />END IF;<br /><br />IF <statement> THEN<br />   PL/SQL<br />ELSE<br />   PL/SQL<br />END IF;<br /><br />IF </span> <span style="COLOR: rgb(0,0,255)"><statement> THEN<br />   PL/SQL<br />ELSIF <statement> THEN<br />   PL/SQL<br />END IF;<br /><br /><br /><span style="FONT-WEIGHT: bold">2。@?br /></span><br />A.simple loop<br />LOOP<br />   SQL<br />   EXIT WHEN <statement>;<br />END LOOP;<br /><br />LOOP<br />   SQL<br />   IF </span> <span style="COLOR: rgb(0,0,255)"><statement> </span> <span style="COLOR: rgb(0,0,255)">THEN<br />   EXIT;<br />   END IF;<br />END LOOP;<br /><br />B.While loop<br />WHILE <statement> LOOP<br />   SQL<br />END LOOP;<br /><br />C.For loop<br />FOR $counter in $low .. $high LOOP<br />   SQL<br />END LOOP<br /><br /><br /><span style="FONT-WEIGHT: bold">3。游?br /><br /></span>在PL/SQLE序中定义的游标叫做昑ּ游标?br /><br />A.昑ּ游标的处理由四个部分l成Q?br />cursor $cursorname is $Query;   --定义游标<br />open $cursorname;         --打开游标<br />fetch $cursorname into $othervariable  --把游标中的东西取?br />close $cursorname    --关闭游标<br /><br />B.游标属?br />%found         布尔型属性,当最q一ơ读U录成功</span> <span style="COLOR: rgb(0,0,255)">?/span> <span style="COLOR: rgb(0,0,255)">Qؓtrue.</span> <br /> <span style="COLOR: rgb(0,0,255)">%nofound                p|Ӟ为false.<br />%isopen<br />%rowcount      q回已从游标中读取的记录数?br /><br />C.参数化游?br /><br />所有的SQL语句在上下文区内部都是可执行的,因此都有一个游标指向上下文区,此游标就是所谓的SQL游标?br />与显式游标不同,SQL游标不被E序打开和关闭?br /><br /><br /><span style="FONT-WEIGHT: bold">4.异常处理概念<br /><br /></span>异常处理是用来处理正常执行过E中未预料的事g。如果PL/SQLE序块一旦生异常而又没有指出如何处理ӞE序会自动终止?br />异常处理部分攑֜PL/SQL的后半部分,l构为:<br /><br />EXCEPTION<br />       WHEN first_exception THEN <code to handle first exception><br />       WHEN second_exception THEN <code to handle second exception><br />       WHEN OTHERS THEN <</span> <span style="COLOR: rgb(0,0,255)">code to handle second exception</span> <span style="COLOR: rgb(0,0,255)">>  --OTHERS必须攑֜最?br /><br />异常分ؓ预定义和用户定义两种?br />用户定义的异常是通过昑ּ使用RAISE语句来引发。如<br /><br style="COLOR: rgb(102,102,102)" /></span> </p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)">DECLARE<br /><span>  </span>e_TooManyStudents EXCEPTION;<span>  </span>-- cd?span lang="EN-US">Exception</span>Q用于指C错误条?br /><span>  </span>v_CurrentStudents NUMBER(3);<span>  </span>-- HIS-101学生注册当前?br /><span>  </span>v_MaxStudents NUMBER(3);<span>      </span>-- HIS-101学生注册允许的最大号<span lang="EN-US"><o:p></o:p></span></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)">BEGIN<br /> <span></span>/* 扑և注册学生当前号和允许的最大号<span lang="EN-US"> */<o:p></o:p></span></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>  </span>SELECT current_students, max_students<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>    </span>INTO v_CurrentStudents, v_MaxStudents<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>    </span>FROM classes<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>    </span>WHERE department = 'HIS' AND course = 101;<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>  </span>/* 查学生的?span lang="EN-US"> */<o:p></o:p></span></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>  </span>IF v_CurrentStudents > v_MaxStudents THEN<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102); TEXT-INDENT: 21pt">/* 太多的学生注册,则触发例外处?span lang="EN-US"> */<o:p></o:p></span></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>  </span>RAISE e_TooManyStudents;<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>  </span>END IF;<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)">EXCEPTION<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>  </span>WHEN e_TooManyStudents THEN<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>    </span>/* 当太多的学生注册Q就插入信息解释发生q错?span lang="EN-US"> */<o:p></o:p></span></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <?XML:NAMESPACE PREFIX = O /?> <o:p> </o:p> </p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>    </span>INSERT INTO log_table (info) VALUES ('History 101 has ' || v_CurrentStudents ||<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span>      </span>'students: max allowed is ' || v_MaxStudents);<o:p></o:p></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)">END;<o:p></o:p></p> <br style="COLOR: rgb(102,102,102)" /> <span style="COLOR: rgb(0,0,255)"> <span style="COLOR: rgb(102,102,102)"> <span style="COLOR: rgb(102,102,102)">END;</span> <br style="COLOR: rgb(102,102,102)" /> <br /> </span> </span> <span style="COLOR: rgb(0,0,255)">用户定义的的异常处理<br />可以使用RAISE_APPLICATION_ERROR来创q错误处理Q?br />RAISE_APPLICATION_ERROR(error_number,error_message,[keep_errors]);<br />其中</span> <span style="COLOR: rgb(0,0,255)">error_number是从-20000?20999之间的参敎ͼ</span> <span style="COLOR: rgb(0,0,255)">error_message是相应的提示信息Q小?12字节。如Q?br /></span> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)">CREATE OR REPLACE PROCEDURE Register (<br /><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">p_StudentID IN students.id%TYPE,<br /></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times=""><span></span>p_Department IN classes.department%TYPE,<br /></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times=""><span></span>p_Course IN classes.course%TYPE) AS<br /></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times=""><span></span>v_CurrentStudents NUMBER;<span>  </span>-- </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">班上学生的当前号<br /></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">v_MaxStudents NUMBER;<span>      </span>-- </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">班上学生的最大号<br /></span></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> </p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)">BEGIN<br /><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">/* </span><span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">扑և学生的当前号和最大号</span> */<br /><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">SELECT current_students, max_students<br /></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times=""><span> </span>INTO v_CurrentStudents, v_MaxStudents<br /></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">FROM classes<br /></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">WHERE course = p_Course<br /></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">AND department = p_Department;<br /></span></p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">/* </span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">认另外的学生是否有_的教?/span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">*/<br /></span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">IF v_CurrentStudents + 1 > v_MaxStudents THEN<br /></span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">RAISE_APPLICATION_ERROR(-20000, 'Can''t add more students to ' ||<br /></span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">p_Department || ' ' || p_Course);<br /></span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">END IF;<br /></span> </p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102)"> </p> <p class="MsoPlainText" style="COLOR: rgb(102,102,102); TEXT-INDENT: 21pt"> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">/* </span> <span style="FONT-SIZE: 10.5pt; FONT-FAMILY: 宋体">加一个学生在本班</span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times=""> */<br /></span> <span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">ClassPackage.AddStudent(p_StudentID, p_Department, p_Course);</span> <br /> <br />EXCEPTION<br /><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">WHEN NO_DATA_FOUND THEN<br />   </span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">RAISE_APPLICATION_ERROR(-20001, p_Department || ' ' || p_Course ||<br />          </span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">' doesn''t exist!');<br /></span><span lang="EN-US" style="FONT-SIZE: 10.5pt; FONT-FAMILY: " roman?;?="" new="" times="">END Register;</span></p> <img src ="http://www.aygfsteel.com/machilansing/aggbug/95469.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/machilansing/" target="_blank">Lansing</a> 2007-01-23 10:10 <a href="http://www.aygfsteel.com/machilansing/archive/2007/01/23/95469.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>关于ODBC数据源连接文?http://www.aygfsteel.com/machilansing/archive/2007/01/19/94895.htmlLansingLansingFri, 19 Jan 2007 04:17:00 GMThttp://www.aygfsteel.com/machilansing/archive/2007/01/19/94895.htmlhttp://www.aygfsteel.com/machilansing/comments/94895.htmlhttp://www.aygfsteel.com/machilansing/archive/2007/01/19/94895.html#Feedback3http://www.aygfsteel.com/machilansing/comments/commentRss/94895.htmlhttp://www.aygfsteel.com/machilansing/services/trackbacks/94895.html
              在《外部数据库的连接原理》一讲中我们说过QODBC提供对多U数据库的支持,如dBase、Access、MS SQL 
            Server及OracleQ也是说运用ODBC数据源中所提供的连接代码,我们可以实现对多U数据库的连接。以q接Access数据库ؓ例,ODBC数据源连接文本的格式是:
              “Driver={数据库驱动程序};Dbq=数据库文??br />              在以上连接文本中Q如果数据库跟程序在同一目录下,或者用变量DefaultDir指定了数据库所在目录,则数据库文g可以不用全\径名Q如下即可:
              “ODBC;DBQ=MSAccess.mdb;Driver={Microsoft Access Driver (*.mdb)};?br />              如下也可Q?br />              “ODBC;DBQ=MSAccess.mdb;DefaultDir=d:\Downloads\e21;Driver={Microsoft 
            Access Driver (*.mdb)};?br />              如果数据库跟E序不在同一目录下,或者没有用变量DefaultDir指定数据库所在目录,则数据库文g需要用全\径名Q如下:
              “ODBC;DBQ=E:\Quake III Arena\MSAccess.mdb;Driver={Microsoft Access 
            Driver (*.mdb)};?br />              以上所说的是连接Access数据库的格式Q那么连接其他数据库的ODBC数据源连接文本又是怎样的?q接不同cd的数据库要用不同的对应驱动E序Q没忘记吧!不同的驱动程序当然它们的参数l合也就不同了,每一U不同驱动程序都有其特定的的参数形式Q?br />
              ⑴、MS Access ODBC DSNless q接Q?br />              ☆、参敎ͼDriver 讄|{Microsoft Access Driver (*.mdb)}
              ☆、参敎ͼDbq 讄|实际路径文g名称
              ☆、例句:
              “Driver={Microsoft Access Driver 
            (*.mdb)};Dbq=c:\somepath\dbname.mdb;Uid=Admin;Pwd=pass; ?br />              cdBase ODBC DSNless q接Q?br />              ☆、参敎ͼDriver 讄|{Microsoft dBASE Driver (*.dbf)}
              ☆、参敎ͼDbq 讄|实际路径文g名称
              ☆、例句:
              “Driver={Microsoft dBASE Driver 
            (*.dbf)};DriverID=277;Dbq=c:\somepath\dbname.dbf; ?br />              ⑶、Oracle ODBC DSNless q接Q?br />              ☆、参敎ͼDriver 讄|{Microsoft ODBC for Oracle}
              ☆、参敎ͼDbq 讄|实际路径文g名称
              ☆、例句:
              “Driver={Microsoft ODBC for 
            Oracle};Server=OracleServer.world;Uid=admin;Pwd=pass; ?br />              ⑗MS SQL Server DSNless q接Q?br />              ☆、参敎ͼDriver 讄|{SQL Server};
              ☆、参敎ͼServer 讄|服务器名U?br />              ☆、参敎ͼDatabase 讄|数据表名U?br />              ☆、参敎ͼUid 讄|用户名称
              ☆、参敎ͼPwd 讄|密码
              ☆、例句:
              “Driver={SQL 
            Server};Server=servername;Database=dbname;Uid=sa;Pwd=pass; ?br />              ⑸、MS Text Driver DSNless q接Q?br />              ☆、参敎ͼDriver 讄|{Microsoft Text Driver (*.txt; *.csv)}
              ☆、参敎ͼDbq 讄|实际路径文g名称
              ☆、例句:
              “Driver={Microsoft Text Driver (*.txt; 
            *.csv)};Dbq=c:\somepath\;Extensions=asc,csv,tab,txt;Persist Security 
            Info=False; ?br />              ⑏VVisual Foxpro DSNless q接Q?br />              ☆、参敎ͼDriver 讄|{Microsoft Visual FoxPro Driver}
              ☆、参敎ͼSourceType 讄|DBC
              ☆、参敎ͼSourceDB 讄|实际路径文g名称 
              ☆、例句:
              “Driver={Microsoft Visual FoxPro 
            Driver};SourceType=DBC;SourceDB=c:\somepath\dbname.dbc;Exclusive=No;”?br />
              ⑺、MySQL DSNless q接Q?br />              ☆、参敎ͼDriver 讄|{mysql}
              ☆、参敎ͼdatabase 讄|数据表名U?br />              ☆、参敎ͼuid 讄|用户名称
              ☆、参敎ͼpwd 讄|密码
              ☆、例句: 
              “driver={mysql}; 
            database=yourdatabase;uid=username;pwd=password;option=16386?br />            *******************************************************************
            SQL语言介?br />
              在上一讲中我们介绍了连接外部数据库的方法,那么q接之后怎样对外部数据库q行d、显C、增删、更新、查询等操作呢?q些操作需要通过外部数据库等对象调用SQL指o才能完成?br />              ㈠、什么是SQL语言
              SQLQStructure Query LangugeQ结构化查询语言Q是一U数据库专用的计机语言Q不是Oracle、MS 
            SQL 
            、Access、MySQL或其他公司的数据库,也不数据库建立在大型主机或个h计算ZQ都可以使用SQL语言来访问和修改数据库的内容。虽然不同公司的数据库Y件多多少会增加一些专属的SQL语法Q但大体上,它们q是遵@ASNIQ美国国家标准协会)制定的SQL标准。因为SQL语言h易学习及阅读{特性,所以SQL逐渐被各U数据库厂商采用Q而成ZU共通的标准查询语言。只要你学会SQLQ即可操作各U数据库如Visual 
            Foxpro、Access、dBase{等。MQSQL语言是各U数据库都可以用的数据库查询语a?br />              SQL语言不仅仅具有查询数据库的功能,而且可以Ҏ(gu)据库完成选取、增删、更C跌{{各U操作?br />              ㈡、SQL语言的组?br />              SQL语言是由命oQ函敎ͼ、子句、运符、加d数及通配W等l成Q分q如下:
              1、命?br />              SQL的命令可分成数据定义语言与数据操作语aQ数据定义语a可用来徏立新的数据库、数据表、字D及索引{,本教E不予介l;另一为数据操作语aQ可用来建立查询表、排序、筛选数据、修攏V增删等动作。数据定义语a命o常用的有选择、添加、删除和修改q四U:
              ⑴、命令:SELECT
              中文意思:选择
              说明Q用于找出合乎条件的记录
              c命令:INSERT
              中文意思:插入
              说明Q用于增加一W记录或合ƈ两个数据?br />              ⑶、命令:UPDATE
              中文意思:更新
              说明Q用于更正合乎条件的记录
              ⑗命令:DELETE
              中文意思:删除
              说明Q用于删除合乎条件的记录
              2、子?br />              子句是用于设定命令要操作的对象(卛_敎ͼQSQL所用的子句如下Q?br />              ⑴、子句:FROM 
              中文意思:数据?br />              说明Q用于指定数据表
              c子句:WHERE
              中文意思:条g
              说明Q用于设定条?br />              ⑶、GROUP BY
              中文意思:分组Q合qӞ
              说明Q用于设定分l?br />              ⑗ORDER BY
              中文意思:排序
              说明Q用于设定输出的序及字D?br />              3、运符
              子句参数中的q算W子句构成不同的语法格式,如“字D?='100'”、“字D?>'100'”等。运符又分逻辑q算W与比较q算W?br />              ◇逻辑q算W如下:
              ⑴、运符QAND
              中文意思:q且
              说明Q逻辑?br />              c运符QOR 
              中文意思:或?br />              说明Q逻辑?br />              ⑶、运符QNOT
              中文意思:取反
              说明Q逻辑非或逻辑?br />              ◇比较运符如下Q?br />              ⑴、运符Q?lt; 说明:于
              c运符Q≤ 说明Q小于等?br />              ⑶、运符Q≥ 说明Q大于等?br />              ⑗运符Q?gt; 说明Q大?br />              ⑸、运符Q? 说明Q等?br />              ⑏V运符Q?lt;> 说明Q不{于
              ⑺、运符QBETWEEN 说明Q用于设定范图b中文意思:?..之间
              ⑅R运符QLIKE 说明Q用于通配讑֮ 中文意思:如同
              ⑹{运符QIN 说明Q用于集合设定 中文意思:?..之内
              4、加d?br />              加d数常常运用在命o的参CQ如Q“SELECT SUMQ数学)QAVGQ数学) FROM 成W单”?br />              ⑴、加d敎ͼAVG 
              中文意思:q_
              说明Q用于求指定条g的^均?br />              c加d敎ͼCOUNT
              中文意思:数量
              说明Q用于求指定的数?br />              ⑶、加d敎ͼSUM
              中文意思:?br />              说明Q用于求指定条g的和
              ⑗加d敎ͼMAX
              中文意思:最大?br />              说明Q用于求指定条g的最大?br />              ⑸、加d敎ͼMIN
              中文意思:最?br />              说明Q用于求指定条g的最?br />              5、通配W?br />              ⑴、通配W:% 意义QQ何长度的字符Ԍ包括0Q?br />              c通配W:_ 意义Q下划线表示M一个字W?br />              ⑶、通配W:[] 意义Q中括号表示某个范围内的一个字W?br />              在下一讲将说明SQL语言是怎样把命令(函数Q、子句、运符、及加d数等l合在一L?br />
            *************************************************************************

            嵌入式SQL的应用?br />
              SQL语句可以单独在数据库pȝ本n中执行,但如果运用在其他~程工具所~制的程序中Q一般不能单独执行,而要把SQL语句嵌入到高U语aQ如易语aQ中使用Q通过高语言的命令和Ҏ(gu)来调用之Q此时SQLUCؓ嵌入式SQL。调用SQL语句的程序称为宿ȝ序,在易语言中一般是把SQL语句作ؓ宿主E序的唯一参数来直接处理。嵌入式SQL在用上有一些规定,在易语言中目前的版本规定如下Q?br />              ⑴、在E序中要区分SQL语句和宿主语a的语句。在易语a中好区分Q因为SQL语句形式是英文的Q而易语言是中文的Q但在实际应用时仍然有可能会混ؕQ所以易语言要把SQL语句转化为文本型才能调用Q即嵌入式SQL语句两边要用双引h标示?br />              c允许SQL语句使用宿主E序的变量,但用时要将宿主E序的变量跟外部数据库中表格的字D名区别开来,区别Ҏ(gu)如下Q?br />              ①、在易语a中要变量类型{化ؓ文本型变量才能被SQL文本相加使用Q比如下面的例子中有一个叫“数?”的整数cd变量Q插入到SQL文本中是q样表达Q?br />              外部数据?.查询 (“select * from chj where ” + l合?.内容 Q ?” + 到文本?数字1))
              ②、包含字D名的SQL文本两边加双引号Q变量名不能在双引号内,如上例?br />              ⑶、要字D名跟字D值区别开来,区别Ҏ(gu)如下Q?br />              ①、对于文本类型的字段Q在其字Dg边要加上?”号标示其文本|代表语法是:字段名称=‘文本值’。如下:
              外部数据?.查询 (“select * from chj where 姓名='山大??
              又如下面“查扄辑框.内容”中的字D值是文本型,嵌入式SQL语句如下Q?br />              外部数据?.查询 (“select * from chj where 姓名==” + ?” + 查找~辑?内容 Q?br />??
              ②、对于数字类型的字段Q在SQL语句中表C其字段|两边不加W号标示Q代表语法是Q字D名U?数字倹{如下两例:
              外部数据?.查询 (“select * from chj where ” + l合?.内容 Q ?” + 查找~辑?内容) 
              外部数据?.查询 (“select * from chj where 学号=17?
              ③、对于日期时间类型的字段Q在其字Dg边要加上?”号标示其时间|代表语法是:字段名称=#旉?。如下两例:
              外部数据?.查询 (“select * from chj where 入学旉 BETWEEN #2001-01-01# and 
            #2002-01-01#?
              外部数据?.查询 (“select * from chj where ” + l合?.内容 Q ?” + ?” + 
            查找~辑?内容 Q ??
              ④、也可以SQL语句中的字段名(其是中文名Q可用中括号括住Q如Q[字段名]?br />              
              ⑗SQL语句要用半角输入法输入,否则可能会出错?br />              那么在易语言中怎样调用SQL语句呢?一般是在外部数据库对象Q控Ӟ的方法中调用Q试概括如下Q?br />              ⑴、对外部数据库进行查询的Ҏ(gu)?br />              对外部数据库的查询就是在对外部数据库不加~辑改动的前提下Q只通过记录集来Ҏ(gu)据库q行昄、查询、筛选、排序和记录集的合ƈ{操作?br />              所有查询类的方法v源于下面q个语句Q其他查询类语句是对q个语句的调用(此语句作ؓ唯一的参敎ͼQ该语句如下Q?br />              外部数据库.查询 Q查询类SQL语句Q?br />              也可q样表达Q?br />              外部数据库.查询 Q“SELECT...FROM...[WHERE]...[GROUP BY]...[ORDER BY]... ”)
              该方法是对当前被打开数据库进行数据查询,q回的结果称为“记录集句柄”(卌录集的标讎ͼ。注意当不再使用此记录集Ӟ必须使用“关闭记录集”将其关闭,如果p|Q返?。在易语a中,以上语句等同于记录集句柄以作ؓ其他查询c语句的参数。ؓ了该参数在所有子E序中都能应用,我们一般把它设|ؓ整数型全局变量Qƈ其D|如下:
              记录集句?外部数据库.查询 Q查询类SQL语句Q?br />              ׃易语a要把SQL语句转化为文本型才能调用Q所以嵌入式SQL语句两边要有双引P例句Q?br />              记录集句柄 = 外部数据?.查询 (“select * from chj ?
              ※ “chj”是外部数据库中一个表的名U?br />              又如Q欲得到排序的记录集Q应象下面这栯|
              记录集句柄 = 外部数据?.查询 (“SELECT * FROM chj ORDER BY 语文 DESC?
              现将外部数据库控件中其他的查询类Ҏ(gu)列D如下Q?br />              ①、外部数据库Q重新查询 (记录集句柄) 卻I
              外部数据库.重新查询 Q外部数据库Q查询 (查询cSQL语句Q)
              例句Q外部数据库1.重新查询 (外部数据?.查询 (“select * from chj ?) 
              ②、外部数据库Q首记录前 (记录集句柄) 卻I
              外部数据库.首记录前 Q外部数据库Q查询 (查询cSQL语句Q)
              例句Q外部数据库1.首记录前 (记录集句?
              ③、外部数据库Q尾记录后 (记录集句柄)
              ④、外部数据库Q到首记录 (记录集句柄)
              ⑤、外部数据库Q到记录 (记录集句柄)
              ⑥、外部数据库Q到前一记录 Q记录集句柄Q?br />              ⑦、外部数据库Q到后一记录 Q记录集句柄Q?br />              ⑧、外部数据库Q读 Q记录集句柄Q字D名U或位置Q?br />              例句Q语文编辑框.内容 Q 到文本 (外部数据?.读?记录集句? “语文?)
              c对外部数据库进行编辑的Ҏ(gu)?br />              所谓对外部数据库的~辑Q就是变更改动外部数据库本nQ包括添加、更新、删除等Q对数据库进行编辑不必通过记录集。所有非查询cSQL语句都嵌入下面这个语句来执行Q?br />              外部数据库.执行 Q非查询cSQL语句Q?br />              ①、添加记录,其语法如下:
              外部数据库.执行 Q“insert into 表名U?字段1,字段2...) values (字段?,字段?...) ”)
              例句Q?br />              外部数据?.执行 (“INSERT INTO chj ” + ?学号,姓名,语文,数学,p)” + “ valueS ” + 
            ?” + 学号~辑?内容 Q ?'” + 姓名~辑?内容 Q ?,'” + 语文~辑?内容 Q ?,'” + 
            数学~辑?内容 Q ?,'” + p~辑?内容 Q ?)?
              ②、更新记录,其语法如下:
              外部数据库.执行 Q“UPDATE 表名UWSET 字段1=字段?Q字D?=字段?...WHERE 条g式”) 
              例句Q?br />              外部数据?.执行 (“UPDATE chj SET 学号=” + ?” + 学号~辑?内容 Q ?,” + “姓?”?br />            Q ?” + 姓名~辑?内容 Q ?,” + “语?” + ?” + 语文~辑?内容 Q ?,” + “数?”?br />            Q ?” + 数学~辑?内容 Q ?,” + “英?” + ?” + p~辑?内容 Q ? ” + “WHERE 
            姓名=” + ?” + 姓名1 Q ? ” + “AND 语文=” + 语文1 Q “AND 数学=” + 数学1 Q “AND 
            p=” + p1 Q “AND 学号=” + 学号1)
              ③、删除记录,其语法如下:
              外部数据库.执行 Q“DELETE * FROM 表名UWWHERE 条g式”)
              例句Q?br />              外部数据库.执行 Q“外部数据库1.执行 (“DELETE * FROM chj ” + “WHERE 姓名=” + ?” + 
            姓名1 Q ? ” + “AND 语文=” + 语文1 Q “AND 数学=” + 数学1 Q “AND p=” + p1 Q?br />            “AND 学号=” + 学号1)”)


Lansing 2007-01-19 12:17 发表评论
]]>
Java虚拟机简?/title><link>http://www.aygfsteel.com/machilansing/archive/2007/01/18/94630.html</link><dc:creator>Lansing</dc:creator><author>Lansing</author><pubDate>Thu, 18 Jan 2007 06:27:00 GMT</pubDate><guid>http://www.aygfsteel.com/machilansing/archive/2007/01/18/94630.html</guid><wfw:comment>http://www.aygfsteel.com/machilansing/comments/94630.html</wfw:comment><comments>http://www.aygfsteel.com/machilansing/archive/2007/01/18/94630.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/machilansing/comments/commentRss/94630.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/machilansing/services/trackbacks/94630.html</trackback:ping><description><![CDATA[Java虚拟?br /><p>一、什么是Java虚拟?/p><br /><p>Java虚拟机是一个想象中的机?在实际的计算Z通过软g模拟来实现。Java虚拟机有自己惌中的g,如处理器、堆栈、寄存器{?q具有相应的指opȝ?/p><br /><p>1.Z么要使用Java虚拟?/p><br /><p>Java语言的一个非帔R要的特点是与^台的无关性。而用Java虚拟机是实现q一特点的关键。一般的高语言如果要在不同的^Cq行,臛_需要编译成不同的目标代码。而引入Java语言虚拟机后,Java语言在不同^Cq行时不需要重新编译。Java语言使用模式Java虚拟机屏蔽了与具体^台相关的信息,使得Java语言~译E序只需生成在Java虚拟Zq行的目标代?字节?,可以在多种q_上不加修改地q行。Java虚拟机在执行字节码时,把字节码解释成具体^C的机器指令执行?/p><br /><p>2.谁需要了解Java虚拟?/p><br /><p>Java虚拟机是Java语言底层实现的基,对Java语言感兴的人都应对Java虚拟机有个大概的了解。这有助于理解Java语言的一些性质,也有助于使用Java语言。对于要在特定^C实现Java虚拟机的软g人员,Java语言的编译器作者以及要用硬件芯片实现Java虚拟机的人来?则必Lȝ解Java虚拟机的规范。另?如果你想扩展Java语言,或是把其它语a~译成Java语言的字节码,你也需要深入地了解Java虚拟机?/p><br /><p>3.Java虚拟机支持的数据cd</p><br /><p>Java虚拟机支持Java语言的基本数据类型如?</p><br /><p>byte://1字节有符h数的补码 <br />short://2字节有符h数的补码 <br />int://4字节有符h数的补码 <br />long://8字节有符h数的补码 <br />float://4字节IEEE754单精度QҎ(gu) <br />double://8字节IEEE754双精度QҎ(gu) <br />char://2字节无符号Unicode字符</p><br /><p>几乎所有的Javacd查都是在~译时完成的。上面列出的原始数据cd的数据在Java执行时不需要用g标记。操作这些原始数据类型数据的字节?指o)本n已l指Z操作数的数据cd,例如iadd、ladd、fadd和dadd指o都是把两个数相加,其操作数cd别是int、long、float和double。虚拟机没有lboolean(布尔)cd讄单独的指令。boolean型的数据是由integer指o,包括integerq回来处理的。boolean型的数组则是用byte数组来处理的。虚拟机使用IEEE754格式的QҎ(gu)。不支持IEEE格式的较旧的计算?在运行Java数D程序时,可能会非常慢?/p><br /><p>虚拟机支持的其它数据cd包括: <br />object//对一个Javaobject(对象)?字节引用 <br />returnAddress//4字节,用于jsr/ret/jsr-w/ret-w指o <br />?Java数组被当作object处理?/p><br /><p>虚拟机的规范对于object内部的结构没有Q何特D的要求。在Sun公司的实C,对object的引用是一个句?其中包含一Ҏ(gu)?一个指针指向该object的方法表,另一个指向该object的数据。用Java虚拟机的字节码表C的E序应该遵守cd规定。Java虚拟机的实现应拒l执行违反了cd规定的字节码E序。Java虚拟机由于字节码定义的限制似乎只能运行于32位地址I间的机器上。但是可以创Z个Java虚拟?它自动地把字节码转换?4位的形式。从Java虚拟机支持的数据cd可以看出,JavaҎ(gu)据类型的内部格式q行了严D?q样使得各种Java虚拟机的实现Ҏ(gu)据的解释是相同的,从而保证了Java的与q_无关性和?<br />UL性?/p><br /><p>二、Java虚拟Zpȝ?/p><br /><p>Java虚拟机由五个部分l成:一l指令集、一l寄存器、一个栈、一个无用单元收集堆(Garbage-collected-heap)、一个方法区域。这五部分是Java虚拟机的逻辑成䆾,不依赖Q何实现技术或l织方式,但它们的功能必须在真实机器上以某U方式实现?/p><br /><p>1.Java指o?/p><br /><p>Java虚拟机支持大U?48个字节码。每个字节码执行一U基本的CPUq算,例如,把一个整数加到寄存器,子程序{Uȝ。Java指o集相当于JavaE序的汇~语a?<br />Java指o集中的指令包含一个单字节的操作符,用于指定要执行的操作,q有0个或多个操作?提供操作所需的参数或数据。许多指令没有操作数,仅由一个单字节的操作符构成?/p><br /><p>虚拟机的内层循环的执行过E如? </p><br /><p>do{ <br />取一个操作符字节; <br />Ҏ(gu)操作W的值执行一个动? <br />}while(E序未结?</p><br /><p>׃指opȝ的简单?使得虚拟机执行的q程十分?从而有利于提高执行的效率。指令中操作数的数量和大是由操作符军_的。如果操作数比一个字节大,那么它存储的序是高位字节优先。例?一?6位的参数存放时占用两个字?其gؓ:</p><br /><p>W一个字?256+W二个字节字节码指o一般只是字节对齐的。指令tabltch和lookup是例?在这两条指o内部要求强制?字节边界寚w?/p><br /><p>2.寄存?/p><br /><p>Java虚拟机的寄存器用于保存机器的q行状?与微处理器中的某些专用寄存器cM?/p><br /><p>Java虚拟机的寄存器有四种: <br />pc:JavaE序计数器?<br />optop:指向操作数栈端的指针?<br />frame:指向当前执行Ҏ(gu)的执行环境的指针?<br />vars:指向当前执行Ҏ(gu)的局部变量区W一个变量的指针?/p><br /><p>Java虚拟?/p><br /><p>Java虚拟机是栈式?它不定义或用寄存器来传递或接受参数,其目的是Z保证指o集的z性和实现时的高效?特别是对于寄存器数目不多的处理器)?<br />所有寄存器都是32位的?/p><br /><p>3.?/p><br /><p>Java虚拟机的栈有三个区域:局部变量区、运行环境区、操作数区?/p><br /><p>(1)局部变量区 每个JavaҎ(gu)使用一个固定大的局部变量集。它们按照与vars寄存器的字偏U量来寻址。局部变量都?2位的。长整数和双_ֺ点数占据了两个局部变量的I间,却按照第一个局部变量的索引来寻址?例如,一个具有烦引n的局部变?如果是一个双_ֺ点?那么它实际占据了索引n和n+1所代表的存储空间?虚拟范ƈ不要求在局部变量中?4位的值是64位对齐的。虚拟机提供了把局部变量中的D载到操作数栈的指?也提供了把操作数栈中的值写入局部变量的指o?/p><br /><p>(2)q行环境区 在运行环境中包含的信息用于动态链?正常的方法返回以及异怼播?/p><br /><p>·动态链?<br />q行环境包括Ҏ(gu)向当前类和当前方法的解释器符可的指?用于支持Ҏ(gu)代码的动态链接。方法的class文g代码在引用要调用的方法和要访问的变量时用符受动态链接把W号形式的方法调用翻译成实际Ҏ(gu)调用,装蝲必要的类以解释还没有定义的符?q把变量讉K译成与q些变量q行时的存储l构相应的偏Ud址。动态链接方法和变量使得Ҏ(gu)中用的其它cȝ变化不会影响到本E序的代码?/p><br /><p>·正常的方法返?br />如果当前Ҏ(gu)正常地结束了,在执行了一条具有正类型的q回指o?调用的方法会得到一个返回倹{执行环境在正常q回的情况下用于恢复调用者的寄存?q把调用者的E序计数器增加一个恰当的数?以蟩q已执行q的Ҏ(gu)调用指o,然后在调用者的执行环境中l执行下厅R?/p><br /><p>·异常和错误传?br />异常情况在Java中被UCError(错误)或Exception(异常),是Throwablecȝ子类,在程序中的原因是:①动态链接错,如无法找到所需的class文g。②q行旉,如对一个空指针的引?/p><br /><p>·E序使用了throw语句?br />当异常发生时,Java虚拟机采取如下措?<br />·查与当前Ҏ(gu)相联pȝcatch子句表。每个catch子句包含其有效指令范?能够处理的异常类?以及处理异常的代码块地址?br />·与异常相匚w的catch子句应该W合下面的条?造成异常的指令在其指令范围之?发生的异常类型是其能处理的异常类型的子类型。如果找C匚w的catch子句,那么pȝ转移到指定的异常处理块处执行;如果没有扑ֈ异常处理?重复L匚w的catch子句的过E?直到当前Ҏ(gu)的所有嵌套的catch子句都被查过?br />·׃虚拟ZW一个匹配的catch子句处l执?所以catch子句表中的顺序是很重要的。因为Java代码是结构化?因此d以把某个Ҏ(gu)的所有的异常处理器都按序排列C个表?对Q意可能的E序计数器的?都可以用U性的序扑ֈ合适的异常处理?以处理在该程序计数器g发生的异常情c?br />·如果找不到匹配的catch子句,那么当前Ҏ(gu)得到一?未截获异?的结果ƈq回到当前方法的调用?好像异常刚刚在其调用者中发生一栗如果在调用者中仍然没有扑ֈ相应的异常处理块,那么q种错误传播被l箋下去。如果错误被传播到最层,那么pȝ调用一个缺省的异常处理块?<br />(3)操作数栈区 机器指o只从操作数栈中取操作?对它们进行操?q把l果q回到栈中。选择栈结构的原因?在只有少量寄存器或非通用寄存器的机器(如Intel486)?也能够高效地模拟虚拟机的行ؓ。操作数栈是32位的。它用于l方法传递参?q从Ҏ(gu)接收l果,也用于支持操作的参数,q保存操作的l果。例?iadd指o两个整数相加。相加的两个整数应该是操作数栈顶的两个字。这两个字是由先前的指o压进堆栈的。这两个整数从堆栈弹出、相?q把l果压回到操作数栈中?/p><br /><p>每个原始数据cd都有专门的指令对它们q行必须的操作。每个操作数在栈中需要一个存储位|?除了long和double?它们需要两个位|。操作数只能被适用于其cd的操作符所操作。例?压入两个intcd的数,如果把它们当作是一个longcd的数则是非法的。在Sun的虚拟机实现?q个限制由字节码验证器强制实行。但?有少数操?操作Wdupe和swap),用于对运行时数据行操作时是不考虑cd的?/p><br /><p>4.无用单元攉?/p><br /><p>Java的堆是一个运行时数据?cȝ实例(对象)从中分配I间。Java语言h无用单元攉能力:它不l程序员昑ּ释放对象的能力。Java不规定具体用的无用单元攉法,可以Ҏ(gu)pȝ的需求用各U各L法?/p><br /><p>5.Ҏ(gu)?/p><br /><p>Ҏ(gu)Z传统语言中的~译后代码或是Unixq程中的正文D늱伹{它保存Ҏ(gu)代码(~译后的java代码)和符可。在当前的Java实现?Ҏ(gu)代码不包括在无用单元攉堆中,但计划在来的版本中实现。每个类文g包含了一个JavacL一个Java界面的编译后的代码。可以说cL件是Java语言的执行代码文件。ؓ了保证类文g的^台无x?Java虚拟范中对类文g的格式也作了详细的说明。其具体l节请参考Sun公司的Java虚拟范?/p><img src ="http://www.aygfsteel.com/machilansing/aggbug/94630.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/machilansing/" target="_blank">Lansing</a> 2007-01-18 14:27 <a href="http://www.aygfsteel.com/machilansing/archive/2007/01/18/94630.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Java 创徏.exeE序http://www.aygfsteel.com/machilansing/archive/2007/01/18/94628.htmlLansingLansingThu, 18 Jan 2007 06:21:00 GMThttp://www.aygfsteel.com/machilansing/archive/2007/01/18/94628.htmlhttp://www.aygfsteel.com/machilansing/comments/94628.htmlhttp://www.aygfsteel.com/machilansing/archive/2007/01/18/94628.html#Feedback0http://www.aygfsteel.com/machilansing/comments/commentRss/94628.htmlhttp://www.aygfsteel.com/machilansing/services/trackbacks/94628.html  
  W三方工?/b>
  一U方法是使用W三方商业工h免费工具?Java 应用E序打包Z个可执行文g?br />  
  下面是h(hun)格和Ҏ(gu)都不同的两个工P但是?Web 上还有其它几个第三方工具可以免费下蝲?br />  
  http://www.bysoft.se/sureshot/exej/
  http://www.duckware.com/jexepack/
  使用商业安装E序QinstallerQ?br />  InstallAnywhere 是一个常用的安装E序Q它?yu)管理应用程序的安装q程Qƈ应用程序打包ؓ可执行程序?br />  
  使用 .jar
  除了以上Ҏ(gu)之外Q还可以应用程序打包ؓ一个可执行?.jar 文gQ而不是一?.exe 文g。在q篇文章中我不详细介绍q种Ҏ(gu)Q你可以在这里找C个非常棒的在U教E?br />  
  你需要做的最重要的一件事是指定在 .jar 文g中哪个类是应用程序的入口炏V例如,对你的应用程序来说就是具有一?public static void main(String[] args) Ҏ(gu)的引导类。可以在 .jar 表示文g?Main-Class 头部信息中提供这些信息。这个头部信息的通用形式为:Main-Class: classnameQ其?classname 是应用程序的入口点的cdU?br />  
  使用 Java Webstart
  Java Webstart 是标?Java q行时环境(JREQ的隐藏的宝物,自从版本 1.3 开始,JRE 包含了 Java Webstart。它是一个简单但功能强大且灵zȝ应用程序部|到Mq_的方法?br />  
  Webstart 允许应用E序的用户从他们的浏览器、电(sh)子邮件或桌面启动和管理应用程序。Java Webstart 的一个主要优Ҏ(gu)一旦应用程序被安装Q在每次启动它时Q它都将会检查用h否在q行最新版本的应用E序。如果不是,应用E序通过|络装蝲新版本到桌面然后执行Q因此解决了软g传播问题?br />  
  如果你的应用E序已经有很多用L话,q一点就其重要。还有很重要的一Ҏ(gu)Q它能够查用L本地桌面环境Qƈ能保证他们安装了正确?JRE 版本来运行你的应用程序?br />  
  Java Webstart 本n有一pd文章Q所以我你访?Java Webstart Web 站点查看更多文档和教E?br />  
  l束?/b>
  前两U方法可能会满你对q个问题的需要,但是我强烈徏议你仔细看一?Java Webstart。它?Java 标准的一部分Qƈ且能够在所有^C一致工作。我比较喜欢q个应用E序打包Ҏ(gu)?

Lansing 2007-01-18 14:21 发表评论
]]>
Lucene In Action Ch6 W记http://www.aygfsteel.com/machilansing/archive/2007/01/05/91910.htmlLansingLansingFri, 05 Jan 2007 02:27:00 GMThttp://www.aygfsteel.com/machilansing/archive/2007/01/05/91910.htmlhttp://www.aygfsteel.com/machilansing/comments/91910.htmlhttp://www.aygfsteel.com/machilansing/archive/2007/01/05/91910.html#Feedback0http://www.aygfsteel.com/machilansing/comments/commentRss/91910.htmlhttp://www.aygfsteel.com/machilansing/services/trackbacks/91910.html阅读全文

Lansing 2007-01-05 10:27 发表评论
]]>
Lucene In Action Ch5 W记http://www.aygfsteel.com/machilansing/archive/2007/01/05/91909.htmlLansingLansingFri, 05 Jan 2007 02:25:00 GMThttp://www.aygfsteel.com/machilansing/archive/2007/01/05/91909.htmlhttp://www.aygfsteel.com/machilansing/comments/91909.htmlhttp://www.aygfsteel.com/machilansing/archive/2007/01/05/91909.html#Feedback0http://www.aygfsteel.com/machilansing/comments/commentRss/91909.htmlhttp://www.aygfsteel.com/machilansing/services/trackbacks/91909.html阅读全文

Lansing 2007-01-05 10:25 发表评论
]]>
Lucene In Action Ch4 W记http://www.aygfsteel.com/machilansing/archive/2007/01/05/91906.htmlLansingLansingFri, 05 Jan 2007 02:14:00 GMThttp://www.aygfsteel.com/machilansing/archive/2007/01/05/91906.htmlhttp://www.aygfsteel.com/machilansing/comments/91906.htmlhttp://www.aygfsteel.com/machilansing/archive/2007/01/05/91906.html#Feedback0http://www.aygfsteel.com/machilansing/comments/commentRss/91906.htmlhttp://www.aygfsteel.com/machilansing/services/trackbacks/91906.html阅读全文

Lansing 2007-01-05 10:14 发表评论
]]>
Lucene In Action Ch3 W记http://www.aygfsteel.com/machilansing/archive/2007/01/05/91905.htmlLansingLansingFri, 05 Jan 2007 02:11:00 GMThttp://www.aygfsteel.com/machilansing/archive/2007/01/05/91905.htmlhttp://www.aygfsteel.com/machilansing/comments/91905.htmlhttp://www.aygfsteel.com/machilansing/archive/2007/01/05/91905.html#Feedback0http://www.aygfsteel.com/machilansing/comments/commentRss/91905.htmlhttp://www.aygfsteel.com/machilansing/services/trackbacks/91905.html阅读全文

Lansing 2007-01-05 10:11 发表评论
]]>
Lucene In Action Ch2 W记http://www.aygfsteel.com/machilansing/archive/2007/01/05/91904.htmlLansingLansingFri, 05 Jan 2007 02:10:00 GMThttp://www.aygfsteel.com/machilansing/archive/2007/01/05/91904.htmlhttp://www.aygfsteel.com/machilansing/comments/91904.htmlhttp://www.aygfsteel.com/machilansing/archive/2007/01/05/91904.html#Feedback0http://www.aygfsteel.com/machilansing/comments/commentRss/91904.htmlhttp://www.aygfsteel.com/machilansing/services/trackbacks/91904.html阅读全文

Lansing 2007-01-05 10:10 发表评论
]]>
վ֩ģ壺 | °Ͷ| | | | | ɽ| ҵ| | ̨ʡ| Ӣ| | | ޻| ɳ| | | ϳ| ̩| | ̩| | | | | ʶ| | | | | Ȫ| Ӫ| | | ɽ| ʲ| »| ̶| | | ɽ|