??xml version="1.0" encoding="utf-8" standalone="yes"?>一本一道久久a久久精品综合蜜臀 一本一道久久a久久精品蜜桃 ,超碰中文在线,在线观看国产麻豆http://www.aygfsteel.com/dreamzqy29/zh-cnSat, 17 May 2025 15:06:18 GMTSat, 17 May 2025 15:06:18 GMT60javascript 面向对象Ҏ(gu)与~程实现http://www.aygfsteel.com/dreamzqy29/archive/2007/06/17/124819.html黑夜ちつ独行?/dc:creator>黑夜ちつ独行?/author>Sun, 17 Jun 2007 09:31:00 GMThttp://www.aygfsteel.com/dreamzqy29/archive/2007/06/17/124819.htmlhttp://www.aygfsteel.com/dreamzqy29/comments/124819.htmlhttp://www.aygfsteel.com/dreamzqy29/archive/2007/06/17/124819.html#Feedback0http://www.aygfsteel.com/dreamzqy29/comments/commentRss/124819.htmlhttp://www.aygfsteel.com/dreamzqy29/services/trackbacks/124819.html1.       javascript 中的函数

javascript ?function 对象在调用过E中h一?arguments 属性,它是p本解释器创徏的,q也是创?arguments 唯一途径?Arguments 对象可以看作是一?Array 对象Q它h length 属性,可以通过序号讉K每一个参数?Arguments 有个 callee 属性,可以获取到执行的 function 对象的引用?

eg Q?

funtion f1 Q?n Q?

{

       if(n<=0)

{

       return 1;

}else

{

       return n*arguments.callee(n-1);// 实际?return n*f1(n-1);

}

上例利用 callee 属性实C(jin)匿名的递归调用?

 

2.       apply ?call Ҏ(gu)Q?

apply Ҏ(gu)?call Ҏ(gu)有Şg处,两者都函数绑定到其他对象上执行?

举例Q?

obj1.fun1.apply(obj2,[“test”]);

含义Q是?obj1 对象的方?fun1 l定?对象 obj2 上,q用参?test ?

obj1.fun1.call(obj2,“test”);

含义同上Q他们区别是?apply 参数?array 对象传入。?call 是依ơ传入参数的?

 

3.       this ?with

this 在对象的Ҏ(gu)被调用时候,指代调用该方法的对象实例?

使用 with 语句Ӟ代码变得更加短且易读Q?

没有?with 之前

x = obj.fun1(“a”);

y = obj.fun2(“b”);

?with 之后Q就变成Q?

with(obj)

{

x=fun1(“a”);

y=fun2(“b”);

}

4.       for in

?javascript 中可以?for in 语句遍历对象中所有属性和Ҏ(gu)。例如下面的代码遍历了(jin) test1 对象的属性和Ҏ(gu)Q如果是属性则输出属性|如果是方法则执行Ҏ(gu)?

 

for(p in t)

{

       if(typeof(t[p])==”function”)

       {

              t[p]();

       }else

       {

              alert(t[p]);

       }

}

 

二?javascript 面向对象~程实现

 

       Ҏ(gu) java 中面向对象编E中l承Q以?qing)封装,多态等常见概念Q进行ȝ?

1.       cȝ声明

首先来看下类的实玎ͼ前面已经使用?jin)一U声明类的方法?

 

function test1()

{

       this.prop1 = “prop1”;

       this.prop2 =”prop2”;

       this.fun1 = function()

{

       ……

}

}

 

上面代码声明?jin)两个公有属性,和一个方法。大安知道c里除了(jin)公有成员q可能还有一些私有成员变量,但是 javascript q没有提供相应的机制来定义私有成员变量,不过利用一?javascript 的小技巧就可以实现U有成员变量。如下:(x)

function test1 ()

{

       var prop3 = “test”;

       this.prop1 = “prop1”;

       this.prop2 =”prop2”;

       this.fun1 = function()

{

       ……

}

}

 

上面代码通过 var 关键字声明了(jin)一个局部变?prop3 Q其作用域是 test1 cd义的内部Q这样就实现?jin)变量私有化?

       另外?javascript 中可以通过下面的方式声明静(rn)态属性和?rn)态方法?

       < script LANGUAGE =" JavaScript " >

    function test ( n )

    {

       

    }

    test . staticProp = " static prop test!" ;

    test . staticMechod = function ()

    {

        alert ( "adfadfd" );

    }

   

    alert ( test . staticProp );

    test . staticMechod ();

 

</ script >

