??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧美日韩系列,国产精品7m视频,久久99久久精品国产http://www.aygfsteel.com/314508313/zȝ是Z改变世界zh-cnWed, 18 Jun 2025 17:21:01 GMTWed, 18 Jun 2025 17:21:01 GMT60JAVA l承基本cR抽象类、接?http://www.aygfsteel.com/314508313/archive/2011/12/04/365523.html陈小?/dc:creator>陈小?/author>Sun, 04 Dec 2011 15:08:00 GMThttp://www.aygfsteel.com/314508313/archive/2011/12/04/365523.htmlhttp://www.aygfsteel.com/314508313/comments/365523.htmlhttp://www.aygfsteel.com/314508313/archive/2011/12/04/365523.html#Feedback0http://www.aygfsteel.com/314508313/comments/commentRss/365523.htmlhttp://www.aygfsteel.com/314508313/services/trackbacks/365523.htmlJava是一个面向对象的语言Qjava面向对象一般有三大特征Q封装、ѝ多态?/p>

Q就是把一些属性和Ҏ装C个类里?/p>

l承Q就如子cȝ承父cȝ一些属性和Ҏ?/p>

多?/strong>Q就如一个父cL多个不同特色的子cR?/p>

q里我就不多讲解Q下面我主要说明一个ѝ承是OOPQ面向对象)的一个特Ԍjava只支持单l承Q如果承两个有同样Ҏ的父c,那么׃知道l承到那个父cȝQ所以java只支持单l承Q。承是java的一个特Ԍ我们用的所以类都承Objictc,所以就要ObjectcȝҎQ如toString()、getClass()、wait()……所以我们徏立的c都有父cR?/p>

Java中一般有三种c:

