对一个算法笔试题的注解

     摘要:   阅读全文

posted @ 2008-03-01 10:42 鲁胜迪 阅读(291) | 评论 (0)编辑 收藏

使浏览器能自动下载JVM的方法

使浏览器能自动下载JVM的方法

<OBJECT
classid = "clsid:8AD9C840-044E-11D1-B3E9-00805F499D93"
codebase = "http://java.sun.com/products/plugin/1.4/jinstall-1_4-windows-i586.cab#Version=1,4,1,0"
WIDTH = "100%" HEIGHT = "500" >
<PARAM NAME = CODE VALUE = "nz.astarte.planwise.gantt.GanttApplet" >
<PARAM NAME = CODEBASE VALUE = "." >
<PARAM NAME = ARCHIVE VALUE = "pwgantt.jar" >
<PARAM NAME = "type" VALUE = "application/x-java-applet;version=1.4">
<PARAM NAME = "scriptable" VALUE = "false">
<PARAM NAME = "projectId" VALUE="<%=theForm.getProjectId().toString()%>" >
<PARAM NAME = "userId" VALUE="<%=userId%>" >
<PARAM NAME = "logLevel" VALUE="INFO" >
<COMMENT>
<EMBED
type="application/x-java-applet;jpi-version=1.4.1"
CODE="nz.astarte.planwise.gantt.GanttApplet"
CODEBASE="."
ARCHIVE="pwgantt.jar"
WIDTH="100%"
HEIGHT="500"
projectId="<%=theForm.getProjectId().toString()%>"
userId="<%=userId%>"
logLevel="INFO"
scriptable=false
pluginspage="http://java.sun.com/j2se/1.4.1/download.html">
<NOEMBED>
Could not find a plugin supported by your browser. Please download Sun's Java Plugin 1.4.1
</noembed>
</EMBED>
</COMMENT>
</OBJECT>

posted @ 2008-03-01 10:16 鲁胜迪 阅读(2666) | 评论 (2)编辑 收藏

Applet 的四种方法调用init()、start() 、stop()和destory()

import java.applet.Applet;
import java.awt.FlowLayout;
import java.awt.HeadlessException;

import javax.swing.JApplet;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class AppletLifeCycle extends JApplet {

 public AppletLifeCycle()throws HeadlessException {
  super();
 }


 public void destroy() {
  System.out.println("Applet start() is invoked!");
 }


 public String getAppletInfo() {
  return "This is my default applet created by Eclipse";
 }


 public void init() {
  getContentPane().setLayout(new FlowLayout());
  getContentPane().add(new JLabel("Applet init() is invoked!"));
  System.out.println("Applet init() is invoked!");
 }


 public void start() {
  getContentPane().add(new JLabel("Applet start() is invoked!"));
  System.out.println("Applet start() is invoked!");
  repaint();
 }


 public void stop() {
  System.out.println("Applet stop() is invoked!");
 }
 
 
 public static void main(String []args){
//Applet程序里面有了main方法后,程序就可以像Application一样运行了。
  JApplet applet =new AppletLifeCycle();//实例化一个applet
  JFrame frame=new JFrame("AppletLifeCycle");//实例化一个顶级窗口frame
  frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  frame.getContentPane().add(applet);//将applet放到顶级窗口中
  frame.setSize(200,100);
  applet.init();
  applet.start();
  frame.setVisible(true);
 }
 
 

}

posted @ 2008-03-01 09:58 鲁胜迪 阅读(2052) | 评论 (0)编辑 收藏

GUI篇: 适合于图形用户界面的应用(Applet和普通应用)