实际上没有感觉到 javascript 中静(rn)态的必要性(不像 java Q,也许是我对书本理解的不够Q或者是应用太少。如果有读者朋友,有不同认识,Ƣ迎发表看法Q大家交?

 

如果要声明一个类的实例属性或Ҏ(gu)Q可以?javascript 中对象的 prototype 属性。例如:(x)

test1.prototype.prop1 = “prop1”;

test1.prototype.method1 = function(){}

利用 prototype 属性,可以实现另外一U类的声明方式:(x)

< script LANGUAGE =" JavaScript " >

    function test ()

    {}

        test . prototype =

        {

            p1 : "p1" ,

            p2 : "p2" ,

            f1 : function ()

            {

                alert ( "f1" );

            }

        }

        var te = new test ();

        te . f1 ();

</ script >

上面使用 {} 的方式声明了(jin)一个匿名对象,大括号内用逗号属性与值的列表分隔开。可以看刎ͼ采用 prototype 的方式声明类Q代码更加简z明?jin)。因此这U方式在很多 AJAX 框架中得到广泛应用?

 

2.       l承

javascript 本nq没有提供承,那么如何实现cȝl承呢?最直接大方法是复制原方法,然后在里面加入新成员。但q样做实在是落后Q因为当原类变化Q新l承的类q要手动变化Q容易出错。而下面这U用 for in 控制的复制就不那么容易出错了(jin)?

 

function test1()

{

       for(p in test.prototype)

       {

              test1.prototype[p] = test.prototype[p];

       }

       test1.prototype.newmethod = function()

{

           alert(“newfunction”);

}

}

 

3.       多?

多态的是实现可以采用和l承cM的方法。首先定义一个抽象类Q其中可以调用一些虚Ҏ(gu)Q虚Ҏ(gu)在抽象类中没有定义,而是通过其具体实现类来实现的?

 

< script LANGUAGE =" JavaScript " >

    // 一个承方?

    Object . extend = function ( destination , source )

    {

        for ( pro in source )

        {

            destination [ pro ] = source [ pro ];

        }

        return destination ;

    }

    // 一个基c?

   

    function base (){}

    base . prototype =

    {

        f1 : function ()

        {

            this . oninit ();

        }

    }

    // 扩展1

    function test1 ()

    {

       

    }

    test1 . prototype = Object . extend (

    {

        prop : "prop" ,

        oninit : function ()

        {

            alert ( this . prop );

        }

    }, base . prototype );

    // 扩展2

    function test2 ()

    {

       

    }

    test2 . prototype = Object . extend (

    {

        prop2 : "prop2" ,

        oninit : function ()

        {

            alert ( this . prop2 );

        }

    }, base . prototype );

   

    // 试

    var t1 = new test1 ();

    t1 . f1 ();

    var t2 = new test2 ();

    t2 . f1 ();

   

</ script >

 



]]>
设计模式http://www.aygfsteel.com/dreamzqy29/archive/2007/03/28/106913.html黑夜ちつ独行?/dc:creator>黑夜ちつ独行?/author>Wed, 28 Mar 2007 04:02:00 GMThttp://www.aygfsteel.com/dreamzqy29/archive/2007/03/28/106913.htmlhttp://www.aygfsteel.com/dreamzqy29/comments/106913.htmlhttp://www.aygfsteel.com/dreamzqy29/archive/2007/03/28/106913.html#Feedback0http://www.aygfsteel.com/dreamzqy29/comments/commentRss/106913.htmlhttp://www.aygfsteel.com/dreamzqy29/services/trackbacks/106913.html工厂模式Q?br /> 客户cd工厂cd开。消费者Q何时候需要某U品,只需向工厂请求即可。消费者无M改就可以接纳C品。缺Ҏ(gu)当品修Ҏ(gu)Q工厂类也要做相应的修改。如Q如何创建及(qing)如何向客L(fng)提供?/p>


建造模式:(x)
 品的内部表象和品的生成q程分割开来,从而一个徏造过E生成具有不同的内部表象的品对象。徏造模式得品内部表象可以独立的变化Q客户不必知道品内部组成的l节。徏造模式可以强制实行一U分步骤q行的徏造过E?


工厂Ҏ(gu)模式Q?br /> 核心(j)工厂cM再负责所有品的创徏Q而是具体创建的工作交给子类dQ成Z个抽象工厂角Ԍ仅负责给出具体工厂类必须实现的接口,而不接触哪一个品类应当被实例化q种l节?/p>