基本c?/strong>:也就是一般的c(一般所说的cd是基本类Q,是对象的模板Q是属性和Ҏ的集合。可以承其他基本类、抽象类、实现接口?/p>

抽象c?/strong>Q有抽象Ҏ的类(抽象Ҏ是该方法必ȝl承来实玎ͼ本n只定义,不实?。抽象类可以有一个或多个抽象ҎQ他是基本类和接口类的过度?/p>

接口c?/strong>Q一般叫做接口,该类中的所有方法都是抽象方法,该类的方法本w只定义不实现?/p>

抽象cd接口一个由【abstract class + 抽象cd】一个由【interface +接口名】定义,接口中的所以方法都是抽象方法,而抽象类有部分方法是自n实现了的Q一些只定义不实现?/p>

基本cȝ定义Q?/p>

public class Fruit {

    public void price() {

       System.out.println("水果h");

    }

    public void weight() {

       System.out.println("水果重量");

    }

}

抽象cȝ定义Q?/p>

public abstract class Fruit {

    public void price() {

       System.out.println("水果h");

    }

    public abstract void weight();

}

接口cȝ定义Q?/p>

public interface Fruit {

    public void price();

    public void weight() ;

}

从上面我们可以看出接口就是抽象类的升U版Q由于该cȝҎ全是抽象ҎQ所以把abstract换成interface。而接口的Ҏ必须由子cL能实现?/p>

 

l承

l承基本c,可以l承父类的方法,也可以从些,也可以扩充。下面是实现接口基本cȝc:

public class Apple extends Fruit {

}

该类中就有Fruit基本cM的两个方法:price()和weight()Q?/p>

l承抽象c,必须实现抽象cȝ抽象ҎQ可以修改父cȝҎQ和dҎ。下面是l承抽象cȝc:

public class Apple extends Fruit {

    @Override

    public void weight() {

       System.out.println("水果重量");

    }

}

该类l承cFruit的price()ҎQ同时实CFruit抽象cȝweight()Ҏ?/p>

l承接口c(也就实现接口Q,必须实现接口cȝ所有的抽象cdd了。下面是l承接口的类Q?/p>

public class Aple implements Fruit {

    @Override

    public void price() {

       System.out.println("水果h");

    }

    @Override

    public void weight() {

       System.out.println("水果重量");

    }

}

该类是实现Fruit接口的所以抽象方法?/p>

 

Java只支持单l承Q承基本类和抽象类Q,但是我们可以用接口来实现Q多l承接口来实玎ͼ

如:public class Apple extends Fruit implements Fruit1, Fruit2{}

一般我们承基本类和抽象类用extends关键字,实现接口cȝl承用implements关键字。其实承是很简单的Q可以就是没有弄清这两个关键字,当我们弄清楚也就是比较简单的?/p>

接口也可以承接口如Q?strong>public interface Fruit1 extends Fruit {}q是接口中的多重l承Q同理抽象类和基本类也同理。如果我们把基本cL?strong>final修饰Q也定义该cM被承,该类不能作ؓ父类。同时基本类的方法可以用public 、private、proptected来修饰方法,用final来阻止承该Ҏ?/p>

q里只是自己的理解,有些地方时用词不当的Q只是觉得这L词更好的理解Q请大家谅解。有些地方由于不是这里的重点Q没有讲清楚Q希望大安过其他方式了解?/p>

]]>
java实现冒排序http://www.aygfsteel.com/314508313/archive/2011/12/04/365522.html陈小?/dc:creator>陈小?/author>Sun, 04 Dec 2011 14:58:00 GMThttp://www.aygfsteel.com/314508313/archive/2011/12/04/365522.htmlhttp://www.aygfsteel.com/314508313/comments/365522.htmlhttp://www.aygfsteel.com/314508313/archive/2011/12/04/365522.html#Feedback0http://www.aygfsteel.com/314508313/comments/commentRss/365522.htmlhttp://www.aygfsteel.com/314508313/services/trackbacks/365522.htmlpublic class BubbleSort implements SortUtil.Sort{

     public void sort(int[] data) {

        int temp;

        for(int i=0;i<data.length;i++){

            for(int j=data.length-1;j>i;j--){

                if(data[j]<data[j-1]){

                    SortUtil.swap(data,j,j-1);

                }

            }

        }

    }



]]>
java插入排序http://www.aygfsteel.com/314508313/archive/2011/12/04/365521.html陈小?/dc:creator>陈小?/author>Sun, 04 Dec 2011 14:57:00 GMThttp://www.aygfsteel.com/314508313/archive/2011/12/04/365521.htmlhttp://www.aygfsteel.com/314508313/comments/365521.htmlhttp://www.aygfsteel.com/314508313/archive/2011/12/04/365521.html#Feedback0http://www.aygfsteel.com/314508313/comments/commentRss/365521.htmlhttp://www.aygfsteel.com/314508313/services/trackbacks/365521.htmlpublic class InsertSort implements SortUtil.Sort{

     public void sort(int[] data) {

        int temp;

        for(int i=1;i<data.length;i++){

            for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){

                SortUtil.swap(data,j,j-1);

            }

        }       

    }

}



]]>
什么是SQL注入式攻?/title><link>http://www.aygfsteel.com/314508313/archive/2011/12/03/365438.html</link><dc:creator>陈小?/dc:creator><author>陈小?/author><pubDate>Fri, 02 Dec 2011 16:06:00 GMT</pubDate><guid>http://www.aygfsteel.com/314508313/archive/2011/12/03/365438.html</guid><wfw:comment>http://www.aygfsteel.com/314508313/comments/365438.html</wfw:comment><comments>http://www.aygfsteel.com/314508313/archive/2011/12/03/365438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/314508313/comments/commentRss/365438.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/314508313/services/trackbacks/365438.html</trackback:ping><description><![CDATA[<font size="4">什么是SQL注入式攻击? <br />所谓SQL注入式攻击,是d者把SQL命o插入到Web表单的输入域或页面请求的查询字符Ԍƺ骗服务器执行恶意的SQL命o。在某些表单中,用户输入的内容直接用来构造(或者媄响)动态SQL命oQ或作ؓ存储q程的输入参敎ͼq类表单特别Ҏ受到SQL注入式攻凅R常见的SQL注入式攻击过E类如: <br />⑴ 某个ASP.NET Web应用有一个登录页面,q个d面控制着用户是否有权讉K应用Q它要求用户输入一个名U和密码?<br />⑵ d面中输入的内容直接用来构造动态的SQL命oQ或者直接用作存储过E的参数。下面是ASP.NET应用构造查询的一个例子: <br />System.Text.StringBuilder query = new System.Text.StringBuilder( <br />   "SELECT * from Users WHERE login = '") <br />   .Append(txtLogin.Text).Append("' AND password='") <br />   .Append(txtPassword.Text).Append("'"); <br /><br />⑶ d者在用户名字和密码输入框中输?'?1'='1"之类的内宏V?<br />⑷ 用户输入的内Ҏ交给服务器之后,服务器运行上面的ASP.NET代码构造出查询用户的SQL命oQ但׃d者输入的内容非常ҎQ所以最后得到的SQL命o变成QSELECT * from Users WHERE login = '' or '1'='1' AND password = '' or '1'='1'?<br />⑸ 服务器执行查询或存储q程Q将用户输入的n份信息和服务器中保存的n份信息进行对比?<br />⑹ ׃SQL命o实际上已被注入式d修改Q已l不能真正验证用戯n份,所以系l会错误地授权给d者?<br />如果d者知道应用会表单中输入的内容直接用于验证n份的查询Q他׃试输入某些Ҏ的SQL字符串篡Ҏ询改变其原来的功能,ƺ骗pȝ授予讉K权限?<br />pȝ环境不同Q攻击者可能造成的损害也不同Q这主要由应用访问数据库的安全权限决定。如果用L帐户h理员或其他比较高的权限,d者就可能Ҏ据库的表执行各种他想要做的操作,包括d、删除或更新数据Q甚臛_能直接删除表 <br />如何防范SQL注入式攻击? <br />好在要防止ASP.NET应用被SQL注入式攻击闯入ƈ不是一件特别困隄事情Q只要在利用表单输入的内Ҏ造SQL命o之前Q把所有输入内容过滤一番就可以了。过滤输入内容可以按多种方式q行?<br />⑴ 对于动态构造SQL查询的场合,可以使用下面的技术: <br />W一Q替换单引号Q即把所有单独出现的单引h成两个单引号Q防止攻击者修改SQL命o的含义。再来看前面的例子,"SELECT * from Users WHERE login = ''' or ''1''=''1' AND password = ''' or ''1''=''1'"昄会得C"SELECT * from Users WHERE login = '' or '1'='1' AND password = '' or '1'='1'"不同的结果?<br />W二Q删除用戯入内容中的所有连字符Q防止攻击者构造出cd"SELECT * from Users WHERE login = 'mas' -- AND password =''"之类的查询,因ؓq类查询的后半部分已l被注释掉,不再有效Q攻击者只要知道一个合法的用户d名称Q根本不需要知道用L密码可以顺利获得访问权限?<br />W三Q对于用来执行查询的数据库帐P限制其权限。用不同的用户帐h行查询、插入、更新、删除操作。由于隔M不同帐户可执行的操作Q因而也防止了原本用于执行SELECT命o的地方却被用于执行INSERT、UPDATE或DELETE命o?<br />⑵ 用存储过E来执行所有的查询。SQL参数的传递方式将防止d者利用单引号和连字符实施d。此外,它还使得数据库权限可以限制到只允许特定的存储q程执行Q所有的用户输入必须遵从被调用的存储q程的安全上下文Q这样就很难再发生注入式d了?<br />⑶ 限制表单或查询字W串输入的长度。如果用Ld名字最多只?0个字W,那么不要认可表单中输入的10个以上的字符Q这大大增加攻击者在SQL命o中插入有害代码的隑ֺ?<br />⑷ 查用戯入的合法性,信输入的内容只包含合法的数据。数据检查应当在客户端和服务器端都执?#8212;—之所以要执行服务器端验证Q是Z弥补客户端验证机制脆q安全性?<br />在客LQ攻击者完全有可能获得|页的源代码Q修攚w证合法性的脚本Q或者直接删除脚本)Q然后将非法内容通过修改后的表单提交l服务器。因此,要保证验证操作确实已l执行,唯一的办法就是在服务器端也执行验证。你可以使用许多内徏的验证对象,例如 RegularExpressionValidatorQ它们能够自动生成验证用的客L脚本Q当然你也可以插入服务器端的Ҏ调用。如果找不到现成的验证对象,你可以通过CustomValidator自己创徏一个?<br />⑸ 用L录名U、密码等数据加密保存。加密用戯入的数据Q然后再它与数据库中保存的数据比较Q这相当于对用户输入的数据进行了"消毒"处理Q用戯入的数据不再Ҏ据库有Q何特D的意义Q从而也防止了d者注入SQL命o?System.Web.Security.FormsAuthenticationcL一?HashPasswordForStoringInConfigFileQ非帔R合于对输入数据q行消毒处理?<br />⑹ 查提取数据的查询所q回的记录数量。如果程序只要求q回一个记录,但实际返回的记录却超q一行,那就当作出错处理 </font><br /><br /><img src ="http://www.aygfsteel.com/314508313/aggbug/365438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/314508313/" target="_blank">陈小?/a> 2011-12-03 00:06 <a href="http://www.aygfsteel.com/314508313/archive/2011/12/03/365438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用HQLq行实体查询http://www.aygfsteel.com/314508313/archive/2011/12/03/365437.html陈小?/dc:creator>陈小?/author>Fri, 02 Dec 2011 16:05:00 GMThttp://www.aygfsteel.com/314508313/archive/2011/12/03/365437.htmlhttp://www.aygfsteel.com/314508313/comments/365437.htmlhttp://www.aygfsteel.com/314508313/archive/2011/12/03/365437.html#Feedback0http://www.aygfsteel.com/314508313/comments/commentRss/365437.htmlhttp://www.aygfsteel.com/314508313/services/trackbacks/365437.html例子1Q?
Hql代码 复制代码
  1. String hql=”from User user ”;      
  2. List list=session.CreateQuery(hql).list();   