这一部分介绍的内容适合于图形用户界面的应用(Applet和普通应用),要用到AWT或Swing。

  3.1 用JAR压缩类文件

  Java档案文件(JAR文件)是根据JavaBean标准压缩的文件,是发布JavaBean组件的主要方式和推荐方式。JAR档案有助于减少文件体积,缩短下载时间。例如,它有助于Applet提高启动速度。一个JAR文件可以包含一个或者多个相关的Bean以及支持文件,比如图形、声音、HTML和其他资源。

  要在HTML/JSP文件中指定JAR文件,只需在Applet标记中加入ARCHIVE = "name.jar"声明。

  3.2 提示Applet装入进程

  你是否看到过使用Applet的网站,注意到在应该运行Applet的地方出现了一个占位符?当Applet的下载时间较长时,会发生什么事情?最大的可能就是用户掉头离去。在这种情况下,显示一个Applet正在下载的信息无疑有助于鼓励用户继续等待。

  下面我们来看看一种具体的实现方法。首先创建一个很小的Applet,该Applet负责在后台下载正式的Applet:

  import java.applet.Applet;

  import java.applet.AppletStub;

  import java.awt.Label;

  import java.awt.Graphics;

  import java.awt.GridLayout;

  public class PreLoader extends Applet implements Runnable, AppletStub

  {

   String largeAppletName;

   Label label;

   public void init()

   {

  // 要求装载的正式Applet

  largeAppletName = getParameter("applet");

  // “请稍等”提示信息

  label = new Label("请稍等..." + largeAppletName);

  add(label);

   }

   public void run()

   {

  try

  {

   // 获得待装载Applet的类

   Class largeAppletClass = Class.forName(largeAppletName);

   // 创建待装载Applet的实例

   Applet largeApplet = (Applet)largeAppletClass.newInstance();

   // 设置该Applet的Stub程序

   largeApplet.setStub(this);

   // 取消“请稍等”信息

   remove(label);

   // 设置布局

   setLayout(new GridLayout(1, 0));

   add(largeApplet);

   // 显示正式的Applet

   largeApplet.init();

   largeApplet.start();

  }

  catch (Exception ex)

  {

   // 显示错误信息

   label.setText("不能装入指定的Applet");

  }

  // 刷新屏幕

  validate();

   }

   public void appletResize(int width, int height)

   {

  // 把appletResize调用从stub程序传递到Applet

  resize(width, height);

   }

  }

 


  编译后的代码小于2K,下载速度很快。代码中有几个地方值得注意。首先,PreLoader实现了AppletStub接口。一般地,Applet从调用者判断自己的codebase。在本例中,我们必须调用setStub()告诉Applet到哪里提取这个信息。另一个值得注意的地方是,AppletStub接口包含许多和Applet类一样的方法,但appletResize()方法除外。这里我们把对appletResize()方法的调用传递给了resize()方法。

  3.3 在画出图形之前预先装入它

  ImageObserver接口可用来接收图形装入的提示信息。ImageObserver接口只有一个方法imageUpdate(),能够用一次repaint()操作在屏幕上画出图形。下面提供了一个例子。

  public boolean imageUpdate(Image img, int flags, int x, int y, int w, int h)

  {

   if ((flags & ALLBITS) !=0 { repaint();

  }

  else if (flags & (ERROR |ABORT )) != 0)

  {

   error = true;

   // 文件没有找到,考虑显示一个占位符

   repaint();

  }

  return (flags & (ALLBITS | ERROR| ABORT)) == 0;

  }

 


  当图形信息可用时,imageUpdate()方法被调用。如果需要进一步更新,该方法返回true;如果所需信息已经得到,该方法返回false。

  3.4 覆盖update方法

  update()方法的默认动作是清除屏幕,然后调用paint()方法。如果使用默认的update()方法,频繁使用图形的应用可能出现显示闪烁现象。要避免在paint()调用之前的屏幕清除操作,只需按照如下方式覆盖update()方法:

public void update(Graphics g) { paint(g);}

 

  更理想的方案是:覆盖update(),只重画屏幕上发生变化的区域,如下所示:

public void update(Graphics g)
  {

   g.clipRect(x, y, w, h);

   paint(g);

  }

 


  3.5 延迟重画操作

  对于图形用户界面的应用来说,性能低下的主要原因往往可以归结为重画屏幕的效率低下。当用户改变窗口大小或者滚动一个窗口时,这一点通常可以很明显地观察到。改变窗口大小或者滚动屏幕之类的操作导致重画屏幕事件大量地、快速地生成,甚至超过了相关代码的执行速度。对付这个问题最好的办法是忽略所有“迟到”的事件。

  建议在这里引入一个数毫秒的时差,即如果我们立即接收到了另一个重画事件,可以停止处理当前事件转而处理最后一个收到的重画事件;否则,我们继续进行当前的重画过程。

  如果事件要启动一项耗时的工作,分离出一个工作线程是一种较好的处理方式;否则,一些部件可能被“冻结”,因为每次只能处理一个事件。下面提供了一个事件处理的简单例子,但经过扩展后它可以用来控制工作线程。

  public static void runOnce(String id, final long milliseconds)

  {

   synchronized(e_queue)

   {

  // e_queue: 所有事件的集合

  if (!e_queue.containsKey(id))

  {

   e_queue.put(token, new LastOne());

  }

   }

   final LastOne lastOne = (LastOne) e_queue.get(token);

   final long time = System.currentTimeMillis();

   // 获得当前时间

   lastOne.time = time;

   (new Thread()

   {

  public void run()

  {

   if (milliseconds > 0)

   {

    try

    {

     Thread.sleep(milliseconds);

    }

    // 暂停线程

    atch (Exception ex) {}

   }

   synchronized(lastOne.running)

   {

    // 等待上一事件结束

    if (lastOne.time != time)

    // 只处理最后一个事件

     return;

   }

  }}).start();

   }

   private static Hashtable e_queue = new Hashtable();

   private static class LastOne

   {

  public long time=0;

  public Object running = new Object();

   }

 

  3.6 使用双缓冲区

  在屏幕之外的缓冲区绘图,完成后立即把整个图形显示出来。由于有两个缓冲区,所以程序可以来回切换。这样,我们可以用一个低优先级的线程负责画图,使得程序能够利用空闲的CPU时间执行其他任务。下面的伪代码片断示范了这种技术。