原始模型模式Q?br /> 通过l出一个原型对象来指明所要创建的对象的类型,然后用复制这个原型对象的Ҏ(gu)创徏出更多同cd的对象。原始模型模式允许动态的增加或减品类Q品类不需要非得有M事先定的等U结构,原始模型模式适用于Q何的{l构。缺Ҏ(gu)每一个类都必配备一个克隆方法? 


单例模式Q?br /> 单例模式保某一个类只有一个实例,而且自行实例化ƈ向整个系l提供这个实例单例模式。单例模式只应在有真正的“单一实例”的需求时才可使用?/p>


适配器(变压器)(j)模式Q?br /> 把一个类的接口变换成客户端所期待的另一U接口,从而原本因接口原因不匚w而无法一起工作的两个c能够一起工作。适配cd以根据参数返q一个合适的实例l客L(fng)? 


桥梁模式Q?br /> 抽象化与实现化p,使得二者可以独立的变化Q也是说将他们之间的强兌变成弱关联,也就是指在一个Y件系l的抽象化和实现化之间用组?聚合关系而不是承关p,从而两者可以独立的变化?/p>


合成模式Q?br /> 合成模式对象组l到?wi)结构中Q可以用来描q整体与部分的关pR合成模式就是一个处理对象的?wi)结构的模式。合成模式把部分与整体的关系用树(wi)l构表示出来。合成模式得客L(fng)把一个个单独的成分对象和׃们复合而成的合成对象同{看待?/p>


装饰模式Q装饰模式以对客L(fng)透明的方式扩展对象的功能Q是l承关系的一个替代方案,提供比承更多的灉|性。动态给一个对象增加功能,q些功能可以再动态的撤消。增加由一些基本功能的排列l合而生的非常大量的功能?


门面模式Q外部与一个子pȝ的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系l更易于使用。每一个子pȝ只有一个门面类Q而且此门面类只有一个实例,也就是说它是一个单例模式。但整个pȝ可以有多个门面类? 

享元模式Q?br /> FLYWEIGHT在拳?yn)L赛中指最轻量U。n元模式以׃n的方式高效的支持大量的细_度对象。n元模式能做到׃n的关键是区分内蕴状态和外蕴状态。内蕴状态存储在享元内部Q不?x)随环境的改变而有所不同。外蕴状态是随环境的改变而改变的。外蕴状态不能媄(jing)响内蕴状态,它们是相互独立的。将可以׃n的状态和不可以共享的状态从常规cM区分开来,不可以׃n的状态从c里剔除出去。客L(fng)不可以直接创׃n的对象,而应当用一个工厂对象负责创׃n的对象。n元模式大q度的降低内存中对象的数量?/p>

代理模式Q?br /> 代理模式l某一个对象提供一个代理对象,q由代理对象控制Ҏ(gu)对象的引用。代理就是一个h或一个机构代表另一个h或者一个机构采取行动。某些情况下Q客户不x者不能够直接引用一个对象,代理对象可以在客户和目标对象直接起到中介的作用。客L(fng)分L不出代理主题对象与真实主题对象。代理模式可以ƈ不知道真正的被代理对象,而仅仅持有一个被代理对象的接口,q时候代理对象不能够创徏被代理对象,被代理对象必Lpȝ的其他角色代为创建ƈ传入?


责Q链模式:(x)
 在责任链模式中,很多对象由每一个对象对其下家的引用而接   h形成一条链。请求在q个链上传递,直到链上的某一个对象决定处理此h。客户ƈ不知道链上的哪一个对象最l处理这个请求,pȝ可以在不影响客户端的情况下动态的重新l织铑֒分配责Q。处理者有两个选择Q承担责L者把责Q推给下家。一个请求可以最l不被Q何接收端对象所接受?/p>


命o(h)模式Q?br /> 命o(h)模式把一个请求或者操作封装到一个对象中。命令模式把发出命o(h)的责d执行命o(h)的责d割开Q委z不同的对象。命令模式允许请求的一方和发送的一方独立开来,使得h的一方不必知道接收请求的一方的接口Q更不必知道h是怎么被接Ӟ以及(qing)操作是否执行Q何时被执行以及(qing)是怎么被执行的。系l支持命令的撤消? 


解释器模式:(x)
 l定一个语a后,解释器模式可以定义出其文法的一U表C,q同时提供一个解释器。客L(fng)可以使用q个解释器来解释q个语言中的句子。解释器模式描q怎样在有?jin)一个简单的文法后,使用模式设计解释q些语句。在解释器模式里面提到的语言是指M解释器对象能够解释的Ml合。在解释器模式中需要定义一个代表文法的命o(h)cȝ{l构Q也是一pd的组合规则。每一个命令对象都有一个解释方法,代表对命令对象的解释。命令对象的{l构中的对象的Q何排列组合都是一个语a? 


q代子模式:(x)
 q代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。多个对象聚在一起Ş成的MUC集,聚集对象是能够包容一l对象的容器对象。P代子模式P代逻辑装C个独立的子对象中Q从而与聚集本n隔开。P代子模式化了(jin)聚集的界面。每一个聚集对象都可以有一个或一个以上的q代子对象,每一个P代子的P代状态可以是彼此独立的。P代算法可以独立于聚集角色变化?

调停者模式:(x)
 调停者模式包装了(jin)一pd对象怺作用的方式,使得q些对象不必怺明显作用。从而他们可以松散偶合。当某些对象之间的作用发生改变时Q不?x)立卛_(jing)响其他的一些对象之间的作用。保证这些作用可以彼此独立的变化。调停者模式将多对多的怺作用转化Z对多的相互作用。调停者模式将对象的行为和协作抽象化,把对象在尺度的行ؓ(f)上与其他对象的相互作用分开处理?


备忘录模式:(x)
 备忘录对象是一个用来存储另外一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏装的条件下Q将一个对象的状态捉住,q外部化Q存储v来,从而可以在来合适的时候把q个对象q原到存储v来的状态?/p>


观察者模式:(x)
 观察者模式定义了(jin)一U一队多的依赖关p,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化Ӟ?x)通知所有观察者对象,使他们能够自动更新自己?

 

