對一個算法筆試題的注解
摘要: 閱讀全文posted @ 2008-03-01 10:42 魯勝迪 閱讀(298) | 評論 (0) | 編輯 收藏
<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 魯勝迪 閱讀(2702) | 評論 (2) | 編輯 收藏
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 魯勝迪 閱讀(2061) | 評論 (0) | 編輯 收藏
這一部分介紹的內容適合于圖形用戶界面的應用(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 魯勝迪 閱讀(500) | 評論 (0) | 編輯 收藏
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 魯勝迪 閱讀(609) | 評論 (0) | 編輯 收藏
進入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斷開。
在之前要指出的是:一條操作即是一條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 魯勝迪 閱讀(450) | 評論 (1) | 編輯 收藏
posted @ 2008-01-17 11:14 魯勝迪 閱讀(2845) | 評論 (0) | 編輯 收藏
聲明------本文章摘于ACCESS開發者論壇版主小鳥飛毛(網名)的文章
SQL Server2000安裝步驟: 第8步:在“服務帳戶”對話窗口中,選“使用本地系統帳戶”。不建議“使用域用戶帳戶”,以避免以后WINDOWS的登錄用戶名和密碼修改了,SQL SERVER2000不能正常啟動,另外域用戶帳戶管理相對復雜些。 SQL Server下載地址
準備
將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
第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服務。
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
2、你的數據庫容量大于2G
3、數據庫需要遠程鏈接
以上只要有一個理由成立,那你都可以考慮把MDB升級為ADP
posted @ 2008-01-15 08:43 魯勝迪 閱讀(8135) | 評論 (0) | 編輯 收藏
posted @ 2008-01-11 16:13 魯勝迪 閱讀(215) | 評論 (0) | 編輯 收藏
posted @ 2008-01-07 16:14 魯勝迪 閱讀(1571) | 評論 (2) | 編輯 收藏