2005年4月24日
#
IO兩大主流,16位和8位
16位對應Writer 和 Reader
根據編程目的不同有
FileWriter和FileWriter 對文件進行讀寫。
StringWriter、StringReader 對內存里的位置進行讀寫。
PipedWrier、PipedReader 兩個線程間通訊用
8位對應InputStream 和 OutputStream
根據編程目的不同有
FileInputStream、FileOutputStream 對文件進行讀寫
ByteArrayInputStream、ByteArrayOutputStream 對字節數組進行讀寫
PipedInputStream、PipedOutputStream 線程間通訊用
注意:在數據流里不存在字符串的IO操作,那樣就要用Reader和Writer類
二者的橋梁在InputStreamReader、OutputStreamWriter
BufferedWriter、BufferedReader、BufferedInputStream、BufferedOutputStream
是用來提高IO速度的,注意包裝的時候最好最先包裝Buffered,這樣效果會好些。
包裝模式的理解。Package Pattern
各種Data Type的長度的記憶.
還要注意對象流的使用.
高級IO操作:
信道IO,java.nio.channels包
他的主要特征是可以對內存進行快讀寫操作,進行內存映射.
同時可以創建各種數據類型的緩沖區,從而提高IO操作效率.
2005年3月31日
#
JAVA的授權事件模型包含三個概念:事件源,事件,事件監聽器。
一,事件源:一個產生事件的對象。當這個對象的內部狀態改變時,事件就會產生。一個事件源必須注冊一個事件監聽器已使監聽器能夠可以接受一個特定時間的通知。每一種事件都有它特定的注冊方法,通用形式為:addTypeListener(TypeListener e)
二,事件:一個事件是描述了一個事件源的狀態改變的對象。他可能通過一個人與圖形用戶接口的交互產生。如輸入文字,點擊鼠標。也可能不是由這些產生,如:一個事件可能在定時器中到期而產生。當然用戶也可以自由的定義自己的事件。
注意:其中的Type可以是Key, Mouse,等。一個事件源可能允許注冊多個事件監聽器,也可能只允許注冊一個監聽器。
事件源也允許注銷一個事件監聽器,通用方法為:removeTypeListener(TypeListener e);
三,事件監聽器:一個當事件發生時的時候被通知的對象。它有兩個要求:
1,它必須在事件源中注冊。
2,它必須實現接受和處理事件通知的方法。
還是來個比喻吧:你要想成為一個可以接受事件并處理事件的對象(即事件監聽器),必須繼承TypeListener類,其中的Type為事件類型。然后去注冊你想監聽的對象,并自己實現處理事件發生的方法,然后你就坐在等待事件的發生啦,哈哈!附源程序研究用:
/*===============DemoEvent.java清單=============*/
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class DemoEvent extends Applet implements MouseListener, MouseMotionListener{
public String msg = "";
public int mouseX = 0, mouseY = 0;
/*
*注冊事件監聽器
*/
public void init() {
addMouseListener(this);
addMouseMotionListener(this);
}
/*
*下面為所有處理MouseEvent的方法,當然你可以自定義自己的方法,但不能少了這些。
*/
public void mouseMoved(MouseEvent me) {
showStatus("mouse moved at :"+me.getX() +"," + me.getY());
}
public void mouseReleased(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "UP";
repaint();
}
public void mouseClicked(MouseEvent me) {
mouseX = 0;
mouseY = 10;
msg = "Mouse clicked!";
repaint();
}
public void mouseEntered(MouseEvent me) {
mouseX = 0;
mouseY = 10; ;
msg = "Mouse Entered!";
repaint();
}
public void mouseExited(MouseEvent me) {
mouseX = 0;
mouseY = 0;
msg = "Mouse Exited!";
repaint();
}
public void mouseDragged(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "*";
repaint();
}
public void mousePressed(MouseEvent me) {
mouseX = me.getX();
mouseY = me.getY();
msg = "Down";
repaint();
}
/*===================方法說明結束==================*/
public void paint(Graphics g) {
g.drawString(msg, mouseX, mouseY);
}
}
/*
*相關說明:這里的DemoEvent既是事件源也是事件監聽器。
*
*/
/*===================DemoEvent.java清單===================*/
2005年3月27日
#
什么是IO
IO(Input/Output)是計算機輸出/輸出的接口。Java的核心庫java.io提供了全面的IO接口,包括:文件讀寫,標準設備輸出等等。Java中IO是以流為基礎進行輸入輸出的,所有數據被串行化寫入輸出流,或者從輸入流讀入。此外,Java也對塊傳輸提供支持,在核心庫 java.nio中采用的便是塊IO。關于NIO我們在后面還有專門的討論。
流IO的好處是簡單易用,缺點是效率較低。塊IO效率很高,但編程比較復雜。
Java IO模型
Java的IO模型設計非常優秀,它使用Decorator模式,按功能劃分Stream,您可以動態裝配這些Stream,以便獲得您需要的功能。例如,您需要一個具有緩沖的文件輸入流,則應當組合使用FileInputStream和BufferedInputStream。
Java的IO體系分Input/Output和Reader/Writer兩類,區別在于Reader/Writer在讀寫文本時能自動轉換內碼。基本上,所有的IO類都是配對的,即有XxxInput就有一個對應的XxxOutput。
Java IO教程
如果您對Decorator模式非常了解,就能輕易地看出Java的IO類結構:根接口是InputStream/OutputStream,充當數據源的IO類有 FileInputStream/FileOutputStream, ByteArrayInputStream/ByteArrayOutputStream等,充當裝飾功能的IO類有 BufferedInputStream/BufferedOutputStream, DataInputStream/DataOutputStream等,它們都是繼承裝飾接口 FilterInputStream/FilterOutputStream。使用IO時,首先創建一個數據源IO,然后根據需要的功能創建裝飾類IO,其構造函數的參數為已創建的數據源IO。我們以創建一個具有緩沖的文件輸入流為例,假定需要從磁盤讀取文件“C:\log.txt”:
// 創建一個FileInputStream: FileInputStream fileInput = new FileInputStream("C:\\log.txt"); // 創建一個BufferedInputStream: BufferedInputStream bufferedInput = new BufferedInputStream(fileInput); // 現在得到的bufferedInput即是具有緩沖的文件輸入流 |
或者進一步簡寫如下:
InputStream input = new BufferedInputStream( new FileInputStream("C:\\log.txt")); // 現在得到的input即是具有緩沖的文件輸入流 |
在您對Java的IO有了總體了解后,我們推薦您看看教程Introduction to Java I/O和I/O: Reading and Writing。
配置環境:
1、Windows XP Pro sp2
首先,解開MySQL 的JDBC driver的壓縮包,其實在這個包中真正有用的就是mysql-connector-java-3.0.9-stable-bin.jar,所以我直接把它放到c:systemmysql-jdbc(這個目錄可以自己定義)下
在JBuilder中,做如下的操作:
一、選擇Tool -> Configure Libraries,在Configure Libraries窗口中選擇左邊列表框下的New,彈出New Library Wizard 窗口,在Name中輸入mysql(可以自己定義),Location中選擇User Home,點擊Add,選擇mysql jdbc的路徑:c:systemmysql-jdbc mysql-connector-java-3.0.9-stable-bin.jar,點擊ok(兩次);
二、選擇Project -> Project Properties -> Paths -> Required Libraries -> 點擊Add,選擇第一步驟中添加的User Home下的mysql,點擊ok(兩次);
三、選擇Tool -> Enterprise Setup -> Database Drivers -> 點擊Add,選擇剛添加的User Home下的mysql,點擊ok,在列表框中出現mysql.config,點擊ok;
四、提示重新啟動JBuilder,設置才能生效,確定后,重啟JBuilder;
五、選擇Tool -> Database Pilot ,在Database Pilot窗口中選擇View -> Options -> Drivers -> 點擊Add
Driver class中輸入:com.mysql.jdbc.Driver
Sample URL中輸入:mysql://localhost/DataBaseName 點擊ok;
六、在Database Pilot窗口中選擇File -> New,在New URL 窗口中,
Driver:從列表中選擇第五步驟建立的com.mysql.jdbc.Driver
URL:將DataBaseName改為存在的數據庫,本例中的URL如下:jdbc:mysql://localhost/admin,點擊ok;
七、在Database Pilot窗口中Database URLs列表中雙擊剛建立的url,輸入連接數據庫的用戶名、密碼,連接成功。
附測試程序:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="errorinfo.jsp"%>
<%@page import="java.sql.*"%>
<%@page import="java.util.*"%>
<%
//Initialize
java.sql.Connection conn;
java.sql.Statement stmt;
java.sql.ResultSet rst;
Class.forName("com.mysql.jdbc.Driver").newInstance();
String strUrl = "jdbc:mysql://localhost/admin";
String strQuery = "select * from test3";
conn= DriverManager.getConnection(strUrl, "root", "");
stmt = conn.createStatement();
rst = stmt.executeQuery(strQuery);
rst.next();
%>
<%=rst.getString("a")%>
<%
rst.absolute();
conn.close();
%>
注:test3為數據庫admin里面的一個表。
1,
安裝使用默認的安裝也可以,也可以自定義安裝,都較簡單。
安裝后為了使用方便,最好建立環境變量:path= %path%;你的mysql安裝路徑\bin 就可以了。
首先要跟MySQL 服務器連接:
mysql -uroot -p //sql用戶默認沒有密碼
會出現提示符: mysql>_
然后選擇使用的數據庫:
use mysql //mysql為一個系統的數據庫名,還有test,不過是一個空的數據庫.
然后就可以進行相應的操作:
mysql> 輸入相應的操作指令,然后加上 \g就可以執行了。
example:
mysql>select * from user /g 回車
以下是摘抄自網上的關于修改密碼,新建用戶的操作。
二、修改密碼。
格式:mysqladmin -u用戶名 -p舊密碼 password 新密碼
1、例1:給root加個密碼ab12。首先在DOS下進入目錄mysqlbin,然后鍵入以下命令
mysqladmin -uroot -password ab12
注:因為開始時root沒有密碼,所以-p舊密碼一項就可以省略了。
2、例2:再將root的密碼改為djg345。
mysqladmin -uroot -pab12 password djg345
三、增加新用戶。(注意:和上面不同,下面的因為是MYSQL環境中的命令,所以后面都帶一個分號作為命令結束符)
格式:grant select on 數據庫.* to 用戶名@登錄主機 identified by "密碼"
例1、增加一個用戶test1密碼為abc,讓他可以在任何主機上登錄,并對所有數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入MYSQL,然后鍵入以下命令:
grant select,insert,update,delete on *.* to test1@"%" Identified by "abc";
但例1增加的用戶是十分危險的,你想如某個人知道test1的密碼,那么他就可以在internet上的任何一臺電腦上登錄你的mysql數據庫并對你的數據可以為所欲為了,解決辦法見例2。
例2、增加一個用戶test2密碼為abc,讓他只可以在localhost上登錄,并可以對數據庫mydb進行查詢、插入、修改、刪除的操作(localhost指本地主機,即MYSQL數據庫所在的那臺主機),這樣用戶即使用知道test2的密碼,他也無法從internet上直接訪問數據庫,只能通過MYSQL主機上的web頁來訪問了。
grant select,insert,update,delete on mydb.* to test2@localhost identified by "abc";
如果你不想test2有密碼,可以再打一個命令將密碼消掉。
grant select,insert,update,delete on mydb.* to test2@localhost identified by "";
我的開發平臺選用了Weblogic Workshop 8.1,服務是用的Weblogic Server, Windows XP Pro SP2平臺。
相關技術站點: http://dev2dev.bea.com.cn/index.jsp
第一次搭建這樣的平臺,開始到網上找了很多的技術文章看了看。由于機器的配置不高。所以還找了一些關于配置Weblogic Server的
文章。
安裝BEA產品的目錄為D:\bea,這樣,Weblogic Wrokshop就在bea目錄下面的Weblogic81文件夾里面。
下面對BEA目錄下的文件及其Weblogic81目錄下面的一些文件夾內容作一個介紹:
BEA_HOME_DIR:
jdk131_xx Sun Java 2 SDK的1.3.1版本,xx指明安裝在機器上的Sun SDK版本。
jrockit xxx. Weglogic JRockit SDK. xxx指明了安裝在機器上的版本。
logs 包含安裝和卸載BEA主目錄的歷史文件。
utils 包含支持安裝所有BEA Weblogic 品臺產品的有用工具。utils.jar包含有支持 UpdateLicense工具的代碼。
user_projects 用戶自己再創建的工程文件就保存在這里。
license.bea 基于XML格式的license文件,含有安裝的所有BEA WEBLOGIC產品的LICENSE鍵值。,增加一個有效(永久 的
)的LICENSE或因附加功能更新LICENSE時,必須使用UPDATELICENSE工具更新LICENSE文件,注意:最好不要
手工編輯這個文件。
registry.xml 注冊文件。包含安裝在目標機器上的所有BEA產品的一致性記錄,是與產品有關的信息。例如版本號、服務
號、和安裝目錄等。
UpdateLicense(.cmd/.sh)
一個命令文件(windows NT/2000)或shell腳本(UNIX),用與通過新LICENSE文件更新目前的LICENSE文件。結
果是一個合并的LICENSE,包含存在的和新的LICENSE兩部分。
Weblogic81:
common Weblogic平臺組件共享的文件,包括一個含有jar文件的摸班目錄,供配置向導在創建域時使用,配置向導
目錄內容并顯示基于jar文件的模版選項。
integration Weblogic Integration程序文件。
javalin 100%的純JAVA編譯器,用于Weblogic平臺中的組件的編譯。
p13n weblogic可移植性個性化文件和庫。
portal weblogic portal程序文件。
samples 例子代碼,資源和預配置的例子域,被設計來用來幫助用戶學習開發自己的應用。
server weblogic server程序文件。
uninstall 卸載weblogic平臺平臺所需要的代碼。
workshop weblogic weorkshop平臺程序和文件。
安裝完后新建一個工程,然后按CTRL+F9鍵來編譯JSP和JAVA文件。然后按F9就可以執行了。當然你也可以直接在瀏覽器里面輸入相應地址
來執行。假如無誤的話瀏覽器應該正常顯示文字。
weblogic為學習者提供了一些例子。用戶執行 bea\weblogic81\samples\domains\workshop 下面的startweblogic.cmd就可以啟動
weblogiic服務器,然后在瀏覽器里面輸入:http://localhost:7001/console/ 就可以進入控制臺來管理了。
控制臺用戶帳號的建立:開始-》程序-》weblogic Platform -》configuration wizard就可以新建一個帳號。
關于console的配置學習以后將陸續有講解,請期待......
附錄:新建一個工程后將在%BEA_HOME%\user_projects\applications\下面新建一個文件夾文件夾名字就是新建的Projects的名字。里面
一共有5個文件夾和兩個文件:
Directorys:
.workshop, APP _INF, Project_nameWeb, MEAT_INF, Schemas
Files:
.beabuild, Project_name.work
其中的Project_name為你新建的Projects的名字。這樣在Project_name下面就是保存的你新建的網站項目的一些文件,如: index.jsp,
然后你在Weblogic Workshop里面在直接編輯他們,寫入代碼。完成你的項目。
測試:
再在Weblogic Workshop里面啟動服務器,當然也可以手動啟動服務器, 在瀏覽器里面輸入:
http://localhost:7001/Projects_nameWeb 就可以測試你編寫得你的網站項目了。
以后將陸續推出一系列的數據庫編程文章,請關注我的Blog.