状态模式:(x)
 状态模式允怸个对象在其内部状态改变的时候改变行为。这个对象看上去象是改变?jin)它的类一栗状态模式把所研究的对象的行ؓ(f)包装在不同的状态对象里Q每一个状态对象都属于一个抽象状态类的一个子cR状态模式的意图是让一个对象在其内部状态改变的时候,其行Z随之改变。状态模式需要对每一个系l可能取得的状态创立一个状态类的子cR当pȝ的状态变化时Q系l便改变所选的子类?/p>


{略模式Q?br /> {略模式针对一l算法,每一个算法封装到h共同接口的独立的cMQ从而得它们可以相互替换。策略模式得算法可以在不媄(jing)响到客户端的情况下发生变化。策略模式把行ؓ(f)和环境分开。环境类负责l持和查询行为类Q各U算法在具体的策略类中提供。由于算法和环境独立开来,法的增减,修改都不?x)?jing)响到环境和客L(fng)?/p>


模板Ҏ(gu)模式Q?br /> 模板Ҏ(gu)模式准备一个抽象类Q将部分逻辑以具体方法以?qing)具体构造子的Ş式实玎ͼ然后声明一些抽象方法来q子类实现剩余的逻辑。不同的子类可以以不同的方式实现q些抽象Ҏ(gu)Q从而对剩余的逻辑有不同的实现。先制定一个顶U逻辑框架Q而将逻辑的细节留l具体的子类d现?


