<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2681369414469091822</id><updated>2011-11-28T00:39:56.404+01:00</updated><category term='数据库'/><category term='Diary'/><category term='KDE'/><category term='Bachelorthesis'/><category term='MySQL'/><category term='ubuntu'/><category term='JAVA'/><category term='Database'/><category term='Linux'/><category term='C'/><category term='DB2'/><category term='Uni Life'/><title type='text'>FlyingCore-Some Place Good</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-2644623884795570623</id><published>2008-12-07T13:19:00.001+01:00</published><updated>2008-12-07T13:19:48.034+01:00</updated><title type='text'>Java书籍</title><content type='html'>一、入门  &lt;br /&gt;《Java 2从入门到精通》－ 推荐  &lt;br /&gt;《Thinking in Java》－ 强烈推荐*  &lt;br /&gt;O’reilly的Java编程基础系列 － 参考*  &lt;br /&gt;&lt;br /&gt;二、进阶  &lt;br /&gt;《Java Cook Book》－ 非常推荐* （包含了Java编程的Tips，适合当做手册来查阅）  &lt;br /&gt;《O’reilly-Java IO》－ 推荐* （包含Java IO编程的各个方面）  &lt;br /&gt;《O’reilly-Database Programming with JDBC》－ 推荐* （JDBC编程）  &lt;br /&gt;《O’reilly-Java Programming with Oracle JDBC》－ 参考*  &lt;br /&gt;&lt;br /&gt;三、Java Web编程  &lt;br /&gt;《O’reilly-Java Server Pages》－ 强烈推荐*  &lt;br /&gt;《O’reilly-Java Servlet Programming》－ 非常推荐*  &lt;br /&gt;《O’reilly-Jakarta Struts》－ 推荐* （Java Web编程的一个MVC实现框架Struts的书）  &lt;br /&gt;&lt;br /&gt;四、EJB编程  &lt;br /&gt;《J2EE应用与BEA Weblogic Server》－ 强烈推荐  &lt;br /&gt;《Mastering EJB 2.0》－ 非常推荐*  &lt;br /&gt;《Enterprise Java Bean》－ 推荐*  &lt;br /&gt;&lt;br /&gt;五、Java XML编程  &lt;br /&gt;《O’reilly-Java and XML》－ 推荐*  &lt;br /&gt;《O’reilly-Java and SOAP》－ 参考* （Java的SOAP编程）  &lt;br /&gt;&lt;br /&gt;六、设计模式  &lt;br /&gt;《Core J2EE Patterns》－ 强烈推荐* （J2EE设计模式，设计企业应用软件必备参考书）  &lt;br /&gt;《EJB Design Patterns》－ 推荐*  &lt;br /&gt;&lt;br /&gt;七、其它  &lt;br /&gt;《O’reilly Ant - The Definitive Guide》－ 推荐* （Ant是一种功能非常强大的Java工具）  &lt;br /&gt;&lt;br /&gt;Note:  &lt;br /&gt;强烈推荐书籍：建议购买，重点学习  &lt;br /&gt;非常推荐书籍：建议花时间学习  &lt;br /&gt;推荐书籍：在学有余力的情况下，建议学习  &lt;br /&gt;参考书籍：有兴趣的情况下学习  &lt;br /&gt;&lt;br /&gt;标明*号的书籍有电子版本  &lt;br /&gt;可以去http://www.china-pub.com 看看&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-2644623884795570623?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/2644623884795570623/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=2644623884795570623' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2644623884795570623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2644623884795570623'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/12/java_07.html' title='Java书籍'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-4840130204107980414</id><published>2008-12-07T13:15:00.001+01:00</published><updated>2008-12-07T13:15:30.654+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>学习Java之路</title><content type='html'>http://news.csdn.net/n/20070416/102870.html&lt;br /&gt;&lt;span style="font-size:85%;"&gt; JAVA是一种平台，也是一种程序设计语言，如何学好程序设计不仅仅适用于JAVA，对C++等其他程序设计语言也一样管用。有编程高手认为，JAVA也 好C也好没什么分别，拿来就用。为什么他们能达到如此境界？我想是因为编程语言之间有共通之处，领会了编程的精髓，自然能够做到一通百通。如何学习程序设 计理所当然也有许多共通的地方。&lt;br /&gt;&lt;br /&gt;　　1.1　培养兴趣&lt;br /&gt;&lt;br /&gt;　　兴趣是能够让你坚持下去的动力。如果只是把写程序作为谋生的手段的话，你会活的很累，也太对不起自己了。多关心一些行业趣事，多想想盖茨。不是提倡天 天做白日梦，但人要是没有了梦想，你觉得有味道吗？可能像许多深圳本地农民一样，打打麻将，喝喝功夫茶，拜拜财神爷；每个月就有几万十几万甚至更多的进 帐，凭空多出个"食利阶层"。你认为，这样有味道吗？有空多到一些程序员论坛转转，你会发现，他们其实很乐观幽默，时不时会冒出智慧的火花。&lt;br /&gt;&lt;br /&gt;　　1.2　慎选程序设计语言&lt;br /&gt;&lt;br /&gt;　　男怕入错行，女怕嫁错郎。初学者选择程序设计语言需要谨慎对待。软件开发不仅仅是掌握一门编程语言了事，它还需要其他很多方面的背景知识。软件开发也不仅仅局限于某几个领域，而是已经渗透到了各行各业几乎每一个角落。&lt;br /&gt;&lt;br /&gt;　　如果你对硬件比较感兴趣，你可以学习C语言/汇编语言，进入硬件开发领域。如果你对电信的行业知识及网络比较熟悉，你可以在C/C++等之上多花时 间，以期进入电信软件开发领域。如果你对操作系统比较熟悉，你可以学习C/Linux等等,为Linux内核开发/驱动程序开发/嵌入式开发打基础。如果 你想介入到应用范围最广泛的应用软件开发（包括电子商务电子政务系统）的话，你可以选择J2EE或.NET，甚至LAMP组合。每个领域要求的背景知识不 一样。做应用软件需要对数据库等很熟悉。总之，你需要根据自己的特点来选择合适你的编程语言。&lt;br /&gt;&lt;br /&gt;　　1.3　要脚踏实地,快餐式的学习不可取&lt;br /&gt;&lt;br /&gt;　　先分享一个故事。&lt;br /&gt;&lt;br /&gt;　　有一个小朋友，他很喜欢研究生物学，很想知道那些蝴蝶如何从蛹壳里出来，变成蝴蝶便会飞。 有一次，他走到草原上面看见一个蛹，便取了回家，然后看着，过了几天以后，这个蛹出了一条裂痕，看见里面的蝴蝶开始挣扎，想抓破蛹壳飞出来。 这个过程达数小时之久，蝴蝶在蛹里面很辛苦地拼命挣扎，怎么也没法子走出来。这个小孩看着看着不忍心，就想不如让我帮帮它吧，便随手拿起剪刀在蛹上剪开， 使蝴蝶破蛹而出。 但蝴蝶出来以后，因为翅膀不够力，变得很臃肿，飞不起来。&lt;br /&gt;&lt;br /&gt;　　这个故事给我们的启示是：欲速则不达。&lt;br /&gt;&lt;br /&gt;　　浮躁是现代人最普遍的心态，能怪谁？也许是贫穷落后了这么多年的缘故，就像当年的大跃进一样，都想大步跨入共产主义社会。现在的软件公司、客户、政 府、学校、培训机构等等到处弥漫着浮躁之气。就拿笔者比较熟悉的深圳IT培训行业来说吧，居然有的打广告宣称"参加培训，100%就业"，居然报名的学生 不少，简直是藐视天下程序员。社会环境如是，我们不能改变，只能改变自己,闹市中的安宁，弥足珍贵。许多初学者C++/JAVA没开始学，立马使用VC /JBuilder,会使用VC/JBuilder开发一个Hello World程序，就忙不迭的向世界宣告，"我会软件开发了"，简历上也大言不惭地写上"精通VC/JAVA"。结果到软件公司面试时要么被三两下打发走 了，要么被驳的体无完肤，无地自容。到处碰壁之后才知道捧起《C++编程思想》《JAVA编程思想》仔细钻研，早知如此何必当初呀。&lt;br /&gt;&lt;br /&gt;　　"你现在讲究简单方便，你以后的路就长了"，好象也是佛经中的劝戒。&lt;br /&gt;&lt;br /&gt;　　1.4　多实践,快实践&lt;br /&gt;&lt;br /&gt;　　彭端淑的《为学一首示子侄》中有穷和尚与富和尚的故事。&lt;br /&gt;&lt;br /&gt;　　从前，四川边境有两个和尚，一个贫穷，一个有钱。一天，穷和尚对富和尚说："我打算去南海朝圣，你看怎么样？"富和尚说："这里离南海有几千里远，你 靠什么去呢？"穷和尚说："我只要一个水钵，一个饭碗就够了。"富和尚为难地说："几年前我就打算买条船去南海，可至今没去成，你还是别去吧！" 一年以后，富和尚还在为租赁船只筹钱，穷和尚却已经从南海朝圣回来了。&lt;br /&gt;&lt;br /&gt;　　这个故事可解读为：任何事情，一旦考虑好了，就要马上上路，不要等到准备周全之后，再去干事情。假如事情准备考虑周全了再上路的话，别人恐怕捷足先登 了。软件开发是一门工程学科，注重的就是实践，"君子动口不动手"对软件开发人员来讲根本就是错误的，他们提倡"动手至上"，但别害怕，他们大多温文尔 雅，没有暴力倾向，虽然有时候蓬头垢面的一副"比尔盖茨"样。有前辈高人认为，学习编程的秘诀是：编程、编程、再编程，笔者深表赞同。不仅要多实践，而且 要快实践。我们在看书的时候，不要等到你完全理解了才动手敲代码，而是应该在看书的同时敲代码，程序运行的各种情况可以让你更快更牢固的掌握知识点。&lt;br /&gt;&lt;br /&gt;　　1.5　多参考程序代码&lt;br /&gt;&lt;br /&gt;　　程序代码是软件开发最重要的成果之一，其中渗透了程序员的思想与灵魂。许多人被《仙剑奇侠传》中凄美的爱情故事感动,悲剧的结局更有一种缺憾美。为什 么要以悲剧结尾？据说是因为写《仙剑奇侠传》的程序员失恋而安排了这样的结局，他把自己的感觉融入到游戏中，却让众多的仙剑迷扼腕叹息。&lt;br /&gt;&lt;br /&gt;　　多多参考代码例子，对JAVA而言有参考文献[4.3],有API类的源代码(JDK安装目录下的src.zip文件)，也可以研究一些开源的软件或框架。&lt;br /&gt;&lt;br /&gt;　　1.6　加强英文阅读能力&lt;br /&gt;&lt;br /&gt;　　对学习编程来说，不要求英语, 但不能一点不会,。最起码像JAVA API文档(参考文献[4.4])这些东西还是要能看懂的,连猜带懵都可以；旁边再开启一个"金山词霸"。看多了就会越来越熟练。在学JAVA的同时学习 英文，一箭双雕多好。另外好多软件需要到英文网站下载，你要能够找到它们，这些是最基本的要求。英语好对你学习有很大的帮助。口语好的话更有机会进入管理 层，进而可以成为剥削程序员的"周扒皮"。&lt;br /&gt;&lt;br /&gt;　　1.7　万不得已才请教别人&lt;br /&gt;&lt;br /&gt;　　笔者在ChinaITLab网校的在线辅导系统中解决学生问题时发现，大部分的问题学生稍做思考就可以解决。请教别人之前，你应该先回答如下几个问题。&lt;br /&gt;&lt;br /&gt;　　你是否在google中搜索了问题的解决办法？&lt;br /&gt;&lt;br /&gt;　　你是否查看了JAVA API文档？&lt;br /&gt;&lt;br /&gt;　　你是否查找过相关书籍？&lt;br /&gt;&lt;br /&gt;　　你是否写代码测试过？&lt;br /&gt;&lt;br /&gt;　　如果回答都是"是"的话，而且还没有找到解决办法，再问别人不迟。要知道独立思考的能力对你很重要。要知道程序员的时间是很宝贵的。&lt;br /&gt;&lt;br /&gt;　　1.8　多读好书&lt;br /&gt;&lt;br /&gt;　　书中自有颜如玉。比尔?盖茨是一个饱读群书的人。虽然没有读完大学，但九岁的时候比尔?盖茨就已经读完了所有的百科全书，所以他精通天文、历史、地理等等各类学科，可以说比尔?盖茨不仅是当今世界上金钱的首富，而且也可以称得上是知识的巨富。&lt;br /&gt;&lt;br /&gt;　　笔者在给学生上课的时候经常会给他们推荐书籍，到后来学生实在忍无可忍开始抱怨，"天呐，这么多书到什么时候才能看完了"，"学软件开发，感觉上了贼 船"。这时候，我的回答一般是，"别着急，什么时候带你们去看看我的书房，到现在每月花在技术书籍上的钱400元，这在软件开发人员之中还只能够算是中等 的"，学生当场晕倒。（注：这一部分学生是刚学软件开发的）&lt;br /&gt;&lt;br /&gt;　　对于在JAVA开发领域的好书在笔者另外一篇文章中会专门点评。该文章可作为本文的姊妹篇。&lt;br /&gt;&lt;br /&gt;　　1.9　使用合适的工具&lt;br /&gt;&lt;br /&gt;　　工欲善其事必先利其器。软件开发包含各种各样的活动，需求收集分析、建立用例模型、建立分析设计模型、编程实现、调试程序、自动化测试、持续集成等 等，没有工具帮忙可以说是寸步难行。工具可以提高开发效率，使软件的质量更高BUG更少。组合称手的武器。到飞花摘叶皆可伤人的境界就很高了，无招胜有 招，手中无剑心中有剑这样的境界几乎不可企及。在笔者另外一篇文章中会专门阐述如何选择合适的工具（该文章也可作为本文的姊妹篇）。&lt;br /&gt;&lt;br /&gt;　　2．软件开发学习路线&lt;br /&gt;&lt;br /&gt;　　两千多年的儒家思想孔孟之道，中庸的思想透入骨髓，既不冒进也不保守并非中庸之道，而是找寻学习软件开发的正确路线与规律。&lt;br /&gt;&lt;br /&gt;　　从软件开发人员的生涯规划来讲，我们可以大致分为三个阶段，软件工程师→软件设计师→架构设计师或项目管理师。不想当元帅的士兵不是好士兵，不想当架 构设计师或项目管理师的程序员也不是好的程序员。我们应该努力往上走。让我们先整理一下开发应用软件需要学习的主要技术。&lt;br /&gt;&lt;br /&gt;　　A．基础理论知识，如操作系统、编译原理、数据结构与算法、计算机原理等，它们并非不重要。如不想成为计算机科学家的话，可以采取"用到的时候再来学"的原则。&lt;br /&gt;&lt;br /&gt;　　B．一门编程语言，现在基本上都是面向对象的语言，JAVA/C++/C#等等。如果做WEB开发的话还要学习HTML/JavaScript等等。&lt;br /&gt;&lt;br /&gt;　　C．一种方法学或者说思想，现在基本都是面向对象思想（OOA/OOD/设计模式）。由此而衍生的基于组件开发CBD/面向方面编程AOP等等。&lt;br /&gt;&lt;br /&gt;　　D．一种关系型数据库，ORACLE/SqlServer/DB2/MySQL等等&lt;br /&gt;&lt;br /&gt;　　E．一种提高生产率的IDE集成开发环境JBuilder/Eclipse/VS.NET等。&lt;br /&gt;&lt;br /&gt;　　F．一种UML建模工具，用ROSE/VISIO/钢笔进行建模。&lt;br /&gt;&lt;br /&gt;　　G．一种软件过程，RUP/XP/CMM等等，通过软件过程来组织软件开发的众多活动，使开发流程专业化规范化。当然还有其他的一些软件工程知识。&lt;br /&gt;&lt;br /&gt;　　H．项目管理、体系结构、框架知识。&lt;br /&gt;&lt;br /&gt;　　正确的路线应该是：B→C→E→F→G→H。&lt;br /&gt;&lt;br /&gt;　　还需要补充几点：&lt;br /&gt;&lt;br /&gt;　　1）．对于A与C要补充的是，我们应该在实践中逐步领悟编程理论与编程思想。新技术虽然不断涌现，更新速度令人眼花燎乱雾里看花；但万变不离其宗，编 程理论与编程思想的变化却很慢。掌握了编程理论与编程思想你就会有拨云见日之感。面向对象的思想在目前来讲是相当关键的，是强势技术之一，在上面需要多投 入时间，给你的回报也会让你惊喜。&lt;br /&gt;&lt;br /&gt;　　2）．对于数据库来说是独立学习的，这个时机就由你来决定吧。&lt;br /&gt;&lt;br /&gt;　　3）．编程语言作为学习软件开发的主线，而其余的作为辅线。&lt;br /&gt;&lt;br /&gt;　　4）．软件工程师着重于B、C、E、 D；软件设计师着重于B、C、E、 D、F；架构设计师着重于C、F、H。&lt;br /&gt;&lt;br /&gt;　　3．如何学习JAVA?&lt;br /&gt;&lt;br /&gt;　　3.1 JAVA学习路线&lt;br /&gt;&lt;br /&gt;　　3.1.1 基础语法及JAVA原理&lt;br /&gt;&lt;br /&gt;　　基础语法和JAVA原理是地基，地基不牢靠，犹如沙地上建摩天大厦，是相当危险的。学习JAVA也是如此，必须要有扎实的基础，你才能在J2EE、 J2ME领域游刃有余。参加SCJP（SUN公司认证的JAVA程序员）考试不失为一个好方法，原因之一是为了对得起你交的1200大洋考试费，你会更努 力学习，原因之二是SCJP考试能够让你把基础打得很牢靠，它要求你跟JDK一样熟悉JAVA基础知识；但是你千万不要认为考过了SCJP就有多了不起， 就能够获得软件公司的青睐，就能够获取高薪，这样的想法也是很危险的。获得"真正"的SCJP只能证明你的基础还过得去，但离实际开发还有很长的一段路要 走。&lt;br /&gt;&lt;br /&gt;　　3.1.2 OO思想的领悟&lt;br /&gt;&lt;br /&gt;　　掌握了基础语法和JAVA程序运行原理后，我们就可以用JAVA语言实现面向对象的思想了。面向对象，是一种方法学;是独立于语言之外的编程思想;是 CBD基于组件开发的基础;属于强势技术之一。当以后因工作需要转到别的面向对象语言的时候，你会感到特别的熟悉亲切，学起来像喝凉水这么简单。&lt;br /&gt;&lt;br /&gt;　　使用面向对象的思想进行开发的基本过程是：&lt;br /&gt;&lt;br /&gt;　　●调查收集需求。&lt;br /&gt;&lt;br /&gt;　　●建立用例模型。&lt;br /&gt;&lt;br /&gt;　　●从用例模型中识别分析类及类与类之间的静态动态关系，从而建立分析模型。&lt;br /&gt;&lt;br /&gt;　　●细化分析模型到设计模型。&lt;br /&gt;&lt;br /&gt;　　●用具体的技术去实现。&lt;br /&gt;&lt;br /&gt;　　●测试、部署、总结。&lt;br /&gt;&lt;br /&gt;　　3.1.3 基本API的学习&lt;br /&gt;&lt;br /&gt;　　进行软件开发的时候，并不是什么功能都需要我们去实现，也就是经典名言所说的"不需要重新发明轮子"。我们可以利用现成的类、组件、框架来搭建我们的 应用，如SUN公司编写好了众多类实现一些底层功能，以及我们下载过来的JAR文件中包含的类,我们可以调用类中的方法来完成某些功能或继承它。那么这些 类中究竟提供了哪些方法给我们使用？方法的参数个数及类型是？类的构造器需不需要参数？总不可能SUN公司的工程师打国际长途甚至飘洋过海来告诉你他编写 的类该如何使用吧。他们只能提供文档给我们查看，JAVA DOC文档（参考文献4.4）就是这样的文档，它可以说是程序员与程序员交流的文档。&lt;br /&gt;&lt;br /&gt;　　基本API指的是实现了一些底层功能的类，通用性较强的API，如字符串处理/输入输出等等。我们又把它成为类库。熟悉API的方法一是多查JAVA DOC文档（参考文献4.4），二是使用JBuilder/Eclipse等IDE的代码提示功能。&lt;br /&gt;&lt;br /&gt;　　3.1.4 特定API的学习&lt;br /&gt;&lt;br /&gt;　　JAVA介入的领域很广泛，不同的领域有不同的API，没有人熟悉所有的API，对一般人而言只是熟悉工作中要用到的API。如果你做界面开发，那么 你需要学习Swing/AWT/SWT等API；如果你进行网络游戏开发，你需要深入了解网络API/多媒体API/2D3D等；如果你做WEB开发，就 需要熟悉Servlet等API啦。总之，需要根据工作的需要或你的兴趣发展方向去选择学习特定的API。&lt;br /&gt;&lt;br /&gt;　　3.1.5 开发工具的用法&lt;br /&gt;&lt;br /&gt;　　在学习基础语法与基本的面向对象概念时，从锻炼语言熟练程度的角度考虑，我们推荐使用的工具是Editplus/JCreator+JDK,这时候不 要急于上手JBuilder/Eclipse等集成开发环境，以免过于关注IDE的强大功能而分散对JAVA技术本身的注意力。过了这一阶段你就可以开始 熟悉IDE了。&lt;br /&gt;&lt;br /&gt;　　程序员日常工作包括很多活动，编辑、编译及构建、调试、单元测试、版本控制、维持模型与代码同步、文档的更新等等，几乎每一项活动都有专门的工具，如 果独立使用这些工具的话，你将会很痛苦，你需要在堆满工具的任务栏上不断的切换，效率很低下，也很容易出错。在JBuilder、Eclipse等IDE 中已经自动集成编辑器、编译器、调试器、单元测试工具JUnit、自动构建工具ANT、版本控制工具CVS、DOC文档生成与更新等等，甚至可以把UML 建模工具也集成进去，又提供了丰富的向导帮助生成框架代码，让我们的开发变得更轻松。应该说IDE发展的趋势就是集成软件开发中要用到的几乎所有工具。&lt;br /&gt;&lt;br /&gt;　　从开发效率的角度考虑，使用IDE是必经之路，也是从一个学生到一个职业程序员转变的里程碑。&lt;br /&gt;&lt;br /&gt;　　JAVA开发使用的IDE主要有Eclipse、JBuilder、JDeveloper、NetBeans等几种；而Eclipse、 JBuilder占有的市场份额是最大的。JBuilder在近几年来一直是JAVA集成开发环境中的霸主，它是由备受程序员尊敬的Borland公司开 发，在硝烟弥漫的JAVA IDE大战中,以其快速的版本更新击败IBM的Visual Age for JAVA等而成就一番伟业。IBM在Visual Age for JAVA上已经无利可图之下，干脆将之贡献给开源社区，成为Eclipse的前身，真所谓"柳暗花明又一村"。浴火重生的Eclipse以其开放式的插件 扩展机制、免费开源获得广大程序员（包括几乎所有的骨灰级程序员）的青睐，极具发展潜力。&lt;br /&gt;&lt;br /&gt;　　3.1.6 学习软件工程&lt;br /&gt;&lt;br /&gt;　　对小型项目而言，你可能认为软件工程没太大的必要。随着项目的复杂性越来越高，软件工程的必要性才会体现出来。参见"软件开发学习路线"小节。&lt;br /&gt;&lt;br /&gt;　　3.2学习要点&lt;br /&gt;&lt;br /&gt;　　确立的学习路线之后，我们还需要总结一下JAVA的学习要点，这些要点在前文多多少少提到过，只是笔者觉得这些地方特别要注意才对它们进行汇总，不要嫌我婆婆妈妈啊。&lt;br /&gt;&lt;br /&gt;　　3.2.1勤查API文档&lt;br /&gt;&lt;br /&gt;　　当程序员编写好某些类，觉得很有成就感,想把它贡献给各位苦难的同行。这时候你要使用"javadoc"工具（包含在JDK中）生成标准的JAVA DOC文档,供同行使用。J2SE/J2EE/J2ME的DOC文档是程序员与程序员交流的工具，几乎人手一份，除了菜鸟之外。J2SE DOC文档官方下载地址：http://java.sun.com/j2se/1.5.0/download.jsp，你可以到google搜索CHM版 本下载。也可以在线查看：http://java.sun.com/j2se/1.5.0/docs/api/index.html。&lt;br /&gt;&lt;br /&gt;　　对待DOC文档要像毛主席语录，早上起床念一遍，吃饭睡觉前念一遍。&lt;br /&gt;&lt;br /&gt;　　当需要某项功能的时候，你应该先查相应的DOC文档看看有没有现成的实现，有的话就不必劳神费心了直接用就可以了，找不到的时候才考虑自己实现。使用步骤一般如下：&lt;br /&gt;&lt;br /&gt;　　●找特定的包，包一般根据功能组织。&lt;br /&gt;&lt;br /&gt;　　●找需要使用类，类命名规范的话我们由类的名字可猜出一二。&lt;br /&gt;&lt;br /&gt;　　●选择构造器，大多数使用类的方式是创建对象。&lt;br /&gt;&lt;br /&gt;　　●选择你需要的方法。&lt;br /&gt;&lt;br /&gt;　　3.2.2 查书/google-&gt;写代码测试-&gt;查看源代码-&gt;请教别人&lt;br /&gt;&lt;br /&gt;　　当我们遇到问题的时候该如何解决？&lt;br /&gt;&lt;br /&gt;　　这时候不要急着问别人，太简单的问题，没经过思考的问题，别人会因此而瞧不起你。可以先找找书，到google中搜一下看看，绝大部分问题基本就解决 了。而像"某些类/方法如何使用的问题"，DOC文档就是答案。对某些知识点有疑惑是，写代码测试一下，会给你留下深刻的印象。而有的问题，你可能需要直 接看API的源代码验证你的想法。万不得已才去请教别人。&lt;br /&gt;&lt;br /&gt;　　3.2.3学习开源软件的设计思想&lt;br /&gt;&lt;br /&gt;　　JAVA领域有许多源代码开放的工具、组件、框架，JUnit、ANT、Tomcat、Struts、Spring、Jive论坛、PetStore 宠物店等等多如牛毛。这些可是前辈给我们留下的瑰宝呀。入宝山而空手归，你心甘吗？对这些工具、框架进行分析，领会其中的设计思想，有朝一日说不定你也能 写一个XXX框架什么的，风光一把。分析开源软件其实是你提高技术、提高实战能力的便捷方法。&lt;br /&gt;&lt;br /&gt;　　3.2.4 规范的重要性&lt;br /&gt;&lt;br /&gt;　　没有规矩，不成方圆。这里的规范有两层含义。第一层含义是技术规范，多到http://www.jcp.org下载JSRXXX规范，多读规范，这是 最权威准确最新的教材。第二层含义是编程规范，如果你使用了大量的独特算法，富有个性的变量及方法的命名方式；同时，没给程序作注释，以显示你的编程功底 是多么的深厚。这样的代码别人看起来像天书，要理解谈何容易，更不用说维护了，必然会被无情地扫入垃圾堆。JAVA编码规范到此查看或下载 http://java.sun.com/docs/codeconv/，中文的也有，啊，还要问我在哪，请参考3.2.2节。&lt;br /&gt;&lt;br /&gt;　　3.2.5 不局限于JAVA&lt;br /&gt;&lt;br /&gt;　　很不幸，很幸运，要学习的东西还有很多。不幸的是因为要学的东西太多且多变，没时间陪老婆家人或女朋友，导致身心疲惫，严重者甚至导致抑郁症。幸运的是别人要抢你饭碗绝非易事，他们或她们需要付出很多才能达成心愿。&lt;br /&gt;&lt;br /&gt;　　JAVA不要孤立地去学习，需要综合学习数据结构、OOP、软件工程、UML、网络编程、数据库技术等知识，用横向纵向的比较联想的方式去学习会更有 效。如学习JAVA集合的时候找数据结构的书看看；学JDBC的时候复习数据库技术；采取的依然是"需要的时候再学"的原则。 &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-4840130204107980414?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/4840130204107980414/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=4840130204107980414' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4840130204107980414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4840130204107980414'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/12/java.html' title='学习Java之路'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-1693079330298086598</id><published>2008-09-08T16:54:00.001+02:00</published><updated>2008-09-08T16:54:57.993+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>制作PDF的软件和方法</title><content type='html'>&lt;p&gt;我们知道很多种分割合并制作PDF的软件和方法。但我们还是推荐你使用这些最受欢迎的方法。这里推荐的工具和服务有些是免费版的，当然也有需要付费的。尽管如此，他们仍然比我们熟知的一些软件要便宜的多~&lt;/p&gt;&lt;h1&gt;在线PDF转换&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;&lt;img style="border-width: 0px;" alt="zamar" src="http://techmagazine.ws/wp-content/uploads/2007/10/zamar.jpg" border="0" height="288" width="404" /&gt; &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Adobe公司的 &lt;a target="_blank" rel="nofollow" href="http://createpdf.adobe.com/"&gt;&lt;span style="color:#105cb6;"&gt;Create PDF Online&lt;/span&gt;&lt;/a&gt; 能够将包括网页在内的多种形式转换为 Adobe PDF。在网站上我们还可以做图像和文字的扫描识别。（在国内能做这个的真的不多~）&lt;/p&gt;&lt;p&gt;BCL Technology的 &lt;a target="_blank" rel="nofollow" href="http://www.pdfonline.com/"&gt;&lt;span style="color:#105cb6;"&gt;PDF Online&lt;/span&gt;&lt;/a&gt; 能够在人们最需要它的时候快速的生成PDF文件。作为他们的基本服务, 无论你身处哪里，家里，公司还是世界的任何角落，PDF Online 都能帮助你从PC, Mac,或者 Linux上生成PDF文件。&lt;/p&gt;&lt;p&gt;ESP的 &lt;a target="_blank" rel="nofollow" href="http://www.easysw.com/htmldoc/pdf-o-matic.php"&gt;&lt;span style="color:#105cb6;"&gt;PDF-o-matic&lt;/span&gt;&lt;/a&gt;运用简单的PHP脚本语言帮你完成转换。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://convert.neevia.com/"&gt;&lt;span style="color:#105cb6;"&gt;Neevia&lt;/span&gt;&lt;/a&gt; 不需要安装任何软件，即可帮你直接完成由其他文件转换成 PDF或者是图像。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://www.pdf4u.com/"&gt;&lt;span style="color:#105cb6;"&gt;PDF4U&lt;/span&gt;&lt;/a&gt; 简单两步即可在线创建PDF文件。你可以上传到服务器在线转换，也可以下载免费的PDF4U Printer转换器.&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://www.sanface.com/createpdf.html"&gt;&lt;span style="color:#105cb6;"&gt;Text2PDF&lt;/span&gt;&lt;/a&gt;是一个非常灵活又强有力的能转换文件，报告，表格到PDF的工具。具有多种语言选择，包括中，日，韩，徳，泰，希伯来等。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://www.drawloop.com/Solutions.aspx"&gt;&lt;span style="color:#105cb6;"&gt;Loop Service&lt;/span&gt;&lt;/a&gt; 同样是一款基于网络的上传文件，转换为PDF的工具，不需安装任何软件。 &lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://www.zamzar.com/"&gt;&lt;span style="color:#105cb6;"&gt;Zamzar&lt;/span&gt;&lt;/a&gt; 在线转换，不需安装软件，支持多种格式转换，而且格式正在不断增加中。&lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff0088;"&gt;您现在看到的文章来自于[布瓜堂-关注小事成就大事]我们关注方便实用的在线工具&lt;/span&gt;&lt;a target="_blank" href="http://www.buguat.com/"&gt;&lt;span style="color:#ff0088;"&gt;http://www.buguat.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;h1&gt;桌面转换&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;&lt;img style="border-width: 0px;" alt="bluebeam" src="http://techmagazine.ws/wp-content/uploads/2007/10/bluebeam.jpg" border="0" height="324" width="404" /&gt; &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://pages.cs.wisc.edu/%7Eghost/"&gt;&lt;span style="color:#105cb6;"&gt;Ghostscript&lt;/span&gt;&lt;/a&gt; 是一个能提供与PDF和与其相关文件服务的软件. Ghostscript 是一系列相关软件的合称。&lt;/p&gt;&lt;p&gt;Softland的 &lt;a target="_blank" rel="nofollow" href="http://www.dopdf.com/"&gt;&lt;span style="color:#105cb6;"&gt;doPDF&lt;/span&gt;&lt;/a&gt;对于个人和商业使用都是免费的。使用doPDF通过选择“打印”命令你可以创建具有搜索功能的PDF文件。轻轻点击，即可完成由Excel, Word或者是 PowerPoint，甚至是电子邮件和你喜欢的网站PDF的转换。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://www.pdf995.com/"&gt;&lt;span style="color:#105cb6;"&gt;PDF995&lt;/span&gt;&lt;/a&gt; 能够轻松创建具有专业品质的PDF文件。界面亲和，点击“打印”即可直接完成多种格式的转换 ，还具有阅读器可以马上预览结果。 Pdf995支持网络文件的保存，共享打印，页面定制和大尺寸打印。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://docs.google.com/"&gt;&lt;span style="color:#105cb6;"&gt;Google Docs&lt;/span&gt;&lt;/a&gt;——很知名吧？具有把文件保存成PDF的功能，同样通过简单的步骤即可完成共享。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://techmagazine.ws/wp-content/uploads/2007/10/primopdf.jpg"&gt;&lt;img style="border-width: 0px;" alt="primoPDF" src="http://techmagazine.ws/wp-content/uploads/2007/10/primopdf-thumb.jpg" border="0" height="95" width="354" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;ActivePDF的 &lt;a target="_blank" rel="nofollow" href="http://www.primopdf.com/"&gt;&lt;span style="color:#105cb6;"&gt;PrimoPDF&lt;/span&gt;&lt;/a&gt; 通过PrimoPDF® printer几秒之内就可完成由 Word, Excel等多种格式到PDF的高质量转换。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://www.mypdfcreator.com/index.php"&gt;&lt;span style="color:#105cb6;"&gt;MyPDFCreator&lt;/span&gt;&lt;/a&gt; 除了具有创建高质量PDF文件功能外，还具有安全管理和合并多个文件的功能。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://www.cutepdf.com/"&gt;&lt;span style="color:#105cb6;"&gt;CutePDF Writer&lt;/span&gt;&lt;/a&gt; 几乎能从打印方式支持所有文件格式到高质量PDF的转换。个人和商务使用都是绝对免费的。无水印，无广告，支持64位的 Windows.&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://sourceforge.net/projects/pdfcreator/"&gt;&lt;span style="color:#105cb6;"&gt;PDF Creator&lt;/span&gt;&lt;/a&gt; 能够通过 Windows应用程序方便的创建文件。使用方式和Word, StarCalc的打印功能类似.&lt;/p&gt;&lt;p&gt;Global Graphics的 &lt;a target="_blank" rel="nofollow" href="http://www.jawspdf.com/"&gt;&lt;span style="color:#105cb6;"&gt;Jaws PDF Creator&lt;/span&gt;&lt;/a&gt; 提供了高质量的转换，及注释，合并等功能于一体。特别适合单用户，小公司办公和企业团体。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://www.openoffice.org/"&gt;&lt;span style="color:#105cb6;"&gt;OpenOffice&lt;/span&gt;&lt;/a&gt; ——熟知的开源办公软件，同样具有转换PDF的功能。&lt;/p&gt;&lt;p&gt;Nuance的 &lt;a target="_blank" rel="nofollow" href="http://www.nuance.com/pdfconverter/"&gt;&lt;span style="color:#105cb6;"&gt;PDF Converter&lt;/span&gt;&lt;/a&gt;需要付费，但是你一旦使用，就会发现你无法离开他了，因为许多功能实在是太棒了！(包括右键菜单中许多你想象不到的强大功能).&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://www.e-pdfconverter.com/"&gt;&lt;span style="color:#105cb6;"&gt;e-PDF Converter&lt;/span&gt;&lt;/a&gt;能够将 PDF反转为文件，表格，而且看上去和以前的一模一样。而且，它的费用是其他类似软件的 1/3。&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://smartpdfconverter.com/?gclid=COTds7H7wI0CFRTGhgodolHOQg"&gt;&lt;span style="color:#105cb6;"&gt;Smart PDF Converter&lt;/span&gt;&lt;/a&gt;简单易用又功能强大。能将PDF转换为可编辑的Word，或者是HTML,TXT, XLS, JPEG, RTF, TIFF和其他格式的文件.&lt;/p&gt;&lt;p&gt;DocuDesk的 &lt;a target="_blank" rel="nofollow" href="http://www.docudesk.com/deskpdf_professional_intro2.htm"&gt;&lt;span style="color:#105cb6;"&gt;deskPDF&lt;/span&gt;&lt;/a&gt; 能创建100%兼容Adobe Acrobat的PDF文件。无论你是Microsoft Office用户,或者是 CAD的使用者,或者是什么其他300多款软件的使用者，deskPDF只需简单一步即可轻松完成PDF专业级的制作。&lt;/p&gt;&lt;p&gt;Bluebeam的 &lt;a target="_blank" rel="nofollow" href="http://www.bluebeam.com/web07/us/products/revu/standard/"&gt;&lt;span style="color:#105cb6;"&gt;PDF Revu&lt;/span&gt;&lt;/a&gt; 对那些需要简单又智能的转换方案的用户来说可算是最理想的了. Bluebeam可以在Word, Excel 或者是PowerPoint的控制工具面板中田间控制按钮，所以转换步骤就会变得前所未有的简单 。而对于其他 Windows 软件(比若说WordPerfect, Outlook, image files来说.) Bluebeam提供了Bluebeam PDF Printer创建驱动，直接创建PDF ，还支持其他九种文件的转换，真的是十分简单啊.&lt;/p&gt;&lt;p&gt;&lt;a target="_blank" rel="nofollow" href="http://www.foxitsoftware.com/"&gt;&lt;span style="color:#105cb6;"&gt;Foxit Reader&lt;/span&gt;&lt;/a&gt; ——我们常用的PDF阅读器。自身同样具有编辑和创建的功能 .&lt;/p&gt;&lt;p&gt;Sowedoo的 &lt;a target="_blank" rel="nofollow" href="http://www.sowedoo.com/us2/converter.htm"&gt;&lt;span style="color:#105cb6;"&gt;EasyPDF Converter&lt;/span&gt;&lt;/a&gt; 能帮你在数秒内完成地图，建议书，报告，笔记到高质量安全的PDF文件的转换。而且你还可以通过互联网共享，或者通过电子邮件发送，而且毫无困难&lt;/p&gt;&lt;p&gt;&lt;span style="color:#ff0088;"&gt;您现在看到的文章来自于[布瓜堂-关注小事成就大事]我们关注方便实用的在线工具&lt;/span&gt;&lt;a target="_blank" href="http://www.buguat.com/"&gt;&lt;span style="color:#ff0088;"&gt;http://www.buguat.com&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-1693079330298086598?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/1693079330298086598/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=1693079330298086598' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1693079330298086598'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1693079330298086598'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/09/pdf.html' title='制作PDF的软件和方法'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-8057170192933043672</id><published>2008-09-02T16:20:00.001+02:00</published><updated>2008-09-02T16:20:57.842+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>LaTeX的代码样式</title><content type='html'>把自己总结的用了很久的一些LaTeX的代码样式发上来，这些样式平时用得很多。对我来说非常珍贵呀。&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%一些最基本的环境&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%居中环境&lt;br /&gt;\begin{center}&lt;br /&gt;&lt;br /&gt;\end{center}&lt;br /&gt;%左对齐环境&lt;br /&gt;\begin{flushleft}&lt;br /&gt;&lt;br /&gt;\end{flushleft}&lt;br /&gt;%右对齐环境&lt;br /&gt;\begin{flushright}&lt;br /&gt;&lt;br /&gt;\end{flushright}&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%小页环境（可嵌入上面那三种环境中形成组合）&lt;br /&gt;\begin{minipage}{**cm}&lt;br /&gt;&lt;br /&gt;\end{minipage}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%列举样式&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% itemize 列举样式1：·　·　·　·&lt;br /&gt;\begin{itemize}&lt;br /&gt;\vspace{-2.8mm}\item&lt;br /&gt;\vspace{-2.8mm}\item&lt;br /&gt;\end{itemize}&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% itemize 列举样式2：*  *  *  *&lt;br /&gt;\begin{itemize}&lt;br /&gt;\vspace{-2.8mm}\item[*]&lt;br /&gt;\vspace{-2.8mm}\item[**]&lt;br /&gt;\end{itemize}&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% itemize 列举样式3：任意符号&lt;br /&gt;\begin{itemize}&lt;br /&gt;\renewcommand\labelitemi{}%这里面写符号&lt;br /&gt;\vspace{-2.8mm}\item&lt;br /&gt;\vspace{-2.8mm}\item&lt;br /&gt;\end{itemize}&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% itemize 列举样式4：彩色符号&lt;br /&gt;\begin{itemize}&lt;br /&gt;\setlength\baselineskip{12pt} %用这个命令来调整间距应该比较具有通用性&lt;br /&gt;  \item[\textcolor{black}{$\spadesuit$}]  文字。。。&lt;br /&gt;  \item[\textcolor{red}{$\heartsuit$}]  文字。。。&lt;br /&gt;  \item[\textcolor{black}{$\clubsuit$}]  文字。。。&lt;br /&gt;  \item[\textcolor{red}{$\diamondsuit$}] 文字。。。&lt;br /&gt;\end{itemize}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% enumerate 列举样式1：1. 2. 3. 4.&lt;br /&gt;\begin{enumerate}&lt;br /&gt;\vspace{-2.8mm}\item&lt;br /&gt;\vspace{-2.8mm}\item&lt;br /&gt;\end{enumerate}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% enumerate 列举样式2：（1） （2） （3） （4）&lt;br /&gt;\begin{enumerate}&lt;br /&gt;\renewcommand\labelenumi{    \theenumi    }%就在前面那个括号的空格处加符号&lt;br /&gt;%\setlength\itemindent{}%这个会使列举的左移或右移指定的距离&lt;br /&gt;\vspace{-2.8mm}\item&lt;br /&gt;\vspace{-2.8mm}\item&lt;br /&gt;\end{enumerate}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%图形插入样式&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%图形排版样式1：定点&lt;br /&gt;%图形排版时名称一般都在下方&lt;br /&gt;\begin{center}&lt;br /&gt;\includegraphics[width=10cm,height=6cm]{*.eps}%就在前面括号中写图片名&lt;br /&gt;\renewcommand{\figurename}{图}&lt;br /&gt;\caption{}&lt;br /&gt;\label{}&lt;br /&gt;\end{center}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%图形排版样式2：浮动&lt;br /&gt;%图形排版时名称一般都在下方&lt;br /&gt;\begin{figure}&lt;br /&gt;\begin{center}&lt;br /&gt;\includegraphics[width=10cm,height=6cm]{*.eps}%就在前面括号中写图片名&lt;br /&gt;\renewcommand{\figurename}{图}&lt;br /&gt;\caption{}&lt;br /&gt;\label{}&lt;br /&gt;\end{center}&lt;br /&gt;\end{figure}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%图形排版样式3：两个图片并列，统一取名&lt;br /&gt;%图形排版时名称一般都在下方&lt;br /&gt;\begin{figure}&lt;br /&gt;\begin{center}&lt;br /&gt;\begin{minipage}[c]{0.5\textwidth}&lt;br /&gt;\centering\includegraphics[width=5cm,height=3cm]{*.eps}%就在前面括号中写图片名&lt;br /&gt;\end{minipage}%&lt;br /&gt;\begin{minipage}[c]{0.5\textwidth}&lt;br /&gt;\centering\includegraphics[width=5cm,height=3cm]{*.eps}%就在前面括号中写图片名&lt;br /&gt;\end{minipage}&lt;br /&gt;\renewcommand{\figurename}{图}&lt;br /&gt;\caption{}&lt;br /&gt;\label{}&lt;br /&gt;\end{center}&lt;br /&gt;\end{figure}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%图形排版样式4：两个图片并列，分别取名&lt;br /&gt;%图形排版时名称一般都在下方&lt;br /&gt;\begin{figure}&lt;br /&gt;\begin{center}&lt;br /&gt;\begin{minipage}[c]{0.5\textwidth}&lt;br /&gt;\centering\includegraphics[width=5cm,height=3cm]{}%就在前面括号中写图片名&lt;br /&gt;\renewcommand{\figurename}{图}&lt;br /&gt;\caption{ }&lt;br /&gt;\label{}&lt;br /&gt;\end{minipage}%&lt;br /&gt;\begin{minipage}[c]{0.5\textwidth}&lt;br /&gt;\centering\includegraphics[width=5cm,height=3cm]{}%就在前面括号中写图片名&lt;br /&gt;\renewcommand{\figurename}{图}&lt;br /&gt;\caption{ }&lt;br /&gt;\label{}&lt;br /&gt;\end{minipage}&lt;br /&gt;\end{center}&lt;br /&gt;\end{figure}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%图形排版样式5：两个图片作为子图并列，分别取名。四个可形成图形阵列。在下方有一个总名称&lt;br /&gt;\begin{figure}&lt;br /&gt;\centering&lt;br /&gt;\subfigure[子标题]{\includegraphics[width=0.45\textwidth]{*.eps}}&lt;br /&gt;%\mbox{\hspace{0.5cm}}&lt;br /&gt;\subfigure[子标题]{\includegraphics[width=0.45\textwidth]{*.eps}}&lt;br /&gt;\\&lt;br /&gt;\subfigure[子标题]{\includegraphics[width=0.45\textwidth]{*.eps}}&lt;br /&gt;%\mbox{\hspace{0.5cm}}&lt;br /&gt;\subfigure[子标题]{\includegraphics[width=0.45\textwidth]{*.eps}}&lt;br /&gt;\renewcommand{\figurename}{图}&lt;br /&gt;\caption{总标题}&lt;br /&gt;\label{}&lt;br /&gt;\end{figure}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%图形排版样式6：图片在盒子中&lt;br /&gt;\begin{figure}&lt;br /&gt;\begin{center}&lt;br /&gt;\fbox{\includegraphics[width=10cm,height=6cm]{*.eps}}%就在前面括号中写图片名&lt;br /&gt;\renewcommand{\figurename}{图}&lt;br /&gt;\caption{}&lt;br /&gt;\label{}&lt;br /&gt;\end{center}&lt;br /&gt;\end{figure}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%图形排版样式7：图文混排，段落插入图片用picins宏包和\parpic命令&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%&lt;br /&gt;\parpic{%&lt;br /&gt;\includegraphics[width=3.0cm]%&lt;br /&gt;{*.eps}}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% 表格样式&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% 基本表格样式&lt;br /&gt;% 在下面那个括号中，用|表示画竖线，而l表示单元格中的内容在单元格中左对齐，&lt;br /&gt;% c表示单元格中的内容在单元格中中对齐，r表示单元格中的内容在单元格中右对齐。&lt;br /&gt;% 如|c|c|c|就表示画一个3列有竖线的表，当然|也可略，就不画竖线出来；&lt;br /&gt;% 用\hline画横线，一般是表的一行内容输入完并强制换行(\\)后，在后面写&lt;br /&gt;% \hline，然后后面再写下一行内容。当然\hline也可略，就不画横线出来；&lt;br /&gt;% 下面这个表格是一个3行3列的表格&lt;br /&gt;\begin{tabular}{|c|c|c|}&lt;br /&gt;\hline&lt;br /&gt;*** &amp;amp; *** &amp;amp; ***\\&lt;br /&gt;\hline&lt;br /&gt;*** &amp;amp; *** &amp;amp; ***\\&lt;br /&gt;\hline&lt;br /&gt;*** &amp;amp; *** &amp;amp; ***\\&lt;br /&gt;\end{tabular}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% 下面这种形式可以指定表格的宽度。在下面那个括号中写上0.5\textwidth&lt;br /&gt;% 就可得到一个半张纸宽的一个表格；&lt;br /&gt;% 写上\textwidth就可得到一个整张纸宽的一个表格。&lt;br /&gt;\begin{tabular*}{***}{|c|c|c|}&lt;br /&gt;\hline&lt;br /&gt;*** &amp;amp; *** &amp;amp; ***\\&lt;br /&gt;\hline&lt;br /&gt;*** &amp;amp; *** &amp;amp; ***\\&lt;br /&gt;\hline&lt;br /&gt;*** &amp;amp; *** &amp;amp; ***\\&lt;br /&gt;\end{tabular*}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% 表格样式1：标题在图表上方，去掉了冒号&lt;br /&gt;\begin{table}&lt;br /&gt;\begin{center}&lt;br /&gt;%\makeatletter\def\@captype{table}\makeatother&lt;br /&gt;\renewcommand{\tablename}{表}&lt;br /&gt;\caption{}&lt;br /&gt;\label{}&lt;br /&gt;\begin{tabular}{}&lt;br /&gt;&lt;br /&gt;\end{tabular}&lt;br /&gt;\end{center}&lt;br /&gt;\end{table}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%表格样式2：用tabularx宏包&lt;br /&gt;\begin{center}&lt;br /&gt;\begin{tabularx}{350pt}{|c|X|c|X|}&lt;br /&gt;\hline&lt;br /&gt;\multicolumn{2}{|c|}{Multicolumn entry!}&amp;amp; THREE&amp;amp; FOUR\\&lt;br /&gt;\hline&lt;br /&gt;one&amp;amp;&lt;br /&gt;\raggedright\arraybackslash\setlength\baselineskip{12pt}&lt;br /&gt;The width of this column depends on the width of the table.&amp;amp; three&amp;amp;&lt;br /&gt;\raggedright\arraybackslash\setlength\baselineskip{12pt}&lt;br /&gt;Column four will act in the same way as column two, with the same width. \\&lt;br /&gt;\hline&lt;br /&gt;\end{tabularx}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%表格样式3：高级表格控制&lt;br /&gt;\begin{table}&lt;br /&gt;\begin{center}&lt;br /&gt;\scriptsize&lt;br /&gt;\renewcommand{\arraystretch}{1.3}&lt;br /&gt;\caption{Quasi-normal frequencies for the scalar perturbation in&lt;br /&gt;the stationary Schwarzschild background. \label{tab:1}}&lt;br /&gt;\begin{tabularx}{380pt}{*{5}{&gt;{\centering\arraybackslash}X|}&gt;{\centering\arraybackslash}X}&lt;br /&gt;\hline &amp;amp;&amp;amp;\multicolumn{2}{c|}&lt;br /&gt;{\textbf{Exact solution}}&amp;amp;\multicolumn{2}{c}{\textbf{Numerical solution}} \\&lt;br /&gt;\hline&lt;br /&gt;$\sqrt{M}$&amp;amp;$m$&amp;amp;$\omega_R$&amp;amp;$\omega_I$&amp;amp;$\omega_R$&amp;amp;$\omega_I$ \\&lt;br /&gt;\hline&lt;br /&gt;0.2&amp;amp;1&amp;amp;1&amp;amp;-0.4&amp;amp;1.002&amp;amp;-0.400 \\&lt;br /&gt;0.4&amp;amp;1&amp;amp;1&amp;amp;-0.8&amp;amp;0.965&amp;amp;-0.799 \\&lt;br /&gt;0.4&amp;amp;2&amp;amp;2&amp;amp;-0.8&amp;amp;2.003&amp;amp;-0.800 \\&lt;br /&gt;0.4&amp;amp;3&amp;amp;3&amp;amp;-0.8&amp;amp;3.004&amp;amp;-0.800 \\&lt;br /&gt;0.4&amp;amp;4&amp;amp;4&amp;amp;-0.8&amp;amp;4.005&amp;amp;-0.800 \\&lt;br /&gt;0.5&amp;amp;2&amp;amp;2&amp;amp;-1&amp;amp;1.999&amp;amp;-1.000 \\&lt;br /&gt;0.5&amp;amp;3&amp;amp;3&amp;amp;-1&amp;amp;2.993&amp;amp;-1.000 \\&lt;br /&gt;0.5&amp;amp;4&amp;amp;4&amp;amp;-1&amp;amp;4.007&amp;amp;-1.000 \\&lt;br /&gt;1&amp;amp;4&amp;amp;4&amp;amp;-2&amp;amp;4.004&amp;amp;-2.001 \\&lt;br /&gt;2&amp;amp;10&amp;amp;10&amp;amp;-4&amp;amp;10.014&amp;amp;-4.001 \\&lt;br /&gt;3&amp;amp;10&amp;amp;10&amp;amp;-6&amp;amp;10.028&amp;amp;-6.011 \\&lt;br /&gt;4&amp;amp;10&amp;amp;10&amp;amp;-8&amp;amp;9.973&amp;amp;-7.983 \\&lt;br /&gt;\hline&lt;br /&gt;\end{tabularx}&lt;br /&gt;\end{center}&lt;br /&gt;\end{table}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%公式样式&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%摘引环境1：段摘引&lt;br /&gt;\begin{verbatim}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;\end{verbatim}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%摘引环境2：行内摘引&lt;br /&gt;\verb|*********|&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%程序清单样式&lt;br /&gt;\lstset{language=matlab}&lt;br /&gt;\begin{lstlisting}[frame=trBL]{}&lt;br /&gt;clf;&lt;br /&gt;k=-80:80;&lt;br /&gt;a(k~=0)=sin(pi*k(k~=0)/2)./(k(k~=0)*pi);&lt;br /&gt;a(k==0)=0.5;&lt;br /&gt;stem(k,a);&lt;br /&gt;t=-3:0.01:3&lt;br /&gt;\end{lstlisting}&lt;br /&gt;%&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;%  参考文献样式&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;\small&lt;br /&gt;\renewcommand\refname{\hei 参考文献}&lt;br /&gt;\begin{thebibliography}{99}&lt;br /&gt;\setlength{\parskip}{0pt}  %段落之间的竖直距离&lt;br /&gt;\bibitem{tang}&lt;br /&gt;\bibitem{liu}&lt;br /&gt;\end{thebibliography}&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;br /&gt;% 参考文献结束&lt;br /&gt;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-8057170192933043672?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/8057170192933043672/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=8057170192933043672' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8057170192933043672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8057170192933043672'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/09/latex_02.html' title='LaTeX的代码样式'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-8750299411392865</id><published>2008-09-02T16:01:00.001+02:00</published><updated>2008-09-02T16:01:22.918+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>并列的子图形</title><content type='html'>&lt;h1&gt;&lt;span style="font-size:180%;"&gt;27.3 并列的子图形&lt;/span&gt; &lt;/h1&gt;  &lt;table border="0" width="550"&gt;   &lt;tbody&gt;&lt;tr&gt;      &lt;td class="MAINTEXT" height="132"&gt;在某些情况下，有时会希望将并列的图形组成一组，而其中的每一幅图 都保持其独立性。 paisubfigure 宏包的 &lt;a name="19788"&gt;&lt;/a&gt;&lt;a name="19789"&gt;&lt;/a&gt;&lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\subfigure&lt;/tt&gt;&lt;/span&gt; 命令将这一        组做为一幅图形，其中的每一幅图做为子图形。例如：        &lt;pre class="Code"&gt;\begin{figure}&lt;br /&gt; \centering&lt;br /&gt; \subfigure[Small Box with a Long Caption]{&lt;br /&gt;   \label{fig:subfig:a} %% label for first subfigure&lt;br /&gt;   \includegraphics[width=1.0in]{graphic.eps}}&lt;br /&gt; \hspace{1in}&lt;br /&gt; \subfigure[Big Box]{&lt;br /&gt;   \label{fig:subfig:b} %% label for second subfigure&lt;br /&gt;   \includegraphics[width=1.5in]{graphic.eps}}&lt;br /&gt; \caption{Two Subfigures}&lt;br /&gt; \label{fig:subfig} %% label for entire figure&lt;br /&gt;\end{figure}&lt;br /&gt;&lt;/pre&gt;       生成图 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:subfig"&gt;27.9&lt;/a&gt;。这里使用 L&lt;sup&gt;&lt;small&gt;A&lt;/small&gt;&lt;/sup&gt;T&lt;small&gt;E&lt;/small&gt;X 的引用命令 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\ref{fig:subfig:a}&lt;/tt&gt;&lt;/span&gt;         会得到 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:subfig:a"&gt;27.9(a)&lt;/a&gt;， &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\ref{fig:subfig:b}&lt;/tt&gt;&lt;/span&gt; 得到 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:subfig:b"&gt;27.9(b)&lt;/a&gt;，         &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\ref{fig:subfig}&lt;/tt&gt;&lt;/span&gt; 得到 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:subfig"&gt;27.9&lt;/a&gt;。      &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td&gt;               &lt;div align="center"&gt;&lt;a name="fig:subfig:a"&gt;&lt;/a&gt;&lt;a name="fig:subfig:b"&gt;&lt;/a&gt;&lt;a name="fig:subfig"&gt;&lt;/a&gt;&lt;a name="4075"&gt;&lt;/a&gt;          &lt;table height="194" width="562"&gt;           &lt;caption align="bottom"&gt; &lt;/caption&gt;           &lt;tbody&gt;&lt;tr&gt;              &lt;td height="227"&gt;                &lt;div align="center"&gt; &lt;!-- MATH  $\includegraphics[width=1in]{graphic.eps}$  --&gt;&lt;img src="http://www.ctex.org/documents/latex/graphics/img134.gif" alt="\includegraphics[width=1in]{graphic.eps}" align="bottom" border="0" height="153" width="324" /&gt;&lt;/div&gt;             &lt;/td&gt;           &lt;/tr&gt;         &lt;/tbody&gt;&lt;/table&gt;                           &lt;div class="MAINTEXT" align="left"&gt;像其它的并列图形一样，子图也可以在小页环境中使用。而且在一些情况下，            这样做还能更方便的得到理想的图形间距。例如：            &lt;pre class="Code"&gt;\begin{figure}&lt;br /&gt; \subfigure[Small Box with a Long Caption]{&lt;br /&gt;   \label{fig:mini:subfig:a} %% label for first subfigure&lt;br /&gt;   \begin{minipage}[b]{0.5\textwidth}&lt;br /&gt;     \centering&lt;br /&gt;     \includegraphics[width=1in]{graphic.eps}&lt;br /&gt;   \end{minipage}}%&lt;br /&gt; \subfigure[Big Box]{&lt;br /&gt;   \label{fig:mini:subfig:b} %% label for second subfigure&lt;br /&gt;   \begin{minipage}[b]{0.5\textwidth}&lt;br /&gt;     \centering&lt;br /&gt;     \includegraphics[width=1.5in]{graphic.eps}&lt;br /&gt;   \end{minipage}}&lt;br /&gt; \caption{Minipages Inside Subfigures}&lt;br /&gt; \label{fig:mini:subfig} %% label for entire figure&lt;br /&gt;\end{figure}&lt;br /&gt;&lt;/pre&gt;           得到图 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:mini:subfig"&gt;27.10&lt;/a&gt;，其中包括两个子图 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:mini:subfig:a"&gt;27.10(a)&lt;/a&gt;             和 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:mini:subfig:b"&gt;27.10(b)&lt;/a&gt;。 &lt;/div&gt;       &lt;/div&gt;     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td&gt;        &lt;p&gt; &lt;/p&gt;              &lt;div align="center"&gt;&lt;a name="fig:mini:subfig:a"&gt;&lt;/a&gt;&lt;a name="fig:mini:subfig:b"&gt;&lt;/a&gt;&lt;a name="fig:mini:subfig"&gt;&lt;/a&gt;&lt;a name="4094"&gt;&lt;/a&gt;          &lt;table&gt;           &lt;caption align="bottom"&gt; &lt;/caption&gt;           &lt;tbody&gt;&lt;tr&gt;              &lt;td&gt;                &lt;table width="50%"&gt;                 &lt;tbody&gt;&lt;tr&gt;                    &lt;td&gt;                      &lt;div align="center"&gt; &lt;!-- MATH  $\includegraphics[width=1in]{graphic.eps}$  --&gt; &lt;img src="http://www.ctex.org/documents/latex/graphics/img135.gif" alt="\includegraphics[width=1in]{graphic.eps}" align="bottom" border="0" height="144" width="379" /&gt;&lt;/div&gt;                   &lt;/td&gt;                 &lt;/tr&gt;               &lt;/tbody&gt;&lt;/table&gt;             &lt;/td&gt;           &lt;/tr&gt;         &lt;/tbody&gt;&lt;/table&gt;       &lt;/div&gt;     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td class="MAINTEXT"&gt;                      图 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:mini:subfig"&gt;27.10&lt;/a&gt; 中的子图标题比图 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:subfig"&gt;27.9&lt;/a&gt; 中的要宽一些。        这是因为子图标题的宽度和子图的宽度相同，图 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:subfig"&gt;27.9&lt;/a&gt; 中的子图        只包含图形，而图 &lt;a href="http://www.ctex.org/documents/latex/graphics/node111.html#fig:mini:subfig"&gt;27.10&lt;/a&gt; 中的子图包含了宽度为         &lt;tt&gt;0.5\textwidth&lt;/tt&gt; 的小页。 子图的标记有两种形式：        &lt;ol&gt;&lt;li&gt;一种是出现在子图的下面作为标题的一部分。这通过命令 &lt;a name="19842"&gt;&lt;/a&gt;&lt;a name="19843"&gt;&lt;/a&gt;&lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\@thesubfigure&lt;/tt&gt;&lt;/span&gt;             来生成。 &lt;/li&gt;&lt;li&gt;另一种是在使用 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\ref&lt;/tt&gt;&lt;/span&gt; 命令的时候出现。这通过将命令 &lt;a name="19876"&gt;&lt;/a&gt;&lt;a name="19877"&gt;&lt;/a&gt;&lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\p@subfigure&lt;/tt&gt;&lt;/span&gt;             的输出处理后传递给 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\thesubfigure&lt;/tt&gt;&lt;/span&gt; 命令来生成。          &lt;/li&gt;&lt;/ol&gt;       上面的这些命令使用 &lt;tt&gt;subfigure&lt;/tt&gt; 计数器和 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\thefigure&lt;/tt&gt;&lt;/span&gt; 命令。        子图的标记的格式由下面的命令来控制。        &lt;ul&gt;&lt;li&gt;命令 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\thefigure&lt;/tt&gt;&lt;/span&gt; 印出当前图形的编号。          &lt;/li&gt;&lt;li&gt;计数器 &lt;tt&gt;subfigure&lt;/tt&gt; 记录子图的编号，命令 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\alph{subfigure}&lt;/tt&gt;&lt;/span&gt;             将计数器 &lt;tt&gt;subfigure&lt;/tt&gt; 的值用小写字母印出，而 命令 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\roman{subfigure}&lt;/tt&gt;&lt;/span&gt; 则是用小写罗马数字印出（有关印出            计数器值的命令可参见文献 [&lt;a href="http://www.ctex.org/documents/latex/graphics/node119.html#Leslie"&gt;1&lt;/a&gt;, 第 98 页] 和  [&lt;a href="http://www.ctex.org/documents/latex/graphics/node119.html#Michel"&gt;3&lt;/a&gt;, 第 446 页]。）。 &lt;/li&gt;&lt;li&gt;命令 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\thesubfigure&lt;/tt&gt;&lt;/span&gt; 缺省使用小写字母，如 (a),(b) 等。          &lt;/li&gt;&lt;li&gt;命令 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\@thesubfigure&lt;/tt&gt;&lt;/span&gt; 缺省为 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\thesubfigure&lt;/tt&gt;&lt;/span&gt;&lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\space&lt;/tt&gt;&lt;/span&gt;，即在            标题标记和文本之间加上一个空白。 &lt;/li&gt;&lt;li&gt;命令 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\p@subfigure&lt;/tt&gt;&lt;/span&gt; 缺省为 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\thefigure&lt;/tt&gt;&lt;/span&gt;。          &lt;/li&gt;&lt;/ul&gt;     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td class="MAINTEXT"&gt;如果改变子图标题的标记，字体等的缺省值，可参见文献 [&lt;a href="http://www.ctex.org/documents/latex/graphics/node119.html#subfigure"&gt;10&lt;/a&gt;]。下面 给出几个简单的例子：        &lt;ul&gt;&lt;li&gt;若想让子图标题标记使用小写罗马数字如 (i), (ii)等， &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\ref&lt;/tt&gt;&lt;/span&gt; 命令的结果            如 12i, 12ii 等，可使用下面的命令（最好放在导言区中）            &lt;pre class="Code"&gt;      \renewcommand{\thesubfigure}{\roman{subfigure}}&lt;br /&gt;     \makeatletter&lt;br /&gt;       \renewcommand{\@thesubfigure}{(\thesubfigure)\space}&lt;br /&gt;       \renewcommand{\p@subfigure}{\thefigure}&lt;br /&gt;     \makeatother&lt;br /&gt;&lt;/pre&gt;         &lt;/li&gt;&lt;li&gt;若想让子图标题标记使用阿拉伯数字如 12.1:, 12.2: 等， &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\ref&lt;/tt&gt;&lt;/span&gt; 命令的结果            如 12.1, 12.2 等，可使用下面的命令            &lt;pre&gt;&lt;span class="Code"&gt;&lt;br /&gt;     \renewcommand{\thesubfigure}%&lt;br /&gt;                  {\thefigure.\arabic{subfigure}}&lt;br /&gt;     \makeatletter&lt;br /&gt;       \renewcommand{\@thesubfigure}{\thesubfigure:\space}&lt;br /&gt;       \renewcommand{\p@subfigure}{}&lt;br /&gt;     \makeatother&lt;/span&gt;&lt;/pre&gt;         &lt;/li&gt;&lt;/ul&gt;     &lt;/td&gt;   &lt;/tr&gt;   &lt;tr&gt;      &lt;td class="MAINTEXT"&gt;缺省情况下，用 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\listoffigures&lt;/tt&gt;&lt;/span&gt; 命令生成的图形目录中只包括图形，        而不包括子图。要想在图形目录中包括子图，要在 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\listoffigures&lt;/tt&gt;&lt;/span&gt;         命令前加上 &lt;span style="color:#0000ff;"&gt;&lt;tt&gt;\setcounter{lofdepth}{2}&lt;/tt&gt;&lt;/span&gt;。        需要说明的是，由于 L&lt;sup&gt;&lt;small&gt;A&lt;/small&gt;&lt;/sup&gt;T&lt;small&gt;E&lt;/small&gt;X 的变化，导致目前版本（&lt;tt&gt;&lt;i&gt;3/95&lt;/i&gt;&lt;/tt&gt;）        的 &lt;i&gt;subfigure&lt;/i&gt; 宏包在图形目录的子图输入项开始部分都加上 ``numberline1''。将下面的代码加到导言区中就可以解决这一问题。        &lt;pre class="Code"&gt;\makeatletter&lt;br /&gt; \renewcommand{\@subcaption}[2]{%&lt;br /&gt;   \begingroup&lt;br /&gt;     \let\label\@gobble&lt;br /&gt;     \def\protect{\string\string\string}%&lt;br /&gt;     \xdef\@subfigcaptionlist{%&lt;br /&gt;       \@subfigcaptionlist,%&lt;br /&gt;       {\numberline {\@currentlabel}%&lt;br /&gt;     \noexpand{\ignorespaces #2}}}%&lt;br /&gt;   \endgroup&lt;br /&gt; \@nameuse{@make#1caption}{\@nameuse{@the#1}}{#2}}&lt;br /&gt;\makeatother&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-8750299411392865?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/8750299411392865/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=8750299411392865' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8750299411392865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8750299411392865'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/09/blog-post.html' title='并列的子图形'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-7460061561032954460</id><published>2008-09-02T15:55:00.000+02:00</published><updated>2008-09-02T15:57:07.934+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>Latex 图片</title><content type='html'>插入eps图片&lt;br /&gt;使用\includegraphics[选项]{文件} 命令可以插入eps图片。下面是一个最简单的例子：&lt;br /&gt;&lt;br /&gt;\documentclass{article}&lt;br /&gt;\usepackage{graphicx}   %使用graphicx包&lt;br /&gt;\begin{document}&lt;br /&gt;\includegraphics{file.eps}  %插入图片，按图片原尺寸插入&lt;br /&gt;\end{document}&lt;br /&gt;&lt;br /&gt;注意：&lt;br /&gt;（1）eps文件和tex文件放在同一个文件夹，只用文件名就可以调用，不用写路径。&lt;br /&gt;&lt;br /&gt;（2）编译时不能使用pdflatex，会出错。即使不出错，也看不到图。应使用latex编译生成dvi，然后dvi2ps，ps2pdf就可以看到图了。&lt;br /&gt;&lt;br /&gt;使用[选项]可以指定图片大小：&lt;br /&gt;&lt;br /&gt;\includegraphics[width=3in]{file.eps}&lt;br /&gt;设定图片宽度为3 inches，图片高度会自动缩放。&lt;br /&gt;&lt;br /&gt;\includegraphics[width=\testwidth]{file.eps}&lt;br /&gt;设定图片宽度为文本宽度。&lt;br /&gt;&lt;br /&gt;\includegraphics[width=0.8\textwidth]{file.eps}&lt;br /&gt;设定图片宽度为文本宽度的0.8倍&lt;br /&gt;&lt;br /&gt;\includegraphics[width=\testwidth-2.0in]{file.eps}&lt;br /&gt;设定图片宽度比文本宽度少2 inches。&lt;br /&gt;&lt;br /&gt;使用[选项]指定图片旋转角度：&lt;br /&gt;\includegraphics[angle=270]{file.eps}&lt;br /&gt;将图片旋转270度。&lt;br /&gt;&lt;br /&gt;两个选项同时使用，中间用逗号隔开：&lt;br /&gt;\includegraphics[width=\testwidth, angle=270]{file.eps}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1，插入jpg图片&lt;br /&gt;在命令行环境下，使用命令：&lt;br /&gt;ebb  figure.jpg&lt;br /&gt;生成bounding box文件figure.bb。&lt;br /&gt;&lt;br /&gt;使用如下命令：&lt;br /&gt;\includegraphics[width=0.8\textwidth]{figure.jpg}&lt;br /&gt;&lt;br /&gt;可以使用Pdf Texify直接编译成pdf文件。&lt;br /&gt;&lt;br /&gt;2，插入bmp图片&lt;br /&gt;还没有找到直接插入bmp图片的方法。现在的方法是，使用&lt;br /&gt;gimp将bmp转换成jpg，然后按上述方法插入。转换时不要&lt;br /&gt;使用windows自带的painter，图片质量损失太多。用gimp或&lt;br /&gt;fastone image viewer，将jpg质量选为最高，转换之后得到的&lt;br /&gt;图片质量较好。&lt;br /&gt;&lt;br /&gt;3，同时插入jpg和eps图片&lt;br /&gt;插入的命令不变。编译时使用Latex， dvi2pdf，两种格式的&lt;br /&gt;图片都可以显示。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1，插入并列的子图&lt;br /&gt;&lt;br /&gt;\usepackage{subfigure}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;\begin{figure}[H]&lt;br /&gt;\centering&lt;br /&gt;\subfigure[SubfigureCaption]{&lt;br /&gt; \label{Fig.sub.1}&lt;br /&gt; \includegraphics[width=0.4\textwidth]{figurename.eps}}&lt;br /&gt;\subfigure[SubfigureCaption]{&lt;br /&gt; \label{Fig.sub.2}&lt;br /&gt; \includegraphics[width=0.4\textwidth]{figurename.eps}}&lt;br /&gt;\caption{MainfigureCaption}&lt;br /&gt;\label{Fig.lable}&lt;br /&gt;\end{figure}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2，控制图片位置&lt;br /&gt;如果不喜欢让Latex自动安排图片位置，可以使用float包，然后&lt;br /&gt;用\begin{figure}[H]。&lt;br /&gt;&lt;br /&gt;\usepackage{float}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-7460061561032954460?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/7460061561032954460/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=7460061561032954460' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7460061561032954460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7460061561032954460'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/09/latex.html' title='Latex 图片'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-1910289417038174926</id><published>2008-08-25T21:14:00.000+02:00</published><updated>2008-08-25T21:22:32.481+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>计算机科学的论文</title><content type='html'>一.计算机科学的中文论文&lt;br /&gt;            因为在校内的原因，一直以来只选择&lt;a href="http://202.119.47.6/" target="_blank" link="http://202.119.47.6/"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;维普科技期刊中文数据库&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;div&gt;&lt;wbr&gt;,&lt;a href="http://202.119.83.6/WFRS_Mirror/default.htm" target="_blank" link="http://202.119.83.6/WFRS_Mirror/default.htm"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;万方学位论文及会议论文全文库&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;,&lt;a href="http://lib.njust.edu.cn/resource/cnki.htm" target="_blank" link="http://lib.njust.edu.cn/resource/cnki.htm"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;中国期刊全文数据库&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;,&lt;a href="http://www.cnki.net/index.htm" target="_blank" link="http://www.cnki.net/index.htm"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;cnki(中国知网)&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;作为中文论文的搜索平台，结合对各种期刊的了解程度（可以参考国内计算机技术类核心期刊那篇日志），选取较为可信的期刊作为搜索对象。由于众所周知的原因，对中文论文中出现的的研究成果、结论、公式，一定要通过自己的论证后，才可使用。&lt;br /&gt;           &lt;br /&gt;            二.计算机科学的英文论文（按使用偏好）&lt;br /&gt;            1. &lt;a href="http://scholar.google.com/" target="_blank" link="http://scholar.google.com/"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;Google Scholar&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;Google Scholar对每一篇paper一般能返回若干个结果，可以点开group看，默认结果通常是链接向ACM或者IEEE的Digital Library的，是收费的。如果你的学校没有订阅的话，你是下载不了的。所以最好在group里面寻找一个链向作者主页的，实验室主页之类的，通常可以 直接下载。&lt;span style="line-height: 1.3em;color:#ff0000;" &gt;Citeseer 里面，很多文章的电子版都直接在citeseer的数据库里，可以直接下载。DBLP本身不提供论文下载，但是相当一部分paper是有链接指向ACM和 IEEE的。DBLP的好处是对论文进行了系统的分类，按作者，按会议，按期刊等等。Citeseer主要是根据citation来把paper串起来 的。&lt;/span&gt;&lt;wbr&gt;&lt;br /&gt;            2.&lt;a href="http://citeseer.ist.psu.edu/" target="_blank" link="http://citeseer.ist.psu.edu/"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;Citeseer&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            3. &lt;a href="http://www.informatik.uni-trier.de/%7Eley/db/" target="_blank" link="http://www.informatik.uni-trier.de/~ley/db/"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;DBLP&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            4. &lt;a href="http://www.computer.org/portal/site/csdl/index.jsp" target="_blank" link="http://www.computer.org/portal/site/csdl/index.jsp"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;IEEE Computer Society Digital Library&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            如果你跑到&lt;a href="http://www.ieee.org/" target="_blank" link="http://www.ieee.org/"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;ieee.org&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;，而不是&lt;a href="http://www.computer.org/" target="_blank" link="http://www.computer.org/"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;computer.org&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;，你会发现那里paper不是那么容易找。其实计算机专业的，到&lt;a href="http://www.computer.org/" target="_blank" link="http://www.computer.org/"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;computer.org&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;更容易找paper一点。这里也是需要订阅的，不是免费的。另外一方面，IEEE的会议多而杂，有好的会议，但是绝大部分会议是不如ACM的，所以在这里跟会议的proceedings一定要有针对性。 IEEE的几个magzine还是做得挺不错的，可以读读。&lt;br /&gt;            5.寻找&lt;a href="http://en.wikipedia.org/wiki/BibTeX" target="_blank" link="http://en.wikipedia.org/wiki/BibTeX"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;BibTeX&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            如果你用LaTeX写论文的话，手边备有几个地方可以找到现成的BibTeX entry还是很省事的（平时自己一定要积累，比如没看一篇paper，都把相应的bibtex entry整理好，放进自己的bib文件）。&lt;br /&gt;            在&lt;a href="http://portal.acm.org/dl.cfm" target="_blank" link="http://portal.acm.org/dl.cfm"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;ACM Digital Library&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;的每篇文章，都提供BibTeX的。IEEE则不提供。&lt;a href="http://citeseer.ist.psu.edu/" target="_blank" link="http://citeseer.ist.psu.edu/"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;Citeseer&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;也提供能找到的文章的BibTeX，&lt;a href="http://www.informatik.uni-trier.de/%7Eley/db/" target="_blank" link="http://www.informatik.uni-trier.de/~ley/db/"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;DBLP&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;也是。另外还有一个网站，专门收集paper的BibTeX，叫做&lt;a href="http://liinwww.ira.uka.de/bibliography/" target="_blank" link="http://liinwww.ira.uka.de/bibliography/"&gt;&lt;span style="line-height: 1.3em;color:#669900;" &gt;The Collection of Computer Science Bibliographies&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;，也是一个不错的地方。&lt;br /&gt;            6. 论文作者主页或其它收藏有此文的个人主页&lt;br /&gt;            7. ACM portal 全文下载收费, 学校就没有购买:(&lt;br /&gt;            8. 求助于国内各学术论坛。&lt;br /&gt;           &lt;br /&gt;            首先使用1,因为1是最全面的搜索平台，能够显示出目标论文出现的位置或直接下载的链接，可能出现在IEEE xplore、ACM portal、CiteSeer等数据库内或个人主页上，大多时候会出现作者DBLP信息。&lt;br /&gt;           &lt;br /&gt;            然后，进入相应的数据库或页面进行查阅下载。&lt;br /&gt;           &lt;br /&gt;            如果没有购买相应的数据库，可以试试CiteSeer或网上的个人主页，很多论文可以从这里可以免费下载。&lt;br /&gt;           &lt;br /&gt;            如果想要打开某个作者主页或找出其发表的所有论文，推荐使用DBLP。&lt;br /&gt;           &lt;br /&gt;            最后必杀技 (8)： 就是各大学术论坛发贴求助，有时候这是最直接有效的，参考学术论坛推荐&lt;br /&gt;            --------------------------------------------------------------------------------&lt;br /&gt;            给出部分搜索英文论文的网站&lt;br /&gt;            &lt;a href="http://ieeexplore.ieee.org/" target="_blank" link="http://ieeexplore.ieee.org/"&gt;&lt;span style="line-height: 1.3em;color:#01759c;" &gt;http://ieeexplore.ieee.org/&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            &lt;a href="http://citeseer.ist.psu.edu/" target="_blank" link="http://citeseer.ist.psu.edu/"&gt;&lt;span style="line-height: 1.3em;color:#01759c;" &gt;http://citeseer.ist.psu.edu/&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            &lt;a href="http://dblp.uni-trier.de/" target="_blank" link="http://dblp.uni-trier.de/"&gt;&lt;span style="line-height: 1.3em;color:#01759c;" &gt;http://dblp.uni-trier.de/&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            &lt;a href="http://www.computer.org/portal/site/ieeecs/index.jsp" target="_blank" link="http://www.computer.org/portal/site/ieeecs/index.jsp"&gt;&lt;span style="line-height: 1.3em;color:#01759c;" &gt;http://www.computer.org/portal/site/ieeecs/index.jsp&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            &lt;a href="http://smealsearch2.psu.edu/index.html/" target="_blank" link="http://smealsearch2.psu.edu/index.html/"&gt;&lt;span style="line-height: 1.3em;color:#01759c;" &gt;http://smealsearch2.psu.edu/index.html/&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            &lt;a href="http://portal.acm.org/portal.cfm" target="_blank" link="http://portal.acm.org/portal.cfm"&gt;&lt;span style="line-height: 1.3em;color:#01759c;" &gt;http://portal.acm.org/portal.cfm&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            &lt;a href="http://www.vldb.org/" target="_blank" link="http://www.vldb.org/"&gt;&lt;span style="line-height: 1.3em;color:#01759c;" &gt;http://www.vldb.org/&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt;&lt;br /&gt;            &lt;a href="http://scholar.google.com/" target="_blank" link="http://scholar.google.com/"&gt;&lt;span style="line-height: 1.3em;color:#01759c;" &gt;http://scholar.google.com/&lt;/span&gt;&lt;wbr&gt;&lt;/a&gt;&lt;wbr&gt; google scholar(google学术搜索)&lt;br /&gt;           &lt;br /&gt;            --------------------------------------------------------------------------------&lt;br /&gt;            在google或yahoo上搜索CiteSeer数据库的技巧：&lt;br /&gt;            在搜索栏内输 keyword site:citeseer.ist.psu.edu/&lt;br /&gt;            上面的keyword 还可以用引号引入多个，如：&lt;br /&gt;            "keyword1 keyword2" site:citeseer.ist.psu.edu/&lt;br /&gt;           &lt;br /&gt;            --------------------------------------------------------------------------------&lt;br /&gt;            What is DBLP&lt;br /&gt;DBLP, a computer science bibliography site, was originally a database and logic programming bibliography site, homed at Universit?t Trier, in Germany, and has existed at least since the 1980s. As of November 2004, DBLP listed 566,666 articles on the computer science field, mirrored at five sites across the Internet. Some of the journals which are tracked on this site include VLDB, a journal for Very Large Databases, and the ACM Transactions. (from en.wikipedia.org/wiki/DBLP)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-1910289417038174926?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/1910289417038174926/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=1910289417038174926' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1910289417038174926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1910289417038174926'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/08/blog-post_25.html' title='计算机科学的论文'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-2062900405140836761</id><published>2008-08-22T16:41:00.001+02:00</published><updated>2008-08-22T16:41:27.407+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>latex显示源代码</title><content type='html'>&lt;h2 class="posttitle"&gt;     &lt;a href="http://latex.yo2.cn/articles/latex-verbatim.html" rel="bookmark" title="Permanent link to latex显示源代码"&gt;latex显示源代码&lt;/a&gt;    &lt;/h2&gt;        &lt;p class="postmeta"&gt;      &lt;span class="post-date"&gt;31 Mar, 2008&lt;/span&gt;      &lt;span class="post-filed"&gt;&lt;a href="http://latex.yo2.cn/articles/category/latex%e6%95%99%e7%a8%8b" title="显示latex教程的所有日志" rel="category tag"&gt;latex教程&lt;/a&gt;&lt;/span&gt;        &lt;/p&gt;  &lt;div&gt; &lt;span style="font-size:100%;"&gt; &lt;a href="http://latex.yo2.cn/articles/about-copyright.html"&gt;版权声明&lt;/a&gt;: &lt;a href="http://latex.yo2.cn/" target="_blank" title="lijian605的博客"&gt;本站&lt;/a&gt;遵守创作共同约定(Creative Commons),采用&lt;a href="http://creativecommons.org/licenses/by-nc/2.5/cn/" rel="license"&gt;知识共享署名-非商业性使用 2.5 中国大陆许可协议&lt;/a&gt;进行许可. 如需引用,请保持完整声明. 参考本站资源时, 请注意内容的时效性和适用范围. 免责声明: 此主页仅供个人学习与娱乐使用, 不担保其内容的准确和有效性.&lt;/span&gt;        &lt;/div&gt;           &lt;p id="BlogArticleDetail" style="font-size: 14px;"&gt;使用\verb或者verbatim环境 显示&lt;a href="http://latex.yo2.com/"&gt;latex&lt;/a&gt;的源代码, 也可以用listings宏包.&lt;/p&gt; &lt;p id="BlogArticleDetail" style="font-size: 14px;"&gt;一个例子&lt;/p&gt; &lt;p id="BlogArticleDetail" style="font-size: 14px;"&gt;\documentclass[11pt]{article}&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: monospace;"&gt;\usepackage{verbatim}&lt;br /&gt;\usepackage{comment}&lt;/span&gt;&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;\begin{document}&lt;br /&gt;This document demonstrates the \verb=verbatim= environment&lt;br /&gt;and \verb=\verbatiminput= command. It also demonstrates the&lt;br /&gt;\verb=comment= environment, but you have to look at the TeX&lt;br /&gt;source to see that (of course).&lt;br /&gt;Here is a short piece of Maple code to demonstrate the&lt;br /&gt;the \verb=verbatim= environment:&lt;br /&gt;\begin{verbatim}&lt;br /&gt;&gt; eqn:=diff(y(t),t,t)+4*y(t)=0:&lt;br /&gt;&gt; inits:=y(0)=1,D(y)(0)=-1:&lt;br /&gt;&gt; dsolve({eqn,inits},y(t));&lt;br /&gt;\end{verbatim}&lt;br /&gt;$$&lt;br /&gt;\mathrm{y}(t)= - \frac{1}{2}\,\sin(2\,t) + \cos(2\,t)&lt;br /&gt;$$&lt;br /&gt;\begin{comment}&lt;br /&gt;Put a few paragraphs you have not decided about yet here for future&lt;br /&gt;work. They will not appear in the output. You can also put comments&lt;br /&gt;or reminders here. For example, you may want to remind yourself that&lt;br /&gt;Maple has a nice LaTeX export feature which may be more convenient&lt;br /&gt;than the by-hand approach used above.&lt;br /&gt;\end{comment}&lt;br /&gt;To demonstrate the \verb=\verbatiminput= command this file will&lt;br /&gt;input itself, which is pretty cool. To make sure&lt;br /&gt;this file can find itself to input, we use the \verb=\jobname=&lt;br /&gt;command in the argument to \verb=\verbatiminput=. Thus everything&lt;br /&gt;will work even if you rename this file.&lt;br /&gt;\end{document}&lt;/span&gt;&lt;/p&gt; &lt;p&gt;-------------------------------------------------------&lt;/p&gt; &lt;p&gt;&lt;span class="postTitle2"&gt;使verbatim环境在XeTeX下支持中文&lt;/span&gt;&lt;/p&gt; &lt;p&gt;研究了一下verbatim.sty,发现verbatim环境默认使用ttfamily的字体,因此只要重定义&lt;br /&gt;\verbatim@font宏使verbatim默认使用rmfamily或sffamily字体,通过\setromanfont或&lt;br /&gt;\setsansfont设置相应字体族为中文字体即可。&lt;/p&gt; &lt;p&gt;\documentclass[a4paper]{article}&lt;br /&gt;\usepackage{fontspec,xunicode,xltxtra,verbatim}&lt;br /&gt;\setsansfont[BoldFont={"[simhei.ttf]"}]{"[simsun.ttc]"}&lt;br /&gt;\setromanfon[BoldFont={"[simhei.ttf]"}]{"[simsun.ttc]"}&lt;br /&gt;%设置字体时也可以直接用字体名，以下三种方式等同：&lt;br /&gt;%\setromanfont[BoldFont={黑体}]{宋体}&lt;br /&gt;%\setromanfont[BoldFont={SimHei}]{SimSun}&lt;br /&gt;%\setromanfont[BoldFont={"[simhei.ttf]"}]{"[simsun.ttc]"}&lt;br /&gt;%但是不推荐使用第一种方式，对于中文名称的字体，使用该方式会导致不能将&lt;br /&gt;%roman、sans族字体设置为同一种字体，比如将romanfont和sanfont都设置为"宋体"&lt;br /&gt;%将导致编译错误。但是用另外两种方式却没问题，也许是fontspec包的bug吧。推&lt;br /&gt;%荐直接指定字体文件名的第三种方式。&lt;/p&gt; &lt;p&gt;\begin{document}&lt;br /&gt;Can you see some CJK characters in the verbatim?&lt;/p&gt; &lt;p&gt;\makeatletter&lt;br /&gt;\def\verbatim@font{\sffamily\small} %如果使用roman字体族，将sffamily改成rmfamily&lt;br /&gt;\makeatother&lt;/p&gt; &lt;p&gt;\begin{verbatim}&lt;br /&gt;some ascii characters！&lt;br /&gt;你能看到中文字符嘛！&lt;br /&gt;\end{verbatim}&lt;br /&gt;\end{document}&lt;/p&gt; &lt;p&gt;ps: 此文最初发表于水木清华TeX版&lt;/p&gt; &lt;p&gt;from: http://www.365bloglink.com/go.php?id=soGuWt3ui&lt;/p&gt; &lt;p&gt;--------------------------------------&lt;/p&gt; &lt;p&gt;用&lt;a href="http://latex.yo2.com/"&gt;LaTeX&lt;/a&gt;写论文时，插入C++源代码有专门的宏包，方法如下：&lt;/p&gt; &lt;p&gt;\usepackage{listings}&lt;/p&gt; &lt;p&gt;\lstset{language=C++}%这条命令可以让LaTeX排版时将C++键字突出显示&lt;/p&gt; &lt;p&gt;\lstset{breaklines}%这条命令可以让LaTeX自动将长的代码行换行排版&lt;/p&gt; &lt;p&gt;\lstset{extendedchars=false}%这一条命令可以解决代码跨页时，章节标题，页眉等汉字不显示的问题&lt;/p&gt; &lt;p&gt;\begin{lstlisting}&lt;/p&gt; &lt;p&gt;%paste your C++ code here&lt;/p&gt; &lt;p&gt;\end{lstlisting}&lt;/p&gt; &lt;p&gt;from: http://yichangren.blog.hexun.com/9057534_d.html&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-2062900405140836761?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/2062900405140836761/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=2062900405140836761' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2062900405140836761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2062900405140836761'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/08/latex_1442.html' title='latex显示源代码'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-4574688364114454549</id><published>2008-08-22T15:31:00.001+02:00</published><updated>2008-08-22T15:31:59.259+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>论文编译程式Latex 介绍</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:100%;"&gt;（本文为自由发布的文档，你可以对其进行任何的拷贝，传播，修改。但原始文档版权仍归原作者所有。如有直接引用的情况，请注明文档出处和作者姓名）&lt;br /&gt;&lt;br /&gt;（本篇介绍在写作过程中参照了多篇网络上的教程及帮助文档，在此对那些作者表示感谢，感谢他们为我们做了绝大部分前期的文档工作，由于太多，此处不一一列 举；另外也感谢王垠，是他带给我去坚定地使用Linux和Latex的意志――这意志帮助我克服了学习过程中的种种困难；最后感谢图灵奖得主Knuth教 授，感谢他做出伟大的TeX出来，供后人使用。）&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第一章：我为什么用Linux&lt;br /&gt;&lt;br /&gt;Latex是什么，说它是一个“排版软件”，可能大家都会莫名其妙，我要一排版软件来干什么？但是如果我说它是一个“写论文用的软件”，那你可能就会很有兴趣了。毕竟作为大学生，不可能不写论文的。&lt;br /&gt; 其实Latex不仅可以写论文，还可以处理日常生活中的各种文档工作。如写信，写书，画表格，甚至做幻灯片（对，我没打错，它就是可以做幻灯片，而且很容易就能做出世界一流水平的幻灯片）等等。&lt;br /&gt;&lt;br /&gt;本文纯粹是从使用者的角度来讲解Latex的使用方法的（当然，这样说的原因在于我本身尚未深入地研究TeX的底层体系），因此力求讲得通俗易懂。如果有什么不妥或不完善的地方请大家能时指出，欢迎热烈批评！&lt;br /&gt;&lt;br /&gt;我们为什么要用Latex？&lt;br /&gt;&lt;br /&gt;你一定会说日常生活中的各种文档工作不是用WORD就能进行处理了吗，何必那么麻烦再去学习一样新的东西呢？不是的。世界上还有很多更优秀的东西我们还没 有发现，如果能掌握这些更优秀的工具，那么工作效率会事半功倍。可以说当今中国的大学生们（包括中国的很多大学教授们）的计算机方面的思想已经被微软所固 化了。“言文字处理必谈WORD”，“言程序开发必学VB， VC”，“言操作系统必选WINDOWS”。我这儿并不是想排斥微软，打倒微软什么的，（诚心地说它毕竟还为推动中国的信息化的进步做出了很大贡献）我只 是想说明作为优秀大学的学生的我们，作为中国21世纪的主力军的我们，不能再被一种并不先进的思想所禁锢了！我们必须掌握最先进的最有前途的思想，知识和 能力。而TEX就是这种先进思想的典型代表。&lt;br /&gt; 它是计算机科学家图灵奖得主Knuth教授设计的一款权威的科技论文排版软件！更重要的它是开源 (Open Source)的，Knuth教授无偿公开了它的所有源代码。正因为这个原因，无数的爱好者们大胆尝试TeX。并在其基础上开发了一个宏集 ――Latex。Latex方便好用，被广泛传播，成了当今世界科技界最权威的论文排版软件。&lt;br /&gt;&lt;br /&gt;下面，我就来详细地比较一下Latex与WORD各自的优缺点。&lt;br /&gt; 1：“所想即所得” vs. “所见即所得”&lt;br /&gt; WORD所遵循的思想是“所见即所得”。因此，用它写东西非常直观。而且打印的效果与在屏幕上看到的效果一模一样。另外，它还具有一定的智能化（尽管这个功能很多时候会帮倒忙）。&lt;br /&gt; 而Latex所遵循的思想是“所想即所得”。意思就是你脑子里想到什么，就可以做出什么样的版式效果来。这说明它有非常强大的功能，但对这一种强大的掌握有一条相对来说陡峭一点的学习曲线。&lt;br /&gt; 用WORD写文章直接往里面写就行了，然后用那些数不清的格式按钮对文档进行格式编排。写这些文档必须在WORD软件环境里面（你无法拿记事本来写.doc的文档）。&lt;br /&gt; 而用Latex写文章可以使用任何一个文本编辑器。Latex有它自己专用的文件后缀名，但它的格式完全是文本文件格式。这意味着你可以使用vim，gedit,记事本等中的任何一款写Latex文档。只不过在保存文件时把后缀名改.txt为.tex就可以了。&lt;br /&gt;  用Latex写文章需要像写程序那样来写（请不要为我的语言所吓倒，那不是像C语言那样的程序代码，要简单得多），写完之后再编译。初看起来这不是自找麻 烦吗？仅仅写一篇文章就要编个程，是不是有病了。不是的，你仔细想想：一篇论文不仅包括文字，还有图片，表格，公式（对我们来说很重要），还有很多各种各 样的细微的格式和版式。把这些因素加在一起，就不是仅用WORD就能很好地处理的了。而对Latex来说，这些都是小菜一碟。&lt;br /&gt; Latex文档中，是通过插入一些标记符来标记其逻辑结构的（这方面它和HTML, XML有点类似）。这些标记符都是一些常用的英文单词，十分好记。只要花点时间用熟悉了，就可以很快地写出一篇格式漂亮的文章出来。&lt;br /&gt; 万事开头难嘛，最难的不是记忆那些命令，而是转变一种思维，就像使用LINUX一样。（Latex和LINUX搭配是天籁之合，我的讲解也是以LINUX上的Latex为主。建议大家读读王垠的《完全用LINUX工作，摈弃WINDOWS》）&lt;br /&gt;&lt;br /&gt; 2：如果你经常编排带数学公式的文章，你可能会发现，WORD编排出来的段落不是那么令人满意，如果左对齐，那么每行的右边参差不齐，很不美观；而如果 选用两边对齐，那么WORD为了达到这点要求，可能就加大了某些词与词之间的间距，那样也达不到我们满意的文章格式。能不能在行末自动地把一个单词在音节 处拆开， 并加上连字符呢？ Latex可以。&lt;br /&gt;    你一定对MathType不陌生。公式编辑器用多了，你可能就发现，WORD把公式当作图片来处理。如果你要修改文章字体的大小，这时需要一个一个地调整 公式的大小，这简直是无法承受的工作量；而且，你经常会发现，WORD的公式大小并不是和正文那么适配，许多时候看起来要么大了，要么小了，尤其是碰到大 行的公式，页面编排都可能因此受到影响了。而LatexX美观的公式混排，统一的公式正文大小，会令你有耳目一新，相见恨晚的感觉。&lt;br /&gt;&lt;br /&gt; 3：你是否有这样一种经验：当你用WORD写完一篇大一点的含有很多插图，表格和公式的论文交给导师审阅后，导师要求你在某个地方再详细一点，多列一些 数据，多插几幅图片；而在另外一些地方简略一点。这时你不得不插入新的图片（表格，公式），结果一插，把后面的原先排好的版式全打乱了。这样你又不得不重 新排一遍，排好后，检查时，又发现哪个地方公式不对，得重新写。于是用MathType写了一个“体积”大一点的公式，再插入文档中，结果又发现，后面的 版式又莫名其妙地被改动了。又得重新来一遍，气死人了。就这样反反复复，一个本来不复杂的工作耗费了你太多的时间，同时把心情也搞孬(我们念pie,四 声)了。真不爽！&lt;br /&gt; 还有在论文中每个图（表，公式）都有编号，当你插入一个新的图时，就打乱了先前的编号顺序，所以你还得一个一个地将先前的位于这幅图片后的那些图片（表 格，公式）的编号手工改正过来。天哪，这又是一件多么恐怖的事情――我这可是科技论文啊？密密麻麻的图片，公式。你叫我如何改啊！而且这还是一遍，说不定 要使一篇论文最终定稿要改N次呢！&lt;br /&gt; 现在你是否感觉到已经忍受不了呢？你需要一种解脱。不用怕，不用恼，救星到来啦！Latex，专门解决这个问题。&lt;br /&gt; Latex处理这个问题是基于如下一种机制：&lt;br /&gt;  它完全用一种逻辑结构标记符来标记哪里是文章题目、作者，哪部分是摘要，哪里是小节标题，哪里是图片，哪里是表格，哪里是公式，哪里是脚注，哪里是页眉， 哪里需要两栏排版，哪里则只用单栏等等等等。它对每种不同的对像都设计了一个计数器，用来记录这一类型的对象到现在是第几个。比如图片计数器，编译程序在 编译时会按从前到后的顺序寻找论文中所有图片，并且找到一个便给它编一个号（从1号开始依次递增），一直到文章末尾。&lt;br /&gt; 利用这种机制，即使在中途又插入了很多新的图片（表格，公式）的情况下，只要它们的逻辑顺序是对的（废话，逻辑顺序不对就是你写论文的水平不够了！）， 那么Latex就会重新从头到尾再编一次号，这样前述的那种令人头痛的问题就迎刃而解了。思想就是把无谓的重复劳动拿给机器处理，机器处理这些小东西来速 度是不用担心的。于是，你被解放出来了！什么是工作效率，这就是！&lt;br /&gt;&lt;br /&gt; 4：很重要的一个问题是：WORD不太稳定。当你编辑一份含大量公式的文档时，会发现WORD有时会crash，有时甚至会莫名其妙地消失。这时如果我们的工作还未保存下来的话，那就太不幸了，只有重新输入一遍。而且弄得自己人心惶惶的。&lt;br /&gt; Latex就不存在这个问题，它是一种纯文本格式，所占用的空间（硬盘，内存）极小。再加上极稳定的编辑器VIM，几乎不会出现crash的现象。&lt;br /&gt;&lt;br /&gt; 5：从美学观点来看，我实在不敢敬同WORD中的公式佷漂亮这一说法。你去图书馆随便找一本比较有名气一点的外文杂志或外文著作。它们那里面的公式多么 漂亮，整体布局多么赏心悦目。虽然我不敢说那些书全是用Latex编排的，但至少可以说明一点：WORD中的公式符号不好看。虽然我不敢说那些书全是用 Latex编排的，但我敢说那些书里面大部分都是用Latex及类似的（基于TeX的）软件包编排的。不信，你去比较一下那些书里面的符号和Latex教 材（外面书店有卖的）里面的符号形状是不是一样的。有点使用Latex经验的人一眼就可辨别其中奥秘。&lt;br /&gt; 这是什么意思？&lt;br /&gt; 对！它意味着，使用Latex，你能用很简单的方法排版出具有专业水准格式的论文和杂质甚至书籍出来！&lt;br /&gt;&lt;br /&gt; 6：比较现实的是，现在很多国内外杂志，要求寄去的文章按Latex格式排版(可能有些杂志可以接收WORD文档，那你可能又要在茫茫软件海洋中寻找英 文WORD，因为国外根本就没有中文WORD，而你的中文WORD文档在英文WORD中什么都看不出来)。那么会用Latex就更是你迫在眉睫的需要。&lt;br /&gt;&lt;br /&gt;    Latex就和vi一样，在你对他一点不懂的时候，你总觉得他很难相处，但是在你了解他之后，你会越来越发现他的好。然后会爱不释手，然后会五体投地，然后会――进步:-)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Latex讲解第二章：Latex发行版的版本和使用基本方法&lt;br /&gt;&lt;br /&gt;Latex软件的版本&lt;br /&gt; Linux和Windows平台都有各自的Latex版本。Linux下的版本主要是teTex，Windows下的版本主要有mikTex。而中国有 一个比较著名的版本CTeX，它是CTeX中文套装的简称，属于二次开发版本。它是把 mikTex和一些常用的相关工具，如GSview，winEdt，yap等包含在一起制作的一个简易安装程序。并且它对其中的中文支持进行了配置，使得 安装后马上就能处理中文。&lt;br /&gt; GSview是一个浏览.ps（一种打印格式）的工具。&lt;br /&gt; winEdt是一个专为TeX用户设计的编辑器。（但是用过它的人都会感觉到，这个编辑器打开速度太慢，功能难用，字体，界面也不好看。难怪经常被网上的人骂为垃圾）&lt;br /&gt; yap是用查看.dvi格式的一个工具，支持“反向位置查找”功能。（这个用起来还不错）&lt;br /&gt;&lt;br /&gt; 而Linux下的teTeX，我并没有直接使用。我用的是由CTAN组织制作的一款软件包TeXLive2004（以TE为核心），里面包含了几乎所有的宏包，文档及查看、转换工具。我们常用到的主要有如下几个：&lt;br /&gt; latex 用于编译.TeX文档（这个是核心）&lt;br /&gt; xdvi  用于查看.dvi文档（这个文档是由前面那个.TeX文档经编译后生成的）&lt;br /&gt; dvipdfm 用于将.dvi文件转换成.pdf文件。&lt;br /&gt;&lt;br /&gt; 转换成.pdf文件后，就可以方便地与别人交流了。（要知道，pdf格式可是当今世界上的几乎所有较正式的组织的电子档案的首选保存格式呀。比如，AD公司（www.analog.com）的所有芯片的技术资料全是以pdf格式提供）&lt;br /&gt;&lt;br /&gt; 而据我的使用经验，TeXLive2004安装程序并不太适合中国用户，因为它完全不含有任何一种中文字体（当然，每一款比较好的中文字体都是有版权的）,尽管网上有怎样添加的方法，但是要添加起字体来特别特别麻烦――我前段时间一直为此大伤脑筋呢！&lt;br /&gt;  于是我将其中的绝大部分东西抽取出来，与我搜集的十三种中文字体（转换后的。注：那些字体那是有版权的，请不要用于商业目的）合起来做成了一个软件包。同 时还对里面的一些配置文件作了修改，使Linux下的用户直接也能使用中文字体了。（我称其为Latex2004完全版，包里面有详细的安装说明文档）&lt;br /&gt;&lt;br /&gt; 到现在，可能大家会有这样一个疑问：现在软件有了，那该怎样使用呢？而且前面介绍那么多工具。那么用LATEX写论文到底是一种什么流程呢？下面就来回答这个问题。&lt;br /&gt; 下面就以一个实例来说明。&lt;br /&gt; 第1步：编写好一个.tex文档。并保存。假设文件名取为example.tex，存放在~/work/目录下。&lt;br /&gt; 第2步：打开一个终端。输入 cd work 进入到~/work/目录下。&lt;br /&gt; 第3步：在终端中输入 latex example.tex 对example.tex这个文档进行编译。通过编译，会生成一个新文件：example.dvi（当然原来那个example.tex文件还在那里，没有消失）。&lt;br /&gt; .dvi文件是“与设备无关的文件”，这里的设备指CPU、显示器，打印机等。这意味着这种格式的文件无论在哪台机器上，无论是怎样的显示器，无论在哪个操作系统上，看到的效果都完全是一样的。&lt;br /&gt; 当然，这样一种格式的文件得用专门的工具来查看。Linux下，这个工具就是xdvi。&lt;br /&gt;  第4步：在终端中输入 xdvi example.dvi 就可以查看刚才由.tex文档生成的.dvi 文件了。在这一步中，你可以检查你所输入的那些东西是不是都出应有的效果了（当然，这个应有的效果就是你头脑中的预计――所想即所得，就初步体现在这里 了），如果发现有错误的文字或不合适的版面，那么就可以再回到第1步去，修改后，再编译，再查看。直到自己满意为止。&lt;br /&gt; 第5步：在终端中输入 dvipdfm example.dvi 就会将example.dvi文件转换成为 example.pdf 文件。这时就可以用pdf浏览器查看了。&lt;br /&gt; 至此，一篇论文就基本完成了。归纳起来，就是如下步骤：&lt;br /&gt;      latex  dvipdfm&lt;br /&gt; .tex-------&gt;.dvi-------&gt;.pdf&lt;br /&gt;&lt;br /&gt; 下一章，我就将开始正式讲解怎样写latex文档。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Latex讲解第三章：Latex文档的基本结构及基本样式&lt;br /&gt;&lt;br /&gt;首先建议大家如果真的有心学，最好是去书店里买本书仔细看看，因为细节知识是非常多的。我这里只能讲解一些概要，不可能面面俱到。&lt;br /&gt;&lt;br /&gt; Latex文档的基本结构如下：&lt;br /&gt;&lt;br /&gt; 文档类型声明&lt;br /&gt; 宏包包含区&lt;br /&gt; 自定义命令区（全局设定区）&lt;br /&gt; 标题区        &lt;br /&gt; 正文区--------正文&lt;br /&gt;             |&lt;br /&gt;    -----参考文献&lt;br /&gt;&lt;br /&gt; 将上述结构翻译成代码即为如下：&lt;br /&gt;&lt;br /&gt; %文档类型声明&lt;br /&gt; \documentclass[a4paper,11pt,onecolumn]{article}&lt;br /&gt;&lt;br /&gt; %宏包包含区&lt;br /&gt; \usepackage{CJK}&lt;br /&gt;&lt;br /&gt; %自定义命令区（全局设定区）&lt;br /&gt; \renewcommand{\baselinestretch}{1.5} %定义行间距&lt;br /&gt;&lt;br /&gt; %标题区&lt;br /&gt; \title{  }&lt;br /&gt; \author{ }&lt;br /&gt;&lt;br /&gt; %正文区&lt;br /&gt; \begin{document}&lt;br /&gt; ....&lt;br /&gt; \end{document}&lt;br /&gt;&lt;br /&gt; 上述即为Latex文档的基本结构了。大家可能还不十分懂这些命令到底起什么作用，但是根据各个英文单词的含意，应该能够猜测到一些意思了吧。同时，这也展示了Latex一个特点：每个命令都使用完整的很容易懂的英文单词，而不是缩写，所以很明了，学习起来不难。&lt;br /&gt;&lt;br /&gt; 下面我给出一个英文文档的基本例子。&lt;br /&gt; \documentclass[a4paper,11pt]{article}&lt;br /&gt; \begin{document}&lt;br /&gt; Hello, world!&lt;br /&gt; \end{document}&lt;br /&gt;&lt;br /&gt; 就这样四行简短的代码，会得到图1的效果。&lt;br /&gt; \documentclass[a4paper,11pt]{article} 用来说明你这篇文章用多大的纸，默认多大的字号，并且文档类型是什么。\documentclass 是命令，是每一篇文章开头必须写的。a4paper 指定现在用A4的纸；11pt 指定默认字体的大小；article 用来说明这篇文档是篇论文（当然计算机是不会认得你要写论文的，只不过它预先定义了一些格式，以article 称呼的这种格式适用于论文，所以就叫它为论文格式了）。&lt;br /&gt; 字体大小那个选项一般不行去改动它，不写也行，系统默认为11pt。不写的话就为：\documentclass[a4paper]{article}。写论文一般用A4的纸，当然，与这个选项对应的其它选项还有b5paper 等，可根据实际需要来改变。&lt;br /&gt; 而article 这个位置一定不能空。与之对应的参数有 book(书), report(报告), letter(信件) 等。&lt;br /&gt;  然后是\begin{document}和\end{document}，这也是两个必须写的命令，它们是一对语句，不能只写一个而不写另一个，即必须匹 配。而且在一篇文档中只能写一次这对语句。从这对语句中又可反映出Latex的一个特点：很多语句是成对出现的，而且命令名都是\begin{}和\ end{}的形式。&lt;br /&gt; \begin{document}和\end{document}中间的那个 Hello, world! 就是文章的内容了。你在图1中看一下，是不是在左上角有个 Hello, world! :-)&lt;br /&gt;&lt;br /&gt; 好了，就这样一个文档就写好了。简单吧。&lt;br /&gt;&lt;br /&gt; 但──一个严重的问题是：这个文档只能处理英文。只要打一个汉字上去，在编译时就会出错！怎么办？&lt;br /&gt; 下面我就来详细讲一讲 Latex 是如何处理中文的。&lt;br /&gt;&lt;br /&gt; Knuth 在发明 TeX 的时候，根本没有考虑到还要处理中文字符（以及其它许多亚洲字符）──它发明 TeX 的目的就是为了排版它的巨著《计算机算法艺术》。尽管这样，Knuth 却采用了一种先进的设计思想，从底层留下了扩展接口，并将其全面公开。这样，当时他本人没有实现的一些功能，就可以通过宏包的形式加以扩展实现。这就是为 什么到现在为止 30多年过去了，TeX 在底层还几乎没有改动（只发现两处小错误）。说到这里，确实不得不佩服Knuth，什么叫牛人，这就是。计算机科学家写出的软件与一般程序员的软件就是不 同！&lt;br /&gt;&lt;br /&gt; Latex中处理中文，需要用一个叫做 CJK 的宏包（宏包就是预先定义了一些命令及格式的一个文档，学过 C 语言的同学都应该了解的）。&lt;br /&gt;    CJK是由Werner Lemberg开发的支持中、日、韩、英文字的宏包。CJK的特点是不需要象CCT那样预处理，支持PDFLatex和Type1字体，因此得到越来越多 中国TeXer的喜爱，逐渐成为中文LaTeX的主流。而我提供的那个包里面就已经含有了。（可以毫不夸张地说，几乎所有已经出现的宏包在那个软件包里面 都有自己的位置）&lt;br /&gt; 这个宏包通过一个字符映射表，来实现汉字的处理。讲下去就比较深了，这里暂且说到这么多。&lt;br /&gt;&lt;br /&gt; 下面我就给出一个处理中文的基本样例。&lt;br /&gt;&lt;br /&gt; \documentclass[a4paper]{article}&lt;br /&gt; \usepackage{CJK}&lt;br /&gt; \begin{document}&lt;br /&gt; \begin{CJK*}{GBK}{song}&lt;br /&gt; 你好，世界！&lt;br /&gt; \end{CJK*}&lt;br /&gt; \end{document}&lt;br /&gt;&lt;br /&gt; 生成的效果图如图2 。&lt;br /&gt; 下面细细讲解一下新增的语句的作用。&lt;br /&gt; \usepackage{CJK}表示把CJK这个宏包包含进来。\usepackage{ }就是包含宏包的命令。&lt;br /&gt; \ begin{CJK*}{GBK}{song}和\end{CJK*}是中文字符的定界语句。意思就是要想显示中文，就得用这两句把所有中文包含起来。当 然，英文字符在这里面是不受影响的。\begin{CJK*}{GBK}{song}中的最后一项，就是指宋体的意思。（我的安装包说明里面有十三种字体 对应的符号名字。在Latex中使用时就用那些符号名字。）当然，你可以把它改为 kai(楷书), hei(黑体), xihei(细黑), li(隶书) 等等。&lt;br /&gt;&lt;br /&gt; 比如我将song改为kai，那么将得到如图3的效果。&lt;br /&gt;&lt;br /&gt; 看，用Latex写中文文档也不复杂吧。这个文档还太小，还体现不出Latex的优势，以后用熟了，写大文档了，就能深刻地体会到了。&lt;br /&gt;&lt;br /&gt; 在这里，我要着重强调一下，Linux下的字符编码问题。&lt;br /&gt; 现在的Linux基本上都通用UTF-8编码作为其默认编码，这是事实，我们最好不要去改变它，否则很多程序的字体会出理乱码。但Latex无法支持 UTF-8编码（其实可以支持，但是好像要下一个宏包，在我提供的那个里面没有，我也没用过，不会用）。于是我们后退一步，绕过这个问题。在把文档写好 后，只要保存时选定编码就行了。&lt;br /&gt;&lt;br /&gt; 具体这样来实现：&lt;br /&gt; 对gvim来说，把文档写好后。在命令模式下，输入&lt;br /&gt; set fileencoding=GB18030&lt;br /&gt; 如果程序提示modifiable if off。那么，可以先输入&lt;br /&gt; set modifiable&lt;br /&gt; 再输入&lt;br /&gt; set fileencoding=GB18030&lt;br /&gt; 就可以保存为GB16030编码的文件了。这样在编译时，才不会出错。&lt;br /&gt;&lt;br /&gt; 对gedit来说，把文档写好后，只需要点击保存按钮。就会出现一个保存对话框。如图4 。在此对话框的下面的字符编码中选择GB18030就可以了（没在列表中的话，可以添加）。&lt;br /&gt;&lt;br /&gt; 由于保存时忘记理性编码而出现编译通不过的情况经常发生，而且还会感觉莫名奇妙。所以大家在发现编译通不过时，首先就查一下是不是编码问题。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Latex讲解第四章：Latex内容总体概观（最后一章）&lt;br /&gt;&lt;br /&gt; 我写这四篇讲解的目的是因为我怀着这样一种心理：我学习Latex的过程中遇到了太多的困难，花了太多的时间，费了太多的精力（买了一本教材但是是很老 的，与当前版本不适合）。我不希望每一个想学习Latex的人因为计算机和教程的原因（网络上也有很多教程，但是大多是英文的，中文的教程都不是很完整， 适用于初学者的不多，而且过滤这些信息要花大量时间）而半途而废或代价太高。因此我觉得自己有义务要把自己的亲身使用经验告诉大家。&lt;br /&gt; 由于本讲解只是入门性的介绍，目的是给大家介绍这么一款软件和思想，同时让大家了解基本的操作。故不打算再做更深入的讲解了。正所谓“师傅领进门，修行 靠个人”，要想真正的掌握它，就得由大家自己去找书看，去上网问了。同时，学习这个软件，必须要学会思考。不思考的人永远学不会。&lt;br /&gt;&lt;br /&gt; 这一章，我就来列举Latex里面主要包括哪些知识。&lt;br /&gt;&lt;br /&gt;字符集&lt;br /&gt;&lt;br /&gt; 文字字符集&lt;br /&gt; 数字字符集&lt;br /&gt;&lt;br /&gt;环境集&lt;br /&gt;&lt;br /&gt; 居中&lt;br /&gt; \begin{center}&lt;br /&gt; \end{center}&lt;br /&gt; 左对齐&lt;br /&gt; \begin{flushleft}&lt;br /&gt; \end{flushleft}&lt;br /&gt; 右对齐&lt;br /&gt; \begin{flushright}&lt;br /&gt; \end{flushright}&lt;br /&gt; 列举环境&lt;br /&gt; \begin{itemize}&lt;br /&gt; \end{itemize}&lt;br /&gt;&lt;br /&gt; \begin{enumerate}&lt;br /&gt; \end{enumerate}&lt;br /&gt; 保持环境&lt;br /&gt; \verb|  |&lt;br /&gt;&lt;br /&gt; \begin{verbatim}&lt;br /&gt; \end{verbatim}&lt;br /&gt; 小页环境&lt;br /&gt; \begin{minipage}{size}&lt;br /&gt; \end{minipage}&lt;br /&gt; 诗歌环境&lt;br /&gt; \begin{verse}&lt;br /&gt; \end{verse}&lt;br /&gt;&lt;br /&gt; 浮动表格环境&lt;br /&gt; \begin{table}&lt;br /&gt; \end{table}&lt;br /&gt;&lt;br /&gt; 固定表格环境&lt;br /&gt; \begin{tabular}&lt;br /&gt; \end{tabular}&lt;br /&gt;&lt;br /&gt; 浮动图片环境&lt;br /&gt; \begin{figure}&lt;br /&gt; \end{figure}&lt;br /&gt;&lt;br /&gt; 数学环境&lt;br /&gt; $ $&lt;br /&gt; $$ $$&lt;br /&gt;&lt;br /&gt; \begin{equation}&lt;br /&gt; \end{equation}&lt;br /&gt;&lt;br /&gt; \begin{array}&lt;br /&gt; \begin{array}&lt;br /&gt;&lt;br /&gt; \begin{eqnarray}&lt;br /&gt; \end{equarray}&lt;br /&gt;&lt;br /&gt;10种字号命令&lt;br /&gt; {\tiny  }&lt;br /&gt; {\scriptsize  }&lt;br /&gt; {\footnotesize  }&lt;br /&gt; {\small  }&lt;br /&gt; {\normalsize  }&lt;br /&gt; {\large  }&lt;br /&gt; {\Large  }&lt;br /&gt; {\LARGE  }&lt;br /&gt; {\huge  }&lt;br /&gt; {\Huge  }&lt;br /&gt;&lt;br /&gt;英文字体命令&lt;br /&gt; {\rm  } 罗马字体&lt;br /&gt; {\bf  } 黑体&lt;br /&gt; {\it  } 意大利字体&lt;br /&gt; {\sc  } 小号大写字体&lt;br /&gt; {\sl  } 斜体&lt;br /&gt; {\tt  } 打字机字体&lt;br /&gt; {\cal } 花体&lt;br /&gt; {\em  } 强调型字体&lt;br /&gt;&lt;br /&gt;几种数字的格式&lt;br /&gt; \arabic{}&lt;br /&gt; \roman{}&lt;br /&gt; \Roman{}&lt;br /&gt; \alph{}&lt;br /&gt; \Alph{}&lt;br /&gt;&lt;br /&gt;命令&lt;br /&gt;&lt;br /&gt;文献头命令&lt;br /&gt; 标题命令&lt;br /&gt; \title{ }&lt;br /&gt; 作者命令&lt;br /&gt; \author{ }&lt;br /&gt; 日期命令&lt;br /&gt; \date{ }&lt;br /&gt; 页注命令&lt;br /&gt; \thanks{}&lt;br /&gt; \footnote{}&lt;br /&gt;&lt;br /&gt;章节命令&lt;br /&gt; 部分命令&lt;br /&gt; \part{}&lt;br /&gt; 章命令&lt;br /&gt; \chapter{}&lt;br /&gt; 节命令&lt;br /&gt; \section{}&lt;br /&gt; \subsection{}&lt;br /&gt; \subsubsection{}&lt;br /&gt; \subsubsubsection{}&lt;br /&gt; 附录命令&lt;br /&gt; \appendix{}&lt;br /&gt;&lt;br /&gt;使用上面所说的命令，处理一般的文字文档应该没多大问题了。但是一篇文章中还有三个很重要的部分：公式，图片，表格现在我们还没法处理。&lt;br /&gt;&lt;br /&gt;下面就来讲一讲。&lt;br /&gt;&lt;br /&gt;数学格式命令&lt;br /&gt; 很多，这里就不写出来了。我提供的资料中有很多是讲这个的。我这里就举一个例子，让大家见识一下Latex中处理公式的思想。&lt;br /&gt;&lt;br /&gt; 薛定谔方程&lt;br /&gt; $$i \hbar \frac{\partial}{\partial t}\psi(r,t)&lt;br /&gt;   = [-\frac{\hbar^2}{2m}\nabla^2+V(r)]\psi(r,t)$$&lt;br /&gt; 此方程效果如图1，怎么样，感觉不错吧。&lt;br /&gt;  上面式子中用$$ $$括起来的部分，就是公式的Latex写法。大家肯定吓一跳吧。其实思路很简单，它就是定义了一套规则（如^表示上标，_表示下标，\frac{}{} 表示分数，第一个括号中的是分子，第二个括号中的是分母）和一些特殊字符表示方法，通过这个规则Latex能够实现将一个二维的公式写法化为一维的表达式 写法。这样就便于用文本文件的方式进行存储，并用Latex编译程序进行编译再现。而且这种写法有个好处是很容易扩展。这种思想就需要自己慢慢去体会了。&lt;br /&gt;&lt;br /&gt;插入图片&lt;br /&gt; 这个需要详细说明一下。&lt;br /&gt; Latex中只支持*.eps格式的图片。因此在插入时，如果不是.eps格式的文件，则首先要用GIMP或ImageMagick工具包转换 到.eps格式。然后把图片放到与.tex文件同一个目录下。（务必注意，我在初学时就是因为不知道把图片放在哪里而浪费了一个通宵）&lt;br /&gt; Latex文档中本身并不包含图片，它是在编译时加载图片。而且在加载时，还可以控制图片显示的长度和宽度。&lt;br /&gt; 要在Latex文档中加载图片，必须要包括graphicx宏包。&lt;br /&gt; 下面即是典型代码：&lt;br /&gt;&lt;br /&gt; \begin{figure}&lt;br /&gt; \begin{center}&lt;br /&gt; \includegraphics[width=10cm,height=6cm]{1.eps}%就在前面括号中写图片名&lt;br /&gt; \renewcommand{\figurename}{图}&lt;br /&gt; \caption{}&lt;br /&gt; \label{}&lt;br /&gt; \end{center}&lt;br /&gt; \end{figure}&lt;br /&gt;&lt;br /&gt; 这段代码功能是把名为1.eps的图片调进来，放在浮动图片环境中，并居中放置。&lt;br /&gt; \includegraphics[width=10cm,height=6cm]{1.eps}中的\includegraphics 即为调用图片的命令。[]中的参数用于指定加载图片后图片显示的宽度和高度。&lt;br /&gt; \renewcommand{\figurename}{图}用于将其默认的标号（为figure）改为“图”&lt;br /&gt; \caption{}给这幅图片取一个名字或作一段说明用于显示出来。&lt;br /&gt; \label{}中也写一个名字用来标明这幅图片，方便前面或后面的交叉引用。&lt;br /&gt;&lt;br /&gt;插入表格&lt;br /&gt;&lt;br /&gt; 插入表格没有图片步骤多，但也要注意一些细节问题。&lt;br /&gt;&lt;br /&gt; \begin{table}&lt;br /&gt; \centering&lt;br /&gt; \renewcommand{\tablename}{表}&lt;br /&gt; \caption{}&lt;br /&gt; \begin{tabular}{|l|l|l|}&lt;br /&gt; \hline&lt;br /&gt;  1 &amp;amp; 2 &amp;amp; 3\\&lt;br /&gt; \hline&lt;br /&gt;  8.2 &amp;amp; 7.8 &amp;amp; 12.7\\&lt;br /&gt;  75.7 &amp;amp; 152.8 &amp;amp; 249.9\\&lt;br /&gt; \hline&lt;br /&gt; \end{tabular}&lt;br /&gt; \end{table}&lt;br /&gt;&lt;br /&gt; 这段代码用来生成一个3行3列的浮动表格，并左右置中放置。&lt;br /&gt; \begin{tabular}{|l|l|l|}中的|l|l|l|表示有三列，列与列之间用竖线隔开（共四根竖线）。&lt;br /&gt; \hline表示画一根横线。&lt;br /&gt; 1 &amp;amp; 2 &amp;amp; 3\\中，&amp;amp;表示一个单元格与一个单元格的逻辑分隔符。而\\则表示换行。&lt;br /&gt;&lt;br /&gt;好了，公式，图片，表格大家都见识过了。都有一个初步的印象了。下面就该自己去使用了，多练一练才会熟悉。&lt;br /&gt;&lt;br /&gt; 好，Latex内容的讲解就到此为止。&lt;br /&gt;&lt;br /&gt; 学习Latex，除了买本书来看外，还要注意以下几点：&lt;br /&gt; 1：仔细看书，打好基础；&lt;br /&gt; 2：要多练习，要多做笔记，善于总结；&lt;br /&gt; 3：多思考，因为是“先想才有所得”，才会实现“所想即所得”；&lt;br /&gt; 4：有不懂的问题要向周围会的同学多问，如果无人可请教。可以到论坛上去问，那里有非常多的热心人。并且要经常从论坛上收集或摘抄下很好的代码供自己使用。（积累啊）&lt;br /&gt; 5：有时不懂的问题用Baidu或Google也可以搜索出来哟。&lt;br /&gt; 6：不要怕看英文文档，那里面有最原汁原味的知识；&lt;br /&gt; 7：非常重要的一点，要学会做模板，并且要以做一个完全适合自己的模板为一大任务。尽管网上有很多很好的模板，但是不一定适合你。做好模板以后，你才会 发觉， Latex真的是太好用了，这次论文用的这个模板，无需修改或只修改一小部分就可以供下次写论文时使用。这样既提高了速度，又提高了正确率，而且有一个明 显的累积进步过程──这会使你感觉到很爽很充实的。&lt;br /&gt;&lt;br /&gt; 好了，废话就这么多了。&lt;br /&gt;&lt;br /&gt; 下面将搜集的资料分类整理如下，我将把它们上传到学生之家或5Come5服务器上。&lt;br /&gt;&lt;br /&gt; 整理中……&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;近日去学无涯书店（寓苑公寓下面）逛了逛，发现几本有关Latex的书，现介绍如下：&lt;br /&gt;&lt;br /&gt;《排版软件LATEX简明手册》&lt;br /&gt;罗振东 葛向阳 编著 电子工业出版社 2004&lt;br /&gt;&lt;br /&gt;《TEX、AMS-TEX、LATEX使用简介》&lt;br /&gt;李勇编 高等教育出版社 2000&lt;br /&gt;&lt;br /&gt;《Latex2e 及常用宏包使用指南》&lt;br /&gt;李平 清华大学出版社 2004&lt;br /&gt;&lt;br /&gt;《Latex 入门与提高》&lt;br /&gt;陈志杰、赵书钦、万福永编 高等教育出版社 2002&lt;br /&gt;&lt;br /&gt;《Latex 实用教程》（英文影印版）&lt;br /&gt;机械工业出版社 2005&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;下面是一些网站，丰富的信息在那里找吧。&lt;br /&gt;&lt;br /&gt;CTEX 网站的网址为 http://www.ctex.org&lt;br /&gt;CTEX 论坛的网址为 http://bbs.ctex.org&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-4574688364114454549?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/4574688364114454549/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=4574688364114454549' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4574688364114454549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4574688364114454549'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/08/latex_22.html' title='论文编译程式Latex 介绍'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-7937380009353357050</id><published>2008-08-22T15:23:00.001+02:00</published><updated>2008-08-22T15:23:43.021+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>Latex(引用)</title><content type='html'>&lt;span id="ctl00_MainContentPlaceholder_ctl01_ctl00_lblEntry"&gt;&lt;p&gt;最近学会了使用Latex，并且今年的First Year Report就是用Latex写的，发现了很多也许有用的小技巧，总结一下。  &lt;/p&gt;&lt;h5&gt;工具：&lt;/h5&gt; &lt;p&gt;我现在使用的是CTex，一个号称支持中文的Latex，不过我现在还用不上中文。该软件免费可下载：&lt;a title="http://www.ctex.org/HomePage" href="http://www.ctex.org/HomePage"&gt;http://www.ctex.org/HomePage&lt;/a&gt;  里面的WinEdit确实是很好用的。编译的内核是MikTex 2.4，有一点老，不过基本功能都有了。  &lt;/p&gt;&lt;p&gt;在linux上，可以使用texmaker，用了用，还是不错的。  &lt;/p&gt;&lt;h5&gt;一些使用心得:&lt;/h5&gt; &lt;p&gt;插入图片。在Latex中，图片是以文件的方式嵌入到文档当中，在转换为pdf或者ps文件的时候才会嵌入到文件中，否则都是单独存在的。插入图片的基本命令：  &lt;/p&gt;&lt;p&gt;\begin{figure}&lt;br /&gt;\centering&lt;br /&gt;\includegraphics[width=0.6\textwidth]{file/vcrouter}&lt;br /&gt;\caption{Internal structure of a VC router}\label{fig:vcrouter}&lt;br /&gt;\end{figure}  &lt;/p&gt;&lt;p&gt;\begin{figure}和\end{figure}中间是图片的命令。\centering之后的所有内容居中。 \includegraphics插入图片，width=0.6\textwidth说明图片的宽度为0.6倍页宽，文件名是 file/vcrouter，用latex编译自动搜索后缀为eps的图像，pdflatex编译自动搜索后缀为pdf的文件。\caption说明该图 片的标题，\label给出一个标签，文中则可以使用\ref{}进行连接。插入图片需要加载\usepackage{graphicx}。 &lt;/p&gt;&lt;p&gt;插入多幅图片并包含子图的图片：  &lt;/p&gt;&lt;p&gt;\begin{figure}[ht]&lt;br /&gt;\centering \subfigure[A bundled-data channel]{&lt;br /&gt;    \includegraphics[width=0.30\textwidth]{file/bundleddata}\label{fig:bundleddata}}&lt;br /&gt;\hspace{0.1\textwidth} \subfigure[The 4-phase bundled-data&lt;br /&gt;protocol]{&lt;br /&gt;    \includegraphics[width=0.4\textwidth]{file/4phasebundled}\label{fig:4phasebundled}}&lt;br /&gt;\caption{The 4-phase bundled-data protocol}\label{fig:4pb}&lt;br /&gt;\end{figure}  &lt;/p&gt;&lt;p&gt;这是一个两个子图水平并列的例子。在\begin{figure}后添加[ht]说明以水平table的形式排布，当然也可以使用tabular，不过麻烦一些。使用\includegraphics需要加载\usepackage{subfigure}。  &lt;/p&gt;&lt;p&gt;公式编辑。其实可以使用公式编辑器。MathType 5.0以上，在perferences菜单里的translators选择translate to other languages，然后选择latex。之后，用公式编辑器编辑的公司可以直接用选择和复制放到latex文件当中。 &lt;/p&gt;&lt;p&gt;如果公式需要加编号，使用\begin{equation}和\end{equation}就能自动添加编号。不过最好加载 \usepackage{amsmath}。另外，默认公式是居中的，如果需要改成靠左缩进的方式，在\documentclass[fleqn] {firstyearreport}添加这个fleqn选择参数。 &lt;/p&gt;&lt;p&gt;参考文献最好使用bibtex管理。管理的软件可以使用Endnote，不过我用的是jabref，一个开源软件，还是很好用的。只要 写上\bibliography{file/reference}，这里的file/reference说明参考文献是file /reference.bib文件，所有的参考文献就可以自动加载。关于参考文献的风格，我使用的 是\bibliographystyle{alpha}，以作者的第一字母和年代为标号。但是还有很多其他的方式，可以参考这个网站：&lt;a title="http://www.cs.stir.ac.uk/~kjt/software/latex/showbst.html" href="http://www.cs.stir.ac.uk/%7Ekjt/software/latex/showbst.html"&gt;http://www.cs.stir.ac.uk/~kjt/software/latex/showbst.html&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;图片格式是一个很烦人的问题。最基本的图片格式是eps，尽管现在pdflatex支持pdf和jpeg,png等等，但是我还是认为eps比较好。eps是矢量图，没有图像失真。用eps转换成的pdf放大多少都没有问题，体积也很小。  &lt;/p&gt;&lt;p&gt;但是，支持eps的软件并不多。在windows上，我们最习惯的是Visio画图，但是visio对eps基本上没有支持。网上有很多将visio的图转化成eps的图的方法，但是很多都很麻烦。我现在终于找到了一种比较好的方式。  &lt;/p&gt;&lt;p&gt;首先安装一个postscript的虚拟打印机，&lt;a title="http://www.adobe.com/support/downloads/detail.jsp?ftpID=1502" href="http://www.adobe.com/support/downloads/detail.jsp?ftpID=1502"&gt;http://www.adobe.com/support/downloads/detail.jsp?ftpID=1502&lt;/a&gt;。然后用visio将图片用postscript打成prn或者ps文件。用CTex自带的GSview打开该文件（没有也没关系，下一个：&lt;a title="http://pages.cs.wisc.edu/~ghost/" href="http://pages.cs.wisc.edu/%7Eghost/"&gt;http://pages.cs.wisc.edu/~ghost/&lt;/a&gt;），file菜单中有一个ps to eps，哈哈，自动转换边界，就变成eps文件了，而且是矢量的。  &lt;/p&gt;&lt;p&gt;还有一个问题，pdflatex偏偏是不支持eps文件，默认是pdf文件。使用pdflatex时，如果没有pdf文件会报错。有人说使 用\usepackage{epstopdf}可以解决该问题，eps文件会自动在编译时变为pdf文件，但是在windows上的使用结果很糟 糕，eps文件没有自动转换边界，按A4打印，结果很难看。 &lt;/p&gt;&lt;p&gt;其实加载\usepackage{epstopdf}，就是使用epstopdf命令转换eps文件。但是在windows系统中的 epstopdf命令好像不能自动转换边界，但是linux系统上的epstopdf是好的。所以我建议使用linux系统上的epstopdf命令转 化，是会自动转化边界的。 &lt;/p&gt;&lt;p&gt;不过大批的文件一个一个去手动转化还是很麻烦，我就写了一个makefile文件，假设所有的eps文件都在一个文件夹下，那么make all一下，就能自动转化为pdf文件。知道我在说什么吧，呵呵。Makefile的内容如下：  &lt;/p&gt;&lt;p&gt;clean:&lt;br /&gt;        rm -f *.pdf  &lt;/p&gt;&lt;p&gt;eps_file = $(wildcard *.eps)  &lt;/p&gt;&lt;p&gt;pdf_file = $(eps_file:%.eps=%.pdf)  &lt;/p&gt;&lt;p&gt;$(pdf_file): %.pdf : %.eps&lt;br /&gt;        epstopdf $&lt;  &lt;/p&gt;&lt;p&gt;all: $(pdf_file)  &lt;/p&gt;&lt;p&gt;show:&lt;br /&gt;        echo $(pdf_file)  &lt;/p&gt;&lt;p&gt;伪代码。伪代码有时候还是要用的，对于复杂的算法，直接写伪代码有时候更容易懂。关于伪代码有一个包algorithms，需要加 载\usepackage{algorithm}和\usepackage{algorithmic}，具体用法可以直接看他的帮助，在下载的压缩包中的 doc目录下。下载路径：&lt;a title="http://www.ctan.org/tex-archive/help/Catalogue/entries/algorithms.html" href="http://www.ctan.org/tex-archive/help/Catalogue/entries/algorithms.html"&gt;http://www.ctan.org/tex-archive/help/Catalogue/entries/algorithms.html&lt;/a&gt; 忘了说了，所有Latex相关的文件找不到，或者需要最新版，请查询&lt;a href="http://www.ctan.org/"&gt;www.ctan.org&lt;/a&gt;.  &lt;/p&gt;&lt;p&gt;附录。需要插入附录的话，下面的命令会很有用  &lt;/p&gt;&lt;p&gt;\appendix&lt;br /&gt;\appendixpage&lt;br /&gt;\addappheadtotoc  &lt;/p&gt;&lt;p&gt;\appendix说明之后的内容为附录，\appendixpage将添加一个专门的附录页，\addappheadtotoc将附录添 加到目录当中，需要加载\usepackage{appendix}。不过，一旦附录开始，将不能转回正文。另一种方式可以使用 \begin{appendices}和\end{appendices}在正文中添加附录，参看&lt;a title="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=appendix" href="http://www.tex.ac.uk/cgi-bin/texfaq2html?label=appendix"&gt;http://www.tex.ac.uk/cgi-bin/texfaq2html?label=appendix&lt;/a&gt;  &lt;/p&gt;&lt;p&gt;关于文档中的引用链接和生成pdf的链接目录，只能使用pdflatex。方法是加载\usepackage{hyperref}，所有链接自动生成。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;关于所有的latex相关的命令，有一本手册（书）&lt;a title="http://tobi.oetiker.ch/lshort/lshort.pdf" href="http://tobi.oetiker.ch/lshort/lshort.pdf"&gt;http://tobi.oetiker.ch/lshort/lshort.pdf&lt;/a&gt; ，好像有中文的翻译版本 &lt;a title="http://net.ytu.edu.cn/share/%D7%CA%C1%CF/lshort-cn.pdf" href="http://net.ytu.edu.cn/share/%D7%CA%C1%CF/lshort-cn.pdf"&gt;http://net.ytu.edu.cn/share/%D7%CA%C1%CF/lshort-cn.pdf&lt;/a&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-7937380009353357050?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/7937380009353357050/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=7937380009353357050' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7937380009353357050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7937380009353357050'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/08/latex.html' title='Latex(引用)'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-3932902071703235619</id><published>2008-08-18T15:55:00.000+02:00</published><updated>2008-08-18T15:56:11.428+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>Intel Mobile Processor Compatibility Guide</title><content type='html'>Intel Mobile Processor Compatibility Guide&lt;br /&gt;&lt;br /&gt;Introduction&lt;br /&gt;&lt;br /&gt;A few months ago I tried to perform processor upgrades on a relative's Dell Inspiron 1150. The 1150 had a Socket 478 Mobile Celeron that ran hot and performed poorly. After doing some cursory research I thought I knew what I was doing and bought a Socket 479 Pentium M. Needless to say, it didn't fit. So I did a bit more research and found myself mired in the rather confusing world of mobile sockets. And it took me a while to figure things out. Recently, after reading a few threads concerning processor upgrades, I figured I'd make a guide. It'd be fun. It couldn't be that hard.&lt;br /&gt;&lt;br /&gt;So this is my first guide on NBR and while it's more of a chart and may or may not be terribly helpful, it should, at the very least make a reasonable reference for those of you interested in upgrading mobile Intel processors.&lt;br /&gt;&lt;br /&gt;About This Guide&lt;br /&gt;&lt;br /&gt;This guide does NOT list every Intel mobile processor. Processors older than the Pentium 4-M and associated Celerons have been omitted. Some chipsets supporting the Pentium 4-M, Mobile Pentium 4 and associated Celerons may also be missing.&lt;br /&gt;&lt;br /&gt;Sockets&lt;br /&gt;&lt;br /&gt;Current Intel mobile processors can fit one of four mobile sockets. These are Sockets 478 (N), 479, M and P. Laptops utilizing Sockets 478 and 479 are no longer being produced and laptops utilizing Socket 478 are becoming few and far apart. All four sockets have 478 pins in flip-chip pin grid array and are incompatible with each other.&lt;br /&gt;&lt;br /&gt;Processors&lt;br /&gt;&lt;br /&gt;This guide lists all Pentium 4-M, Mobile Pentium 4, Pentium M, Core Solo, Core Duo, Core 2 Duo, Mobile Celeron and Celeron M chips. Processors under a particular brand are listed according to core. Each processor entry is followed by its clock speed (in MHz), its L2 cache size (in KB) and its front side bus speed (in MHz). All processors listed under a particular socket are mechanically compatible with that socket.&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;This guide lists mobile 845, 852, 855, 910, 915, 940, 943, 945, 960 and 965 chipsets. As a rule of thumb, chipset names including a G usually ship with integrated graphics and chipset names including a P always ship with dedicated graphics. Processors listed under a particular brand are followed by compatible chipsets. Each chipset entry is followed by its front side bus speed (in MHz). Not all chipsets listed under a particular brand of processor will be compatible with each and every associated processor.&lt;br /&gt;&lt;br /&gt;Compatibility&lt;br /&gt;&lt;br /&gt;In order for a particular processor to be compatible with a particular laptop; (1) the processor must be physically compatible with the laptop socket, (2) the laptop chipset must support the processor, (3) the chipset front side bus speed must match the processor front side bus speed, (4) the laptop BIOS must support the process.&lt;br /&gt;&lt;br /&gt;This guide does not guarantee compatibility. Laptops are immensely complicated machines and sometimes will not be compatible with a particular processor even if the four aforementioned conditions are met. Sometimes, the opposite will be true. The most accurate way to use this guide may be to find out what WILL NOT work rather than what will work.&lt;br /&gt;&lt;br /&gt;Socket 478&lt;br /&gt;&lt;br /&gt;Socket 478 supports Pentium 4-M, Mobile Pentium 4, Mobile Pentium 4 HT and associated Celerons based on Northwood and Prescott cores. These chips were produced from 2002 to 2005.&lt;br /&gt;&lt;br /&gt;Pentium 4-M&lt;br /&gt;&lt;br /&gt;Northwood&lt;br /&gt;&lt;br /&gt;Pentium 4-M 1.4   1400 512 400&lt;br /&gt;Pentium 4-M 1.5   1500 512 400&lt;br /&gt;Pentium 4-M 1.6   1600 512 400&lt;br /&gt;Pentium 4-M 1.7   1700 512 400&lt;br /&gt;Pentium 4-M 1.8   1800 512 400&lt;br /&gt;Pentium 4-M 1.9   1900 512 400&lt;br /&gt;Pentium 4-M 2.0   2000 512 400&lt;br /&gt;Pentium 4-M 2.1   2100 512 400&lt;br /&gt;Pentium 4-M 2.2   2200 512 400&lt;br /&gt;Pentium 4-M 2.3   2300 512 400&lt;br /&gt;Pentium 4-M 2.4   2400 512 400&lt;br /&gt;Pentium 4-M 2.5   2500 512 400&lt;br /&gt;Pentium 4-M 2.6   2600 512 400&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;845MZ      400&lt;br /&gt;845MP      400&lt;br /&gt;&lt;br /&gt;Mobile Pentium 4&lt;br /&gt;&lt;br /&gt;Northwood&lt;br /&gt;&lt;br /&gt;Mobile Pentium 4 2.4  2400 512 533&lt;br /&gt;Mobile Pentium 4 2.66  2667 512 533&lt;br /&gt;Mobile Pentium 4 2.8  2800 512 533&lt;br /&gt;Mobile Pentium 4 3.06  3066 512 533&lt;br /&gt;Mobile Pentium 4 3.2  3200 512 533&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;852GME     400/533&lt;br /&gt;852PM      400/533&lt;br /&gt;&lt;br /&gt;Mobile Pentium 4 HT&lt;br /&gt;&lt;br /&gt;Northwood&lt;br /&gt;&lt;br /&gt;Mobile Pentium 4 HT 2.66 2667 512 533&lt;br /&gt;Mobile Pentium 4 HT 2.8  2800 512 533&lt;br /&gt;Mobile Pentium 4 HT 3.06 3066 512 533&lt;br /&gt;Mobile Pentium 4 HT 3.2  3200 512 533&lt;br /&gt;&lt;br /&gt;Prescott&lt;br /&gt;&lt;br /&gt;Mobile Pentium 4 HT 518  2800 1024 533&lt;br /&gt;Mobile Pentium 4 HT 532  3066 1024 533&lt;br /&gt;Mobile Pentium 4 HT 538  3200 1024 533&lt;br /&gt;Mobile Pentium 4 HT 548  3333 1024 533&lt;br /&gt;Mobile Pentium 4 HT 552  3466 1024 533&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;852GME     400/533&lt;br /&gt;852PM      400/533&lt;br /&gt;&lt;br /&gt;Mobile Celeron&lt;br /&gt;&lt;br /&gt;Northwood&lt;br /&gt;&lt;br /&gt;Mobile Celeron 1.4  1400 256 400&lt;br /&gt;Mobile Celeron 1.5  1500 256 400&lt;br /&gt;Mobile Celeron 1.6  1600 256 400&lt;br /&gt;Mobile Celeron 1.7  1700 256 400&lt;br /&gt;Mobile Celeron 1.8  1800 256 400&lt;br /&gt;Mobile Celeron 2.0  2000 256 400&lt;br /&gt;Mobile Celeron 2.2  2200 256 400&lt;br /&gt;Mobile Celeron 2.4  2400 256 400&lt;br /&gt;Mobile Celeron 2.5  2500 256 400&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;845MZ      400&lt;br /&gt;845MP      400&lt;br /&gt;&lt;br /&gt;852GME     400/533&lt;br /&gt;852GMV     400/533&lt;br /&gt;852GM      400/533&lt;br /&gt;852PM      400/533&lt;br /&gt;&lt;br /&gt;Socket 479&lt;br /&gt;&lt;br /&gt;Socket 479 supports Pentium M and associated Celerons based on Banias and Dothan cores. These chips were produced from 2003 to 2007.&lt;br /&gt;&lt;br /&gt;Pentium M&lt;br /&gt;&lt;br /&gt;Banias&lt;br /&gt;&lt;br /&gt;Pentium M 1.3   1300 1024 400&lt;br /&gt;Pentium M 1.4   1400 1024 400&lt;br /&gt;Pentium M 1.5   1500 1024 400&lt;br /&gt;Pentium M 1.6   1600 1024 400&lt;br /&gt;Pentium M 1.7   1700 1024 400&lt;br /&gt;&lt;br /&gt;Dothan&lt;br /&gt;&lt;br /&gt;Pentium M 710   1400 2048 400&lt;br /&gt;Pentium M 715   1500 2048 400&lt;br /&gt;Pentium M 725   1600 2048 400&lt;br /&gt;Pentium M 735   1700 2048 400&lt;br /&gt;Pentium M 745   1800 2048 400&lt;br /&gt;Pentium M 755   2000 2048 400&lt;br /&gt;Pentium M 765   2100 2048 400&lt;br /&gt;&lt;br /&gt;Pentium M 730   1600 2048 533&lt;br /&gt;Pentium M 740   1733 2048 533&lt;br /&gt;Pentium M 750   1866 2048 533&lt;br /&gt;Pentium M 760   2000 2048 533&lt;br /&gt;Pentium M 770   2133 2048 533&lt;br /&gt;Pentium M 780   2266 2048 533&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;855GME     400&lt;br /&gt;855GM      400&lt;br /&gt;855PM      400&lt;br /&gt;&lt;br /&gt;915GMS     400&lt;br /&gt;&lt;br /&gt;915GM      400/533&lt;br /&gt;915PM      400/533&lt;br /&gt;&lt;br /&gt;Celeron M&lt;br /&gt;&lt;br /&gt;Banias-512&lt;br /&gt;&lt;br /&gt;Celeron M 310   1200 512 400&lt;br /&gt;Celeron M 320   1300 512 400&lt;br /&gt;Celeron M 330   1400 512 400&lt;br /&gt;Celeron M 340   1500 512 400&lt;br /&gt;&lt;br /&gt;Dothan-512&lt;br /&gt;&lt;br /&gt;Celeron 205   1200 512 400&lt;br /&gt;&lt;br /&gt;Dothan-1024&lt;br /&gt;&lt;br /&gt;Celeron M 350   1300 1024 400&lt;br /&gt;Celeron M 360   1400 1024 400&lt;br /&gt;Celeron M 370   1500 1024 400&lt;br /&gt;Celeron M 380   1600 1024 400&lt;br /&gt;Celeron M 390   1700 1024 400&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;855GME     400&lt;br /&gt;855GM      400&lt;br /&gt;855PM      400&lt;br /&gt;&lt;br /&gt;910GML     400&lt;br /&gt;&lt;br /&gt;915GMS     400&lt;br /&gt;&lt;br /&gt;915GM      400/533&lt;br /&gt;915PM      400/533&lt;br /&gt;&lt;br /&gt;Socket M&lt;br /&gt;&lt;br /&gt;Socket M supports Core Solo, Core Duo, some Core 2 Duo, Pentium Dual-Core and associated Celerons based on Yonah and Merom cores. These chips were produced from 2006 to the present.&lt;br /&gt;&lt;br /&gt; Core Solo&lt;br /&gt;&lt;br /&gt;Yonah&lt;br /&gt;&lt;br /&gt;Core Solo T1350   1866 2048 533&lt;br /&gt;&lt;br /&gt;Core Solo T1200   1500 2048 667&lt;br /&gt;Core Solo T1300   1660 2048 667&lt;br /&gt;Core Solo T1400   1833 2048 667&lt;br /&gt;Core Solo T1500   2000 2048 667&lt;br /&gt;Core Solo T1600   2166 2048 667&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;940GML     533&lt;br /&gt;943GML     533&lt;br /&gt;&lt;br /&gt;945GMS     533/667&lt;br /&gt;945GM      533/667&lt;br /&gt;945PM      533/667&lt;br /&gt;&lt;br /&gt;Core Duo&lt;br /&gt;&lt;br /&gt;Yonah&lt;br /&gt;&lt;br /&gt;Core Duo T2050   1600 2048 533&lt;br /&gt;Core Duo T2250   1733 2048 533&lt;br /&gt;Core Duo T2350   1866 2048 533&lt;br /&gt;Core Duo T2450   2000 2048 533&lt;br /&gt;&lt;br /&gt;Core Duo T2300   1666 2048 667&lt;br /&gt;Core Duo T2400   1833 2048 667&lt;br /&gt;Core Duo T2500   2000 2048 667&lt;br /&gt;Core Duo T2600   2166 2048 667&lt;br /&gt;Core Duo T2700   2300 2048 667&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;943GML     533&lt;br /&gt;&lt;br /&gt;945GM      533/667&lt;br /&gt;945PM      533/667&lt;br /&gt;&lt;br /&gt;Core 2 Duo&lt;br /&gt;&lt;br /&gt;Merom-2M&lt;br /&gt;&lt;br /&gt;Core 2 Duo T5300  1733 2048 533&lt;br /&gt;&lt;br /&gt;Core 2 Duo T5500  1667 2048 667&lt;br /&gt;Core 2 Duo T5600  1833 2048 667&lt;br /&gt;&lt;br /&gt;Merom&lt;br /&gt;&lt;br /&gt;Core 2 Duo T5200  1600 2048 533&lt;br /&gt;&lt;br /&gt;Core 2 Duo T5500  1667 2048 667&lt;br /&gt;Core 2 Duo T5600  1833 2048 667&lt;br /&gt;Core 2 Duo T7200  2000 4096 667 &lt;br /&gt;Core 2 Duo T7400  2166 4096 667&lt;br /&gt;Core 2 Duo T7600  2333 4096 667&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;943GML     533&lt;br /&gt;&lt;br /&gt;945GM      533/667&lt;br /&gt;945PM      533/667&lt;br /&gt;&lt;br /&gt;Pentium Dual-Core&lt;br /&gt;&lt;br /&gt;Yonah&lt;br /&gt;&lt;br /&gt;Pentium Dual-Core T2060  1600 1024 533&lt;br /&gt;Pentium Dual-Core T2080  1733 1024 533&lt;br /&gt;Pentium Dual-Core T2130  1866 1024 533&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;943GML     533&lt;br /&gt;&lt;br /&gt;945GM      533/667&lt;br /&gt;945PM      533/667&lt;br /&gt;&lt;br /&gt;Celeron M&lt;br /&gt;&lt;br /&gt;Yonah-512&lt;br /&gt;&lt;br /&gt;Celeron 215   1333 512 533&lt;br /&gt;&lt;br /&gt;Yonah-1024&lt;br /&gt;&lt;br /&gt;Celeron M 410   1466 1024 533&lt;br /&gt;Celeron M 420   1600 1024 533&lt;br /&gt;Celeron M 430   1733 1024 533&lt;br /&gt;Celeron M 440   1866 1024 533&lt;br /&gt;Celeron M 450   2000 1024 533&lt;br /&gt;&lt;br /&gt;Merom-L&lt;br /&gt;&lt;br /&gt;Celeron M 520   1600 1024 533&lt;br /&gt;Celeron M 530   1733 1024 533&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;940GML     533&lt;br /&gt;943GML     533&lt;br /&gt;&lt;br /&gt;945GMS     533/667&lt;br /&gt;945GM      533/667&lt;br /&gt;945PM      533/667&lt;br /&gt;&lt;br /&gt;Socket P&lt;br /&gt;&lt;br /&gt;Socket P supports some Core 2 Duo, Pentium Dual-Core and associated Celerons based on Merom and Penryn cores. These chips were produced from 2007 to the present.&lt;br /&gt;&lt;br /&gt;Core 2 Duo&lt;br /&gt;&lt;br /&gt;Merom-2M&lt;br /&gt;&lt;br /&gt;Core 2 Duo T5250  1500 2048 667&lt;br /&gt;Core 2 Duo T5450  1667 2048 667&lt;br /&gt;Core 2 Duo T5550  1833 2048 667&lt;br /&gt;Core 2 Duo T5750  2000 2048 667&lt;br /&gt;Core 2 Duo T5850  2133 2048 667&lt;br /&gt;&lt;br /&gt;Core 2 Duo T5270  1400 2048 800&lt;br /&gt;Core 2 Duo T5470  1600 2048 800&lt;br /&gt;Core 2 Duo T7100  1800 2048 800&lt;br /&gt;Core 2 Duo T7250  2000 2048 800&lt;br /&gt;&lt;br /&gt;Merom&lt;br /&gt;&lt;br /&gt;Core 2 Duo T7300  2000 4096 800&lt;br /&gt;Core 2 Duo T7500  2200 4096 800&lt;br /&gt;Core 2 Duo T7700  2400 4096 800&lt;br /&gt;Core 2 Duo T7800  2600 4096 800&lt;br /&gt;&lt;br /&gt;Penryn-3M&lt;br /&gt;&lt;br /&gt;Core 2 Duo T8100  2100 3072 800&lt;br /&gt;Core 2 Duo T8300  2400 3072 800&lt;br /&gt;&lt;br /&gt;Penryn&lt;br /&gt;&lt;br /&gt;Core 2 Duo T9300  2500 6144 800&lt;br /&gt;Core 2 Duo T9500  2600 6144 800&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;GM965      533/800&lt;br /&gt;PM965      533/800&lt;br /&gt;&lt;br /&gt;Core 2 Extreme&lt;br /&gt;&lt;br /&gt;Merom XE&lt;br /&gt;&lt;br /&gt;Core 2 Extreme X7800  2600 4096 800&lt;br /&gt;Core 2 Extreme X7900  2800 4096 800&lt;br /&gt;&lt;br /&gt;Penryn XE&lt;br /&gt;&lt;br /&gt;Core 2 Extreme X9000  2800 6144 800&lt;br /&gt;&lt;br /&gt;Pentium Dual-Core&lt;br /&gt;&lt;br /&gt;Merom-2M&lt;br /&gt;&lt;br /&gt;Pentium Dual-Core T2310  1466 1024 533&lt;br /&gt;Pentium Dual-Core T2330  1600 1024 533&lt;br /&gt;Pentium Dual-Core T2370  1733 1024 533&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;GL960      533&lt;br /&gt;&lt;br /&gt;GM965      533/800&lt;br /&gt;PM965      533/800&lt;br /&gt;&lt;br /&gt;Celeron M&lt;br /&gt;&lt;br /&gt;Merom-L&lt;br /&gt;&lt;br /&gt;Celeron M 530   1733 1024 533&lt;br /&gt;Celeron M 540   1866 1024 533&lt;br /&gt;Celeron M 550   2000 1024 533&lt;br /&gt;Celeron M 560   2133 1024 533&lt;br /&gt;&lt;br /&gt;Chipsets&lt;br /&gt;&lt;br /&gt;GL960      533&lt;br /&gt;&lt;br /&gt;GM965      533/800&lt;br /&gt;PM965      533/800&lt;br /&gt;&lt;br /&gt;LV and ULV&lt;br /&gt;&lt;br /&gt;Low-voltage and ultra-low-voltage processors are usually soldered to the motherboard and therefore unassociated with a particular socket. You will unlikely be able to remove or replace a low-voltage or ultra-low-voltage processor.&lt;br /&gt;&lt;br /&gt;Pentium M&lt;br /&gt;&lt;br /&gt;Banias, LV&lt;br /&gt;&lt;br /&gt;Pentium M LV 1.1  1100 1024 400&lt;br /&gt;Pentium M LV 1.2  1200 1024 400&lt;br /&gt;Pentium M LV 718  1300 1024 400&lt;br /&gt;&lt;br /&gt;Banias, ULV&lt;br /&gt;&lt;br /&gt;Pentium M ULV 900  900 1024 400&lt;br /&gt;Pentium M ULV 1.0  1000 1024 400&lt;br /&gt;Pentium M ULV 713   1100 1024 400&lt;br /&gt;&lt;br /&gt;Dothan, LV&lt;br /&gt;&lt;br /&gt;Pentium M LV 738  1400 2048 400&lt;br /&gt;Pentium M LV 758  1500 2048 400&lt;br /&gt;Pentium M LV 778  1600 2048 400&lt;br /&gt;&lt;br /&gt;Dothan, ULV&lt;br /&gt;&lt;br /&gt;Pentium M ULV 723  1000 2048 400&lt;br /&gt;Pentium M ULV 733  1100 2048 400&lt;br /&gt;Pentium M ULV 753  1200 2048 400&lt;br /&gt;Pentium M ULV 773  1300 2048 400&lt;br /&gt;&lt;br /&gt;Core Solo&lt;br /&gt;&lt;br /&gt;Yonah, ULV&lt;br /&gt;&lt;br /&gt;Core Solo ULV U1300  1066 2048 533&lt;br /&gt;Core Solo ULV U1400  1200 2048 533&lt;br /&gt;Core Solo ULV U1500  1333 2048 533&lt;br /&gt;&lt;br /&gt;Core Duo&lt;br /&gt;&lt;br /&gt;Yonah, LV&lt;br /&gt;&lt;br /&gt;Core Duo LV L2300  1500 2048 667&lt;br /&gt;Core Duo LV L2400  1666 2048 667&lt;br /&gt;Core Duo LV L2500  1833 2048 667&lt;br /&gt;&lt;br /&gt;Yonah, ULV&lt;br /&gt;&lt;br /&gt;Core Duo ULV U2400  1066 2048 533&lt;br /&gt;Core Duo ULV U2500  1200 2048 533&lt;br /&gt;&lt;br /&gt;Core 2 Solo&lt;br /&gt;&lt;br /&gt;Merom-L, ULV&lt;br /&gt;&lt;br /&gt;Core 2 Solo ULV U2100  1066 1024 533&lt;br /&gt;Core 2 Solo ULV U2200  1200 1024 533&lt;br /&gt;&lt;br /&gt;Core 2 Duo&lt;br /&gt;&lt;br /&gt;Merom, LV&lt;br /&gt;&lt;br /&gt;Core 2 Duo LV L7200  1333 4096 667&lt;br /&gt;Core 2 Duo LV L7400  1500 4096 667&lt;br /&gt;&lt;br /&gt;Core 2 Duo LV L7300  1400 4096 800&lt;br /&gt;Core 2 Duo LV L7500  1600 4096 800&lt;br /&gt;Core 2 Duo LV L7700  1800 4096 800&lt;br /&gt;&lt;br /&gt;Merom-2M, ULV&lt;br /&gt;&lt;br /&gt;Core 2 Duo ULV U7500  1066 2048 533&lt;br /&gt;Core 2 Duo ULV U7600  1200 2048 533&lt;br /&gt;Core 2 Duo ULV U7700  1333 2048 533&lt;br /&gt;&lt;br /&gt;Celeron M&lt;br /&gt;&lt;br /&gt;Banias-512, ULV&lt;br /&gt;&lt;br /&gt;Celeron M ULV 800  800 512 400&lt;br /&gt;Celeron M ULV 900  900 512 400&lt;br /&gt;&lt;br /&gt;Dothan-1024, ULV&lt;br /&gt;&lt;br /&gt;Celeron M ULV 383  1000 1024 400&lt;br /&gt;&lt;br /&gt;Dothan-512, ULV&lt;br /&gt;&lt;br /&gt;Celeron M ULV 353  900 512 400&lt;br /&gt;Celeron M ULV 373  1000 512 400&lt;br /&gt;&lt;br /&gt;Yonah-1024, ULV&lt;br /&gt;&lt;br /&gt;Celeron M ULV 423  1066 1024 533&lt;br /&gt;Celeron M ULV 443  1200 1024 533&lt;br /&gt;&lt;br /&gt;Merom-L, ULV&lt;br /&gt;&lt;br /&gt;Celeron M ULV 523  933 1024 533&lt;br /&gt;&lt;br /&gt;Postscript&lt;br /&gt;&lt;br /&gt;All initial data was gathered from Wikipedia.org and Intel.com, with additional data and corrections provided by NBR members. All comments, questions or concerns are appreciated. Always looking to improve the guide (R10).&lt;br /&gt;&lt;br /&gt;Notes on the GL960&lt;br /&gt;&lt;br /&gt;08/04/05&lt;br /&gt;&lt;br /&gt;As of this update, the GL960 only has official support for Socket P Celerons. Manufacturers, however, have been shipping the GL960 with Socket P Pentium Dual-Cores. The GL960 will certainly work with the following processors:&lt;br /&gt;&lt;br /&gt;Celeron M 530   1733 1024 533&lt;br /&gt;Celeron M 540   1866 1024 533&lt;br /&gt;Celeron M 550   2000 1024 533&lt;br /&gt;Celeron M 560   2133 1024 533&lt;br /&gt;&lt;br /&gt;Pentium Dual-Core T2310  1466 1024 533&lt;br /&gt;Pentium Dual-Core T2330  1600 1024 533&lt;br /&gt;Pentium Dual-Core T2370  1733 1024 533&lt;br /&gt;&lt;br /&gt;As of this update, several board members have reported successful uprades to 667MHz FSB and 800MHz FSB Socket P Core 2 Duos and none have reported unsuccessful upgrades. The GL960 will probably work with the following processors:&lt;br /&gt;&lt;br /&gt;Core 2 Duo T5250  1500 2048 667&lt;br /&gt;Core 2 Duo T5450  1667 2048 667&lt;br /&gt;Core 2 Duo T5550  1833 2048 667&lt;br /&gt;Core 2 Duo T5750  2000 2048 667&lt;br /&gt;Core 2 Duo T5850  2133 2048 667&lt;br /&gt;&lt;br /&gt;Core 2 Duo T5270  1400 2048 800&lt;br /&gt;Core 2 Duo T5470  1600 2048 800&lt;br /&gt;Core 2 Duo T7100  1800 2048 800&lt;br /&gt;Core 2 Duo T7250  2000 2048 800&lt;br /&gt;&lt;br /&gt;Core 2 Duo T7300  2000 4096 800&lt;br /&gt;Core 2 Duo T7500  2200 4096 800&lt;br /&gt;Core 2 Duo T7700  2400 4096 800&lt;br /&gt;Core 2 Duo T7800  2600 4096 800&lt;br /&gt;&lt;br /&gt;If you are looking to upgrade a machine with a GL960 chipset, there is a good chance that you can use any of these thirteen processors, though once again, compatibility is not guaranteed.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-3932902071703235619?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/3932902071703235619/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=3932902071703235619' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/3932902071703235619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/3932902071703235619'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/08/intel-mobile-processor-compatibility.html' title='Intel Mobile Processor Compatibility Guide'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-7133971802809773707</id><published>2008-08-07T13:58:00.000+02:00</published><updated>2008-08-07T13:59:36.903+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>国外学术类网免费全文网站</title><content type='html'>&lt;span style="font-size:100%;"&gt;【转载&lt;b&gt;】国外学术类网免费全文网站&lt;/b&gt;&lt;br /&gt;1.&lt;a href="http://adswww.harvard.edu/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://adswww.harvard.edu/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;The NASA Astrophysics Data System&lt;br /&gt;   --  世界最大免费全文网站，超过300,000篇全文&lt;br /&gt;主要学科：天体物理学&lt;br /&gt;&lt;br /&gt;2.&lt;a href="http://intl.highwire.org/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://intl.highwire.org/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;HighWire Press&lt;br /&gt;   --  世界第二大免费全文网站，超过235，812篇全文&lt;br /&gt;主要学科：生物学、医学&lt;br /&gt;&lt;br /&gt;3.&lt;a href="http://arxiv.org/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://arxiv.org/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;arXiv.org&lt;br /&gt;主要学科：物理、数学、非线性科学、计算机科学等。文件格式以PostScript为主，如&lt;br /&gt;&lt;br /&gt;没有相应的阅读软件，可以选择生成PDF文件格式。&lt;br /&gt;&lt;br /&gt;4.&lt;a href="http://www.cogsci.soton.ac.uk/bbs/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://www.cogsci.soton.ac.uk/bbs/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Behavioral and Brain Sciences&lt;br /&gt;主要学科：行为科学、脑科学&lt;br /&gt;&lt;br /&gt;5.&lt;a href="http://www.cdc.gov/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://www.cdc.gov/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Centers for Disease Control and Prevention (CDC)&lt;br /&gt;主要学科：医学&lt;br /&gt;&lt;br /&gt;6.&lt;a href="http://cogprints.soton.ac.uk/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://cogprints.soton.ac.uk/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;CogPrints&lt;br /&gt;主要学科：心理学、神经科学、行为科学、语言学、人工智能、哲学&lt;br /&gt;&lt;br /&gt;7.&lt;a href="http://www.access.gpo.gov/su_docs/databases.html" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://www.access.gpo.gov/su_docs/databases.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;GPO Access&lt;br /&gt;美国政府文献&lt;br /&gt;&lt;br /&gt;8.&lt;a href="http://www.icpsr.umich.edu/index.html" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://www.icpsr.umich.edu/index.html&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Inter-university Consortium for Political and Social Research (ICPSR)&lt;br /&gt;世界最大的社会科学文献网站&lt;br /&gt;&lt;br /&gt;9.&lt;a href="http://www.nationalacademies.org/publications/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://www.nationalacademies.org/publications/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;National Academy Press&lt;br /&gt;美国国家科学院、国家工程院、医学协会等机构报告&lt;br /&gt;&lt;br /&gt;10.&lt;a href="http://www.cdc.gov/nchs/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://www.cdc.gov/nchs/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;National Center for Health Statistics (NCHS)&lt;br /&gt;美国国家卫生统计中心的统计报告&lt;br /&gt;美国国家卫生统计中心的统计报告&lt;br /&gt;&lt;br /&gt;11.&lt;a href="http://www.ncstrl.org/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://www.ncstrl.org/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;NCSTRL&lt;br /&gt;计算机科学研究报告和论文&lt;br /&gt;&lt;br /&gt;12.&lt;a href="http://promo.net/pg/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://promo.net/pg/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Project Gutenberg Electronic Public Library&lt;br /&gt;电子图书，2002前提供10000种全文电子图书&lt;br /&gt;&lt;br /&gt;13.&lt;a href="http://thomas.loc.gov/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://thomas.loc.gov/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Thomas Legislative Information on the Internet&lt;br /&gt;美国国会图书馆提供的美国国会报告和历史文献&lt;br /&gt;&lt;br /&gt;14.&lt;a href="http://unesdoc.unesco.org/ulis/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://unesdoc.unesco.org/ulis/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;UNESCO&lt;br /&gt;联合国教科文组织提供的文档&lt;br /&gt;&lt;br /&gt;15.&lt;a href="http://www.usgs.gov/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://www.usgs.gov/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;United States Geological Survey&lt;br /&gt;美国地质考察报告&lt;br /&gt;&lt;br /&gt;16.&lt;a href="http://www-wds.worldbank.org/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://www-wds.worldbank.org/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;World Development Sources (World Bank)&lt;br /&gt;世界银行报告&lt;br /&gt;&lt;br /&gt;17.&lt;a href="http://www.delphion.com/boolquery" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://www.delphion.com/boolquery&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;Delphion&lt;br /&gt;世界各国专利，可看到前十三页全文&lt;br /&gt;&lt;br /&gt;18.&lt;a href="http://ep.espacenet.com/" target="_blank"&gt;&lt;span style="color:#000000;"&gt;http://ep.espacenet.com/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;电子图书，2002前提供10000种全文电子图书&lt;br /&gt;欧洲专利局,也可查世界专利&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-7133971802809773707?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/7133971802809773707/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=7133971802809773707' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7133971802809773707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7133971802809773707'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/08/blog-post.html' title='国外学术类网免费全文网站'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-6453691707702539112</id><published>2008-07-29T12:38:00.000+02:00</published><updated>2008-07-29T12:39:14.452+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bachelorthesis'/><title type='text'>网络爬虫</title><content type='html'>随着网络技术的发展，互联网已经成为海量信息的载体，随着人们对这些信息进行有效提取以及应用的需求的增加，搜索引擎（Search Engine）应运而生，例如传统的通用搜索引擎AltaVista，Yahoo!和Google等，作为一个辅助人们检索信息的工具成为用户访问万维网 的入口和指南。但是，这些通用性搜索引擎也存在着一定的局限性，如：&lt;br /&gt;1、针对不同需求，不同背景的用户，搜索引擎还不够智能，返回的结果大多包含对用户无用的信息。 &lt;p align="justify"&gt;2、不能很好地发现和获取图片、数据库、音频/视频多媒体等不同数据。&lt;/p&gt; &lt;p align="justify"&gt;为了解决上述问题，便产生了定向抓取相关网页资源的聚焦爬虫，与通用爬虫（即大部分搜索引擎所使用的爬虫）相比， 聚焦爬虫并不追求大的覆盖，而将目标定为抓取与某一特定主题内容相关的网页，为面向主题的用户查询准备数据资源。聚焦爬虫是一个自动下载网页的程序，它根 据既定的抓取目标，有选择的访问万维网上的网页与相关的链接，获取所需要的信息。&lt;/p&gt; &lt;p align="justify"&gt;          1 网络爬虫的工作原理&lt;/p&gt; &lt;p align="justify"&gt;      传统爬虫从一个或若干初始网页的URL开始，获得初始网页上的URL，在抓取网页的过程中，不断从当前页面上抽取新的URL放入队列,直到满足系统的一定 停止条件。聚焦爬虫的工作流程较为复杂，需要根据一定的网页分析算法过滤与主题无关的链接，保留有用的链接并将其放入等待抓取的URL队列。然后，它将根 据一定的搜索策略从队列中选择下一步要抓取的网页URL，并重复上述过程，直到达到系统的某一条件时停止。另外，所有被爬虫抓取的网页将会被系统存贮，进 行一定的分析、过滤，并建立索引，以便之后的查询和检索；对于聚焦爬虫来说，这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。&lt;/p&gt; &lt;p align="justify"&gt;相对于通用网络爬虫，聚焦爬虫还需要解决三个主要问题： &lt;br /&gt;(1) 对抓取目标的描述或定义； &lt;br /&gt;(2) 对网页或数据的分析与过滤； &lt;br /&gt;(3) 对URL的搜索策略。 &lt;br /&gt;抓取目标的描述和定义是决定网页分析算法与URL搜索策略如何制订的基础。而网页分析算法和候选URL排序算法是决定搜索引擎所提供的服务形式和爬虫网页抓取行为的关键所在。这两个部分的算法又是紧密相关的。 &lt;br /&gt;         2 抓取目标描述 &lt;br /&gt;         现有聚焦爬虫对抓取目标的描述可分为基于目标网页特征、基于目标数据模式和基于领域概念3种。 &lt;br /&gt;基于目标网页特征的爬虫所抓取、存储并索引的对象一般为网站或网页。根据种子样本获取方式可分为： &lt;br /&gt;（1） 预先给定的初始抓取种子样本； &lt;br /&gt;（2） 预先给定的网页分类目录和与分类目录对应的种子样本，如Yahoo!分类结构等； &lt;br /&gt;（3） 通过用户行为确定的抓取目标样例，分为： &lt;br /&gt;             a) 用户浏览过程中显示标注的抓取样本； &lt;br /&gt;             b) 通过用户日志挖掘得到访问模式及相关样本。 &lt;br /&gt;其中，网页特征可以是网页的内容特征，也可以是网页的链接结构特征，等等。 &lt;br /&gt;现有的聚焦爬虫对抓取目标的描述或定义可以分为基于目标网页特征，基于目标数据模式和基于领域概念三种。 &lt;br /&gt;基于目标网页特征的爬虫所抓取、存储并索引的对象一般为网站或网页。具体的方法根据种子样本的获取方式可以分为：&lt;/p&gt; &lt;p align="justify"&gt;（1）预先给定的初始抓取种子样本；&lt;/p&gt; &lt;p align="justify"&gt;（2）预先给定的网页分类目录和与分类目录对应的种子样本，如Yahoo!分类结构等；&lt;/p&gt; &lt;p align="justify"&gt;（3）通过用户行为确定的抓取目标样例。其中，网页特征可以是网页的内容特征，也可以是网页的链接结构特征，等等。&lt;/p&gt; &lt;p align="justify"&gt;         3 网页搜索策略 &lt;br /&gt;网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。深度优先在很多情况下会导致爬虫的陷入(trapped)问题，目前常见的是广度优先和最佳优先方法。 &lt;br /&gt;         3.1 广度优先搜索策略 &lt;br /&gt;广度优先搜索策略是指在抓取过程中，在完成当前层次的搜索后，才进行下一层次的搜索。该算法的设计和实现相对简单。在目前为覆盖尽可能多的网页，一般使用 广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。另 外一种方法是将广度优先搜索与网页过滤技术结合使用，先用广度优先策略抓取网页，再将其中无关的网页过滤掉。这些方法的缺点在于，随着抓取网页的增多，大 量的无关网页将被下载并过滤，算法的效率将变低。&lt;br /&gt;         3.2 最佳优先搜索策略 &lt;br /&gt;最佳优先搜索策略按照一定的网页分析算法，预测候选URL与目标网页的相似度，或与主题的相关性，并选取评价最好的一个或几个URL进行抓取。它只访问经 过网页分析算法预测为“有用”的网页。存在的一个问题是，在爬虫抓取路径上的很多相关网页可能被忽略，因为最佳优先策略是一种局部最优搜索算法。因此需要 将最佳优先结合具体的应用进行改进，以跳出局部最优点。将在第4节中结合网页分析算法作具体的讨论。研究表明，这样的闭环调整可以将无关网页数量降低 30%~90%。&lt;br /&gt;=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=&lt;/p&gt; &lt;p align="justify"&gt;         世界上第一个网络爬虫是由麻省理工学院 (MIT)的学生马休.格雷（Matthew Gray)在 1993 年写成的。他给他的程序起了个名字叫“互联网漫游者”("www wanderer")。以后的网络爬虫越写越复杂，但原理是一样的。&lt;br /&gt;      我们来看看网络爬虫如何下载整个互联网。假定我们从一家门户网站的首页出发，先下载这个网页，然后通过分析这个网页，可以找到藏在它里面的所有超链接，也 就等于知道了这家门户网站首页所直接连接的全部网页，诸如雅虎邮件、雅虎财经、雅虎新闻等等。我们接下来访问、下载并分析这家门户网站的邮件等网页，又能 找到其他相连的网页。我们让计算机不停地做下去，就能下载整个的互联网。当然，我们也要记载哪个网页下载过了，以免重复。在网络爬虫中，我们使用一个称为 “哈希表”(Hash Table)的列表而不是一个记事本纪录网页是否下载过的信息。&lt;br /&gt;        现在的互联网非常巨大，不可能通过一台或几台计算机服务器就能完成下载任务。比如雅虎公司（Google 没有公开公布我们的数目，所以我这里举了雅虎的索引大小为例）宣称他们索引了 200 亿个网页，假如下载一个网页需要一秒钟，下载这 200 亿个网页则需要 634 年。因此，一个商业的网络爬虫需要有成千上万个服务器，并且由快速网络连接起来。如何建立这样复杂的网络系统，如何协调这些服务器的任务，就是网络设计和 程序设计的艺术了。&lt;/p&gt; &lt;p align="justify"&gt;在Java中，网络爬虫大体需要一下几个方面的知识：&lt;/p&gt; &lt;p align="justify"&gt;1 多线程的自动HTTP下载。&lt;/p&gt; &lt;p align="justify"&gt;2 HTML文件的格式解析。&lt;/p&gt; &lt;p align="justify"&gt;3 把解析后的文件存入数据库。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-6453691707702539112?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/6453691707702539112/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=6453691707702539112' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6453691707702539112'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6453691707702539112'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/07/blog-post.html' title='网络爬虫'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-3437627537491881914</id><published>2008-07-23T16:51:00.000+02:00</published><updated>2008-07-23T16:52:23.838+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>SVN tag和branch的选择及应用</title><content type='html'>&lt;div class="postTitle"&gt;   &lt;span style="font-size:100%;"&gt;&lt;a id="AjaxHolder_ctl01_TitleUrl" href="http://www.cnblogs.com/mywebname/archive/2007/12/05/983293.html"&gt;SVN tag和branch的选择及应用&lt;/a&gt;&lt;/span&gt;  &lt;/div&gt;    &lt;div class="postText"&gt;   &lt;div class="subtable altbg2 t_msg" style="width: auto; height: auto;"&gt;&lt;span style="font-size:100%;"&gt;在SVN中Branch/tag在一个功能选项中，在使用中也往往产生混淆。&lt;br /&gt;&lt;br /&gt;在实现上，branch和tag，对于svn都是使用copy实现的，所以他们在默认的权限上和一般的目录没有区别。至于何时用tag，何时用branch，完全由人主观的根据规范和需要来选择，而不是强制的（比如cvs）。&lt;br /&gt;&lt;br /&gt;一般情况下，&lt;br /&gt;tag，是用来做一个milestone的，不管是不是release，都是一个可用的版本。这里，应该是只读的。更多的是一个显示用的，给人一个可读（readable）的标记。&lt;br /&gt;branch，是用来做并行开发的，这里的并行是指和trunk进行比较。&lt;br /&gt;&lt;br /&gt;比如，3.0开发完成，这个时候要做一个tag，tag_release_3_0，然后基于这个tag做release，比如安装程序等。trunk进入 3.1的开发，但是3.0发现了bug，那么就需要基于tag_release_3_0做一个branch，branch_bugfix_3_0，基于这 个branch进行bugfix，等到bugfix结束，做一个tag，tag_release_3_0_1，然后，根据需要决定 branch_bugfix_3_0是否并入trunk。&lt;br /&gt;&lt;br /&gt;对于svn还要注意的一点，就是它是全局版本号，其实这个就是一个tag的标记，所以我们经常可以看到，什么什么release，基于xxx项目的 2xxxx版本。就是这个意思了。但是，它还明确的给出一个tag的概念，就是因为这个更加的可读，毕竟记住tag_release_1_0要比记住一个 很大的版本号容易的多。&lt;/span&gt;    &lt;/div&gt;   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-3437627537491881914?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/3437627537491881914/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=3437627537491881914' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/3437627537491881914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/3437627537491881914'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/07/svn-tagbranch.html' title='SVN tag和branch的选择及应用'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-6628683926695642022</id><published>2008-07-23T01:31:00.001+02:00</published><updated>2008-07-23T01:32:51.285+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>Java学习网站</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;div class="postbody"&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;1、java研究组织 （&lt;a href="http://www.javaresearch.org/index.jsp"&gt;http://www.javaresearch.org/index.jsp&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;）。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt; 该网站有许多文章，涉及java的各个领域和方向。另为还有许多软件和书籍的下载，&lt;br /&gt;使一个java学习的不错的网站，有空去逛逛，会学到许多的东西。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;2、灰狐动力（&lt;a href="http://www.huihoo.com/"&gt;http://www.huihoo.com/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;）&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt; 该站点有许多的开源的项目的介绍和学习，涉及操作系统，数据库等许多方向；有如多的英文的文档，可以提高英文文档的阅读能力。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;3、java爱好者（&lt;a href="http://www.javafan.net/"&gt;http://www.javafan.net&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt; 该网站是一个不错的网站，有许多的java学习资源，不足自出是文章少。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;4、爪哇流氓（&lt;a href="http://www.kissjava.com/"&gt;http://www.kissjava.com&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt; 在这里你可以找到如多java开发工具的破解文件。对于学习开发工具是比较好的&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;5、sun中国技术社区（&lt;a href="http://gceclub.sun.com.cn/index.html"&gt;http://gceclub.sun.com.cn/index.html&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;）&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;这里有有关sun公司在java发展，操作系统等许多的信息和软件的更新；时不时的浏览一下，可以了解一下 java的最新信息&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;6、IBM developerworks java社区（&lt;a href="http://www-128.ibm.com/developerworks/cn/java/index.html"&gt;http://www-128.ibm.com/developerworks/cn/java/index.html&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;）&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;在这里有许多最权威的专家发表的java学习的各方面文章，对提高java学习时非常有好处的。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;7、java中文文章学习（&lt;a href="http://www.gbg.cn/"&gt;http://www.gbg.cn/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;）&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;  这里可以阅读到许多的中文文章，对于英文不好的同仁，是不错的选择。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;8、中国it认证试验室（&lt;a href="http://www.chinaitlab.com/index.htm"&gt;http://www.chinaitlab.com/index.htm&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;）&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;   在这里可以学到许多的东西，除了java之外的许多的东西，当然java的东西也不少。&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;9、J道（&lt;a href="http://www.jdon.com/idea.html"&gt;http://www.jdon.com/idea.html&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;）&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;    这里可以学到关于j2ee的应用技术，对j2ee有兴趣的朋友，不妨来逛一下&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;10、javalobby(&lt;a href="http://www.javalobby.org/"&gt;http://www.javalobby.org/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;)&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;    这是一个英文网站，闲来没事，上去看看，不但了解java相关信息，还可以提高英文水平，何乐而不为。&lt;br /&gt;&lt;br /&gt;11、java导航&lt;/span&gt;&lt;span style="font-size:100%;"&gt;(&lt;a href="http://www.wsjava.com/"&gt;http://www.wsjava.com/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;)&lt;br /&gt;      这是一个非常全面的JAVA导航网站。&lt;br /&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-size:100%;"&gt;12、&lt;a href="http://www.theserverside.com/home/" target="_blank"&gt;http://www.theserverside.com/home/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt; (英文)&lt;br /&gt;    TheServerSide是一个著名的专门面向Java Server端应用的网站。&lt;br /&gt;&lt;br /&gt;13、&lt;a href="http://www.javaresearch.org/" target="_blank"&gt;http://www.javaresearch.org/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;     Java研究组织，有很多优秀的Java方面的文章和教程，特别是在JDO方面的文章比较丰富。&lt;br /&gt;&lt;br /&gt;14、&lt;a href="http://www.cnjsp.org/" target="_blank"&gt;http://www.cnjsp.org/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;     JSP技术网站，有相当多的Java方面的文章和资源。&lt;br /&gt;&lt;br /&gt;15、&lt;a href="http://www.jdon.com/" target="_blank"&gt;http://www.jdon.com/&lt;/a&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;     Jdon论坛，是一个个人性质的中文J2EE专业技术论坛，在众多的Java的中文论坛中，&lt;br /&gt;     Jdon一个是技术含量非常高，帖子质量非常好的论坛。&lt;br /&gt;&lt;br /&gt;16、&lt;a href="http://sourceforge.net/" target="_blank"&gt;http://sourceforge.net/&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;      SourgeForge是一个开放源代码软件的大本营，其中也有非常非常丰富的Java的开放源代码&lt;br /&gt;     的著名的软件。&lt;br /&gt;&lt;br /&gt;17、&lt;a href="http://dev2dev.bea.com.cn/index.jsp" target="_blank"&gt;&lt;span style=";font-family:Verdana;" &gt;http://dev2dev.bea.com.cn/index.jsp&lt;/span&gt;&lt;/a&gt;&lt;span style=";font-family:Verdana;" &gt;&lt;br /&gt;      BEA的开发者园地，BEA作为最重要的App Server厂商，有很多独到的技术，&lt;br /&gt;      在Weblogic上做开发的朋友不容错过。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(153, 51, 102);"&gt;&lt;strong face="微软雅黑" size="18pt" style=""&gt;                                不断加精中&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;  好了，以上是本人收集的关于java学习的不错的网站，在这写出来和大家分享希望对大家有用处。&lt;/span&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-6628683926695642022?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/6628683926695642022/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=6628683926695642022' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6628683926695642022'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6628683926695642022'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/07/java.html' title='Java学习网站'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-1873748988393881834</id><published>2008-07-22T21:10:00.000+02:00</published><updated>2008-07-22T21:11:01.985+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='数据库'/><title type='text'>Mysql在XP下设置及常见错误</title><content type='html'>将Mysql添加到Windows系统服务中：&lt;br /&gt;1.、 安装服务。&lt;br /&gt;在Windows2000下，安装完成后，并没有把MySQL安装成服务，我们必须执行下面的语句把MySQL注册为服务：installdir\mysql\bin\mysqld-nt –-install。&lt;br /&gt;Windows98下没有服务的概念，所以不用安装服务。&lt;br /&gt;2.、 启动服务&lt;br /&gt;在Windows2000下，安装服务后可以启动MySQL服务：net start mysql。&lt;br /&gt;在Windows98下，可以用下面的命令启动服务：c:\mysql\bin\mysqld，服务启动后在后台运行，并没有界面。&lt;br /&gt;3.、 停止服务&lt;br /&gt;在Windows2000下，可以通过下面的命令停止MySQL服务：net stop mysql。&lt;br /&gt;在Windows98下，可以通过下面命令停止服务：C:\&gt; C:\mysql\bin\mysqladmin -u root shutdown&lt;br /&gt;4、 卸载服务&lt;br /&gt;可以通过下面的命令卸载MySQL服务：installdir\mysql\bin\mysqld-nt –-remove。&lt;br /&gt;经过上面的安装就可以使用了，可以把我们系统空的数据库内建到mySQL数据目录即可，缺省数据库目录在installdir\mysql\data。&lt;br /&gt;访问MySQL数据库可以通过dbExpress&lt;a href="http://www.baidu.com/s?tn=goaler&amp;amp;ie=utf-8&amp;amp;wd=%E7%BB%84%E4%BB%B6" target="_blank" class="link_1"&gt;组件&lt;/a&gt;，dbExpress&lt;a href="http://www.baidu.com/s?tn=goaler&amp;amp;ie=utf-8&amp;amp;wd=%E7%BB%84%E4%BB%B6" target="_blank" class="link_1"&gt;组件&lt;/a&gt;是一组高效的数据库访问&lt;a href="http://www.baidu.com/s?tn=goaler&amp;amp;ie=utf-8&amp;amp;wd=%E7%BB%84%E4%BB%B6" target="_blank" class="link_1"&gt;组件&lt;/a&gt;，只要改变连接串，我们就可以直接把数据源连接到MSSQLServer等数据库。&lt;br /&gt;&lt;br /&gt;安装与卸载windows系统服务有专门软件，如果需要，mail to me:wangyihust@163.com&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;删除了原来的mysql4.1系统服务后，下载了一个5.0的non-install版本，将其添加到windows系统服务后，为什么无法启动？-1056错误&lt;br /&gt;&lt;br /&gt;1.报错：Can't find messagefile 'F:\Program Files\mysql\share\english\errmsg.sys'&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;原因：原来的4.1版本安装在F:\Program Files\mysql目录；而现在的5.0版本在F:\database目录&lt;br /&gt;&lt;br /&gt;解决方法：在c:\winnt\目录下找到my.ini文件，修改或删除之&lt;br /&gt;&lt;br /&gt;2.报错：ready for connections.&lt;br /&gt;Version: '5.0.21-community-nt' socket: '' port: 3306 MySQL Community Edition (GPL)&lt;br /&gt;&lt;br /&gt;原因：socket为空，没有配置mysql；或者端口已经占用&lt;br /&gt;&lt;br /&gt;解决方法: \mysql\bin目录下运行MySQLInstanceConfig.exe配置mysql实例&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如何更改Win2000服务MySQL属性中的可执行文件路径！&lt;br /&gt;&lt;br /&gt;开始时在D盘装了MySQL，后来卸载后，格式化D盘，再次安装，路径与原路径不同，不能通过“net start mysql”启动。查看win2000服务中MYsql的属性，可执行文件路径在位于D盘。现在怎么样更改，或者从服务项去掉Mysql？&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.baidu.com/s?tn=goaler&amp;amp;ie=utf-8&amp;amp;wd=%E6%B3%A8%E5%86%8C%E8%A1%A8" target="_blank" class="link_1"&gt;注册表&lt;/a&gt;里HKEY_LOCAL_MECHINE---SYSTEM ---CurrentControlSet里&lt;br /&gt;&lt;br /&gt;启动MYSQL服务时出错的几种解决方法&lt;br /&gt;&lt;br /&gt;1&lt;br /&gt;安装ＭＹＳＱＬ后更改了ＲＯＯＴ的密码后用net startmysql启动时我就遇到了这样的问题．使用以下命令后c:\mysql\bin\mysqladmin-u root -p shutdown再net start mysql就没有这个错误提示了!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*************&lt;br /&gt;2&lt;br /&gt;MySQL的1067错误&lt;br /&gt;Q：我的Mysql碰到了 1067 错误&lt;br /&gt;&lt;br /&gt;错误信息为：&lt;br /&gt;A system error has occurred.&lt;br /&gt;System error 1067 has occurred.&lt;br /&gt;The process terminated unexpectedly.&lt;br /&gt;&lt;br /&gt;A：在我的机上的解决办法是：&lt;br /&gt;修改%windir%\my.ini，增加&lt;br /&gt;[mysqld]&lt;br /&gt;#设置basedir指向mysql的安装路径&lt;br /&gt;basedir=D:\Program\Tools\mysql&lt;br /&gt;datadir=D:\Program\Tools\mysql\data&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*************&lt;br /&gt;3&lt;br /&gt;已经弄好了!!!&lt;br /&gt;好像是这样……&lt;br /&gt;mysql_install_db 脚本只是在初次安装时才需要运行一次,之后就不用再运行了,不知道是不是这么回事.我把mysql.server拷贝至/etc/rc.d/init.d /中,运行chkconfig mysql.server,至此mysql服务器每次开机自动启动,只要设置好PATH,在命令行上输入mysql就一切 搞定!&lt;br /&gt;看来摸索的过程实在是痛苦啊,这已经折磨我好几天了……&lt;br /&gt;&lt;br /&gt;*************&lt;br /&gt;4&lt;br /&gt;问：我的Mysql碰到了 1067 错误&lt;br /&gt;&lt;br /&gt;错误信息为：&lt;br /&gt;&lt;br /&gt;A system error has occurred.&lt;br /&gt;System error 1067 has occurred.&lt;br /&gt;The process terminated unexpectedly.&lt;br /&gt;&lt;br /&gt;答：&lt;br /&gt;解决办法：&lt;br /&gt;&lt;br /&gt;1.检查你的Mysql目录有没有给系统的System用户权限。&lt;br /&gt;2.删除掉你的 %WINDOWS%/my.ini 文件。&lt;br /&gt;3.检查你的 c:/my.cnf 文件配置是否正确。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*************&lt;br /&gt;5&lt;br /&gt;【☆☆☆　MySql概要说明　☆☆☆】&lt;br /&gt;MySql 的默认安装目录是c:mysql，安装结束后没有任何提示信息说安装结束，请点Finish按钮之类的话，直接就退出了。如果需要安装到其他目录，建议先 安装到c:mysql，然后再整个目录move到自己希望的地方，例如移动到d:mysql 之后，需要编辑 d:mysqlmy- example.cnf （*.cnf的文件在Windows 2000中会被注册成为 SpeedDial文件，在资源管理器中无法操作，要用命令行来 启动notepad编辑，例如运行notepadd:mysqlmy-example.cnf ，但是这个文件是UNIX系统下的文本文件格式，在 notepad中不能正确换行，可以用write打开编辑，&lt;br /&gt;或者用write打开后保存一次，再用notepad就可以编辑了。）找到 basedir一行，去掉前面的“#”号注释，将后面的路径改为移动后的目录（目录分隔符要用斜线而不是反斜线），然后另存为：c:my.cnf 用服务 方式启动的MySql如果用 net stop mysql 来停止，会得到一条 出错消息，例如：&lt;br /&gt;&lt;br /&gt;　　　　C:&gt;net stop mysql&lt;br /&gt;　　　　MySql 服务正在停止.&lt;br /&gt;　　　　系统出错。&lt;br /&gt;　　　　系统发生 1067 错误。&lt;br /&gt;　　　　进程意外终止。&lt;br /&gt;　　　　MySql 服务已成功停止。&lt;br /&gt;这没有关系，MySql确实已经停止了。但是假如不希望看到任何出错消息 的话，可以用以下的命令来停止：&lt;br /&gt;　　　　C:&gt;mysqlbinmysqladmin -u root shutdown&lt;br /&gt;如果没有任何提示信息，说明MySql已经成功停止了。&lt;br /&gt;需要说明的是MySql虽然号称安装简单，易于使用，但是这毕竟是基于SQL的数据库管理系统，所以如果不是对SQL十分精通的话恐怕也不能拿它来做什么&lt;br /&gt;&lt;br /&gt;**************&lt;br /&gt;6&lt;br /&gt;mysql服务无法启动的解决方法&lt;br /&gt;mysql服务无法启动&lt;br /&gt;&lt;br /&gt;我的操作系统是 win xp&lt;br /&gt;无论安装何版本的mysql，在管理工具的服务中启动mysql服务时都会在中途报错&lt;br /&gt;内容为：在 本地计算机 无法启动mysql服务 错误1067：进程意外中止&lt;br /&gt;&lt;br /&gt;经过多方求教，得解决方法如下&lt;br /&gt;&lt;br /&gt;查找系统(后来验证应该为windows目录)目录下的my.ini文件，编辑内容（如果没有该文件，则新建一个），至少包含basedir，datadir这两个基本的配置。&lt;br /&gt;[mysqld]&lt;br /&gt;# set basedir to installation path, e.g., c:/mysql&lt;br /&gt;# 设置为MYSQL的安装目录&lt;br /&gt;basedir=D:/www/WebServer/MySQL&lt;br /&gt;# set datadir to location of data directory,&lt;br /&gt;# e.g., c:/mysql/data or d:/mydata/data&lt;br /&gt;# 设置为MYSQL的数据目录&lt;br /&gt;datadir=D:/www/WebServer/MySQL/data&lt;br /&gt;&lt;br /&gt;另外，要主意&lt;br /&gt;[WinMySQLadmin]&lt;br /&gt;Server=D:/www/WebServer/MySQL/bin/mysqld-nt.exe&lt;br /&gt;user=root&lt;br /&gt;password=xxxxxxxx&lt;br /&gt;#以上是设置WinMySQLadmin的配置&lt;br /&gt;[Client]&lt;br /&gt;user=root&lt;br /&gt;password=xxxxxxxx&lt;br /&gt;&lt;br /&gt;hehe~ 解决了&lt;br /&gt;&lt;br /&gt;**************&lt;br /&gt;7&lt;br /&gt;刚刚弄好Mysql 『关键字 1067错误』&lt;br /&gt;比较郁闷，竟然没有想到安装个Mysql也会出错，错误代码是1067 安装卸载了好几次，就是不行，而且把一些禁用了的服务都打开了，但是还是不行。最后我是这样解决的：&lt;br /&gt;&lt;br /&gt;在C:\windows里找一找my.ini 然后删除 然后再启动winmysqladmin.exe界面配置mysql，保存my.ini就可以了 启动mysql试试 呵呵&lt;br /&gt;&lt;br /&gt;***************&lt;br /&gt;8&lt;br /&gt;mysql 错误 1067: 进程意外终止&lt;br /&gt;这 个问题困扰了一个早晨，非常郁闷！以前我在装mysql的时候从来没有遇到过，可是现在庄这个高版本的就有问题了，我换我装过的低版本的还是一样的问题 （最关键的是操作系统都是一样的）。在windows2000的服务里面启动mysql服务可是总是弹出“错误 1067: 进程意外终止”！&lt;br /&gt;&lt;br /&gt;我 感觉问题在配置文件，于是就重新写了my.ini，启动还是一样的效果，我在google上查找无果，崩溃状态！就在此时眼前一亮，一位高人的指点是我豁 然开朗，你的ini文件有否放到windows目录下，我从个人目录的windows目录下，将其拷贝到系统windows目录下，启动服 务，ok!!!&lt;br /&gt;&lt;br /&gt;我实在是不满足，为什么有不同呢，我的另外一台机子上装的是4.0.18的版本，它的my.ini就是放在用户目录下的 windows目录下的，而且也运行正常，我现在有点迷惘，人往往在解决了问题以后很少去思考，所以我现在有点想放弃的感觉，如果现在不会得到答案我想这 个在去思考解决基本上是不可能了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-1873748988393881834?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/1873748988393881834/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=1873748988393881834' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1873748988393881834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1873748988393881834'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/07/mysqlxp.html' title='Mysql在XP下设置及常见错误'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-1369143047573682878</id><published>2008-06-30T13:27:00.002+02:00</published><updated>2008-06-30T13:30:01.461+02:00</updated><title type='text'>编译多线程</title><content type='html'>比如一下的多线程程序：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#include &lt;pthread.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#include &lt;stdio.h&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;#define CNT 1000&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;int var;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;void * thread_func(){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    int i;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    for (i=0; i&lt;cnt;&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;        var=var+2;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    printf("var=%d\n", var);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    return 0;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;int main(){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    pthread_t t1,t2,t3;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    int ret;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    pthread_create(&amp;amp;t1, NULL, &amp;amp;thread_func, NULL);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    pthread_create(&amp;amp;t2, NULL, &amp;amp;thread_func, NULL);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    pthread_create(&amp;amp;t3, NULL, &amp;amp;thread_func, NULL);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    for(;;){}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    &lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;    return ret;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;如果编译的话，应该在GCC后面加入-pthread的参数：&lt;br /&gt;&lt;br /&gt;gcc -o test thread.o -pthread&lt;br /&gt;&lt;br /&gt;输出如下：&lt;br /&gt;var=2000&lt;br /&gt;var=4000&lt;br /&gt;var=6000&lt;br /&gt;...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-1369143047573682878?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/1369143047573682878/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=1369143047573682878' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1369143047573682878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1369143047573682878'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/06/blog-post.html' title='编译多线程'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-4239184981572370830</id><published>2008-06-28T10:07:00.000+02:00</published><updated>2008-06-28T10:08:39.292+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>PDFtk(引用自Latex学习)</title><content type='html'>&lt;h2&gt;Pdftk Simple Examples&lt;/h2&gt; &lt;p&gt;这里是pdftk使用的&lt;a href="http://www.accesspdf.com/article.php/20041129175231241"&gt;官方&lt;/a&gt;例子. 此方法适用于&lt;a href="http://latex.yo2.cn/articles/debian-linux-latex.html"&gt;GUN/Linux&lt;/a&gt;, 还可以用&lt;a href="http://latex.yo2.cn/articles/tex-merg-pdf.html"&gt;TeX合并PDF&lt;/a&gt;, 那个方法是跨平台的, 只要有LaTeX和相应的宏包就行.&lt;/p&gt; &lt;p&gt;Merge Two or More PDFs into a New Document&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf&lt;/tt&gt;&lt;br /&gt;or (Using Handles):&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk A=1.pdf B=2.pdf cat A B output 12.pdf&lt;/tt&gt;&lt;br /&gt;or (Using Wildcards):&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk *.pdf cat output combined.pdf&lt;/tt&gt;&lt;br /&gt;Split Select Pages from Multiple PDFs into a New Document&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf&lt;/tt&gt;&lt;br /&gt;Encrypt a PDF using 128-Bit Strength (the Default) and Withhold All Permissions (the Default)&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk mydoc.pdf output mydoc.128.pdf owner_pw foopass&lt;/tt&gt;&lt;br /&gt;Same as Above, Except a Password is Required to Open the PDF&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz&lt;/tt&gt;&lt;br /&gt;Same as Above, Except Printing is Allowed (after the PDF is Open)&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz allow printing&lt;/tt&gt;&lt;br /&gt;Decrypt a PDF&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk secured.pdf input_pw foopass output unsecured.pdf&lt;/tt&gt;&lt;br /&gt;Join Two Files, One of Which is Encrypted (the Output is Not Encrypted)&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk A=secured.pdf mydoc.pdf input_pw A=foopass cat output combined.pdf&lt;/tt&gt;&lt;br /&gt;Uncompress PDF Page Streams for Editing the PDF Code in a Text Editor&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk mydoc.pdf output mydoc.clear.pdf uncompress&lt;/tt&gt;&lt;br /&gt;Repair a PDF's Corrupted XREF Table and Stream Lengths (If Possible)&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk broken.pdf output fixed.pdf&lt;/tt&gt;&lt;br /&gt;Burst a Single PDF Document into Single Pages and Report its Data to doc_data.txt&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk mydoc.pdf burst&lt;/tt&gt;&lt;br /&gt;Report on PDF Document Metadata, Bookmarks and Page Labels&lt;/p&gt; &lt;p&gt;&lt;tt&gt;pdftk mydoc.pdf dump_data output report.txt&lt;/tt&gt;&lt;/p&gt; &lt;p&gt;&lt;tt&gt;from: http://www.accesspdf.com/article.php/20041129175231241&lt;/tt&gt;&lt;/p&gt; &lt;p&gt;------------------------------------------------&lt;/p&gt; &lt;p&gt;&lt;a href="http://latex.yo2.cn/"&gt;latex learning blog&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Split Select Pages from Multiple PDFs into a New Document&lt;/p&gt; &lt;p&gt;pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-4239184981572370830?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/4239184981572370830/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=4239184981572370830' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4239184981572370830'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4239184981572370830'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/06/pdftklatex.html' title='PDFtk(引用自Latex学习)'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-2074046963727177235</id><published>2008-06-20T22:59:00.003+02:00</published><updated>2008-06-20T23:07:39.313+02:00</updated><title type='text'>Ubuntu/Linux下分卷压缩</title><content type='html'>&lt;span&gt;1: rar分卷压缩&lt;br /&gt;&lt;br /&gt;rar a -v1024k 目的文件 原文件(路径)&lt;br /&gt;&lt;br /&gt;注:其中a是添加的意思.-v1024k是分卷成1024的大小一个的文件&lt;br /&gt;&lt;br /&gt;比如我的eva的包&lt;br /&gt;&lt;br /&gt;rar a -v1024k  eva.rar eva_0.4.921-1_i386.deb&lt;br /&gt;&lt;br /&gt;会生成象这样的多个包&lt;br /&gt;&lt;br /&gt;eva.part1.rar&lt;br /&gt;&lt;br /&gt;eva.part2.rar&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;rar解压&lt;br /&gt;rar e source.rar&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2: TAR&lt;br /&gt;分卷压缩:&lt;br /&gt;tar cvzpf myfile.tar.gz &lt;input files=""&gt; | split -d -b 1.44m&lt;br /&gt;合并:&lt;br /&gt;cat * &gt; myfile.tar.gz&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-2074046963727177235?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/2074046963727177235/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=2074046963727177235' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2074046963727177235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2074046963727177235'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/06/ubuntulinux.html' title='Ubuntu/Linux下分卷压缩'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-2317445645589567657</id><published>2008-06-19T18:44:00.000+02:00</published><updated>2008-06-19T18:45:25.141+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>JAVA程序员之路（转）</title><content type='html'>JAVA程序员之路&lt;br /&gt;&lt;br /&gt;很多网友问我学习Java有没有什么捷径,我说“无他，唯手熟尔”。但是我却很愿意将自己学习的一些经验写出来，以便后来者少走弯路,帮助别人是最大的快乐嘛！&lt;br /&gt;要想学好Java，首先要知道Java的大致分类。我们知道，自从Sun推出Java以来，就力图使之无所不包，所以Java发展到现在，按应用来分主要分为三大块：J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版，主要用于桌面应用软件的编程；J2ME主要应用于嵌入是系统开发，如手机和PDA的编程；J2EE是Java2的企业版，主要用于分布式的网络程序的开发，如电子商务网站和ERP系统。J2SE开发桌面应用软件比起VC,VB,DEPHI 这些传统开发语言来说，优势好象并不明显。J2ME对于初学者来说，好象又有点深奥，而且一般开发者很难有开发环境。所以现在应用最广泛又最好学的就是 J2EE了。J2EE又包括许多组件，如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。&lt;br /&gt;那么又该如何学习J2EE呢？当然Java语法得先看一看的，I/O包，Util包，Lang包你都熟悉了吗？然后再从JSP学起。如果你学过HTML，那么事情要好办的多，如果没有，那你快去补一补HTML基础吧。其实JSP中的Java语法也不多，它更象一个脚本语言，有点象ASP。然后你就该学一学Servlet了。Servlet就是服务器端小程序，他负责生成发送给客户端的HTML文件。JSP在执行时，也是先转换成Servlet 再运行的。虽说JSP理论上可以完全取代Servlet，这也是SUN推出JSP的本意，可是Servlet用来控制流程跳转还是挺方便的，也令程序更清晰。接下来你应该学习一下Javabean了，可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了，这种方式跟ASP又有什么区别呢？还好， SUN提供了Javabean可以把你的JSP中的Java代码封装起来，便于调用也便于重用。接着就是EJB了，EJB就是Enterprise JavaBean,看名字好象它是Javabean，可是它和Javabean还是有区别的。它是一个体系结构，你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件（也就是我们常听到的Weblogic,Websphere这些J2EE服务器）完成了，所以我们要做的程序代码量很少，大部分工作都在设计和配置中间件上。至于JDBC，就不用我多说了，你如果用java编过存取数据库的程序，就应该很熟悉。还有，如果你要用Java编发送电子邮件的程序，你就得看看Javamail了。&lt;br /&gt;好了，对Java和J2EE有了一些基本概念之后，你就应该编一些程序了，千万不要纸上谈兵哦。最好找一些有实例且带光盘的书来看，这样看到好的程序就可以直接Ctrl+C再Ctrl+V，也不用劳您老大架再亲自把它再输一遍吧，再说直接复制还不用怕出错，何乐而不为呢！还有就是要经常上一些好的Java编程文章，有好的文章要Cut下来，有问题尽管问，只要问题不是太傻，一般高手都会回答你的。下面介绍几个好的Java方面的编程网站：&lt;br /&gt;CSDN论坛http://www.csdn.net/ 中国最有名的技术论坛，《程序员》杂志就是他们出版的，你可以在上面提出问题，马上就有人回答你，如果你觉得好，你可以给那人加分；&lt;br /&gt;Java研究组http://www.javaresearch.org/ 上面有很多原创文章，高手还是挺多的；&lt;br /&gt;Java开发者http://www.chinajavaworld.com/ 那里Java资料比较全；&lt;br /&gt;java.com.cn http://www.java.com.cn/ 看这域名就知道有多牛，注册用户快接近一万了，同时在线人数也在一千左右，人气很旺的；&lt;br /&gt;IBM的开发者网http://www-900.ibm.com/developerWorks/cn/java/index.shtml IBM永远的蓝色巨人；&lt;br /&gt;&lt;br /&gt;那么我书也看了，程序也做了，别人问我的问题我都能解决了，是不是就成为高手了呢？当然没那么简单，这只是万里长征走完了第一步。不信？那你出去接一个项目，你知道怎么下手吗，你知道怎么设计吗，你知道怎么组织人员进行开发吗？你现在脑子里除了一些散乱的代码之外，可能再没有别的东西了吧！你现在最缺的是实际的工作经验，而不是书本上那些凭空想出来的程序。所以你快去找一份Java的编程工作来做吧（如果是在校学生可以去做兼职啊），在实践中提高自己，那才是最快的。不过你得祈祷在公司里碰到一个高手，而且他还愿意不厌其烦地教你，这样好象有点难哦！&lt;br /&gt;还有一个办法就是读开放源码的程序了。我们知道开放源码大都出自高手，他们设计合理，考虑周到，再加上有广大的程序员参与，代码的价值自然是字字珠叽，铿锵有力（对不起，最近《金装四大才子》看多了）。学Java必读的两个开源程序就是Jive和Pet Store.。Jive是国外一个非常著名的BBS程序，完全开放源码。论坛的设计采用了很多先进的技术，如Cache、用户认证、Filter、XML 等，而且论坛完全屏蔽了对数据库的访问，可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序，这是我们平时编程时容易忽略的一部份（中国程序员一般只注重编程的技术含量，却完全不考虑用户的感受，这就是我们与国外软件的差距所在）。Jive的资料在很多网站上都有，大家可以找来研究一下。相信你读完代码后，会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码，同时有licence限制。不过幸好还有中国一流的Java 程序员关注它，外国人不开源了，中国人就不能开源吗？这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名鼎鼎的 banq在Jive2.1版本基础上改编而成, 全中文，增加了一些实用功能，如贴图，用户头像和用户资料查询等，而且有一个开发团队在不断升级。你可以访问banq的网http://www.jdon.com/ 去下载，或到同济技术论坛的服务器上ftp://nro.shtdu.edu.cn去下，安装上有什么问题，可以到论坛上去提问。Pet Store.（宠物店）是SUN公司为了演示其J2EE编程规范而推出的开放源码的程序，应该很具有权威性，想学J2EE和EJB的朋友不要错过了。&lt;br /&gt;你一定会高兴地说，哈哈，原来成为Java高手就这么简单啊!记得我也曾碰到过一个项目经理，号称Java很简单，只要三个月就可以学会。其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是我泼你冷水，你现在只是学到了Java的骨架，却还没有学到Java的精髓。接下来你得研究设计模式了。设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想，它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧，让你能够真正掌握接口或抽象类的应用，从而在原来的Java语言基础上跃进一步，更重要的是，设计模式反复向你强调一个宗旨：要让你的程序尽可能的可重用。关于设计模式的资料，还是向大家推荐banq的网http://www.jdon.com/ ，他把GOF的23种模式以通俗易懂的方式诠释出来，纯Java描述，真是经典中的经典。有时间再研究一下MVC结构（把Model-View- Control分离开的设计思想）吧，现在很流行的Structs就是它的一种实现方式，不过Structs用起来实在是很繁，我们只要学习其精髓即可，我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring(重整)和极限XP编程，相信你又会上一个台阶。&lt;br /&gt;做完这些，你不如整理一下你的Java代码，把那些经典的程序和常见的应用整理出来，再精心打造一番，提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧，你可以去承接一些项目做了，一开始可能有些困难，可是你有技术积累，又考虑周全，接下项目来可以迅速作完，相信大家以后都会来找你的，所以Money就哗啦啦的来了。。。。。。&lt;br /&gt;当然你也可以参加一些开源项目，一方面可以提高自己，另一方面也是为中国软件事业做贡献嘛！开发者在互联网上用CVS合作开发，用QQ,MSN,E-mail讨论联系，天南海北的程序员分散在各地却同时开发同一个软件，是不是很有意思呢？&lt;br /&gt;下面介绍两个好的开源项目网站：&lt;br /&gt;湖北省软件公共开发平http://gro.clinux.org/&lt;br /&gt;共创联http://cosoft.org.cn/&lt;br /&gt;哇，好高兴哦，我终于成为高手了！非也，非也。古人云：“识时务者为俊杰”。你知道计算机界现在的发展形势吗？你知道微软的.NET蓝图和SUN ONE计划之间的明争暗斗吗?你知道计算机技术将向何处发展吗?其实从各大计算机厂商最近的动作,都可以看出来“Web服务将是下一代互联网应用的制高点”，而微软的.NET蓝图和SUN ONE计划的斗争焦点，也就是Web服务。Web服务就是一个崭新的分布式计算模型，它是一系列标准的综合（XML,SOAP,UDDI,WSDL和 WSFL等）。它使得不同语言编写的软件能够轻易的集成起来，使网络资源和Web站点变成一种服务而不是混乱的垃圾场。不远的将来，我们就可以在家里点击一下鼠标，就可以完成出门旅游的全部准备工作，包括定飞机票，定旅游线路，定好房间等。请注意，这所有的一切都是Web站点间自动完成的，再也不用象现在一样，表面上是电子商务，实际上很多环节都是人工操作。也许你会觉得这是天方夜谈，不过就近的说，你也很有可能承接一个项目，要集成两个企业的ERP系统。很有可能上游企业的系统是用Dephi编的，而下游企业的系统是用Java编的。你说你是Java高手，大家都看者你怎么做呢。所以啊，你还得学习新技术，如Web服务，而且你Dephi也要懂一点吧（Dephi6现在已经提供Web服务的控件了）。你编的Java系统，可能要和.NET集成，所以你.NET要懂一点吧？到最后，你可能发现你已经成为Java高手了，但很多时间却在搞别的技术。太极张三丰里说，最厉害的招式就是没有招式，可能就是这个道理吧！&lt;br /&gt;因为刚刚兴起，所以网上Web服务的资料不是很多，我还是给大家推荐几个网站吧：&lt;br /&gt;中国UDDI技术联http://www.uddi-china.org/&lt;br /&gt;CSDN的柴晓路专http://www.csdn.net/develop/author/ColumnAuthor/fennivel/ （注：柴晓路也是互联网上一个有名的人物，他发表过很多关于Web服务的文章，还出了一书，应该称的上是中国Web服务技术的先行者）&lt;br /&gt;IBM的开发者网络的XML&amp;Web Service专栏:&lt;br /&gt;http://www-900.ibm.com/developerWorks/cn/xml/index.shtml?csdn IBM可是Web服务的力推者&lt;br /&gt;呜…你费劲千心万苦，总算成为Java高手了，怎叫人不由喜极而泣呢！是啊，真不容易，真不简单，真叫人感动啊！那么打个电话告诉我吧，什么？我的电话号码是多少？昏到，你打电话问不就知道了吗，真是的……&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如上是在网上考下来的，但个人认为SCJP证书也好，程序员等级证书也好，不要太看重它；关键是你手中有没有技术，能不能拿出活来。我面试时候都是以证书为参考，主要衡量你的手段还是提问技术性问题以及一些编程方面的基础问题。建议不要把证书看的太重。&lt;br /&gt;参考资料：参考高手建议&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-2317445645589567657?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/2317445645589567657/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=2317445645589567657' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2317445645589567657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2317445645589567657'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/06/java.html' title='JAVA程序员之路（转）'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-8272137017015860068</id><published>2008-06-02T11:04:00.001+02:00</published><updated>2008-06-02T11:04:32.692+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>linux内核编程的误区（转）</title><content type='html'>先说句正经的：其实我没资格写这篇文章，因为自己也就一两个月以来才开始有所领悟的。因此，这里与其说是关于Linux内核学习的经验，不如说是自己的教训吧，希望不要扔鸡蛋砸我^_^&lt;br /&gt;&lt;br /&gt;    常常有人问：我想学习内核，需要什么基础吗？Linus Torvalds本人是这样回答的：你必须使用过Linux. 这个……还是有点太泛了吧，我想下面几个基础可能还是需要的，尽管不一定必需：&lt;br /&gt;&lt;br /&gt;    1， 关于操作系统理论的最初级的知识。不需要通读并理解《操作系统概念》《现代操作系统》等巨著，但总要知道分时（time-shared）和实时（real-time）的区别是什么，进程是个什么东西，CPU和系统总线、内存的关系（很粗略即可），等等。&lt;br /&gt;&lt;br /&gt;    2， 关于C语言。不需要已经很精通C语言，只要能熟练编写C程序，能看懂链表、散列表等数据结构的C实现，用过gcc编译器，就可以了。当然，如果已经精通C语言显然是大占便宜的。&lt;br /&gt;&lt;br /&gt;    3， 关于CPU的知识。这块儿可以在学习内核过程中补，但这样的话你就需要看讲解很详细的书，比方后面将会提到的《情景分析》。你是否熟悉Intel 80386 CPU？尝试着回答这几个问题来判断一下：1）说出80386的中断门和陷阱门的区别；2）说出保护模式与实模式的区别；3）多处理器机器上，普通的读- 改-写回一块内存这样的动作，为什么需要特殊的手段来保护。等等。讲解基于其它CPU的Linux内核的书，目前好象只有一本《IA64Linux内核：设计与实现》──也还是Intel的，其它都是讲解基于IA32的。&lt;br /&gt;&lt;br /&gt;    以上算是知识方面吧，如果还要再补充一条，我想就是：动手编译过内核。&lt;br /&gt;&lt;br /&gt;    好了，我们接下来走。好多人装上Linux之后，第一件事找到内核源码所在的路径，打开一个C程序文件，开始哗哗哗翻页，看看大名鼎鼎的Linux内核代码到底长啥模样──然后关闭。这是可理解的，但却不是学习的方法。刚开始，必须从读书入手。至少要对内核有一个Overview之后，才有可能带着问题去试图阅读源代码本身。 下面就讲一下我读过的几本书：&lt;br /&gt;&lt;br /&gt;    1， 《Linux内核设计与实现》，英文名Linux Kernel Development（所以有人叫它LKD），机械工业出版社，￥35， 美国Robert Love著，陈莉君译者。评说：此书是当今首屈一指的入门最佳图书。作者是为2.6内核加入了抢占的人，对调度部分非常精通，而调度是整个系统的核心，因此本书是很权威的。这本书讲解浅显易懂，全书没有列举一条汇编语句，但是给出了整个Linux操作系统2.6内核的概观，使你能通过阅读迅速获得一个overview.而且对内核中较为混乱的部分（如下半部），它的讲解是最透彻的。对没怎么深入内核的人来说，这是强烈推荐的一本书。&lt;br /&gt;&lt;br /&gt;    翻译：翻译水平、负责任程度都不错，但是印刷存在一些错误。买了此书的朋友可以参考我在Linux高级应用版的《Linux内核设计与实现中文版勘误》：http://bbs.chinaunix.net/forum/viewtopic.php？t=541234另外，此书2005年有了第二版，目前尚无中译本面世。我就是对照着2nd-en勘误1st-cn的。&lt;br /&gt;&lt;br /&gt;    2， 《Linux内核源代码情景分析》上、下。毛德操、胡希明著，浙江大学出版社，上册￥80，下册￥70.   评说：本书是基于2.4.0内核的，比较早，也没听说会出第二版。上册讲解内存管理、中断、异常与系统调用、进程控制、文件系统与传统Unix IPC；下册讲解socket、设备驱动、SMP和引导。关于这套书的评价褒贬不一，我个人认为其深度是同类著作中最优秀的。本书基于Intel IA32体系，由于厚度大，很多体系上的知识都捎带讲解了，所以如果你想深入了解内核的工作机制而又不非常熟悉Intel  CPU的体系构造，本书是最合适的。缺点是：版本较老，没有TCP/IP协议栈部分（它讲的socket只是Unix域协议的），图表太少，不适合初学者入门。还有就是对学生朋友来说，可能书价偏高，这样的话可以考虑先买上册，因为上册是核心部分，下册一大部分都在讲具体PCI/ISA/USB设备的驱动。&lt;br /&gt;&lt;br /&gt;    翻译：没什么翻译，作者是国人，而且行文流畅。本人书桌上诸多计算机经典图书当中，这套是唯一又经典又无阅读障碍的。&lt;br /&gt;&lt;br /&gt;    www.linuxforum.net内核版好多朋友已经把这书读到六七遍了，我很惭愧，上册差不多读熟了，下册就SMP部分还看过──但这就花费了整整1年的时间，还有好多弄不懂的。这里顺便说明另外一个研究内核常见的误区：目标太庞大。要知道Linux内核（最新的2.6.13）bzip2压缩之后37M，解压缩之后244M，根本不是哪个人能够吃透的。即使是内核的核心开发团队中，恐怕也只Linus Torvalds、Alan Cox、David Miller、Ingo Molnar寥寥数人会有比较全面的了解，其它人都是做自己专门的部分。我自己来说，目前已经决定放弃内存管理的全部（slab层、LRU、rbtree等）、文件系统部分、外设驱动部分，暂时也没打算弄IA32以外的其它体系的部分。&lt;br /&gt;&lt;br /&gt;    3，《深入理解Linux内核》第二版。中国电力出版社。也是陈莉君译。此书是Linux内核黑客在推荐图书时的首选。评说：此书C版的converse兄送了我一本第一版，因此就没买第二版，比较后悔。因此只就第一版说一说，第一版基于2.2，第二版2.4 .我见O'Reilly官方主页上说第三版的英文版将于2005年11月出版，也不知咱们何时才能见到。此书图表很多，形象地给出了关键数据结构的定义，与《情景分析》相比，本书内容紧凑，不会一个问题讲解动辄上百页，有提纲挈领的功用，但是深度上要逊于《情景分析》。&lt;br /&gt;&lt;br /&gt;    4， 其它的几本书。市面上能见到的其它的Linux内核的图书，象《Linux设备驱动程序》、《Linux内核源代码完全注释》以及新出的《Linux内核分析及编程》等。&lt;br /&gt;&lt;br /&gt;    《Linux设备驱动程序》第二版是基于2.4的，中文翻译不错，中国电力出版。这书强调动手实践，但它是讲解“设备驱动”的，不是最核心的东西，而且有些东西没硬件的话无法实践，可能更适合驱动开发的程序员吧，不太适合那些For fun and profit的人。此书有第三版英文版，东南大学出版社影印，讲解2.6的，行文流畅，讲解的面也比第二版更广泛，我读过其中关于同步与互斥、内存分配的部分，感觉很不错。&lt;br /&gt;&lt;br /&gt;    《Linux内核源代码完全注释》（机械工业出版社）是同济大学的博士生赵炯的著作，讲解0.1Linux内核，我没买也没看，有看过的朋友说一说。&lt;br /&gt;&lt;br /&gt;    《Linux内核分析及编程》（电子工业出版社）是刚刚出版的，国人写的，讲解2.6.11 .很多人说好，但有人说不够系统，我没买，不敢评说。&lt;br /&gt;&lt;br /&gt;    还有一本清华出的《Linux内核编程指南（第三版）》，原书应该是好书，但是翻译、排版十分糟烂，脱字跳行，根本没法看，我买了一本又扔掉了。&lt;br /&gt;&lt;br /&gt;    5， 其它资源。 TLDP（The Linux Documentation Project）有大量文档，其中不少是关于内核的，有些是在国外出版过的，象《Linux Kernel Interls》《The Linux Kernel》《Linux Kernel Module Programming Guide》等，作者都是亲身参加开发的人，著作较为可信。&lt;br /&gt;&lt;br /&gt;    Http://www.linuxforum.net中国Linux论坛的内核版。该版是研究内核的中文Linux社区中水平最高的，有很多专家级别的牛人，强烈推荐去学习一下（但建议不要问太过分简单的问题，人家脾气再好也会烦的^_^），它的置顶贴简直是一个包罗万象的FAQ，精华区也有很多资料。只可惜太过曲高和寡，人气不是很旺。&lt;br /&gt;&lt;br /&gt;    6，一本不是讲解Linux的书：《现代体系结构上的Unix系统：内核程序员的SMP和Caching技术》，人民邮电出版社2003版，定价￥39. 本书虽然不是讲解Linux，但是对所有Unix内核都是适用的，适合对SMP和CPU的Cache这些组成原理知识不是很熟的朋友，而且是很多国外牛人推荐的书。中文版翻译非常负责。&lt;br /&gt;&lt;br /&gt;    还有个很重要的问题：怎样浏览内核源代码。有的朋友喜欢在Windows上工作，用Source Insight；有的在Linux，用Source Navigator；还有专门浏览源代码的软件，象lxr（Linux Cross Reference）；还有用ctags/ectags/cscope等，这些都是很优秀的软件。我个人用Vim + ctags浏览（参考了www.linuxforum.net内核版wheelz大侠的文档，）。&lt;br /&gt;&lt;br /&gt;    此外，前边已经提到的一个重要的问题是：你研究内核的目的是什么， 开发？ 乐趣？如果是开发，而且是国内做开发，把kernel API熟悉一下就差不太多了（你也知道国内的水平有多差），比方说copy_from_user（）、kmalloc（）函数等，kernel API在Internet上找得到，编译内核时也可以用DocBook生成（具体请参考内核源代码包下的README文件）；如果是研究，那就差别很大了，需要下很大的苦功：会用kmalloc（）绝不说明你懂得Linux内核的虚存管理子系统，正如同会讲汉语不说明你懂中国文化一样。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-8272137017015860068?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/8272137017015860068/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=8272137017015860068' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8272137017015860068'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8272137017015860068'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/06/linux.html' title='linux内核编程的误区（转）'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-4269882044300139300</id><published>2008-05-27T17:56:00.001+02:00</published><updated>2008-05-27T17:56:38.605+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>来自 梁晓声 的博客----地质局长和一顶帐篷</title><content type='html'>来自 梁晓声 的博客----地质局长和一顶帐篷&lt;br /&gt;地质局长和一顶帐篷   &lt;br /&gt;&lt;br /&gt;二十五六年前，我曾改写过一部上下两集的电视剧本《荒原》，内容反映的是两名年轻的地质工作者艰苦的野外工作--它由中央电视台影视部直接组稿，形成初稿以后，请我再给“影视化”一下。导演叫黄群学，我的一位后来在广告拍摄业很有成就的朋友。而女主角，则是当年因主演电视连续剧《外来妹》而深受电视观众喜爱的陈小艺。&lt;br /&gt;&lt;br /&gt;《荒原》是在甘肃省境内拍摄的。&lt;br /&gt;&lt;br /&gt;剧名既然叫《荒原》，所选当然是很荒凉的外景地。它的拍摄，受到了从地质部到甘肃省地质局的热情支持。&lt;br /&gt;&lt;br /&gt;地质局长专程从某驻扎野外的地质队赶回兰州接见了摄制组的主创人员，亲切地对他们说--你们就把地质局当成自己的家吧！遇到什么困难，只管开口。地质局能直接帮助你们解决的，我们义不容辞。不能直接帮助你们解决的，我们一定替你们尽力协调，争取顺利和方便。　　&lt;br /&gt;&lt;br /&gt;这位地质局的局长，亦或副局长，给摄制组的主创人员们留下了很深的印象。　　&lt;br /&gt;&lt;br /&gt;导演黄群学在长途电话里向我大谈他们的好印象，而我忍不住问：“简短点儿，概括一下，那局长究竟是一个怎样的人？” 　　&lt;br /&gt;&lt;br /&gt;导演说：“真诚。一个真诚的人！还是一个特别注意细节的人。” 　　&lt;br /&gt;&lt;br /&gt;我在电话这一端笑了，说你的话像剧本台词啊！一个人真诚不真诚，不能仅凭初步印象得出结论；一个人是否特别注意细节，那也要由具体的例子来证明。　　&lt;br /&gt;&lt;br /&gt;导演在电话那一端说：他们将需要向地质局租借的东西列了一份清单。那位局长当着他们的面让秘书立刻找出来，亲自过目。清单上所列的东西中，包括一台发报机、一套野外炊具、几身地质工作服、一盏马灯、地质劳动工具和一顶帐篷等。　　&lt;br /&gt;&lt;br /&gt;局长边看边说：“这些东西，都是我们地质局有的，完全可以无偿提供给同志们。省下点儿钱用在保证艺术质量方面，不是更好吗？为什么只列了一盏马灯呢？玻璃罩子的东西，一不小心就容易碰坏。一旦坏了，那不就得派人驱车赶回兰州来再取一盏吗？耽误时间、分散精力、浪费汽油，还会影响你们的拍摄情绪，是不是呢，同志们？有备无患，我们为你们提供两盏马灯吧。再为你们无偿提供柴油。你们只不过是拍电影，不是真正的野外驻扎，无须多少柴油燃料，对吧？至于发报机，就不必借用一台真正能用的了吧？我们为你们提供一台报废的行不行？反正你们也不是真的用来发报，是吧同志们？能用的万一搞得不能用了，不是就造成不必要的损失了吗？现在已经是十一月份了，西部地区的野外很寒冷了。你们还要在野外的夜间拍摄，一顶单帐篷不行。帐篷也可以无偿借给你们，但应该改为一顶棉帐篷。你们在野外拍摄时冷了，可以在棉帐篷里暖和暖和嘛……” 　　&lt;br /&gt;&lt;br /&gt;于是那位地质局的局长，亲自动笔，将他认为应该无偿提供的东西，都一概批为无偿提供了。　　&lt;br /&gt;&lt;br /&gt;一位在场的处长低声对局长说：后勤仓库里只剩一顶帐篷了，而且是崭新的，还没用过的--那样子，分明是有点儿舍不得。　　&lt;br /&gt;&lt;br /&gt;局长沉吟片刻，以决定的口吻说：“崭新的帐篷那也要有人来开始用它。就让摄制组的同志们成为开始用它的人吧！” 　　…… 　　&lt;br /&gt;&lt;br /&gt;听了导演在电话那一端告诉的情况，我对甘肃省地质局的局长，也顿时心生出一片感激了。　　&lt;br /&gt;&lt;br /&gt;之后，在整个野外拍摄过程中，那一顶由地质局长特批的崭新的棉帐篷，在西部地区的野外，确确实实起到了为摄制组遮挡寒冷保障温暖的不可替代的作用。　　&lt;br /&gt;&lt;br /&gt;但也正是因为那一顶崭新的棉帐篷，导演黄群学受到了甘肃省地质局长的批评。而我，是间接受教育的人--剧中有一段很重要的情节，就是帐篷失火了，在夜里被烧成了一堆灰烬。制片人员的拍摄计划表考虑得很合理，安排那一场戏在最后一天夜里拍摄。拍毕，全组当夜返回兰州。　　&lt;br /&gt;&lt;br /&gt;拍摄顺利，导演兴奋，全组愉快。　　&lt;br /&gt;&lt;br /&gt;导演忍不住给局长拨通电话，预报讯息。　　&lt;br /&gt;&lt;br /&gt;不料局长一听就急了，在电话里断然地说：“那一顶帐篷绝对不允许烧掉！我想一定还有另外的办法可以避免一顶只不过才用了半个多月的帐篷被一把火烧掉。” 　　&lt;br /&gt;&lt;br /&gt;导演说那是根本没有别的办法可想的事。因为帐篷失火那一场戏，如果不拍，全剧在情节上就没法成立了。　　&lt;br /&gt;&lt;br /&gt;导演还说：“我们已经预留了一笔资金，足够补偿地质局一顶棉帐篷的损失。” 　　&lt;br /&gt;&lt;br /&gt;局长却说：“不是钱不钱的问题，是另外的办法究竟想过没想过的问题。” 　　&lt;br /&gt;&lt;br /&gt;最后，局长紧急约见导演。 　　&lt;br /&gt;&lt;br /&gt;导演赶回兰州前，又与在北京的我通了一次电话，发愁地说：“如果就是不允许烧帐篷，那可怎么办？那可怎么办？” 　　&lt;br /&gt;&lt;br /&gt;我说：“我也没办法啊！那么现在你对这个人有何感想了呀？”&lt;br /&gt;&lt;br /&gt;　　导演说：“难以理解。说不定我此一去，就会因一顶帐篷和他闹僵了。反正帐篷是必须烧的，这一点我是没法不坚持到底的。” 　　&lt;br /&gt;&lt;br /&gt;然而，导演并没有和局长闹僵，他反而又一次被局长感动了。　　&lt;br /&gt;&lt;br /&gt;局长对导演的态度依然真诚又亲切。　　&lt;br /&gt;&lt;br /&gt;在局长简陋的办公室里，局长说出了如下一番话：“我相信你们已经预留了一笔资金，足够补偿地质局的一顶新帐篷被一把火烧掉的损失。此前我没看过剧本，替剧组预先考虑得不周到，使你们的拍摄遇到难题了，我向你们道歉。但是和你通话以后，我将剧本读了一遍。烧帐篷的情节不是发生在夜晚吗？既然是在夜晚，那么烧掉的究竟是一顶什么样的帐篷，其实从电视里是看不出来的。为什么不可以用一顶旧帐篷代替一顶新帐篷呢？” 　　&lt;br /&gt;&lt;br /&gt;导演嘟哝：“看不出来是看不出来，用一顶旧帐篷代替一顶新帐篷当然可以。但，临时上哪儿去找到一顶烧了也不至于令您心疼的旧帐篷呢？找到它需要多少天呢？我们剧组不能在野外干等着啊！……” 　　&lt;br /&gt;&lt;br /&gt;局长说：“放下你们的剧本，我就开始亲自打电话联系。现在，一顶一把火烧了也不至于让人心疼的旧帐篷已经找到了，就在离你们的外景地不远的一支地质队的仓库里。我嘱咐他们：将破了的地方尽快修补好，及时给你们摄制组送过去，保证不会耽误你们拍摄今天夜里的戏……” 　　&lt;br /&gt;&lt;br /&gt;这是导演没有料到的，他怔怔地望着地质局长，一时不知说什么好。　　&lt;br /&gt;&lt;br /&gt;局长又说出一番话是--我们地质工作者的职业性质决定了我们不是物质产品的直接生产者。我们在野外工作时，所用一切东西，无一不是别人生产出来的。他们保障了我们从事野外工作的必备条件，直接改善了我们所经常面临的艰苦环境，这就使我们对于一切物质产品养成了特别珍惜的习惯。你们也可以想象，在野外，有时一根火柴，一节电池，一双鞋垫都是宝贵的。何况，我们是身在西部的地质工作者，西部的老百姓，太穷，太苦了啊！你们若烧掉一顶好端端的帐篷，跟直接烧钱有什么两样呢？那笔钱，等于是一户贫穷的西部人家一年的生活费还绰绰有余。这笔钱由你们节省下来了，不是可以在别的一方面的社会经济中，起到更有意义和价值的作用吗？我们中国目前还是一个经济欠发达的国家。我们中国人应该长期树立这样的一种意识--物质之物一旦成为了生产品，那就一定要物尽其用。不要轻易一把火把它烧掉了。而我们中国人做事情，尤其是做文化之事的时候，能省一笔钱那就一定要省一笔钱。中国的文化之事，理应启示我们中国人--对于中国，物质的浪费现象是罪过的……　　&lt;br /&gt;&lt;br /&gt;当导演后来在电话里将地质局长的话复述给我听时，远在北京的我，握着话筒，心生出种种感慨。　　&lt;br /&gt;&lt;br /&gt;感慨之一那就是--中国委实需要一大批像那位地质局长一样的人民公仆。　　&lt;br /&gt;&lt;br /&gt;而那一位当年的地质局长，便是我们中国现在的国家总理，温家宝。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-4269882044300139300?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/4269882044300139300/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=4269882044300139300' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4269882044300139300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4269882044300139300'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/blog-post_27.html' title='来自 梁晓声 的博客----地质局长和一顶帐篷'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-8828242168774235207</id><published>2008-05-25T10:57:00.001+02:00</published><updated>2008-05-25T11:00:27.868+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Linux下的Voip电话</title><content type='html'>Linphone使用了很久了，可以支持voipdiscount什么的，效果也不错。&lt;br /&gt;在新版的Ubuntu Hardy里面的的Linphone会crash，我下载了新版的linphone,&lt;br /&gt;编译时注意：&lt;br /&gt;You must install libsdl and libgtk &gt;2.0.0 and libavcodec&lt;br /&gt;With ubuntu it's easy: &lt;br /&gt;sudo apt-get install libgtk2.0-dev libsdl1.2-dev libavcodec-dev&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-8828242168774235207?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/8828242168774235207/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=8828242168774235207' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8828242168774235207'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8828242168774235207'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/linuxvoip.html' title='Linux下的Voip电话'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-7990416662492189866</id><published>2008-05-21T21:56:00.000+02:00</published><updated>2008-05-21T21:57:14.968+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>Swing感官切换</title><content type='html'>在默认的情况下，Swing 程序使用Metal观感，可以采用两种方法改变观感。&lt;br /&gt;&lt;br /&gt;      第一种方式是在Java的安装的子目录下jre / lib有一个文件swing.properties。在这个文件中，将属性Swing.defaultlaf设置为所希望的观感类名。例如：&lt;br /&gt;&lt;br /&gt;swing.defaultlaf = com.sun.java.swing.plaf.motif.MotifLookAndFeel&lt;br /&gt;&lt;br /&gt;ps:第一中方式我怎么也没找到那个swing.properties，不知大家的如何？&lt;br /&gt;&lt;br /&gt;  注意，Metal观感位于Javax.swing包中。其他的观感包位于com.sun.java包中，并且不是在每个Java实现中都提供。现在，鉴于版权的原因，Windows 和Mac 的观感包只与Windows和Mac版本的java运行环境一起发布。&lt;br /&gt;&lt;br /&gt;   提示：下面给出一个测试很有帮助的的建议。由于属性文件中的以#字符开始的行被忽略，所以，可以在swing.properties文件中提供几种观感，并同过增删#字符来切换选择：&lt;br /&gt;&lt;br /&gt;#swing.defaultlaf = javax.swing.plaf.metal.MetalLookAndFeel&lt;br /&gt;&lt;br /&gt;  swing.defaultlaf = com.sun.java.swing.plaf.motif.MotifLookAndFeel&lt;br /&gt;&lt;br /&gt;#swing.defaultlaf = com.sun.java.swing.plaf.windows.WindowsLookAndFeel&lt;br /&gt;&lt;br /&gt;采用这种方式开启观感时必须重新启动程序。Swing程序只在启动时读取一次swing.properties文件。&lt;br /&gt;&lt;br /&gt;      第二种方式是动态地改变观感。这需要调用静态的UIManager.setLookAndFeel方法，并提供所想要的观感类名，然后再调用静态方法 SwingUtilities.updateComponentTreeUI来刷新全部的组件集。这里需要向这个方法提供一个组件，并由此找到其他的所有组件。当UIManager.setLookAndFeel方法没有找到所希望的观感或在加载过程中出现错误时，将会抛出异常。&lt;br /&gt;&lt;br /&gt;     下面是一个例子，他显示了如何在程序中切换观感的方式。在这个程序中，这有点需要注意的地方。在内部动作监听器类的actionPerformed方法中，需要将一个外部的PalfPanel类的this引用传递给updateComponentTreeUI方法。&lt;br /&gt;java 代码&lt;br /&gt;&lt;br /&gt;   1. import java.awt.*;   &lt;br /&gt;   2. import java.awt.event.*;   &lt;br /&gt;   3. import javax.swing.*;   &lt;br /&gt;   4.   &lt;br /&gt;   5.   &lt;br /&gt;   6. public class PlafTest {   &lt;br /&gt;   7.   &lt;br /&gt;   8.     public static void main(String[] args) {   &lt;br /&gt;   9.         // TODO Auto-generated method stub   &lt;br /&gt;  10.         PlafFrame frame = new PlafFrame();   &lt;br /&gt;  11.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);   &lt;br /&gt;  12.         frame.setVisible(true);   &lt;br /&gt;  13.   &lt;br /&gt;  14.     }   &lt;br /&gt;  15. }   &lt;br /&gt;  16.   &lt;br /&gt;  17. //A Frae with a button panel for chaing look and fell   &lt;br /&gt;  18. class PlafFrame extends JFrame {   &lt;br /&gt;  19.        &lt;br /&gt;  20.     public static final int DEFAULT_WIDTH = 300;   &lt;br /&gt;  21.     public static final int DEFAULT_HEITHT =200;   &lt;br /&gt;  22.        &lt;br /&gt;  23.     public PlafFrame(){   &lt;br /&gt;  24.            &lt;br /&gt;  25.         setTitle("PlaF Test");   &lt;br /&gt;  26.         setBounds(350,250,DEFAULT_WIDTH,DEFAULT_HEITHT);   &lt;br /&gt;  27.         PlafPanel panel = new PlafPanel();   &lt;br /&gt;  28.         add(panel);   &lt;br /&gt;  29.     }   &lt;br /&gt;  30.        &lt;br /&gt;  31. }   &lt;br /&gt;  32.   &lt;br /&gt;  33. //A panel with buttons to change the pluggable look and fell   &lt;br /&gt;  34.   &lt;br /&gt;  35. class PlafPanel extends JPanel {   &lt;br /&gt;  36.     public PlafPanel(){   &lt;br /&gt;  37.         UIManager.LookAndFeelInfo[] infos = UIManager.getInstalledLookAndFeels();   &lt;br /&gt;  38.         for(UIManager.LookAndFeelInfo info : infos)   &lt;br /&gt;  39.             makeButton(info.getName(),info.getClassName());   &lt;br /&gt;  40.                &lt;br /&gt;  41.            &lt;br /&gt;  42.     }   &lt;br /&gt;  43.        &lt;br /&gt;  44.    void makeButton(String name,final String plafName){   &lt;br /&gt;  45.           &lt;br /&gt;  46.        //add button to panel   &lt;br /&gt;  47.           &lt;br /&gt;  48.        JButton button = new JButton(name);   &lt;br /&gt;  49.        add(button);   &lt;br /&gt;  50.           &lt;br /&gt;  51.        //set button action   &lt;br /&gt;  52.           &lt;br /&gt;  53.        button.addActionListener(new  &lt;br /&gt;  54.          ActionListener(){   &lt;br /&gt;  55.            public void actionPerformed(ActionEvent event){   &lt;br /&gt;  56.                   &lt;br /&gt;  57.                //button action :switch to the new look and feel   &lt;br /&gt;  58.                try{   &lt;br /&gt;  59.                    UIManager.setLookAndFeel(plafName);   &lt;br /&gt;  60.                    SwingUtilities.updateComponentTreeUI(PlafPanel.this);   &lt;br /&gt;  61.                       &lt;br /&gt;  62.                }   &lt;br /&gt;  63.                catch(Exception e){e.printStackTrace();}   &lt;br /&gt;  64.               &lt;br /&gt;  65.            }   &lt;br /&gt;  66.               &lt;br /&gt;  67.        });   &lt;br /&gt;  68.    }   &lt;br /&gt;  69.        &lt;br /&gt;  70.        &lt;br /&gt;  71. }&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-7990416662492189866?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/7990416662492189866/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=7990416662492189866' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7990416662492189866'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7990416662492189866'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/swing.html' title='Swing感官切换'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-2234426781651816228</id><published>2008-05-21T11:53:00.000+02:00</published><updated>2008-05-21T11:54:58.873+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>柳宗元 《《蝜蝂传》》</title><content type='html'>蝜蝂者蝜蝂：读音fù、bàn，一种黑色小虫，善负小虫也，善负小虫也。行遇物，辄持取。卬其首负之卬áng。昂。背愈重，虽困剧不止也。其背甚涩，物积因不散，卒踬仆不能起踬：读音zhì，被东西拌倒。人或怜之，为去其负。苟能行，又持取如故。又好上高，极其力不止，至坠地死。&lt;br /&gt;    今世之嗜取者，遇货不避，以厚其室，不知为己累也，唯恐其不积。及其怠而踬也，黜弃之，迁徙之，亦已病矣。苟能起，又不艾，日思高其位、大其禄，而贪取滋甚，以近于危坠，观前之死亡不知戒。虽其形魁然大者也，其名，人也，而智则小虫也。亦足哀夫！&lt;br /&gt;    翻译：蝜蝂，是喜欢背东西的小虫。行走中遇到东西，就拿起来。昂着头背起它。背上越来越重，虽然累的厉害还不停止。它的背部很粗糙，东西因此积累不散落，终于跌倒起不来。有的人怜悯它，帮它拿掉东西。一旦能够走动，又像原来一样拿来背上。还喜欢爬高，不到力气用到极限不停止，直到坠地而死。&lt;br /&gt;    当今的嗜好掠取的人，遇到财物不会回避，拿来增加自己家产，不知道成为自己的负担了，惟恐钱财没有积累。等到疲倦摔跟头时，被贬斥抛弃了，被贬而迁居了，也已经一蹶不振的了。一旦能够翻身，又不停，天天想着升官、得到更多的俸禄，从而贪念和掠取更加滋生更加疯狂，到接近于危机和崩溃，看到前面因此而死去的而放逐的却不知道有所警戒。虽然他们的形体魁梧高大，他们的名称，是人，但是智力却是小虫的智力啊。也是值得悲哀的啊！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-2234426781651816228?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/2234426781651816228/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=2234426781651816228' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2234426781651816228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2234426781651816228'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/blog-post_21.html' title='柳宗元 《《蝜蝂传》》'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-1600286504138158485</id><published>2008-05-20T20:37:00.000+02:00</published><updated>2008-05-20T20:38:21.683+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>Hibernate学习转载</title><content type='html'>其实Hibernate本身是个独立的框架，它不需要任何web server或application server的支持。然而，大多数的Hibernate入门介绍都加入了很多非Hibernate的东西，比如: Tomcat, Eclipse, Log4J,Struts, XDoclet, 甚至JBoss。这容易让人产生Hibernate复杂难懂的误解，特别是打击了初学者的积极性。&lt;br /&gt;&lt;br /&gt;在这篇文章将不涉及Eclipse, log4j, Struts, Tomcat, XDoclet，和JBoss。本文的目的是演示一下Hibernate的安装过程以及最基本的功能，从而给初学者一个低得不能再低的入门门槛。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;下载文件&lt;br /&gt;&lt;br /&gt;你需要Java SDK、 Hibernate包、Ant包、和JDBC Driver。&lt;br /&gt;&lt;br /&gt;1、Hibernate包下载地址:&lt;br /&gt;http://prdownloads.sourceforge.net/hibernate/?sort_by=date&amp;sort=desc&lt;br /&gt;&lt;br /&gt;2、Ant包下载地址:&lt;br /&gt;http://apache.130th.net/ant/binaries/apache-ant-1.6.1-bin.zip&lt;br /&gt;&lt;br /&gt;3、JDBC Driver要根据你用的database来定，一般database官方网站上都会有。Hibernate支持常用的database，比如 MySQL, Oracle, PostgreSQL, 和MS-SQL Server。这些数据库都有JDBC Driver:&lt;br /&gt;&lt;br /&gt;Oracle JDBC Driver下载地址(下载前必须同意Oracle协议书)&lt;br /&gt;http://otn.oracle.com/software/htdocs/distlic.html?/software/tech/java/sqlj_jdbc/htdocs/jdbc9201.html&lt;br /&gt;&lt;br /&gt;MySQL JDBC Driver下载地址&lt;br /&gt;http://dev.mysql.com/downloads/connector/j/3.0.html&lt;br /&gt;&lt;br /&gt;PostgreSQL JDBC Driver下载地址&lt;br /&gt;http://jdbc.postgresql.org/download.html&lt;br /&gt;&lt;br /&gt;MS-SQL Server JDBC Driver下载地址&lt;br /&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=9f1874b6-f8e1-4bd6-947c-0fc5bf05bf71&amp;displaylang=en&lt;br /&gt;&lt;br /&gt;4、将Hibernate包和Ant包分别解压至c:\dev\下(此目录不重要，你可以换其它任何目录)。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;配置环境&lt;br /&gt;&lt;br /&gt;1、你需要添加一个新的环境变量: ANT_HOME，让它指向c:\dev\&lt;你的ANT包所在目录&gt;。并在PATH环境变量里添加%ANT_HOME%\bin。&lt;br /&gt;&lt;br /&gt;2、你需要添加一个新的环境变量: JAVA_HOME，让它指向你的j2sdk根目录。并在PATH环境变量里添加%JAVA_HOME%\bin。&lt;br /&gt;&lt;br /&gt;3、创建一个项目目录，比如c:\workspace\My1stHibernate。&lt;br /&gt;&lt;br /&gt;在项目目录下，另外创建三个目录: src, classes, lib。&lt;br /&gt;&lt;br /&gt;在lib目录下，创建两个目录: hibernate和db。&lt;br /&gt;&lt;br /&gt;这样你有了如下的文件结构:&lt;br /&gt;&lt;br /&gt;c:\workspace\My1stHibernate\&lt;br /&gt;c:\workspace\My1stHibernate\src&lt;br /&gt;c:\workspace\My1stHibernate\classes&lt;br /&gt;c:\workspace\My1stHibernate\lib&lt;br /&gt;c:\workspace\My1stHibernate\lib\hibernate&lt;br /&gt;c:\workspace\My1stHibernate\lib\db&lt;br /&gt;&lt;br /&gt;4、将c:\dev\&lt;你的Hibernate包所在目录&gt;\hibernate2.jar文件copy到c:\workspace\My1stHibernate\lib\hibernate下。&lt;br /&gt;&lt;br /&gt;将c:\dev\&lt;你的Hibernate包所在目录&gt;\lib\下的所有文件同样copy到c:\workspace\My1stHibernate\lib\hibernate下。&lt;br /&gt;&lt;br /&gt;将你的JDBC Driver文件(一般是一个jar文件)copy到c:\workspace\My1stHibernate\lib\db下。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;创建数据库&lt;br /&gt;&lt;br /&gt;1、用你最喜爱的database软件，创建一个hibernate_test的数据库。&lt;br /&gt;&lt;br /&gt;2、在此数据库下，新建一个table名为CUSTOMER&lt;br /&gt;&lt;br /&gt;CREATE TABLE CUSTOMER&lt;br /&gt;(&lt;br /&gt;    CID INTEGER NOT NULL PRIMARY KEY,&lt;br /&gt;    USERNAME VARCHAR(12) NOT NULL,&lt;br /&gt;    PASSWORD VARCHAR(12)&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;编写Java文件&lt;br /&gt;&lt;br /&gt;public class Customer {&lt;br /&gt;   &lt;br /&gt;    private int id;&lt;br /&gt;    private String username;&lt;br /&gt;    private String password;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    public int getId() {&lt;br /&gt;        return id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getPassword() {&lt;br /&gt;        return password;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public String getUsername() {&lt;br /&gt;        return username;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setId(int id) {&lt;br /&gt;        this.id = id;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setPassword(String password) {&lt;br /&gt;        this.password = password;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void setUsername(String username) {&lt;br /&gt;        this.username = username;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;将此类存为c:\workspace\My1stHibernate\src\Customer.java文件。&lt;br /&gt;&lt;br /&gt;编写Test类&lt;br /&gt;&lt;br /&gt;import net.sf.hibernate.*;&lt;br /&gt;import net.sf.hibernate.cfg.*;&lt;br /&gt;&lt;br /&gt;public class Test {&lt;br /&gt;&lt;br /&gt;    public static void main(String[] args) {&lt;br /&gt;&lt;br /&gt;        try {&lt;br /&gt;            SessionFactory sf =&lt;br /&gt;                new Configuration().configure().buildSessionFactory();&lt;br /&gt;            Session session = sf.openSession();&lt;br /&gt;            Transaction tx = session.beginTransaction();&lt;br /&gt;&lt;br /&gt;            for (int i = 0; i &lt; 200; i++) {&lt;br /&gt;                Customer customer = new Customer();&lt;br /&gt;                customer.setUsername("customer" + i);&lt;br /&gt;                customer.setPassword("customer");&lt;br /&gt;                session.save(customer);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            tx.commit();&lt;br /&gt;            session.close();&lt;br /&gt;&lt;br /&gt;        } catch (HibernateException e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;将此类存为c:\workspace\My1stHibernate\src\Test.java文件。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;创建Hibernate映射文件&lt;br /&gt;&lt;br /&gt;因为这里只有一个Class --- Customer 和一个Table --- CUSTOMER，你只需要建立一个映射文件--- Customer.hbm.xml，来对应Customer类和CUSTOMER表之间的关系。&lt;br /&gt;&lt;br /&gt;&lt;?xml version="1.0"?&gt;&lt;br /&gt;&lt;!DOCTYPE hibernate-mapping PUBLIC&lt;br /&gt;    "-//Hibernate/Hibernate Mapping DTD//EN"&lt;br /&gt;    "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd"&gt;&lt;br /&gt;&lt;br /&gt;&lt;hibernate-mapping&gt;&lt;br /&gt;    &lt;class name="Customer" table="CUSTOMER"&gt;&lt;br /&gt;        &lt;id name="id" column="CID"&gt;&lt;br /&gt;            &lt;generator class="increment" /&gt;&lt;br /&gt;        &lt;/id&gt;&lt;br /&gt;        &lt;property name="username" column="USERNAME" /&gt;&lt;br /&gt;        &lt;property name="password" column="PASSWORD" /&gt;&lt;br /&gt;    &lt;/class&gt;&lt;br /&gt;&lt;/hibernate-mapping&gt;&lt;br /&gt;&lt;br /&gt;把此文件存为c:\workspace\My1stHibernate\src\Customer.hbm.xml，和Customer.java放在同一目录下。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;编写Ant build.xml文件&lt;br /&gt;&lt;br /&gt;你不一定要知道这个build.xml的细节，其实Ant也不是Hibernate所必须的。这里用Ant是为了简化一些任务，比如: 编译、copy、运行，等。&lt;br /&gt;&lt;br /&gt;&lt;?xml version="1.0" ?&gt;&lt;br /&gt;&lt;br /&gt;&lt;project name="My1stHibernate" default="build" basedir="."&gt;&lt;br /&gt;&lt;br /&gt;    &lt;property name="base.dir" value="." /&gt;&lt;br /&gt;    &lt;property name="src.dir" value="src" /&gt;&lt;br /&gt;    &lt;property name="lib.dir" value="lib" /&gt;&lt;br /&gt;    &lt;property name="build.dir" value="classes" /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;path id="myclasspath"&gt;&lt;br /&gt;        &lt;fileset dir="${lib.dir}"&gt;&lt;br /&gt;            &lt;include name="**/*.jar" /&gt;&lt;br /&gt;        &lt;/fileset&gt;&lt;br /&gt;        &lt;pathelement location="${build.dir}" /&gt;&lt;br /&gt;    &lt;/path&gt;&lt;br /&gt;&lt;br /&gt;    &lt;target name="init"&gt;&lt;br /&gt;        &lt;mkdir dir="${build.dir}" /&gt;&lt;br /&gt;    &lt;/target&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;target name="build" depends="init" description="compile the source files"&gt;&lt;br /&gt;        &lt;javac classpathref="myclasspath" srcdir="${src.dir}" destdir="${build.dir}" /&gt;&lt;br /&gt;        &lt;copy todir="${build.dir}" &gt;&lt;br /&gt;            &lt;fileset dir="${src.dir}" &gt;&lt;br /&gt;                &lt;exclude name="**/*.java"/&gt;&lt;br /&gt;            &lt;/fileset&gt;&lt;br /&gt;        &lt;/copy&gt;&lt;br /&gt;    &lt;/target&gt;&lt;br /&gt;&lt;br /&gt;    &lt;target name="run" depends="build"&gt;&lt;br /&gt;        &lt;java classpathref="myclasspath" classname="Test" fork="true" /&gt;&lt;br /&gt;    &lt;/target&gt;&lt;br /&gt;&lt;br /&gt;    &lt;target name="clean"&gt;&lt;br /&gt;        &lt;delete includeEmptyDirs="true"&gt;&lt;br /&gt;            &lt;fileset dir="${build.dir}" /&gt;&lt;br /&gt;        &lt;/delete&gt;&lt;br /&gt;    &lt;/target&gt;&lt;br /&gt;&lt;br /&gt;&lt;/project&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;配置Hibernate描述文件&lt;br /&gt;&lt;br /&gt;Hibernate描述文件可以是一个properties或xml 文件，其中最重要的是定义数据库的连接。我这里列出的是一个XML格式的hibernate.cfg.xml描述文件。&lt;br /&gt;&lt;br /&gt;&lt;?xml version="1.0" encoding="utf-8" ?&gt;&lt;br /&gt;&lt;!DOCTYPE hibernate-configuration&lt;br /&gt;    PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN"&lt;br /&gt;    "http://hibernate.sourceforge.net/hibernate-configuration-2.0.dtd"&gt;&lt;br /&gt;&lt;br /&gt;&lt;hibernate-configuration&gt;&lt;br /&gt;   &lt;br /&gt;    &lt;session-factory name="java:/hibernate/HibernateFactory"&gt;&lt;br /&gt;       &lt;br /&gt;        &lt;property name="show_sql"&gt;true&lt;/property&gt;&lt;br /&gt;        &lt;property name="connection.driver_class"&gt;&lt;br /&gt;            oracle.jdbc.driver.OracleDriver &lt;!-- 这里是Oracle 9i的JDBC driver class名 --&gt;&lt;br /&gt;        &lt;/property&gt;&lt;br /&gt;        &lt;property name="connection.url"&gt;&lt;br /&gt;            jdbc:oracle:oci8:@hibernate_test &lt;!-- 这里是Oracle的hibernate_test数据库URL --&gt;&lt;br /&gt;        &lt;/property&gt;&lt;br /&gt;        &lt;property name="connection.username"&gt;&lt;br /&gt;            你的数据库用户名&lt;br /&gt;        &lt;/property&gt;&lt;br /&gt;        &lt;property name="connection.password"&gt;&lt;br /&gt;            你的数据库密码&lt;br /&gt;        &lt;/property&gt;&lt;br /&gt;        &lt;property name="dialect"&gt;&lt;br /&gt;            net.sf.hibernate.dialect.Oracle9Dialect &lt;!-- 这里是Oracle 9i的Dialect --&gt;&lt;br /&gt;        &lt;/property&gt;&lt;br /&gt;       &lt;br /&gt;        &lt;mapping resource="Customer.hbm.xml" /&gt; &lt;!-- 指定Customer的映射文件 --&gt;&lt;br /&gt;       &lt;br /&gt;    &lt;/session-factory&gt;&lt;br /&gt;   &lt;br /&gt;&lt;/hibernate-configuration&gt;&lt;br /&gt;&lt;br /&gt;如果你用的不是Oracle 9i，可到C:\dev\&lt;你的Hibernate包所在目录&gt;\src\hibernate.properties文件里找到你的数据库，然后替换以上相对应的值。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;开始运行&lt;br /&gt;&lt;br /&gt;到c:\workspace\My1stHibernate下，运行ant run。如果你严格依照以上步骤，应该看到&lt;br /&gt;&lt;br /&gt;run:&lt;br /&gt;        [java] log4j:WARN No appenders could be found for logger (net.sf.hibernate.cfg.Environment).&lt;br /&gt;        [java] log4j:WARN Please initialize the log4j system properly.&lt;br /&gt;        [java] Hibernate: insert into CUSTOMER (USERNAME, PASSWORD, CID) values (?, ?, ?)&lt;br /&gt;BUILD SUCCESSFUL&lt;br /&gt;&lt;br /&gt;到你的hibernate_test数据库看一下，在CUSTMOR表里新添了200条记录，但你没有写任何JDBC code。&lt;br /&gt;以后如果你要更换数据库，只需要改变hibernate.cfg.xml描述文件里相应的值即可。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;结论&lt;br /&gt;&lt;br /&gt;此文是一篇门槛极低的入门介绍。我给一个完全不懂Hibernate的朋友看，他用了不到30分钟就运行了他的第一个Hibernate程序，从此引起了他对Hibernate的兴趣。但读者必须认识到这只是一个开始，此文实乃窥Hibernate冰山一角上的一颗小冰晶。千里之行始于足下，你可以把此文当作迈向Hibernate大道的一个起点。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-1600286504138158485?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/1600286504138158485/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=1600286504138158485' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1600286504138158485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1600286504138158485'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/hibernate.html' title='Hibernate学习转载'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-4905772711050940258</id><published>2008-05-20T14:15:00.001+02:00</published><updated>2008-05-20T14:17:40.553+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>“不抛弃！不放弃！”</title><content type='html'>看完地震的报道，总是忍不住流泪，可是还是忍不住查找新的消息。&lt;br /&gt;远在异乡，不知能尽什么心意。&lt;br /&gt;希望我们的祖国更强大，祝福所有国人，都能共度难关。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-4905772711050940258?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/4905772711050940258/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=4905772711050940258' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4905772711050940258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4905772711050940258'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/blog-post_20.html' title='“不抛弃！不放弃！”'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-3954534103766396011</id><published>2008-05-19T21:02:00.001+02:00</published><updated>2008-05-19T21:02:55.449+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>版面管理器</title><content type='html'>版面管理器&lt;br /&gt;&lt;br /&gt;++ Swing读书笔记&lt;br /&gt;&lt;br /&gt;1-3:版面管理器(Layout Menager)&lt;br /&gt;         |BorderLayout&lt;br /&gt;         |FlowLayout&lt;br /&gt;         |GridLayout&lt;br /&gt;  AWT----|CardLayout&lt;br /&gt;         |GridBagLayout&lt;br /&gt;&lt;br /&gt;  Swing--|BoxLayout&lt;br /&gt;1-3-1:BorderLayout的使用:&lt;br /&gt;   BorderLayout的类层次结构图：&lt;br /&gt;       java.lang.Object&lt;br /&gt;        --java.awt.BorderLayout&lt;br /&gt;   构造函数：BorderLayout()建立一个没有间距的border layout&lt;br /&gt;             BorderLayout(int hgap,int vgap)建立一个组件间有间距的border layout&lt;br /&gt;  BorderLayout将版面划分为东、西、南、北、中&lt;br /&gt;例子：BorderLayoutDemo.java&lt;br /&gt;import java.awt.*;&lt;br /&gt;import java.awt.event.*;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;public class BorderLayoutDemo{&lt;br /&gt;   public BorderLayoutDemo(){&lt;br /&gt;     JFrame f=new JFrame();&lt;br /&gt;        Container contentPane=f.getContentPane();&lt;br /&gt;        contentPane.setLayout(new BorderLayout());       &lt;br /&gt;        contentPane.add(new JButton("EAST"),BorderLayout.EAST);&lt;br /&gt;        contentPane.add(new JButton("WEST"),BorderLayout.WEST);&lt;br /&gt;        contentPane.add(new JButton("SOUTH"),BorderLayout.SOUTH);&lt;br /&gt;        contentPane.add(new JButton("NORTH"),BorderLayout.NORTH);&lt;br /&gt;        contentPane.add(new JLabel("CENTER",JLabel.CENTER),BorderLayout.CENTER);&lt;br /&gt;        f.setTitle("BorderLayout");&lt;br /&gt;        f.pack();&lt;br /&gt;        f.setVisible(true);&lt;br /&gt;        /***read**/&lt;br /&gt;        /*处理关闭窗口的操作，若你没写这一段，就算你已经关闭窗口了，但程序并不会终止。&lt;br /&gt;         */&lt;br /&gt;        f.addWindowListener(&lt;br /&gt;           new WindowAdapter(){&lt;br /&gt;               public void windowClosing(WindowEvent e){&lt;br /&gt;                  System.exit(0);       &lt;br /&gt;               }       &lt;br /&gt;           }       &lt;br /&gt;        );&lt;br /&gt;       /***read**/&lt;br /&gt;   }       &lt;br /&gt;   public static void main(String[] args){&lt;br /&gt;     BorderLayoutDemo b=new BorderLayoutDemo();       &lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;   设置组件的间距，你可以使用有间距参数的BorderLayout构造函数，也可以利用BorderLayout的setHgap(int hgap)与&lt;br /&gt;   setVgap(int vgap)两个方法来达成。&lt;br /&gt;1-3-2:FlowLayout的使用：&lt;br /&gt;   FlowLayout的类层次结构图：&lt;br /&gt;       java.lang.Object&lt;br /&gt;        --java.awt.FlowLayout&lt;br /&gt;   构造函数：FlowLayout()建立一个新的Flow Layout，此FlowLayout默认值是居中对齐，组件彼此有5单位的水平与垂直间距。&lt;br /&gt;             FlowLayout(int align)建立一个新的Flow Layout，此FlowLayout可设置排列方式，组件彼此有5单位的水平与垂直&lt;br /&gt;                                 间距。&lt;br /&gt;             FlowLayout(int align,int hgap,int vgap)建立一个新的Flow Layout，此FlowLayout可设置排列方式与组件间距。&lt;br /&gt;FlowLayoutDemo.java&lt;br /&gt;import java.awt.*;&lt;br /&gt;import java.awt.event.*;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;public class FlowLayoutDemo{&lt;br /&gt;   public FlowLayoutDemo(){&lt;br /&gt;             JFrame f=new JFrame();&lt;br /&gt;                Container contentPane=f.getContentPane();&lt;br /&gt;                /*你可以使用有间距的FlowLayout构造函数，使FlowLayout的排列具有间距，并&lt;br /&gt;                 *并可利用排列方向参数来指定靠什么方向排列，FlowLayout共有五种排列方式，&lt;br /&gt;                 *依次是CENTER(默认值),LEFT,RIGHT,LEADING,TRAILING,若我们将下面程序第13&lt;br /&gt;                 *行改成contentPane.setLayout(new FlowLayout(FlowLayout.LEFT));                                                  &lt;br /&gt;                 */&lt;br /&gt;                contentPane.setLayout(new FlowLayout());                &lt;br /&gt;                contentPane.add(new JButton("first"));&lt;br /&gt;                contentPane.add(new JButton("second"));&lt;br /&gt;                contentPane.add(new JButton("third"));&lt;br /&gt;                contentPane.add(new JButton("fourth"));&lt;br /&gt;                contentPane.add(new JButton("fifth"));&lt;br /&gt;                contentPane.add(new JButton("Last"));&lt;br /&gt;                &lt;br /&gt;                f.setTitle("FlowLayout");&lt;br /&gt;                //f.pack();//必须将f.pach()去掉，否则setSize功能将没有作用&lt;br /&gt;                f.setSize(400,220);&lt;br /&gt;                f.setVisible(true);&lt;br /&gt;        f.addWindowListener(&lt;br /&gt;           new WindowAdapter(){&lt;br /&gt;               public void windowClosing(WindowEvent e){&lt;br /&gt;                  System.exit(0);       &lt;br /&gt;               }       &lt;br /&gt;           }       &lt;br /&gt;        );&lt;br /&gt;   }&lt;br /&gt;   public static void main(String[] args){&lt;br /&gt;     FlowLayoutDemo b=new FlowLayoutDemo();       &lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;1-3-3:GridLayout的使用：&lt;br /&gt;       GridLayout的类层次结构图：&lt;br /&gt;       java.lang.Object&lt;br /&gt;        --java.awt.GridLayout&lt;br /&gt;    GridLayout比FlowLayout多了行和列的设置，也就是说你要先设置GridLayout共有几行几列，就如同二维平面一般，然后你加&lt;br /&gt;进去的组件会先填第一行的格子，然后再从第二行开始填，依此类扒，就像是一个个的格子一般。而且GridLayout会将所填进去组&lt;br /&gt;件的大小设为一样。&lt;br /&gt;构造函数：GridLayout()建立一个新的GridLayout，默认值是1行1列。&lt;br /&gt;          GridLayout(int rows,int cols)建立一个几行几列的GridLayout.&lt;br /&gt;          GridLayout(int rows,int cols, int hgap,int vgap)建立一个几行几列的GridLayout,并设置组件的间距。&lt;br /&gt;例子：GridLayoutDemo.java&lt;br /&gt;&lt;br /&gt;import java.awt.*;&lt;br /&gt;import java.awt.event.*;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;public class CardLayoutDemo implements ActionListener{&lt;br /&gt;  JPanel p1,p2,p3,p4;&lt;br /&gt;  int i=1;&lt;br /&gt;  JFrame f;&lt;br /&gt;  public CardLayoutDemo(){&lt;br /&gt;    f=new JFrame();//当做top-level组件&lt;br /&gt;      Container contentPane=f.getContentPane();&lt;br /&gt;      contentPane.setLayout(new GridLayout(2,1));&lt;br /&gt;      &lt;br /&gt;      p1=new JPanel();&lt;br /&gt;      Button b=new Button("Change Card");&lt;br /&gt;      b.addActionListener(this);//当按下"Change Card"时，进行事件监听，将会有系统操作产生。&lt;br /&gt;      p1.add(b);                //处理操作在52-64行.&lt;br /&gt;      contentPane.add(p1);&lt;br /&gt;      &lt;br /&gt;      p2=new JPanel();&lt;br /&gt;      p2.setLayout(new FlowLayout());&lt;br /&gt;      p2.add(new JButton("first"));&lt;br /&gt;      p2.add(new JButton("second"));&lt;br /&gt;      p2.add(new JButton("third"));&lt;br /&gt;      &lt;br /&gt;      p3=new JPanel();&lt;br /&gt;      p3.setLayout(new GridLayout(3,1));&lt;br /&gt;      p3.add(new JButton("fourth"));&lt;br /&gt;      p3.add(new JButton("fifth"));&lt;br /&gt;      p3.add(new JButton("This is the last button"));&lt;br /&gt;      &lt;br /&gt;      p4=new JPanel();&lt;br /&gt;      p4.setLayout(new CardLayout());&lt;br /&gt;      p4.add("one",p2);&lt;br /&gt;      p4.add("two",p3);&lt;br /&gt;      /*要显示CardLayout的卡片，除了用show(Container parent,String name)这个方法外&lt;br /&gt;       *，也可试试first(Container),next(Container),previous(Container),last(Container)这&lt;br /&gt;       *四个方法，一样可以达到显示效果。&lt;br /&gt;       */&lt;br /&gt;      ((CardLayout)p4.getLayout()).show(p4,"one");&lt;br /&gt;      &lt;br /&gt;      contentPane.add(p4);&lt;br /&gt;      &lt;br /&gt;      f.setTitle("CardLayout");&lt;br /&gt;      f.pack();&lt;br /&gt;      f.setVisible(true);&lt;br /&gt;      &lt;br /&gt;      f.addWindowListener(&lt;br /&gt;           new WindowAdapter(){&lt;br /&gt;               public void windowClosing(WindowEvent e){&lt;br /&gt;                  System.exit(0);       &lt;br /&gt;               }       &lt;br /&gt;           }       &lt;br /&gt;      );&lt;br /&gt;      &lt;br /&gt;  }&lt;br /&gt;  public void actionPerformed(ActionEvent event){&lt;br /&gt;     switch(i){&lt;br /&gt;        case 1:&lt;br /&gt;             ((CardLayout)p4.getLayout()).show(p4,"two");&lt;br /&gt;             break;&lt;br /&gt;        case 2:&lt;br /&gt;             ((CardLayout)p4.getLayout()).show(p4,"one");&lt;br /&gt;             break;&lt;br /&gt;     }&lt;br /&gt;     i++;&lt;br /&gt;     if (i==3) i=1;&lt;br /&gt;     f.validate();&lt;br /&gt;  }&lt;br /&gt;  public static void main(String[] args){&lt;br /&gt;           new CardLayoutDemo();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;1-3-5:GridBagLayout的使用：是java中最有弹性但也是最复杂的一种版面管理器。它只有一种构造函数，但必须配合&lt;br /&gt;                           GridBagConstraints才能达到设置的效果。&lt;br /&gt;    GridBagLayout的类层次结构图：&lt;br /&gt;    java.lang.Object&lt;br /&gt;     --java.awt.GridBagLayout&lt;br /&gt;构造函数：&lt;br /&gt;    GirdBagLayout()建立一个新的GridBagLayout管理器。&lt;br /&gt;    GridBagConstraints()建立一个新的GridBagConstraints对象。&lt;br /&gt;    GridBagConstraints(int gridx,int gridy,int gridwidth,int gridheight,double weightx,double weighty,&lt;br /&gt;                       int anchor,int fill, Insets insets,int ipadx,int ipady)建立一个新的GridBagConstraints对象&lt;br /&gt;                      ，并指定其参数的值。&lt;br /&gt;参数说明:&lt;br /&gt;gridx,gridy:设置组件的位置，gridx设置为GridBagConstraints.RELATIVE代表此组件位于之前所加入组件的右边。&lt;br /&gt;             若将gridy设置为GridBagConstraints.RELATIVE代表此组件位于以前所加入组件的下面。建议定义出&lt;br /&gt;             gridx,gridy的位置，以便以后维护程序。表示放在几行几列，gridx=0,gridy=0时放在0行0列。&lt;br /&gt;&lt;br /&gt;gridwidth,gridheight:用来设置组件所占的单位长度与高度，默认值皆为1。你可以使用GridBagConstraints.REMAINDER常&lt;br /&gt;                      量，代表此组件为此行或此列的最后一个组件，而且会占据所有剩余的空间。&lt;br /&gt;&lt;br /&gt;weightx,weighty:用来设置窗口变大时，各组件跟着变大的比例，当数字越大，表示组件能得到更多的空间，默认值皆为0。&lt;br /&gt;anchor:         当组件空间大于组件本身时，要将组件置于何处，有CENTER(默认值)、NORTH、NORTHEAST、EAST、SOUTHEAST、&lt;br /&gt;                 WEST、NORTHWEST可供选择。&lt;br /&gt;insets:设置组件之间彼此的间距，它有四个参数，分别是上，左，下，右，默认为(0,0,0,0).&lt;br /&gt;ipadx,ipady:设置组件内的间距，默认值为0。              &lt;br /&gt;   我们以前提过，GridBagLayout里的各种设置都必须通过GridBagConstraints,因此当我们将GridBagConstraints的参数都设置&lt;br /&gt;好了之后，必须new一个GridBagConstraints的对象出来，以便GridBagLayout使用。&lt;br /&gt;例子：&lt;br /&gt;GridBagLayoutDemo.java&lt;br /&gt;&lt;br /&gt;import java.awt.*;&lt;br /&gt;import java.awt.event.*;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;public class GridBagLayoutDemo{&lt;br /&gt;   public GridBagLayoutDemo(){&lt;br /&gt;             JButton b;&lt;br /&gt;             GridBagConstraints c;&lt;br /&gt;             int gridx,gridy,gridwidth,gridheight,anchor,fill,ipadx,ipady;&lt;br /&gt;             double weightx,weighty;&lt;br /&gt;             Insets inset;&lt;br /&gt;             &lt;br /&gt;             JFrame f=new JFrame();&lt;br /&gt;             &lt;br /&gt;             GridBagLayout gridbag=new GridBagLayout();&lt;br /&gt;               Container contentPane=f.getContentPane();&lt;br /&gt;               contentPane.setLayout(gridbag);&lt;br /&gt;               &lt;br /&gt;               b=new JButton("first");&lt;br /&gt;               gridx=0;&lt;br /&gt;               gridy=0;&lt;br /&gt;               gridwidth=1;&lt;br /&gt;               gridheight=1;&lt;br /&gt;               weightx=10;&lt;br /&gt;               weighty=1;&lt;br /&gt;               anchor=GridBagConstraints.CENTER;&lt;br /&gt;               fill=GridBagConstraints.HORIZONTAL;&lt;br /&gt;               inset=new Insets(0,0,0,0);&lt;br /&gt;               ipadx=0;&lt;br /&gt;               ipady=0;&lt;br /&gt;               c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,&lt;br /&gt;                  fill,inset,ipadx,ipady);&lt;br /&gt;               gridbag.setConstraints(b,c);&lt;br /&gt;               contentPane.add(b);&lt;br /&gt;               &lt;br /&gt;               &lt;br /&gt;               b=new JButton("second");&lt;br /&gt;               gridx=1;&lt;br /&gt;               gridy=0;&lt;br /&gt;               gridwidth=2;&lt;br /&gt;               gridheight=1;&lt;br /&gt;               weightx=1;&lt;br /&gt;               weighty=1;&lt;br /&gt;               anchor=GridBagConstraints.CENTER;&lt;br /&gt;               fill=GridBagConstraints.HORIZONTAL;&lt;br /&gt;               inset=new Insets(0,0,0,0);&lt;br /&gt;               ipadx=50;&lt;br /&gt;               ipady=0;&lt;br /&gt;               c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,&lt;br /&gt;                  fill,inset,ipadx,ipady);&lt;br /&gt;               gridbag.setConstraints(b,c);&lt;br /&gt;               contentPane.add(b);&lt;br /&gt;&lt;br /&gt;               b=new JButton("third");&lt;br /&gt;               gridx=0;&lt;br /&gt;               gridy=1;&lt;br /&gt;               gridwidth=1;&lt;br /&gt;               gridheight=1;&lt;br /&gt;               weightx=1;&lt;br /&gt;               weighty=1;&lt;br /&gt;               anchor=GridBagConstraints.CENTER;&lt;br /&gt;               fill=GridBagConstraints.HORIZONTAL;&lt;br /&gt;               inset=new Insets(0,0,0,0);&lt;br /&gt;               ipadx=0;&lt;br /&gt;               ipady=50;&lt;br /&gt;               c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,&lt;br /&gt;                  fill,inset,ipadx,ipady);&lt;br /&gt;               gridbag.setConstraints(b,c);&lt;br /&gt;               contentPane.add(b);&lt;br /&gt;               &lt;br /&gt;               b=new JButton("fourth");&lt;br /&gt;               gridx=1;&lt;br /&gt;               gridy=1;&lt;br /&gt;               gridwidth=1;&lt;br /&gt;               gridheight=1;&lt;br /&gt;               weightx=1;&lt;br /&gt;               weighty=1;&lt;br /&gt;               anchor=GridBagConstraints.CENTER;&lt;br /&gt;               fill=GridBagConstraints.HORIZONTAL;&lt;br /&gt;               inset=new Insets(0,0,0,0);&lt;br /&gt;               ipadx=0;&lt;br /&gt;               ipady=0;&lt;br /&gt;               c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,&lt;br /&gt;                  fill,inset,ipadx,ipady);&lt;br /&gt;               gridbag.setConstraints(b,c);&lt;br /&gt;               contentPane.add(b);&lt;br /&gt;&lt;br /&gt;               b=new JButton("This is the last button");&lt;br /&gt;               gridx=2;&lt;br /&gt;               gridy=1;&lt;br /&gt;               gridwidth=1;&lt;br /&gt;               gridheight=2;&lt;br /&gt;               weightx=1;&lt;br /&gt;               weighty=1;&lt;br /&gt;               anchor=GridBagConstraints.CENTER;&lt;br /&gt;               fill=GridBagConstraints.HORIZONTAL;&lt;br /&gt;               inset=new Insets(0,0,0,0);&lt;br /&gt;               ipadx=0;&lt;br /&gt;               ipady=50;&lt;br /&gt;               c=new GridBagConstraints(gridx,gridy,gridwidth,gridheight,weightx,weighty,anchor,&lt;br /&gt;                  fill,inset,ipadx,ipady);&lt;br /&gt;               gridbag.setConstraints(b,c);&lt;br /&gt;               contentPane.add(b);&lt;br /&gt;&lt;br /&gt;               f.setTitle("GridBagLayout");&lt;br /&gt;               f.pack();&lt;br /&gt;               f.setVisible(true);&lt;br /&gt;      f.addWindowListener(&lt;br /&gt;           new WindowAdapter(){&lt;br /&gt;               public void windowClosing(WindowEvent e){&lt;br /&gt;                  System.exit(0);       &lt;br /&gt;               }       &lt;br /&gt;           }       &lt;br /&gt;      );              &lt;br /&gt;   }&lt;br /&gt;   public static void main(String[] args){&lt;br /&gt;             new GridBagLayoutDemo();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;1-3-5:BoxLayout的使用：&lt;br /&gt;    BoxLayout的类层次结构图：&lt;br /&gt;    java.lang.Object&lt;br /&gt;     --java.awt.BoxLayout&lt;br /&gt;&lt;br /&gt;   BoxLayout提供了两个常数X_AXIS,Y_AXIS来表示水平或垂直排列。若放进去的组件不等高，则系统将会使所有的组件与最高组件&lt;br /&gt;等高，还有，若你将组件都摆在同一行时，系统不因组件宽度在于Container的宽度，而使组件自动摆在下一行，你必须自行处理换&lt;br /&gt;行的操作。&lt;br /&gt;构造函数：&lt;br /&gt;     BoxLayout(Container targe,int axis)建立一个水平或垂直的BoxLayout.&lt;br /&gt;   讲到BoxLayout，我们就不得不提到Box这个Container,Box这个Container默认的Layout为BoxLayout,而它只能使用这个Layout,&lt;br /&gt;否则编译时会有Error产生，如同前面所讲的，BoxLayout是以水平或垂直方式排列，因此，当我们要产生一个Box Container时，&lt;br /&gt;就必须指定它的排列方式，下面为Box的构造函数：&lt;br /&gt;  Box(int axis) 建立一个Box Container,并指定组件的排列方式是水平或垂直。&lt;br /&gt;  上面的axis参数，我们可以使用BoxLayout.X_AXIS或BoxLayout.Y_AXIS来指定。或是利用Box类所提供的两个方法：&lt;br /&gt;createHorizontalBox()与createVerticalBox(),来建立BoxContainer.&lt;br /&gt;  Box类提供4种透明的组件来做更方便的版面管理。分别是glue、strut、rigid、filler:&lt;br /&gt;  下面以两个相连的按钮当例子，起始状态如下：&lt;br /&gt;  B1.java&lt;br /&gt;1  import java.awt.*;&lt;br /&gt;2  import java.awt.event.*;&lt;br /&gt;3  import javax.swing.*;&lt;br /&gt;4  public class B1{&lt;br /&gt;5    public B1(){&lt;br /&gt;6        JFrame f=new JFrame();&lt;br /&gt;      &lt;br /&gt;7          Container contentPane=f.getContentPane();&lt;br /&gt;8          Box baseBox=Box.createHorizontalBox();&lt;br /&gt;9          contentPane.add(baseBox);&lt;br /&gt;10         baseBox.add(new JButton("A"));&lt;br /&gt;11         baseBox.add(new JButton("B"));&lt;br /&gt;      &lt;br /&gt;12         f.setTitle("BoxLayout");&lt;br /&gt;13         f.setSize(new Dimension(200,50));&lt;br /&gt;14         f.setVisible(true);&lt;br /&gt;      &lt;br /&gt;15         f.addWindowListener(&lt;br /&gt;16              new WindowAdapter(){&lt;br /&gt;17                  public void windowClosing(WindowEvent e){&lt;br /&gt;18                     System.exit(0);       &lt;br /&gt;19                  }       &lt;br /&gt;20              }       &lt;br /&gt;21         );&lt;br /&gt;             &lt;br /&gt;22     }       &lt;br /&gt;  public static void main(String[] args){&lt;br /&gt;           B1 b=new B1();&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;Glue:当glue插入在两组件间时，它会将两组件挤到最左与最右（或最上与最下），透明的glue将会占满整个中间的空间。&lt;br /&gt;例：&lt;br /&gt;   在10与11行间加入下面一行程序：&lt;br /&gt;    baseBox.add(Box.createHorizontalGlue());&lt;br /&gt;Strut:当你不想将A与B按钮挤到最旁边时，你可以使用Strut组件，来设置所需要的大小，但仅能限定一维的大小，例如限定&lt;br /&gt;     水平或垂直高度。&lt;br /&gt;  例：在10与11行间加入下面一行程序：&lt;br /&gt;     baseBox.add(Box.createHorizontalStrut(50));//A,B之间间隔50个像素。&lt;br /&gt;Rigid:这个透明组件跟Strut很像，但它可以设置二维的限制，也就是可以设置水平与垂直的限制宽度。&lt;br /&gt;  例：在10与11行间加入下面一行程序：&lt;br /&gt;     baseBox.add(Box.createRigidArea(new Dimension(50,50)));&lt;br /&gt;    为了将Rigid的高度功能显示出来，因此以pack()方法代替setSize()方法，11行替换为：f.pack();&lt;br /&gt;    若我们将高度再拉长，例如baseBox.add(Box.createRigidArea(new Dimension(50,50)));的Dimension改成(50,100)，则两&lt;br /&gt;    组件的上下空白将会增大，因为透明的Rigid组件高度增高了。&lt;br /&gt;Filler:Filler是Box的inner class,它的功能跟Rigid很像，都可以指定长宽的大小限制，且Filler可以指定最大、较佳、最小的长&lt;br /&gt;      宽大小，以下是Filler的构造函数：&lt;br /&gt;     Box.Filler(Dimension min,Dimension pref Dimension max)建立一个指定大小的Filler对象。&lt;br /&gt;     参数min表示最小的显示区域大小，如同上面的例子所示，若所设置最小区域的高度大于按钮A与B的高度，则按钮A与B的上方&lt;br /&gt;     与下方将有空白出现。&lt;br /&gt;   pref表示较佳的显示区域大小。max表示最大的显示区域大小。&lt;br /&gt;    例：在10与11行间加入下面一行程序：&lt;br /&gt;     baseBox.add(new Box.Filler(new Dimension(50,50),&lt;br /&gt;                                new Dimension(100,50),&lt;br /&gt;                                new Dimension(200,50)));&lt;br /&gt;   Box类所提供的方法：&lt;br /&gt;   Static Component       createGlue()构造一个Glue组件可向水平与垂直方向延伸&lt;br /&gt;   Static Box             createHorizontalBox()构造一个水平排列的Box组件&lt;br /&gt;   Static Component       createHorizontalGlue()构造一个水平的Glue组件&lt;br /&gt;   Static Component       createHorizontalStrut(int width)构造一个水平的Strut组件&lt;br /&gt;   Static Component       createRigidArea(Dimension d)构造一个Rigid组件&lt;br /&gt;   Static Box             createVerticalBox()构造一个垂直排列的Box组件&lt;br /&gt;   Static Component       createVerticalGlue()构造一个垂直的Glue组件&lt;br /&gt;   Static Component       createVerticalStrut(int height)构造一个垂直的Strut组件&lt;br /&gt;   AccessibleContext      getAccessibleContext()取得与JComponent相关边的AccessibleContext&lt;br /&gt;   Void                   setLayout(LayoutManager l)丢出AWTError,因为Box只能使用BoxLayout&lt;br /&gt;例子：BoxLayoutDemo.java&lt;br /&gt;import java.awt.*;&lt;br /&gt;import java.awt.event.*;&lt;br /&gt;import javax.swing.*;&lt;br /&gt;public class BoxLayoutDemo{&lt;br /&gt;  public BoxLayoutDemo(){&lt;br /&gt;    JFrame f=new JFrame();&lt;br /&gt;      &lt;br /&gt;      Container contentPane=f.getContentPane();&lt;br /&gt;      Box baseBox=Box.createHorizontalBox();//先产生水平排列方式的Box组件，当作基底容器(BaseBox)&lt;br /&gt;      contentPane.add(baseBox);&lt;br /&gt;      &lt;br /&gt;      /*产生垂直排列方式的Box组件来安置第一与第三个按钮&lt;br /&gt;       */&lt;br /&gt;      Box vBox=Box.createVerticalBox();&lt;br /&gt;      JButton b=new JButton("first");&lt;br /&gt;      vBox.add(b);&lt;br /&gt;      b=new JButton("third");&lt;br /&gt;      b.setMaximumSize(new Dimension(100,150));&lt;br /&gt;      vBox.add(b);&lt;br /&gt;      baseBox.add(vBox);&lt;br /&gt;      &lt;br /&gt;     /*产生垂直排列方式的Box组件来安置第二与另一个水平排列方式的Box组件&lt;br /&gt;      */  &lt;br /&gt;      Box vBox1=Box.createVerticalBox();&lt;br /&gt;      baseBox.add(vBox1);&lt;br /&gt;      b=new JButton("second");&lt;br /&gt;      b.setAlignmentX(Component.CENTER_ALIGNMENT);&lt;br /&gt;      b.setMaximumSize(new Dimension(300,50));&lt;br /&gt;      vBox1.add(b);&lt;br /&gt;      &lt;br /&gt;      Box hBox=Box.createHorizontalBox();&lt;br /&gt;      vBox1.add(hBox);&lt;br /&gt;        &lt;br /&gt;&lt;br /&gt;     /*将第四与最后一个按钮加入水平排列方式的Box组件中&lt;br /&gt;      */&lt;br /&gt;      Box vBox2=Box.createVerticalBox();&lt;br /&gt;          vBox2.add(Box.createVerticalStrut(50));&lt;br /&gt;          vBox2.add(new JButton("fourth"));&lt;br /&gt;          vBox2.add(Box.createVerticalStrut(50));&lt;br /&gt;          hBox.add(vBox2);&lt;br /&gt;         &lt;br /&gt;          Box vBox3=Box.createVerticalBox();&lt;br /&gt;              vBox3.add(Box.createVerticalGlue());&lt;br /&gt;              vBox3.add(new JButton("THis is the last button"));&lt;br /&gt;              hBox.add(vBox3);&lt;br /&gt;            &lt;br /&gt;      f.setTitle("BoxLayout");&lt;br /&gt;      f.pack();&lt;br /&gt;      f.setVisible(true);&lt;br /&gt;      &lt;br /&gt;      f.addWindowListener(&lt;br /&gt;           new WindowAdapter(){&lt;br /&gt;               public void windowClosing(WindowEvent e){&lt;br /&gt;                  System.exit(0);       &lt;br /&gt;               }       &lt;br /&gt;           }       &lt;br /&gt;      );&lt;br /&gt;             &lt;br /&gt;  }       &lt;br /&gt;  public static void main(String[] args){&lt;br /&gt;           BoxLayoutDemo  b=new BoxLayoutDemo();&lt;br /&gt;  }&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-3954534103766396011?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/3954534103766396011/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=3954534103766396011' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/3954534103766396011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/3954534103766396011'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/blog-post_19.html' title='版面管理器'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-1276504645098130890</id><published>2008-05-16T16:33:00.002+02:00</published><updated>2008-05-16T16:37:18.552+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>Deutschland</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.senpaul.cn/attachs/date_200707/85311d6478f17ef141a95f24bdae3b1e.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 400px;" src="http://www.senpaul.cn/attachs/date_200707/85311d6478f17ef141a95f24bdae3b1e.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;无意中淘到的好物～～～&lt;br /&gt;&lt;br /&gt;歌名叫Deutschland，翻过来就是德国的意思。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Deutschland(德国)&lt;br /&gt;演唱：Die Prizen (王子组合)&lt;br /&gt;&lt;br /&gt;Deutsch, deutsch, deutsch, deutsch, deutsch, deutsch&lt;br /&gt;德语，德意志，德国人，……………&lt;br /&gt;&lt;br /&gt;Natürlich hat ein Deutscher "Wetten, dass ... ?" erfunden&lt;br /&gt;肯定只有德国人才能说出这样的话：“我说的是不会错的，打个赌好吗？”&lt;br /&gt;&lt;br /&gt;Vielen Dank für die schoenen Stunden&lt;br /&gt;非常感谢，我们过的非常愉快！&lt;br /&gt;&lt;br /&gt;Wir sind die freundlichsten Kunden auf dieser Welt&lt;br /&gt;我们是这个世界上最好的顾客&lt;br /&gt;&lt;br /&gt;Wir sind bescheiden, wir haben Geld&lt;br /&gt;我们谦虚并富有&lt;br /&gt;&lt;br /&gt;Die Allerbesten in jedem Sport&lt;br /&gt;我们有最好的运动员&lt;br /&gt;&lt;br /&gt;Die Steuern hier sind Weltrekord&lt;br /&gt;德国的捐税世界闻名&lt;br /&gt;&lt;br /&gt;Bereisen Sie Deutschland und bleiben Sie hier&lt;br /&gt;欢迎来德国旅行和逗留&lt;br /&gt;&lt;br /&gt;Auf diese Art von Besuchern warten wir&lt;br /&gt;我们期待您的光临&lt;br /&gt;&lt;br /&gt;Es kann jeder hier wohnen, dem es gefaellt&lt;br /&gt;只要高兴，谁都可以来德国住住&lt;br /&gt;&lt;br /&gt;Wir sind das freundlichste Volk auf dieser Welt&lt;br /&gt;我们是世界上最友善的民族&lt;br /&gt;&lt;br /&gt;Deutsch, deutsch, deutsch, deutsch&lt;br /&gt;德语，德意志，德国人，&lt;br /&gt;&lt;br /&gt;Nur eine Kleinigkeit ist hier verkehrt&lt;br /&gt;要澄清的一点小误会是，&lt;br /&gt;&lt;br /&gt;Und zwar, dass Schumacher keinen Mercedes faehrt&lt;br /&gt;舒马赫开的并不是梅塞德斯车&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;&lt;br /&gt;Das alles sind wir&lt;br /&gt;我们就是德国人&lt;br /&gt;&lt;br /&gt;Das gibt es nirgendwo anders&lt;br /&gt;这里一点都不怪&lt;br /&gt;&lt;br /&gt;Nur hier, nur hier&lt;br /&gt;德国，德国&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;&lt;br /&gt;Das sind alles wir&lt;br /&gt;我们就是德国人&lt;br /&gt;&lt;br /&gt;Wir leben und wir sterben hier&lt;br /&gt;我们在这里生活和死亡&lt;br /&gt;&lt;br /&gt;Deutsch, deutsch, deutsch, deutsch&lt;br /&gt;德语，德意志，德国人，……………&lt;br /&gt;&lt;br /&gt;Deutsch, deutsch, deutsch, deutsch&lt;br /&gt;德语，德意志，德国人，……………&lt;br /&gt;&lt;br /&gt;Es bilden sich viele was auf Deutschland ein&lt;br /&gt;都说德国人很自负&lt;br /&gt;&lt;br /&gt;Und mancher findet es geil, ein Arschloch zu sein&lt;br /&gt;不少德国人都认为不要脸的家伙就是好色之徒&lt;br /&gt;&lt;br /&gt;Es gibt Manchen, der sich gern über Kanacken beschwert&lt;br /&gt;有些人喜欢为了鸡毛蒜皮的小事而抱怨&lt;br /&gt;&lt;br /&gt;Und zum Ficken jedes Jahr nach Thailand faehrt&lt;br /&gt;有些人为了追求刺激每年都要去泰国&lt;br /&gt;&lt;br /&gt;Wir lieben unsere Autos mehr als unsere Frauen&lt;br /&gt;我们爱女人但更爱汽车&lt;br /&gt;&lt;br /&gt;Den deutschen Autos koennen wir vertrauen&lt;br /&gt;我们信赖德国车&lt;br /&gt;&lt;br /&gt;Gott hat die Erde nur einmal geküsst&lt;br /&gt;上帝偏爱德国，即使在他唯一一次亲吻地球时，&lt;br /&gt;&lt;br /&gt;Genau an dieser Stelle, wo jetzt Deutschland ist&lt;br /&gt;接受上帝之吻的地方就是现在的德国&lt;br /&gt;&lt;br /&gt;Wir sind überall die Besten natürlich auch im Bett&lt;br /&gt;我们什么都要做到最好，当然**也不例外&lt;br /&gt;&lt;br /&gt;Und zu Hunden und Katzen besonders nett&lt;br /&gt;猫和狗深受我们的喜爱&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;&lt;br /&gt;Das alles sind wir&lt;br /&gt;我们就是德国人&lt;br /&gt;&lt;br /&gt;Das gibt es nirgendwo anders&lt;br /&gt;这里一点都不怪&lt;br /&gt;&lt;br /&gt;Nur hier, nur hier (zwo, drei, vier)&lt;br /&gt;德国，德国&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;&lt;br /&gt;Das sind alles wir&lt;br /&gt;我们就是德国人&lt;br /&gt;&lt;br /&gt;Wir leben und wir sterben hier&lt;br /&gt;我们在这里生活和死亡&lt;br /&gt;&lt;br /&gt;Wir sind besonders gut in und auf die Fressehauen&lt;br /&gt;我们是出色的战士&lt;br /&gt;&lt;br /&gt;Auch im Feuerregen kann man uns vertrauen&lt;br /&gt;即使在枪林弹雨中人们也能信任我们&lt;br /&gt;&lt;br /&gt;Wir stehen auf Ordnung und Sauberkeit&lt;br /&gt;我们讲条里和喜欢整洁&lt;br /&gt;&lt;br /&gt;Wir sind jederzeit für'n Krieg bereit&lt;br /&gt;我们枕戈待旦&lt;br /&gt;&lt;br /&gt;Schon Gross an die Welt zieht es endlich ein&lt;br /&gt;总有一天大德意志会重现世界&lt;br /&gt;&lt;br /&gt;Wir koennen stolz auf Deutschland sein&lt;br /&gt;我们能为德国而骄傲&lt;br /&gt;&lt;br /&gt;Schwein, Schwein, Schwein, Schwein&lt;br /&gt;可怜虫，可怜虫，可怜虫，可怜虫&lt;br /&gt;&lt;br /&gt;Schwein, Schwein, Schwein, Schwein&lt;br /&gt;可怜虫，可怜虫，可怜虫，可怜虫&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;&lt;br /&gt;Das alles sind wir&lt;br /&gt;我们就是德国人&lt;br /&gt;&lt;br /&gt;Das gibt es nirgendwo anders&lt;br /&gt;这里一点都不怪&lt;br /&gt;&lt;br /&gt;Nur hier, nur hier&lt;br /&gt;德国，德国&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;&lt;br /&gt;Das sind alles wir&lt;br /&gt;我们就是德国人&lt;br /&gt;&lt;br /&gt;Wir leben und wir sterben hier&lt;br /&gt;我们在这里生活和死亡&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;&lt;br /&gt;Das alles sind wir&lt;br /&gt;我们就是德国人&lt;br /&gt;&lt;br /&gt;Das gibt es nirgendwo anders&lt;br /&gt;这里一点都不怪&lt;br /&gt;&lt;br /&gt;Nur hier, nur hier&lt;br /&gt;德国，德国&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;&lt;br /&gt;Das sind alles wir&lt;br /&gt;我们就是德国人&lt;br /&gt;&lt;br /&gt;Wir leben und wir sterben hier&lt;br /&gt;我们在这里生活和死亡&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;另一个版本的歌词，附解说&lt;br /&gt;&lt;br /&gt;Deutsch, deutsch, deutsch, deutsch, deutsch, deutsch&lt;br /&gt;德语，德意志，德国人，……………&lt;br /&gt;&lt;br /&gt;Natürlich hat ein Deutscher ``Wetten, dass ... ?`` erfunden&lt;br /&gt;肯定只有德国人才能发明“打赌吧……”这种节目&lt;br /&gt;Vielen Dank für die sch鰊en Stunden&lt;br /&gt;非常感谢，让我们度过的愉快时光！&lt;br /&gt;Wir sind die freundlichsten Kunden auf dieser Welt&lt;br /&gt;我们是这个世界上最友好的顾客&lt;br /&gt;Wir sind bescheiden, wir haben Geld&lt;br /&gt;我们谦虚并富有&lt;br /&gt;Die Allerbesten in jedem Sport （去死吧！德国的足球没资格在这里叫嚣）（――b 这个…这些紫字可不是橙子我写的…&lt;br /&gt;我们有最好的运动员&lt;br /&gt;Die Steuern hier sind Weltrekord&lt;br /&gt;德国的捐税世界闻名&lt;br /&gt;Bereisen Sie Deutschland und bleiben Sie hier&lt;br /&gt;欢迎来德国旅行和生活&lt;br /&gt;Auf diese Art von Besuchern warten wir&lt;br /&gt;我们期待您的光临&lt;br /&gt;Es kann jeder hier wohnen, dem es gef鋖lt&lt;br /&gt;只要高兴，谁都可以来德国住住&lt;br /&gt;Wir sind das freundlichste Volk auf dieser Welt&lt;br /&gt;我们是世界上最友善的民族&lt;br /&gt;&lt;br /&gt;Deutsch, deutsch, deutsch, deutsch&lt;br /&gt;德语，德意志，德国人，&lt;br /&gt;&lt;br /&gt;Nur eine Kleinigkeit ist hier verkehrt&lt;br /&gt;要澄清的一点小误会是，&lt;br /&gt;Und zwar, dass Schumacher keinen Mercedes f鋒rt&lt;br /&gt;舒马赫开的并不是梅塞德斯车&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;Das alles sind wir&lt;br /&gt;我们就是德国人&lt;br /&gt;Das gibt es nirgendwo anders&lt;br /&gt;这里一点都不怪&lt;br /&gt;Nur hier, nur hier&lt;br /&gt;只有这里，只有这里&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;Das sind alles wir&lt;br /&gt;我们就是德国人&lt;br /&gt;Wir leben und wir sterben hier&lt;br /&gt;我们在这里生活和死亡&lt;br /&gt;&lt;br /&gt;Deutsch, deutsch, deutsch, deutsch&lt;br /&gt;德语，德意志，德国人，……………&lt;br /&gt;Deutsch, deutsch, deutsch, deutsch&lt;br /&gt;德语，德意志，德国人，……………&lt;br /&gt;&lt;br /&gt;Es bilden sich viele was auf Deutschland ein&lt;br /&gt;很多人都说德国人很自负&lt;br /&gt;Und mancher findet es geil, ein Arschloch zu sein&lt;br /&gt;不少德国人都认为不要脸的家伙就是好色之徒 （或可解释为cool吧，新旧德语的区别）&lt;br /&gt;Es gibt Manchen, der sich gern über Kanacken beschwert&lt;br /&gt;有些人喜欢为了鸡毛蒜皮的小事而抱怨&lt;br /&gt;Und zum Ficken jedes Jahr nach Thailand f鋒rt&lt;br /&gt;有些人为了追求刺激每年都要去泰国 （有些德国人的糜烂生活……&lt;br /&gt;Wir lieben unsere Autos mehr als unsere Frauen&lt;br /&gt;我们爱女人但更爱汽车&lt;br /&gt;Den deutschen Autos k鰊nen wir vertrauen&lt;br /&gt;我们信赖德国车&lt;br /&gt;Gott hat die Erde nur einmal geküsst&lt;br /&gt;上帝偏爱德国，即使在他唯一一次亲吻地球时，&lt;br /&gt;Genau an dieser Stelle, wo jetzt Deutschland ist&lt;br /&gt;接受上帝之吻的地方就是现在的德国&lt;br /&gt;Wir sind überall die Besten natürlich auch im Bett&lt;br /&gt;我们什么都要做到最好，当然**也不例外&lt;br /&gt;Und zu Hunden und Katzen besonders nett&lt;br /&gt;猫和狗深受我们的喜爱&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;Das alles sind wir&lt;br /&gt;我们就是德国人&lt;br /&gt;Das gibt es nirgendwo anders&lt;br /&gt;这里一点都不怪&lt;br /&gt;Nur hier, nur hier (zwei, drei, vier)&lt;br /&gt;德国，德国&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;Das sind alles wir&lt;br /&gt;我们就是德国人&lt;br /&gt;Wir leben und wir sterben hier&lt;br /&gt;我们在这里生活和死亡&lt;br /&gt;&lt;br /&gt;Wir sind besonders gut in und auf die Fressehauen&lt;br /&gt;我们是出色的战士&lt;br /&gt;Auch im Feuerregen kann man uns vertrauen&lt;br /&gt;杀人放火人们也能信任我们&lt;br /&gt;Wir stehen auf Ordnung und Sauberkeit&lt;br /&gt;我们讲条里和喜欢整洁&lt;br /&gt;Wir sind jederzeit für'n Krieg bereit&lt;br /&gt;我们随时准备战争&lt;br /&gt;Schon Gro an die Welt zieht es endlich ein&lt;br /&gt;总有一天大德意志会重现世界 （这里就体现出Neonazis了，就是新纳粹。&lt;br /&gt;Wir künen stolz auf Deutschland Schwein!&lt;br /&gt;我们能为德国而（骄傲）&lt;br /&gt;（这里本来最后一个词是sein,那就组成了为德国骄傲的意思了。但是他们摒了半天突出个Schwein(猪)出来，发音也能算是押韵了！哈哈哈这个是德国人的自嘲精神吧……&lt;br /&gt;&lt;br /&gt;Schwein, Schwein, Schwein, Schwein&lt;br /&gt;可怜虫，可怜虫，可怜虫，可怜虫&lt;br /&gt;Schwein, Schwein, Schwein, Schwein&lt;br /&gt;可怜虫，可怜虫，可怜虫，可怜虫&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;Das alles sind wir&lt;br /&gt;我们就是德国人&lt;br /&gt;Das gibt es nirgendwo anders&lt;br /&gt;这里一点都不怪&lt;br /&gt;Nur hier, nur hier&lt;br /&gt;只有这里，只有这里&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;Das sind alles wir&lt;br /&gt;我们就是德国人&lt;br /&gt;Wir leben und wir sterben hier&lt;br /&gt;我们在这里生活和死亡&lt;br /&gt;&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;Das alles sind wir&lt;br /&gt;我们就是德国人&lt;br /&gt;Das gibt es nirgendwo anders&lt;br /&gt;这里一点都不怪&lt;br /&gt;Nur hier, nur hier&lt;br /&gt;只有这里，只有这里&lt;br /&gt;Das alles ist Deutschland&lt;br /&gt;这就是德国&lt;br /&gt;Das sind alles wir&lt;br /&gt;我们就是德国人&lt;br /&gt;Wir leben und wir sterben hier&lt;br /&gt;我们在这里生活和死亡&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-1276504645098130890?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/1276504645098130890/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=1276504645098130890' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1276504645098130890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1276504645098130890'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/deutschland.html' title='Deutschland'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-753941330824905789</id><published>2008-05-16T14:53:00.001+02:00</published><updated>2008-05-16T14:54:29.248+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>10天为一循环的减肥餐单（转自千龙）</title><content type='html'>　　令人尴尬的夏天来了，如果你想要再瘦个几公斤，那可要抓紧啦！以下为你提供的10天减肥餐单，以蔬菜与水果为主，辅以必要的蛋白质及维生素，在保证基础营养的同时，可以达到清理肠胃、排除毒素的美容功效。&lt;br /&gt;&lt;br /&gt;　　1、此餐单提供的热量不超过1000大卡，&lt;br /&gt;因此请勿长期使用，以免造成营养不良；&lt;br /&gt;&lt;br /&gt;　　2、请完全遵守餐单组合，请勿随意增加或减少食物；&lt;br /&gt;&lt;br /&gt;　　3、每周请泡澡或足浴最少2次，经常泡澡可以有效地促进新陈代谢，同时有利于皮肤的美容。&lt;br /&gt;&lt;br /&gt;　　4、可选用合格的纤体消脂霜，每天按摩皮肤可以防止减肥带来的皮肤细纹。&lt;br /&gt;&lt;br /&gt;　　如果你记住了以上事项，那么就赶快来看神奇的减肥餐单吧！&lt;br /&gt;&lt;br /&gt;　　Day 1～3&lt;br /&gt;&lt;br /&gt;　　早餐：起床后先喝一大杯温水，再选择下列任何一个早餐组合。&lt;br /&gt;&lt;br /&gt;　　·水果2个（可以是任何时令水果，如苹果、橙子、猕猴桃、雪梨等）&lt;br /&gt;&lt;br /&gt;　　·大番茄2个加一条小黄瓜&lt;br /&gt;&lt;br /&gt;　　·水果番茄15粒加三条小黄瓜&lt;br /&gt;&lt;br /&gt;　　·其它蔬菜类一碗&lt;br /&gt;&lt;br /&gt;　　吃完水果或蔬菜后，你可以再喝250ml酸乳酪，富含活性乳酸菌的酸乳酪可以清除体内毒素，加强肠胃功能。&lt;br /&gt;&lt;br /&gt;　　午餐：水煮菜1碗或生菜沙拉一份，可用醋和盐粒调味，请勿加热量高的沙拉酱。再选择下列任何一个午餐组合。&lt;br /&gt;&lt;br /&gt;　　·瘦身汤1～2碗（可以是猪肉萝卜汤等少油的汤类）&lt;br /&gt;&lt;br /&gt;　　·瘦身粥1～2碗 （如薏米粥、麦片粥、荷叶粥等，薏米粥可有效消除水肿；麦片粥可促进肠胃消化；荷叶粥具有减肥功效。）&lt;br /&gt;&lt;br /&gt;　　午餐后可以吃一例复合维他命来补充缺乏的维生素与微量元素。&lt;br /&gt;&lt;br /&gt;　　下午茶：也许你到了下午就饿的头晕眼花了，这时候可以吃2片高纤梳打饼干，配一杯低热量的脱脂牛奶（或无糖豆浆），立刻就能让你精神一振。把瘦身课程表坚持下去吧！&lt;br /&gt;&lt;br /&gt;　　晚餐：请继续坚持清淡的水煮菜或生菜沙拉（不可加沙拉酱），再选择以下任何一个晚餐组合。&lt;br /&gt;&lt;br /&gt;　　·瘦身汤1～2碗（可以是猪肉萝卜汤等少油的汤类）&lt;br /&gt;&lt;br /&gt;　　·瘦身粥1～2碗 （如薏米粥、麦片粥、荷叶粥等，薏米粥可有效消除水肿；麦片粥可促进肠胃消化；荷叶粥具有减肥功效。）&lt;br /&gt;&lt;br /&gt;　　晚餐后喝一杯清香的花草茶（如玫瑰蜜枣茶、荷叶茶、乌龙茶等），可以促进肠胃蠕动，同时去除油腻。&lt;br /&gt;&lt;br /&gt;　　Day 4～7&lt;br /&gt;&lt;br /&gt;　　早餐：请继续跟随第一天至第三天的餐单，不过为了补充蛋白质，请多加一个白水煮蛋，也可以加一杯250ml的酸乳酪。&lt;br /&gt;&lt;br /&gt;　　午餐：这几天你可以自由进食，可适度加大一些量，但必须注意要将蛋白质与淀粉分开食用，同时避开油炸食品、多糖多脂肪的食品，多喝开水也是必须的步骤。&lt;br /&gt;&lt;br /&gt;　　晚餐：请继续坚持清淡的水煮菜或生菜沙拉（不可加沙拉酱）1份，再选择以下任何一个晚餐组合。&lt;br /&gt;&lt;br /&gt;　　·瘦身汤1～2碗（可以是猪肉萝卜汤等少油的汤类）&lt;br /&gt;&lt;br /&gt;　　·瘦身粥1～2碗 （如薏米粥、麦片粥、荷叶粥等，薏米粥可有效消除水肿；麦片粥可促进肠胃消化；荷叶粥具有减肥功效。）&lt;br /&gt;&lt;br /&gt;　　Day 8～10&lt;br /&gt;&lt;br /&gt;　　早餐：请遵循第一天至第三天的餐单&lt;br /&gt;&lt;br /&gt;　　午餐：清淡的白灼青菜1碗或生菜沙拉1份（仍然不可以加沙拉酱哦～），再选择下列任何一款食物：&lt;br /&gt;&lt;br /&gt;　　·瘦身汤1碗（可以是猪肉萝卜汤等少油的汤类）&lt;br /&gt;&lt;br /&gt;　　·瘦身粥1碗 （如薏米粥、麦片粥、荷叶粥等，薏米粥可有效消除水肿；麦片粥可促进肠胃消化；荷叶粥具有减肥功效。）&lt;br /&gt;&lt;br /&gt;　　午餐后请补充符合维他命。&lt;br /&gt;&lt;br /&gt;　　在饥肠辘辘的下午可以喝脱脂牛奶（或无糖豆浆1杯），苏打饼干1～3片，还可以吃1～2个果冻，当然要注意它的含糖量。&lt;br /&gt;&lt;br /&gt;　　晚餐：水煮菜1碗或生菜沙拉1份（勿加沙拉酱），再选择下列任何一个组合。&lt;br /&gt;&lt;br /&gt;　　·清蒸鸡胸肉一份，或切片后用高汤煮熟；&lt;br /&gt;&lt;br /&gt;　　·去皮鸡腿一支；&lt;br /&gt;&lt;br /&gt;　　·清蒸鱼一条（小），或5片生鱼片；&lt;br /&gt;&lt;br /&gt;　　·瘦肉8片，可以清蒸，也可以用高汤煮熟；&lt;br /&gt;&lt;br /&gt;　　·豆腐2块&lt;br /&gt;&lt;br /&gt;　　以上餐单以10天为一个循环，可坚持使用直到达到理想体重。如出现不适请停止使用；如你想减重10公斤以上，请咨询专业医生。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-753941330824905789?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/753941330824905789/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=753941330824905789' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/753941330824905789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/753941330824905789'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/10.html' title='10天为一循环的减肥餐单（转自千龙）'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-622227548212575575</id><published>2008-05-16T14:32:00.003+02:00</published><updated>2008-05-16T14:51:23.129+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Diary'/><title type='text'>减肥计划</title><content type='html'>哈，真的得减肥了，这两个学期胖了快15斤，自己也觉着精神差了。&lt;br /&gt;人还是得锻炼，身体是革命的本钱啊，综合了一下，还是运动加合理膳食。&lt;br /&gt;Copy了一下萍聚上有人总结的经验，&lt;br /&gt;方案一：&lt;br /&gt;早餐： 碳水化合物 （ + 中性食品）&lt;br /&gt;午餐： 随意&lt;br /&gt;晚餐： 蛋白 （ + 中性食品）&lt;br /&gt;&lt;br /&gt;方案2：&lt;br /&gt;1， 早餐两只白煮蛋，加一只中等西红柿&lt;br /&gt;2， 午饭在公司蔬菜不加色拉油，其实生蔬菜很容易饱，而且吃后不容易有饥饿感，下午可以吃点水果&lt;br /&gt;3， 晚饭只要不吃面食和饭，其他肉量和蔬菜随意，我觉得这样可以对食物保持欲望，不然容易得厌食症&lt;br /&gt;4， 晚上9点跑步45分钟到1个小时，主要速度慢一点，心情保持愉快，这样可以长期坚持下来，不然两三天就失去兴趣了&lt;br /&gt;5， 跑步完了少喝水&lt;br /&gt;&lt;br /&gt;不过我觉得有点太粗略，还是结合自己比较好。&lt;br /&gt;早餐：一只煮鸡蛋，一杯牛奶或者一杯酸奶。&lt;br /&gt;午餐：两片Vollkorn面包夹一边火腿，再加两片生菜或者四片黄瓜。下午一个苹果。&lt;br /&gt;晚餐：我觉着晚餐最难决定，因为GF还要吃东西，很可能受不了诱惑。以少吃饭为主吧。&lt;br /&gt;     计划是吃些菜，一个苹果。&lt;br /&gt;睡前一点红酒，hehe&lt;br /&gt;&lt;br /&gt;减肥的根本方法是控制饮食和增加体力活动，下面的饮食小窍门对减肥有一定的帮助。&lt;br /&gt;&lt;br /&gt;    餐前的准备：&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;    1.餐前喝汤。喝汤可使胃不感到饥饿，也可以使吃下的主食膨胀，预防吃过量。&lt;br /&gt;&lt;br /&gt;    2.餐前吃水果。水果体积大，有饱腹感，可以减少正餐的食量。&lt;br /&gt;&lt;br /&gt;    3.餐前含一小块水果糖。血糖浓度升高后，腹中不感到特别饥饿，吃饭的速度和数量会降低，不易吃过量。&lt;br /&gt;&lt;br /&gt;    4.不在腹中特别饥饿时进食食物，因为这时很可能吃得过量。&lt;br /&gt;&lt;br /&gt;    进餐中的注意事项：&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;    1.进餐速度放慢，每一口饭都细嚼慢咽。多数肥胖者进餐速度太快，大脑还来不及感受饱的信息便已经吃过量。若放慢进餐速度，便会比较准确地感到饱的信息。&lt;br /&gt;&lt;br /&gt;    2.进餐时不可看书看报，要专心致志地感受胃肠的感觉，体验对食物的兴趣从强到弱的过程。&lt;br /&gt;&lt;br /&gt;    3.进餐时不要喝甜饮料和酒类，只能喝白开水、茶和含油脂较少的汤。&lt;br /&gt;&lt;br /&gt;    4.先吃蔬菜、海藻、蘑菇、豆腐等热能比较低的菜，再开始吃主食和动物性食品，这样可以保证热能不过量。&lt;br /&gt;&lt;br /&gt;    5.一边吃饭一边吃菜，不要等吃饱了菜再吃饭。&lt;br /&gt;&lt;br /&gt;    6.一旦对食物的兴趣减弱，即使饭还没有吃完，也要停下。&lt;br /&gt;&lt;br /&gt;    餐后的注意事项：&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;    1.餐后决不可再吃花生、瓜子和零食，香蕉、苹果等含一定热能的水果也不能吃。&lt;br /&gt;&lt;br /&gt;    2.餐后决不可再喝甜饮料。&lt;br /&gt;&lt;br /&gt;    3.晚餐后要立刻刷牙，这样不仅对牙齿有很好的保护作用，而且可以防止餐后再吃零食。&lt;br /&gt;&lt;br /&gt;    4.餐后不可立刻坐下或躺下，应当做些轻微活动，帮助食物中的能量及时消耗。&lt;br /&gt;&lt;br /&gt;    食物的选择：&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;    1.不要用饺子、包子、酥饼、点心等加入油脂、白糖或肉的食物代替米饭和馒头做主食，因为它们比馒头和米饭的热能高得多，更易使人发胖。&lt;br /&gt;&lt;br /&gt;    2.用豆腐代替动物性食品。能加速你减肥的一些食物&lt;br /&gt;&lt;br /&gt;    3.用鸡肉和鱼肉来代替猪肉。鸡肉的脂肪含量低而蛋白质含量高，而瘦猪肉含脂肪也达25%左右，排骨肉更高达30%～40%。&lt;br /&gt;&lt;br /&gt;    4.如果用土豆和甘薯作为菜肴或零食，就应当减少主食的数量，因为它们也含有淀粉。&lt;br /&gt;&lt;br /&gt;    5.经常吃些海带、蘑菇、香菇、木耳、魔芋等菜肴，它们本身热能很低，还具有填充作用，可以使胃中产生饱感，有利减肥。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;运动是必须的了，每天9点回家，9点到10点满跑30分钟，仰卧起坐15分钟。俯卧撑5分钟。另外要合理休息了，保证12点半开始整理1点15之前睡下了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-622227548212575575?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/622227548212575575/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=622227548212575575' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/622227548212575575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/622227548212575575'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/blog-post.html' title='减肥计划'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-2131550603770065804</id><published>2008-05-14T16:32:00.000+02:00</published><updated>2008-05-14T16:33:08.348+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bachelorthesis'/><title type='text'>Html Parser</title><content type='html'>本文介绍了.net 版的一个HTMLParser网页解析开源类库（Winista.HTMLParser）的功能特性、工作原理和使用方法。对于使用.net进行Web信息提取的开发人员进行了一次HTMLParser的初步讲解。应用实例将会在日后的文中介绍，敬请关注。  &lt;br /&gt;&lt;br /&gt;一、背景知识&lt;br /&gt;    HTMLParser原本是一个在sourceforge上的一个Java开源项目，使用这个Java类库可以用来线性地或嵌套地解析HTML文本。他的功能强大和开源等特性吸引了大量Web信息提取的工作者。然而，许多.net开发者朋友一直在寻找一种能在.net中使用的HTMLParser类库，笔者将介绍Winista.HTMLParser类库，对比于其他原本数量就非常少的.net版HTMLParser类库，Winista的版本的类库结构可以说更接近于原始Java版本。&lt;br /&gt;    该类库目前分为Utltimate、Pro、Lite和Community四个版本，前三个版本都是收费的。只有Community版本可以免费下载并查看所有的源码。&lt;br /&gt;当前Community最新版本1.8 下载。&lt;br /&gt;该版本的类库文档下载。&lt;br /&gt;&lt;br /&gt;二、功能和特性&lt;br /&gt;    1.可以在任何.net语言中使用（C#,VB.net,J#等）&lt;br /&gt;    2.可以解析几乎所有的Html标签，并且可以通过标签类别、属性或正则表达式来搜索标签。有些甚至在Java版本中无法支持的标签也在这个版本中得到了支持。&lt;br /&gt;    3.设置可扩展的过滤器来过滤结果集中不需要的标签。&lt;br /&gt;    4.高性能的API接口使得你能处理许多常见的问题，如：哪些是页面中的外部链接？哪些是图片？哪些是不同的表格？页面中有错误的链接吗等等问题。&lt;br /&gt;    5.一个基于Http协议引擎的配置文件使得你能通过一个指定的URL地址来获得该页面内容。该爬虫可以遵循robot.txt协议文件来获得组织和允许访问的列表。&lt;br /&gt;    6.Http协议引擎能够完整地处理来自任何站点的反馈。&lt;br /&gt;&lt;br /&gt;三、词法分析的工作原理&lt;br /&gt;    HTMLParser的词法分析器对HTML进行了4级封装，从低级到高级的顺序为：ParserStream、Source、Page、Lexer。 ParserStream负责从文件中获取二进制数据，但不做任何处理。Source把二进制文件转换成相应的字符序列，存储一组未加工的字符序列。 Page可以看成是一个string数组，按行存储一个Source文本的每一行第一个字符开始的位置索引。Lexer包含了词法分析的代码，从Page 里读取字符串，用Cursor记录当前字符所在位置，通过状态机来生成Nodes节点。&lt;br /&gt;    Lexer中真正执行词法分析的是NextCode()方法，它每次词都查找返回下一个Node节点，直到Page结束。算法描述如下：&lt;br /&gt;    1.读入一个字符，判断是否已是页尾，是则返回null。&lt;br /&gt;    2.判断是否是"&lt;"，如果是，则可能是标签入口，需读取下一字符确认。&lt;br /&gt;    3.如果都不是，ParserString状态机开始解析一个StringNode，如果是"&lt;"，继续读取下一字符。&lt;br /&gt;    4.判断是否到页尾，是则产生一个StringNode返回。&lt;br /&gt;    5.如果读取到"%"，则说明是JSP标签，进入JSP状态机去解析。&lt;br /&gt;    6.如果读取到"?"，则说明是XML标签，进入XML状态机去解析。&lt;br /&gt;    7.如果读取到"/"或任何字母，说明是Tag标签，进入Tag标签状态机去解析。&lt;br /&gt;    8.如果读取到"!"，则说明进入了一个注释标签，需要再读取一个字符，如果到页尾，则产生一个StringNode返回，如果字符为"&gt;"则生成一个RemarkNode返回，否则    回退一个字符，再判断字符如果是"-"则回退一个字符，进入Remark状态机去解析，如果不是，则回退一个字符进入Tag状态机去解析。&lt;br /&gt;&lt;br /&gt;四、三种使用方法的比较&lt;br /&gt;1.使用Lexer词法分析器直接解析HTML。&lt;br /&gt;    这样的方法较为底层，只能返回一个线性的Node节点序列，通过Lexer.NextNode()方法获得下一个Node的信息。虽然不够方便，但有时可完成一些较为灵活的工作。&lt;br /&gt;    调用的方法是(传入string类型的html代码)：&lt;br /&gt;&lt;br /&gt;    Lexer lexer = new Lexer(htmlcode);&lt;br /&gt;    INode node = lexer.NextNode();&lt;br /&gt;    Console.Write(node.ToString());&lt;br /&gt;&lt;br /&gt;    返回结果是该页面的第一个标签"html"的Node结点信息。&lt;br /&gt;&lt;br /&gt;2.使用Filter结点过滤模式。&lt;br /&gt;    如果你有一些很明确的结点需要提取，那么就该使用Filter结点过滤模式。系统定义了17种具体的Filter，根据不同的过滤条件来获得需要的结点。包括依据结点父子关系的Filter，连接Filter组合的Filter，依据网页内容匹配情况的filter，等等。我们也可以继承 Filter做自己的Filter来提取节点。&lt;br /&gt;&lt;br /&gt;    NodeList nodeList = myParser.parse(someFilter);&lt;br /&gt;解析之后，我们可以采用：&lt;br /&gt;    INode[] nodes = nodeList.toNodeArray();&lt;br /&gt;&lt;br /&gt;来获取节点数组，也可以直接访问：&lt;br /&gt;    INode node = nodeList.elementAt(i);&lt;br /&gt;来获取Node。&lt;br /&gt;另外，在Filter后得到NodeList以后，我们仍然可以使用nodeList.extractAllNodesThatMatch (someFilter)来进一步过滤，同时又可以用nodeList.visitAllNodesWith(someVisitor)来做进一步的访问。&lt;br /&gt;&lt;br /&gt;3.使用Visitor结点访问模式&lt;br /&gt;   如果你希望HTMLParser遍历所有的结点，并按结点的不同类型（StringNode、RemarkNode、TagNode）和不同的访问过程来进行不同操作的话，可以使用Visitor模式。NodeVisitor是一个抽象类，分别定义了如下方法：&lt;br /&gt;    BeginParsing():解析前进行的操作&lt;br /&gt;    VitisTag():访问到开始标签时的操作&lt;br /&gt;    VisitEndTag():访问到结束标签时的操作&lt;br /&gt;    VisitStringNode():访问到文本结点时的操作&lt;br /&gt;    VisitRemarkNode():访问注释结点时的操作&lt;br /&gt;自己定义一个类并继承NodeVisitor类，实现以上几个方法，即完成Visitor模式的访问类。系统也提供了7个具体的结点访问类，具体见上文提供的类库文档。不过这7个类并不实用，大多数的功能还需要自己来扩充定义。调用方法：&lt;br /&gt;     Parser parser = Parser.CreateParser((htmlcode), "GBK");//传入string类型的html代码&lt;br /&gt;  NodeVisitor visitor = new LinkFindingVisitor(linktext); //以链接查找的Visitor举例&lt;br /&gt;    parser.VisitAllNodesWith(visirot); &lt;br /&gt;&lt;br /&gt;灵活使用以上三种模式的结合，相信就可以提取到任何我们所需要的信息了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-2131550603770065804?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/2131550603770065804/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=2131550603770065804' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2131550603770065804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2131550603770065804'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/html-parser.html' title='Html Parser'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-8495831978201856781</id><published>2008-05-12T16:49:00.002+02:00</published><updated>2008-05-12T16:51:24.299+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bachelorthesis'/><title type='text'>Eclipse注释模板</title><content type='html'>in Eclipse, unter preference-&gt;Java-&gt;Code Style-&gt;Comments, for example in type:&lt;br /&gt;/**&lt;br /&gt; * INSTITUT FUER INFORMATIK&lt;br /&gt; * Heinrich Heine Universitaet Duesseldorf&lt;br /&gt; * http://www.dbs.cs.uni-duesseldorf.de&lt;br /&gt; *&lt;br /&gt; * @author ${user}&lt;br /&gt; * @version&lt;br /&gt; * @time  ${date} ${time}&lt;br /&gt; * @copyright Kaiyuan ZHU&lt;br /&gt; */&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-8495831978201856781?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/8495831978201856781/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=8495831978201856781' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8495831978201856781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8495831978201856781'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/05/eclipse.html' title='Eclipse注释模板'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-6438657879174945853</id><published>2008-04-27T23:17:00.000+02:00</published><updated>2008-04-27T23:18:21.882+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>Http Parser 学习手册（一）</title><content type='html'>如何使用HTML Parser类&lt;br /&gt;&lt;br /&gt;HTMLParser包是个很方便的HTML代码分析器&lt;br /&gt;&lt;br /&gt;1.下载HtmlParser包&lt;br /&gt;&lt;br /&gt;地址：http://prdownloads.sourceforge.net/htmlparser/htmlparser1_6_20060610.zip?download&lt;br /&gt;&lt;br /&gt;2.随便解压到一个目录，设置CLASSPATH，指向lib目录里的htmlparser.jar&lt;br /&gt;&lt;br /&gt;3.一个简单的例子:&lt;br /&gt;&lt;br /&gt;import org.htmlparser.Parser;&lt;br /&gt;import org.htmlparser.util.NodeList;&lt;br /&gt;import org.htmlparser.util.ParserException;&lt;br /&gt;&lt;br /&gt;class Test&lt;br /&gt;{&lt;br /&gt;    public static void main (String[] args)&lt;br /&gt;    {&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            Parser parser = new Parser (args[0]);   //args[0]可以是任意的一个网址&lt;br /&gt;            NodeList list = parser.parse (null);&lt;br /&gt;            System.out.println (list.toHtml ());   //输出网址的HTML代码&lt;br /&gt;        }&lt;br /&gt;        catch (ParserException pe)&lt;br /&gt;        {&lt;br /&gt;            pe.printStackTrace ();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;4.解压目录里的doc目录里面有API和说明文档供大家研究,GOOD LUCK.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-6438657879174945853?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/6438657879174945853/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=6438657879174945853' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6438657879174945853'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6438657879174945853'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/04/http-parser.html' title='Http Parser 学习手册（一）'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-8621151908646398951</id><published>2008-03-27T21:34:00.002+01:00</published><updated>2008-03-27T21:40:54.920+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Get Toshiba A210 Run with Wlan RTL8197b</title><content type='html'>hehe，终于安装好了这快无线网卡，而且感觉速度挺快的，也比较稳定。&lt;br /&gt;&lt;br /&gt;参照：&lt;br /&gt;it also supports forcing the card ID. If your card doesn’t work, you may&lt;br /&gt;want to try with “force_card=0×8189″ or “force_card=0×8187″.&lt;br /&gt;&lt;br /&gt;To get it running (as root):&lt;br /&gt;* ./makedrv (will compile with many warnings)&lt;br /&gt;* ./wlan0up&lt;br /&gt;* ifconfig/iwconfig/ifup/whatever as usual.&lt;br /&gt;&lt;br /&gt;Also (since people keep asking), to get the changes persistent across&lt;br /&gt;boots, assuming you’re using ifupdown, add the following to&lt;br /&gt;/etc/network/interfaces:&lt;br /&gt;&lt;br /&gt;iface wlan0 inet dhcp&lt;br /&gt;wireless-essid your-ssid&lt;br /&gt;wireless-mode managed&lt;br /&gt;wireless-key1 s:yourpw&lt;br /&gt;&lt;br /&gt;pre-up /path/to/wlan0up&lt;br /&gt;post-down /path/to/wlan0down&lt;br /&gt;&lt;br /&gt;I’ve only gotten the device to work in managed and ad-hoc modes.&lt;br /&gt;Master (AP) mode …well, it sucks. I haven’t figured out why yet.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;编译的时候加上了参数force_card=8197，因为东芝好像更改了硬件地址。&lt;br /&gt;会出现一些错误，忽略。。继续。。&lt;br /&gt;这时候自嗯该已经可以iwconfig找到wlan了，不过很奇怪名字编程了wlan3，按照上面的方法&lt;br /&gt;设置interfaces，我把WPA关掉了，因为学校只是用了HHU的essid，然后通过ssh连接，&lt;br /&gt;＝＝》Game Over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-8621151908646398951?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/8621151908646398951/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=8621151908646398951' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8621151908646398951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8621151908646398951'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/03/get-toshiba-a210-run-with-wlan-rtl8197b.html' title='Get Toshiba A210 Run with Wlan RTL8197b'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-8612252065230647519</id><published>2008-01-31T12:00:00.000+01:00</published><updated>2008-01-31T12:10:59.493+01:00</updated><title type='text'>规范化－数据库设计原则(转)</title><content type='html'>http://www.ibm.com/developerworks/cn/db2/library/techarticles/dm-0605jiangt/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-8612252065230647519?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/8612252065230647519/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=8612252065230647519' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8612252065230647519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8612252065230647519'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/01/blog-post_31.html' title='规范化－数据库设计原则(转)'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-6130125935624495349</id><published>2008-01-22T22:51:00.001+01:00</published><updated>2008-01-22T22:51:58.472+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>关系型数据库设计范式的理解</title><content type='html'>关系型数据库设计范式的理解  &lt;br /&gt;   &lt;br /&gt;  　　所谓范式，是关系型数据库关系模式规范化的标准，从规范化的宽松到严格，分别  &lt;br /&gt;   &lt;br /&gt;  为不同的范式，通常使用的有第一范式、第二范式、第三范式及BC范式等。范式是建立  &lt;br /&gt;   &lt;br /&gt;  在函数依赖基础上的。  &lt;br /&gt;   &lt;br /&gt;  函数依赖  &lt;br /&gt;   &lt;br /&gt;  定义：设有关系模式R(U)，X和Y是属性集U的子集，函数依赖是形为X→Y的一个命题，  &lt;br /&gt;   &lt;br /&gt;  对任意R中两个元组t和s，都有t[X]=s[X]蕴涵t[Y]=s[Y]，那么FD   X→Y在关系模式R(U)中成  &lt;br /&gt;   &lt;br /&gt;  立。X→Y读作‘X函数决定Y’，或‘Y函数依赖于X’。  &lt;br /&gt;   &lt;br /&gt;  　　通俗的讲，如果一个表中某一个字段Y的值是由另外一个字段或一组字段X的值来确  &lt;br /&gt;   &lt;br /&gt;  定的，就称为Y函数依赖于X。  &lt;br /&gt;   &lt;br /&gt;  　　函数依赖应该是通过理解数据项和企业的规则来决定的，根据表的内容得出的函数  &lt;br /&gt;   &lt;br /&gt;  依赖可能是不正确的。  &lt;br /&gt;   &lt;br /&gt;  第一范式（1NF）  &lt;br /&gt;   &lt;br /&gt;  定义：果关系模式R的每个关系r的属性都是不可分的数据项，那么就称R是第一范式的模  &lt;br /&gt;   &lt;br /&gt;  式。  &lt;br /&gt;  　　简单的说，每一个属性都是原子项，不可分割。  &lt;br /&gt;  　　1NF是关系模式应具备的最起码的条件，如果数据库设计不能满足第一范式，就不称  &lt;br /&gt;   &lt;br /&gt;  为关系型数据库。关系数据库设计研究的关系规范化是在1NF之上进行的。  &lt;br /&gt;   &lt;br /&gt;  第二范式（2NF）  &lt;br /&gt;   &lt;br /&gt;  定义：如果关系模式R是1NF，且每个非主属性完全函数依赖于候选键，那么就称R是第  &lt;br /&gt;   &lt;br /&gt;  二范式。  &lt;br /&gt;  简单的说，第二范式要满足以下的条件：首先要满足第一范式，其次每个非主属性要完  &lt;br /&gt;   &lt;br /&gt;  全函数依赖与候选键，或者是主键。也就是说，每个非主属性是由整个主键函数决定的  &lt;br /&gt;   &lt;br /&gt;  ，而不能由主键的一部分来决定。  &lt;br /&gt;  举个例子：  &lt;br /&gt;  　　有股票日行情表的主键是股票代码和交易日期组成。非主属性中有收盘价和成交量  &lt;br /&gt;   &lt;br /&gt;  等，都是由主键，即股票代码和交易日期函数决定的，单独的股票代码或者交易日期都  &lt;br /&gt;   &lt;br /&gt;  不能函数决定这些非主属性。如果这个表中有非主属性股票简称，则股票简称是可以由  &lt;br /&gt;   &lt;br /&gt;  股票代码来函数决定的，这样股票简称这个非主属性就不是完全函数依赖于候选键，这  &lt;br /&gt;   &lt;br /&gt;  样的设计就不满足第二范式。  &lt;br /&gt;   &lt;br /&gt;  第三范式（3NF）  &lt;br /&gt;   &lt;br /&gt;  定义：如果关系模式R是2NF，且关系模式R（U，F）中的所有非主属性对任何候选关键  &lt;br /&gt;   &lt;br /&gt;  字都不存在传递依赖，则称关系R是属于第三范式。  &lt;br /&gt;  简单的说，第三范式要满足以下的条件：首先要满足第二范式，其次非主属性之间不存  &lt;br /&gt;   &lt;br /&gt;  在函数依赖。由于满足了第二范式，表示每个非主属性都函数依赖于主键。如果非主属  &lt;br /&gt;   &lt;br /&gt;  性之间存在了函数依赖，就会存在传递依赖，这样就不满足第三范式。  &lt;br /&gt;  举个例子：  &lt;br /&gt;  在股票基本情况表中，主键是股票代码，有非主属性所属一级行业和所属二级行业。根  &lt;br /&gt;   &lt;br /&gt;  据业务规则，所属二级行业能够函数决定所属一级行业，这就表示存在这样一种关系：  &lt;br /&gt;   &lt;br /&gt;  股票代码函数决定所属二级行业，所属二级行业函数决定所属一级行业，这就形成了传  &lt;br /&gt;   &lt;br /&gt;  递依赖，这样的设计就不符合第三范式。  &lt;br /&gt;  不过在实际运用中，为查询和使用的方便，有时也会违反第三范式。如上例，如果没有  &lt;br /&gt;   &lt;br /&gt;  所属一级行业的属性，需要查询所属一级行业的相关股票，需要查询时使用函数来从二  &lt;br /&gt;   &lt;br /&gt;  级行业中函数生成所属一级行业，使用性能上会受影响。所以通常会加上所属一级行业  &lt;br /&gt;   &lt;br /&gt;  的属性。  &lt;br /&gt;   &lt;br /&gt;  BC范式（BCNF）  &lt;br /&gt;   &lt;br /&gt;  BC范式是第三范式的增强版，不过也有人说是直接从1NF发展过来的，即每个属性，包  &lt;br /&gt;   &lt;br /&gt;  括主属性或非主属性，都完全依赖于候选键，并且不存在传递依赖情况。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-6130125935624495349?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/6130125935624495349/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=6130125935624495349' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6130125935624495349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6130125935624495349'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/01/blog-post.html' title='关系型数据库设计范式的理解'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-6695006846408813226</id><published>2008-01-01T12:09:00.001+01:00</published><updated>2008-01-01T12:09:46.569+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>RAR for Linux</title><content type='html'>a 向压缩包中添加文件&lt;br /&gt;c 添加压缩注释&lt;br /&gt;cf 添加文件注释&lt;br /&gt;cw 向文件中写压缩注释&lt;br /&gt;d 从压缩包中删除文件&lt;br /&gt;e 在当前目录下解压缩文件&lt;br /&gt;f 刷新压缩文件中的文件&lt;br /&gt;i[par]= 在压缩包中查找指定字符串&lt;br /&gt;k 锁住压缩包&lt;br /&gt;l[t,b] 列出压缩包的内容[t(technical)详细列表，b(bare)简单列表]&lt;br /&gt;m[f] 向压缩包里移动内容[f(files only)只移动文件]&lt;br /&gt;p 在标准输出上打印文件内容&lt;br /&gt;r 修复压缩包&lt;br /&gt;rc 修复丢失卷&lt;br /&gt;rn 重命名压缩的文件&lt;br /&gt;rr[N] 添加数据恢复记录&lt;br /&gt;rv[N] 创建恢复卷&lt;br /&gt;s[name|-] 将压缩包转换为自解压文件，或从自解压文件转换为压缩包&lt;br /&gt;t 测试压缩文件&lt;br /&gt;u 更新压缩包中的文件&lt;br /&gt;v[t,b] 列出压缩包中文件(冗长型)[t(technical)详细列表，b(bare)简单列表]&lt;br /&gt;x 以全路径方式解压文件&lt;br /&gt;&lt;br /&gt;- 停止switches扫描&lt;br /&gt;ad 在目的路径后添加压缩文件名&lt;br /&gt;ag[format] 用当前日期生成压缩文件名&lt;br /&gt;ap 设置压缩包内部的路径&lt;br /&gt;as 同步压缩内容&lt;br /&gt;av 设置授权认证(注册版功能)&lt;br /&gt;av- 禁用授权认证检查&lt;br /&gt;c- 禁止内容显示&lt;br /&gt;cfg- 不读取设置&lt;br /&gt;cl 将名称转换为小写&lt;br /&gt;cu 将名称转换为大写&lt;br /&gt;df 在压缩完成后删除源文件&lt;br /&gt;dh 打开共享文件&lt;br /&gt;ds 对于固实压缩包，禁用名称排序&lt;br /&gt;e 设置文件不包含的属性&lt;br /&gt;ed 不添加空目录&lt;br /&gt;en 不设置‘压缩文件尾标志’块&lt;br /&gt;ep 在名称中去掉路径&lt;br /&gt;ep1 在名称中去掉基本路径&lt;br /&gt;ep2 展开全路径&lt;br /&gt;f 刷新文件&lt;br /&gt;hp[password] 对文件数据和文件头都进行加密&lt;br /&gt;idp 禁用百分比显示&lt;br /&gt;ierr 给标准错误输出发送所有信息&lt;br /&gt;ilog[name] 生成错误日志文件(注册版功能)&lt;br /&gt;inul 禁用所有信息&lt;br /&gt;isnd 启用声效&lt;br /&gt;k 锁住压缩包&lt;br /&gt;kb 保留破损的解压文件&lt;br /&gt;m&lt;0..5&gt; 设置压缩率(0-存储...3-默认...5-最大)&lt;br /&gt;mc 设置高级压缩参数&lt;br /&gt;md 以KB显示大小(64,128,256,512,1024,2048,4096 或者A-G)&lt;br /&gt;ms[ext;ext] 指定存储的文件类型&lt;br /&gt;o+ 覆盖已存在文件&lt;br /&gt;o- 不覆盖已存在文件&lt;br /&gt;ol 将符号链接保存为链接而不是文件&lt;br /&gt;ow 保存或恢复文件属主/组&lt;br /&gt;p[password] 设置密码&lt;br /&gt;p- 不查询密码&lt;br /&gt;r 对子目录内容循环&lt;br /&gt;r0 只对通配符进行子目录内容循环&lt;br /&gt;rr[N] 添加数据恢复记录&lt;br /&gt;rv[N] 创建恢复卷&lt;br /&gt;s[,v[-],e] 创建固实压缩包&lt;br /&gt;s- 禁用固实压缩&lt;br /&gt;sfx[name] 创建自解压压缩包&lt;br /&gt;t 压缩后进行解压测试&lt;br /&gt;ta 处理在(YYYYMMDDHHMMSS格式)日期后修改的文件&lt;br /&gt;tb 处理在(YYYYMMDDHHMMSS格式)日期前修改的文件&lt;br /&gt;tk 保留初始压缩时间&lt;br /&gt;tl 设置压缩时间为最新文件的时间&lt;br /&gt;tn 处理在时间后修改的文件&lt;br /&gt;to 处理在时间前修改的文件&lt;br /&gt;ts[N] 保存或恢复文件时间(修改，创建，访问)&lt;br /&gt;u 更新文件&lt;br /&gt;v 以自动分卷大小分卷压缩，或列出所有分卷&lt;br /&gt;v[k,b] 以*1000大小分卷压缩[k-*1024, b-*1]&lt;br /&gt;ver[n] 文件版本控制&lt;br /&gt;vn 使用旧的分卷命名方式&lt;br /&gt;vp 每次分卷前暂停&lt;br /&gt;w 设置工作目录&lt;br /&gt;x 排除指定文件&lt;br /&gt;x@ 从标准输入中读取要排除的文件名&lt;br /&gt;x@&gt; 排除列表文件中指定的文件&lt;br /&gt;y 对所有问题均回复yes&lt;br /&gt;z 从文件中读取压缩包内容&lt;br /&gt;============================================&lt;br /&gt;查看压缩包中的文件&lt;br /&gt;$rar l XXX.rar 或者 $rar v XXX.rar&lt;br /&gt;查看压缩包中的文件(只看有什么文件)&lt;br /&gt;$rar lb XXX.rar 或者 $rar vb XXX.rar&lt;br /&gt;查看压缩包中的文件(详细信息)&lt;br /&gt;$rar lt XXX.rar 或者 $rar vt XXX.rar&lt;br /&gt;============================================&lt;br /&gt;把压缩包的内容解压到当前目录&lt;br /&gt;$rar e XXX.rar&lt;br /&gt;把压缩包的内容解压到指定目录，比如/home/yxd/tmp/下面&lt;br /&gt;$rar e XXX.rar /home/yxd/tmp/&lt;br /&gt;把压缩包解的内容压到指定目录，比如/home/yxd/tmp/下面，包含压缩包中的路径&lt;br /&gt;$rar x XXX.rar /home/yxd/tmp/&lt;br /&gt;============================================&lt;br /&gt;压缩指定的一个文件，比如aaa，以默认压缩率&lt;br /&gt;$rar a XXX.rar aaa&lt;br /&gt;压缩指定的一个文件，比如aaa，以最大压缩率&lt;br /&gt;$rar a -m5 XXX.rar aaa&lt;br /&gt;压缩指定的一个目录下的所有文件，比如ddd目录下的所有文件&lt;br /&gt;$rar a XXX.rar ddd/&lt;br /&gt;压缩指定的一个目录下的所有文件，比如ddd目录下的所有文件和所有子目录&lt;br /&gt;$rar a -r XXX.rar ddd/&lt;br /&gt;压缩指定的一个目录下的所有文件，比如ddd目录下的所有文件和所有子目录，但是不包含空目录&lt;br /&gt;$rar a -r -ed XXX.rar ddd/&lt;br /&gt;压缩指定的一个目录下的所有文件，比如ddd目录，连目录也一起压缩，包括子目录&lt;br /&gt;$rar a XXX.rar ddd&lt;br /&gt;============================================&lt;br /&gt;分卷压缩指定的一个文件，比如aaa，分卷大小为5000B&lt;br /&gt;$rar a -v5 XXX.rar aaa&lt;br /&gt;分卷压缩指定的一个文件，比如aaa，分卷大小为5k(5*1024B)&lt;br /&gt;$rar a -v5k XXX.rar aaa&lt;br /&gt;分卷压缩指定的一个文件，比如aaa，分卷大小为5B&lt;br /&gt;$rar a -v5b XXX.rar aaa&lt;br /&gt;============================================&lt;br /&gt;&lt;br /&gt;来自：http://zhangjingking.spaces.live.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-6695006846408813226?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/6695006846408813226/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=6695006846408813226' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6695006846408813226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6695006846408813226'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2008/01/rar-for-linux.html' title='RAR for Linux'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-8961530341449679455</id><published>2007-12-20T12:07:00.000+01:00</published><updated>2007-12-20T12:08:12.885+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>ubuntu SSH 连接</title><content type='html'>ubuntu SSH 连接&lt;br /&gt;&lt;br /&gt;安装 SSH(Secure Shell) 服务以提供远程管理服务&lt;br /&gt;&lt;br /&gt;sudo apt-get install ssh&lt;br /&gt;&lt;br /&gt;SSH 远程登入 Ubuntu 机&lt;br /&gt;&lt;br /&gt;ssh username@192.168.0.1&lt;br /&gt;&lt;br /&gt;将 文件/文件夹 从远程 Ubuntu 机拷至本地(scp)&lt;br /&gt;&lt;br /&gt;scp -r username@192.168.0.1:/home/username/remotefile.txt .&lt;br /&gt;&lt;br /&gt;将 文件/文件夹 从本地拷至远程 Ubuntu 机(scp)&lt;br /&gt;&lt;br /&gt;scp -r localfile.txt username@192.168.0.1:/home/username/&lt;br /&gt;&lt;br /&gt;将 文件/文件夹 从远程 Ubuntu 机拷至本地(rsync)&lt;br /&gt;&lt;br /&gt;rsync -v -u -a --delete --rsh=ssh --stats username@192.168.0.1:/home/username/remotefile.txt .&lt;br /&gt;&lt;br /&gt;将 文件/文件夹 从本地拷至远程 Ubuntu 机(rsync)&lt;br /&gt;&lt;br /&gt;rsync -v -u -a --delete --rsh=ssh --stats localfile.txt username@192.168.0.1:/home/username/&lt;br /&gt;&lt;br /&gt;在 Windows 机上用 SSH 远程登录 Ubuntu 机&lt;br /&gt;&lt;br /&gt;下载 PuTTY&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如何在 Windows 机上拷贝 文件/文件夹 从/到 远程 Ubuntu 机&lt;br /&gt;&lt;br /&gt;下载 FileZilla&lt;br /&gt;&lt;br /&gt;如何限制通过SSH远程连接的用户帐号&lt;br /&gt;&lt;br /&gt;如，假如你启用了SSH服务，那么任何有有效帐号的用户都可以远程连接。这可能会导致一些安全问题，由于有一些远程密码破解工具可以尝试常见的用户名／密码&lt;br /&gt;&lt;br /&gt;备份SSH服务的配置文件&lt;br /&gt;&lt;br /&gt;sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.ORIGINAL&lt;br /&gt;&lt;br /&gt;编辑配置文件&lt;br /&gt;&lt;br /&gt;sudo gedit /etc/ssh/sshd_config&lt;br /&gt;&lt;br /&gt;* 将参数 PermitRootLogin 由 yes 更改为 no。 超级用户不能直接通过远程联机。&lt;br /&gt;* 添加参数 AllowUsers 设定远程连接的用户名 (用空格来分割) 。&lt;br /&gt;* 您也可以使用 DenyUsers for fine-grained selection of users.&lt;br /&gt;* If you enable the openssh server and you have no intention for now to enable remote connections, you may add AllowUsers nosuchuserhere to disable anyone connecting.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SSH 命令&lt;br /&gt;&lt;br /&gt;ssh 命令可以用来在远程机器上不经 shell 提示登录而执行命令。它的语法格式是： ssh hostname command。譬如，如果你想在远程主机 penguin.example.net 上执行 ls /usr/share/doc 命令，在 shell 提示下键入下面的命令：&lt;br /&gt;&lt;br /&gt;ssh penguin.example.net ls /usr/share/doc&lt;br /&gt;&lt;br /&gt;3.2. 使用 scp 命令&lt;br /&gt;&lt;br /&gt;　　scp 命令可以用来通过安全、加密的连接在机器间传输文件。它与 rcp 相似。&lt;br /&gt;&lt;br /&gt;　　把本地文件传输给远程系统的一般语法是：&lt;br /&gt;&lt;br /&gt;　　scp localfile username@tohostname:/newfilename&lt;br /&gt;&lt;br /&gt;　　localfile 指定源文件，username@tohostname:/newfilename 指定目标文件。&lt;br /&gt;&lt;br /&gt;　　要把本地文件 shadowman 传送到你在 penguin.example.net 上的账号内，在 shell 提示下键入(把 username 替换成你的用户名)：&lt;br /&gt;&lt;br /&gt;　　scp shadowman username@penguin.example.net:/home/username&lt;br /&gt;&lt;br /&gt;　　这会把本地文件 shadowman 传输给 penguin.example.net 上的 /home/username/shadowman 文件。&lt;br /&gt;&lt;br /&gt;　　把远程文件传输给本地系统的一般语法是：&lt;br /&gt;&lt;br /&gt;　　scp username@tohostname:/remotefile /newlocalfile&lt;br /&gt;&lt;br /&gt;　　remotefile 指定源文件，newlocalfile 指定目标文件。&lt;br /&gt;&lt;br /&gt;　　源文件可以由多个文件组成。譬如，要把目录 /downloads 的内容传输到远程机器 penguin.example.net 上现存的 uploads 目录，在 shell 提示下键入下列命令：&lt;br /&gt;&lt;br /&gt;　　scp /downloads/* username@penguin.example.net:/uploads/&lt;br /&gt;&lt;br /&gt;　　3.3. 使用 sftp 命令&lt;br /&gt;&lt;br /&gt;　　sftp 工具可以用来打开一次安全互动的 FTP 会话。它与 ftp 相似，只不过，它使用安全、加密的连接。它的一般语法是：sftp username@hostname.com。一旦通过 验证，你可以使用一组和使用 FTP 相似的命令。请参阅 sftp 的说明书页(man)来获取这些 命令的列表。要阅读说明书页，在 shell 提示下执行 man sftp 命令。sftp 工具只在 OpenSSH 版本 2.5.0p1 以上才有。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SSH 概念&lt;br /&gt;&lt;br /&gt;SSH是指Secure Shell，SSH协议族由IETF（Internet Engineering Task Force）的Network Working Group制定，SSH协议的内容SSH协议是建立在应用层和传输层基础上的安全协议。&lt;br /&gt;&lt;br /&gt;传统的网络服务程序，如FTP、Pop和Telnet其本质上都是不安全的；因为它们在网络上用明文传送数据、用户帐号和用户口令，很容易受到中间人（man-in-the-middle）攻击方式的攻击。就是存在另一个人或者一台机器冒充真正的服务器接收用户传给服务器的数据，然后再冒充用户把数据传给真正的服务器。&lt;br /&gt;&lt;br /&gt;SSH(Secure Shell)是目前比较可靠的为远程登录会话和其他网络服务提供安全性的协议。利用SSH协议可以有效防止远程管理过程中的信息泄露问题。通过SSH，可以把所有传输的数据进行加密，也能够防止DNS欺骗和IP欺骗。&lt;br /&gt;SSH，还有一个额外的好处就是传输的数据是经过压缩的，所以可以加快传输的速度。SSH有很多功能，它既可以代替Telnet，又可以为FTP、Pop、甚至为PPP提供一个安全的"通道"。&lt;br /&gt;&lt;br /&gt;ssh -X guoshuang@192.168.100.4&lt;br /&gt;&lt;br /&gt;支持 SSH 图形界面。也就是说，gedit 打开和另存都是在服务器端操作的。nautilus 打开服务器端的文件管理器。这下就比只用命令行方便多了。不知道 windows 下的 putty 支持不。&lt;br /&gt;&lt;br /&gt;ssh -X guoshuang@192.168.100.4 ls&lt;br /&gt;&lt;br /&gt;直接在服务器端执行 ls 返回结果到客户端&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-8961530341449679455?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/8961530341449679455/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=8961530341449679455' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8961530341449679455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/8961530341449679455'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/ubuntu-ssh.html' title='ubuntu SSH 连接'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-3001997362570986176</id><published>2007-12-19T22:13:00.000+01:00</published><updated>2007-12-19T22:14:27.309+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DB2'/><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>DB2上机操作指令指南</title><content type='html'>DB2上机操作指令指南&lt;br /&gt;&lt;br /&gt;　　1. 启动实例(db2inst1):&lt;br /&gt;　　db2start&lt;br /&gt;　　2. 停止实例(db2inst1):&lt;br /&gt;　　db2stop&lt;br /&gt;　　3. 列出所有实例(db2inst1)&lt;br /&gt;　　db2ilist&lt;br /&gt;　　5.列出当前实例:&lt;br /&gt;　　db2 get instance&lt;br /&gt;　　4. 察看示例配置文件:&lt;br /&gt;　　db2 get dbm cfg|more&lt;br /&gt;　　5. 更新数据库管理器参数信息:&lt;br /&gt;　　db2 update dbm cfg using para_name para_value&lt;br /&gt;　　6. 创建数据库:&lt;br /&gt;　　db2 create db test&lt;br /&gt;　　7. 察看数据库配置参数信息&lt;br /&gt;　　db2 get db cfg for test|more&lt;br /&gt;　　8. 更新数据库参数配置信息&lt;br /&gt;　　db2 update db cfg for test using para_name para_value&lt;br /&gt;　　10.删除数据库:&lt;br /&gt;　　db2 drop db test&lt;br /&gt;　　11.连接数据库&lt;br /&gt;　　db2 connect to test&lt;br /&gt;　　11.列出所有表空间的详细信息。&lt;br /&gt;　　db2 list tablespaces show detail&lt;br /&gt;　　12.列出容器的信息&lt;br /&gt;　　db2 list tablespace containers for tbs_id show detail&lt;br /&gt;　　13.创建表:&lt;br /&gt;　　db2 ceate table tb1(id integer not null,name char(10))&lt;br /&gt;　　14.列出所有表&lt;br /&gt;　　db2 list tables&lt;br /&gt;　　12.插入数据:&lt;br /&gt;　　db2 insert into tb1 values(1,’sam’);&lt;br /&gt;　　db2 insert into tb2 values(2,’smitty’);&lt;br /&gt;　　13.查询数据:&lt;br /&gt;　　db2 select * from tb1&lt;br /&gt;　　14.数据:&lt;br /&gt;　　db2 delete from tb1 where id=1&lt;br /&gt;　　15.创建索引:&lt;br /&gt;　　db2 create index idx1 on tb1(id);&lt;br /&gt;　　16.创建视图:&lt;br /&gt;　　db2 create view view1 as select id from tb1&lt;br /&gt;　　17.查询视图:&lt;br /&gt;　　db2 select * from view1&lt;br /&gt;　　18.节点编目&lt;br /&gt;　　db2 catalog tcp node node_name remote server_ip server server_port&lt;br /&gt;　　19.察看端口号&lt;br /&gt;　　db2 get dbm cfg|grep SVCENAME&lt;br /&gt;　　20.测试节点的附接&lt;br /&gt;　　db2 attach to node_name&lt;br /&gt;　　21.察看本地节点&lt;br /&gt;　　db2 list node direcotry&lt;br /&gt;　　22.节点反编目&lt;br /&gt;　　db2 uncatalog node node_name&lt;br /&gt;　　23.数据库编目&lt;br /&gt;　　db2 catalog db db_name as db_alias at node node_name&lt;br /&gt;　　24.察看数据库的编目&lt;br /&gt;　　db2 list db directory&lt;br /&gt;　　25.连接数据库&lt;br /&gt;　　db2 connect to db_alias user user_name using user_password&lt;br /&gt;　　26.数据库反编目&lt;br /&gt;　　db2 uncatalog db db_alias&lt;br /&gt;　　27.导出数据&lt;br /&gt;　　db2 export to myfile of ixf messages msg select * from tb1&lt;br /&gt;　　28.导入数据&lt;br /&gt;　　db2 import from myfile of ixf messages msg replace into tb1&lt;br /&gt;　　29.导出数据库的所有表数据&lt;br /&gt;　　db2move test export&lt;br /&gt;　　30.生成数据库的定义&lt;br /&gt;　　db2look -d db_alias -a -e -m -l -x -f -o db2look.sql&lt;br /&gt;　　31.创建数据库&lt;br /&gt;　　db2 create db test1&lt;br /&gt;　　32.生成定义&lt;br /&gt;　　db2 -tvf db2look.sql&lt;br /&gt;　　33.导入数据库所有的数据&lt;br /&gt;　　db2move db_alias import&lt;br /&gt;　　34.重组检查&lt;br /&gt;　　db2 reorgchk&lt;br /&gt;　　35.重组表tb1&lt;br /&gt;　　db2 reorg table tb1&lt;br /&gt;　　36.更新统计信息&lt;br /&gt;　　db2 runstats on table tb1&lt;br /&gt;　　37.备份数据库test&lt;br /&gt;　　db2 backup db test&lt;br /&gt;　　38.恢复数据库test&lt;br /&gt;　　db2 restore db test&lt;br /&gt;&lt;br /&gt;出自：http://blog.csdn.net/greener2000/&lt;br /&gt;　　1. 启动实例(db2inst1):&lt;br /&gt;　　db2start&lt;br /&gt;　　2. 停止实例(db2inst1):&lt;br /&gt;　　db2stop&lt;br /&gt;　　3. 列出所有实例(db2inst1)&lt;br /&gt;　　db2ilist&lt;br /&gt;　　5.列出当前实例:&lt;br /&gt;　　db2 get instance&lt;br /&gt;　　4. 察看示例配置文件:&lt;br /&gt;　　db2 get dbm cfg|more&lt;br /&gt;　　5. 更新数据库管理器参数信息:&lt;br /&gt;　　db2 update dbm cfg using para_name para_value&lt;br /&gt;　　6. 创建数据库:&lt;br /&gt;　　db2 create db test&lt;br /&gt;　　7. 察看数据库配置参数信息&lt;br /&gt;　　db2 get db cfg for test|more&lt;br /&gt;　　8. 更新数据库参数配置信息&lt;br /&gt;　　db2 update db cfg for test using para_name para_value&lt;br /&gt;　　10.删除数据库:&lt;br /&gt;　　db2 drop db test&lt;br /&gt;　　11.连接数据库&lt;br /&gt;　　db2 connect to test&lt;br /&gt;　　11.列出所有表空间的详细信息。&lt;br /&gt;　　db2 list tablespaces show detail&lt;br /&gt;　　12.列出容器的信息&lt;br /&gt;　　db2 list tablespace containers for tbs_id show detail&lt;br /&gt;　　13.创建表:&lt;br /&gt;　　db2 ceate table tb1(id integer not null,name char(10))&lt;br /&gt;　　14.列出所有表&lt;br /&gt;　　db2 list tables&lt;br /&gt;　　12.插入数据:&lt;br /&gt;　　db2 insert into tb1 values(1,’sam’);&lt;br /&gt;　　db2 insert into tb2 values(2,’smitty’);&lt;br /&gt;　　13.查询数据:&lt;br /&gt;　　db2 select * from tb1&lt;br /&gt;　　14.数据:&lt;br /&gt;　　db2 delete from tb1 where id=1&lt;br /&gt;　　15.创建索引:&lt;br /&gt;　　db2 create index idx1 on tb1(id);&lt;br /&gt;　　16.创建视图:&lt;br /&gt;　　db2 create view view1 as select id from tb1&lt;br /&gt;　　17.查询视图:&lt;br /&gt;　　db2 select * from view1&lt;br /&gt;　　18.节点编目&lt;br /&gt;　　db2 catalog tcp node node_name remote server_ip server server_port&lt;br /&gt;　　19.察看端口号&lt;br /&gt;　　db2 get dbm cfg|grep SVCENAME&lt;br /&gt;　　20.测试节点的附接&lt;br /&gt;　　db2 attach to node_name&lt;br /&gt;　　21.察看本地节点&lt;br /&gt;　　db2 list node direcotry&lt;br /&gt;　　22.节点反编目&lt;br /&gt;　　db2 uncatalog node node_name&lt;br /&gt;　　23.数据库编目&lt;br /&gt;　　db2 catalog db db_name as db_alias at node node_name&lt;br /&gt;　　24.察看数据库的编目&lt;br /&gt;　　db2 list db directory&lt;br /&gt;　　25.连接数据库&lt;br /&gt;　　db2 connect to db_alias user user_name using user_password&lt;br /&gt;　　26.数据库反编目&lt;br /&gt;　　db2 uncatalog db db_alias&lt;br /&gt;　　27.导出数据&lt;br /&gt;　　db2 export to myfile of ixf messages msg select * from tb1&lt;br /&gt;　　28.导入数据&lt;br /&gt;　　db2 import from myfile of ixf messages msg replace into tb1&lt;br /&gt;　　29.导出数据库的所有表数据&lt;br /&gt;　　db2move test export&lt;br /&gt;　　30.生成数据库的定义&lt;br /&gt;　　db2look -d db_alias -a -e -m -l -x -f -o db2look.sql&lt;br /&gt;　　31.创建数据库&lt;br /&gt;　　db2 create db test1&lt;br /&gt;　　32.生成定义&lt;br /&gt;　　db2 -tvf db2look.sql&lt;br /&gt;　　33.导入数据库所有的数据&lt;br /&gt;　　db2move db_alias import&lt;br /&gt;　　34.重组检查&lt;br /&gt;　　db2 reorgchk&lt;br /&gt;　　35.重组表tb1&lt;br /&gt;　　db2 reorg table tb1&lt;br /&gt;　　36.更新统计信息&lt;br /&gt;　　db2 runstats on table tb1&lt;br /&gt;　　37.备份数据库test&lt;br /&gt;　　db2 backup db test&lt;br /&gt;　　38.恢复数据库test&lt;br /&gt;　　db2 restore db test&lt;br /&gt;&lt;br /&gt;出自：http://blog.csdn.net/greener2000/&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-3001997362570986176?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/3001997362570986176/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=3001997362570986176' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/3001997362570986176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/3001997362570986176'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/db2_2507.html' title='DB2上机操作指令指南'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-6346436618057042018</id><published>2007-12-19T20:33:00.000+01:00</published><updated>2007-12-19T20:34:02.007+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>MySql常用操作命令</title><content type='html'>一、连接mysql。&lt;br /&gt;格式： mysql -h主机地址 -u用户名 －p用户密码&lt;br /&gt;1、 例1：连接到本机上的mysql。&lt;br /&gt;首先在打开DOS窗口，然后进入目录mysqlin，再键入命令mysql -uroot -p， 回&lt;br /&gt;车后提示你输密码，如果刚安装好mysql，超级用户root是没有密码的， 故直接回&lt;br /&gt;车即可进入到mysql中了，mysql的提示符是：mysql&gt;&lt;br /&gt;2、 例2：连接到远程主机上的mysql。假设远程主机的IP为：110.110.110.110， 用户&lt;br /&gt;名为root,密码为abcd123。则键入以下命令：&lt;br /&gt;mysql -h110.110.110.110 -uroot -pabcd123&lt;br /&gt;（注:u与root可以不用加空格，其它也一样）&lt;br /&gt;3、 退出mysql命令：exit（回车）&lt;br /&gt;&lt;br /&gt;二、修改密码。&lt;br /&gt;格式：mysqladmin -u用户名 -p旧密码 password 新密码&lt;br /&gt;1、 例1：给root加个密码ab12。首先在DOS下进入目录mysqlbin，然后键入以下命令&lt;br /&gt;mysqladmin -uroot password ab12&lt;br /&gt;注：因为开始时root没有密码，所以-p旧密码一项就可以省略了。&lt;br /&gt;2、 例2：再将root的密码改为djg345。&lt;br /&gt;mysqladmin -uroot -pab12 password djg345&lt;br /&gt;另一种方法：&lt;br /&gt;shell&gt;mysql -u root -p&lt;br /&gt;mysql&gt;SET PASSWORD FOR root=PASSWORD("root");&lt;br /&gt;&lt;br /&gt;三、增加新用户。（注意：和上面不同，下面的因为是mysql环境中的命令， 所以后面都带&lt;br /&gt;一个分号作为命令结束符）&lt;br /&gt;格式：grant select on 数据库.* to 用户名@登录主机 identified by "密码"&lt;br /&gt;例1、增加一个用户test1密码为abc，让他可以在任何主机上登录， 并对所有数据库有&lt;br /&gt;查询、插入、修改、删除的权限。首先用以root用户连入mysql，然后键入以下命&lt;br /&gt;令：&lt;br /&gt;grant select,insert,update,delete on *.* to test1@"%" Identified&lt;br /&gt;by "abc";&lt;br /&gt;但例1增加的用户是十分危险的，你想如某个人知道test1的密码，那么他就可以在&lt;br /&gt;internet上的任何一台电脑上登录你的mysql数据库并对你的数据可以为所欲为了，&lt;br /&gt;解决办法见例2。&lt;br /&gt;例2、增加一个用户test2密码为abc,让其只可以在localhost上登录， 并可以对数据库&lt;br /&gt;mydb进行查询、插入、修改、删除的操作（localhost指本地主机， 即mysql数据&lt;br /&gt;库所在的那台主机），这样用户即使用知道test2的密码，也无法从internet上直&lt;br /&gt;接访问数据库，只能通过mysql主机上的web页来访问了。&lt;br /&gt;grant select,insert,update,delete on mydb.* to test2@localhost&lt;br /&gt;identified by "abc";&lt;br /&gt;如果你不想test2有密码，可以再打一个命令将密码消掉。&lt;br /&gt;grant select,insert,update,delete on mydb.* to test2@localhost&lt;br /&gt;identified by "";&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;有关数据库方面的操作。注意：你必须首先登录到mysql中，以下操作都是在mysql的提&lt;br /&gt;示符下进行的，而且每个命令以分号结束。&lt;br /&gt;&lt;br /&gt;一、操作技巧&lt;br /&gt;1、 如果你打命令时，回车后发现忘记加分号，你无须重打一遍命令，只要打个分号回&lt;br /&gt;车就可以了。也就是说你可以把一个完整的命令分成几行来打，完后用分号作结束&lt;br /&gt;标志就OK。&lt;br /&gt;2、 你可以使用光标上下键调出以前的命令。但以前我用过的一个mysql旧版本不支持。&lt;br /&gt;我现在用的是mysql-3.23.27-beta-win。&lt;br /&gt;二、显示命令&lt;br /&gt;1、 显示数据库列表。&lt;br /&gt;show databases;&lt;br /&gt;刚开始时才两个数据库：mysql和test。 mysql库很重要它里面有mysql的系统信息，&lt;br /&gt;我们改密码和新增用户，实际上就是用这个库进行操作。&lt;br /&gt;2、 显示库中的数据表：&lt;br /&gt;use mysql； ／／打开库，学过FOXBASE的一定不会陌生吧&lt;br /&gt;show tables;&lt;br /&gt;3、 显示数据表的结构：&lt;br /&gt;describe 表名;&lt;br /&gt;4、 建库：&lt;br /&gt;create database 库名;&lt;br /&gt;5、 建表：&lt;br /&gt;use 库名；&lt;br /&gt;create table 表名(字段设定列表)；&lt;br /&gt;6、 删库和删表:&lt;br /&gt;drop database 库名;&lt;br /&gt;drop table 表名；&lt;br /&gt;7、 将表中记录清空：&lt;br /&gt;delete from 表名;&lt;br /&gt;8、 显示表中的记录：&lt;br /&gt;select * from 表名;&lt;br /&gt;&lt;br /&gt;三、一个建库和建表以及插入数据的实例&lt;br /&gt;drop database if exists school; //如果存在SCHOOL则删除&lt;br /&gt;create database school; //建立库SCHOOL&lt;br /&gt;use school; //打开库SCHOOL&lt;br /&gt;create table teacher //建立表TEACHER&lt;br /&gt;(&lt;br /&gt;id int(3) auto_increment not null primary key,&lt;br /&gt;name char(10) not null,&lt;br /&gt;address varchar(50) default '深圳',&lt;br /&gt;year date&lt;br /&gt;); //建表结束&lt;br /&gt;//以下为插入字段&lt;br /&gt;insert into teacher values('','glchengang','深圳一中','1976-10-10');&lt;br /&gt;insert into teacher values('','jack','深圳一中','1975-12-23');&lt;br /&gt;&lt;br /&gt;注：在建表中&lt;br /&gt;(1) 将ID设为长度为3的数字字段:int(3)，并让它每个记录自动加一: auto_increment，&lt;br /&gt;并不能为空:not null，而且让它成为主字段primary key&lt;br /&gt;(2) 将NAME设为长度为10的字符字段&lt;br /&gt;(3) 将ADDRESS设为长度50的字符字段，而且缺省值为深圳。varchar和char有什么区别&lt;br /&gt;呢，只有等以后的文章再说了。&lt;br /&gt;(4) 将YEAR设为日期字段。&lt;br /&gt;如果你在mysql提示符键入上面的命令也可以，但不方便调试。 你可以将以上命令&lt;br /&gt;原样写入一个文本文件中假设为school.sql，然后复制到c:下，并在DOS状态进入目录&lt;br /&gt;mysqlin，然后键入以下命令：&lt;br /&gt;mysql -uroot -p密码 &lt; c:school.sql&lt;br /&gt;如果成功，空出一行无任何显示；如有错误，会有提示。（以上命令已经调试，你&lt;br /&gt;只要将//的注释去掉即可使用）。&lt;br /&gt;&lt;br /&gt;四、将文本数据转到数据库中&lt;br /&gt;1、 文本数据应符合的格式：字段数据之间用tab键隔开，null值用来代替。例：&lt;br /&gt;3 rose 深圳二中 1976-10-10&lt;br /&gt;4 mike 深圳一中 1975-12-23&lt;br /&gt;2、 数据传入命令load data local infile "文件名" into table 表名;&lt;br /&gt;注意：你最好将文件复制到mysqlin目录下，并且要先用use命令选表所在的库。&lt;br /&gt;&lt;br /&gt;五、导出和导入数据：(命令在DOS的mysqlin目录下执行)&lt;br /&gt;导出表&lt;br /&gt;mysqldump --opt school &gt; school.sql&lt;br /&gt;注释：将数据库school中的表全部备份到school.sql文件，school.sql是一个文本文件，&lt;br /&gt;文件名任取，打开看看你会有新发现。&lt;br /&gt;mysqldump --opt school teacher student &gt; school.teacher.student.sql&lt;br /&gt;注释：将数据库school中的teacher表和student表备份到school.teacher.student.sql文&lt;br /&gt;件，school.teacher.student.sql是一个文本文件，文件名任取，打开看看你会有新发现。&lt;br /&gt;&lt;br /&gt;导入表&lt;br /&gt;mysql&lt;br /&gt;mysql&gt;create database school;&lt;br /&gt;mysql&gt;use school;&lt;br /&gt;mysql&gt;source school.sql;&lt;br /&gt;(或将school.sql换为school.teacher.sql / school.teacher.student.sql)&lt;br /&gt;&lt;br /&gt;导出数据库&lt;br /&gt;mysqldump --databases db1 db2 &gt; db1.db2.sql&lt;br /&gt;注释：将数据库dbl和db2备份到db1.db2.sql文件，db1.db2.sql是一个文本文件，文件名&lt;br /&gt;任取，打开看看你会有新发现。&lt;br /&gt;(举个例子：&lt;br /&gt;mysqldump -h host -u user -p pass --databases dbname &gt; file.dump&lt;br /&gt;就是把host上的以名字user，口令pass的数据库dbname导入到文件file.dump中。)&lt;br /&gt;&lt;br /&gt;导入数据库&lt;br /&gt;mysql &lt; db1.db2.sql&lt;br /&gt;&lt;br /&gt;复制数据库&lt;br /&gt;mysqldump --all-databases &gt; all-databases.sql&lt;br /&gt;注释：将所有数据库备份到all-databases.sql文件，all-databases.sql是一个文本文件，&lt;br /&gt;文件名任取。&lt;br /&gt;&lt;br /&gt;导入数据库&lt;br /&gt;mysql&lt;br /&gt;mysql&gt;drop database a;&lt;br /&gt;mysql&gt;drop database b;&lt;br /&gt;mysql&gt;drop database c;&lt;br /&gt;...&lt;br /&gt;mysql&gt;source all-databases.sql; (或exit退出mysql后 mysql &lt; all-databases.sql)&lt;br /&gt;&lt;br /&gt;后记：&lt;br /&gt;其实mysql的对数据库的操作与其它的SQL类数据库大同小异， 您最好找本将SQL的书看&lt;br /&gt;看。我在这里只介绍一些基本的，其实我也就只懂这些了，呵呵。&lt;br /&gt;最好的mysql教程还是"晏子"译的"mysql中文参考手册"。不仅免费，每个相关网站都有&lt;br /&gt;下载，而且它是最权威的。可惜不象"PHP4中文手册"那样是chm的格式， 在查找函数命令的&lt;br /&gt;时候不太方便。&lt;br /&gt;&lt;br /&gt;3.打开数据库：use dbname；&lt;br /&gt;显示所有数据库：show databases;&lt;br /&gt;显示数据库mysql中所有的表：先use mysql；然后show tables;&lt;br /&gt;显示表的列信息：describe user;(显示表mysql数据库中user表的信息）；&lt;br /&gt;&lt;br /&gt;4.创建一个可以从任何地方连接服务器的一个完全的超级用户，但是必须使用一个口令something做这个&lt;br /&gt;GRANT ALL PRIVILEGES ON *.* TO monty@localhost IDENTIFIED BY 'something' WITH GRANT OPTION;&lt;br /&gt;GRANT ALL PRIVILEGES ON *.* TO monty@"%" IDENTIFIED BY 'something' WITH GRANT OPTION;&lt;br /&gt;&lt;br /&gt;5.删除授权：&lt;br /&gt;REVOKE ALL PRIVILEGES ON *.* FROM root@"%";&lt;br /&gt;USE mysql;&lt;br /&gt;DELETE FROM user WHERE User="root" and Host="%";&lt;br /&gt;FLUSH PRIVILEGES;&lt;br /&gt;&lt;br /&gt;6. 创建一个用户custom在特定客户端weiqiong.com登录，可访问特定数据库bankaccount&lt;br /&gt;mysql&gt; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON bankaccount.*&lt;br /&gt;TO [email]custom@weiqiong.com[/email] IDENTIFIED BY 'stupid';&lt;br /&gt;&lt;br /&gt;7.重命名表:&lt;br /&gt;ALTER TABLE t1 RENAME t2;&lt;br /&gt;&lt;br /&gt;为了改变列a，从INTEGER改为TINYINT NOT NULL(名字一样)，&lt;br /&gt;并且改变列b，从CHAR(10)改为CHAR(20)，同时重命名它，从b改为c:&lt;br /&gt;ALTER TABLE t2 MODIFY a TINYINT NOT NULL, CHANGE b c CHAR(20);&lt;br /&gt;&lt;br /&gt;增加一个新TIMESTAMP列，名为d：&lt;br /&gt;ALTER TABLE t2 ADD d TIMESTAMP;&lt;br /&gt;&lt;br /&gt;在列d上增加一个索引，并且使列a为主键：&lt;br /&gt;ALTER TABLE t2 ADD INDEX (d), ADD PRIMARY KEY (a);&lt;br /&gt;&lt;br /&gt;删除列c：&lt;br /&gt;ALTER TABLE t2 DROP COLUMN c;&lt;br /&gt;&lt;br /&gt;增加一个新的AUTO_INCREMENT整数列，命名为c：&lt;br /&gt;ALTER TABLE t2 ADD c INT UNSIGNED NOT NULL AUTO_INCREMENT,ADD INDEX (c);&lt;br /&gt;注意，我们索引了c，因为AUTO_INCREMENT柱必须被索引，并且另外我们声明c为NOT NULL，&lt;br /&gt;因为索引了的列不能是NULL。&lt;br /&gt;&lt;br /&gt;8.删除记录:&lt;br /&gt;DELETE FROM t1 WHERE C&gt;10;&lt;br /&gt;&lt;br /&gt;6.改变某几行:&lt;br /&gt;UPDATE t1 SET user=weiqiong,password=weiqiong;&lt;br /&gt;&lt;br /&gt;7.使用name列的头10个字符创建一个索引:&lt;br /&gt;CREATE INDEX part_of_name ON customer (name(10));&lt;br /&gt;数据导入问题 （by sese and Zjtv）&lt;br /&gt;&lt;br /&gt;大家一定使用过 phpmyadmin 里面的数据库导入，导出功能，非常方便。但是在实际应用中，我发现如下几个问题：&lt;br /&gt;&lt;br /&gt;1、数据库超过一定尺寸，比如6M 这时使用导出一般没问题，可以正确的保存到本机硬盘上面，但是导入则不行！原因是：一般的 PHP.INI 里面设置临时文件/上传文件的大小限制为2M，而phpmyadmin使用了上传的方式，造成失败。&lt;br /&gt;&lt;br /&gt;2、导出到硬盘的 .SQL 文件在导回时，经常出现由于某些单引号的问题引起失败，造成导入失败，只能用 mysql等应用程序导入了。&lt;br /&gt;&lt;br /&gt;我的数据库已经超过10M,所以必须解决这个问题。我的思路：&lt;br /&gt;&lt;br /&gt;导出： 用phpmyadmin 保存数据库/表格结构，用脚本读取数据库内容并保存到文件里面！&lt;br /&gt;&lt;br /&gt;导入： 用phpmyadmin 恢复数据库/表格结构，用脚本读取文件，然后保存到库里面！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;导出程序如下：调用方法为 ****.php?table=tablename&lt;br /&gt;&lt;br /&gt;这个简单的程序目前一次保存一个表格！！每行为一个字段的数据！！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if($table=="")exit();&lt;br /&gt;&lt;br /&gt;mysql_connect("localhost","name","password");&lt;br /&gt;&lt;br /&gt;mysql_select_db("database");&lt;br /&gt;&lt;br /&gt;$result = mysql_query("select * from $table");&lt;br /&gt;&lt;br /&gt;if(mysql_num_rows($result) &lt;= 0) exit();&lt;br /&gt;&lt;br /&gt;echo "开始转换数据到文本...&lt;br /&gt;&lt;br /&gt;";&lt;br /&gt;&lt;br /&gt;$handle = fopen("$table.txt","w");&lt;br /&gt;&lt;br /&gt;$numfields = mysql_num_fields($result);&lt;br /&gt;&lt;br /&gt;fputs($handle,$numfields."\r\n");&lt;br /&gt;&lt;br /&gt;for($k=0;$k&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;$msg = mysql_fetch_row($result);&lt;br /&gt;&lt;br /&gt;for($i=0;$i&lt;$numfields;$i++)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;$msg[$i] = str_replace("\r\n","&amp;&amp;php2000mysqlreturn&amp;&amp;",$msg[$i]);&lt;br /&gt;&lt;br /&gt;$msg[$i] = str_replace("\n" ,"&amp;&amp;php2000mysqlreturn&amp;&amp;",$msg[$i]);&lt;br /&gt;&lt;br /&gt;fputs($handle,$msg[$i]."\r\n");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;fputs($handle,"------- php2000 dump data program V1.0 for MySQL --------\r\n");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;fclose($handle);&lt;br /&gt;&lt;br /&gt;echo "ok";&lt;br /&gt;&lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;导入的程序如下：用法同上面！&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;if($table=="")exit();&lt;br /&gt;&lt;br /&gt;mysql_connect("localhost","name","password");&lt;br /&gt;&lt;br /&gt;mysql_select_db("database");&lt;br /&gt;&lt;br /&gt;$message = file("$table.txt");&lt;br /&gt;&lt;br /&gt;echo $numfields = chop($message[0]);&lt;br /&gt;&lt;br /&gt;for($k=1;$k&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;$value="";&lt;br /&gt;&lt;br /&gt;for ($i=$k;$i&lt;($k+$numfields-1);$i++)&lt;br /&gt;&lt;br /&gt;{&lt;br /&gt;&lt;br /&gt;$tmp = str_replace("&amp;&amp;php2000mysqlreturn&amp;&amp;","\r\n",chop($message[$i]));&lt;br /&gt;&lt;br /&gt;$value .= "'".addslashes($tmp)."',";&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;$tmp = str_replace("&amp;&amp;php2000mysqlreturn&amp;&amp;","\r\n",chop($message[$k+$numfields-1]));&lt;br /&gt;&lt;br /&gt;$value .= "'".$tmp."'";&lt;br /&gt;&lt;br /&gt;$query = "insert into $table values (".$value.")";&lt;br /&gt;&lt;br /&gt;echo mysql_error();&lt;br /&gt;&lt;br /&gt;mysql_query($query);&lt;br /&gt;&lt;br /&gt;echo $k." ";&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;echo "ok";&lt;br /&gt;&lt;br /&gt;?&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;使用方法和可能的问题！&lt;br /&gt;&lt;br /&gt;1、导入时 file()函数可能会有问题（我的10M的数据没出现问题），可以改为 fopen()然后没次读一行！！&lt;br /&gt;&lt;br /&gt;2、导入，导出都需要用 ftp 操作，也就是导出后，用 ftp 把数据转到本机，导入时先用ftp转移数据到服务器！&lt;br /&gt;上面的是在phpmyadmin导入大数据的方法&lt;br /&gt;小于2m的可以用下面的方法&lt;br /&gt;备份:登陆空间的phpmyadmin后在左侧选择要备份及导入的数据库,然后在右侧的数据表列表最上面选择导出标签,就是sql后面的那个,在左侧选择要备份的表,选上下面的另存为文件,点最下面的执行就会直接跳出下载&lt;br /&gt;导入:&lt;br /&gt;进入PHPMYADMIN控制面板&lt;br /&gt;选择中文显示&lt;br /&gt;在左侧选择你需要导入的数据库--点击&lt;br /&gt;在出现页面的上方点击SQL&lt;br /&gt;在跳转的页面中可以导入数据，导入方法和你上传文件类似&lt;br /&gt;也可以把数据输入文本框内导入的&lt;br /&gt;&lt;br /&gt;大家知道.MYSQL管理工具PHPMYADMIN对于大于2M的数据就很难直接导入了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-6346436618057042018?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/6346436618057042018/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=6346436618057042018' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6346436618057042018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6346436618057042018'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/mysql.html' title='MySql常用操作命令'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-3883060239643353666</id><published>2007-12-19T20:28:00.000+01:00</published><updated>2007-12-19T20:29:24.362+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DB2'/><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>DB2常用命令集</title><content type='html'>*  version: V1.0&lt;br /&gt;&lt;br /&gt;*  author: xiedd &lt;mailto:xiedd@icss.com.cn&gt;&lt;br /&gt;&lt;br /&gt;*  update: 2006-06-14&lt;br /&gt;&lt;br /&gt;*  memo: 详细命令请使用"db2 ? &lt;command&gt;"进行查看。　&lt;br /&gt;&lt;br /&gt;*************************************************&lt;br /&gt;&lt;br /&gt;1.        关闭db2&lt;br /&gt;&lt;br /&gt;db2stop 或&lt;br /&gt;&lt;br /&gt;db2stop force。&lt;br /&gt;&lt;br /&gt;在脚本中一般两个都写上，避免使用db2stop force命令，如：&lt;br /&gt;&lt;br /&gt;db2stop&lt;br /&gt;&lt;br /&gt;db2stop force&lt;br /&gt;&lt;br /&gt;2.        启动db2&lt;br /&gt;&lt;br /&gt;db2start&lt;br /&gt;&lt;br /&gt;3.        创建数据库&lt;br /&gt;&lt;br /&gt;db2 create db &lt;db name&gt;&lt;br /&gt;&lt;br /&gt;或db2 create db using codeset GBK territory CN&lt;br /&gt;&lt;br /&gt;4.        删除数据库&lt;br /&gt;&lt;br /&gt;执行此操作要小心。&lt;br /&gt;&lt;br /&gt;db2 drop db &lt;db name&gt;&lt;br /&gt;&lt;br /&gt;如果不能删除，断开所有数据库连接或者重启db2。&lt;br /&gt;&lt;br /&gt;5.        断开数据库连接&lt;br /&gt;&lt;br /&gt;db2 force application all&lt;br /&gt;&lt;br /&gt;6.        连接数据库&lt;br /&gt;&lt;br /&gt;db2 connect to &lt;db name&gt; user &lt;username&gt; using &lt;password&gt;&lt;br /&gt;&lt;br /&gt;7.        断开数据库连接&lt;br /&gt;&lt;br /&gt;断开当前数据库连接：db2 connect reset&lt;br /&gt;&lt;br /&gt;或者：db2 disconnect current&lt;br /&gt;&lt;br /&gt;断开所有数据库的连接：db2 disconnect all&lt;br /&gt;&lt;br /&gt;8.        备份数据库&lt;br /&gt;&lt;br /&gt;db2 backup db &lt;db name&gt;&lt;br /&gt;&lt;br /&gt;备注：执行以上命令之前需要断开数据库连接&lt;br /&gt;&lt;br /&gt;9.        恢复数据库&lt;br /&gt;&lt;br /&gt;db2 restore db &lt;source db name&gt;&lt;br /&gt;&lt;br /&gt;10.    导出数据文件&lt;br /&gt;&lt;br /&gt;db2move &lt;db name&gt; export [-sn &lt;模式名称，一般为db2admin&gt;] [-tn  &lt;表名，多个之间用逗号分隔&gt;]&lt;br /&gt;&lt;br /&gt;11.    导入数据文件&lt;br /&gt;&lt;br /&gt;db2move &lt;db name&gt; import&lt;br /&gt;&lt;br /&gt;12.    列出数据库中所有db&lt;br /&gt;&lt;br /&gt;db2 list db directory&lt;br /&gt;&lt;br /&gt;13.    进入db2命令环境&lt;br /&gt;&lt;br /&gt;在“运行”中执行：db2cmd&lt;br /&gt;&lt;br /&gt;14.    获取db2数据库管理配置环境信息      &lt;br /&gt;&lt;br /&gt;db2 get dbm cfg&lt;br /&gt;&lt;br /&gt;15.    获取db2某个数据库数据库管理配置环境信息      &lt;br /&gt;&lt;br /&gt;db2 get db cfg for &lt;db name&gt;&lt;br /&gt;&lt;br /&gt;或者：连接至某个数据库以后执行db2 get db cfg。&lt;br /&gt;&lt;br /&gt;16.    设置联合数据库为可用（默认联合数据库不可用）&lt;br /&gt;&lt;br /&gt;db2 update dbm cfg using federated yes&lt;br /&gt;&lt;br /&gt;17.    更改db2日志空间的大小&lt;br /&gt;&lt;br /&gt;备注：以下命令为了防止db2数据库过份使用硬盘空间而设，仅用于开发者自己机器上的db2，如果是服务器，则参数需要修改。&lt;br /&gt;&lt;br /&gt;db2 UPDATE DB CFG FOR &lt;db name&gt; USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600;&lt;br /&gt;&lt;br /&gt;如果页大小是4KB，则以上命令创建3个100M的日志文件，占用300MB硬盘空间。25600*4KB=102400KB。&lt;br /&gt;&lt;br /&gt;18.    创建临时表空间&lt;br /&gt;&lt;br /&gt;DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) EXTENTSIZE 256&lt;br /&gt;&lt;br /&gt;19.    获取数据库管理器的快照数据&lt;br /&gt;&lt;br /&gt;db2 –v get snapshot for dbm&lt;br /&gt;&lt;br /&gt;20.    显示进行程号&lt;br /&gt;&lt;br /&gt;db2 list applications show detail&lt;br /&gt;&lt;br /&gt;21.    调查错误&lt;br /&gt;&lt;br /&gt;sqlcode:产品特定错误码；&lt;br /&gt;&lt;br /&gt;sqlstate:DB2系列产品的公共错误码，符合ISO/ANSI 92SQL标准。&lt;br /&gt;&lt;br /&gt;调查sqlcode : db2 ? sql1403n&lt;br /&gt;&lt;br /&gt;调查sqlstate: db2 ? 08004&lt;br /&gt;&lt;br /&gt;22.    创建表空间&lt;br /&gt;&lt;br /&gt;rem 创建缓冲池空间 8K&lt;br /&gt;&lt;br /&gt;db2 connect to gather&lt;br /&gt;&lt;br /&gt;db2 CREATE BUFFERPOOL STMABMP IMMEDIATE  SIZE 25000 PAGESIZE 8K&lt;br /&gt;&lt;br /&gt;rem 创建表空间：STMA&lt;br /&gt;&lt;br /&gt;rem 必须确认路径正确&lt;br /&gt;&lt;br /&gt;rem D:\DB2Container\Stma&lt;br /&gt;&lt;br /&gt;db2 drop tablespace stma&lt;br /&gt;&lt;br /&gt;db2 CREATE  REGULAR TABLESPACE STMA PAGESIZE 8 K  MANAGED BY SYSTEM  USING ('D:\DB2Container\Stma' ) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL  STMABMP  DROPPED TABLE RECOVERY OFF&lt;br /&gt;&lt;br /&gt;db2 connect reset&lt;br /&gt;&lt;br /&gt;23.     将暂挂的数据恢复到前滚状态&lt;br /&gt;&lt;br /&gt;db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE NORETRIEVE&lt;br /&gt;&lt;br /&gt;24.    备份表空间&lt;br /&gt;&lt;br /&gt;BACKUP DATABASE YNDC TABLESPACE ( USERSPACE1 ) TO "D:\temp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING&lt;br /&gt;&lt;br /&gt;25.    创建db2工具数据库&lt;br /&gt;&lt;br /&gt;db2 create tools catalog systools create new database toolsdb&lt;br /&gt;&lt;br /&gt;26.    如何进行增量/差量备份&lt;br /&gt;&lt;br /&gt;增量：上一次完整备份至本次备份之间增加的数据部分；&lt;br /&gt;&lt;br /&gt;差量(delta)：上次备份以来（可能是完整备份、增量备份或者差量备份）至本次备份之间增加的数据部分；&lt;br /&gt;&lt;br /&gt;27.    更新所有表的统计信息&lt;br /&gt;&lt;br /&gt;db2 -v connect to DB_NAME&lt;br /&gt;&lt;br /&gt;db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"&lt;br /&gt;&lt;br /&gt;db2 -v reorgchkupdate statistics on table all&lt;br /&gt;&lt;br /&gt;db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"&lt;br /&gt;&lt;br /&gt;db2 -v terminate&lt;br /&gt;&lt;br /&gt;28.    对一张表运行统计信息&lt;br /&gt;&lt;br /&gt;db2 -v runstatson table TAB_NAMEand indexes all&lt;br /&gt;&lt;br /&gt;29.    查看是否对数据库执行了RUNSTATS&lt;br /&gt;&lt;br /&gt;db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"&lt;br /&gt;&lt;br /&gt;30.    更改缓冲池的大小&lt;br /&gt;&lt;br /&gt;缓冲池中，当syscat.bufferpools的npages是-1时，由数据库的配置参数bufferpage控制缓冲池的大小。&lt;br /&gt;&lt;br /&gt;将npages的值更改为-1的命令：&lt;br /&gt;&lt;br /&gt;db2 -v connect to DB_NAME&lt;br /&gt;&lt;br /&gt;db2 -v select * from syscat.bufferpools&lt;br /&gt;&lt;br /&gt;db2 -v alter bufferpoolIBMDEFAULTBP size -1&lt;br /&gt;&lt;br /&gt;db2 -v connect reset&lt;br /&gt;&lt;br /&gt;db2 -v terminate&lt;br /&gt;&lt;br /&gt;更改数据库配置参数BufferPages的命令如下：&lt;br /&gt;&lt;br /&gt;db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value&lt;br /&gt;&lt;br /&gt;db2 -v terminate&lt;br /&gt;&lt;br /&gt;31.    查看数据库监视内容列表&lt;br /&gt;&lt;br /&gt;db2 -v get monitor switches&lt;br /&gt;&lt;br /&gt;32.    打开某个数据库监视内容&lt;br /&gt;&lt;br /&gt;db2 -v update monitor switches using bufferpoolon&lt;br /&gt;&lt;br /&gt;33.    获取数据库快照&lt;br /&gt;&lt;br /&gt;db2 -v get snapshot for all databases &gt; snap.out&lt;br /&gt;&lt;br /&gt;db2 -v get snapshot for dbm&gt;&gt; snap.out&lt;br /&gt;&lt;br /&gt;db2 -v get snapshot for all bufferpools&gt;&gt; snap.out&lt;br /&gt;&lt;br /&gt;db2 -v terminate&lt;br /&gt;&lt;br /&gt;34.    重置数据库快照&lt;br /&gt;&lt;br /&gt;db2 -v reset monitor all&lt;br /&gt;&lt;br /&gt;35.    计算缓冲池命中率&lt;br /&gt;&lt;br /&gt;理想情况下缓冲池命中率在95%以上，计算公式如下：&lt;br /&gt;&lt;br /&gt;(1 -((buffer pool data physical reads + buffer pool index physical reads) /(buffer pool data logical reads + pool index logical reads))) *100%&lt;br /&gt;&lt;br /&gt;36.     创建db2实例&lt;br /&gt;&lt;br /&gt;db2icrt &lt;实例名称&gt;&lt;br /&gt;&lt;br /&gt;37.    删除db2实例&lt;br /&gt;&lt;br /&gt;db2idrop &lt;实例名称&gt;&lt;br /&gt;&lt;br /&gt;38.    设置当前db2实例&lt;br /&gt;&lt;br /&gt;set db2intance=db2&lt;br /&gt;&lt;br /&gt;39.     显示db2拥有的实例&lt;br /&gt;&lt;br /&gt;db2ilist&lt;br /&gt;&lt;br /&gt;40.    恢复离线增量备份数据库的命令&lt;br /&gt;&lt;br /&gt;DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM D:\backup\autobak\db2 TAKEN AT 20060314232015&lt;br /&gt;&lt;br /&gt;41.     创建样本数据库&lt;br /&gt;&lt;br /&gt;在unix平台，使用：sqllib/bin/db2sampl &lt;path&gt;&lt;br /&gt;&lt;br /&gt;在windows,os/2平台，使用：db2sampl e,e是可选参数，指定将创建数据库的驱动器；&lt;br /&gt;&lt;br /&gt;42.     列出数据库中所有的表&lt;br /&gt;&lt;br /&gt;db2 list tables&lt;br /&gt;&lt;br /&gt;43.     列出某个表的数据结构&lt;br /&gt;&lt;br /&gt;db2 describe table v_ro_role&lt;br /&gt;&lt;br /&gt;44.    给表增加列&lt;br /&gt;&lt;br /&gt;ALTER TABLE STAFF  ADD COLUMN PNHONE VARCHAR(20)&lt;br /&gt;&lt;br /&gt;45.    数据迁移方法1&lt;br /&gt;&lt;br /&gt;export脚本示例&lt;br /&gt;db2 connect to testdb user test password test&lt;br /&gt;db2 "export to aa1.ixf of ixf select * from table1"&lt;br /&gt;db2 "export to aa2.ixf of ixf select * from table2"&lt;br /&gt;db2 connect reset&lt;br /&gt;import脚本示例&lt;br /&gt;db2 connect to testdb user test password test&lt;br /&gt;db2 "load from aa1.ixf of ixf  replace into table1  COPY NO  without prompting "&lt;br /&gt;db2 "load from aa2.ixf of ixf  replace into table2  COPY NO  without prompting "&lt;br /&gt;db2 connect reset&lt;br /&gt;&lt;br /&gt;46.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-3883060239643353666?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/3883060239643353666/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=3883060239643353666' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/3883060239643353666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/3883060239643353666'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/db2_19.html' title='DB2常用命令集'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-7249474122883374366</id><published>2007-12-19T20:27:00.000+01:00</published><updated>2007-12-19T20:28:06.894+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DB2'/><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>db2常用操作笔记</title><content type='html'>db2常用操作笔记    &lt;br /&gt;&lt;br /&gt;d:\winnt\system32\drivers\etc\services文件是对机器名到IP地址的解析。&lt;br /&gt;d:\winnt\system32\drivers\etc\hosts文件是对端口名到端口号的解析。&lt;br /&gt;以上两条上非DB2的，但在DB2中使用到。&lt;br /&gt;&lt;br /&gt;db2admin start 起动DB2管理&lt;br /&gt;&lt;br /&gt;DB2里对一个命令的HELP是:&lt;br /&gt;&gt;db2 ? 该命令&lt;br /&gt;&lt;br /&gt;db2 连接到远程数据库&lt;br /&gt;第一步建一个结点：&lt;br /&gt;&gt;db2 catalog tcpip node 结点名 remote 数据库服务器IP地址 server 端口(50000)&lt;br /&gt;第二步建一个到库的联结别名：&lt;br /&gt;&gt;db2 catalog db 库名 as 别名 at node 结点名&lt;br /&gt;第三步建立联结：&lt;br /&gt;&gt;db2 connect to 别名 user 用户名 using 用户密码&lt;br /&gt;断开联结：&lt;br /&gt;db2 connect reset&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;db2里需要用到一个系统环境变量：db2codepage， 缺省值是1386，此值非常重要，客户端于数据库端的db2codepage不一样时客户端就无法连上数据库端。&lt;br /&gt;&lt;br /&gt;DB2里一个表的全名是：schema.表名，缺什情况下不同的用户看到的表是不一样的，&lt;br /&gt;在程序的sql语句里必需用表的全名(切记)。&lt;br /&gt;&lt;br /&gt;查看有哪些程序在使用该数据库：&lt;br /&gt;&gt;db2 list application&lt;br /&gt;其结果中有一个字段application-handle在杀死该引用中用到&lt;br /&gt;&lt;br /&gt;杀死一个程序对该数据库的使用:&lt;br /&gt;&gt;db2 force application {all | (application-handle)}&lt;br /&gt;&lt;br /&gt;在库被使用时db2stop不能执行&lt;br /&gt;&lt;br /&gt;DB2命令后所带参数：&lt;br /&gt;-t 以；作为一句结束&lt;br /&gt;-f 指向一个文件(即执行一个文件中的语句，在command窗口里有些命令无法执行，可先用notepad建一个文件然后执行它)&lt;br /&gt;-v (我不知道是什么)&lt;br /&gt;注释：-v用于显示当前所执行的sql命令。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一个windows nt 里的一般用户可以连到库，但无一般SQL语句的执行权，授权给一个用户：&lt;br /&gt;&gt;db2 grant sql语句(例如：select) on 表名 to user 用户名&lt;br /&gt;取消该用户的权：&lt;br /&gt;&gt;db2 revoke sql语句 on 表名 from 用户名&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DB2日志有两种：循环日志和永久型日志&lt;br /&gt;循环日志：有3个文件循环写，所以会产生以前的操作记录被覆盖。好处：日志文件大小不变，备份方便，但不可以在线备份。&lt;br /&gt;永久日志：其日志文件不断增涨，但操作记录不会被覆盖，可以在线备份。&lt;br /&gt;&lt;br /&gt;如何备份：&lt;br /&gt;&gt;db2 backup db 数据库名 to 设备名(如：c:\);&lt;br /&gt;恢复：&lt;br /&gt;&gt;db2 restore db 数据库名 from 设备名&lt;br /&gt;(回滚rollforward我不太清楚)&lt;br /&gt;注释：rollforword 是前滚的意思，向前到某一个时间，以保持数据的一致性，用于在线备份后的恢复，恢复是从log日志中开始到日志中的某一个时间，即可。只有在数据一致性得到保证的情况下，才能继续对数据库操作。&lt;br /&gt;&lt;br /&gt;连接到数据库时报回滚错误&lt;br /&gt;用下面的命令：&lt;br /&gt;db2 rollforward db fmisadd to end of logs and complete&lt;br /&gt;&lt;br /&gt;导出导入数据库：&lt;br /&gt;--export&lt;br /&gt;db2move hadb export -u userid -p password;&lt;br /&gt;--import&lt;br /&gt;db2move hadb import -u userid -p password;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;导出库中表的数据：&lt;br /&gt;&gt;export to 文件名.ixf of ixf select * from 表名&lt;br /&gt;&gt;import from 文件名.ixf of ixf create into 表名&lt;br /&gt;导出库的数据格式还有两种del(文件格式)和wsf，但ixf格式信息最全，包含表结构信息，可恢复出已删去的表。&lt;br /&gt;&lt;br /&gt;sql的inner/left/right/full join，这些概念在&lt;&lt;数据库概论&gt;&gt;中有说明，left以左表为主，right以右表为主，full左右表记录都会在查寻结果中。&lt;br /&gt;例如：&gt;select aa,bb from db1 left join db2 on db1.id=db2.id&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;合并查寻：把两个或几个查寻结果合并到一个字段(条件是字段必须兼容)&lt;br /&gt;格式：select ...... union select ....；&lt;br /&gt;&lt;br /&gt;使用临时表：&lt;br /&gt;with tmptable (字段1，...) as (select....)   --建一个临时表&lt;br /&gt;select 字段1,.... from tmptable,另一个表 where....   --使用该临时表于另一个表交叉查寻。&lt;br /&gt;**order by 必需出现在结果集，在临时表中不能用。&lt;br /&gt;&lt;br /&gt;截取字符串&lt;br /&gt;substr(字段名,开始位置,字符个数)&lt;br /&gt;&lt;br /&gt;判断是否是空&lt;br /&gt;字段名 is null&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;例子：&lt;br /&gt;到什么时候活了10000天:&lt;br /&gt;select distinct date('1980-01-01')+10000 day from a&lt;br /&gt;一共活了多少天:&lt;br /&gt;select distinct days(current date)-days(date('1980-01-01')) from a&lt;br /&gt;&lt;br /&gt;类型转换：用cast ,例：&lt;br /&gt;select distinct cast(current date as char(10))||'aa' from a&lt;br /&gt;&lt;br /&gt;case的使用：&lt;br /&gt;select case when length(rtrim(学历))=0 then '未知学历' else xl end,rs from a&lt;br /&gt;例：查寻一个公司的年龄分布：&lt;br /&gt;with tmptable as (select case when year(current day)-csrq&lt;20 then '小于20岁'                                                    when year(current day)-csrq&lt;25 then '20-24岁'                                                     when year(current day)-csrq&lt;30 then '25-29岁'&lt;br /&gt;                              when year(current day)-csrq&lt;35 then '30-34岁'&lt;br /&gt;                              when year(current day)-csrq&lt;40 then '35-39岁'&lt;br /&gt;                              when year(current day)-csrq&lt;45 then '40-44岁'&lt;br /&gt;                              when year(current day)-csrq&lt;50 then '45-49岁' else '大于50岁' end&lt;br /&gt;as x from a)&lt;br /&gt;select x,count(*) from tmptable group by x;&lt;br /&gt;&lt;br /&gt;一个数据库中有些系统建的表是用来保存该库各种信息的，如：syscat.tables&lt;br /&gt;例：查有多少个userid的表：&lt;br /&gt;select count(*) from syscat.tables where type='T' and tabschema='uerid'&lt;br /&gt;例：产生一个备分库中所有表的文本：&lt;br /&gt;select 'export to '|| tabname || '.ixf of ixf select * from userid.' ||tabname||';' from syscat.tables where type='T' and tabschema='userid';&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;性能调整：&lt;br /&gt;影响到DB2性能的有：&lt;br /&gt;能够利用服务器的性能：1.并行性 2.减少通信&lt;br /&gt;&lt;br /&gt;建立Index&lt;br /&gt;  &lt;,&gt;,=      第一类搜索谓词，&lt;br /&gt;  &lt;&gt;,like    第二类搜索谓词，&lt;br /&gt;  需要用函数 第三类搜索谓词，&lt;br /&gt;&lt;br /&gt;select * from a&lt;br /&gt;*尽量要哪个字段写哪个字段。&lt;br /&gt;&lt;br /&gt;blocking的概念      客户端请求一次，数据库返回n个记录。&lt;br /&gt;&lt;br /&gt;复合型SQL(我不太清楚)&lt;br /&gt;注释：是指他所讲的联结union，建立临时表等复杂的sql语句。&lt;br /&gt;&lt;br /&gt;DB2会对SQL语句优化，系统对表的信息知道的越多，优化越好，所以要做runstats&lt;br /&gt;runstats命令把表的信息告诉系统，一般当数据量增加一倍时用该命令一次。&lt;br /&gt;&lt;br /&gt;REORG命令是数据库整理，类似于磁盘碎片整理。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;得到该instance的各种参数：(dbm cfg是整个DB2的参数，db cfg是对某个数据库的参数)&lt;br /&gt;&gt;db2 get dbm cfg&lt;br /&gt;&gt;db2 get db cfg for 数据库名&lt;br /&gt;修改参数：&lt;br /&gt;&gt;db2 update dbm cfg using 参数 你要的数&lt;br /&gt;&gt;db2 update db cfg for 数据库名 using 参数 你要的数&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;当第一个用户连结到该数据库时会申请一个内存缓冲，默认是250页每页4k即1M。&lt;br /&gt;Buffer pool size&lt;4K&gt;  [BUFFPAGE]=250&lt;br /&gt;修改该值：&lt;br /&gt;&gt;db2 update db cfg for test using buffpage 你要的数&lt;br /&gt;但它的有效还取决于syscat.bufferpools中的npages是否为-1，为-1时它才有效，否则以syscat.bufferpols中的npage为准。&lt;br /&gt;可用下面的命令看：&lt;br /&gt;&gt;select * from syscat.bufferpools&lt;br /&gt;一般此值的设置应为系统内存的40％左右，太大时会使系统因动用虚拟内存从而太吃力。&lt;br /&gt;&lt;br /&gt;sql语句的优化级别：一般取2或5（最高为9）&lt;br /&gt;Default query optinization class      &lt;DFT_QUENYOPT&gt;=5&lt;br /&gt;该值越大优化越好，但优化所化时间也越长。&lt;br /&gt;&lt;br /&gt;并行性设置：&lt;br /&gt;Degree=-1 并行性全由操作系统完成。&lt;br /&gt;当操作系统有并行处理时，Degree=-1&lt;br /&gt;*****CUP与硬盘的个数一般为1:4到1:6;&lt;br /&gt;&lt;br /&gt;用户最大连结数：&lt;br /&gt;&lt;MAXAPPLS&gt;=40&lt;br /&gt;BUFFPAGE与MAXPPLS的关系：BUFFPAGE&gt;2*MXAPPLS&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=290057&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-7249474122883374366?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/7249474122883374366/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=7249474122883374366' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7249474122883374366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7249474122883374366'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/db2.html' title='db2常用操作笔记'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-2455137158001724456</id><published>2007-12-19T15:56:00.001+01:00</published><updated>2007-12-19T15:56:44.953+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Firefox 快捷键</title><content type='html'>转：Firefox 快捷键大全(2.0版)&lt;br /&gt;作者：大徐 发表时间：2006-11-06 10:59:02&lt;br /&gt;版权声明：可以任意转载，转载时请务必以超链接形式标明文章原始出处。&lt;br /&gt;http://daxu.net/archives/434.html&lt;br /&gt;Firefox 键盘快捷键&lt;br /&gt;导航类&lt;br /&gt;后退： Alt+左方向键 或 Backspace&lt;br /&gt;前进： Shift+Backspace 或 Alt+右方向键&lt;br /&gt;首页： Alt+Home&lt;br /&gt;打开文件： Ctrl+O&lt;br /&gt;重新载入： F5 或 Ctrl+R&lt;br /&gt;重新载入 (忽略缓存)： Ctrl+F5 或 Ctrl+Shift+R&lt;br /&gt;停止： Esc&lt;br /&gt; &lt;br /&gt;当前页&lt;br /&gt;到页面底部： End&lt;br /&gt;到页面顶部： Home&lt;br /&gt;移到下一帧： F6 &lt;br /&gt;移到上一帧： Shift+F6&lt;br /&gt;页面源代码： Ctrl+U&lt;br /&gt;打印： Ctrl+P&lt;br /&gt;页面另存为： Ctrl+S&lt;br /&gt;放大文字： Ctrl++&lt;br /&gt;缩小文字： Ctrl+-&lt;br /&gt;恢复文本大小： Ctrl+0&lt;br /&gt; &lt;br /&gt;编辑&lt;br /&gt;复制： Ctrl+C&lt;br /&gt;剪切： Ctrl+X&lt;br /&gt;删除： Del&lt;br /&gt;粘贴： Ctrl+V&lt;br /&gt;重做： Ctrl+Y&lt;br /&gt;全选： Ctrl+A&lt;br /&gt;撤消： Ctrl+Z&lt;br /&gt; &lt;br /&gt;搜索&lt;br /&gt;本页查找： Ctrl+F&lt;br /&gt;再次查找： F3&lt;br /&gt;输入查找链接： '&lt;br /&gt;输入查找文本： /&lt;br /&gt;查找： Shift+F3&lt;br /&gt;网页搜索： Ctrl+K 或 Ctrl+E&lt;br /&gt; &lt;br /&gt;窗口和标签&lt;br /&gt;关闭标签： Ctrl+W 或 Ctrl+F4&lt;br /&gt;关闭窗口： Ctrl+Shift+W 或 Alt+F4&lt;br /&gt;向左移动标签： Ctrl+左方向键 或 Ctrl+上方向键&lt;br /&gt;向右移动标签： Ctrl+右方向键 或 Ctrl+下方向键&lt;br /&gt;移动标签到开头： Ctrl+Home&lt;br /&gt;移动标签到结尾： Ctrl+End&lt;br /&gt;新建标签页： Ctrl+T&lt;br /&gt;新建窗口： Ctrl+N&lt;br /&gt;下一个标签页： Ctrl+Tab 或 Ctrl+PageDown&lt;br /&gt;在新标签页打开网址： Alt+Enter&lt;br /&gt;前一个标签页： Ctrl+Shift+Tab 或 Ctrl+PageUp&lt;br /&gt;撤销关闭标签页： Ctrl+Shift+T&lt;br /&gt;选择标签页 [1 to 8]： Ctrl+[1 到 8]&lt;br /&gt;选择最后标签页： Ctrl+9&lt;br /&gt; &lt;br /&gt;工具&lt;br /&gt;添加所有为书签： Ctrl+Shift+D&lt;br /&gt;添加当前为书签： Ctrl+D&lt;br /&gt;打开书签： Ctrl+B 或 Ctrl+I&lt;br /&gt;插入浏览： F7&lt;br /&gt;下载： Ctrl+J&lt;br /&gt;历史： Ctrl+H&lt;br /&gt;清除私有数据： Ctrl+Shift+Del&lt;br /&gt; &lt;br /&gt;其他&lt;br /&gt;补全 .com 地址： Ctrl+Enter&lt;br /&gt;补全 .net 地址： Shift+Enter&lt;br /&gt;补全 .org 地址： Ctrl+Shift+Enter&lt;br /&gt;删除选定的自匹配输入： Del&lt;br /&gt;全屏： F11&lt;br /&gt;选择地址条： Alt+D 或 F6 或 Ctrl+L&lt;br /&gt;选择或管理搜索引擎： Alt+上方向键 或 Alt+下方向键 或 F4&lt;br /&gt;&lt;br /&gt;Firefox 鼠标快捷键&lt;br /&gt;后退： Shift+Scroll down&lt;br /&gt;关闭标签页： 在标签上按鼠标中键&lt;br /&gt;减小文字大小： Ctrl+Scroll up&lt;br /&gt;前进： Shift+Scroll up&lt;br /&gt;增大文字大小： Ctrl+Scroll down&lt;br /&gt;新建标签页： 在标签页栏双击鼠标  &lt;br /&gt;在后台打开标签页： Ctrl+Left-click 或 点击鼠标中键  &lt;br /&gt;在前台打开标签页： Shift+Ctrl+Left-click 或 Shift+点击鼠标中键  &lt;br /&gt;在新窗口打开： Shift+Left-click&lt;br /&gt;刷新 (覆盖缓存)： Shift+Reload button  &lt;br /&gt;保存页面为： Alt+Left-click  &lt;br /&gt;逐行滚动： Alt+Scroll&lt;br /&gt; &lt;br /&gt;以上快捷键由困兽根据 Firefox 2.0 帮助文件整理，适用于 Firefox 2.0 版本。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-2455137158001724456?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/2455137158001724456/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=2455137158001724456' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2455137158001724456'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/2455137158001724456'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/firefox.html' title='Firefox 快捷键'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-5654404370831422800</id><published>2007-12-19T14:43:00.000+01:00</published><updated>2007-12-19T14:44:35.247+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KDE'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>KDE的使用技巧</title><content type='html'>转自 linuxsir ，作者：pluskid&lt;br /&gt;&lt;br /&gt;最近一直用KDE，有一些小技巧，共享出来给大家吧！&lt;br /&gt;&lt;br /&gt;1. 加速 Konqueror 启动：&lt;br /&gt;设置-&amp;gt; 配置 Konqueror -&amp;gt; 性能 -&amp;gt; 预加载:&lt;br /&gt;保留预加载的实例数 设为2&lt;br /&gt;并选中 “KDE 启动之后预加载实例” 和 “必须有一个预加载实例”。&lt;br /&gt;怎么样？现在Konqueror启动是不是快如飞啦？Opera尚比不上，就更别提那个乌龟似的Firefox了。&lt;br /&gt;&lt;br /&gt;2. Konqueror 的标签浏览&lt;br /&gt;和Firefox一样，Ctrl+点击就是在新的标签中打开，更进一步的设置请见：&lt;br /&gt;设置-&amp;gt; 配置 Konqueror -&amp;gt; Web行为 -&amp;gt; 标签式浏览 -&amp;gt; 高级选项&lt;br /&gt;值得注意的是里面的一个“显示关闭按钮而不是网站图标”，选中之后，标签上就有一个可以直接点击就关掉标签的按钮了。&lt;br /&gt;&lt;br /&gt;3. Konqueror “狗皮膏药”&lt;br /&gt;按一下 Ctrl ，是不是屏幕上出来一些稀奇古怪的黄颜色的像狗皮膏药一样的东西？其实那是为了笔记本的用户设计的，你看没一个膏药里面都有一个对应键盘上的数字或者字母，按那个键就好比用鼠标点击了那个“膏药”处一样，当然，膏药都是在网页上的链接呀、按钮呀之类的地方出现的，这可是一个很人性化的设置哟！如果你不喜欢，在 ~/.kde/share/config/konquerorrc 里面加入：&lt;br /&gt;[Access Keys]&lt;br /&gt;Enabled=false&lt;br /&gt;就可以禁用了。&lt;br /&gt;&lt;br /&gt;4. Konqueror 上选课网&lt;br /&gt;设置-&amp;gt; 配置 Konqueror -&amp;gt; 浏览器识别&lt;br /&gt;里面新建，把 10.10.10.32, 10.10.10.33, 10.10.10.34 (不知道教务网怎么网址是变来变去的）都分别添加进去，并选择标识为IE 6.0 on Windows XP 就可以正常访问选课网了。&lt;br /&gt;&lt;br /&gt;5. Konqueror flash插件&lt;br /&gt;如果你给 Mozilla 或者 Firefox 装过 flash 的插件&lt;br /&gt;设置-&amp;gt; 配置 Konqueror -&amp;gt; 插件&lt;br /&gt;扫描新插件 就可以扫描到 Firefox 的 flash 插件，就可以正常使用了。&lt;br /&gt;&lt;br /&gt;6. Konqueror 的速搜&lt;br /&gt;在地址栏输入&lt;br /&gt;gg:Konqueror&lt;br /&gt;是不是就连接上了 google搜索 Konqueror 了？你可以在&lt;br /&gt;设置-&amp;gt; 配置 Konqueror -&amp;gt; 速搜&lt;br /&gt;里面配置，我是把 gg 的网址改成了 www.google.cn 了的，这样会快一点嘛。&lt;br /&gt;&lt;br /&gt;7. 鼠标手势&lt;br /&gt;KDE 里面不止Konqueror可以使用鼠标手势，任何地方都可以使用鼠标手势，在&lt;br /&gt;控制中心 -&amp;gt; 区域和辅助功能 -&amp;gt; 输入动作&lt;br /&gt;里面可以配置鼠标手势，请注意，要启用鼠标手势，请点击右下的“全局设置”，并把“手势设置”一栏里面的“全局禁用鼠标手势”选项前面的勾去掉。&lt;br /&gt;&lt;br /&gt;8. Konqueror 中键点击关闭标签&lt;br /&gt;本来是用那个按钮关闭标签，后来不想用按钮了，用鼠标手势，我现在已经很习惯中键点击关闭标签了，要实现这个功能，只要在 ~/.kde/share/config/konquerorrc 里面的 [FMSettings] 一节里面加入&lt;br /&gt;MouseMiddleClickClosesTab=true&lt;br /&gt;就可以了，如果不行的话，请在 设置-&amp;gt; 配置 Konqueror -&amp;gt; Web行为 -&amp;gt; 标签式浏览 里面把鼠标行为里面的“中键单击打开选中的URL”前面的勾去掉。&lt;br /&gt;&lt;br /&gt;9. yakuake 超酷终端！&lt;br /&gt;apt-get install yakuake&lt;br /&gt;然后运行yakuake，恩？没有反应？按一下F12，哈哈！屏幕上方出现了一个终端！按F12它有缩回去了。你可以配置成失去焦点之后自动缩回去，可以改变大小，其他配置都是共享 Konsole 的配置方法的，设置背景、颜色之类的，有几个默认快捷键：Ctrl+Shift+N 新建标签。Shift+Right转到右边一个标签。Shift+Left转到左边一个标签。呵呵！真的很方便哟！用了这个之后，我再也没有开过其他终端了。不要再犹豫了，做个链接，让他随着KDE的启动而启动吧！&lt;br /&gt;ln -s /usr/bin/yakuake ~/.kde/Autostart/&lt;br /&gt;&lt;br /&gt;10. 加速 KDE&lt;br /&gt;是不是觉得 KDE 有时候有些地方显示有点慢甚至很慢？其实这是 KDE 现在的一个 Bug，就是字体的问题，在&lt;br /&gt;控制中心 -&amp;gt; 外观和主题 -&amp;gt; 字体&lt;br /&gt;那里面看看，如果有设置为 Monospace 或者是 Serif 、 Sans Serif 的，把他改成其他的你喜欢的字体就可以加快KDE的速度。因为 Serif 这些字体其实是 fontconfig 虚拟出来的字体，而KDE现在在处理这个问题上会造成性能很大的下降，官方说的是一个Bug，希望以后会改正。同理，在 Konqueror 的设置里面更改字体也可以提升 Konqueror 的性能。我以前 Konqueror 的地址栏的那个下拉列表，每次我输入网址至少都要4、5秒种，郁闷死了，改过之后就基本上没有延迟了。如果你想使用fontconfig那类似的字体替换，例如，英文使用Courier New,而中文使用SimSun，请参见[11. 用 qtconfig 来实现字体替换]&lt;br /&gt;&lt;br /&gt;11. 用 qtconfig 来实现字体替换&lt;br /&gt;apt-get install qt3-qtconfig&lt;br /&gt;现在，运行qtconfig，选 Fonts 一栏。左边有说明的，如果不愿意看，直接设置把，那儿“Font Substitution”的地方，在"Select or enter a family" 那儿选择要替换的字体，比如 Tahoma ，然后在下面 "select substitute family" 选择一种中文字体，比如 SimSun ，然后按 Add。就是这类似的步骤，现在，你可以选择系统的字体为 Tahoma 了，系统使用 Tahoma 字体，但是当他遇到中文字体而 Tahoma 这种英文字体里面不能找到中文字体的时候，就会依次查找你设置的替换字体列表，现在，他找到了 SimSun ，OK！中文就用SimSun来显示了。这有点类似fontconfig的那一套吧？不过这是针对qt程序的，其实KDE就是基于Qt的嘛！^_^&lt;br /&gt;&lt;br /&gt;12. 窗口遍历&lt;br /&gt;左边 Alt + Tab 就是遍历窗口，右边Alt+Tab 就是在最近使用的两个窗口之间来回切换。（有些网友说他的刚好相反，我还没有找到这个是在哪儿设置的呢，呵呵！）&lt;br /&gt;在 控制中心 -&amp;gt; 桌面 -&amp;gt; 窗口行为 -&amp;gt; 导航 里面可以设置一些具体的东西。另外 Ctrl+Tab 是用来在桌面之间切换的，不过被我禁用掉了，因为我把这个快捷键用到我的Emacs里面去了。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;13. 鼠标单击还是双击的问题&lt;br /&gt;很多朋友都习惯了双击打开文件，但是Konqueror默认是单击打开的，而且Konqueror里面还没有设置选项。其实是可以设置的，但是是在另外一个地方： 控制中心 -&amp;gt; 外设 -&amp;gt; 鼠标 里面改。不过，我还是喜欢单击，习惯了之后，你会发现单击比双击要舒服哟！&lt;br /&gt;&lt;br /&gt;14. Konqueror 里面查看 man 、info&lt;br /&gt;在地址栏输入：man:/konqueror 就可以查看 konqueror 的 man page了。同理，输入 info:/cvs 就可以查看 cvs 的 info 文档。当然，前提是里的系统里面装了这些文档。直接输入 info: 会打开一个系统里面的 info 列表。man也是一样，作为一个快捷输入，你可以输入 “#” 来代替 “man:/”，比如： #kate&lt;br /&gt;&lt;br /&gt;15. Konqueror 里面通过 ssh 进行远程文件管理&lt;br /&gt;在地址栏输入 fish://user@host 然后按提示输入密码，怎么样？远程文件出现了吧？可以直接预览图像呀之类的，这可比开一个远程的X程序要快得多哟！也可以直接编辑远程文件，但是必须用 KDE的那些程序如Kate之类的，好像是用到kio还是什么吧？反正是很方便的哟！&lt;br /&gt;&lt;br /&gt;16. Konqueror 的拼写检查&lt;br /&gt;这个功能会造成文本框输入很慢，而且像我们这样经常输入代码（被Konqueror检查就是一大堆错别字），几乎用不上那个功能，但是这个又不能永久关掉。其实，你可以配置拼写检查，把他改成你没有的拼写检查工具就可以了，例如，我设置的是 zemberek 土耳其语。 这下感觉好多了。&lt;br /&gt;&lt;br /&gt;Koqueror的常见问题，很多有用的Tip&lt;br /&gt;&lt;br /&gt;http://www.konqueror.org/faq/&lt;br /&gt;&lt;br /&gt;其实有不少问题，认真阅读KDE的帮助中心，会找到答案，帮助中心中也有不少所谓Tips &amp; Tricks，比如一些影响KDE的环境变量如`KDE_DEBUG', `KDE_NO_IPV6', `KDE_LANG'等。但也有一些隐藏的，只有通过配置文件才能修改的设置，希望大家补充。&lt;br /&gt;&lt;br /&gt;比如说在&lt;br /&gt;~/.kde/share/config/konqsidebartng.rc&lt;br /&gt;&lt;br /&gt;开头加入&lt;br /&gt;ShowArchivesAsFolders=false&lt;br /&gt;&lt;br /&gt;这样文件管理器视图的侧边栏中的目录树中就不会出现归档文件了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-5654404370831422800?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/5654404370831422800/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=5654404370831422800' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/5654404370831422800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/5654404370831422800'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/kde.html' title='KDE的使用技巧'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-7509128081705110802</id><published>2007-12-19T00:57:00.000+01:00</published><updated>2007-12-19T00:59:10.977+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><title type='text'>c学习笔记 tag1</title><content type='html'>今天才知道，原来link还要加 -lm， sign。。&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt; *      pol_draw.c&lt;br /&gt; *      &lt;br /&gt; *      Copyright 2007 kaiyuan &lt;zhu.kaiyuan@gmail.com&gt;&lt;br /&gt; *      &lt;br /&gt; *      This program is free software; you can redistribute it and/or modify&lt;br /&gt; *      it under the terms of the GNU General Public License as published by&lt;br /&gt; *      the Free Software Foundation; either version 2 of the License, or&lt;br /&gt; *      (at your option) any later version.&lt;br /&gt; *      &lt;br /&gt; *      This program is distributed in the hope that it will be useful,&lt;br /&gt; *      but WITHOUT ANY WARRANTY; without even the implied warranty of&lt;br /&gt; *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&lt;br /&gt; *      GNU General Public License for more details.&lt;br /&gt; *      &lt;br /&gt; *      You should have received a copy of the GNU General Public License&lt;br /&gt; *      along with this program; if not, write to the Free Software&lt;br /&gt; *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,&lt;br /&gt; *      MA 02110-1301, USA.&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include &lt;math.h&gt;&lt;br /&gt;&lt;br /&gt;int main(int argc, char** argv)&lt;br /&gt;{&lt;br /&gt; double y;&lt;br /&gt; int x,m,n,yy;&lt;br /&gt; &lt;br /&gt; for(yy=0; yy&lt;=20; yy++){&lt;br /&gt;  y=0.1 * yy;&lt;br /&gt;  m=acos(1-y)+31;&lt;br /&gt;  n=45 * (y-1) + 31;&lt;br /&gt;  &lt;br /&gt;  for(x=0; x&lt;=62; x++)&lt;br /&gt;   if(x==m &amp;&amp; x==n)&lt;br /&gt;    printf("+");&lt;br /&gt;   else if(x==n)&lt;br /&gt;    printf("+");&lt;br /&gt;   else if(x==m || x==62-m)&lt;br /&gt;    printf("*");&lt;br /&gt;   else&lt;br /&gt;    printf(" ");&lt;br /&gt;   printf("\n");&lt;br /&gt; }&lt;br /&gt; return 0;&lt;br /&gt;}&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-7509128081705110802?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/7509128081705110802/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=7509128081705110802' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7509128081705110802'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/7509128081705110802'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/c-tag1.html' title='c学习笔记 tag1'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-4808565370316391319</id><published>2007-12-18T12:16:00.000+01:00</published><updated>2007-12-18T12:17:39.552+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Bib Tex 使用笔记（引）</title><content type='html'>这里记录一下今天练习使用BibTex，插入Latex文件的经历。另外，也建议大家，如果的话，不要直接跑盗版软件摊，先搜一下google的free software，估计这种软件的存在。是不是？不做开发者，但是好的使用者也会让作者有激情继续下去。&lt;br /&gt;&lt;br /&gt;我是在sourceforge.net找到的JabRef，是一个java程序。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;另外，找到一个教程，叫做how to use Bibtex，网址是：&lt;br /&gt;&lt;br /&gt;http://cmtw.harvard.edu/Documentation/TeX/Bibtex/Example.html&lt;br /&gt;&lt;br /&gt;我首先做的是安装BiBtex，因为先前已经安装了Latex，现在只需要apt-get 一下Bibtex就好了，另外选了几个相关的工具包，包括一个python的图形界面的工具，但是感觉没有JabRef强。名字叫做pyBibliographer。&lt;br /&gt;&lt;br /&gt;笔记：&lt;br /&gt;&lt;br /&gt;先建立一个bib文件，命名为qhe.bib，内容大家熟悉html或者latex的话，应该很容易理解。内容为：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;@STRING(PRL="Phys. Rev. Lett.")&lt;br /&gt;@STRING(RMP="Rev. Mod. Phys.")&lt;br /&gt;&lt;br /&gt;@ARTICLE{klitzing:qhe,&lt;br /&gt;   AUTHOR="K. von Klitzing and G. Dorda and M. Pepper",&lt;br /&gt;   TITLE="New method for high accuracy determination of fine structure&lt;br /&gt;            constant based on quantised hall resistance",&lt;br /&gt;   JOURNAL=PRL,&lt;br /&gt;   VOLUME=45,&lt;br /&gt;   PAGES=494,&lt;br /&gt;   YEAR=1980&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;@ARTICLE{klitzing:nobel,&lt;br /&gt;   AUTHOR="Klaus von Klitzing",&lt;br /&gt;   TITLE="The Quantised Hall Effect",&lt;br /&gt;   JOURNAL=RMP,&lt;br /&gt;   VOLUME=58,&lt;br /&gt;   PAGES=519,&lt;br /&gt;   YEAR=1986&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;然后建立tex文件，在文件里用~\cite去引用参考文献。每个bibliography都有一个key，这个就是代号，用于引用作用。见例子：&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;\documentstyle{article}&lt;br /&gt;\begin{document}&lt;br /&gt;&lt;br /&gt;\bibliographystyle{prsty} % Choose Phys. Rev. style for bibliography&lt;br /&gt;&lt;br /&gt;\section{Introduction}&lt;br /&gt;The discovery of the Quantised Hall Effect was made by&lt;br /&gt;Klitzing~\cite{klitzing:qhe} for which he was awarded the 1985 Nobel&lt;br /&gt;prize for physics~\cite{klitzing:nobel}.&lt;br /&gt;&lt;br /&gt;\bibliography{qhe}        % qhe.bib is the name of our database&lt;br /&gt;&lt;br /&gt;\end{document}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;然后执行命令：&lt;br /&gt;&lt;br /&gt;   1. latex example&lt;br /&gt;   2. bibtex example&lt;br /&gt;   3. latex example&lt;br /&gt;   4. latex example&lt;br /&gt;&lt;br /&gt;以后使用就是在JabRef生成bib文件，然后在lyx，或者latex源文件里引用就可以了。很方便。&lt;br /&gt;JabRef可以用于搜索和整理。而且可以链接网址和pdf文件。虽然不一定非要pdf文件格式，因为我试验了其他的格式。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-4808565370316391319?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/4808565370316391319/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=4808565370316391319' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4808565370316391319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/4808565370316391319'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/bib-tex.html' title='Bib Tex 使用笔记（引）'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-5924218531305882855</id><published>2007-12-17T18:12:00.000+01:00</published><updated>2007-12-17T18:13:10.683+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>VIM简单配置文件</title><content type='html'>set helplang=cn&lt;br /&gt;set backspace=indent,eol,start&lt;br /&gt;set number&lt;br /&gt;set encoding=cp936&lt;br /&gt;set guifont=Bitstream_Vera_Sans_Mono:h11:cANSI&lt;br /&gt;set hlsearch&lt;br /&gt;set ts=4&lt;br /&gt;set sw=4&lt;br /&gt;set sm&lt;br /&gt;syntax on&lt;br /&gt;&lt;br /&gt;以上是简单的配置vimrc，能够满足你大部分需要了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-5924218531305882855?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/5924218531305882855/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=5924218531305882855' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/5924218531305882855'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/5924218531305882855'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/vim.html' title='VIM简单配置文件'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-1539776813457569057</id><published>2007-12-17T18:01:00.000+01:00</published><updated>2007-12-17T18:12:42.608+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>SSH上传下载实例</title><content type='html'>上传：&lt;br /&gt;root@tiger:~/download$ scp phpMyAdmin-2.11.3-all-languages.tar.bz2 m1781289@dbcip.cs.uni-duesseldorf.de:/home/m1781289/code/&lt;br /&gt;&lt;br /&gt;phpMyAdmin-2.11.3-all-languages.tar.bz2   100% 3014KB 502.3KB/s   00:06&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-1539776813457569057?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/1539776813457569057/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=1539776813457569057' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1539776813457569057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1539776813457569057'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/ssh.html' title='SSH上传下载实例'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-5976546000200672213</id><published>2007-12-17T16:48:00.000+01:00</published><updated>2007-12-17T16:49:12.897+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'></title><content type='html'>Linux实用命令--文件系统操作&lt;br /&gt;2007-09-22 23:14　来源: sense5.cublog.cn 作者：sense5 网友评论 0 条 浏览次数 67&lt;br /&gt; &lt;br /&gt; 文件系统操作是最基本的操作，没有文件系统，操作系统根本就运行不了。&lt;br /&gt;&lt;br /&gt;  下面是我们经常要做的一些事情。在下面具体参数意义不解释，要了解这些&lt;br /&gt;&lt;br /&gt;  可以查询该命令帮助文档&lt;br /&gt;&lt;br /&gt;  1. 创建目录&lt;br /&gt;&lt;br /&gt;     mkdir&lt;br /&gt;&lt;br /&gt;     NO1. 在当前路径创建一级目录&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mkdir test&lt;br /&gt;&lt;br /&gt;     NO2. 在当前路径创建多级目录&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mkdir -p mytest/test1/test1_1&lt;br /&gt;&lt;br /&gt;     NO3. 在创建目录的同时给新建的目录赋权限&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mkdir -m 777 testmod&lt;br /&gt;&lt;br /&gt;          这样任何人对此目录都有任何权限&lt;br /&gt;&lt;br /&gt;  2. 复制文件与文件夹&lt;br /&gt;&lt;br /&gt;     cp&lt;br /&gt;&lt;br /&gt;     NO1. 复制指定目录的文件到当前目录，并重命名&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# cp ~/.bashrc bashrc_bak&lt;br /&gt;&lt;br /&gt;     NO2. 强制复制指定目录的文件到当前目录，而不管当前目录是否含有该文件&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# cp -f ~/.bashrc bashrc&lt;br /&gt;&lt;br /&gt;     NO2. 复制指定目录到当前目录&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# cp -r /root/test .&lt;br /&gt;       &lt;br /&gt;          [root@rehat root]# cp -r /root/test/ .&lt;br /&gt;&lt;br /&gt;          两者效果一样，在复制目录时，会将源路径的最后一级目录全部复制过去，包括它本身。&lt;br /&gt;&lt;br /&gt;     NO3. 复制指定目录的文件到指定目录&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# cp ~/.bashrc /bak/.bashrc&lt;br /&gt;&lt;br /&gt;     NO4. 在复制时将源文件的全部属性也复制过来。若不指定参数，则目标文件与源文件属性可能不一致。&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# cp -a ~/.bashrc /bak/.bashrc&lt;br /&gt;&lt;br /&gt;     NO5. 若两个文件夹要保证同步，一个文件的改了，另一个文件也跟着改，但是要保证两个文件的文件都是最新的。&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# cp -u /src/.bashrc /bak_src/bashrc&lt;br /&gt;&lt;br /&gt;  3. 建立链接文件，包括硬链接与软链接&lt;br /&gt;&lt;br /&gt;     ln&lt;br /&gt;&lt;br /&gt;     NO1. 建立类似于 Windows 的快捷方式&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# ln -s test.txt test.txt_slnk&lt;br /&gt;&lt;br /&gt;     NO2. 当想备份一个文件，但空间又不够，则可以为该文件建立一个硬连接。这样，就算原文件删除了，只要该&lt;br /&gt;&lt;br /&gt;          链接文件没被删除，则在存储空间里还是没有被删除。&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# ln -l test.txt test.txt_hlnk&lt;br /&gt;&lt;br /&gt;  4. 删除文件&lt;br /&gt;&lt;br /&gt;     rm&lt;br /&gt;&lt;br /&gt;     NO1. 删除当前目录的文件&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# rm test.txt&lt;br /&gt;&lt;br /&gt;     NO2. 强制删除当前目录的文件，不弹出提示&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# rm -f test.txt&lt;br /&gt;&lt;br /&gt;     NO3. 强制删除整个目录，包括目录与文件全部删除，需要管理员权限&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# rm -r -f test&lt;br /&gt;&lt;br /&gt;  5. 删除文件夹&lt;br /&gt;&lt;br /&gt;     rmdir&lt;br /&gt;&lt;br /&gt;     NO1. 删除一个空目录&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# rmdir emptydir&lt;br /&gt;&lt;br /&gt;     NO2. 删除多级空目录&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# rmdir -p emptydir/d1/d11&lt;br /&gt;&lt;br /&gt;  6. 挂载文件系统与卸载文件系统&lt;br /&gt;&lt;br /&gt;     mount / umount&lt;br /&gt;&lt;br /&gt;     NO1. 挂载光驱&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mount -t iso9660 /dev/cdrom /mnt/cdrom&lt;br /&gt;&lt;br /&gt;     NO2. 挂载光驱，支持中文&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mount -t iso9660 -o codepage=936,iocharset=cp936 /dev/cdrom /mnt/cdrom&lt;br /&gt;&lt;br /&gt;     NO3. 挂载 Windows 分区，FAT文件系统&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mount -t vfat /dev/hda3 /mnt/cdrom         &lt;br /&gt;&lt;br /&gt;     NO4. 挂载 Windows 分区，NTFS文件系统&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mount -t ntfs -o iocharset=cp936 /dev/hda7 /mnt/had7&lt;br /&gt;&lt;br /&gt;     No5. 挂载 ISO 文件&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mount -o loop /abc.iso /mnt/cdrom&lt;br /&gt;&lt;br /&gt;     NO6. 挂载 软驱&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mount /dev/fd0 /mnt/floppy&lt;br /&gt;&lt;br /&gt;     NO7. 挂载闪盘&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mount /dev/sda1 /mnt/cdrom&lt;br /&gt;&lt;br /&gt;     NO8. 挂载 Windows 操作系统共享的文件夹&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mount -t smbfs -o username=guest,password=guest //machine/path /mnt/cdrom&lt;br /&gt;&lt;br /&gt;     NO9. 显示挂载的文件系统&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# mount&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# cat /etc/fstab        显示系统启动自动加载的文件系统&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# cat /etc/mtab        显示当前加载的文件系统&lt;br /&gt;&lt;br /&gt;  7. 检查磁盘空间&lt;br /&gt;&lt;br /&gt;     df&lt;br /&gt;&lt;br /&gt;     NO1. 显示所有存储系统空间使用情况,同时显示存储系统的文件系统类型s&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# df -aT&lt;br /&gt;&lt;br /&gt;     NO2. 显示指定文件系统的空间使用情况       &lt;br /&gt;&lt;br /&gt;          [root@rehat root]# df -t ext3&lt;br /&gt;         &lt;br /&gt;     NO3. 人性化显示各存储空间大小&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# df -ah&lt;br /&gt;&lt;br /&gt;     NO4. 有时候挂载了网络文件系统，若只想看本机的文件系统用如下命令&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# df -ahlT&lt;br /&gt;&lt;br /&gt;     NO5. 查看某个文件系统的磁盘使用情况&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# df -h /dev/cdrom&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  8. 检查目录空间大小&lt;br /&gt;&lt;br /&gt;     du&lt;br /&gt;&lt;br /&gt;     NO1. 查看当前文件夹大小&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# du -sh&lt;br /&gt;&lt;br /&gt;     NO2. 查看当前文件及文件中包含的子文件夹大小&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# du -ch&lt;br /&gt;&lt;br /&gt;     NO3. 查看文件的大小&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# du -h test1.txt&lt;br /&gt;&lt;br /&gt;     NO4. 同时查看多个文件的大小&lt;br /&gt;&lt;br /&gt;          [root@rehat root]# du -h test1.txt test2.txt&lt;br /&gt;&lt;br /&gt;  9. 磁盘碎片整理&lt;br /&gt;&lt;br /&gt;     linux 下基本上不用碎片整理，它每隔一段时间会自动整理&lt;br /&gt;     &lt;br /&gt;  10. 创建/改变文件系统&lt;br /&gt;&lt;br /&gt;      NO1. 创建文件系统类型&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# umount /dev/sdb1&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# mkfs -t ext3 /dev/db1&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# mount /dev/sdb1 /practice&lt;br /&gt;&lt;br /&gt;  11. 改变文件或文件夹权限&lt;br /&gt;&lt;br /&gt;      chmod&lt;br /&gt;&lt;br /&gt;      NO1. 将自己的笔记设为只有自己才能看&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# chmod go-rwx test.txt&lt;br /&gt;&lt;br /&gt;           或者&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# chmod 700 test.txt&lt;br /&gt;&lt;br /&gt;      NO2. 同时修改多个文件的权限&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# chmod 700 test1.txt test2.txt&lt;br /&gt;&lt;br /&gt;      NO3. 修改一个目录的权限，包括其子目录及文件&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# chmod 700 -R test&lt;br /&gt;&lt;br /&gt;  12. 改变文件或文件夹拥有者&lt;br /&gt;&lt;br /&gt;      chown 该命令只有 root 才能使用&lt;br /&gt;&lt;br /&gt;      NO1. 更改某个文件的拥有者&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# chown jim:usergroup test.txt&lt;br /&gt;&lt;br /&gt;      NO2. 更改某个目录的拥有者,并包含子目录&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# chown jim:usergroup -R test&lt;br /&gt;  &lt;br /&gt;  13. 查看文本文件内容&lt;br /&gt;&lt;br /&gt;      cat&lt;br /&gt;&lt;br /&gt;      NO1. 查看文件内容，并在每行前面加上行号&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# cat -n test.txt&lt;br /&gt;&lt;br /&gt;      NO2. 查看文件内容，在不是空行的前面加上行号&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# cat -b test.txt&lt;br /&gt;      &lt;br /&gt;      NO3. 合并两个文件的内容&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# cat test1.txt test2.txt &gt; test_new.txt&lt;br /&gt;&lt;br /&gt;      NO4. 全并两具文件的内容，并追回到一个文件&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# cat test1.txt test2.txt &gt;&gt; test_total.txt&lt;br /&gt;&lt;br /&gt;      NO5. 清空某个文件的内容&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# cat /dev/null &gt; test.txt&lt;br /&gt;&lt;br /&gt;      NO6. 创建一个新的文件&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# cat &gt; new.txt 按 CTRL + C 结束录入&lt;br /&gt;&lt;br /&gt;  14. 编辑文件文件&lt;br /&gt;&lt;br /&gt;      vi&lt;br /&gt;&lt;br /&gt;      NO1. 新建档案文件&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# vi newfile.txt&lt;br /&gt;&lt;br /&gt;      NO2. 修改档案文件&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# vi test.txt   test.txt 已存在&lt;br /&gt;&lt;br /&gt;      NO3. vi 的两种工作模式：命令模式，编辑模式&lt;br /&gt;&lt;br /&gt;      NO4. 进入 vi 后为命令模式，按 Insrt 键进入编辑模式&lt;br /&gt;&lt;br /&gt;           按 ESC 进入命令模式，在命令模式不能编辑，只能输入命令&lt;br /&gt;&lt;br /&gt;      NO5. 命令模式常用命令&lt;br /&gt;&lt;br /&gt;           :w 保存当前文档&lt;br /&gt;&lt;br /&gt;           :q 直接退出 vi&lt;br /&gt;&lt;br /&gt;           :wq 先保存后退出&lt;br /&gt;      &lt;br /&gt;  15. 路径操作&lt;br /&gt;&lt;br /&gt;      cd pwd&lt;br /&gt;&lt;br /&gt;      NO1. 显示当前路径&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# pwd&lt;br /&gt;&lt;br /&gt;      NO2. 返回用户主目录&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# cd&lt;br /&gt;&lt;br /&gt;      NO3. 改变到其它路径&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# cd /etc&lt;br /&gt;&lt;br /&gt;      NO4. 返回到上一级目录&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# cd ..&lt;br /&gt;&lt;br /&gt;      NO5. 返回到根目录&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# cd /&lt;br /&gt;&lt;br /&gt;  16. 查询文件或文件夹&lt;br /&gt;&lt;br /&gt;      find&lt;br /&gt;&lt;br /&gt;      NO1. 查找当前用户主目录下的所有文件&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# find ~&lt;br /&gt;&lt;br /&gt;      NO2. 让当前目录中文件属主具有读、写权限，并且文件所属组的用户和其他用户具有读权限的文件；&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# find . -perm 644 -exec ls -l {} \;&lt;br /&gt;&lt;br /&gt;      NO3. 为了查找系统中所有文件长度为0的普通文件，并列出它们的完整路径；&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# find / size 0 -type f -exec ls -l {} \;&lt;br /&gt;&lt;br /&gt;      NO4. 查找/var/logs目录中更改时间在7日以前的普通文件，并在删除之前询问它们；&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# find /var/logs -mtime +7 -type f -ok rm -i {} \;&lt;br /&gt;&lt;br /&gt;      NO5. 为/找系统中所有属于root组的文件；&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# find / -group root -exec ls -l {} \;&lt;br /&gt;&lt;br /&gt;      NO6. find命令将删除当目录中访问时间在7日以来、含有数字后缀的admin.log文件&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# find . -name "admin.log[0-9][0-9][0-9]" -atime -7 -ok rm { } \;&lt;br /&gt;&lt;br /&gt;      NO7. 为了查找当前文件系统中的所有目录并排序&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# find . -type d | sort&lt;br /&gt;&lt;br /&gt;      NO8. 为了查找系统中所有的rmt磁带设备&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# find /dev/rmt&lt;br /&gt;&lt;br /&gt;  17. 显示文件/文件夹清单&lt;br /&gt;&lt;br /&gt;      ls / dir&lt;br /&gt;&lt;br /&gt;      NO1. 显示所有文件，包括以.开头的隐含文件&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# ls -a&lt;br /&gt;&lt;br /&gt;      NO2. 显示文件的详细信息&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# ls -l&lt;br /&gt;&lt;br /&gt;      NO3. 显示当前目录及所有子目录信息&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# ls -Rl&lt;br /&gt;&lt;br /&gt;      NO4. 以时间排序显示目录,这在找最新文件有用&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# ls -tl&lt;br /&gt;&lt;br /&gt;      NO5. 以文件大小排序&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# ls -Sl&lt;br /&gt;&lt;br /&gt;      NO6. 显示文件大小,并按大小排序&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# ls -s -l -S&lt;br /&gt;&lt;br /&gt;  18. 移动或更改文件/文件夹名称&lt;br /&gt;&lt;br /&gt;      mv 与 cp命令用法相似&lt;br /&gt;&lt;br /&gt;      NO1. 若移动目标文件已存在，要在移动之前，先备份原来的目录文件&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# mv -b test.txt test2/&lt;br /&gt;&lt;br /&gt;           这样在 test2 下将有两个文件 test.txt 及 text.txt~&lt;br /&gt;&lt;br /&gt;           其中 test.txt~ 是备份文件，test.txt是新的文件&lt;br /&gt;&lt;br /&gt;      NO2. 若移动目标文件已存在，但不想弹出是否覆盖的提示，直接覆盖&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# mv -f test.txt test2/&lt;br /&gt;&lt;br /&gt;      NO3. 当源与目标都拥有同一个文件，若源文件比目标新则移动，否则不移动&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# mv -u test.txt test2/&lt;br /&gt;&lt;br /&gt;      NO4. 更改文件名称&lt;br /&gt;&lt;br /&gt;           [root@rehat root]# mv test.txt test2.txt&lt;br /&gt;&lt;br /&gt;      NO5. 更改目录名称&lt;br /&gt;  &lt;br /&gt;           [root@rehat root]# mv /test2 /test2_2&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-5976546000200672213?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/5976546000200672213/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=5976546000200672213' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/5976546000200672213'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/5976546000200672213'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/linux-2007-09-22-2314-sense5.html' title=''/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-281584585202411183</id><published>2007-12-17T15:34:00.000+01:00</published><updated>2007-12-19T14:46:28.440+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Uni Life'/><title type='text'>数据库实习</title><content type='html'>Es gibt noch einfaches:&lt;br /&gt;muss man aber zum ersten Konquror hat...&lt;br /&gt;zum Bsp: fish://&lt;mat.Nr&gt;@dbcip.cs.uni-duesseldorf.de&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;网址：&lt;br /&gt;http://dbcip.cs.uni-duesseldorf.de/~&lt;matrikelnummer&gt;&lt;br /&gt;&lt;br /&gt;Also das einfachste ist(fand ich), einfach über SSH reinzukommen:&lt;br /&gt;&lt;br /&gt;ssh -L 2401:localhost:2401 dbcip.cs.uni-duesseldorf.de -l &lt;matrikelnummer&gt;&lt;br /&gt;&lt;br /&gt;Und wenn man Dateien kopieren will:&lt;br /&gt;&lt;br /&gt;scp ./beispiel.txt &lt;matrikelnummer&gt;@dbcip.cs.uni-duesseldorf.de:/home/&lt;matrikelnummer&gt;&lt;br /&gt;&lt;br /&gt;Ich bin aber auch kein Fachmann dafür, die Linuxexperten hier werden da sicher noch einiges mehr zu sagen können. Ich hab das immer mit cygwin unter Windows gemacht...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-281584585202411183?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/281584585202411183/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=281584585202411183' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/281584585202411183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/281584585202411183'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/blog-post.html' title='数据库实习'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-9221344202915507530</id><published>2007-12-17T10:30:00.000+01:00</published><updated>2007-12-17T15:34:14.062+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><title type='text'>Ubuntu下格式化U盘</title><content type='html'>U盘有时候莫名其妙的变慢，格式化一下就好了，XP下很简单，linux就要google一下了，&lt;br /&gt;ubuntu下面现在也不错了（其实是从debian看到的），先装一下：&lt;br /&gt;apt-get install dosfstools&lt;br /&gt;然后卸载掉U盘：&lt;br /&gt;umount /dev/sdb1&lt;br /&gt;再格式化：&lt;br /&gt;mkfs.vfat /dev/sda1 (格式化成fat32格式以便在windows上读取)&lt;br /&gt;&lt;br /&gt;Game Over&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-9221344202915507530?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/9221344202915507530/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=9221344202915507530' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/9221344202915507530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/9221344202915507530'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/ubuntuu.html' title='Ubuntu下格式化U盘'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-5484337405156775613</id><published>2007-12-13T01:23:00.000+01:00</published><updated>2007-12-13T01:24:46.252+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><title type='text'>关于表约束constraint</title><content type='html'>关于表约束constraint&lt;br /&gt;===========================================================&lt;br /&gt;作者: xsb(http://xsb.itpub.net)&lt;br /&gt;发表于:2005.08.19 09:18&lt;br /&gt;分类: Oracle&lt;br /&gt;出处：http://xsb.itpub.net/post/419/38481&lt;br /&gt;---------------------------------------------------------------&lt;br /&gt;可以使用disable,enable novalidate,enable validate选项。&lt;br /&gt;可用于检查历史数据是否违反某种业务规则，并找出这些记录！&lt;br /&gt;&lt;br /&gt;CREATE TABLE t1 (c1 NUMBER,c2 NUMBER);&lt;br /&gt;INSERT INTO t1 VALUES (1,2);&lt;br /&gt;INSERT INTO t1 VALUES (1,20);&lt;br /&gt;COMMIT;&lt;br /&gt;SELECT * FROM t1;&lt;br /&gt;alter table T1&lt;br /&gt;add constraint ck_t1&lt;br /&gt;check (c2 BETWEEN 18 and 80)&lt;br /&gt;ENABLE novalidate;&lt;br /&gt;create table exceptions(row_id rowid,&lt;br /&gt;owner varchar2(30),&lt;br /&gt;table_name varchar2(30),&lt;br /&gt;constraint varchar2(30));&lt;br /&gt;ALTER TABLE t1 ENABLE Validate CONSTRAINT ck_t1&lt;br /&gt;EXCEPTIONS INTO EXCEPTIONS;&lt;br /&gt;SELECT *&lt;br /&gt;FROM T1&lt;br /&gt;WHERE ROWID IN (SELECT ROW_ID FROM EXCEPTIONS WHERE TABLE_NAME = 'T1')&lt;br /&gt;FOR UPDATE;&lt;br /&gt;TRUNCATE TABLE EXCEPTIONS;&lt;br /&gt;------------------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;constraints 三个需要注意的地方&lt;br /&gt;&lt;br /&gt;Ref: http://spaces.msn.com/sunmoonking/&lt;br /&gt;工作许多年，一直没有看重CONSTRINTS的作用，除了用CHECK，NOT NULL，INDEX，等，其他的一般也就看看就过去了。最近把零散的知识整理一下，才发现CONSTRAINTS发展15年来的成熟与重要。&lt;br /&gt;ORACLE提供了众多的constraint，如果没有充分利用这些constraints，那么也就是没有充分利用关系型数据库。如果能了解各种 constraint的各种参数，那么就能减少locking的时间，减少constraint检验数据的时间，减少影响其他应用的时间。&lt;br /&gt;CONSTRAINTS：就是让数据满足某些规则。&lt;br /&gt;CONSTRAINTS TYPE： NOT NULL&lt;br /&gt;UNIQUE&lt;br /&gt;PRIMARY KEY&lt;br /&gt;FOREIGN KEY&lt;br /&gt;CHECK&lt;br /&gt;CONSTRAINTS 不但可以建立在TABLE上，也可以建立在VIEW上，&lt;br /&gt;CONSTRAINTS 的状态：ENABLED/DISABLED&lt;br /&gt;VALIDATED/NOVALIDATED&lt;br /&gt;DEFERRABLE/NON-DEFERRABLE&lt;br /&gt;DEFERRED/IMMEDIATE&lt;br /&gt;RELY/NORELY&lt;br /&gt;constraint只能被difered如果最初定义时是deferrable&lt;br /&gt;view的constraints必须被设置成disabled，novalidated或rely&lt;br /&gt;1. deferrable&lt;br /&gt;一个constraint如果被定义成deferrable那么这个constraints可以在deferred和imediate两种状态相互转换。 deferred只在transaction中有效，也就是只可以在transaction过程中使constraint失效，但如果 transaction commit的话，transaction会变成immediate。&lt;br /&gt;&lt;br /&gt;1* create table cons_parent (id number(10),name varchar2(10))&lt;br /&gt;SQL&gt; /&lt;br /&gt;Table created.&lt;br /&gt;SQL&gt; create table cons_child (id number(10),name varchar2(10));&lt;br /&gt;Table created.&lt;br /&gt;1* alter table cons_parent add primary key (id)&lt;br /&gt;SQL&gt; /&lt;br /&gt;Table altered.&lt;br /&gt;alter table cons_child add constraints chi_fk_par foreign key (id)&lt;br /&gt;references cons_parent(id)&lt;br /&gt;SQL&gt; alter table cons_child add constraints chi_fk_par foreign key (id)&lt;br /&gt;2 references cons_parent(id)&lt;br /&gt;3 /&lt;br /&gt;Table altered.&lt;br /&gt;一个constraints默认是NOT DEFERRABLE的。&lt;br /&gt;1 select constraint_name||' '||deferrable from all_constraints&lt;br /&gt;2* where constraint_name='CHI_FK_PAR'&lt;br /&gt;SQL&gt; /&lt;br /&gt;CONSTRAINT_NAME||''||DEFERRABLE&lt;br /&gt;---------------------------------------------&lt;br /&gt;CHI_FK_PAR NOT DEFERRABLE&lt;br /&gt;NOT DEFERRABLE的不能在deferred和imediate两种状态相互转换&lt;br /&gt;SQL&gt; set constraints chi_fk_par deferred;&lt;br /&gt;SET constraints chi_fk_par deferred&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-02447: cannot defer a constraint that is not deferrable&lt;br /&gt;SQL&gt; alter table cons_child drop constraints chi_fk_par;&lt;br /&gt;Table altered.&lt;br /&gt;1 alter table cons_child add constraints chi_fk_par foreign key (id)&lt;br /&gt;2* references cons_parent(id) deferrable&lt;br /&gt;SQL&gt; /&lt;br /&gt;Table altered.&lt;br /&gt;1 select constraint_name||' '||deferrable from all_constraints&lt;br /&gt;2* where constraint_name='CHI_FK_PAR'&lt;br /&gt;SQL&gt; /&lt;br /&gt;CONSTRAINT_NAME||''||DEFERRABLE&lt;br /&gt;---------------------------------------------&lt;br /&gt;CHI_FK_PAR DEFERRABLE&lt;br /&gt;一个constraint如果被定义成deferrable那么这个constraints可以在deferred和imediate两种状态相互转换&lt;br /&gt;SQL&gt; set constraints chi_fk_par immediate;&lt;br /&gt;&lt;br /&gt;Constraint set.&lt;br /&gt;&lt;br /&gt;1* insert into cons_child values (2,'llll')&lt;br /&gt;SQL&gt; /&lt;br /&gt;insert into cons_child values (2,'llll')&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-02291: integrity constraint (SYSTEM.CHI_FK_PAR) violated - parent key not found&lt;br /&gt;&lt;br /&gt;SQL&gt; set constraints chi_fk_par deferred;&lt;br /&gt;&lt;br /&gt;Constraint set.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into cons_child values (2,'llll');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; set constraints chi_fk_par immediate;&lt;br /&gt;SET constraints chi_fk_par immediate&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-02291: integrity constraint (SYSTEM.CHI_FK_PAR) violated - parent key not found&lt;br /&gt;&lt;br /&gt;deferred只在transaction中有效，也就是只可以在transaction过程中使constraint失效，但如果transaction commit的话，transaction会变成immediate。&lt;br /&gt;&lt;br /&gt;SQL&gt; commit;&lt;br /&gt;commit&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-02091: transaction rolled back&lt;br /&gt;ORA-02291: integrity constraint (SYSTEM.CHI_FK_PAR) violated - parent key not found&lt;br /&gt;deferrable会影响CBO的计划，并且正常情况下没有应用的必要，所以建议不要修改，而用系统默认的non deferrable&lt;br /&gt;&lt;br /&gt;2. enable/disable validate/novalidate&lt;br /&gt;&lt;br /&gt;enable/disable对未来的数据有约束/无约束。&lt;br /&gt;&lt;br /&gt;validate/novalidate对已有的数据有约束/无约束。&lt;br /&gt;&lt;br /&gt;如果加约束到一个大表，那么ORACLE会LOCK这个表，然后SCAN所有数据，来判断是否符合CONSTRAINT的要求，在繁忙的系统里显然是不合适的。所以用enable novalidate比较合适，因为ORACLE仅仅会LOCK表一小段时间来建立CONSTRAINT，当CONSTRAINT建立后再 VALIDATE，这时检验数据是不会LOCK表的。&lt;br /&gt;&lt;br /&gt;这方面很多书上都有例子，就不在这里累述了&lt;br /&gt;&lt;br /&gt;3.REFERENCE 让人疑惑的地方&lt;br /&gt;&lt;br /&gt;1* create table wwm_father (id number,name varchar2(10),primary key (id,name))&lt;br /&gt;SQL&gt; /&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; create table wwm_child (id number,name varchar2(10),&lt;br /&gt;2 foreign key (id,name) references wwm_father on delete set null);&lt;br /&gt;&lt;br /&gt;Table created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into wwm_father values (6,'wwm');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insret into wwm_child values (6,'fff');&lt;br /&gt;SP2-0734: unknown command beginning "insret int..." - rest of line ignored.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;可以看出，REFERENCE是起作用的。但下面就有点让人疑惑了，似乎ORACLE不用该用这种策略来做，&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into wwm_child values (6,null);&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;SQL&gt; insert into wwm_child values(null,'lll');&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;&lt;br /&gt;1* insert into wwm_child values (null,null)&lt;br /&gt;SQL&gt; /&lt;br /&gt;&lt;br /&gt;1 row created.&lt;br /&gt;SQL&gt; select * from wwm_father;&lt;br /&gt;&lt;br /&gt;ID NAME&lt;br /&gt;---------- --------------------&lt;br /&gt;6 wwm&lt;br /&gt;&lt;br /&gt;SQL&gt; select * from wwm_child;&lt;br /&gt;&lt;br /&gt;ID NAME&lt;br /&gt;---------- --------------------&lt;br /&gt;6&lt;br /&gt;lll&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SQL&gt; select count(*) from wwm_child;&lt;br /&gt;&lt;br /&gt;COUNT(*)&lt;br /&gt;----------&lt;br /&gt;3&lt;br /&gt;&lt;br /&gt;可见，如果向CHILD表插入NULL的话，ORACLE默认认为NULL是匹配FATHER表里相关的REFERENCE的字段内容的。因此FOREIGN KEY的COLUMN大家就需要认真考虑是否要设置成NOT NULL了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-5484337405156775613?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/5484337405156775613/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=5484337405156775613' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/5484337405156775613'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/5484337405156775613'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/constraint.html' title='关于表约束constraint'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-9085387910415045434</id><published>2007-12-11T12:15:00.000+01:00</published><updated>2007-12-11T12:16:17.860+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='ubuntu'/><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>Ubuntu feisty + Tomcat 5.5 + mysql 5.0.26 遠端 jdbc 登入</title><content type='html'>Ubuntu feisty + Tomcat 5.5 + mysql 5.0.26 遠端 jdbc 登入&lt;br /&gt;&lt;br /&gt;   1. 首先在mysql中你要先有一個帳號是可以從任何host登入的，如最常見的&lt;br /&gt;&lt;br /&gt;          root@% 或 root@&lt;br /&gt;&lt;br /&gt;      也可以自己新增，別忘了設密碼！不然你的資料庫就可以給人亂搞了。&lt;br /&gt;&lt;br /&gt;   2. 修改mysql使其可接受遠端登入，首先開啟mysql設定檔&lt;br /&gt;&lt;br /&gt;          sudo gedit /etc/mysql/my.cnf&lt;br /&gt;&lt;br /&gt;      然後搜尋"bind-address"開頭的那行，在前面把它註解掉&lt;br /&gt;&lt;br /&gt;          #bind-address 127.0.0.1&lt;br /&gt;&lt;br /&gt;      記得重新啟動mysql才會載入新設定&lt;br /&gt;&lt;br /&gt;          sudo /etc/init.d/mysql restart&lt;br /&gt;&lt;br /&gt;   3. 在/usr/share/tomcat5.5/common/lib目錄中，放入mysql的jdbc connector(driver) jar檔&lt;br /&gt;&lt;br /&gt;          mysql-connector-java-5.0.7-bin.jar&lt;br /&gt;&lt;br /&gt;   4. 修改tomcat使其能接受jdbc透過自己擁有的IP或domain名稱連線（例如no-ip提供的定址服務）&lt;br /&gt;&lt;br /&gt;          sudo gedit /etc/tomcat5.5/policy.d/04webapps.policy&lt;br /&gt;&lt;br /&gt;      自己在裡面加上一行（大小寫符號要正確）紫色部份代表要用自己的設定替換！&lt;br /&gt;&lt;br /&gt;          permission java.net.SocketPermission "yourHostAddress", "connect, resolve";&lt;br /&gt;&lt;br /&gt;      記得重啟tomcat才會載入新設定&lt;br /&gt;&lt;br /&gt;          sudo /etc/init.d/tomcat5.5 restart&lt;br /&gt;&lt;br /&gt;   5. 現在準備工作已經完成，只要在你的應用程式或jsp網頁正確設定driver名稱、URL、使用者名稱跟密碼即可進行jdbc連線&lt;br /&gt;&lt;br /&gt;          Driver - com.mysql.jdbc.Driver&lt;br /&gt;          URL - jdbc:mysql://yourHostAddress:mysqlport/databasename&lt;br /&gt;          UserName - yourRemoteConnectableMysqlAccount&lt;br /&gt;          Password - **************&lt;br /&gt;&lt;br /&gt;   6. 使用愉快！網路上一堆說明都很不完整…找超久＝＝&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-9085387910415045434?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/9085387910415045434/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=9085387910415045434' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/9085387910415045434'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/9085387910415045434'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/ubuntu-feisty-tomcat-55-mysql-5026-jdbc.html' title='Ubuntu feisty + Tomcat 5.5 + mysql 5.0.26 遠端 jdbc 登入'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-1936217573044095466</id><published>2007-12-11T09:56:00.000+01:00</published><updated>2007-12-11T09:58:50.979+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database'/><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>database.properties实例</title><content type='html'>1.  DataBase.properties的内容   &lt;br /&gt;   2.   &lt;br /&gt;   3.   &lt;br /&gt;   4. driver=com.mysql.jdbc.Driver   &lt;br /&gt;   5. url=jdbc:mysql://127.0.0.1:3306/jpetstore   &lt;br /&gt;   6. username=root   &lt;br /&gt;   7. password=dongguoh   &lt;br /&gt;   8.   &lt;br /&gt;   9. DataBase.xml的内容   &lt;br /&gt;  10.   &lt;br /&gt;  11. &lt;?xml version="1.0" encoding="UTF-8"?&gt;   &lt;br /&gt;  12. &lt;!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"&gt;   &lt;br /&gt;  13.   &lt;br /&gt;  14. PropertiesTest   &lt;br /&gt;  15. "driver"&gt;com.mysql.jdbc.Driver   &lt;br /&gt;  16. "url"&gt;jdbc:mysql://127.0.0.1:3306/jpetstore   &lt;br /&gt;  17. "username"&gt;root   &lt;br /&gt;  18. "password"&gt;dongguoh   &lt;br /&gt;  19.   &lt;br /&gt;  20.   &lt;br /&gt;  21. 下面是测试类   &lt;br /&gt;  22.   &lt;br /&gt;  23. package DataBase;   &lt;br /&gt;  24. import java.io.FileInputStream;   &lt;br /&gt;  25. import java.io.FileNotFoundException;   &lt;br /&gt;  26. import java.io.IOException;   &lt;br /&gt;  27. import java.util.Iterator;   &lt;br /&gt;  28. import java.util.Properties;   &lt;br /&gt;  29. import java.util.Set;   &lt;br /&gt;  30.   &lt;br /&gt;  31.   &lt;br /&gt;  32. public class TestProperties {   &lt;br /&gt;  33.   &lt;br /&gt;  34. public static void main(String[] args) {   &lt;br /&gt;  35.     TestProperties test=new TestProperties();   &lt;br /&gt;  36.     test.luanch();   &lt;br /&gt;  37.     test.luanchXML();   &lt;br /&gt;  38.   &lt;br /&gt;  39. }   &lt;br /&gt;  40. private void luanch(){   &lt;br /&gt;  41.     Properties ppt=new Properties();   &lt;br /&gt;  42.     try {   &lt;br /&gt;  43.      String path=this.getClass().getResource("/").getPath();   &lt;br /&gt;  44.      path=path+"DataBase/DataBase.properties";   &lt;br /&gt;  45.      FileInputStream fis=new FileInputStream(path);   &lt;br /&gt;  46.      ppt.load(fis);   &lt;br /&gt;  47.      fis.close();   &lt;br /&gt;  48.      Set set=ppt.keySet();    &lt;br /&gt;  49.      Iterator it=set.iterator();    &lt;br /&gt;  50. System.out.println("*********显示的读取DataBase.properties显示的内容*****");   &lt;br /&gt;  51.      while(it.hasNext()){   &lt;br /&gt;  52.       String id=(String)it.next();   &lt;br /&gt;  53. System.out.println(id+"="+ppt.getProperty(id));   &lt;br /&gt;  54.      }   &lt;br /&gt;  55.       &lt;br /&gt;  56. System.out.println("另外一种显示方式");     &lt;br /&gt;  57.      ppt.list(System.out);   &lt;br /&gt;  58.     } catch (FileNotFoundException e) {   &lt;br /&gt;  59.      System.out.println("找不到DataBase.properties这个文件，或者是路径发生错误");   &lt;br /&gt;  60.     } catch (IOException e) {   &lt;br /&gt;  61.      System.out.println("加载DataBase.properties文件时出错！！");   &lt;br /&gt;  62.     }    &lt;br /&gt;  63. }   &lt;br /&gt;  64. private void luanchXML(){   &lt;br /&gt;  65.     Properties ppt=new Properties();   &lt;br /&gt;  66.     try {   &lt;br /&gt;  67.      String path=this.getClass().getResource("/").getPath();   &lt;br /&gt;  68.      path=path+"DataBase/DataBase.xml";   &lt;br /&gt;  69. System.out.println(path);   &lt;br /&gt;  70.      FileInputStream fis=new FileInputStream(path);   &lt;br /&gt;  71.      ppt.loadFromXML(fis);   &lt;br /&gt;  72.      fis.close();   &lt;br /&gt;  73.      Set set=ppt.keySet();    &lt;br /&gt;  74.      Iterator it=set.iterator();   &lt;br /&gt;  75. System.out.println("*********显示的读取DataBase.xml 显示的内容*****");   &lt;br /&gt;  76.      while(it.hasNext()){   &lt;br /&gt;  77.       String id=(String)it.next();   &lt;br /&gt;  78. System.out.println(id+"="+ppt.getProperty(id));   &lt;br /&gt;  79.      }   &lt;br /&gt;  80.     } catch (FileNotFoundException e) {   &lt;br /&gt;  81.      System.out.println("找不到DataBase.xml 这个文件，或者是路径发生错误");   &lt;br /&gt;  82.     } catch (IOException e) {   &lt;br /&gt;  83.      System.out.println("加载DataBase.xml 文件时出错！！");   &lt;br /&gt;  84.     }    &lt;br /&gt;  85. }   &lt;br /&gt;  86.   &lt;br /&gt;  87. }   &lt;br /&gt;  88.   &lt;br /&gt;  89.   &lt;br /&gt;  90.   &lt;br /&gt;  91. 结果：   &lt;br /&gt;  92.   &lt;br /&gt;  93. *********显示的读取DataBase.properties显示的内容*****   &lt;br /&gt;  94. password=dongguoh   &lt;br /&gt;  95. url=jdbc:mysql://127.0.0.1:3306/jpetstore   &lt;br /&gt;  96. driver=com.mysql.jdbc.Driver   &lt;br /&gt;  97. username=root   &lt;br /&gt;  98. 另外一种显示方式   &lt;br /&gt;  99. -- listing properties --   &lt;br /&gt; 100. url=jdbc:mysql://127.0.0.1:3306/jpetstore   &lt;br /&gt; 101. password=dongguoh   &lt;br /&gt; 102. driver=com.mysql.jdbc.Driver   &lt;br /&gt; 103. username=root   &lt;br /&gt; 104. /E:/MyJavaProject/Ibatis/WebRoot/WEB-INF/classes/DataBase/DataBase.xml   &lt;br /&gt; 105. *********显示的读取DataBase.xml 显示的内容*****   &lt;br /&gt; 106. password=dongguoh   &lt;br /&gt; 107. url=jdbc:mysql://127.0.0.1:3306/jpetstore   &lt;br /&gt; 108. driver=com.mysql.jdbc.Driver   &lt;br /&gt; 109. username=root   &lt;br /&gt; 110.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-1936217573044095466?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/1936217573044095466/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=1936217573044095466' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1936217573044095466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/1936217573044095466'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/databaseproperties.html' title='database.properties实例'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-6950202643603128914</id><published>2007-12-11T00:23:00.000+01:00</published><updated>2007-12-11T00:24:29.603+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>A List of JDBC Drivers</title><content type='html'>&lt;div class="" style="font-family: Arial,Helvetica,Sans-Serif; font-size: 18px; font-weight: bold; color: rgb(255, 102, 0); margin-left: 10px; margin-top: 10px;"&gt;A List of JDBC Drivers&lt;/div&gt;  &lt;div class="" style="padding: 10px;"&gt;If you need to access a database with Java, you need a driver. This is a list of the drivers available, what database they can access, who makes it, and how to contact them. &lt;p&gt; IBM DB2&lt;br /&gt;jdbc:db2://&lt;host&gt;:&lt;port&gt;/&lt;db&gt;&lt;br /&gt;COM.ibm.db2.jdbc.app.DB2Driver&lt;br /&gt;&lt;/p&gt;&lt;p&gt; JDBC-ODBC Bridge&lt;br /&gt;jdbc:odbc:&lt;db&gt;&lt;br /&gt;sun.jdbc.odbc.JdbcOdbcDriver &lt;/p&gt;&lt;p&gt; Microsoft SQL Server&lt;br /&gt;jdbc:weblogic:mssqlserver4:&lt;db&gt;@&lt;host&gt;:&lt;port&gt;&lt;br /&gt;weblogic.jdbc.mssqlserver4.Driver &lt;/p&gt;&lt;p&gt; Oracle Thin&lt;br /&gt;jdbc:oracle:thin:@&lt;host&gt;:&lt;port&gt;:&lt;sid&gt;&lt;br /&gt;oracle.jdbc.driver.OracleDriver &lt;/p&gt;&lt;p&gt; PointBase Embedded Server&lt;br /&gt;jdbc:pointbase://embedded[:&lt;port&gt;]/&lt;db&gt;&lt;br /&gt;com.pointbase.jdbc.jdbcUniversalDriver &lt;/p&gt;&lt;p&gt; Cloudscape&lt;br /&gt;jdbc:cloudscape:&lt;db&gt;&lt;br /&gt;COM.cloudscape.core.JDBCDriver &lt;/p&gt;&lt;p&gt; Cloudscape RMI&lt;br /&gt;jdbc:rmi://&lt;host&gt;:&lt;port&gt;/jdbc:cloudscape:&lt;db&gt;&lt;br /&gt;RmiJdbc.RJDriver &lt;/p&gt;&lt;p&gt; Firebird (JCA/JDBC Driver)&lt;br /&gt;jdbc:firebirdsql:[//&lt;host&gt;[:&lt;port&gt;]/]&lt;db&gt;&lt;br /&gt;org.firebirdsql.jdbc.FBDriver &lt;/p&gt;&lt;p&gt; IDS Server&lt;br /&gt;jdbc:ids://&lt;host&gt;:&lt;port&gt;/conn?dsn='&lt;odbc_dsn_name&gt;'&lt;br /&gt;ids.sql.IDSDriver &lt;/p&gt;&lt;p&gt; Informix Dynamic Server&lt;br /&gt;jdbc:informix-sqli://&lt;host&gt;:&lt;port&gt;/&lt;db&gt;:INFORMIXSERVER=&lt;server_name&gt;&lt;br /&gt;com.informix.jdbc.IfxDriver &lt;/p&gt;&lt;p&gt; InstantDB (v3.13 and earlier)&lt;br /&gt;jdbc:idb:&lt;db&gt;&lt;br /&gt;jdbc.idbDriver &lt;/p&gt;&lt;p&gt; InstantDB (v3.14 and later)&lt;br /&gt;jdbc:idb:&lt;db&gt;&lt;br /&gt;org.enhydra.instantdb.jdbc.idbDriver &lt;/p&gt;&lt;p&gt; Interbase (InterClient Driver)&lt;br /&gt;jdbc:interbase://&lt;host&gt;/&lt;db&gt;&lt;br /&gt;interbase.interclient.Driver &lt;/p&gt;&lt;p&gt; Hypersonic SQL (v1.2 and earlier)&lt;br /&gt;jdbc:HypersonicSQL:&lt;db&gt;&lt;br /&gt;hSql.hDriver &lt;/p&gt;&lt;p&gt; Hypersonic SQL (v1.3 and later)&lt;br /&gt;jdbc:HypersonicSQL:&lt;db&gt;&lt;br /&gt;org.hsql.jdbcDriver &lt;/p&gt;&lt;p&gt; Microsoft SQL Server (JTurbo Driver)&lt;br /&gt;jdbc:JTurbo://&lt;host&gt;:&lt;port&gt;/&lt;db&gt;&lt;br /&gt;com.ashna.jturbo.driver.Driver &lt;/p&gt;&lt;p&gt; Microsoft SQL Server (Sprinta Driver)&lt;br /&gt;jdbc:inetdae:&lt;host&gt;:&lt;port&gt;?database=&lt;db&gt;&lt;br /&gt;com.inet.tds.TdsDriver &lt;/p&gt;&lt;p&gt; Microsoft SQL Server 2000 (Microsoft Driver)&lt;br /&gt;jdbc:microsoft:sqlserver://&lt;host&gt;:&lt;port&gt;[;DatabaseName=&lt;db&gt;]&lt;br /&gt;com.microsoft.jdbc.sqlserver.SQLServerDriver &lt;/p&gt;&lt;p&gt;  MySQL (MM.MySQL Driver)&lt;br /&gt;jdbc:mysql://&lt;host&gt;:&lt;port&gt;/&lt;db&gt;&lt;br /&gt;org.gjt.mm.mysql.Driver &lt;/p&gt;&lt;p&gt; Oracle OCI 8i&lt;br /&gt;jdbc:oracle:oci8:@&lt;sid&gt;&lt;br /&gt;oracle.jdbc.driver.OracleDriver &lt;/p&gt;&lt;p&gt; Oracle OCI 9i&lt;br /&gt;jdbc:oracle:oci:@&lt;sid&gt;&lt;br /&gt;oracle.jdbc.driver.OracleDriver &lt;/p&gt;&lt;p&gt; PostgreSQL (v6.5 and earlier)&lt;br /&gt;jdbc:postgresql://&lt;host&gt;:&lt;port&gt;/&lt;db&gt;&lt;br /&gt;postgresql.Driver &lt;/p&gt;&lt;p&gt; PostgreSQL (v7.0 and later)&lt;br /&gt;jdbc:postgresql://&lt;host&gt;:&lt;port&gt;/&lt;db&gt;&lt;br /&gt;org.postgresql.Driver &lt;/p&gt;&lt;p&gt; Sybase (jConnect 4.2 and earlier)&lt;br /&gt;jdbc:sybase:Tds:&lt;host&gt;:&lt;port&gt;&lt;br /&gt;com.sybase.jdbc.SybDriver &lt;/p&gt;&lt;p&gt; Sybase (jConnect 5.2)&lt;br /&gt;jdbc:sybase:Tds:&lt;host&gt;:&lt;port&gt;&lt;br /&gt;com.sybase.jdbc2.jdbc.SybDriver &lt;/p&gt;&lt;p&gt; To test your driver once it's installed, try the following code: &lt;/p&gt;&lt;pre&gt;&lt;code&gt;&lt;br /&gt;{&lt;br /&gt; Class.forName("Driver name");&lt;br /&gt; Connection con = DriverManager.getConnenction("jdbcurl","username","password");&lt;br /&gt; //other manipulation using jdbc commands&lt;br /&gt;}&lt;br /&gt;catch(Exception e)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2681369414469091822-6950202643603128914?l=kaiyuanzhu.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://kaiyuanzhu.blogspot.com/feeds/6950202643603128914/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2681369414469091822&amp;postID=6950202643603128914' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6950202643603128914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2681369414469091822/posts/default/6950202643603128914'/><link rel='alternate' type='text/html' href='http://kaiyuanzhu.blogspot.com/2007/12/list-of-jdbc-drivers.html' title='A List of JDBC Drivers'/><author><name>开元</name><uri>http://www.blogger.com/profile/11267339021811830116</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2681369414469091822.post-768020035824253208</id><published>2007-12-10T18:55:00.000+01:00</published><updated>2007-12-10T18:56:17.698+01:00</updated><title type='text'>JDBC and Mysql</title><content type='html'>&lt;h2&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Preface&lt;/span&gt;&lt;/h2&gt;  &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;span style="color:#ff0000;"&gt;&lt;b&gt;Purpose&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; The purpose of this lesson is to get you beyond the initial hurdles involved  in:&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;li&gt;Downloading and installing a MySQL database server.&lt;/li&gt;  &lt;li&gt;Preparing that database for use with JDBC.&lt;/li&gt;  &lt;li&gt;Writing and testing your first JDBC programs to administer the database   and to manipulate the data stored in   the MySQL database.&lt;/li&gt; &lt;/span&gt;&lt;/ul&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;span style="color:#ff0000;"&gt;&lt;b&gt;What is JDBC?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; JDBC technology is an API &lt;i&gt;(included in both J2SE and J2EE)&lt;/i&gt;  that provides cross-DBMS connectivity to a wide range of SQL databases and  access to other tabular data sources, such as spreadsheets or flat files.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;span style="color:#ff0000;"&gt;&lt;b&gt;What is MySQL?&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; The &lt;a href="http://www.mysql.com/"&gt;MySQL&lt;/a&gt; database server is probably  the world's most popular open source database software, with more than five  million active installations as of September 2004.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; The database server software from &lt;a href="http://dev.mysql.com/downloads/index.html"&gt;MySQL&lt;/a&gt; is available under  a &lt;i&gt;"dual licensing"&lt;/i&gt; model. Under this model, users may choose to use MySQL  products under the &lt;a href="http://www.mysql.com/company/legal/licensing/opensource-license.html"&gt; free software/open source GNU General Public License&lt;/a&gt; &lt;i&gt;(commonly known as  the "GPL")&lt;/i&gt; or under a &lt;a href="http://www.mysql.com/company/legal/licensing/commercial-license.html"&gt; commercial license&lt;/a&gt;.  &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;span style="color:#ff0000;"&gt;&lt;b&gt;A powerful combination&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; Simply stated, JDBC makes it possible to write platform independent Java  programs that can be used to manipulate the data in a wide range of SQL  databases without the requirement to modify and/or recompile the Java programs when moving from  platform to platform or from DBMS to DBMS.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; MySQL is available for a wide variety of platforms.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; Since both JDBC and MySQL are freely available for many purposes, the  combination of JDBC and MySQL is a powerful combination that should be of  interest for a wide variety of applications.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;b&gt;&lt;span style="color:#ff0000;"&gt;Viewing tip&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;You may find it useful to open another copy of this lesson in a separate browser window.  That will make it easier for you to scroll back and forth among the different listings and figures while you are reading about them. &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;b&gt;&lt;span style="color:#ff0000;"&gt;Supplementary material&lt;/span&gt;&lt;/b&gt; &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;I recommend that you also study the other lessons in my extensive collection of online Java tutorials.  You will find those lessons published at &lt;a href="http://softwaredev.earthweb.com/java"&gt;Gamelan.com&lt;/a&gt;.  However, as of the date of this writing, Gamelan doesn't maintain a consolidated index of my Java tutorial lessons, and sometimes they are difficult to locate there.  You will find a consolidated index at &lt;span style="color:#000000;"&gt; &lt;a href="http://www.dickbaldwin.com/"&gt;www.DickBaldwin.com&lt;/a&gt;.&lt;/span&gt; &lt;/span&gt;&lt;/p&gt; &lt;h2 align="center"&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#000000;"&gt;&lt;a name="Preview"&gt;Preview&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;Download, install, and prepare the database server&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;It is often possible to use the same Java program to manipulate the data in a  wide variety of SQL databases without a requirement to modify and/or recompile the Java program.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;However, the installation and preparation procedures for different SQL databases  vary widely.  A large part of the battle in using JDBC with a particular  database is getting the database installed and properly prepared for use with  JDBC.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;In this lesson, I will show you how to download, install, and prepare a MySQL  database as a &lt;i&gt;localhost&lt;/i&gt; server on a Windows platform for use with JDBC.   Then I will show you how to write three simple JDBC programs to administer the  database server and to manipulate data stored on the database server after it is installed.&lt;/span&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;i&gt;(I will assume that you already have Java SDK v1.4.2 or later, which   includes JDBC, installed on your computer.)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;URLs and version numbers for downloading&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;I will provide specific URLs and version numbers for downloading MySQL  software and documentation as of September 2004.  The version numbers will  certainly change over time as new versions of the software are released.   Hopefully, the folks at MySQL will preserve the integrity of the URLs.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;At least one URL, &lt;a href="http://www.mysql.com/"&gt;http://www.mysql.com/&lt;/a&gt;  should remain constant over time.  If the other links to MySQL in this  lesson become broken with time, you should revert to the main MySQL URL given  above and begin your search for the software and documentation from that point.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;Saving time&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;If you are a newcomer to the installation of database server  software and the preparation of that software for use with JDBC, the information  that I will provide in this lesson should save you several days of  effort in pouring through documentation trying to figure out how to download,  install, and tie  everything together.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Even if you are experienced in these matters, this information should save  you several hours of effort.&lt;/span&gt;&lt;/p&gt; &lt;h2 align="center"&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#000000;"&gt; &lt;a name="Installation_and_Preparation_of_MySQL"&gt;Installation and Preparation of  MySQL&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h2&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;Getting things up and running&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;As a minimum, getting up and running with MySQL and JDBC involves at least  the following steps:&lt;/span&gt;&lt;/p&gt; &lt;ul&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;li&gt;Download and install the appropriate release of the MySQL database   server software &lt;i&gt;  (several different releases are available).&lt;/i&gt;&lt;/li&gt;  &lt;li&gt;Download and install the MySQL Connector/J -- for connecting to a MySQL   database server from Java.&lt;/li&gt;  &lt;li&gt;Download and install the documentation for the MySQL database server.&lt;/li&gt;  &lt;li&gt;Download and install the documentation for the Connector,   which is a separate documentation package from the database server   documentation.&lt;/li&gt;  &lt;li&gt;Write and test one or more JDBC programs that will act as a database administrator, creating one or more users and   possibly one or more   databases on the database server.  &lt;i&gt;(I will show you three different   ways to accomplish this.)&lt;/i&gt;&lt;/li&gt;  &lt;li&gt;Write and test a JDBC program that will log in as a user and   manipulate data stored in one of those databases.&lt;/li&gt; &lt;/span&gt;&lt;/ul&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;Additional MySQL software&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Beyond the minimum, there are a variety of additional software packages, &lt;i&gt; (such as GUI administrator packages)&lt;/i&gt; that can be downloaded from MySQL and  installed on your computer.  &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Since the main thrust of this lesson  has to do with JDBC rather than database administration, I won't get into that.   Rather, I will show you how to use a command-line monitor program that is  included with the MySQL database software to perform the minimal database administrative  tasks required to satisfy the objectives of this lesson.&lt;/span&gt;&lt;/p&gt; &lt;h3&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Documentation&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;I will begin with a discussion of the available documentation for both the MySQL  database server and the MySQL Connector/J.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;b&gt;&lt;span style="color:#ff0000;"&gt;MySQL database server documentation&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;The MySQL Reference Manual can be downloaded from &lt;a href="http://dev.mysql.com/doc/"&gt;http://dev.mysql.com/doc/&lt;/a&gt;.  In  addition, there is an online searchable version of the Reference Manual available at &lt;a href="http://dev.mysql.com/doc/mysql/en/Reference.html"&gt; http://dev.mysql.com/doc/mysql/en/Reference.html&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;The downloadable version is available in several different formats, including:&lt;/span&gt;&lt;/p&gt;  &lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;     &lt;/span&gt;&lt;ul&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;      &lt;li&gt;       &lt;a href="http://dev.mysql.com/get/Downloads/Manual/manual-split.zip/from/pick"&gt;       HTML, one page per chapter, ZIP&lt;/a&gt;        &lt;/li&gt;       &lt;li&gt;       &lt;a href="http://dev.mysql.com/get/Downloads/Manual/manual.zip/from/pick"&gt;       HTML, all on one page, ZIP&lt;/a&gt; &lt;/li&gt;      &lt;/span&gt;&lt;/ul&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;You would probably do well to have both of these formats locally available on  your computer if you have sufficient disk space.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;The one-page-per-chapter formatted manual&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;The first format in the above list consists of a large number of HTML files.   There is one HTML file for the table of contents plus about thirty-three additional files  containing the text of the reference manual.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;This format has a major advantage over the second format in terms of speed.   It is relatively fast to click on a hyperlink in the table of contents and to  see that material appear in the browser window.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;There are a couple of downsides to this format, however.  One downside  is that this format is not very useful for searching the entire manual for  keywords, &lt;i&gt;(using your browser)&lt;/i&gt; because it is broken down into a large  number of separate HTML files.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;A second downside is that even though MySQL 4.0 is the recommended release in  September of 2004, this manual contains information up through version  5.0.1-alpha.  Sometimes information about the newer versions tends to  obscure information about version 4.0.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;Installing the one-page-per-chapter formatted manual&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;All that you need to do to install the database server documentation in this format is to  download the zip file and extract the various HTML files into a folder on your  disk.  Then open the file named &lt;b&gt;manual_toc.html&lt;/b&gt; in your browser to  view the manual.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;For convenience, I created a desktop icon that links to the table of contents  file.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;The all-on-one-page formatted manual&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;This format is very useful for searching &lt;i&gt;(using your browser)&lt;/i&gt; because  all of the text is in a single HTML file.&lt;/span&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;i&gt;(There are actually two HTML  files.  One file contains a hyperlinked table of contents.  The second  file contains the text of the entire manual.)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;The primary downside to this format is speed, or lack thereof.  The HTML  file containing the text of the manual is about four megabytes in size.  On  my machine, navigating this manual in a browser is a very slow process.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;The downloadable version in this format also contains information up through  version 5.0.1-alpha, resulting in the same disadvantage mentioned earlier.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;Included in the software distribution&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;When you download and install the currently recommended version of  MySQL, &lt;i&gt;(which is version 4.0.21),&lt;/i&gt; the Docs folder in the installation  tree structure will contain a copy of the manual in the all-on-one-page format that purports to  be for version 4.0.21.  Thus, you don't need to download this format  separately.  You will get it when you download the software.&lt;/span&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;i&gt;(Even though this version purports to be for version 4.0.21, it also   contains a lot of information about later versions.  It may be exactly   the same as the version that can be downloaded separately except that the   title page is different.)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;Installation of the all-on-one-page formatted manual&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;As mentioned above, you don't need to do anything special to install this  format of the manual.  It will be installed automatically when you install  the MySQL 4.0.21 version of the database.&lt;/span&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;i&gt;(Presumably, later versions of the software will also contain a copy   of the current manual in this format.)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Once you have installed the database, the Docs folder of the installation  tree will contain the files named &lt;b&gt;manual_toc.html&lt;/b&gt; and &lt;b&gt;manual.html&lt;/b&gt;.   The first file contains a hyperlinked table of contents, and the second file  contains the entire text of the manual.  &lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Once again, for convenience, I  created a desktop icon linked to the table of contents file to make it  convenient to open in my browser.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;Using both formats&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Because I have plenty of space on my disk, I have both formats installed on  my computer with an icon on the desktop for each.  I occasionally open the  version that contains the entire manual in a single HTML file when I need to  search the entire document for something.  Most of the time, however, I  open and use the multi-file version due to its increased speed.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;MySQL Connector/J documentation&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;I did not find a separate downloadable version of the connector documentation at the MySQL site.   However, I did find an online version at &lt;a href="http://dev.mysql.com/doc/connector/j/en/index.html"&gt; http://dev.mysql.com/doc/connector/j/en/index.html&lt;/a&gt;.  I was able to  save the connector documentation locally by selecting the&lt;i&gt; Save Page As... &lt;/i&gt;item on  the &lt;i&gt;File&lt;/i&gt; menu of my Netscape 7.2 browser.&lt;/span&gt;&lt;/p&gt; &lt;blockquote&gt; &lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt; &lt;/span&gt;&lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;i&gt;(I was unable to save the page locally using Internet Explorer version   6 for some reason.  However, I also discovered later that essentially the same   documentation is contained in the downloadable zip file for the connector   software in a file named mysql-connector-java-3.0.15-ga\docs\index.html.)&lt;/i&gt;&lt;/span&gt;&lt;/p&gt; &lt;/blockquote&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Saving the page in Netscape 7.2 resulted in a local file named &lt;b&gt;index.html&lt;/b&gt;  and an associated folder named &lt;b&gt;index_files&lt;/b&gt;.  The file contains the  text of the connector documentation.  The folder contains style sheets and other  related material.&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Installation of the connector documentation consisted simply of saving this  material locally and creating a desktop icon linked to the file named &lt;b&gt; index.html&lt;/b&gt;.&lt;/span&gt;&lt;/p&gt; &lt;h3&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;Downloading the MySQL Database Server&lt;/span&gt;&lt;/h3&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;&lt;span style="color:#ff0000;"&gt;&lt;b&gt;The download page&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt; &lt;p&gt;&lt;span style="font-family:Verdana, Arial, Helvetica;font-size:-1;"&gt;The main download page for both the database server and the connector as of  September 2004 is &lt;a href="http://dev.mysql.com/downloads/"&gt; http://dev.mysql.com/downloads/&lt;/a&gt;.  Hopefully, this URL will also remain  intact as MySQL releases later vers