Graphics myGraphics;
  Image myOffscreenImage = createImage(size().width, size().height);

  Graphics offscreenGraphics = myOffscreenImage.getGraphics();

  offscreenGraphics.drawImage(img, 50, 50, this);

  myGraphics.drawImage(myOffscreenImage, 0, 0, this);

 


  3.7 使用BufferedImage

  Java JDK 1.2使用了一个软显示设备,使得文本在不同的平台上看起来相似。为实现这个功能,Java必须直接处理构成文字的像素。由于这种技术要在内存中大量地进行位复制操作,早期的JDK在使用这种技术时性能不佳。为解决这个问题而提出的Java标准实现了一种新的图形类型,即BufferedImage。

  BufferedImage子类描述的图形带有一个可访问的图形数据缓冲区。一个BufferedImage包含一个ColorModel和一组光栅图形数据。这个类一般使用RGB(红、绿、蓝)颜色模型,但也可以处理灰度级图形。它的构造函数很简单,如下所示:

  public BufferedImage (int width, int height, int imageType)

  ImageType允许我们指定要缓冲的是什么类型的图形,比如5-位RGB、8-位RGB、灰度级等。

  3.8 使用VolatileImage

  许多硬件平台和它们的操作系统都提供基本的硬件加速支持。例如,硬件加速一般提供矩形填充功能,和利用CPU完成同一任务相比,硬件加速的效率更高。由于硬件加速分离了一部分工作,允许多个工作流并发进行,从而缓解了对CPU和系统总线的压力,使得应用能够运行得更快。利用VolatileImage可以创建硬件加速的图形以及管理图形的内容。由于它直接利用低层平台的能力,性能的改善程度主要取决于系统使用的图形适配器。VolatileImage的内容随时可能丢失,也即它是“不稳定的(volatile)”。因此,在使用图形之前,最好检查一下它的内容是否丢失。VolatileImage有两个能够检查内容是否丢失的方法:

  public abstract int validate(GraphicsConfiguration gc);public abstract Boolean contentsLost();

  每次从VolatileImage对象复制内容或者写入VolatileImage时,应该调用validate()方法。contentsLost()方法告诉我们,自从最后一次validate()调用之后,图形的内容是否丢失。

  虽然VolatileImage是一个抽象类,但不要从它这里派生子类。VolatileImage应该通过Component.createVolatileImage()或者GraphicsConfiguration.createCompatibleVolatileImage()方法创建。

  3.9 使用Window Blitting

  进行滚动操作时,所有可见的内容一般都要重画,从而导致大量不必要的重画工作。许多操作系统的图形子系统,包括WIN32 GDI、MacOS和X/Windows,都支持Window Blitting技术。Window Blitting技术直接在屏幕缓冲区中把图形移到新的位置,只重画新出现的区域。要在Swing应用中使用Window Blitting技术,设置方法如下:

  setScrollMode(int mode);

  在大多数应用中,使用这种技术能够提高滚动速度。只有在一种情形下,Window Blitting会导致性能降低,即应用在后台进行滚动操作。如果是用户在滚动一个应用,那么它总是在前台,无需担心任何负面影响。

http://blog.csdn.net/daoquan/archive/2005/03/04/310923.aspx

posted @ 2008-02-25 14:51 鲁胜迪 阅读(479) | 评论 (0)编辑 收藏

applet类

Applet类

  Applet类是所有Applet应用的基类,所有的Java小应用程序都必须继承该类。如下所示。
import java. applet.*;
public class OurApplet extends Applet
{
......
......
}


  Applet类的构造函数只有一种,即:public Applet()

  Applet实现了很多基本的方法,下面列出了Applet类中常用方法和用途。