讉K者模式:(x)
 讉K者模式的目的是封装一些施加于某种数据l构元素之上的操作。一旦这些操作需要修改的话,接受q个操作的数据结构可以保持不变。访问者模式适用于数据结构相Ҏ(gu)定的pȝQ它把数据结构和作用于结构上的操作之间的耦合解脱开Q得操作集合可以相对自q演化。访问者模式得增加新的操作变的很Ҏ(gu)Q就是增加一个新的访问者类。访问者模式将有关的行为集中到一个访问者对象中Q而不是分散到一个个的节点类中。当使用讉K者模式时Q要尽可能多的对象览逻辑攑֜讉K者类中,而不是放到它的子cM。访问者模式可以跨q几个类的等U结构访问属于不同的{l构的成员类?

 

 



]]>
Socket通信的基本步?/title><link>http://www.aygfsteel.com/dreamzqy29/archive/2006/11/26/83662.html</link><dc:creator>黑夜ちつ独行?/dc:creator><author>黑夜ちつ独行?/author><pubDate>Sun, 26 Nov 2006 12:43:00 GMT</pubDate><guid>http://www.aygfsteel.com/dreamzqy29/archive/2006/11/26/83662.html</guid><wfw:comment>http://www.aygfsteel.com/dreamzqy29/comments/83662.html</wfw:comment><comments>http://www.aygfsteel.com/dreamzqy29/archive/2006/11/26/83662.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/dreamzqy29/comments/commentRss/83662.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/dreamzqy29/services/trackbacks/83662.html</trackback:ping><description><![CDATA[ <p>   1Q徏立一个服务器ServerSocketQƈ同时定义好ServerSocket的监听端口;<br />   2QServerSocket 调用accept()Ҏ(gu)Q之处于阻塞?br />   3Q创Z个客hSocket,q设|好服务器的IP和端口?br />   4Q客h发出q接hQ徏立连接?br />   5Q分别取得服务器和客L(fng)ServerSocket 和Socket的InputStream和OutputStream.<br />   6)  利用Socket和ServerSocketq行数据通信?br /><br /><br /></p> <p> </p> <p>服务器:(x)<br />import java.net.*;<br />import java.io.*;<br />public class MypwServer {</p> <p> public MypwServer() {<br />  super();<br />  // TODO Auto-generated constructor stub<br /> }<br />    public void Activate() throws Exception{<br />    <br />      ServerSocket ss = new ServerSocket(5678);<br />     <br />      Socket soc = ss.accept();<br />      <br />     BufferedReader br = new BufferedReader(new InputStreamReader(soc.getInputStream()));<br />     PrintWriter pw = new PrintWriter(soc.getOutputStream());<br />     while(true){<br />      String str = br.readLine();<br />      pw.println(str);<br />      //pw.flush();<br />//      if(str.equals("end")){<br />//       break;<br />//      }<br />    // System.out.println(str);<br />     }<br />    <br />    }<br />    <br />    public static void main(String[] args){<br />     MypwServer mys = new MypwServer();<br />     try {<br />   mys.Activate();<br />  } catch (Exception e) {<br />   // TODO Auto-generated catch block<br />   e.printStackTrace();<br />  }<br />     <br />    }<br />}<br /><br /><br /><br /><br /></p> <p>import java.net.*;<br />import java.io.*;</p> <p>import javax.swing.*;<br />import java.awt.event.*;<br />import java.awt.*;</p> <p>public class Client extends JFrame implements ActionListener<br />{<br /> <br /> static String str;<br /> static String sy;<br /> static PrintStream p;<br /> JButton btn,btn1;<br /> JLabel ble;<br /> static JTextArea tex  = new JTextArea();<br /> static JTextArea tex1 = new JTextArea();<br /> public Client()<br /> {<br />  this.setTitle("聊天?);<br />  this.setSize(500,420);<br />  this.setLocation(230,60);<br />  this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);<br />  this.setResizable(false);<br />  this.setLayout(null);<br />  <br />  Container con = this.getContentPane();<br />  btn  = new JButton("发?);<br />  btn1 = new JButton("关闭");<br />  btn.addActionListener(this);<br />  btn1.addActionListener(this);<br />  btn.setBounds(20,360,60,20);<br />  btn1.setBounds(120,360,60,20);<br />  tex.setBounds(0,0,250,150);<br />  tex1.setBounds(0,180,250,160);<br />  con.add(btn);<br />  con.add(btn1);<br />  con.add(tex);<br />  con.add(tex1);<br />  <br />  this.setVisible(true);<br /> }<br /> <br /> <br /> 客户机:(x)<br /> public static void main(String[] args) throws Exception<br /> {<br />  new Client();<br />  Socket so = new Socket("localhost",5678);<br />  BufferedReader br = new BufferedReader(new InputStreamReader(so.getInputStream()));<br />  <br />  p = new PrintStream(so.getOutputStream());<br />  BufferedReader b = new BufferedReader(new InputStreamReader(System.in));<br />  <br />  while(true)<br />  {<br />   <br />   str = tex1.getText();<br />   <br />   if (str.equals(null))<br />    break;<br />  }<br />  so.close();<br /> }<br /> <br /> <br /> public void actionPerformed(ActionEvent a)<br /> {<br />  Object obj = a.getSource();<br />  <br />  if(obj == btn)<br />  {<br />   p.println(str);<br />   tex.append(str + "\n");<br />   tex1.setText("");<br />  }<br />  <br />  if(obj == btn1)<br />  {<br />   System.exit(0);<br />  }<br /> }<br />}<br /></p> <img src ="http://www.aygfsteel.com/dreamzqy29/aggbug/83662.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/dreamzqy29/" target="_blank">黑夜ちつ独行?/a> 2006-11-26 20:43 <a href="http://www.aygfsteel.com/dreamzqy29/archive/2006/11/26/83662.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>如何建立一个DAOhttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/26/83658.html黑夜ちつ独行?/dc:creator>黑夜ちつ独行?/author>Sun, 26 Nov 2006 12:23:00 GMThttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/26/83658.htmlhttp://www.aygfsteel.com/dreamzqy29/comments/83658.htmlhttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/26/83658.html#Feedback0http://www.aygfsteel.com/dreamzqy29/comments/commentRss/83658.htmlhttp://www.aygfsteel.com/dreamzqy29/services/trackbacks/83658.html  public interfaces StudentDao{
            public void insert(Student student);
}

再用一个类来实现该接口

public class StudentDaoimp implements StudentDao{
         public void insert(Student student){
      }
}

用一个工厂来产生对象

public class DaoFactory{
      public static StudentDao getStudentDao(){
            return new StudentDaoimp();         
      }
}

public class Student{
      private int studentID;

