2006年11月1日
1.10 星期三
? array 數組:數組是一個具有相同類型的數據值得索引集合.
? 數組申明:double[] rainfull; 推薦
?????????? 或
??? double rainfull[];
?
?? 引用數據類型:接口,對象,數組.
?? rainfull = new double[12];
?? 創建一個長度為12的數組,把空間地址賦給rainfull.
?? 數組索引是從0開始(沒特殊要求情況下,索引一般都是從0開始)
?
?? 動態數組--自動增長
?? 數組.length (屬性)
?? String.leng()? (方法)
?? String[] m = {"a","b","c"...}
?? 在申明初始化時,數組的大小設定.
?? int size;
?? int[] number;
?? size = Integer.parseInt(JOptionPane.showMessageLag(null,"size of .."));??
?? number = new int[size];?? (方法也不是很好.因為size不一樣,對象也就不一樣.)
?? 可變型數組?
???
?? 對象數組
?? 數組的類型不是基本數據類型;
?? Person[] person;
?? person = new Person[20];
?? 對象數組每個元素都是一個對象,沒初始化時是null.
?? Person[0] = new Person[]; 創建對象
1.11 星期四
?? JCF--java集合框架
?? Java Collection Framework
?? JCF是什么?
?? 是java語言設計出來的針對底層算法和數據結構的一系列類.
?? 在哪用JCF?
?? 凡是提到數據結構和算法的都可以用JCF
?? 為什么用JCF?
?? 讓程序員的重點放在業務上,而不是如何去寫算法上.
??
?? 接口???????????????? Collection
????????????????????????? |??? |
????????????????????????? |??? |
??????????????????? set----???? ----list?????????????? map
?
?? 實現??????????? HashSet????????? ArrayList????????? SoredMap
?
?? 算法??????????? Collections
?? 以上構成JCF
?
?? list 列表???? map 映射
?? list的重要特征是幫我們管理大量對象
?? ArrayList 數組列表
?? LinkedList (單雙)鏈表 (不是連續的,通過指針連接)
?? ArrayList al = new ArrayList();
?? al.add(1);
?? al.add(4);
?? al.add(2);? 增加
?? ......
?? al.remove;? 刪除
?? System.out.println(al);
?? System.out.println(al.get(3));
?? 排序
?? Collections.sort(al); 小到大
?? Collections.max(al);
?? Collections.min(al);
?? Collections.sort(al,Collection.reverseOrder);? 大到小
?
?? Vector 跟 ArrayList 很相似
?? 向量
?? 如何便利集合
?? Iterator it = al.iterator(); 迭帶器 挨個訪問
?? while(it.hasNext())
?? {
????? System.out.println(al.next);
?? }
?? HashMap 不允許重復
?? TreeMap 自動排序
?
?? treeMap tr = new TreeMap();
?? tr.put(1,1);? (key,value)
?? .......
?? Object[] o = tr.keySet().ToArray();
?? Object[] o = tr.value().ToArray();???????????????
?
?? System.out.println(tr);
?? for(int i = 0;i<o.leng;i++)
?? {
????? System.out.println(0[i]);
?? }
12.25!~12.27
GUI
1 容器,部件
2 事件處理
awt和swing的特點:
awt(抽象窗口工具集)是依賴操作系統的GUI.
能夠顯示出來的組件是不同操作系統的共有組件.(但是不太好看.)
swing(模擬GUI組件)速度比awt要慢的多.
swt(sun公司的,是swing和awt的綜合體)如果swt產生的組件awt有就直接調用, 沒有就模擬出來.這樣既解決了跨平臺的問題,也解決了速度慢的問題.
低層容器:容器是包含其他組件的組件.
JFrame,JApplet,JDialog.?
布局管理器:
標準布局,自由布局.
GUI三個步驟:
1.選擇容器
2.為容器設置布局方式
3.為容器填加組件
導入3個包
import javax.swing.*;
import java.awt.*;
import awt.event.*;
GUI底層容器的實現方式
第一種:
JFrame jf = new JFrame();? //拿一個容器
jf.setLayout(null);???????
JButton jb = new JButton();
jb.setBounds(0,0,20,20);? //絕對布局
jf.add(jb);
this.setSize(200,200);
this.setVisible(true);
第二種:
類 extends JFrame?? //讓自己的類變成容器
申明組件;
public 類
{
?Container ct = this.getContentPane();
?ct.add();
?this.setSize();
?this.setVisible();
}
this.setCursor(new Cursor(Cursor.HAND_CURSOR));? //變手
Image image = new ImageIcon("Sunset.jpg").getImage();
setIconImage(image);//改變圖標
容器,根容器,部件看gui資料? E盤..
布局管理器
FlowLayout 面板(缺省管理器) 流布局管理器
在setLayout(null)下全是FlowLayout
BorderLayout JFrame(缺省布局管理器) 東 西 南 北 中
GridLayout 行列(像表格)
CardLayout 卡片布局管理器(沒有頁簽)
GridBagLayout 格蘭包布局管理器(標準管理器中最靈活的,不好把控)??
FlowLayout 從上到下,從左到右放置.
1.當第一行沒有排滿時,會把第一行排滿再排下一行.
2.不管布局管理器是否改變,組件大小都不會改變.
FlowLayout folw = new FlowLayout (FlowLayout.LEFT);
3.在缺省狀態下從中部開始.
BorderLayout
當東西南北任何一個地區沒放置任何組件時,中部區域會把周圍的區域侵略掉.
setLayout(new BorderLayout());
組件會隨著容器大小的變化而變化.
add("North",組件); 不好用
add(組件,BorderLayout.NORTH); 清晰
GridLayout
組件會隨著容器大小的變化而變化.
setLayout(new GridLayout(3,2));? 行列
add(new Button("first",0));
根據序列依次填進去,只有列滿了才去填行.
validate();? 讓容器刷新
GardLayout
GardLayout card = new GardLayout();
setLayout(card);
add("1",new Button(""));
CardLayout cl = (CardLayout)cardLayout.getLayout;
cl.show(cardLayout,"card1");
事件
class 類 extends JFrame implements(實現) ActionListener(接口)
{????????????????????? (受托事件處理)
?????????????????????? 不同的事件不同的部門處理
}
1 讓類變成監聽者
2 賦予多少職責就實現多少
3 建立部件與監聽者的關系
jb.addActionListener(this);
?
CardLayout cl = (CardLayout)card.getLayout();
String s = e.getActionCommed();
if(s.equals("上一步"))
{
?cl.show(card,"card2");
?????? ?或者
??????? cl.previous(card);
?button.setEnabled(false);
}
else if(s.equals("下一步"))
{
?cl.show(card,"card1");
?????? ?或者
??????? cl.previous(card);
?button.setEnabled(false);
}
?
?
?
?
?
?
?
?
?
2.19 星期二
? 在方法里面申明的屬性必須初始化.(局部變量)
? 在類里面申明的屬性不用初始化.(全局變量)
? 如果一個方法有返回值,那么方法里必須加上return.返回類型沒有void.
? 構造器就是類的構造方法.
? 構造方法的基本特點:
? 方法名和類名一致,方法名沒有返回類型.
? 構造方法的特性:
? 1.每個類一定會有一個不帶參數的默認構造方法.
? 2.如果一個類定義了一個帶參數的構造方法,那么不帶參數的構造方法就會被洗刷掉.
? 3.構造方法可以重載.(如一個帶參數的和一個帶參數的)
? 一個類的方法同名叫做方法重載.
? 4.構造方法是不能被繼承的.
?
? 實例變量:在類里面任何一個方法外面的變量.每個對象都有屬于自己實例變量的拷貝.
? public private這個我們稱之為"可見性修飾符".它來指定數據成員和方法的訪問能力和訪問級別.
? 如果這個方法的行為是改變對象的屬性,設置對象屬性的值,那么這個方法稱之為"修改器".
? public void setHeight(float h, float w)
? {
???? height = h;
???? weight = w;
? }?
? 如果這個方法只是返回對象屬性,那么我們稱這個方法為"訪問器".
? public void abc()
? {
???? return a;
? }
12.20 星期三
? static int i;是類變量
? 缺省修飾符:本包的都可以訪問.
? 公共修飾符(public):任何地方都可以訪問.
? if()
? 語句1;
? else
? 語句2;
?
? ?? :?????? if else的工程用法(三目運算符)
?
? switch的條件語句只能是整數
? equals方法是被重寫過的.
?
? equals跟==的區別:
? equals比較的是內存空間的內容是否相同
? == 比較的是兩個對象的地址是否相同
12.21 星期四
properties
?
import java.io.*;
import java.util.Properties;
class P
{
?Properties pro;
?
?public P()
?{
??pro = new Properties();
?}
?
?public void load(String fileName)
?{
??try
??{
???pro.load(new FileInputStream(fileName));加載
??}
??catch(IOException e)
??{
???e.printStackTrace();
??}
?}
?
?public void getP(String key)
?{
??System.out.println(pro.getProperty(key));讀取
?}
?
?public void setP(String key,String value)
?{
??pro.setProperty(key,value);設置(在內存里)
?}
?
?public void storeP(String fileName,String Info)
?{
??try
??{
???pro.store(new FileOutputStream(fileName),Info);保存(在文件)
??}
??catch(IOException e)
??{
???e.printStackTrace();
??}
?}
?
}
普通文件? 后綴.peoperties
(柔性軟件開發)目的:可以讓程序變的靈活,配置變的輕巧。
循環語句
while循環:循環次數未知使用。
for 循環:已知循環次數使用。
do-while循環
?
?
java基礎
static是靜態。
靜態方法不能訪問非靜態成員。
非靜態方法可以訪問靜態成員。
int i = 3;
public static void main(String[] args)?
{?
?System.out.println(i);
}
這個就會報錯。因為靜態方法不能訪問非靜態成員??!
?static int i = 3;
?public static void main(String[] args)
?{
??nbn n = new nbn();
??n.abc();
?}
?
?public void abc()
?{
??System.out.println(i);
?}
這個就不會報錯。因為非靜態方法可以訪問靜態成員。
?
public(訪問修飾符)static(訪問修飾符)void(返回類型) main(方法名)(String[] args)(參數表){}
import javax.swing.*;
import java.text.SimpleDateFormat;
class jframe
{
?public static void main(String[] args)
?{
??JFrame jf = new JFrame();//窗口
??
??SimpleDateFormat sf = new SimpleDateFormat("yyyy-mm-dd");//時間格式
??java.util.Date da = new java.util.Date();//顯示時間的對象申明
??
??
??jf.setTitle("w.a.n");//設置標題
??jf.setSize(300,300);//設置窗體大小
??jf.setVisible(true);//顯示
??JOptionPane.showMessageDialog(jf(位置),"hello");//彈出窗口顯示HELLO
??String a = JOptionPane.showInputDialog(null,"can you see?");//輸入窗口,窗口提示為can you see
??
??JOptionPane.showMessageDialog跟JOptionPane.showInputDialog還有一種參數寫法。
??JOptionPane.showMessageDialog(null," "(顯示信息)," "(標題信息),JOptionPane.INFORMATION_MESSAGE);
??System.out.println(sf.format(da.getTime())); //輸出年月日。用SimpleDateFormat
??
?}
}
三種注釋
/**
?*文檔註釋,寫在開頭 ( 注明程序的功能,以及相關信息)
?*功能:
?*作者:
?*版本:
?*開發日期:
?**/
/*
? *多行註釋
?
*///單行註釋
import javax.swing.JOptionPane;
class Area
{
?final private static double PI = 3.1415;? //常量的申明:final
?private String r;
?private double rr;
?private double s;
?
?
?public static void main(String[] args)
?{
??Area a = new Area();
??a.Input();
??a.Areas();
?}
?
?public void Input()
?{
??r? = JOptionPane.showInputDialog(null,"請輸入圓半徑");
?}
?
?public void Areas()
?{??
??rr = Double.parseDouble(r);//類型轉換?
??s? = rr*rr*PI;
??JOptionPane.showMessageDialog(null,"圓面積是:"+s);
?}
}
類型轉換
String轉double
xx = Double.parseDouble(要轉換的數據名字);
String轉int
xx = Integer.parseInt(要轉換的數據名字);
int轉String
String s = String.valueOf(12);
或
String s = new Integer(10).toString();
注意??!
float f = 2.33 是錯的。因為2.33默認類型是double.
改正:float f = 2.33 F;
還要注意
高內聚,松耦合。
函數分解。
這樣代碼看起來會很清爽。
import java.text.DecimalFormat;
class Dformat
{
?public static void main(String[] args)
?{
??DecimalFormat df = new DecimalFormat("0");//格式0后面幾個小數點表示保留幾位小數
??System.out.println(df.format(66.6666)+"%");//這樣66.666就是67%
?}
}
標準輸出
System.out.print("");//加ln是換行
標準輸入
System.out.println(System.in.read());//這個方法用來讀取阿科斯碼
System.out.println((char)System.in.read());//這個方法是強制轉換,只能讀取一個字符
import java.io.*;//用BufferedReader 要引用io包
class c
{?
?public static void main(String[] args)throws Exception //要拋異常
?{
?BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
?String s = br.readLine();
?System.out.println(s);
?}
}
?要導入util包,util是工具包.
?Scanner sc = new Scanner(System.in);
?int s = sc.nextInt();
?int s1 = sc.nextInt();
?System.out.println(s*s1);//用Scanner可以省去判斷的步驟 在jdk1.5以下的版本不能用
GregorianCalendar calendar = new GregorianCalendar(year,month,day);
int d = calendar.get(Calendar.DAY_OF_WEEK);//今天是一周內的哪一天
?
?
?
?
?
?
?
?
?
?
?
將HTML和JS文件分離的好處.<script type="text/javascript" src="";
1.分離的話易于維護和管理.
2.可重用.
javascript的作用是:1實現客戶端與網頁的交互(人機交互)
?????????????????????????????? 2客戶端驗證
window的2個"兒子":document?和? history
window有3個主要的.alert(提示框),open(新開一個窗口),prompt(對話框)
還有window.location.href="";實現頁面跳轉
window.status="";(狀態條下寫字).
window.history.back();(返回)
window.history.forward();(前進)
window.history.go(2);(前進2步)
window.history.go(-2);(退后2步)
事件
onclick單擊 ondblclick雙擊
onfocus 聚焦 onblur 失焦
onselect 選擇事件
window.setTimeout("函數",時間)? (定時器)
onmouseover 鼠標放上去
onmouseout 鼠標離開
下拉列表:onchange
onload 寫在<body>里 登陸發生的事件
onunload 寫在<body>里? 離開發生的事件
獲取表單對象
document.formTest(表單名);
document.forms[0];
document.forms["表單名"];
document.getElementById("formId");
do while和 while?的區別.??
do while? 是先執行再判斷
while?? 是先判斷再執行
--i;?? 減之前的值
i--;?????? 減之后的值??? ?i的值會變
i = i - 1;???????????????????????? i的值會變
i - 1;?? i沒有變
var i;
/*for(i = 0;i<10;i++)? //;分段?? 初始化;循環條件;步進
{
?document.write(i+"<br />");
}*/
/*for(i = 0;i<20;i++)
{
?if(i == 16)
?{
??break;?
?}
?document.write(i+" ");
}*/
/*for(i = 0;i<20;i++)
{
?if(i%2 == 1)
?{
??continue;
?}
?document.write(i+" ");
}*/
/*var i = 1;
var j = 1;
for(i = 1;i<10;i++)
{
?for(j = 1;j<=i;j++)
?{
??document.write(i+"*"+j+"="+i*j);
??document.write("    ")
?}
?document.write("<br />")
}*/
/*var i = 1;
var j = 1;
?
for(i = 1;i<10;i++)
{?
?for(j = 1;j<10;j++)
?{
??document.write(i+"*"+j+"="+i*j);
??document.write("    ")
?}
?document.write("<br />")
}*/
/*
while(true)? //死循環
{
?alert("fdfd");
}
alert("end");*/
var i = 20;
while(i>5010)
{
?document.write(i);
?i=i-1;
}
//alert("end");
/*var i = 0;
while(i<100)
{
?document.write(i+" ");
?if(i%10 == 9)
?{
??document.write("<br /><br />");
?}
?i++;
}*/
<script>
?var b = "hello";
?</script>
<script>
alert (b);
</script>
這個hello能打出來嗎?這是今天黃Sir上課問的問題.好多人沒反映過來.我也算一個吧.
答案是能打出來.*因為寫在不同塊的變量可以相互引用..!!
邏輯運算符
&&與.就是數學上的且!
||或.
!非.
在與里面,只要有1個是false,那結果就是false.
在或里面,只要有個是true,那結果就是ture.
非.如果是true那么它的非就是false,反之亦是.
如果是數字,記住只有0是false.只要是非0就都是true.
switch(day = 1)? //switch只能表示等或者不等的映射關系
?{
??case day = 1:
??{
???alert("monday");
??}break;????? //如果不加break會繼續往下執行,并且忽略后來的比對,直到遇到下一個break.
??case day = 2:
??{
???alert("tuesday");
??}break;??
??case day = 3:
??{
???alert("wednesday");
??}break;
??case day = 4:
??{
???alert("thursday");
??}break;
??case day = 5:
??{?
???alert("friday");
??}break;
??case day = 6:
??{
???alert("saturday");
??}break;
??case day = 7:
??{
???alert("sunday");
??}break;
??default:
??{
???alert("error");
??}break; //最后1個可加可不加,但是加上比較嚴謹。
}
var score = 99;
if(score>=90) //表示范圍
{
?alert("so cool");
}
else if(score>=80)
{
?alert("good");?
}
else if(score>=70)
{
?alert("so-so")
}
else if(score>=60)
{
?("pass");
}
else
{
?alert("not pass");
}
???(首先,今天是我的跟兒生日.跟跟,你的跟祝你生日快樂!~)
???進入正題....
???javascript是一種腳本語言.腳本語言的意思就是它生成的文件不能獨立運行,必須依賴于一種平臺.比如javascript就必須要用IE才能打開.而像java或者c語言,它們由代碼生成文件就可以獨立運行.
?? javascript是一種弱類型語言.它不像java,c這些強類型的語言.強類型和弱類型語言的區別就在于.在申明一個變量的時候,強類型語言必須把變量類型也指定好. int i =0;而且一旦指定好類型,就不能再改變.而javascript作為一種弱類型的語言,它在申明變量的時候就不需要指定變量類型.切數據類型是自動轉換的.
???如var a = 0;這個時候a這個變量的數據類型就是整形.a = "hello"這個時候a的變量類型就變成了字符型.
???javascript可以使用<script>嵌入進html里,也可以通過添加事件,或者用偽URL javascript..
???alert();可以在()內寫函數,數字,或者字符串.字符串必須用""括起來.它的效果就是彈出一個窗口.
????var f = true;
?? alert(typeof(f));? //返回數據類型
???
???函數:function functionName()?? //定義,申明
???{
????alert("Welcome to Lovo");
???}
?? functionName();?? //調用,使用
???function abc(o)? //o是形式參數
?? {
?? ?alert(o);
?? }
??// o = "hello";
?? abc("hello");? //"hello"是實際參數
??
?? function a(i,o)
?? {
?? ?alert(i+o)
?? }
?? a(5,9);
???這個的結果是14.很簡單,就是2個數字相加.
???
?? function a(i,o)
?? {
?? ?alert(i+o)
?? }
?? a("500",9);
???這個呢?是5009.這個因為500打了"",所以它就變成了字符串相加.
??? function b(i,o)
?? {
?? ?var w;
???w = i + o;
???alert(w);
???return w;? //程序到return就自動跳出
???}
??b(1,3);
???之前我犯了個錯誤,我把?alert(w);寫在了??return w;?之后..我就奇怪為什么W的值打不出來...好白癡,因為函數return w;的時候就直接跳出了.就不會接續執行函數里面??return w;?后面的語句了.?
? function b(i,o)
?? {
?? ?var w;
???w = i + o;
???return w;?
???}
?????
??? function c()
??? {
??? ?var result;
???result = b(3,3);
???alert(result);
??? }
?? c();
???這個是函數c調用函數b,函數b里面有個返回值,它把需要的結果返回給它的調用者.
???(哎..終于還是降級了..只能從HTML重新學過了..哎..學習終究是不能騙自己的..好好學習吧!~~...)
???HTML我是用TopStyle來寫.CSS是2.0..(我知道是廢話...)
???要在HTML里面寫個button or test就很簡單了..
???就是在<head>里寫 <form action="#"(這個表示發到哪里.."#"表示提交到當前頁面) method="post" (這個是發送方法,一共有2種.一種是GET.這個方法相對比較不安全.因為它會把你提交的信息以一個"?"打頭粘到URL后面第2種就是POST.這個就比較安全了.你所提交的東西是在URL上是看不到的)>
???然后<input type="button"(這如果填TEST就是TEST了) id="bt1" name="bt1"(ID跟NAME最好都寫上,這個是好習慣,在以后會很有用.ID跟NAME可以不一樣) value="登錄"(這個就是你BUTTON上顯示的字.)>
相同..<input type="text" id="te2" name="te2">...
???如果要想寫個單選框或者復選框.
?? <input type="checkbox"(CHECKBOX就是復選框) id="cb1" name="cb1">記住我(表示你復選框后面跟的字).怎么樣讓你的這個復選框為默認呢?就在<input>里添上一個checked="checked".如果不能選就添上一個disabled="disabled".
???接下來是單選框.其他的都跟復選框一樣,唯一不同的就是.在type=""填"radio".
???除此之外,還有password(跟TEST有點像,不同的是輸入信息是以星星的形式) submit(跟button,reset是一組.按了submit整個表單都提交了) reset(重置) file(上傳文件) image(圖片 后跟src=""選擇URL)
????選擇框.
???<select>
???<option value="sh">上海</option>
???<option value="sh">成都</option>
???<option value="sh">廣州</option>
???</select>
?? 也可以<select size="5"(表示同時有幾個被選項可以在不拉滾動條的情況下直接選擇) multiple="multiple"(可以多選 在按中SHIFT的情況下)>
??? 多行輸入的文本框????
???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????? <textarea cols="10" rows="10"(設置長寬不用說了.)></textarea>
??? 最后1個是一個框框把你想框的內容全部框住,并且可以取個標題.
??? <fieldset>
??????<legend>dsada</legend>
????</fieldset>
??? <fieldset>?</fieldset>這個標簽中間放你想被框的內容.<legend></legend>這個標簽中間寫標題名.
???
??? CSS我簡單說一下.CSS是樣式層疊表..它確實是層疊的.關于盒式模型的布局屬性一共有三種. margin: border:? padding: .margin: 是調整邊框和邊框的距離.border:是調整邊框的厚度.padding:是調整邊框跟內容之間的距離.
???? 以下是我用CSS以及HTML寫的一個網頁的代碼.
??????<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "
<html>
?<head>
??<!-- Created by TopStyle Pro Trial Version - www.bradsoft.com -->
??<title>用戶注冊</title>?
??<style>
??#a,#b,#d,#e,#i,#j
??{
??? ?padding:;
???padding-left: 208px;
??}
??
??#c
??{
???padding: 30px;
???padding-left: 208px;
??}
??
??#f
??{
???padding:;
???padding-left: 193px;
??}
??
??#h
??{
???padding:;
???padding-left: 193px;
??}
??
??#g
??{
???padding:;
???padding-left: 224px;
??}
??
??? #f2
??{
??? ?margin:;
???margin-bottom: 29px;
???margin-left: 31px;
???margin-right: 43px;
??}
??
??? #f3
??{
??? ?margin:;
???margin-bottom: 29px;
???margin-left: 31px;
???margin-right: 43px;
??}
??
??#bt1
??{
???margin:;
???margin-left: 36px;
??}
??
??#cb1
??{
???margin:;
???margin-left: 30px;
??}
??
??/*#f4
??{
??
???? margin:;
???margin-right: 778px;
??}*/
??
??#f5
??{
???margin:;
???margin-right: 778px;
??}
??</style>
?
?</head>
?<body>
??<form action="#" method="post">
???<fieldset id="f1">
???<h2>已注冊用戶登錄</h2>
???<fieldset id="f2">
????<legend >
?????<h3 >登錄用戶</h3 >
????</legend>
????
????<p id="a" >用戶名
?????<input type="text" id="te1" name="te1">
????</p>
????<p id="b">密  碼
?????<input type="text" id="te2" name="te2">
????</p>
????
????<p id="c">
?????<input type="checkbox" id="cb1" name="cb1">記住我
?????<input type="button" id="bt1" name="bt1" value="登錄">
????</p>
????</fieldset>
???<h2>未注冊創建帳戶</h2>
????<fieldset id="f3">
?????<legend >
??????<h3><fieldset id="f5">用戶注冊</fieldset></h3>?
?????</legend>
?????
?????<p id="d">
??????<h4>您的電子郵箱不會被公布出去,但是必須填寫.</h4>在您注冊之前請先認真閱讀服務條款
?????</p>
?????
?????<p id="e">用戶名
??????<input type="text" id="te3" name="te3">*(最多30個字符)
?????</p>
?????<p id="f">電子郵箱
??????<input type="text" id="te4" name="te4">*
?????</p>
?????
?????<p id="g">密碼
??????<input type="text" id="te5" name="te5">*(最多15個字符)
?????</p>
?????<p id="h">重復密碼
??????<input type="text" id="te6" name="te6">*
?????</p>
?????<p id="i">同意服務條款
??????<input type="checkbox" id="cb2" name="cb2">先看看條款?*
?????</p>
?????<p id="j">
??????<input type="submit" id="bt2" name="bt2" value="提交">
??????<input type="reset" id="bt3" name="bt3" value="重置">
?????</p>
?????
?????<h3>*在提交您的注冊信息時,我們認為您已經同意了我們的服務條款</h3>
?????<h3>*這些條款可能在未經您同意的時候進行修改</h3>
???
???</fieldset>
??</form>
?</body>
</html>
? 以上便是我的總結!
??????數據規范化???
??????第一范式
??????1.每一行的每一列必須只有一個值.
??????2.每一行的列相同.
??????3.所有行必須唯一.
??????第二范式
??????1.遵守所有第一范式的規則.
??????2.所有非主鍵列必須依賴主鍵列.
??????第三范式
??????1.遵守所有第二范式的規則.
??????2.所有非主鍵列必須依賴主鍵列,并且必須相互獨立.
??????關系型數據庫的關系
??????一對一關系.
??????一對多關系.
??????多對多關系.
??????其中一對一關系主要因為1.敏感信息.2.列太多.3.提高性能.
??????多對多關系是不存在的,一般中間都會加個連接表.
??????創建數據模型
??????邏輯型模型
??????物理型模型
??????邏輯型模型是抽象的考慮數據存儲,并且嚴格遵守范式規則和關系模型.物理型模型是提供的數據庫如何在RDBMS實現的表現.所以,邏輯型模型與數據庫如何實現無關,而物理型模型就是一個特定的實現.
??????數據型模型是創建表,定義列,以及設置表間關系的藍圖.它必須實現:
??????1.組成數據庫的表
??????2.組成每個表的列.
??????3.列的數據類型.
??????4.標識每一行的主鍵.
??????5.標明表間的關系.
??????創建數據模型的4個步驟:
??????1.識別實體??
??????2.規范化數據
??????3.識別關系
??????4.改進數據模型
??????數據庫就是一系列有一定關系的數據的集合.(某種方式相關的數據的集合).在數據庫中,數據的描述必須? 是以一定的格式被組織或者分類.這種格式叫做元數據(metadata)
??????常見的數據模型有3種.
??????層次模型
????? 層次模型就好象是一棵倒掛的樹.數據是以父類子類的形式存在.每個父類可以有多個子類,但是每個子類只能有1個父類.其形狀跟WINDOWS資源管理器一樣.其缺點就是
過于呆板,導航非常的麻煩.
????? 網狀模型
??????網絡型相比層次模型提供了更多的可伸縮性.他允許有多個父子關系.他的缺點是如果數據庫變動,或者程序變動,那就會引起更多的變動.
??????關系模型
????? 這個較上兩個,可伸縮性就更強.他對于應用程序是獨立的.就是說如果應用程序有改動,但是數據庫卻可以不變.
??????數據庫管理系統(DBNS)他的功能基本上是:
??????管理存儲
??????維護安全
??????維護元數據
??????管理事務
??????支持連接性
??????優化性能
??????提供備份和恢復機智
??????處理數據反饋和更改的請求
????? 一個關系型數據庫(RDBNS)分成兩個主要組成部分.
????? 數據庫引擎
??????數據
??????關系型數據庫分兩種類型.
??????本地數據管理系統
??????數據庫服務器管理系統
??????SQL是機構化查詢語言的英文縮寫.它是一門非過程的語言.它是實現必須要有一個宿主語言.它本身是一種沒有多少基本編程能力的次語言.
??????SQL語句分為三種.
??????DDL.數據定義語句.
??????DML.數據操作語言.
??????DCL數據控制語言.
??????DDL執行的任務是:創建刪除數據庫;創建,修改,重命名,刪除表;創建刪除索引.
??????DML執行的任務是:SQL查詢;將數據插入一個表中;更改表中已有數據;刪除表中數據.
??????DCL執行的任務是:給用戶授予訪問權限;取消用戶訪問權限.
??????Oracle的體系結構
????? Oracle主要由數據庫引擎和數據庫結構兩部分組成.
??????數據庫引擎又分為數據全局區(SGA)和后臺處理程序兩部分.