public final void setStub(AppletStub stub)
//设置Applet的stub.stub是Java和C之间转换参数并返回值的代码位,它是由系统自动设定的。
public boolean isActive();// 判断一个Applet是否处于活动状态。
public URL getDocumentBase();// 检索表示该Applet运行的文件目录的对象。
public URL getCodeBase();// 获取该Applet 代码的URL地址。
public String getParameter(String name);// 获取该Applet 由name指定参数的值。
public AppletContext getAppletContext();// 返回浏览器或小应用程序观察器。
public void resize(int width,int height);// 调整Applet运行的窗口尺寸。
public void resize(Dimension d);// 调整Applet运行的窗口尺寸。
public void showStatus(String msg);// 在浏览器的状态条中显示指定的信息。
public Image getImage(URL url); // 按url指定的地址装入图象。
public Image getImage(URL url,String name);// 按url指定的地址和文件名加载图像。
public AudioClip getAudioClip(URL url);// 按url指定的地址获取声音文件。
public AudioClip getAudioClip(URL url, String name);// 按url指定的地址和文件名获取声音。
public String getAppletInfo();// 返回Applet应用有关的作者、版本和版权方面的信息;
public String[][] getParameterInfo();
// 返回描述Applet参数的字符串数组,该数组通常包含三个字符串: 参数名、该参数所需值的类型和该参数的说明。
public void play(URL url);// 加载并播放一个url指定的音频剪辑。
public void destroy();//撤消Applet及其所占用的资源。若该Applet是活动的,则先终止该Applet的运行。


  (1) Applet运行状态控制基本方法

  Applet类中的四种基本方法用来控制其运行状态:init()、start()、stop()、destroy()

  init()方法

  这个方法主要是为Applet的正常运行做一些初始化工作。当一个Applet被系统调用时,系统首先调用的就是该方法。通常可以在该方法中完成从网页向Applet传递参数,添加用户界面的基本组件等操作。

  start()方法

  系统在调用完init()方法之后,将自动调用start()方法。而且,每当用户离开包含该Applet的主页后又再返回时,系统又会再执行一遍start()方法。这就意味着start()方法可以被多次执行,而不像init()方法。因此,可把只希望执行一遍的代码放在init()方法中。可以在start()方法中开始一个线程,如继续一个动画、声音等。

  stop()方法

  这个方法在用户离开Applet所在页面时执行,因此,它也是可以被多次执行的。它使你可以在用户并不注意Applet的时候,停止一些耗用系统资源的工作以免影响系统的运行速度,且并不需要人为地去调用该方法。如果Applet中不包含动画、声音等程序,通常也不必实现该方法。

  destroy()方法

  与对象的finalize()方法不同,Java在浏览器关闭的时候才调用该方法。Applet是嵌在HTML文件中的,所以destroty()方法不关心何时Applet被关闭,它在浏览器关闭的时候自动执行。在destroy()方法中一般可以要求收回占用的非内存独立资源。(如果在Applet仍在运行时浏览器被关闭,系统将先执行stop()方法,再执行destroy()方法。

  (2) Applet应用的有关参数说明

  利用Applet来接收从HTML中传递过来的参数,下面对这些参数作一简单说明:

  * CODE标志

  CODE标志指定Applet的类名;WIDTH和HEIGHT标志指定Applet窗口的像素尺寸。在APPLET语句里还可使用其他一些标志。

  * CODEBASE 标志

  CODEBASE标志指定Applet的URL地址。Applet的通用资源定位地址URL,它可以是绝对地址 ,如www.sun.com。也可以是相对于当前HTML所在目录的相对地址,如/AppletPath/Name。如果HTML文件不指定CODEBASE 标志,浏览器将使用和HTML文件相同的URL。

  * ALT 标志

  虽然Java在WWW上很受欢迎,但并非所有浏览器都对其提供支持。如果某浏览器无法运行Java Applet,那么它在遇到APPLET语句时将显示ALT标志指定的文本信息。

  * ALIGN 标志

  ALIGN标志可用来控制把Applet窗口显示在HTML文档窗口的什么位置。与HTML<LMG>语句一样,ALIGN标志指定的值可以是TOP、MIDDLE或BOTTOM。

  * VSPACE与HSPACE 标志

  VSPACE和HSPACE标志指定浏览器显示在Applet窗口周围的水平和竖直空白条的尺寸,单位为像素。如下例使用该标志在Applet窗口之上和之下各留出50像素的空白,在其左和其右各留出25像素的空白:

  * NAME 标志

  NAME标志把指定的名字赋予Applet的当前实例。当浏览器同时运行两个或多个Applet时,各Applet可通过名字相互引用或交换信息。如果忽略NAME标志,Applet的名字将对应于其类名。

  * PARAM 标志

  通用性是程序设计所追求的目标之一。使用户或者程序员能很方便地使用同一个Applet完成不同的任务是通用性的具体表现。从HTML文件获取信息是提高Applet通用性的一条有效途径。

  假设编制了一个把某公司的名字在屏幕上卷动的Applet。为了使该Applet更加通用,则可以使该Applet从HTML文件获取需要卷动的文本信息。这样,若想显示另一个公司的名字,用不着修改Java Applet本身,只需修改HTML文件即可。

  PARAM 标志可用来在HTML文件里指定参数,格式如下所示:

PARAM Name="name" Value="Liter"

  Java Applet可调用getParameter方法获取HTML文件里设置的参数值。

posted @ 2008-02-25 13:19 鲁胜迪 阅读(590) | 评论 (0)编辑 收藏

MySQL简明教程

进入MySQL

  进入mysql时,你需要提供一个MySQL用户和此用户的口令。如果数据库运行在其它机器上,而不是你所在的这台机器上,你需要指定主机名。
命令:
mysql -h <主机名> -u <用户名> -p <数据库名>
Enter password: ********

********代表你的口令;当mysql显示Enter password:提示时输入它。

MYSQL 有缺省库mysql, 在此系统中,缺省的口令为空,打回车即可。
例如,在此机器上,你可以敲入:
# mysql -u root -p mysql
Enter password:
屏幕如下提示:
Welcome to the MySQL monitor. Commands end with ; or .
Your MySQL connection id is 459 to server version: 3.22.23a-log

Type 'help' for help.

mysql>

这就进入了mysql 的工作环境, 进入到名为mysql 的数据库中。
你可看见mysql>提示后的一些介绍信息:

提示符 mysql> 告诉你mysql准备为你输入命令。

我是通过cmd方式进入mysql的,先将目录选到..\MySQL\MySQL Server 5.0\bin>下,再在它后面敲入 mysql -hlocalhost -uroot -p<root的密码>  按回车就可以进去了

退出MySQL

在你成功地连接后,你可以在mysql>提示下打入QUIT随时断开:
mysql> QUIT
Bye
你也可以键入control-D断开。

操作MySQL

  在之前要指出的是:一条操作即是一条SQL语句,注意随后要跟上一个分号,以标志此条语句的结束。而且一条SQL 语句不必全在一个单独行给出,可以写入多行,最后以分号结束此语句的输入。

  在之前要指出的是:一条操作即是一条SQL语句,注意随后要跟上一个分号,以标志此条语句的结束。而且一条SQL 语句不必全在一个单独行给出,可以写入多行,最后以分号结束此语句的输入。

创建数据库
命令:CREATE DATABASE <数据库名>
例如,建立一个名为 test 的数据库
mysql> CREATE DATABASE test;

删除数据库
命令: DROP DATABASE <数据库名>
例如,删除名为 test 的数据库
mysql> DROP DATABASE test

连接数据库

命令: USE <数据库名>
例如,如果test数据库存在,尝试存取它:
mysql> USE test
屏幕提示:
Database changed

建表
命令:CREATE TABLE <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]);
例 如,建立一个名为table_1的表,此表记录班上的人员及平均成绩,那么用字段 id 代表编号,为数字类型,且编号唯一,不能为空, 缺省值为 0 ; 用字段 name 代表人名,为字符型,不为空;用字段 degree 代表成绩,为数字型,可为空。编号id 为此表的关键字。建表如下:
mysql> CREATE TABLE table_1 (
> id INT(4) DEFAULT '0' NOT NULL,
> name CHAR(20) NOT NULL
> degree DOUBLE(16,2) ,
> PRIMARY KEY(id));