   public int getStudentID() {
     return studentID;
 }
 public void setStudentID(int age) {
     this.studentID= studentID;
 }


}


]]>
常见排序?/title><link>http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/80510.html</link><dc:creator>黑夜ちつ独行?/dc:creator><author>黑夜ちつ独行?/author><pubDate>Fri, 10 Nov 2006 15:03:00 GMT</pubDate><guid>http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/80510.html</guid><wfw:comment>http://www.aygfsteel.com/dreamzqy29/comments/80510.html</wfw:comment><comments>http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/80510.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/dreamzqy29/comments/commentRss/80510.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/dreamzqy29/services/trackbacks/80510.html</trackback:ping><description><![CDATA[ <p> <font size="4">常见排序法:(x)<br /><br />public class Sort{<br />   public static int count=0;<br /><br />   public boolean LT(int num1,int num2){<br />      return num1<num2;<br />   }<br />   public void output(int[] array){<br />      System.out.print("W?+count+"ơ排序:(x)");<br />      for(int i=0;i<array.length;i++)<br />      System.out.print(array[i]+"    ");<br />      System.out.println();<br />   } </font> </p> <p> <font size="4">   //冒(chng)排序?br />   public void BubbleSort(int[] array){<br />      boolean swap=true;<br />      int index=0; </font> </p> <p> <font size="4">      int i=0;<br />      while(i<array.length-1){<br />         int temp=array[i];<br />         for(int j=i;j<array.length;j++){<br />            if(!LT(array[i],array[j])){<br />            int temp2=array[i];<br />            array[i]=array[j];<br />            array[j]=temp2;<br />            swap=true;<br />            index=j;<br />            }else{<br />            swap=false;<br />            }<br />         }<br />         i++;<br />         if(swap){<br />         array[i]=array[index];<br />         array[index]=temp;<br />         i++;<br />         }<br />   output(array);<br />   }<br />   } <br /></font> </p> <p> <font size="4"> <br />//直接插入排序?br />public void InsertSort(int[] array){<br />   for(int i=1;i<array.length;++i){<br />      if (LT(array[i],array[i-1])){<br />         int temp=array[i];<br />         array[i]=array[i-1];<br />         array[i-1]=temp;<br />         for(int j=i-1;j>0;--j){<br />            if(LT(array[j],array[j-1])){<br />               array[j]=array[j-1];<br />               array[j-1]=temp;<br />            }else{<br />                  break;<br />                    }<br />         }<br />   output(array);<br />   }<br />}<br />} <br /></font> </p> <p> <font size="4"> <br />//快速排序法<br />private int Partition(int array[],int low,int high){<br />   int temp=array[low];<br />   int pivotkey=array[low];<br /><br />   while(low<high){<br />      while(low<high&&array[high]>pivotkey) --high;<br />      array[low]=array[high];<br />      while(low<high&&array[low]<=pivotkey) ++low;<br />      array[high]=array[low];<br />   }<br />   array[low]=temp;<br />   output(array);<br />   return low;<br />} <br /></font> </p> <p> <font size="4"> <br />public void QSort(int array[],int low,int high){<br />   if(low<high){<br />      int pivotloc=Partition(array,low,high);<br />      QSort(array,low,pivotloc-1);<br />      QSort(array,pivotloc+1,high);<br />   }<br />} <br /></font> </p> <p> <font size="4"> <br />void QuickSort(int array[]){<br />   QSort(array,0,array.length-1);<br />}<br /><br />public static void main(String args[]){<br />   int array[]={49,38,65,97,76,13,27,49};<br />   Sort sort=new Sort(); </font> </p> <p> <font size="4">   System.out.println("===================================");<br />   sort.output(array);<br />   System.out.println("优化冒(chng)排序?);<br />   sort.BubbleSort(array); </font> </p> <p> <font size="4">   System.out.println();<br />   System.out.println("===================================");<br />   array=new int[]{49,38,65,97,76,13,27,49};<br />   sort.output(array);<br />   System.out.println("直接插入排序?);<br />   sort.InsertSort(array); </font> </p> <p> <font size="4">   System.out.println();<br />   System.out.println("===================================");<br />   array=new int[]{49,38,65,97,76,13,27,49};<br />   sort.output(array);<br />   System.out.println("快速排序法");<br />   sort.QuickSort(array);<br />}<br />} </font> </p> <h1> </h1> <img src ="http://www.aygfsteel.com/dreamzqy29/aggbug/80510.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/dreamzqy29/" target="_blank">黑夜ちつ独行?/a> 2006-11-10 23:03 <a href="http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/80510.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>W四? 更改和删除数?http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79636.html黑夜ちつ独行?/dc:creator>黑夜ちつ独行?/author>Fri, 10 Nov 2006 12:18:00 GMThttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79636.htmlhttp://www.aygfsteel.com/dreamzqy29/comments/79636.htmlhttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79636.html#Feedback0http://www.aygfsteel.com/dreamzqy29/comments/commentRss/79636.htmlhttp://www.aygfsteel.com/dreamzqy29/services/trackbacks/79636.html 4.1    d新的数据
         格式Qinsert   into   表名   Q列名)(j) values (要赋的?;

4.2     更新已经存在的数?br />         格式Qupdate   表名   set   新的列值   where   qo(h)条gQ?br />
                     或update   表名 

                         set   ?=新值?     ?=新?    ?=新? 
                         where   qo(h)条gQ?br />
4.3      删除数据

          使用selete删除?br />                格式Q  selete   from   表名   where   qo(h)条gQ?br />
                              Q如果不指定WHERE子句Q表中所有行被删除Q?br />
                              Qؓ(f)?jin)保持引用的完整性,删除的必L没有被连接的行)(j)

         使用truncate语句删除?br />
                  格式Qtruncate   table   表名Q?br />
         selete和truncate的比?br />
      truncate执行h比selete要快Q因为它不留下详l的删除记录日志。是怹性的删除Q不
