對一個算法筆試題的注解

               摘要:   閱讀全文

          posted @ 2008-03-01 10:42 魯勝迪 閱讀(298) | 評論 (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 魯勝迪 閱讀(2702) | 評論 (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 魯勝迪 閱讀(2061) | 評論 (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 魯勝迪 閱讀(500) | 評論 (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 魯勝迪 閱讀(609) | 評論 (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 魯勝迪 閱讀(450) | 評論 (1)編輯 收藏

          桌面不能顯示,但進程中explorer.exe沒有問題

          桌面不能顯示,但進程中explorer.exe沒有問題
              我用的是win2003版的系統,有一次開機很莫名奇妙的桌面上的東西都沒了,但是下面的工具欄還能顯示出來,于是我就查看進程中的explorer是否有問題,發現進程中explorer仍在運行,將該進程結束,再運行該進程,發現還是只能顯示下面的工具欄。 然后就查看了document下的用戶文件夾,發現桌面文件夾并沒有問題。
              上網查看了一下,發現可能是中毒了。進入安全模式進行查殺病毒,發現桌面文件夾中確實有一個木馬文件,刪除。重啟電腦進入系統,還是原來的問題,沒有解決。
              運行中輸入sfc   /scannow,會提示插入系統相應的光盤,復制dll文件。結束后重啟,發現還是不行,徹底無語.....
              由于我使用的是administrator用戶,所以不方便把這個用戶刪除,于是我又創建了一個新的用戶,用新用戶登錄就沒有原來的問題了。

          補充:上網查了下,好像可以通過“重啟->進入最后一次正確配置”這種方法可以解決問題,但我沒試過,不知道真的假的。


          posted @ 2008-01-17 11:14 魯勝迪 閱讀(2845) | 評論 (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 魯勝迪 閱讀(8135) | 評論 (0)編輯 收藏

          思考題

          提問:有兩支不均勻的香,每支可燃燒一小時。如果我們的考試需要45分鐘,請問如何燃燒香?用這兩支香一共可記錄多少種時間?它們分別是多長?
          回答:把兩根香同時點起來,第一支香兩頭點著,另一支香只燒一頭,等第一支香燒完的同時(這是燒完總長度的3/4),把第二支香另一頭點燃,另一頭從燃起到熄滅的時間就是15分!

          posted @ 2008-01-11 16:13 魯勝迪 閱讀(215) | 評論 (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 魯勝迪 閱讀(1571) | 評論 (2)編輯 收藏

          僅列出標題
          共12頁: First 上一頁 4 5 6 7 8 9 10 11 12 下一頁 
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          文章分類

          新聞分類

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 肇州县| 荔波县| 黄梅县| 湖北省| 衡阳市| 临泉县| 宜君县| 女性| 左贡县| 四平市| 灵川县| 钟祥市| 巴林右旗| 托里县| 察哈| 兰考县| 云和县| 湘阴县| 广宁县| 江源县| 尉犁县| 敦煌市| 华容县| 宜丰县| 紫云| 谷城县| 漾濞| 襄汾县| 蓬溪县| 南丹县| 介休市| 十堰市| 长宁县| 临洮县| 迁安市| 长治县| 九龙坡区| 台中市| 崇文区| 沽源县| 渭南市|