删除
命令:DROP TABLE <表名>
例如,删除表名为 table_1 的表
mysql> DROP TABLE table_1;

插入数据

命令:INSERT INTO <表名> [( <字段名1>[,..<字段名n > ])]
VALUES ( 值1 )[, ( 值n )]
例如,往表 test 中插入二条记录, 这二条记录表示:编号为1的名为joan 的成绩为96.45, 编号为2 的名为jeanny 的成绩为82.99.
mysql> INSERT INTO test VALUES(1,'joan',96.45),(2,'jeanny',82.99);

查询表中的数据
命令: SELECT <字段1,字段2,...> FROM < 表名 > WHERE < 表达式 >
例如,查看表 test 中所有数据
mysql> SELECT * FROM test;
屏幕显示:
+----+-------------+----------+
| id | name | degree |
+----+-------------+----------+
| 1 | joan | 96.45 |
| 2 | jeanny | 82.99 |
+----+-------------+----------+ 

删除表中数据
命令: DELETE FROM < 表名 > WHERE < 表达式 >
例如,删除表 test 中编号为1 的记录
mysql> DELETE FROM test WHERE id=1;

字段类型

   1.INT[(M)]

   正常大小整数类型

   2.DOUBLE[(M,D)] [ZEROFILL]

   正常大小(双精密)浮点数字类型

   3.DATE

   日期类型。支持的范围是1000-01-01到9999-12-31。MySQL以YYYY-MM-DD格式来显示DATE值,但是允许你使用字符串或数字把值赋给DATE列

   4.CHAR(M)

   定长字符串类型,当存储时,总是是用空格填满右边到指定的长度

   5.BLOB TEXT

   BLOB或TEXT类型,最大长度为65535(2^16-1)个字符。

   6.VARCHAR

变长字符串类型

   1: 显示数据库

SHOW DATABASES,

   2:当前选择的数据库,

   mysql> SELECT DATABASE();
+------------+
| DATABASE() |
+------------+
| test ;
+------------+
| DATABASE() |
+------------+
| test    |
+------------+

  3: 当前数据库包含的表信息:

   mysql> SHOW TABLES;
+---------------------+
| Tables in test 
mysql> SHOW TABLES;
+---------------------+
| Tables in test   |
+---------------------+
| mytable1      |
| mytable2      |
+---------------------+

  4: 获取表结构

   mysql> desc mytable1;
   +---------+-------------+------+-----+---------+-------+
| Field  mysql> desc mytable1;
+---------+-------------+------+-----+---------+-------+
| Field  | Type  | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| s1  | varchar(20) | YES |NULL  |    |
+---------------------+------+-----+---------+-------+

导入数据库表

   (1)创建.sql文件

   (2)先产生一个库如auction.c:mysqlbin>mysqladmin -u root -p creat auction,会提示输入密码,然后成功创建。

   (2)导入auction.sql文件

   c:mysqlbin>mysql -u root -p auction < auction.sql。

   通过以上操作,就可以创建了一个数据库auction以及其中的一个表auction。