因ؓHQL语句与标准SQL语句怼Q所以我们也可以在HQL语句中用where字句Qƈ且可以在where字句中用各U表辑ּQ比较操作符以及使用“and”,”or”q接不同的查询条件的l合。看下面的一些简单的例子Q?
Hql代码 复制代码
  1. from User user where user.age=20;  


例子2Q返回一个属性)Q?
Hql代码 复制代码
  1. String hql= "select c.customerNamefrom Customer c“;   
  2. Query query= session.createQuery(hql);   
  3. Iteratorit = query.list().iterator();   
  4. System.out.println(query.list().size());   
  5. while(it.hasNext()) {   
  6. String c = (String)it.next();   
  7. System.out.println(c);   
  8. }  


例子3Q返回多个属性)Q?
如果q回多个属性,那么它们被装入数组或者集合中
Hql代码 复制代码
  1. String hql= "select c.customerId, c.customerName“+   
  2. “from Customer c“;   
  3. Query query= session.createQuery(hql);   
  4. Iteratorit = query.list().iterator();   
  5. while(it.hasNext()) {   
  6. Object[] obj= (Object[])it.next();   // List list= (List)it.next();   
  7. Long id = (Long)obj[0];          //Long id = (Long)list.get(0);   
  8. String name = (String)obj[1];     //String name = (String)list.get(1);   
  9. System.out.println(id.longValue() + " " + name);   
  10. }  


]]>
“md5+随机”方式加?/title><link>http://www.aygfsteel.com/314508313/archive/2011/11/29/365079.html</link><dc:creator>陈小?/dc:creator><author>陈小?/author><pubDate>Tue, 29 Nov 2011 01:40:00 GMT</pubDate><guid>http://www.aygfsteel.com/314508313/archive/2011/11/29/365079.html</guid><wfw:comment>http://www.aygfsteel.com/314508313/comments/365079.html</wfw:comment><comments>http://www.aygfsteel.com/314508313/archive/2011/11/29/365079.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.aygfsteel.com/314508313/comments/commentRss/365079.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/314508313/services/trackbacks/365079.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="blog_content">摘要Q?<br /><br />1 加Salt散列 <br />2 ASP.NET 2.0 Membership中与密码散列有关的代?<br /><br />声明Q本文所|列之源代码均通过Reflector取自.NET FrameworkcdQ引用这些代码仅Z学习和研I的目的?<br /><br />其实Q对密码q行散列存储不是一个新鲜话题了Q解册v来也不是很难Q但很多是不大了解。这个小文只是强调一?#8220;加Salt散列”q个单的技术,q给出ASP.NET Membership所使用的代码?<br /><br />本来打算写一介l如何实现用L录功能的文章的,但因为时间有限,所以先介绍一下密码的散列Q下一再介绍用户d?<br /><br />---- <br /><br />1 密码必须散列存储 <br /><br />Q内容略Q?<br /><br />2 加Salt散列 <br /><br />我们知道Q如果直接对密码q行散列Q那么黑客(l称那些有能力窃取用h据ƈ企图得到用户密码的hQ可以对一个已知密码进行散列,然后通过Ҏ散列值得到某用户的密码。换句话_虽然黑客不能取得某特定用L密码Q但他可以知道用特定密码的用户有哪些?<br /><br />加Salt可以一定程度上解决q一问题。所谓加SaltQ就是加?#8220;佐料”。其基本x是这L——当用户首ơ提供密码时Q通常是注册时Q,ql自动往q个密码里撒一?#8220;佐料”Q然后再散列。而当用户dӞpȝ为用h供的代码撒上同样?#8220;佐料”Q然后散列,再比较散列|已确定密码是否正?<br /><br />q里?#8220;佐料”被称?#8220;Salt?#8221;Q这个值是ql随机生成的Qƈ且只有系l知道。这P即便两个用户使用了同一个密码,׃pȝ为它们生成的saltg同,他们的散列g是不同的。即侉K客可以通过自己的密码和自己生成的散列值来扑օ有特定密码的用户Q但q个几率太小了(密码和salt值都得和黑客使用的一h行)?<br /><br />下面详细介绍一下加Salt散列的过E。介l之前先一点,前面说过Q验证密码时要用和最初散列密码时使用“相同?#8221;佐料。所以Salt值是要存攑֜数据库里的?<br /><br /><br />用户注册Ӟ <br /><br />1Q用h供密码(以及其他用户信息Q; <br />2Q系lؓ用户生成Salt| <br />3Q系l将Salt值和用户密码q接CP <br />4Q对q接后的D行散列,得到Hash| <br />5Q将Hash值和Salt值分别放到数据库中?<br /><br /><br />dӞ <br />1Q用h供用户名和密码; <br />2Q系l通过用户名找C之对应的Hash值和Salt| <br />3Q系l将Salt值和用户提供的密码连接到一P <br />4Q对q接后的D行散列,得到Hash'Q注意有?#8220;?#8221;Q; <br />5Q比较Hash和Hash'是否相等Q相{则表示密码正确Q否则表C密码错误?<br /><br />3 ASP.NET 2.0 Membership中的相关代码 <br />Q省略关于Membership的介l若q字Q?<br />本文Anders Liu仅研I了SqlMembershipProviderQ该cM于System.Web.dllQSystem.Web.Security命名I间中?<br />首先Q要使用MembershipQ必d用aspnet_regsql.exe命o来配|数据库Q该工具会向现有数据库中d一pd表和存储q程{,配置好的数据库中有一个表aspnet_MembershipQ就是用于存攄户帐户信息的。其中我们所x的列有三?#8212;—Password、PasswordFormat和PasswordSalt?<br /><br />Password存放的是密码的散列|PasswordFormat存放用于散列密码所使用的算法,PasswordSalt是pȝ生成的Saltg?<br /><br />|站安全了,E序自然也就复杂?.. <br />     discuz的加密方式:md5(md5($password).$salt)Q?salt是一?位随机数?<br />     注册的时候,把用L密码用md5(md5($password).$salt)加密Q?salt是一?位随机数字,下面是我的一个获?位随机数的一个方法: <br />     function randstr($len=6) { <br />     $chars='abcdefghijklmnopqrstuvwxyz0123456789'; <br />// characters to build the password from <br />     mt_srand((double)microtime()*1000000*getmypid()); <br />// seed the random number generater (must be done) <br />     $password=''; <br />     while(strlen($password)<$len) <br />         $password.=substr($chars,(mt_rand()%strlen($chars)),1); <br />     return $password; <br />} <br />     $salt=randstr();把randstr()赋值给$saltQ然后用md5(md5(会员提交的密?.$salt)加密可以了Q但是千万不要忘了把$salt入库哦(uc_members表)?<br />     登陆的时候根据用户名?salt取出来,用md5(md5(会员提交的密?.$salt)匚w密码Q如果一样就登陆成功?</div><img src ="http://www.aygfsteel.com/314508313/aggbug/365079.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/314508313/" target="_blank">陈小?/a> 2011-11-29 09:40 <a href="http://www.aygfsteel.com/314508313/archive/2011/11/29/365079.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>l承的优~点http://www.aygfsteel.com/314508313/archive/2011/11/29/365075.html陈小?/dc:creator>陈小?/author>Tue, 29 Nov 2011 01:37:00 GMThttp://www.aygfsteel.com/314508313/archive/2011/11/29/365075.htmlhttp://www.aygfsteel.com/314508313/comments/365075.htmlhttp://www.aygfsteel.com/314508313/archive/2011/11/29/365075.html#Feedback2http://www.aygfsteel.com/314508313/comments/commentRss/365075.htmlhttp://www.aygfsteel.com/314508313/services/trackbacks/365075.html优点
新的实现很容易,因ؓ大部分是l承而来?
很容易修改和扩展已有的实?

