<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[Zdave Blog]]></title>
<link>http://www.zdave.net/</link>
<description><![CDATA[关注互联网、编程、网络管理技术]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog3 v2.8]]></copyright>
<webMaster><![CDATA[me@zdave.net(zdave)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>Zdave Blog</title>
	<url>http://www.zdave.net/images/logos.gif</url>
	<link>http://www.zdave.net/</link>
	<description>Zdave Blog</description>
</image>

			<item>
			<link>http://www.zdave.net/article/172.htm</link>
			<title><![CDATA[Java课程设计--电子词典]]></title>
			<author>me@zdave.net(zdave)</author>
			<category><![CDATA[Resources]]></category>
			<pubDate>Fri,04 Jul 2008 16:55:21 +0800</pubDate>
			<guid>http://www.zdave.net/default.asp?id=172</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这两周是Java课程设计,自由选题,我选的是电子词典.<br/> <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 把写的实验报告和源代码发出来,写的比较简单,给有需要的人分享一下.<br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 课程设计说明书(Word)&nbsp;&nbsp;<img src="http://www.zdave.net/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.zdave.net/attachments/month_0807/0200874165230.rar" target="_blank">点击下载此文件</a><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 源代码(IDE为Netbeans)&nbsp;&nbsp;<img src="http://www.zdave.net/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.zdave.net/attachments/month_0807/q200874165341.rar" target="_blank">点击下载此文件</a><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 编译后的可执行文件(jar)&nbsp;&nbsp;<img src="http://www.zdave.net/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.zdave.net/attachments/month_0807/e200874165449.rar" target="_blank">点击下载此文件</a><br/><br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>说明书:<br/><br/> 一、课程设计题目<br/><br/>电子词典<br/>摘要&nbsp;&nbsp;<br/>电子词典是一种将传统的印刷词典转成数码方式、进行快速查询的数字学习工具。电脑词典以轻便易携、查询快捷、功能丰富等特点，成为21世纪学生学习生活、社会人士移动办公的掌上利器。<br/>本系统是一个采用Microsoft Access作为数据库的电子词典，根据用户的输入过程中智能感知接近的单词，并在最终的查询中显示出查询结果。 <br/>本系统是采用JAVA作为开发工具NetBeans 6作为开发工具的电子词典,提供了智能感知和查询功能。<br/>关键字： JAVA； 电子词典;<br/><br/><br/><br/>abstract<br/>Electronic dictionary is a traditional printed from digital conversion, a quick search of digital learning tools. Computer dictionary to highly portable, for fast, feature-rich, and other characteristics of the 21st century students to learn life, the community of handheld mobile office tool.<br/>This electronic dictionary is a system using Microsoft Access database , based on user input in the smart sense shows the word close, and the final query results show the query.<br/>This system is used as a development tool JAVA NetBeans 6 as a development tool of the electronic dictionary，provides smart sensing and queries.<br/>Keywords:&nbsp;&nbsp;JAVA;&nbsp;&nbsp;Electronic dictionary; <br/><br/><br/><br/><br/>二、系统开发背景<br/>随着国际化的发展，英语变得越来越为重要。随着越来越多的人开始学习英语，一个方便实用的英汉查询工具为人们所渴望。<br/>电子词典是一种将传统的印刷词典转成数码方式、进行快速查询的数字学习工具。使用电子词典查询英语，效率远远高于传统的图书查询，而且解释更为详尽，词库更新更为方便快捷。<br/><br/><br/><br/><br/>三、设计主要目的及意义<br/>软件课程设计是计算机科学与技术专业软件方向的一个重要环节，是语言类课程学习的总结。通过课程设计使我们加深对程序设计的理解，掌握程序开发的基本方法，深化学生面向对象的编程设计思想和新一代程序设计的逻辑思维方式，把课堂上所学到的多个单元串到一起，提高我们在软件设计过程中分析问题和解决问题的实际动手能力，使我们的理论知识和实践技能得到共同发展，最终提高我们解决问题和分析问题的能力。为我们踏上工作岗位之前提供了一次专业研究和项目开发的宝贵实践机会，为今后的工作积累经验。<br/><br/><br/><br/><br/>四、课程设计的过程<br/>1.流程图设计：<br/>流程图如下：<br/><br/> <br/>2.结构设计<br/>该程序的结构框图如下所示：<br/> <br/><br/>3.窗体设计：<br/>&nbsp;&nbsp;&nbsp;&nbsp;该程序只有一个窗体。可实现词典设置、智能感知、查询等功能。窗体设计如下：<br/><br/><br/> 4.程序代码设计：(代码部分详见附录)<br/><br/><br/> 5.运行界面：<br/><br/><br/>五、重点及难点<br/>1、重点：<br/>&nbsp;&nbsp; (1)查询功能：若有查询的词条则显示结果，若没有就给出提示。<br/>&nbsp;&nbsp; (2)智能感知功能：在用户输入的过程中，根据已输入部分进行检索，提示相关接近的词条。<br/>&nbsp;&nbsp; (3)数据库路径：使用相对路径，使得即使程序路径发生改变依然可以使用。<br/>&nbsp;&nbsp; (4)词典设置：除了英汉查询外，可以另外自定义词典。<br/>2、难点：<br/>&nbsp;&nbsp;&nbsp;&nbsp;本设计的难点在于实现智能感知功能。智能感知功能即在用户输入的过程中，根据已输入部分进行检索，提示相关接近的词条。首先对用户的输入进行判断，然后给输入框增加一个KeyListener，然后在keyReleased事件发生时，取得输入框的字符串，然后在数据库中进行查询，当遇到与之匹配或者接近的词条则在智能感知区域显示出来。<br/><br/><br/><br/><br/>六、主要结论<br/>&nbsp;&nbsp;&nbsp;&nbsp;在整个设计过程中，我有一些宝贵的感受和收获，现一并总结如下：在学习JAVA的过程中还不够扎实，学过的东西没能融会贯通，在编写代码的时候不能够信手拈来，熟练应用，而是到处查找资料。 <br/>课程设计的另一个收获是得到了对JAVA这种面向对象语言的初步印象，学到了一些编程的方法。在面向对象的编程方式下，真正实现了把主要精力放在功能的实现上，对封装好的对象只需了解其属性方法即可使用。编程的主要任务是为程序中使用的各种对象的事件编写事件处理程序，从而实现系统功能。<br/>在设计初期，我通过与老师和同学的反复交流，明确了系统要实现的任务。为后期的详细设计奠定了基础。在设计过程中，通过参考其它相似系统确定系统的具体实现及功能的细节改进。同时，指导老师也提出了宝贵的意见。<br/>经过了两周的学习和设计，我终于完成了《电子词典》课程设计，从开始接到设计题目到系统的实现，再到设计说明书的完成，每走一步对我来说都是尝试与挑战。作为一个本科生的课程设计，由于经验的匮乏，难免有许多考虑不周全的地方，如果没有指导老师的督促指导，以及一起工作的同学们的支持，想要完成这个设计是比较困难的。在这次为期两周紧张的软件课程设计中，我们收益非浅，不仅巩固了课堂上学习的知识，而且开阔了眼见。并且真正懂得了软件开发的步骤和含义。<br/>课程设计是大学教育的重要一课，这是对大学期间所学知识的综合运用能力的一次检测。为我们踏上工作岗位之前提供了一次专业研究和项目开发的宝贵实践机会，为今后的工作积累经验。<br/><br/><br/><br/><br/>七、致谢<br/>本课程设计的完成，首先感谢母校——河北工程大学的辛勤培育之恩。<br/>本系统是在刘云与龚柄江两位老师直接指导下完成的，两位老师从论文的选题，设计计划的安排到具体功能的实现，以及说明书的撰写直至定稿的全过程都给予了精心的指导和严格的要求，对本论文的最后完成给予了莫大的帮助。在设计过程中两位云老师在百忙中挤出时间多次给予指导，提出了许多宝贵的修改意见。在这里首先要感谢两位云老师。<br/>其次要感谢贾西雷同学，他们利用自己的宝贵时间帮助我测试程序，并且结合自己的经验，给我提出的宝贵的意见和建议，使我的系统得以进一步的完善。在此也向他们表示由衷的感谢。<br/>然后还要感谢大学以来所有的老师，为我们打下计算机专业知识的基础；同时还要感谢所有的同学们，正是因为有了你们的支持和鼓励。此次课程设计才会顺利完成。<br/><br/><br/><br/><br/>八、参考文献<br/>[1] Kathy Sierra &amp; Bert Bates. Head First Java. 中国电力出版社 2007<br/>[2] Bruce Eckel. Thinking in Java.机械工业出版社. 2008<br/><br/><br/><br/><br/><br/>九、附录：程序清单<br/>package dic;<br/>public class Main {<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String[] args) {&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Frame DicFrame = new Frame();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DicFrame.setTitle(&#34;电子词典&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DicFrame.setVisible(true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DicFrame.setPath();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>}<br/><br/><br/>package dic;<br/>import java.awt.event.*;<br/>import java.sql.*;<br/>import java.io.*;<br/>import java.util.logging.Level;<br/>import java.util.logging.Logger;<br/>import javax.swing.*;<br/>public class Frame extends javax.swing.JFrame {<br/>&nbsp;&nbsp;&nbsp;&nbsp;public Frame() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;initComponents();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private void initComponents() {<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchPanel = new javax.swing.JPanel();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchTextField = new javax.swing.JTextField();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchButton = new javax.swing.JButton();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MainPanel = new javax.swing.JPanel();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResaultLabel = new javax.swing.JLabel();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuBar = new javax.swing.JMenuBar();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OptionMenu = new javax.swing.JMenu();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchTextField.setText(&#34;请输入查询内容&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchTextField.addKeyListener(new java.awt.event.KeyAdapter() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void keyReleased(java.awt.event.KeyEvent evt) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchTextFieldKeyReleased(evt);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchTextField.addMouseListener(new java.awt.event.MouseAdapter() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void mouseClicked(java.awt.event.MouseEvent evt) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchTextFieldMouseClicked(evt);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchButton.setText(&#34;查询&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchButton.addActionListener(new java.awt.event.ActionListener() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void actionPerformed(java.awt.event.ActionEvent evt) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchButtonActionPerformed(evt);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&#114;g.jdesktop.layout.GroupLayout SearchPanelLayout = new o&#114;g.jdesktop.layout.GroupLayout(SearchPanel);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchPanel.setLayout(SearchPanelLayout);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchPanelLayout.setHorizontalGroup(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchPanelLayout.cr&#101;ateParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(SearchPanelLayout.cr&#101;ateSequentialGroup()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addContainerGap()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(SearchTextField, o&#114;g.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 287, Short.MAX_VALUE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(SearchButton, o&#114;g.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 89, o&#114;g.jdesktop.layout.GroupLayout.PREFERRED_SIZE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(14, 14, 14))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchPanelLayout.setVerticalGroup(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchPanelLayout.cr&#101;ateParallelGroup(org.jdesktop.layout.GroupLayout.BASELINE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(SearchTextField, o&#114;g.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 28, o&#114;g.jdesktop.layout.GroupLayout.PREFERRED_SIZE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(SearchButton, o&#114;g.jdesktop.layout.GroupLayout.PREFERRED_SIZE, 28, o&#114;g.jdesktop.layout.GroupLayout.PREFERRED_SIZE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResaultLabel.setBackground(new java.awt.Color(255, 255, 255));<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&#114;g.jdesktop.layout.GroupLayout MainPanelLayout = new o&#114;g.jdesktop.layout.GroupLayout(MainPanel);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MainPanel.setLayout(MainPanelLayout);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MainPanelLayout.setHorizontalGroup(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MainPanelLayout.cr&#101;ateParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(org.jdesktop.layout.GroupLayout.TRAILING, MainPanelLayout.cr&#101;ateSequentialGroup()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addContainerGap(36, Short.MAX_VALUE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(ResaultLabel, o&#114;g.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 364, Short.MAX_VALUE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addContainerGap())<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MainPanelLayout.setVerticalGroup(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MainPanelLayout.cr&#101;ateParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(MainPanelLayout.cr&#101;ateSequentialGroup()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addContainerGap()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(ResaultLabel, o&#114;g.jdesktop.layout.GroupLayout.DEFAULT_SIZE, 174, Short.MAX_VALUE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addContainerGap(76, Short.MAX_VALUE))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OptionMenu.setText(&#34;设置词典&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OptionMenu.addMouseListener(new java.awt.event.MouseAdapter() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void mouseClicked(java.awt.event.MouseEvent evt) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OptionMenuMouseClicked(evt);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MenuBar.add(OptionMenu);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setJMenuBar(MenuBar);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;o&#114;g.jdesktop.layout.GroupLayout layout = new o&#114;g.jdesktop.layout.GroupLayout(getContentPane());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getContentPane().setLayout(layout);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.setHorizontalGroup(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.cr&#101;ateParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(SearchPanel, o&#114;g.jdesktop.layout.GroupLayout.DEFAULT_SIZE, o&#114;g.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(MainPanel, o&#114;g.jdesktop.layout.GroupLayout.DEFAULT_SIZE, o&#114;g.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.setVerticalGroup(<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;layout.cr&#101;ateParallelGroup(org.jdesktop.layout.GroupLayout.LEADING)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(layout.cr&#101;ateSequentialGroup()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(SearchPanel, o&#114;g.jdesktop.layout.GroupLayout.PREFERRED_SIZE, o&#114;g.jdesktop.layout.GroupLayout.DEFAULT_SIZE, o&#114;g.jdesktop.layout.GroupLayout.PREFERRED_SIZE)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.addPreferredGap(org.jdesktop.layout.LayoutStyle.UNRELATED)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.add(MainPanel, o&#114;g.jdesktop.layout.GroupLayout.DEFAULT_SIZE, o&#114;g.jdesktop.layout.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pack();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}// &lt;/editor-fold&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;private void SearchTextFieldMouseClicked(java.awt.event.MouseEvent evt) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (SearchTextField.getText().equals(&#34;请输入查询内容&#34;)){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SearchTextField.setText(&#34;&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;private void OptionMenuMouseClicked(java.awt.event.MouseEvent evt) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;chooser();<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;private void SearchButtonActionPerformed(java.awt.event.ActionEvent evt) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!SearchTextField.getText().equals(&#34;&#34;)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setConn(SearchTextField.getText());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;private void SearchTextFieldKeyReleased(java.awt.event.KeyEvent evt) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (!SearchTextField.getText().equals(&#34;&#34;)) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;searchConn(SearchTextField.getText());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;public static void main(String args[]) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;java.awt.EventQueue.invokeLater(new Runnable() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public void run() {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Frame DFrame =&nbsp;&nbsp;new Frame();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DFrame.setVisible(true);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;});<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;void setConn(String Stext){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//查询方法<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String driver = &#34;sun.jdbc.odbc.JdbcOdbcDriver&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String dbURL = &#34;jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=&#34;+dbPath;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection con = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement stm = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(driver); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con = DriverManager.getConnection(dbURL);&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stm = con.cr&#101;ateStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet rst1 = stm.executeQuery(&#34;Sel&#101;ct*from english&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(rst1.next()){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(rst1.getString(1).trim().equals(Stext)){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResaultLabel.setText(rst1.getString(2));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (ResaultLabel.getText().equals(&#34;&#34;)){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResaultLabel.setText(&#34;抱歉,没有找到&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(Exception e){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JOptionPane OptionPane = new JOptionPane() ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OptionPane.showMessageDialog(null,&#34;请选择正确的词典文件&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;void searchConn(String Stext){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//智能感知<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File A=new File(&#34;..\\data\\english.mdb&#34;);<br/>//&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String filePath=A.getAbsolutePath();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String driver = &#34;sun.jdbc.odbc.JdbcOdbcDriver&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String dbURL = &#34;jdbc:odbc:driver={Microsoft Access Driver (*.mdb)};DBQ=&#34;+dbPath;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Connection con = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Statement stm = null;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try{<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Class.forName(driver); <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con = DriverManager.getConnection(dbURL);&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stm = con.cr&#101;ateStatement();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResultSet rst1 = stm.executeQuery(&#34;Sel&#101;ct*from english&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String Rtext = &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String Htext = &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int i = 0;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;while(rst1.next()){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String temp = rst1.getString(1);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (Rtext.length()&lt;70){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (temp.length() &gt;= Stext.length() &amp;&amp; temp.substring(0, Stext.length()).equals(Stext) ){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Rtext = Rtext + &#34;&lt;br&gt;&#34;+temp ; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Htext = &#34;&lt;html&gt;&#34;+Rtext+&#34;&lt;/html&gt;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ResaultLabel.setText(Htext);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;con.close();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(Exception e){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JOptionPane OptionPane = new JOptionPane() ;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OptionPane.showMessageDialog(null,&#34;请选择正确的词典文件&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e.printStackTrace();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;}<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; void chooser(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;JFileChooser fc = new JFileChooser(getPath());<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fc.setDialogTitle(&#34;请选择词典文件&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fc.showOpenDialog(this);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (fc.getSel&#101;ctedFile()!= null){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File B = fc.getSel&#101;ctedFile();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dbPath=B.getAbsolutePath();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void setPath(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dbPath = getPath()+&#34;//english.mdb&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp; }<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; String getPath(){<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String filePath = &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;File directory = new File(&#34;.&#34;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filePath = directory.getCanonicalPath();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} catch (IOException ex) {<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return filePath;<br/>&nbsp;&nbsp;&nbsp;&nbsp; }<br/>&nbsp;&nbsp;&nbsp;&nbsp;static String dbPath = &#34;&#34;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private javax.swing.JPanel MainPanel;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private javax.swing.JMenuBar MenuBar;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private javax.swing.JMenu OptionMenu;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private javax.swing.JLabel ResaultLabel;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private javax.swing.JButton SearchButton;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private javax.swing.JPanel SearchPanel;<br/>&nbsp;&nbsp;&nbsp;&nbsp;private javax.swing.JTextField SearchTextField;<br/> }<br/><br/><br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.zdave.net/article/171.htm</link>
			<title><![CDATA[两周的电子工艺实训]]></title>
			<author>me@zdave.net(zdave)</author>
			<category><![CDATA[Diary]]></category>
			<pubDate>Sun,22 Jun 2008 22:31:11 +0800</pubDate>
			<guid>http://www.zdave.net/default.asp?id=171</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;又到了一学期的尾声,前段时间进行了电子工艺实训,最终做成了一个多功能变压器和一个调频收音机.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;其实在实训之前我就想着能不能不去上，因为之前我看到了一个6月10号开班的CCNA培训。因为早早的得到了MCSE的证书，所有一直想着把CCNA也考下来。当然，电子工艺的实训还是如期的参加了，并且我觉得这两星期的收获要远远大于参加CCNA的培训。与其在两周内通过培训记下CCNA相关的海量知识，倒不如这两周的认认真真的动手实训。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;实训过程中“大老板”就只见过几次面，虽然已经不少白发，但看起来还是很精神饱满。关于“大老板”的一些观点，我觉得有很多地方有失偏颇，但如今学校重软轻硬缺少动手能力的确也是不争的事实，所以“大老板”语重心长的一番话的确然大家有所感慨。关于“小老板”的印象就很多了，我觉得“小老板”是一个典型的干技术的。认识不少做技术的人，性格大抵如此。第一周的一天下午迟到，本以为“小老板”会很严厉的批评一番，结果到了直接让我去焊接了。“小老板”说过，“不要看我的脸色，有时我很生气不表现出来的”。所以一直到现在也不知道那天“小老板”是如何想的。想起美国西点军校的典型一句话：“报告长官，没有任何理由”，迟到的时候打算这样讲的，结果连讲的机会都没有了。 <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我算是两位老师所说的那种动手能力比较弱的那种，要说动手能力，恐怕只有小时候拆玩具的时候能算是我的动手能力吧。九年的义务教育没什么动手能力不用说，而且到了初一就开始接触了BASIC编程，到后来的高中所关心的也全是些“软”的知识。在电子工艺实训之前，我可算是一个完全重软轻硬的人，即便是用到硬件的时候，我也总是抱着“再好的硬件也需要好的软件驱动”的想法。经过这两周的实训，使我发现自己甚是可笑，的确，对于青蛙来说，天空也许就只有井口一般大小。关于软硬的话语不必多说，只能说相辅相成，没有孰重孰轻。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;说下实训的这两周吧，的确是非常精彩的。电烙铁的“嘭”的一声总是让人“兴奋”，自从开始的时候“小老板”说“嘭”是很正常的我就开始胆战心惊，生怕它真的就“嘭”了。还好，这两周的实训都很愉快。在实训的最后一天做收音机的时候遇到了点小插曲，收音机焊接完成后能收到台，但是时有时无，觉得是接触不良，自己捣鼓的半天，又找其他同学看了看，把焊到一起的焊点分开，重新焊接电源线等等，结果还是不行。最后还是请了那位“豪杰摩托”助教过来帮忙，才发现了真正的问题所在：电路上2号的那个元件在SMT焊接的时候放的过于偏上，导致下端接触不良。补焊后果然问题解决，收音机性能良好，大致能收到10个台吧。看着自己做的万能充电器和收音机，觉得真是不可思议。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.zdave.net/article/170.htm</link>
			<title><![CDATA[简体版iPhone或于6月下旬在中国大陆上市]]></title>
			<author>me@zdave.net(zdave)</author>
			<category><![CDATA[WebDig]]></category>
			<pubDate>Sun,08 Jun 2008 12:58:33 +0800</pubDate>
			<guid>http://www.zdave.net/default.asp?id=170</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;据线报，iPhone 官方简体中文版会在6月底，最迟不过7月初，在中国大陆上市。估计老乔在北京时间6月10日凌晨举办的WWDC大会上宣布这一点。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;现在还不知道全球各地的新iPhone是否都同步上市。就目前迹象看来，有可能不会。比如国外一些零售商就已经收到了苹果的包裹，规定只能在6月10日那天才能打开，而澳大利亚版则有可能到6月19日苹果悉尼店开业时才会上架。因此，中国大陆行货亮相时间也有可能会与国外其他市场不同，但应该不会超过我们的线报提供的时间段。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;同时另据线报，苹果最终没有和任何一个中国大陆运营商达成协议。因此，线报显示，简体中文版iPhone将不捆绑任何运营商网络——话说回来，即使是中移动的“心机”，好像也从来没加过网络锁。<br/><br/>　　不过，鉴于苹果亚太区总裁卢雷原是摩托罗拉旧将，并且 2006 年签下了国内最大的手机分销商中的9家。有这个打底，应该还是相当有信心的。<br/><br/>　　尽管不能和中移动（或联通）分享数据流量费，但不绑定运营商的做法非常适合中国国情，如果新手机只能在中移动营业厅才能买，大家还不烦死。<br/><br/>　　几乎在同一时候，多普达的 Touch Diamond 也会在大陆正式上市。之前HTC已经抢在iPhone 2.0之前发布了，现在就看多普达版本的TD能不能抢在苹果前面了。等着看好戏吧。]]></description>
		</item>
		
			<item>
			<link>http://www.zdave.net/article/169.htm</link>
			<title><![CDATA[三个月日志没有更新]]></title>
			<author>me@zdave.net(zdave)</author>
			<category><![CDATA[Diary]]></category>
			<pubDate>Fri,06 Jun 2008 08:08:36 +0800</pubDate>
			<guid>http://www.zdave.net/default.asp?id=169</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 看了下上一篇日志是3月6号,已经整3个月没有更新日志了.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有很多时候想写,却又懒得写.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 这3个月也不算很忙,最近又开始考试了,接着又是实训和课程设计.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 流水帐一下:期间买了IPOD一台,WNV的Kappa限量队服一件,技术书籍6本,文艺读物6本,其他各种琐碎若干.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 总之,钱是不够花.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 也希望计算机技术类的书籍能够便宜些,不要动辄就100多,唉.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; PS:微软的MCP,MCTS,MCSA,MCSE的证书已经早早的收到了.前些天Ubuntu8.0.4的光盘也收到了.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;]]></description>
		</item>
		
			<item>
			<link>http://www.zdave.net/article/168.htm</link>
			<title><![CDATA[QQ拼音输入法 1.1.137.202发布]]></title>
			<author>me@zdave.net(zdave)</author>
			<category><![CDATA[WebDig]]></category>
			<pubDate>Thu,06 Mar 2008 15:07:44 +0800</pubDate>
			<guid>http://www.zdave.net/default.asp?id=168</guid>
		<description><![CDATA[1.性能优化<br/>2.软件兼容性提高<br/>3.界面皮肤<br/>4.鼠标选词<br/>5.首词固定<br/>6.候选词竖排显示界面调整<br/>7.v1~v9的特殊符号输出<br/>8.支持用户自定义的分类词库<br/><br/><a target="_blank" href="http://dl_dir.qq.com/qqfile/qqpinyin/QQPinyin_Setup_1.1.137.202.exe" rel="external">下载</a>]]></description>
		</item>
		
			<item>
			<link>http://www.zdave.net/article/167.htm</link>
			<title><![CDATA[入手黑莓7290两天及个人感受]]></title>
			<author>me@zdave.net(zdave)</author>
			<category><![CDATA[Diary]]></category>
			<pubDate>Sat,01 Mar 2008 20:13:32 +0800</pubDate>
			<guid>http://www.zdave.net/default.asp?id=167</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 因前一个手机掉漆太严重以及摇杆逐渐不灵敏,而等了一年多的魅族M8迟迟不肯上市,无奈之下先买了黑莓7290.<br/>&nbsp;&nbsp;&nbsp;&nbsp; 星期四中午收到的手机,入手两天,感觉不错.7290的开机比一般的手机要慢许多.装上卖家送的光盘里的管理软件后,连上电脑,第一次刷机把中文给刷没了.之后去MAXPDA下了一个377的ROM再刷一遍,在语言里就有中文了.<br/>&nbsp;&nbsp;&nbsp;&nbsp; 屏幕虽然是6万5千色的,但是显示效果还是相当不错的,尤其在强光下依然十分清晰.屏幕很大,看起来很舒服.以前所说的短信不能发中文需要粘贴的缺点已经解决.<br/>&nbsp;&nbsp;&nbsp;&nbsp; 电池卖家说是原装,要了两个,的确很撑用.QWERT全键盘开始会有些不适应,习惯后就很舒服了.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; 装了一些应用程序:<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; efile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 用来看word excel powerpoint 和 dpf 的好东西<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 贝贝辞典&nbsp;&nbsp;&nbsp;&nbsp; 用作者的话来说最大的优点就是没有词库,所以很小,我个人装了计算机和迷你英汉词典还有CET6<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 常用查询&nbsp;&nbsp;&nbsp;&nbsp; 用来查询一些常见的如身份证 手机归属地 邮编区号之类<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MSN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;不用多说<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 键盘自动锁&nbsp;&nbsp;同上<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 内存提升&nbsp;&nbsp;&nbsp;&nbsp; 同上<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; 还有些风格如Vista Iphone等都很不错.<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp; 黑莓7290还带有蓝牙功能,不过出于安全考虑,只能用于接电话,不能传文件,算是一个小小的遗憾.<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 最后,样图一张<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; <img src="http://www.zdave.net/attachments/month_0803/t200831201320.jpg" border="0" alt=""/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.zdave.net/article/166.htm</link>
			<title><![CDATA[百度聊天工具“百度hi”]]></title>
			<author>me@zdave.net(zdave)</author>
			<category><![CDATA[WebDig]]></category>
			<pubDate>Fri,29 Feb 2008 23:05:41 +0800</pubDate>
			<guid>http://www.zdave.net/default.asp?id=166</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;百度IM的名称初定为百度hi，目前已有泄露出来的1.0beta版可供下载，虽然能安装，但不能使用。经测试发现，百度hi并非对登录IP做出了限制，而是限制了能使用百度hi的帐号。<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;传说中的百度hi截图：<br/><img src="http://www.zdave.net/attachments/month_0802/i200822923515.jpg" border="0" alt=""/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;目前流传的1.0beta版不能登录使用是由于其对登录用户名做出了限制，为什么这样说呢？<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当输入登录用户名是自己的百度帐号，但密码输入错误时，百度hi会提示“您使用的版本为非公开版本，请下载最新的正式版本！”但当输入帐号为robin，随便输入一个密码后，百度hi会提示密码错误。（robin=李彦宏）<br/><img src="http://www.zdave.net/attachments/month_0802/h200822923538.jpg" border="0" alt=""/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;也就是说，百度hi是对登录帐号进行了限制，不允许非百度人员登录。而并非之前传说的对IP进行限制。<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.zdave.net/article/165.htm</link>
			<title><![CDATA[IBM计划创造至尊超级计算机，成为整个互联网的主机]]></title>
			<author>me@zdave.net(zdave)</author>
			<category><![CDATA[WebDig]]></category>
			<pubDate>Sun,17 Feb 2008 02:47:28 +0800</pubDate>
			<guid>http://www.zdave.net/default.asp?id=165</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在世界最快的10台超级计算机中IBM蓝色基因占据了4席，其中包括世界上最快的，位于Lawrence Livermore国家实验室的Blue Gene/L。但是蓝色巨人显然还在研究更雄心勃勃的计划：建造一台可处理整个互联网应用需求的主机。 <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这项计划名为 Project Kittyhawk，以蓝色基因为基础，能够运行目前所有流行的web应用，如Linux，Apache，MySQL和Ruby on Rails。 <br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;综合大型对称多应用（SMP）系统和集群，理论上可拥有6710万个处理器内核，32PB内存，16384 racks。用 Nicholas Carr的话来说，“忘记Thomas Watson那句著名的世界上只需要5台电脑的名言吧，其实一台就够了。”]]></description>
		</item>
		
			<item>
			<link>http://www.zdave.net/article/164.htm</link>
			<title><![CDATA[Windows Server 2003 域管理知识]]></title>
			<author>me@zdave.net(zdave)</author>
			<category><![CDATA[MCSE&amp;CCNA]]></category>
			<pubDate>Sat,16 Feb 2008 18:04:17 +0800</pubDate>
			<guid>http://www.zdave.net/default.asp?id=164</guid>
		<description><![CDATA[<span style="color:Blue">OU</span><br/>缺点是没有安全性设计。<br/>优点是有效地组织对象。<br/><br/><span style="color:Blue">使用UPN登陆公司的域</span><br/>某公司有多个域，可以使用UPN（User Principals Name）登陆公司的域，使用打开邮箱的命令就可以登陆到网络中，这样做的好处是：只需输入邮箱地址，不必知道登陆哪个域。<br/>如：admin@bitqfx.com = User Name + Server Name<br/><br/><span style="color:Blue">利用Internet 邮件地址登陆公司的域</span><br/>某公司员工出差到上海，他可以使用Internet 邮件地址如：<br/>admin@yahoo.com.cn 通过Internet 登陆到北京公司的域，但是必须在Active Directory Domain And Trusts （活动目录域和信任关系）添加记录。<br/><br/><span style="color:Blue">DC的复制</span><br/>由USN号大的DC向USN号小的方向复制。<br/><br/><span style="color:Blue">AD权限（Permission）继承的分类</span><br/>继承上来，继承下去。<br/><br/><span style="color:Blue">域、域树和森林</span><br/>域、域树：连续的命名空间。<br/>森林：不连续的命名空间，常用于公司合并。<br/><br/><span style="color:Blue">AD安装的校验</span><br/>验证netlogon.dns文件的存在，同时用命令nslookup来验证DNS的设置。<br/><br/><span style="color:Blue">Group Policy 的规则</span><br/>基于Windows的域<br/>是标准的AD对象<br/>依赖于SDOU<br/>组策略的实现必须Link到SDOU上<br/><br/><span style="color:Blue">GPO的功能</span><br/>GPO（Group Policy Object，组策略对象）<br/>设定访问许可<br/>建立用户对象<br/><br/><span style="color:Blue">GPO的生效级别</span><br/>在AD的不同层次上定义多个GPO，则使用LSDOU(Local Host-&gt;Site-&gt;Domain-&gt;OU )的优先顺序来执行策略，对计算机和用户的作用是这四个策略执行的“和”。有时，在一个GPO中的设置会被其他GPO中的设置抵消。<br/>在AD的同一个层次上的多个GPO，则自下而上执行，高级的覆盖低级的，所以高级应该放在上面。<br/><br/><span style="color:Blue">组策略冲突分析</span><br/>&nbsp;&nbsp;&nbsp;&nbsp; 通过组策略，可以对用户环境进行定义或者限制，如用户使用的软件、桌面环境、开始菜单里包含的程序等等，它能为你的管理带来很大的方便。但是初学者往往对组策略实施的一些具体细则感到迷惑，尤其是当组策略存在冲突的时候，到底哪个策略生效这一问题令很多人非常头疼。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 现在我们就来给大家做一个清楚的解答。我们以配置用户桌面上有无“网上邻居”图标这一策略项为例来分析组策略冲突时的生效级别。<br/><strong>（1）、同一OU上多个组策略</strong><br/>&nbsp;&nbsp; 我们先在“Active Directory用户和计算机”中新建一个OU(组织单元)“1”，并在其中新建一个用户“chen”。然后我们给“1”这个OU建立两个组策略：一个命名为“有‘网上邻居’”，并对其进行配置，停用“隐藏桌面上的‘网上邻居’图标”这一项目；另一个命名为“无‘网上邻居”’，并对其进行配置，启用“隐藏桌面上的‘网上邻居’图标”这一项目。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 当这两个互相存在冲突的策略同时作用于 OU“1”时，以排在最上面策略为准(策略由下而上执行，以最后执行的为准)。即用户chen登录时桌面上还是有“网上邻居”图标的。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 如果我们对排列在下的“无‘网上邻居”’策略设置了“禁止替代”，或者两者都设置了“禁止替代”，则以排在下面的“无‘网上邻居’”为准，即OU“1”中的用户chen登录时桌面上将没有“网上邻居”图标。其原因是“禁止替代”具有强行执行的效力，并且，依据“禁止替代的权限不可下降”的原则，先执行的“不可替代”项目将屏蔽掉其后执行的“禁止替代”项目。<br/><strong>（2）、父OU和子OU</strong><br/>&nbsp;&nbsp;&nbsp;&nbsp; 在域上新建OU“2”，并建立它的子OU“2(1)”，同时在子OU“2(1)”中建立用户“zhang”。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 在父OU“2”上新建一个组策略“无‘网上邻居’”，并对其进行相应配置；在子OU“2(1)”上新建组策略“有‘网上邻居’”，并对其进行相应配置。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 大家知道一个OU上的组策略在默认情况下是要继承到其子OU上的。而这时子OU中的策略项目和其父OU上的项目存在冲突。在这种情况下，以子OU上的项目为准(先执行父OU上的策略，后执行子OU上的策略，以后执行的为准)，即子OU中的用户zhang登录时，桌面上仍然有“网上邻居”图标。<br/>&nbsp;&nbsp;&nbsp;&nbsp; 另外，与第一种情况相同，如果父OU“2”上的“无‘网上邻居’”策略设置了“禁止替代’，即便是子OU“2 (1)”上的“有‘网上邻居”’也设置了“不可替代”，其最终执行结果依旧以先执行的父OU为准，即桌面无“网上邻居”。<br/><strong>（3）、“阻止策略继承”与“禁止替代”</strong><br/>&nbsp;&nbsp;&nbsp;&nbsp; “阻止策略继承”将阻断子OU从父级OU乃至更高级 OU或域上继承组策略设置。而在父级OU的策略上设置“禁止替代”，将使设置在子OU上的“阻止策略继承”失效。即这时用户zhang登录时，产生效果的依旧是从父级OU上继承下来的，被设置为“禁止替代”的策略——“无‘网上邻居’”，这时桌面上将没有“网上邻居”图标。<br/><br/><span style="color:Blue">GPO权限的设定</span><br/>选中GPO Link-》属性<br/>General-&gt;<br/>disable:禁止计算机的配置和禁止用户的配置，这样可以提升开机速度，改善性能。<br/>Links-&gt;<br/>Domain：选择作用于哪个域上。<br/>Security-&gt;<br/>必须赋予用户有“读”和“应用”的权限，否则该GPO在该用户不生效。<br/><br/><span style="color:Blue">GPO信息的存储类型</span><br/>DCSysvolPolices 下，用GUID命名，每一个GUID代表一个GPO。<br/>GPO存储分两个方面，GPC和GPT。<br/>GPC：组策略容器，跟随AD的复制<br/>GPT：组策略模板，存储到硬盘，FRS（File Replication Service）<br/><br/><span style="color:Blue">GPO存储的位置</span><br/>注册表HKEY_LOCAL_MACHINE-&gt;Software-&gt;Policies<br/><br/><span style="color:Blue">密码和帐户的策略</span><br/>本地计算机用户的SAM在本机上，如果本机在域中，则密码策略遵循域的组策略；如果本机在OU中，则密码策略遵循OU的组策略。<br/>域用户的SAM在域控制器上，密码策略遵循DC的组策略。<br/><br/><span style="color:Blue">在AD中发布打印机</span><br/>win2k:共享打印机-&gt;属性-&gt;共享-&gt;在AD中发布<br/>非win2k:复制WinntSystem32Pubprn.vbs到win9x的计算机-&gt;运行Pubprn.vbs<br/><br/><span style="color:Blue">发布和指派软件</span><br/>〈软件跟随用户走〉<br/>Publish &lt;User&gt;：<br/>用户可以用添加/删除程序添加或删除<br/>通过文件关联可以安装<br/>Assign &lt;User&gt;:<br/>用户logon后，出现在桌面或开始菜单<br/>用户第一次选择后开始安装<br/>卸载后，下一次还会出现在桌面或开始菜单<br/>通过文件关联可以安装<br/>〈软件跟随计算机走〉<br/>Assign &lt;计算机&gt;:<br/>图标显示在开始菜单<br/>用户无权卸载程序，本机管理员才可以卸载程序<br/>注1：一般情况下，域用户都要加入到“本地用户和计算机”中的本地管理员组（administrators组），使域用户具有本地计算机管理员的权限，否则域用户和本机管理员无法共用软件。<br/>注2：分发软件时的分发点必须是一个网络路径。<br/><br/><span style="color:Blue">文件夹权限</span><br/>父文件夹只要设置成“完全控制”，无论子文件夹或文件的权限如何，该用户都可以对该文件夹进行任何操作，包括“删除”。但是如果子文件夹或文件的所有者是其他用户，则必须先要夺取所有权，否则是不可对其进行操作的。<br/><br/><span style="color:Blue">理解AGDLP</span><br/>域用户A加入到域全局安全组G，然后在“本地用户和计算机”中创建一个本地组DL，把G加入到DL中，最后为DL分配权限。<br/>]]></description>
		</item>
		
			<item>
			<link>http://www.zdave.net/article/163.htm</link>
			<title><![CDATA[Windows 2000/2003 server域和活动目录]]></title>
			<author>me@zdave.net(zdave)</author>
			<category><![CDATA[MCSE&amp;CCNA]]></category>
			<pubDate>Sat,16 Feb 2008 17:58:51 +0800</pubDate>
			<guid>http://www.zdave.net/default.asp?id=163</guid>
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;本文的目的，是作为域和AD的一篇入门文章，使没有安装过域，或刚刚接触域的年轻网管能对域和AD有一个全面的了解，并利用此文入门，将所管理的网络实现一个基于域的管理模式。<br/>　　<br/>　　一、认识Windows的域<br/>　　本小节重点从理论上阐述域的概念、作用和Windows中域的产生。<br/>　　一台Windows计算机，它要么隶属于工作组，要么隶属于域。所以说到域，我们就不得不提一下工作组，工作组是MS的概念，一般的普遍称谓是对等网。工作组通常是一个由不多于10台计算机组成的逻辑集合，如果要管理更多的计算机，MS推荐你使用域的模式进行集中管理，这样的管理更有效。你可以使用域、活动目录、组策略等等各种功能，使你网络管理的工作量达到最小。当然这里的10台只是一个参考值，11台甚至20台，如果你不想进行集中的管理，那么你仍然可以使用工作组模式。<br/>　　工作组的特点就是实现简单，不需要域控制器DC，每台计算机自己管理自己，适用于距离很近的有限数目的计算机。另外工作组名并没有太多的实际意义，只是在网上邻居的列表中实现一个分组而已；再就是对于“计算机浏览服务”，每一个工作组中，会自动推选出一个主浏览器，负责维护本工作组所有计算机的NetBIOS名称列表。用户可以使用默认的workgroup，也可以任意起个名字，同一工作组或不同工作组在访问时也没有什么分别。<br/>　　域（Domain）是一个共用“目录服务数据库”的计算机和用户的集合，实现起来要复杂一些，至少需要一台计算机安装NT/2000/03 Server版本使其充当DC，来实现集中式的管理。<br/>　　若考虑到容错的话，至少需要两台。对于NT4域就是一台PDC（具有唯一性），一至多台BDC，对于2000/03域，已经没有PDC和BDC的概念，要容错就需要两至多台DC。<br/>　　域是逻辑分组，与网络的物理拓扑无关，可以很小，比如只有一台DC；也可以很大，包括遍布世界各地的计算机，比如大型跨国公司网络上的域（当然实际中他们多采用多域结构，还可以利用AD站点来优化AD复制）。<br/>　　这个“目录服务数据库”，在NT4时，保存用户帐号名称和密码等安全安全信息，以及安全规则设置，又被称作安全帐号管理（SAM）数据库，简称SAM库。在非DC上的本地的SAM库与DC上域所用的SAM库类似，只不过对于NT4域的SAM库文件，保存有整个域的用户和计算机，用“域用户管理器”和“服务器管理器”来管理，本地的SAM库文件，保存有本地机的用户，由“用户管理器”来管理。<br/>　　从2000开始，MS引入了活动目录AD，DC通过AD来提供目录的服务，例如它负责维护AD数据库、审核用户的账户和密码是否正确、将AD数据库复制到其它的DC等。AD库的核心文件就是winntntdsntds.dit文件。注意组策略的具体设置值，并不存在这个文件中，而是保存在winntsysvolsysvol这个共享夹下，用于向其它DC复制，传播给域成员，来生效。但需要说明的是：2000/XP/03的非DC域成员计算机上仍使用和NT4一样的SAM库文件来保存本地帐号。<br/>　　正是由于所有域成员计算机和域用户都共用这个域的“目录服务数据库”，域管理员就可以基于域的“目录服务数据库”来进行集中管理、共享资源，如用户、组、计算机帐号、权限设置、组策略设置等等。目录服务为管理员提供从网络上任何一个计算机上查看和管理用户和网络资源的能力。目录服务也为用户提供唯一的用户名和密码，用户只需一次登录，即可访问本域或有信任关系的其它域上的所有资源（当然用户得有权限才行），而不需要多次提供用户名和密码登录。<br/>　　<br/>　　二、构建Windows 2000的域<br/>　　这个过程简单说就是：选一台2000S/AS计算机，运行AD安装向导，在其上安装活动目录，使其成为DC。然后将其它的计算机加入到这个域。<br/>　　说明：至于是用2000S，还是用2000AS，对于一般的用户差别不大。2000S支持最多4个CPU，最大4G内存；2000AS支持最多8个CPU，最大内存8G，还支持群集功能。但这些我们一般用户都用不到，所以对于普通用户来说，选择S或AS都是一样的。<br/>　　<br/>　　1、系统要求<br/>　　*一台2000S或2000AS独立或成员服务器，2000DS只有OEM版，随厂商硬件发售，平常我们是见不到的。<br/>　　* 其上必须有一个NTFS 5.0分区，用来保存AD的sysvol文件夹。注意：2000的NTFS分区是NTFS 5.0，NT4的是NTFS 4.0，NT4必须安装SP4后，才可访问2000的NTFS分区。<br/>　　* 网络上必须有可用的DNS服务器，并且必须支持SRV记录（Service Locaion Resource Record）和动态更新功能。如：MS Win2000S DNS，UNIX的DNS BIND 8.12及以上版本，使用已有的NT4 DNS是不行的。<br/>　　<br/>　　说明：<br/>　　构建NT4域并不需要DNS的支持，但2000域必须有DNS，且满足上述要求。<br/>　　SRV记录的作用是指明域和站点（site）的DC、PDC仿真、GC是谁。动态更新也是2000DNS的新特色，管理员不必再象NT4 DNS那样手动为计算机创建或修改相应记录，在域成员计算机重启，或改名、改IP时依赖周期性更新，自动动态实现。<br/>　　如果没有DNS服务器的话，也不一定非得预装DNS，可以在安装AD过程中，选择在本机上安装2000 DNS。而且推荐初学者使用这种方法，因为系统会根据你提供的FQDN域名，自动创建好DNS区域（zone），并配置成AD集成区域，仅安全动态更新。如果需要向外连或反向解析，用户只需配置上转发器和反向区域即可，不需要的话，直接就可以用了。<br/>　　如果决定在安装AD过程中在本机安装DNS，应在安装前，将本机TCP/IP配置/DNS服务器指向自己，这样在安装AD完成后重启时，SRV记录将被自动注册到DNS服务器的区域当中去的，生成四个以下划线开头的文件夹，如_msdcs，03DNS在这里夹的层次结构有所变化，但本质没变。当然如果忘了指，也可以后补上，只不过需要多重启一次。<br/>2、安装步骤、注意事项、常见问题、经验技巧<br/>　　<br/>　　（1）启动AD安装向导<br/>　　方法一：开始/程序/管理工具/配置服务器/ Active Directory /启动AD安装向导。<br/>　　方法二：熟练后一般常用，开始/运行：dcpromo。<br/>　　<br/>　　（2）安装选项：指定服务器角色<br/>　　三个界面，实现四种组合：<br/>　　<br/>　　新域<br/>　　附加DC<br/>　　<br/>　　新树<br/>　　子域<br/>　　<br/>　　新林<br/>　　加入林<br/>　　<br/>　　即：<br/>　　* 新域—新树—新林<br/>　　* 附加DC<br/>　　* 新域—子域<br/>　　* 新域—新树—加入林<br/>　　<br/>　　全新安装：新域—新树—新林，这样来建立第一个域中的第一台DC。<br/>　　2000的多域模型采用层次结构，不同于NT4域的平面结构，NT4的多个域之间只是通过信任关系关联起来。接下来以下图为例，对2000的域、树、林进行简要说明：<br/>　　<br/>　　ms.com<br/>　　/　　　<br/>&nbsp;&nbsp; trainning.mcse.com　lotus.com<br/>　　<br/>　　这整个是一个林，ms.com为林根域，有两个树，一个由ms.com和它的子域trainning.ms.com组成，另一个由lotus.com单独组成，林中有ms.com，trainning.ms.com，lotus.com三个域。相关概念如下：<br/>　　林根域：在林中第一个建立的域，如：ms.com<br/>　　树：共用连续的命名空间的多层域，如ms.com和trainning.ms.com<br/>　　树根域：树最高层的域，名最短。如：ms.com<br/>　　<br/>　　说明：<br/>　　2000可采用多层域结构，但最有效、最简便的管理方法仍是单域，所以大家在实际工作中要记住一个原则“能用单域解决，就不用多域”。<br/>　　再者2000AD是针对大中型网络设计的，而我们一般管理的网络也就几百个节点，属于小型网络，一般来讲用一个单域结构就够用了，不要人为将管理环境复杂化。在实验中，我们甚至可以一个林中只有一个树，一个树中只有一个域，一个域里只有一台DC。<br/>　　另外前面已经说过了，域是逻辑分组，与网络的物理拓扑无关，不要总试图规划一个子网一个域。当然实际中多个子网一个域，子网中若有95/98/NT老计算机，无法利用DNS直接登录到域，可以安装一台WINS服务器解决问题。将所有计算机，包括WINS服务器本身的TCP/IP配置中的WINS服务器指向此WINS服务器即可。<br/>　　<br/>　　（3）安装选项：新域的DNS全名<br/>　　说明：<br/>　　在这里应该输入新域的完全有效域名FQDN，形如：mcse.com。系统会打算以mcse作为此域的NetBIOS名称，并在网络中检查是否存在重名，需要等一会儿。不重名则设为mcse，建议用户不要修改此名；重名则设为mcse0，建议用户最好换个名字。这也就是说，网络中如果已有一个域，名字叫做mcse.org，也会出现NetBIOS名称冲突的问题。<br/>　　<br/>　　（4）安装选项：为新域指定一个NetBIOS名称<br/>　　说明：<br/>　　NetBIOS名称，只是为95/98/NT等老版本用户通过“浏览服务”或WINS来识别这个域用的，如果确信域用户都是2000及以上系统（它们通过DNS定位域），其实NetBIOS名称冲不冲突，都无所谓。<br/>　　<br/>　　（5）安装选项：指定AD库和日志文件位置<br/>　　说明：<br/>　　如果仅是实验，用默认值即可。若是在真正的服务器上，都会有多块物理硬盘，最好分开存放，以提高性能。另外需要强调的是：AD库和日志文件并不要求非得NTFS 5.0分区，很多2000/03书在此语焉不详。<br/>　　<br/>　　（6）安装选项：指定sysvol文件夹位置<br/>　　说明：<br/>　　是sysvol这个文件夹要求必须得NTFS 5.0分区。在它当中存储有DC间AD要同步的内容，包括组策略的设置值。<br/>　　<br/>　　（7）这时网络中若无可用DNS服务器，就会出现提示：找不到DNS服务器，需要考虑在本机上安装一个DNS服务器。可先不必理会，点“确定”，接下来选“是，在本机上安装并配置DNS”。初学者在此不要选“否，我将自己安装并配置DNS”。<br/>　　<br/>　　（8）几分后，安装完成，需要重启。<br/><br/>　　说明：<br/><br/>　　若硬盘或网络上没有可用的2000S源文件，会提示要2000S光盘。<br/><br/>　　最好用新装2000S来安装AD，这样不容易出问题。如果你是用一个台运行了一段时间的2000S/AS，来安装AD，使其成为DC。重启及登录时可能会很慢（有时可能长达20 分钟），这是较常见的现象。一般2-3 次以后就好了，如果多次重启后还那样，那就要重装系统及AD 了。<br/>2000的多域模型采用层次结构，不同于NT4域的平面结构，NT4的多个域之间只是通过信任关系关联起来。接下来以下图为例，对2000的域、树、林进行简要说明：<br/><br/><br/><br/><br/>　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;　　ms.com<br/>　　&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;　/　　　<br/>trainning.ms.com　&nbsp;&nbsp; lotus.com<br/><br/><br/>　　这整个是一个林，ms.com为林根域，有两个树，一个由ms.com和它的子域trainning.ms.com组成，另一个由lotus.com单独组成，林中有ms.com，trainning.ms.com，lotus.com三个域。相关概念如下：<br/>　　林根域：在林中第一个建立的域，如：ms.com<br/>　　树：共用连续的命名空间的多层域，如ms.com和trainning.ms.com<br/>　　树根域：树最高层的域，名最短。如：ms.com<br/><br/>说明：<br/><br/>　　2000可采用多层域结构，但最有效、最简便的管理方法仍是单域，所以大家在实际工作中要记住一个原则“能用单域解决，就不用多域”。<br/><br/>　　再者2000AD是针对大中型网络设计的，而我们一般管理的网络也就几百个节点，属于小型网络，一般来讲用一个单域结构就够用了，不要人为将管理环境复杂化。在实验中，我们甚至可以一个林中只有一个树，一个树中只有一个域，一个域里只有一台DC。<br/><br/>　　另外前面已经说过了，域是逻辑分组，与网络的物理拓扑无关，不要总试图规划一个子网一个域。当然实际中多个子网一个域，子网中若有95/98/NT老计算机，无法利用DNS直接登录到域，可以安装一台WINS服务器解决问题。将所有计算机，包括WINS服务器本身的TCP/IP配置中的WINS服务器指向此WINS服务器即可。<br/><br/>（3）安装选项：新域的DNS全名<br/>说明：<br/>　　在这里应该输入新域的完全有效域名FQDN，形如：mcse.com。系统会打算以mcse作为此域的NetBIOS名称，并在网络中检查是否存在重名，需要等一会儿。不重名则设为mcse，建议用户不要修改此名；重名则设为mcse0，建议用户最好换个名字。这也就是说，网络中如果已有一个域，名字叫做mcse.org，也会出现NetBIOS名称冲突的问题。<br/><br/>（4）安装选项：为新域指定一个NetBIOS名称<br/>说明：<br/>　　NetBIOS名称，只是为95/98/NT等老版本用户通过“浏览服务”或WINS来识别这个域用的，如果确信域用户都是2000及以上系统（它们通过DNS定位域），其实NetBIOS名称冲不冲突，都无所谓。<br/><br/>（5）安装选项：指定AD库和日志文件位置<br/>说明：<br/>　　如果仅是实验，用默认值即可。若是在真正的服务器上，都会有多块物理硬盘，最好分开存放，以提高性能。另外需要强调的是：AD库和日志文件并不要求非得NTFS 5.0分区，很多2000/03书在此语焉不详。<br/><br/>（6）安装选项：指定sysvol文件夹位置<br/>说明：<br/>　　是sysvol这个文件夹要求必须得NTFS 5.0分区。在它当中存储有DC间AD要同步的内容，包括组策略的设置值。<br/><br/>（7）安装并配置DNS:<br/>说明：<br/>&nbsp;&nbsp;&nbsp;&nbsp; 这时网络中若无可用DNS服务器，就会出现提示：找不到DNS服务器，需要考虑在本机上安装一个DNS服务器。可先不必理会，点“确定”，接下来选“是，在本机上安装并配置DNS”。初学者在此不要选“否，我将自己安装并配置DNS”。<br/><br/>（8）几分后，安装完成，需要重启。<br/>说明：<br/>　　若硬盘或网络上没有可用的2000S源文件，会提示要2000S光盘。<br/>　　最好用新装2000S来安装AD，这样不容易出问题。如果你是用一个台运行了一段时间的2000S/AS，来安装AD，使其成为DC。重启及登录时可能会很慢（有时可能长达20分钟），这是较常见的现象。一般2-3次以后就好了，如果多次重启后还那样，那就要重装系统及AD了。<br/> <br/>3、域成员计算机<br/>（1）将计算机加入到域<br/>　　首先将客户机TCP/IP配置中所配的DNS服务器，指向DC所用的DNS服务器。然后我的电脑/右键/属性/网络标识/属性/隶属于，选择域：输入域名，确定。提示输入用户口和口令，确定后提示重启。<br/>说明：<br/>　　加入域时，如果输入的域名为FQDN格式，形如mcse.com，必须利用DNS中的SRV记录来找到DC，如果客户机的DNS指的不对，就无法加入到域。<br/>　　加入域时，如果输入的域名为NetBIOS格式，如mcse，也可以利用浏览服务（广播方式）直接找到DC，但它不是一个完善的服务，有时就会不好使。<br/>　　这样虽然也可把计算机加入到域，而且在等较长时间后也可以登录到域上去，但不推荐。因为客户机的DNS指的不对，则它无法利用2000DNS的动态更新动能，也就是说无法在DNS区域中自动生成关于这台计算机的A记录和PTR记录。那么同一域另一子网的2000及以上计算机就无法利用DNS找到它，这本应是可以的。<br/>　　再者，管理员无法在客户机上利用域的管理工具来远程管理域，因为这些管理工具必须使用DNS，出错提示：找不到域命名信息（有时客户机的DNS Client服务有问题也会出现上述提示，重启服务即可）。这种情况下，要进行远程管理，就只能利用TS（终端服务）基于IP来连了。<br/>　　当然用户也可以手动配置WINS或Lmhosts文件，来查找DC。这主要用于95/98/NT老版本计算机跨子网（路由）查找DC或加入域，因为这些老版本计算机无法利用DNS来查找DC，浏览服务又是广播方式，只能在本网段进行，因为广播信息是无法通过cisco路由器的，RFC1542标准的cisco路由器，可设置成允许DHCP的广播数据通过，仅是一个特例。需要说明的是：95/98可以使用域用户帐号登录到域，但并不能加入到域，在AD中也没有计算机帐号，而NT可以。<br/>　　计算机加入域成功后，未重启，即已在AD用户和计算机/computer容器下生成计算机帐号了，实验中查看时，需要手动刷新一下。而在DNS中记录必须在计算机重启后（不必登录）或15分钟后才能自动注册或更新到DNS区域。但若我们平常修改一个计算机的名字或IP，要马上更新到DNS区域，倒不一定非得重启，可利用ipconfig /registerdns命令就行。明白以上讨论可用于排错，不一定非得重启登录后才知道结果。<br/>　　加入到NT4域时，需要有管理特权才行；从Windows 2000开始，微软作了改进：在Windows 2000/03域中，默认Authenticated Users即可在域中最多创建 10 个计算机帐户。Authenticated Users指被验证的用户组，也就是说任何经过身份验证的普通域用户都可以加最多10台计算机到域。常见问题：在实际中用普通域帐号加计算机到域，有时会不好使，原因是同名计算机帐号（极可能是它自己已经失效的计算机帐号）已存在而无权覆盖，这时就得用域管理员帐号了。<br/><br/>（2）在加入域的计算机上，用域用户帐号登录到域。说明：<br/>　　在域中的非DC计算机上，可以选择登录到域或本机，这是因为它同时还拥有本地用户帐号。而在DC上只能选择登录到域了，因为整个域都是DC的，它没有必要再保留本地帐号了。2000是个红叉，03干脆就没有了。<br/>　　安装AD时，会自动删除本地帐号，即使将来删除AD，也无法将本地帐号复原，而是重新生成的。这一点一定要注意：如果本地有EFS加密的文件，一定要将证书导出或将文件解密后，再在这台计算机上做AD安装实验。<br/>　　在2000及以上计算机上登录到域的过程是这样的：域成员计算机根据本机DNS配置去找DNS服务器，DNS根据SRV记录告诉它DC是谁，客户机联系DC，验证后登录。<br/><br/>（3）深入讨论：<br/>　　如果是在林中跨域登录，是首先查询DNS服务器，问林的GC是谁。<br/>　　前面我们在步骤（1）中强调“加入域前，首先将客户机TCP/IP配置中所配的DNS服务器，指向DC所用的DNS服务器。”其实如果域中有多个DNS服务器，也可以指向其它的DNS服务器，当然这些DNS服务器之间得有区域复制关系。这样做的目的恰恰是：大中型网络为了平衡DNS负载。<br/>三、建立其它域控制器　　前面我们讨论了“建立第一个域中的第一台域控制器”，分析得很细。以下相同知识点的内容将不再赘述。<br/><br/>1、安装附加DC<br/>（1）以本机管理员身份登录，在独立或成员服务器上，启动AD安装向导。<br/>说明：<br/>　　将成为附加DC的计算机，不必非得先加入域。<br/>　　DNS指向已有DC所用DNS服务器，以便找到已有DC。安装结束后，一般应该手动在本机上再装一个DNS服务器，以实现DNS的容错。<br/>（2）选择：现有域的额外域控制器<br/>（3）输入域管理员帐号，如：administrator，password，mcse.com（或mcse）。<br/>　　常见找不到域的出错提示：域“mcse.com”不是AD域，或用于域的AD域控制器无法联系上。<br/>　　解决：确保DNS指向已有DC所用DNS的服务器。<br/>　　其它：Ping一下，检查物理连通性。高级用户是否设过TCP/IP筛选器或RRAS筛选器。<br/>（4）输入域名，如：mcse.com。<br/>（5）指定AD库和日志文件位置<br/>（6）指定sysvol文件夹位置<br/>（7）一般选：“与Windows 2000服务器之前的版本相兼容的权限”<br/>（8）目录服务恢复模式的管理员密码<br/>（9）几分后，安装完成，需要重启。<br/>（10）手动在本机上安装DNS服务器，以实现DNS的容错。<br/>　　 A、开始/设置/控制面板/添加删除程序/Windows组件/网络服务/域名系统（DNS）。<br/>　　 B、开始/程序/管理工具/DNS<br/>　　 C、正向搜索区域/右键/新建区域，建议选择“AD集成区域”，区域名：已有区域的名称，如mcse.com。自动生成起始授权机构（SOA）、名称服务器（NS）、主机（A）三条记录，但此时SRV记录并未被复制过来。需要等待5-15分钟后，利用刷新或重新加载就可以看到复制过来的DNS记录了（对于03马上就可以看到复制过来的全部DNS记录）。 <br/><br/>深入讨论：<br/>　　03和2000比，功能更强大了。但在域和AD的体系结构上并没有什么大的变化，而且MS的产品十分讲究向前兼容。在一个域中可以既有2000DC，又有03DC；也可以既有2000DNS，又有03DNS，并且DC间的AD复制，DNS间的区域传输，都好像没有版本差异一样。<br/>　　在我们这里要说的就是：2000可作为03域的附加DC，03也可以作为2000域的附加DC，但第二种情况需要在2000DC（SP2及更高）上运行03光盘/I386/adprep命令来做准备。<br/>具体第一步：adprep /forestprep进行林准备，第二步adprep /domainprep进行域准备。<br/> <br/>2、建立子域<br/>（1）以本机管理员身份登录，在独立或成员服务器上，启动AD安装向导。<br/>说明：<br/>　　DNS指向林根域已有DC所用DNS服务器，以便找到已有DC。<br/>　　保证域命名主控必须有效，它默认在林根域的第一台DC上，且具有林唯一性。利用管理工具“AD域和信任关系”可转移域命名主控。<br/>（2）选择：新域的域控制器，下一步，在现有的树中创建一个新的子域<br/>（3）输入林管理员帐号，如：administrator，password，mcse.com（或mcse）。<br/>　　常见出错提示：域“mcse.com”不是AD域，或用于域的AD域控制器无法联系上。解决方法见前。<br/>（4）输入父域名，如：mcse.com；输入子域名，如sub，注意不要输成sub.mcse.com。<br/>（5）指定AD库和日志文件位置<br/>（6）指定sysvol文件夹位置<br/>（7）一般选：“与Windows 2000服务器之前的版本相兼容的权限”<br/>（8）目录服务恢复模式的管理员密码<br/>（9）几分后，安装完成，需要重启。<br/><br/>　　如果域命名主控失效将会出现如下出错提示：“由于以下原因，*作失败：AD无法与域命名主机xxx联系。指定的服务器无法运行指定的*作。”<br/>　　解决：保证域命名主控联机，如果确信其已无法正常工作，可强制传给林内的任意一个DC，子域的DC也可以。原来的主机将必须被重做系统后，才可连入网络，以保证域命名主控的林唯一性。<br/><br/>深入讨论：<br/>　　关于子域（子Domain）所对应的DNS子区域（子zone）是否委派的问题。（以下简称：子区域）<br/>　　如果网络规模不是很大，虽然实现了子域，但总部、二级单位的网管可能就是同一个人。这种情况下就不需要委派了。可以把区域、子区域都放在同一个DNS服务器上，由同一名管理员来管理就可以了。默认值即如此，不需要手动设置。<br/>如果网络规模较大，且二级单位需要能够控制自己的DNS子区域，比如自己增加www1,www2……这样的主机记录；在自己的子区域下再建子区域。这种情况下就需要委派子区域了，由二级单位的DNS管理员自己来管理。否则二级单位涉及DNS的每一个小变化，都需要找总部DNS管理员批准。<br/><br/>　　子区域委派，*作步骤如下：（最好按如下步骤进行，不容易出问题）<br/>　　A、DNS指向林根域（如：mcse.com）已有DC所用DNS服务器<br/>　　B、利用AD安装向导，安装子域（如：sub.mcse.com），重启机。<br/>　　C、在林根DNS控制台上查看，确保已在mcse.com生成子文件夹sub，且sub下有4个以下划线开头的，保存有SRV记录的子文件夹（_msdcs、_sites、_tcp、_udp）已生成；sub下还应有如下2条A记录：（第二条记录如果未生成，手动补上也可以。）<br/><br/>（与父文件夹相同）主机 IP<br/>　　　　　　SUBdc 主机 IP<br/><br/>　　D、在父域（如：mcse.com）右键/新建委派/下一步/子区域名：sub。（不必担心重名，因为委派完成后，灰颜色的委派的sub夹将取代黄颜色的sub夹，但注意*作过程中会共存一段时间）接下来，指定负责子区域的名称服务器：SUBdc.sub.mcse.com及它的IP，以生成粘合记录，下一步，完成。<br/>　　E、在子域DC上安装DNS，*作：开始/设置/控制面板/添加删除程序/Windows组件/网络服务/域名系统（DNS）。<br/>　　 F、开始/程序/管理工具/DNS<br/>　　 G、正向搜索区域/右键/新建区域，建议选择“AD集成区域”，区域名：sub.mcse.com。自动生成SOA、NS、A、A四条记录（后两条A记录，如C步中述），此时SRV记录也被复制过来了。<br/>　　H、在DNS服务器的计算机名上/右键/属性/转发器：指向上一级或林根DNS的IP。<br/>　　I、将子域DC的DNS指向自己，以后加入子域的计算机也使用子域的DNS，以实现DNS分担负荷。（当然，子域中的计算机可以使用林中任一台DNS，也都好使）<br/><br/>注意：<br/>　　由上述过程，大家可以了解到，做为被委派的DNS子区域的二级单位DNS管理员，是不能随意更改自己的DNS服务器的。比如修改DNS服务器的IP，需要通知上级管理员，及时更新委派子区域的NS记录，否则林中其它用户就会找不到你这个子域的计算机。<br/> <br/>3、新域—新树—加入林　　此种情况平常较少用到，因为一般企业只用一套命名体系，很少采用两个或两个以上的树。微软举的例子：一个大企业兼并另一企业，并且想保留它的命名体系，技术上对应实现就是目录树和DNS名称空间。<br/>　　 说明：此种应该预先建好DNS正向搜索区，因为它不能像建子域那样，利用AD向导自动在已有DNS区域中创建子区域。下面以前文中的mcse.com，sub.mcse.com，my.com图示为例进行说明。<br/><br/>（1）在林根DNS上，与mcse.com并列，创建区域my.com，最好选AD集成区域。<br/>（2）以本机管理员身份登录，在独立或成员服务器上，启动AD安装向导。<br/>说明：DNS指向林根域已有DC所用DNS服务器，并保证域命名主控必须有效。<br/>（3）选择：新域—新树—加入林<br/>（4）输入林管理员帐号，如：administrator，password，mcse.com（或mcse）。<br/>说明：输入的欲登录的林根域名，也就告诉了系统要加入哪个林。<br/>（5）输入新域的DNS全名，如：my.com；域NetBIOS名：MY。<br/>（6）指定AD库和日志文件位置<br/>（7）指定sysvol文件夹位置<br/>（8）一般选：“与Windows 2000服务器之前的版本相兼容的权限”<br/>（9）目录服务恢复模式的管理员密码<br/>（10）几分后，安装完成，需要重启。<br/><br/>说明：　　用预建DNS这种方式加入林，使用的是林根上已有DNS服务器，所以此计算机在林根DNS的my.com区域下，仅生成一条主机（A）记录（如需要可手动添加：treedc 主机 IP），SOA和NS记录都是林根DNS服务器，但在my.com区域会有相应的SRV记录来标识它是这个树根域的DC。这种并没有实现DNS的分担负荷，如想实现，利用辅助区域来做。<br/><br/>　　实验中发现：万不可像全新安装那样，在安装过程中，选择在本地安装一个DNS，这样将会这把个树根域安装成一个独立的林根域。原因吗？去问微软吧。<br/><br/>四、卸载AD　　在实际工作中有时我们需要改变服务器角色，或者将实验中安装的DC回复到普通成员/独立服务器身份，这就要进行AD的卸载。<br/>1、卸载时会提示给新的本地管理员设置密码<br/>2、附加DC卸载后，仍在域中。<br/>3、如果AD不能卸载，应从以下几方面考虑：<br/>（1）权限　　权限要求与安装AD类似，若一个林中只有一个域，那么你要卸载的就是林根域，需要林管理员权限；卸载附加DC需要该域的域管理员权限；卸载子域或树，涉及到林结构的改变，也需要林管理员权限。<br/>（2）DNS　　一般应保证与安装时所用DNS一致。如果做了DNS规划，必须保证1中权限所要求的管理员身份能找到相应DC验证。<br/>（3）域命名主控　　卸载时只要涉及到林结构的改变，就需要保证域命名主控有效；卸载附加DC时不要求域命名主控有效。<br/><br/>但要注意的是：卸载时的出错信息与安装时的“AD无法与域命名主机xxx联系”提示不同，具体是：由于以下原因，*作失败。以提供的凭据绑定到服务器xxx失败。“RPC服务器不可用”。<br/>（4）卸载的顺序　　与安装顺序相反，应该先逐级卸载下面的子域，最后卸载树根域、林根域。否则将导致子域无法卸载，而存在的子域还有问题。<br/>　　因为极有可能此时架构和域命名主控及GC未转移，林管理员组和架构管理员组（Schema Admins）已经随林根域的删除而没有了。为什么这么说呢？因为如果管理员考虑到主控及GC等的转移问题，也就不会误删林根域了。<br/><br/>3、新域—新树—加入林　　此种情况平常较少用到，因为一般企业只用一套命名体系，很少采用两个或两个以上的树。微软举的例子：一个大企业兼并另一企业，并且想保留它的命名体系，技术上对应实现就是目录树和DNS名称空间。<br/>　　 说明：此种应该预先建好DNS正向搜索区，因为它不能像建子域那样，利用AD向导自动在已有DNS区域中创建子区域。下面以前文中的mcse.com，sub.mcse.com，my.com图示为例进行说明。<br/><br/>（1）在林根DNS上，与mcse.com并列，创建区域my.com，最好选AD集成区域。<br/>（2）以本机管理员身份登录，在独立或成员服务器上，启动AD安装向导。<br/>说明：<br/>DNS指向林根域已有DC所用DNS服务器，并保证域命名主控必须有效。<br/>（3）选择：新域—新树—加入林<br/>（4）输入林管理员帐号，如：administrator，password，mcse.com（或mcse）。<br/>说明：<br/>输入的欲登录的林根域名，也就告诉了系统要加入哪个林。<br/>（5）输入新域的DNS全名，如：my.com；域NetBIOS名：MY。<br/>（6）指定AD库和日志文件位置<br/>（7）指定sysvol文件夹位置<br/>（8）一般选：“与Windows 2000服务器之前的版本相兼容的权限”<br/>（9）目录服务恢复模式的管理员密码<br/>（10）几分后，安装完成，需要重启。<br/><br/>说明：<br/>　　用预建DNS这种方式加入林，使用的是林根上已有DNS服务器，所以此计算机在林根DNS的my.com区域下，仅生成一条主机（A）记录（如需要可手动添加：treedc 主机 IP），SOA和NS记录都是林根DNS服务器，但在my.com区域会有相应的SRV记录来标识它是这个树根域的DC。这种并没有实现DNS的分担负荷，如想实现，利用辅助区域来做。<br/><br/>　　实验中发现：万不可像全新安装那样，在安装过程中，选择在本地安装一个DNS，这样将会这把个树根域安装成一个独立的林根域。原因吗？去问微软吧。<br/><br/>四、卸载AD<br/>　　在实际工作中有时我们需要改变服务器角色，或者将实验中安装的DC回复到普通成员/独立服务器身份，这就要进行AD的卸载。<br/>1、卸载时会提示给新的本地管理员设置密码<br/>2、附加DC卸载后，仍在域中。<br/>3、如果AD不能卸载，应从以下几方面考虑：<br/>（1）权限<br/>　　权限要求与安装AD类似，若一个林中只有一个域，那么你要卸载的就是林根域，需要林管理员权限；卸载附加DC需要该域的域管理员权限；卸载子域或树，涉及到林结构的改变，也需要林管理员权限。<br/>（2）DNS<br/>　　一般应保证与安装时所用DNS一致。如果做了DNS规划，必须保证1中权限所要求的管理员身份能找到相应DC验证。<br/>（3）域命名主控<br/>　　卸载时只要涉及到林结构的改变，就需要保证域命名主控有效；卸载附加DC时不要求域命名主控有效。<br/><br/>但要注意的是：卸载时的出错信息与安装时的“AD无法与域命名主机xxx联系”提示不同，具体是：由于以下原因，*作失败。以提供的凭据绑定到服务器xxx失败。“RPC服务器不可用”。<br/>（4）卸载的顺序<br/>　　与安装顺序相反，应该先逐级卸载下面的子域，最后卸载树根域、林根域。否则将导致子域无法卸载，而存在的子域还有问题。<br/>　　因为极有可能此时架构和域命名主控及GC未转移，林管理员组和架构管理员组（Schema Admins）已经随林根域的删除而没有了。为什么这么说呢？因为如果管理员考虑到主控及GC等的转移问题，也就不会误删林根域了。<br/> <br/>五、从NT4域升级到2000域<br/>1、预备知识：　　NT4域采用单主控复制，DC分为PDC和BDC，BDC存储的只是PDC“目录服务数据库”文件的只读复本。在“服务器管理器”中可以将一台BDC提升为PDC，原PDC自动降为BDC。<br/>　　一个域中只能有一台PDC，零到多台BDC以提供容错和分担负荷。但大家不要理解为一个网络中只能有一台PDC，域是逻辑分组，我们可以在一个子网中建多个域。<br/>　　2000域开始采用多主控复制，DC不再有PDC和BDC之分，DC间的AD复制是双向的。但2000域中会唯一有一台DC担当PDC仿真主控，负责充当NT4 BDC的PDC，并为早期版本客户机提供服务。PDC仿真主控还负责管理运行NT、95/98计算机的密码变化，写入AD。接受密码变化的DC必须通知PDC仿真主控，比如：用户登录时，如密码错误，必先送至PDC仿真主控。因为普通DC不能确认到底是密码错误，还是它没有及时与PDC仿真主控同步。它还负责同步整个域中计算机的时间。通过以上我们可以知道：在2000域中存在的NT4域控制器，它的身份只能是BDC。<br/>　　 2000域模式分为：混合（mixed）模式和本机（natived）模式。默认为混合模式，如果管理员确认域中所有DC（注意：这里强调的是DC，2000域本机模式下可以有NT4的成员服务器）都是2000DC，没有NT4的域控制器，可以手动在“AD用户和计算机中”将域模式更改为本机模式，以充分利用AD的新功能，比如使用“通用组”。<br/>　　通过以上分析，我们可以知道：如果在2000域中存在NT4域控制器，那么你只能使用2000域混合模式了。有人可能会想那我就不让它再当域控制器了，但是NT4域的DC和成员服务器之间角色转换必须重装NT4系统，不能象2000那样利用AD安装向导，方便地进行安装/卸载。<br/><br/>2、原则：<br/>&nbsp;&nbsp;&nbsp;&nbsp;由NT4域向2000域升级，第一个被升级的必须是NT4域的PDC。这样才可以把帐号、安全设置、配置等带到2000域<br/><br/>3、MS推荐策略：<br/>&nbsp;&nbsp;&nbsp;&nbsp;由于升级是一个极易出现各种问题的过程，必须考虑备份。再有就是实际*作时，可以先将NT4的BDC提升为PDC，再升级到2000。如果顺利的话，再升级其它BDC。如果不顺利的话，可将原来PDC复原，以此方法来避免损失。<br/><br/>4、深入讨论：<br/>&nbsp;&nbsp;&nbsp;&nbsp; 我们可以把前面的问题再深入讨论一下，假设你的域中有NT4的PDC，并且在它上面运行的老程序不允许你把它升级为2000，但你还想要通过升级NT4域，得到2000域，那么应该怎么办呢？答案很简单，可以先将这台PDC降为BDC，再将新PDC升级为2000。这样你既得到了2000域，又保留了NT4的BDC。<br/><br/>5、我的推荐原则：<br/>&nbsp;&nbsp;&nbsp;&nbsp; 在实际工作中，只要能进行2000域的全新安装，就用全新安装。因为NT4升级后得到的2000安全策略设置等等是继承NT4时的设置，与2000域的默认值有较大出入，以后出问题，不易排错，也不易与其它人交流沟通、解决问题。<br/>]]></description>
		</item>
		
</channel>
</rss>