修改数据库

   (1)在mysql的表中增加字段:

   alter table dbname add column userid int(11) not null primary key auto_increment;

   这样,就在表dbname中添加了一个字段userid,类型为int(11)。

mysql数据库的授权

   mysql>grant select,insert,delete,create,drop

   on *.* (或test.*/user.*/..)

   to 用户名@localhost

   identified by "密码"; //还是建议使用这种!

   如:新建一个用户帐号以便可以访问数据库,需要进行如下操作:

   mysql> grant usage

   -> ON test.*
-> TO testuser@localhost;
Query OK, 0 rows affected (0.15 sec)

   此后就创建了一个新用户叫:testuser,这个用户只能从localhost连接到数据库并可以连接到test 数据库。下一步,我们必须指定testuser这个用户可以执行哪些操作:

   mysql> GRANT select, insert, delete,update
-> ON test.*
-> TO testuser@localhost;
Query OK, 0 rows affected (0.00 sec)

   此操作使testuser能够在每一个test数据库中的表执行SELECT,INSERT和DELETE以及UPDATE查询操作。现在我们结束操作并退出MySQL客户程序:

   mysql> exit
Bye

posted @ 2008-01-17 14:07 鲁胜迪 阅读(442) | 评论 (1)编辑 收藏

桌面不能显示,但进程中explorer.exe没有问题

桌面不能显示,但进程中explorer.exe没有问题
    我用的是win2003版的系统,有一次开机很莫名奇妙的桌面上的东西都没了,但是下面的工具栏还能显示出来,于是我就查看进程中的explorer是否有问题,发现进程中explorer仍在运行,将该进程结束,再运行该进程,发现还是只能显示下面的工具栏。 然后就查看了document下的用户文件夹,发现桌面文件夹并没有问题。
    上网查看了一下,发现可能是中毒了。进入安全模式进行查杀病毒,发现桌面文件夹中确实有一个木马文件,删除。重启电脑进入系统,还是原来的问题,没有解决。
    运行中输入sfc   /scannow,会提示插入系统相应的光盘,复制dll文件。结束后重启,发现还是不行,彻底无语.....
    由于我使用的是administrator用户,所以不方便把这个用户删除,于是我又创建了一个新的用户,用新用户登录就没有原来的问题了。

补充:上网查了下,好像可以通过“重启->进入最后一次正确配置”这种方法可以解决问题,但我没试过,不知道真的假的。


posted @ 2008-01-17 11:14 鲁胜迪 阅读(2838) | 评论 (0)编辑 收藏

SQL SERVER2000安装方法及下载地址

声明------本文章摘于ACCESS开发者论坛版主小鸟飞毛(网名)的文章

SQL Server2000安装步骤:
准备

将SQL Server 2000的光盘插入CD-ROM驱动器之后,SQL Server的安装程序会自动启动。如果该光盘不自动运行,请双击该光盘根目录中的 Autorun.exe 文件,打开安装选项窗口。
我们以个人版为例详细描述安装步骤,标准版、企业版的安装完全一样。
第1步:选择“安装SQL Server 2000组件”选项。如下图


第2步:接着选择“安装数据库服务器”。如下图


第3步:出现安装向导后,点击“下一步”后出现“计算机名”窗口。“本地计算机”是默认选项,其名称就显示在上面,我们按其默认点“下一步”。如下图


第4步:在“安装选择”对话窗口中,同样按其默认项“创建新的SQL Server实例,或安装客户端工具”点下一步


第5步:接下来的窗口是用户名、公司名的自取,在经过软件许可协议一步后,到达“安装定义”对话窗口(如下图)。同样地,按其默认“服务器和客户端工具”选择到下一步


第6步:选择“默认”的实例名称,这时本SQL Server的名称将和Windows 2000服务器的名称相同。SQL Server 2000可以在同一台服务器上安装多个实例,也就是你可以重复安装几次,如果您的计算机上已经安装了数据库实例,“默认”实例可能不可选择,这时您就需要选择不同的实例名称了。实例名会出现在各种SQL Server和系统工具的用户界面中,名称越短越容易读取。实例名称不能是“Default”等SQL Server的保留关键字。


第7步:在安装类型对话窗口中,可以设定多个选项。比如安装组件的多少,以及安装的路径等,请根据实际需要选择

伊剑终情 2006-09-15 12:26

第8步:在“服务帐户”对话窗口中,选“使用本地系统帐户”。不建议“使用域用户帐户”,以避免以后WINDOWS的登录用户名和密码修改了,SQL SERVER2000不能正常启动,另外域用户帐户管理相对复杂些。


第9步:请选“择混合模式”,不建议“Windows身份验证模式”,该模式管理相对复杂些。如果您是初次接触使用SQL Server2000的话,可以将该密码设置为空,以方便登录。熟练以后再设置sa的密码,设置的密码请不要忘记,因为基于SQL SERVER2000各种应用系统在安装或使用过程中往往需要sa的密码。