~点
打破了封装,因ؓ基类向子cL露了实现l节
白盒重用Q因为基cȝ内部l节通常对子cL可见?
当父cȝ实现改变时可能要相应的对子类做出改变
不能在运行时改变qcȝ承来的实?
由此可见Q组合比l承h更大的灵zL和更稳定的l构Q一般情况下应该优先考虑l合。只


有当下列条g满时才考虑使用l承Q?
子类是一U特D的cdQ而不只是父类的一个角?
子类的实例不需要变成另一个类的对?
子类扩展Q而不是覆盖或者父类的功能失?img src ="http://www.aygfsteel.com/314508313/aggbug/365075.html" width = "1" height = "1" />

]]>
视图与时表的区?/title><link>http://www.aygfsteel.com/314508313/archive/2011/11/24/364691.html</link><dc:creator>陈小?/dc:creator><author>陈小?/author><pubDate>Thu, 24 Nov 2011 01:19:00 GMT</pubDate><guid>http://www.aygfsteel.com/314508313/archive/2011/11/24/364691.html</guid><wfw:comment>http://www.aygfsteel.com/314508313/comments/364691.html</wfw:comment><comments>http://www.aygfsteel.com/314508313/archive/2011/11/24/364691.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/314508313/comments/commentRss/364691.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/314508313/services/trackbacks/364691.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="blog_content"><span style="font-size: large">临时?/span> <br />    临时表与怹表相|但时表存储?tempdb 中,当不再用时会自动删除?<br />    临时表有两种cdQ本地和全局。它们在名称、可见性以及可用性上有区别。本C时表的名UC单个数字W号 (#) 打头Q它们仅对当前的用户q接是可见的Q当用户?SQL Server 实例断开q接时被删除。全局临时表的名称以两个数字符?(##) 打头Q创建后对Q何用户都是可见的Q当所有引用该表的用户?SQL Server 断开q接时被删除?<br />    例如Q如果创Z employees 表,则Q何在数据库中有用该表的安全权限的用户都可以使用该表Q除非已其删除。如果数据库会话创徏了本C时表 #employeesQ则仅会话可以用该表,会话断开q接后就该表删除。如果创Z ##employees 全局临时表,则数据库中的M用户均可使用该表。如果该表在您创建后没有其他用户使用Q则当您断开q接时该表删除。如果您创徏该表后另一个用户在使用该表Q则 SQL Server 在您断开q接q且所有其他会话不再用该表时其删除?<br /><br /><span style="font-size: large">视图</span>视图 <br />    可以被看成是虚拟表或存储查询。除非是索引视图Q否则视囄数据不会作ؓ非重复对象存储在数据库中。数据库中存储的?SELECT 语句。SELECT 语句的结果集构成视图所q回的虚拟表。用户可以采用引用表时所使用的方法,?Transact-SQL 语句中引用视囑֐U来使用此虚拟表 <br />    视图是一个虚拟表Q其内容由查询定义。同真实的表一P视图包含一pd带有名称的列和行数据。视囑֜数据库中q不是以数据值存储集形式存在Q除非是索引视图。行和列数据来自由定义视囄查询所引用的表Qƈ且在引用视图时动态生成?<br />对其中所引用的基表来_视图的作用类g{选。定义视囄{选可以来自当前或其他数据库的一个或多个表,或者其他视图。分布式查询也可用于定义使用多个异类源数据的视图。例如,如果有多C同的服务器分别存储您的单位在不同地区的数据,而您需要将q些服务器上l构怼的数据组合v来,q种方式很有用?<br />    通过视图q行查询没有M限制Q通过它们q行数据修改时的限制也很?<br />    视图U类Q烦引视囑֒索引视图 <br />    SQL Server 2005 查询处理器对索引视图和非索引视图区别对待: 索引视图的行以表的格式存储在数据库中。如果查询优化器军_使用查询计划的烦引视图,则烦引视囑ְ按照的处理方式进行处理。只有非索引视图的定义才存储Q而不存储视图的行。查询优化器视囑֮义中的逻辑U_执行计划Q而该执行计划是它为引用非索引视图?SQL 语句生成的?<br />    SQL Server 查询优化器用于决定何时用烦引视囄逻辑与用于决定何时对表用烦引的逻辑怼。如果烦引视图中的数据包括所有或部分 SQL 语句Q而且查询优化器确定视囄某个索引是低成本的访问\径,则不论查询中是否引用了该视图的名Uͼ查询优化器都选择此烦引。当 SQL 语句引用非烦引视图时Q分析器和查询优化器分?SQL 语句的源和视囄源,然后它们解析ؓ单个执行计划?</div><img src ="http://www.aygfsteel.com/314508313/aggbug/364691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/314508313/" target="_blank">陈小?/a> 2011-11-24 09:19 <a href="http://www.aygfsteel.com/314508313/archive/2011/11/24/364691.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>常见的数据库基础面试题大?/title><link>http://www.aygfsteel.com/314508313/archive/2011/11/24/364690.html</link><dc:creator>陈小?/dc:creator><author>陈小?/author><pubDate>Thu, 24 Nov 2011 01:17:00 GMT</pubDate><guid>http://www.aygfsteel.com/314508313/archive/2011/11/24/364690.html</guid><wfw:comment>http://www.aygfsteel.com/314508313/comments/364690.html</wfw:comment><comments>http://www.aygfsteel.com/314508313/archive/2011/11/24/364690.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.aygfsteel.com/314508313/comments/commentRss/364690.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/314508313/services/trackbacks/364690.html</trackback:ping><description><![CDATA[<div id="wmqeeuq" class="blog_content">1. 数据抽象Q物理抽象、概忉|象、视囄抽象,内模式、模式、外模式 <br />2. SQL语言包括数据定义、数据操U?Data Manipulation),数据控制(Data Control) <br />数据定义QCreate Table,Alter Table,Drop Table, Craete/Drop Index{?<br />数据操纵QSelect ,insert,update,delete, <br />数据控制Qgrant,revoke <br />3. SQL常用命oQ?<br />CREATE TABLE Student( <br />ID NUMBER PRIMARY KEY, <br />NAME VARCHAR2(50) NOT NULL);// <br />CREATE VIEW view_name AS <br />Select * FROM Table_name;//?<br />Create UNIQUE INDEX index_name ON TableName(col_name);//建烦?<br />INSERT INTO tablename {column1,column2,…} values(exp1,exp2,…);//插入 <br />INSERT INTO Viewname {column1,column2,…} values(exp1,exp2,…);//插入视图实际影响?<br />UPDATE tablename SET name=’zang 3’ condition;//更新数据 <br />DELETE FROM Tablename WHERE condition;//删除 <br />GRANT (Select,delete,…) ON (对象) TO USER_NAME [WITH GRANT OPTION];//授权 <br />REVOKE (权限? ON(对象) FROM USER_NAME [WITH REVOKE OPTION] //撤权 <br />列出工作人员及其领导的名字: <br />Select E.NAME, S.NAME FROM EMPLOYEE E S <br />WHERE E.SUPERName=S.Name <br />4. 视图Q?<br />5. 完整性约束:实体完整性、参照完整性、用户定义完整?<br />6. W三范式Q?<br />1NF:每个属性是不可分的?2NF:若关pR是1NF,且每个非d性都完全函数依赖于R的键。例SLC(SID#, CourceID#, SNAME,Grade),则不?NF; 3NF:若R?NFQ且它的M非键属性都不传递依赖于M候选键?<br />7. ER(实体/联系)模型 <br />8. 索引作用 <br />9. 事务Q是一pd的数据库操作Q是数据库应用的基本逻辑单位。事务性质Q原子性?<br />?原子性。即不可分割性,事务要么全部被执行,要么全部不被执行?<br />?一致性或可串性。事务的执行使得数据库从一U正状态{换成另一U正状?<br />?隔离性。在事务正确提交之前Q不允许把该事务Ҏ据的M改变提供lQ何其他事务, <br />?持久性。事务正提交后Q其l果永久保存在数据库中Q即使在事务提交后有了其他故障,事务的处理结果也会得C存?<br />10. 锁:׃n锁、互斥锁 <br />两段锁协议:阶段Q:加锁阶段 阶段Q:解锁阶段 <br />11. 死锁及处理:事务循环{待数据锁,则会死锁?<br />死锁处理Q预防死锁协议,死锁恢复机制 <br />12. 存储q程Q存储过E就是编译好了的一些sql语句?<br />1.存储q程因ؓSQL语句已经预编l过了,因此q行的速度比较快?<br />2. 可保证数据的安全性和完整性。通过存储q程可以使没有权限的用户在控制之下间接地存取数据库,从而保证数据的安全。通过存储q程可以使相关的动作在一起发生,从而可以维护数据库的完整性?<br />3.可以降低|络的通信量。存储过E主要是在服务器上运行,减少对客h的压力?<br />4Q存储过E可以接受参数、输出参数、返回单个或多个l果集以及返回倹{可以向E序q回错误原因 <br />5Q存储过E可以包含程序流、逻辑以及Ҏ据库的查询。同时可以实体封装和隐藏了数据逻辑?nbsp;  <br />13. 触发器: 当满发器条gQ则pȝ自动执行触发器的触发体?<br />触发旉Q有before,after.触发事gQ有insert,update,delete三种。触发类型:有行触发、语句触?<br />14.内联?外联接区别? <br />内连接是保证两个表中所有的行都要满接条Ӟ而外q接则不然?<br />在外q接中,某些不满条g的列也会昄出来Q也是_只限制其中一个表的行Q而不限制另一个表的行。分左连接、右q接、全q接三种 </div><img src ="http://www.aygfsteel.com/314508313/aggbug/364690.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/314508313/" target="_blank">陈小?/a> 2011-11-24 09:17 <a href="http://www.aygfsteel.com/314508313/archive/2011/11/24/364690.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Maven常用命ohttp://www.aygfsteel.com/314508313/archive/2011/11/23/364613.html陈小?/dc:creator>陈小?/author>Wed, 23 Nov 2011 01:35:00 GMThttp://www.aygfsteel.com/314508313/archive/2011/11/23/364613.htmlhttp://www.aygfsteel.com/314508313/comments/364613.htmlhttp://www.aygfsteel.com/314508313/archive/2011/11/23/364613.html#Feedback0http://www.aygfsteel.com/314508313/comments/commentRss/364613.htmlhttp://www.aygfsteel.com/314508313/services/trackbacks/364613.html阅读全文

]]>
վ֩ģ壺 Զ| | | з| | ʯׯ| | Դ| | ׯ| | | | | ͼ| | ̨| | ӻ| ¡| ĩ| | | ȷɽ| | | ƽ| żҸ| | | ̶| Ƽ| | | | ͤ| ɳ| | | | |