可以回的。?br />  
      selete删除行是要保留下详细的删除记录日志的Q所以用selete  删除的行是可以恢复的?br />



]]>
W三? 数据库基本语?/title><link>http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79622.html</link><dc:creator>黑夜ちつ独行?/dc:creator><author>黑夜ちつ独行?/author><pubDate>Fri, 10 Nov 2006 12:16:00 GMT</pubDate><guid>http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79622.html</guid><wfw:comment>http://www.aygfsteel.com/dreamzqy29/comments/79622.html</wfw:comment><comments>http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79622.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/dreamzqy29/comments/commentRss/79622.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/dreamzqy29/services/trackbacks/79622.html</trackback:ping><description><![CDATA[ <font size="4">3.1、创 <br />格式Qcreate table 表名Q?<br /><br />3.2、删除表 <br />格式Qdrop table 表名Q?<br /><br />3.3、创Z(f)时表 <br />格式Qcreate gkoabl temporary table temp <br />AS <br />select Name,PhoneNo from friend; <br /><br />3.4、复制表 <br />格式Qcreate table My_friend AS select*from friend; <br /><br />3.5 、创建非I约?( not null ) <br /><br />3.6、指定默认?( default '默认值内? ) <br /><br />3.7、设定主?( primary key ) <br /><br />3.8、设|唯一U束 ( 语句后面?unipue ) <br /><br />3.9、设|检查约?<br />格式Qage int check(age between 20 and 50); <br />?sex varchar check(sex in ('?,'?)); <br /><br />3.10 、用序?( sequences) <br />格式Q?<br />create sequences friendidseq; <br />(序列的初始gؓ(f)1Q增量ؓ(f)1) <br /><br />create sequences friendidseq increment by 1 <br />start with 1000; <br />(序列的初始gؓ(f)1000Q增量ؓ(f)1) <br />昄最后一个序列?<br />select friendidseq.currval from dual; <br /><br />3.11、用自动编号字D?<br />格式Qcreate sequences seq; <br /><br />create or replace trigger autonumber <br />before insert on friend <br />for each row <br />begin <br />select seq.nextval <br />into :new.friendid from dual; <br />end; <br /><br />3.12、外键约?br />关键字:(x)constraint   foreign key()<br />                 references <br />举例<br />         create   table   student(<br />         studentid   int   not   null   primary   key,<br />         name   varchar(20)   not   null<br />         );<br />         <br />         create   table   phone(<br />         phoneid   int   not   null   primary   key,<br />         studentid   int   not   null,<br />         phone   varchar(14),<br /><br />         constraint   fid_fk   foreign   key(srudentid)<br />             references    student(studentid)        <br />         ) ;<br /><br />3.13、创建烦(ch)?br />         格式Qcreate   index   nameindex   on   student (name);   (创徏非唯一索引)<br />                     create   unique   index   nameindex   on   student(name);   (创徏唯一索引)  <br />                     <br />        查询索引:<br />                      select   student.name   from   student   where   name = '但是';    <br />  <br />                      select   student.name   from   student   where   name =  '%? ;<br />        删除索引<br />                      drop   index   nameindex;   <br />               <br /></font> <img src ="http://www.aygfsteel.com/dreamzqy29/aggbug/79622.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/dreamzqy29/" target="_blank">黑夜ちつ独行?/a> 2006-11-10 20:16 <a href="http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79622.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>W五? 使用SQL获取数据http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79638.html黑夜ちつ独行?/dc:creator>黑夜ちつ独行?/author>Fri, 10 Nov 2006 12:16:00 GMThttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79638.htmlhttp://www.aygfsteel.com/dreamzqy29/comments/79638.htmlhttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79638.html#Feedback0http://www.aygfsteel.com/dreamzqy29/comments/commentRss/79638.htmlhttp://www.aygfsteel.com/dreamzqy29/services/trackbacks/79638.html5.1   q回所有列
         select   *from   表名Q?br />
5.2   指定目标数据?br />         select   *from   scott.emp;

5.3   q回单列
         select   列名   from   表名Q?br />         举例Qselect   name   from   student;
                     select   student.name   from   student;Q在存在多个表的时候用Q?br />
5.4      q回多列
         select   ?   ?   ?   from   表名Q?br />         举例Qselect   studentid,name,age   from   student;

5.5      使用别名
          语法Q select   ?   as   列名 ,  ?   as   列名   from  表名   as   表名Q?br />                 或  select  T. ?   as   列名 , T. ?   as   列名   from  表名   as   TQ?br />   
           举例Qselect   studentid   as   stuid ,name   as   stuname   from   student   as   class;
            语句q回的列名ؓ(f)stuid和stuname  

5.6       q接字符?br />               oracle使用 || 来连接;

5.7        数据排序
            排序的值可以是字母、数字、时间等Q?br />            语法Q?br />                  select   ?Q列2   from   表   order   by   ?   ascQ?br />                  Q按照列1中的值升序排?其中asc 可以忽略Q?br />                  select   ?Q列2   from   表   order   by   ?   descQ    ?br />                  Q按照列1中的值降序排?其中desc不 可以忽略)(j) 