第10步:在“选择许可模式”窗口,根据您购买的SQL SERVER2000软件的类型和数量输入。“每客户”表示同一时间最多允许的连接数,“处理器许可证”表示该服务器最多能安装多少个CPU。例如可选择“每服务器1个处理器”。企业版和标准版时客户许可设备数可以修改,个人版时0,您不能修改。


第11步:一切设定OK后,点击“继续”,安装程序开始向硬盘复制必要的文件,开始正式安装,大约10分钟后,安装完成。注意:安装完成后请重新启动计算机。


第12步:查看SQL Server2000启动情况。成功安装了SQL Server2000,在SQL Server正常启动后,计算机桌面右下角出现的SQL Server服务监视图标显示为一个带绿色三角的服务启动标记。


若该绿色图标变成了红色的方块,则表明SQL Server已停止了服务,可通过“SQL Server服务管理器”程序来启动SQL Server。双击该图标,将出现以下的“SQL Server服务管理器”程序,可通过该程序停止、启动SQL Server的后台服务。


如果在计算机桌面右下角没有出现的SQL Server服务监视图标,依次单击“开始”—“程序”,即可看到Microsoft SQL Server 2000的程序组件,如下图


点击其中的“服务管理器”,则可以启动SQL Server服务。

SQL Server下载地址

SQL Server2000下载地址

http://www.guilin163.net/download/server/sqlserver2000.iso

http://download.microsoft.com/download/sqlsvr2000/trial/2000/nt45/cn/sqleval.exe

sql server2000 sp4下载地址:

http://www.yich.org/Soft/xitong/sjbd/200701/548.html

sql server2005下载地址:

包含32位版本和64位版本,可以自己选择下载那个版本
每个版本各有两张光盘
需要迅雷软件才能下载,请先到迅雷官方
http://www.xunlei.com或者太平洋下载频道下载迅雷软件。

http://down2.aisnow.cn/0602/0221/cs_sql_2005_ent_x86_cd1.rar

http://down2.aisnow.cn/0602/0221/cs_sql_2005_ent_x86_cd2.rar

下完后把后缀名rar改为iso.用虚拟光驱安装或刻成碟安装




以上是本人搜索到的,如果大家找到速度快的下载地址可跟贴告知,谢谢!
win版本建议采用win2000服务器版或win2003
什么情况下适合使用ADP(ADP是SQL Server的文件的后缀,MDB是ACCESS文件的后缀)

1、你设计的数据库为多用户使用
2、你的数据库容量大于2G
3、数据库需要远程链接
以上只要有一个理由成立,那你都可以考虑把MDB升级为ADP

posted @ 2008-01-15 08:43 鲁胜迪 阅读(8127) | 评论 (0)编辑 收藏

思考题

提问:有两支不均匀的香,每支可燃烧一小时。如果我们的考试需要45分钟,请问如何燃烧香?用这两支香一共可记录多少种时间?它们分别是多长?
回答:把两根香同时点起来,第一支香两头点着,另一支香只烧一头,等第一支香烧完的同时(这是烧完总长度的3/4),把第二支香另一头点燃,另一头从燃起到熄灭的时间就是15分!

posted @ 2008-01-11 16:13 鲁胜迪 阅读(201) | 评论 (0)编辑 收藏

JSP连接各数据库实例

现在有好多初学jsp的网友经常会问数据库怎么连接啊,怎么老出错啊?所以我集中的在这写篇文章供大家参考,其实这种把数据库逻辑全部放在jsp里未必是好的做法,但是有利于初学者学习,所以我就这样做了,当大家学到一定程度的时候,可以考虑用MVC的模式开发。在练习这些代码的时候,你一定将jdbc的驱动程序放到服务器的类路径里,然后要在数据库里建一个表test,有两个字段比如为test1,test2,可以用下面SQL建
create table test(test1 varchar(20),test2 varchar(20)
然后向这个表写入一条测试纪录
那么现在开始我们的jsp和数据库之旅吧。
一、jsp连接Oracle8/8i/9i数据库(用thin模式)
  testoracle.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>  
<%@ page import="java.sql.*"%>
<html>  
<body>  
<%Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();  
String url="jdbc:oracle:thin:@localhost:1521:orcl";
//orcl为你的数据库的SID
String user="scott";
String password="tiger";
Connection conn= DriverManager.getConnection(url,user,password);  
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
String sql="select * from test";  
ResultSet rs=stmt.executeQuery(sql);  
while(rs.next()) {%>  
您的第一个字段内容为:<%=rs.getString(1)%>  
您的第二个字段内容为:<%=rs.getString(2)%>  
<%}%>  
<%out.print("数据库操作成功,恭喜你");%>  
<%rs.close();  
stmt.close();  
conn.close();  
%>  
</body>  
</html>
二、jsp连接Sql Server7.0/2000数据库
testsqlserver.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>  
<%@ page import="java.sql.*"%>
<html>  
<body>  
<%Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();  
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
//pubs为你的数据库的
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);  
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
String sql="select * from test";  
ResultSet rs=stmt.executeQuery(sql);  
while(rs.next()) {%>  
您的第一个字段内容为:<%=rs.getString(1)%>  
您的第二个字段内容为:<%=rs.getString(2)%>  
<%}%>  
<%out.print("数据库操作成功,恭喜你");%>  
<%rs.close();  
stmt.close();  
conn.close();  
%>  
</body>  
</html>
三、jsp连接DB2数据库
testdb2.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>  
<%@ page import="java.sql.*"%>
<html>  
<body>  
<%Class.forName("com.ibm.db2.jdbc.app.DB2Driver ").newInstance();  
String url="jdbc:db2://localhost:5000/sample";
//sample为你的数据库名
String user="admin";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);  
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
String sql="select * from test";  
ResultSet rs=stmt.executeQuery(sql);  
while(rs.next()) {%>  
您的第一个字段内容为:<%=rs.getString(1)%>  
您的第二个字段内容为:<%=rs.getString(2)%>  
<%}%>  
<%out.print("数据库操作成功,恭喜你");%>  
<%rs.close();  
stmt.close();  
conn.close();  
%>  
</body>  
</html>
四、jsp连接Informix数据库
testinformix.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>  
<%@ page import="java.sql.*"%>
<html>  
<body>  
<%Class.forName("com.informix.jdbc.IfxDriver").newInstance();  
String url = 
"jdbc:informix-sqli://123.45.67.89:1533/testDB:INFORMIXSERVER=myserver;
user=testuser;password=testpassword";
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);  
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
String sql="select * from test";  
ResultSet rs=stmt.executeQuery(sql);  
while(rs.next()) {%>  
您的第一个字段内容为:<%=rs.getString(1)%>  
您的第二个字段内容为:<%=rs.getString(2)%>  
<%}%>  
<%out.print("数据库操作成功,恭喜你");%>  
<%rs.close();  
stmt.close();  
conn.close();  
%>
</body>
</html>
五、jsp连接Sybase数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>  
<%@ page import="java.sql.*"%>
<html>  
<body>  
<%Class.forName("com.sybase.jdbc.SybDriver").newInstance();  
String url =" jdbc:sybase:Tds:localhost:5007/tsdata";
//tsdata为你的数据库名
Properties sysProps = System.getProperties();
SysProps.put("user","userid");
SysProps.put("password","user_password");
Connection conn= DriverManager.getConnection(url, SysProps);  
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
String sql="select * from test";  
ResultSet rs=stmt.executeQuery(sql);  
while(rs.next()) {%>  
您的第一个字段内容为:<%=rs.getString(1)%>  
您的第二个字段内容为:<%=rs.getString(2)%>  
<%}%>  
<%out.print("数据库操作成功,恭喜你");%>  
<%rs.close();  
stmt.close();  
conn.close();  
%>  
</body>  
</html>
六、jsp连接MySQL数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>  
<%@ page import="java.sql.*"%>
<html>  
<body>  
<%Class.forName("org.gjt.mm.mysql.Driver").newInstance();  
String url ="jdbc:mysql://localhost/softforum?user=soft&password=soft1234&useUnicode=true&characterEncoding=8859_1"
//testDB为你的数据库名
Connection conn= DriverManager.getConnection(url);  
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
String sql="select * from test";  
ResultSet rs=stmt.executeQuery(sql);  
while(rs.next()) {%>  
您的第一个字段内容为:<%=rs.getString(1)%>  
您的第二个字段内容为:<%=rs.getString(2)%>  
<%}%>  
<%out.print("数据库操作成功,恭喜你");%>  
<%rs.close();  
stmt.close();  
conn.close();  
%>  
</body>  
</html>
七、jsp连接PostgreSQL数据库
testmysql.jsp如下:
<%@ page contentType="text/html;charset=gb2312"%>  
<%@ page import="java.sql.*"%>
<html>  
<body>  
<%Class.forName("org.postgresql.Driver").newInstance();  
String url ="jdbc:postgresql://localhost/soft"
//soft为你的数据库名
String user="myuser";
String password="mypassword";
Connection conn= DriverManager.getConnection(url,user,password);  
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);  
String sql="select * from test";  
ResultSet rs=stmt.executeQuery(sql);  
while(rs.next()) {%>  
您的第一个字段内容为:<%=rs.getString(1)%>  
您的第二个字段内容为:<%=rs.getString(2)%>  
<%}%>  
<%out.print("数据库操作成功,恭喜你");%>  
<%rs.close();  
stmt.close();  
conn.close();  
%>  
</body>  
</html>

posted @ 2008-01-07 16:14 鲁胜迪 阅读(1562) | 评论 (2)编辑 收藏

仅列出标题
共12页: First 上一页 4 5 6 7 8 9 10 11 12 下一页 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

常用链接

留言簿(4)

随笔分类

随笔档案

文章分类

新闻分类

搜索

最新评论

阅读排行榜

评论排行榜