5.8      使用distinct排除重复数据
               语法Qselect distinct   ?   from   表;
               例:(x)select   distinct   name   from   student;



5.9



      

]]>
概念模型Q物理模型,逻辑模型?qing)关pL据库设计http://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79613.html黑夜ちつ独行?/dc:creator>黑夜ちつ独行?/author>Fri, 10 Nov 2006 12:15:00 GMThttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79613.htmlhttp://www.aygfsteel.com/dreamzqy29/comments/79613.htmlhttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/79613.html#Feedback0http://www.aygfsteel.com/dreamzqy29/comments/commentRss/79613.htmlhttp://www.aygfsteel.com/dreamzqy29/services/trackbacks/79613.htmlDataArchitect模块是PowerDesigner的核?j)工P它在需求分析阶D可以用来绘制实体联pdQE—R 图)(j)Q即pȝ的概忉|据模型?

它描q系l中的实体以?qing)实体之间的关系Q是pȝ的静(rn)态特征。系l分析员通过实体联系图表辑֯pȝ?rn)态特征的理解。它实际上相当于pȝ的一个初步的数据字典。由实体联系图所表达的数据模型与数据程图所表达的功能模型结合在一起就构成?jin)系l完整的逻辑模型?

pȝq一步的开发将以此为基。当pȝ的开发进入设计阶D|Q开发h员必L出系l的物理数据模型Q这时DataArchitect 可以实现概念数据模型向物理数据模型的
自动转换Q设计h员可以在物理数据模型的基上,q行数据库的后台设计?


<一>数据规范的原因?
目的Q防止数据丢失和不一致性数据,减少数据冗于?


<?gt;理解三种范式
W一范式Q?
1QQ何给定行的列必须是只包含一个|
2Q表中的每一行必L相同数量的列Q?
3Q表中的每一行必L唯一的即是不相同的;
W二范式Q?
1Q必L第一范式Q?
2Q表中的所有非主键必须依赖一整个主键Q?
W三范式Q?
1Q必L第二范式;
2Q表中的所有非主键必须怺独立Q?
范式中还有复合主键的用法Q?

<?gt; 存在的关pd些?
1Q一对一关系Q(多用于在数据敏感Q列太多或要求性能高的时候)(j)
2Q一对多关系Q?
3Q多对多关系Q?

<?gt; 数据建模的四个步骤是什么?
1Q识别将?x)在数据库中出现的潜在的实体Q?
2Q规范已l识别的实体中的数据Q?
3Q识别表之间的关p;
4Q改q数据模型,保全规范化Q?




]]>
W十? 使用视图隐藏复杂的SQLhttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/80204.html黑夜ちつ独行?/dc:creator>黑夜ちつ独行?/author>Fri, 10 Nov 2006 12:13:00 GMThttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/80204.htmlhttp://www.aygfsteel.com/dreamzqy29/comments/80204.htmlhttp://www.aygfsteel.com/dreamzqy29/archive/2006/11/10/80204.html#Feedback0http://www.aygfsteel.com/dreamzqy29/comments/commentRss/80204.htmlhttp://www.aygfsteel.com/dreamzqy29/services/trackbacks/80204.html 视图的简?/strong>
         视图提供?jin)一U数据库表中的数据进行半持久性改造的方式Q我们可以用访问视图来代替直接讉K表。这U方式的优点是l了(jin)用户一个附加抽象层Q这意味着我们可以以一U更一致的方式格式数据Q同Ӟ采用q种方式使用户仅可以讉K视图Q而不是下层数据,从而增Z(jin)数据的安全性。视图有时被UCؓ(f)拟表?br />
视图的优?br />      1Q将用户的注意力集中到特定的数据上,以到达保护数据安全性的目的。因囑֏以限制用户从表中所(g)查的内容Q而不是表中存储的所有数据?br />         2Q简化了(jin)数据的查询和处理操作?br />         3Q有利于数据的交换操作。我们可以自己定义一个视图,把需要交换的数据集中C个视图,从而简化了(jin)数据的交换操作?br />         4Q有利于化对用户的权限管理?br />
创徏视图
          语法Qcreate view  视图?as query
           举例Q?br />     创徏        create view studentsummary
                     as
                     select studnet.studentid,student.name,
                           count(*) as examstaken
                      from student
                      inner join studentexam
                      on student.studentid=studentexam.studentid
                      group by student.studentid,student.name

            使用Qselect studentid,name,examstaken from studentexam






]]>
վ֩ģ壺 ½| | ĵ| | | | | ǭ| ͬ| ɽ| | | | »Ȱ| ̶| | ƽ| ɽ| | Զ| | º| | | | | ԫ| | | | Ȫ| »| ̫| ʡ| п| | | ˳| | | |