版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HYPERLINK"".net面试问答(大汇总)用.net做B/S结构的系统,您是用几层结构来开发,每一层之间的关系以及为什么要这样分层?ﻫ答:从下至上分别为:数据访问层、业务逻辑层(又或成为领域层)、表达层
数据访问层:有时候也称为是持久层,其功能重要是负责数据库的访问
业务逻辑层:是整个系统的核心,它与这个系统的业务(领域)有关
表达层:是系统的UI部分,负责使用者与整个系统的交互。
优点:
分工明确,条理清楚,易于调试,并且具有可扩展性。
缺陷:
增长成本。分层式结构究竟其优势何在?ﻫ1、开发人员可以只关注整个结构中的其中某一层;
2、可以很容易的用新的实现来替换原有层次的实现;
3、可以减少层与层之间的依赖;
4、有助于标准化;
5、利于各层逻辑的复用。
概括来说,分层式设计可以达至如下目的:分散关注、松散耦合、逻辑复用、标准定义。分层式结构也不可避免具有一些缺陷:
1、减少了系统的性能。这是不言而喻的。假如不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完毕。
2、有时会导致级联的修改。这种修改特别体现在自上而下的方向。假如在表达层中需要增长一个功能,为保证其设计符合分层式结构,也许需要在相应的业务逻辑层和数据访问层中都增长相应的代码。MVC模式MVC(Model-View-Controller)把交互系统的组成分解成模型、视图、控制器三种部件mvc的优点:1.通过把项目提成modelview和controller,使得复杂项目更加容易维护。2.没有使用viewstate和服务器表单控件,可以更方便的控制应用程序的行为3.应用程序通过controller来控制程序请求,可以提供丰富的url重写。4.对单元测试的支持更加杰出5.在团队开发模式下表现更杰出MVC的局限性:
(1)增长了系统结构和实现的复杂性。对于简朴的界面,严格遵循MVC,使模型、视图与控制器分离,会增长结构的复杂性,并也许产生过多的更新操作,减少运营效率。
ﻫ(2)视图与控制器间的过于紧密的连接。视图与控制器是互相分离,但的确联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。
(3)视图对模型数据的低效率访问。依据模型操作接口的不同,视图也许需要多次调用才干获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。asp.net如何实现MVC模式,举例说明!web/business/dataaccess
列举ASP.NET页面之间传递值的几种方式。ﻫ1.使用QueryString,如....?id=1;response.Redirect()....
2.使用Session变量ﻫ3.使用Server.Transfer请说明在.net中常用的几种页面间传递参数的方法,并说出他们的优缺陷。ﻫQueryString
传递一个或多个安全性规定不高或是结构简朴的数值。但是对于传递数组或对象的话,就不能用这个方法了ﻫsession(viewstate)简朴,但易丢失作用于用户个人,过量的存储会导致服务器内存资源的耗尽。
application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock
cookie简朴,但也许不支持,也许被伪造Cookie是存放在客户端的,而session是存放在服务器端的。并且Cookie的使用要配合ASP.NET内置对象Request来使用
inputttype="hidden"简朴,也许被伪造ﻫurl参数简朴,显示于地址栏,长度有限ﻫServer.Transfer
把流程从当前页面引导到另一个页面中,新的页面使用前一个页面的应答流
数据库稳定,安全,但性能相对弱
ﻫ什么是Viewstate?它有什么作用?ViewState用来保存页面状态,就是说提交之后我们还可以看到文本框里面的内容就是ViewState保存的功劳。
ViewState只维护当前页面的状态,不同页面之间不能共享,Session可以。
ViewState你可以理解为一个隐藏控件。ASP.Net页面生命周期
每个页面的生命周期为用户的每一次访问,也就是说每一次客户端与服务器之间的一个往返过程.全局变量的生命周期在此之间.1.Page_Init();
2.LoadViewStateandPostbackdata;ﻫ3.Page_Load();
4.Handlecontrolevents;
5.Page_PreRender();
6.Page_Render();
7.Unloadevent;ﻫ8.Disposemethodcalled;ADO.net中常用的对象有哪些?分别描述一下。ﻫ答:
Connection
打开数据库连接ﻫCommand
执行数据库命令ﻫDataAdapter
连接数据,执行数据库命令,填充DataSet
DataSet
数据在内存中的缓存,数据结构
DataReader
只读向前的读取数据库DataReader和DataSet的异同ﻫDataReader使用时始终占用SqlConnection,在线操作数据库..任何对SqlConnection的操作都会引发DataReader的异常..由于DataReader每次只在内存中加载一条数据,所以占用的内存是很小的..由于DataReader的特殊性和高性能.所以DataReader是只进的..你读了第一条后就不能再去读取第一条了..ﻫDataSet则是将数据一次性加载在内存中.抛弃数据库连接..读取完毕即放弃数据库连接..由于DataSet将数据所有加载在内存中.所以比较消耗内存...但是确比DataReader要灵活..可以动态的添加行,列,数据.对数据库进行回传更新操作...
存储过程和sql语句的优缺陷优点:
1.提高性能,减少网络传输,节约时间。2.减少网络流量
存储过程位于服务器上,调用的时候只须传递存储过程的名称以及参数,不用每次访问都传递很长的sql语句。4.安全性
减少sql注入式袭击。5.可维护性高
更新存储过程通常比更改、测试以及重新部署程序集需要较少的时间和精力。缺陷:1.交互性差。2.可移植性差
说出你所了解的数据库访问组件(例如ADO,至少4种)
答:ADO,ADO.Net,MDAC(MicrosoftDataAccessComponents),MicrosoftSQLServerOLEDBProvider,MicrosoftJetOLEDBProvider,DesktopDatabaseDriversODBCDriver,VisualFoxProODBCDriver什么是面向对象ﻫ万物都是对象,其重要特性:封装、继承、多态如何实现多态
1.通过对象直接调用成员函数时,始终默认使用该对象的类的成员函数(除非用::显示指定类名)。2.通过指向对象的指针或引用调用成员函数时:假如该函数是实函数,则调用该指针或引用的类的成员函数;假如该函数是虚函数,则调用该指针或引用指向的对象的类的成员函数。面向对象的思想重要涉及什么?ﻫ答:任何事物都可以理解为对象,其重要特性:继承。封装。多态。特点:代码好维护,安全,隐藏信息什么是装箱和拆箱?ﻫ答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。装箱(boxing)是将值类型的数据转化成引用类型,inti=3;objecto=i;便是装箱过程,而拆箱(unboxing)是将饮用类型数据转换值类型,比如intj=(int)o;属于拆箱ﻫ
什么是Interface?它与AbstractClass有什么区别?接口(Interface)是用来定义行为规范的,不会有具体实现,而抽象类除定义行为规范外,可以有部分实现,但一个类能实现多个接口,但只能继承一个父类
什么时候使用抽象类,什么时候用接口ﻫ
接口用于规范,抽象类用于共性。接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。抽象类可以提供某些方法的部分实现,接口不可以.抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。再抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外接口不能包含字段、构造函数、析构函数、静态成员或常量。什么是抽象类(abstractclass)?
一种不可以被实例化的类。抽象类中一般具有抽象方法,当然也可有具体实现。继承类只有实现过所有抽象类的抽象方法后才干被实例化。何时必须声明一个类为抽象类?
当这个类中包含抽象方法时,或是该类并没有完全实现父类的抽象方法时。接口(interface)是什么?ﻫ只具有共有抽象方法(publicabstractmethod)的类。这些方法必须在子类中被实现。为什么不能指定接口中方法的修饰符?
接口中的方法用来定义对象之间通信的契约,指定接口中的方法为私有或保护没故意义。他们默认为公有方法。可以继承多个接口么?
当然。那么假如这些接口中有反复的方法名称呢?ﻫ这种情况中你可以决定如何实现。当然需要特别得小心。但是在编译环节是没有问题的。接口和抽象类的区别是什么?ﻫ接口中所有方法必须是抽象的,并且不能指定方法的访问修饰符。抽象类中可以有方法的实现,也可以指定方法的访问修饰符。
详述.NET里class和struct的异同!类是引用类型,可以继承类、接口和被继承,有默认的构造函数,有析构函数,可以使用abstract和sealed,有protected修饰符,必须使用new初始化。ﻫ结构是值类型,只能继承接口,不能被继承,没有默认的构造函数,可以创建,没有析构函数,不可以用abstract和sealed,没有protected修饰符,可以不用new初始化。如何选择结构还是类
1.堆栈的空间有限,对于大量的逻辑的对象,创建类要比创建结构好一些
2.结构表达如点、矩形和颜色这样的轻量对象ﻫ例如,假如声明一个具有1000个点对象的数组,则将为引用每个对象分派附加的内存。
在此情况下,结构的成本较低。ﻫ3.在表现抽象和多级别的对象层次时,类是最佳的选择ﻫ4.大多数情况下该类型只是一些数据时,结构时最佳的选择C#中的接口和类有什么异同。
异:ﻫ不能直接实例化接口。ﻫ接口不包含方法的实现。ﻫ接口、类和结构可从多个接口继承。但是C#只支持单继承:类只能从一个基类继承实现。ﻫ类定义可在不同的源文献之间进行拆分。
同:ﻫ接口、类和结构可从多个接口继承。
接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。ﻫ接口可以包含事件、索引器、方法和属性。
一个类可以实现多个接口。
const和readonly有什么区别?
const关键字用来声明编译时常量,readonly用来声明运营时常量。用sealed修饰的类有什么特点ﻫsealed修饰符用于防止从所修饰的类派生出其它类。假如一个密封类被指定为其他类的基类,则会发生编译时错误。ﻫ密封类不能同时为抽象类。ﻫsealed修饰符重要用于防止非故意的派生,但是它还能促使某些运营时优化。具体说来,由于密封类永远不会有任何派生类,所以对密封类的实例的虚拟函数成员的调用可以转换为非虚拟调用来解决。虚函数的用法
答:
1)virtual指明一成员函数为虚函数,而virtual仅用于类的定义里,在类外可不加此关键字.
2)一个类的成员函数被定义为虚函数时,子类该函数仍保持虚函数特性.ﻫ3)子类覆盖此函数时,定义里可不加virtual关键字,但函数声明要和基类的完全一致!且此声明是必须的.
4)不是纯虚函数时,父类的虚函数必须要实现;而若将父类的虚函数设定为纯虚函数时,子类必需要覆盖之并且必须要实现之!解释virtual、sealed、override和abstract的区别
virtual申明虚方法的关键字,说明该方法可以被重写ﻫsealed说明该类不可被继承
override重写基类的方法
abstract申明抽象类和抽象方法的关键字,抽象方法不提供实现,由子类实现,抽象类不可实例化。重载和覆写有什么区别?
答:重载是方法的名称相同,不同的参数类型,不同的参数个数,不同的参数顺序。覆写提供了子类中改变父类方法行为的实现(是进行基类中函数的重写)。在方法定义中,virtual有什么含义?
答:被virtual修饰的方法可以被子类覆写可以将非静态的方法覆写成静态方法吗?ﻫ答:不能,覆写方法的署名必须与被覆写方法的署名保持一致,除了将virtual改为override。可以覆写私有的虚方法吗?ﻫ答:不可以,甚至子类中无法访问父类中的私有方法可以阻止某一个类被其他类继承吗?
答:可以,使用关键字sealed可以实现允许某个类别继承,但不允许其中的某个方法被覆写吗?
答:可以,标记这个类为public,并标记这个方法为sealed。如何区别重载方法?ﻫ不同的参数类型,不同的参数个数,不同的参数顺序c#继承:
base表达当前对象基类的实例(使用base关键字可以调用基类的成员)this表达当前类的实例在静态方法中不可以使用base和this关键字派生类会继承基类所有的成员但是构造函数和析构函数不会被继承注意假如派生类的方法和基类的方法同名则基类中的方法将会被隐藏假如需要隐藏则可以使用关键字new来隐藏假如不写new关键字默认解决为隐藏虽然基类中同名的方法被隐藏了但是还是可以通过base关键字来调用//假如子类方法的方法名和基类的方法名相同时,系统将隐藏基类同名方法,自动调用子类的同名方法//派生类会继承基类所有的成员,但是不能显示调用基类的是有成员//在派生类中不可以调用基类的是有成员,如num1,num2,但是可以实现调用基类方法virtual用在基类中指定一个虚方法属性表达这个方法属性可以重写override用在派生类中表达对基类虚方法属性的重写不能重写非虚方法或静态方法重写的基方法必须是virtualabstract或override的为什么override也可以重写呢由于基类中的override事实上是对基类的基类进行的重写由于继承可传递所以也可以对基类中override的方法进行重写override声明不能更改virtual方法的可访问性override方法和virtual方法必须具有相同的访问级别修饰符不能使用修饰符newstaticvirtual或abstract来修改override方法重写属性声明必须指定与继承属性完全相同的访问修饰符类型和名称并且被重写的属性必须是virtualabstract或override的标记允许被重写修饰静态方法中不允许使用virtual关键字成员变量允许使用virtual关键字属性可以被声明为虚属性(使用virtual关键字)重写基类的方法(重写同名的方法中有virtual关键字的方法)重写和隐藏的区别隐藏(new关键字)是给子类的同名方法分派新的内存空间重写(override关键字)是子类的同名方法放在基类同名方法的本来所在位置基类的同名方法位置向后移属性也可以重写virtual关键字和override关键字是成对出现的否则是语法错误派生类可以通过将重写声明为sealed来停止虚拟继承这需要在类成员声明中的override关键字前面放置sealed关键字在子类中重写基类中的虚方法时可以使用base关键字调用基类中的虚方法//使用base关键可以在子类中访问基类同名的方法//父类的引用指向子类的实例Testts=newTest2();父类的引用指向子类的实例(调用的是子类的方法)父类的引用只结识父类的方法不结识子类的新方法可以用来调用被子类覆盖的父类的方法父类的引用仍然到父类方法位置去调用假如基类方法被声明为virtual并且在子类中被override结果访问到的是被子类override的方法
C#中的委托是什么?事件是不是一种委托?
委托可以把一个方法作为参数代入另一个方法。委托可以理解为指向一个函数的引用。是,是一种特殊的委托
C#中的堆和栈栈(Stack)由系统管理生存期,存储代码执行和调用途径,执行或调用完毕即从栈中清除;ﻫ堆(Heap)中保存值和对象,调用完毕之后仍然存在,由垃圾回收器查找栈中有无指向该值或对象的引用,无则从堆中删除
你对泛型了解吗?简朴说明一下泛型的有什么好处?泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。运用“参数化类型”将类型抽象化,从而实现灵活的复用
好处是——类型安全和减少装箱、拆箱。提高性能、类型安全和质量,减少反复性的编程任务C#中所有对象共同的基类是什么?ﻫSystem.Object.如何在C#中实现继承?ﻫ在类名后加上一个冒号,再加上基类的名称。C#支持多重继承吗?ﻫ不支持。可以用接口来实现。被protected修饰的属性/方法在何处可以访问?ﻫ在继承或间接继承与这个类的子类中可以访问。私有成员会被继承么?
会,但是不能被访问。所以看上去他们似乎是不能被继承的,但事实上的确被继承了。C#提供一个默认的无参构造函数,当我实现了此外一个有一个参数的构造函数时,还想保存这个无参数的构造函数。这样我应当写几个构造函数?ﻫ答:两个,一旦你实现了一个构造函数,C#就不会再提供默认的构造函数了,所以需要手动实现那个无参构造函数。
简述private、protected、public、internal修饰符的访问权限。ﻫprivate:私有成员,在类的内部才可以访问。
protected:保护成员,该类内部和继承类中可以访问。ﻫpublic:公共成员,完全公开,没有访问限制。ﻫinternal:在同一命名空间内可以访问。new的两种用法ﻫ答:实例话对象,隐藏基类方法。.new有几种用法
第一种:newClass();第二种:覆盖方法publicnewXXXX(){}第三种:new约束指定泛型类声明中的任何类型参数都必须有公共的无参数构造函数。3.datagrid.datasouse可以连接什么数据源[dataset,datatable,dataview]dataset,datatable,dataview,IList类成员有()种可访问形式可访问性:public,protected,private,internal委托与事件的用法
答:publicdelegatevoidhandels();//返回值是void,没有参数
publiceventhandelseventHandels;
his.eventHandels=newhandels(fun);ﻫpublicvoidfun()ﻫ
{}
传入某个属性的SET方法的隐含参数的名称是什么?ﻫ答:value,它的类型和属性所声明的类型相同。string是值类型还是引用类型?引用类型String类与StringBuilder类有什么区别?为什么在.Net类库中要同时存在这2个类?(简答)stringBuilder比string更节约内存,所以stringBuilder更快String对象是不可改变的。每次使用System.String类中的方法之一或进行运算时(如赋值、拼接等)时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分派新的空间。而StringBuilder则不会。在需要对字符串执行反复修改的情况下,与创建新的String对象相关的系统开销也许会非常昂贵。假如要修改字符串而不创建新的对象,则可以使用System.Text.StringBuilder类。例如,当在一个循环中将许多字符串连接在一起时,使用StringBuilder类可以提高性能。
在C#中,stringstr=null与stringstr=“”请尽量使用文字或图象说明其中的区别。ﻫ答:stringstr=null是不给他分派内存空间,而stringstr=""给它分派长度为空字符串的内存空间。
ASP.net的身份验证方式有哪些?分别是什么原理?
答:Windwos(默认)
用IIS...From(窗体)
用帐户....Passport(密钥)
Session有什么重大BUG,微软提出了什么方法加以解决?
答:是iis中由于有进程回收机制,系统繁忙的话Session会丢失,可以用Sateserver或SQLServer数据库的方式存储Session但是这种方式比较慢,并且无法捕获Session的END事件c#中的三元运算符是?:.能用foreach遍历访问的对象需要实现()接口或声明(GetEnumerator)方法的类型。.<%#%>和<%%>有什么区别?<%#%>表达绑定的数据源<%%>是服务器端代码块常量在.net(C#or)中如何获得当前窗体或控件的句柄,特别是控件自身的句柄(请列举)this(C#)Me(vb.net)..C#可否对内存进行直接的操作?在.net下,.net引用了垃圾回收(GC)功能,它替代了程序员但是在C#中,不能直接实现Finalize方法,而是在析构函数中调用基类的Finalize()方法DateTime是否可认为null?不能,由于其为Struct类型,而结构属于值类型,值类型不能为null,只有引用类型才干被赋值nullDateTime.Parse(myString);这行代码有什么问题?有问题,当myString不能满足时间格式规定的时候,会引发异常,建议使用DateTime.TryParse()net的错误解决机制是:采用try->catch->finally结构,为什么不提倡catch(Exception)ﻫtry..catch在出现异常的时候影响性能;应当捕获更具体得异常,比如IOExeception,OutOfMemoryException等catch(Exceptione){throwe;}和catch(Exceptione){throw;}的区别将发生的异常对象抛出,另一个只是抛出异常,并没有抛出原异常对象)error和exception区别:error表达恢复不是不也许但很困难的情况下的一种严重问题。比如说内存溢出。不也许指望程序能解决这样的情况。exception表达一种设计或实现问题。也就是说,它表达假如程序运营正常,从不会发生的情况。
GET与POST的区别
在FORM提交的时候,假如不指定Method,则默认为GET请求,Form中提交的数据将会附加在url之后,以?分开与url分开。字母数字字符原样发送,但空格转换为“+“号,其它符号转换为%XX,其中XX为该符号以16进制表达的ASCII(或ISOLatin-1)值。GET请求请提交的数据放置在HTTP请求协议头中,而POST提交的数据则放在实体数据中;在使用POST方法的情况下,传输数据时不会将数据作为URL的一部分;它们会作为一个独立的实体来传输。因此,POST方法更安全,你也可以用这个方法传输更多的数据。并且用POST传输的数据不一定要是文本,用GET方法传输的却一定要是文本。(1)get是从服务器上获取数据,post是向服务器传送数据。(1)在客户端,Get方式在通过URL提交数据,数据在URL中可以看到;POST方式,数据放置在HTMLHEADER内提交。(2)对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。(2)GET方式提交的数据最多只能有1024字节,而POST则没有此限制。(3)安全性问题。正如在(1)中提到,使用Get的时候,参数会显示在地址栏上,而Post不会。所以,假如这些数据是中文数据并且是非敏感数据,那么使用get;假如用户输入的数据不是中文字符并且包含敏感数据,那么还是使用post为好。Bind和Eval函数的区别
绑定表达式ﻫ
<%#Eval("字段名")%>
<%#Bind("字段名")%>
1
Eval单向绑定:数据是只读的ﻫ
Bind双向绑定:数据可以更改,并返回服务器端,服务器可以解决更改后的数据,如存入数据库.
2.当对次表达式操作时候,必须用Eval如<%#Eval("字段名").ToString().Trim()%>
3绑定控件的属性时要用Bind,而Eval则是其它一些。
例如:<asp:TextBoxID="First"RunAt="Server"Text='<%#Bind("FirstName")%>'/>ﻫ
例如:<td><%#Eval("ProductID")%></td>Response.Redirect和Server.Transferﻫ请求的过程:
1)浏览器aspx文献请求>服务器执行--->碰到Response.Redirect语句->服务器发送Response.Redirect后面的地址给客户机端的浏览器>浏览器请求执行新的地址
2)浏览器aspx文献请求->服务器执行->碰到Server.Transfer语句->服务器转向新的文献ﻫ可以见Server.Transfer比Response.Redirect少了一次服务器发送回来和客户端再请求的过程.ﻫ跳转对象:
1)Response.Redirect可以切换到任何存在的网页。
2)Server.Transfer只能切换到同目录或者子目录的网页.
数据保密:
1、Response.Redirect后地址会变成跳转后的页面地址。
2、Server.Transfer后地址不变,隐藏了新网页的地址及附带在地址后边的参数值。具有数据保密功能。ﻫ传递的数据量(网址后附带的参数):
1、Response.Redirect可以传递的数据以2KB(也就是地址栏中地址的最大的长度)为限。ﻫ2、传递的数据超过2KB时,务必使用Server.Transfer。
Server.UrlEncode、HttpUtility.UrlDecode的区别
Server.UrlEncode的编码方式是按照本地程序设立的编码方式进行编码的,而HttpUtility.UrlEncode是默认的按照.net的utf-8格式进行编码的。
Static和非Static的区别:ﻫ一、用Static声明的方法和变量,不需要实例化该类就调用;二、Static的,就一定要用实例化的对象来调用,即用new来实例化。举例说:假如有一个类People,有一个Static的方法MiaoShu(),调用方法就是People.MisoShu()有一个非Static的方法getName(),调用方法就是Peoplep=newPeople();p.getName();如何实现连接池保证你每一次的连接使用相同的连接字符串(和连接池相同);只有连接字符串相同时连接池才会工作。假如连接字符串不相同,应用程序就不会使用连接池而是创建一个新的连接。优点使用连接池的最重要的优点是性能。创建一个新的数据库连接所花费的时间重要取决于网络的速度以及应用程序和数据库服务器的(网络)距离,并且这个过程通常是一个很耗时的过程。而采用数据库连接池后,数据库连接请求可以直接通过连接池满足而不需要为该请求重新连接、认证到数据库服务器,这样就节省了时间。缺陷数据库连接池中也许存在着多个没有被使用的连接一直连接着数据库(这意味着资源的浪费)。技巧和提醒1.当你需要数据库连接时才去创建连接池,而不是提前建立。一旦你使用完连接立即关闭它,不要等到垃圾收集器来解决它。2.在关闭数据库连接前保证关闭了所有用户定义的事务。3.不要关闭数据库中所有的连接,至少保证连接池中有一个连接可用。假如内存和其他资源是你必须一方面考虑的问题,可以关闭所有的连接,然后在下一个请求到来时创建连接池。连接池FAQ1.何时创建连接池?当第一个连接请求到来时创建连接池;连接池的建立由数据库连接的连接字符创来决定。每一个连接池都与一个不同的连接字符串相关。当一个新的连接请求到来时假如连接字符串和连接池使用的字符串相同,就从连接池取出一个连接;假如不相同,就新建一个连接池。2.何时关闭连接池?当连接池中的所有连接都已经关闭时关闭连接池。3.当连接池中的连接都已经用完,而有新的连接请求到来时会发生什么?当连接池已经达成它的最大连接数目时,有新的连接请求到来时,新的连接请求将放置到连接队列中。当有连接释放给连接池时,连接池将新释放的连接分派给在队列中排队的连接请求。你可以调用close和dispose将连接归还给连接池。4.我应当如何允许连接池?对于.NET应用程序而言,默认为允许连接池。(这意味着你可以不必为这件事情做任何的事情)当然,假如你可以在SQLConnection对象的连接字符串中加进Pooling=true;保证你的应用程序允许连接池的使用。5.我应当如何严禁连接池?ADO.NET默认为允许数据库连接池,假如你希望严禁连接池,可以使用如下的方式:1)使用SQLConnection对象时,往连接字符串加入如下内容:Pooling=False;2)使用OLEDBConnection对象时,往连接字符串加入如下内容:OLEDBServices=-4;
提高.NET的性能ﻫ1使用异步方式调用Web服务和远程对象只要有也许就要避免在请求的解决过程中对Web服务和远程对象的同步调用,由于它占用的是的ASP.NET线程池中的工作线程,这将直接影响Web服务器响应其它请求的能力。2使用适当的Caching策略来提高性能3判断字符串,不要用""比较。//避免ﻫif(strABC!=null&&strABC!="")
{}//推荐
if(!strABC.IsNullOrEmpty)
{}4页面优化5用完立即关闭数据库连接
6尽量使用存储过程,并优化查询语句ﻫ7只读数据访问用SqlDataReader,不要使用DataSet……….
.UDP连接和TCP连接的异同ﻫ答:前者只管传,不管数据到不到,无须建立连接.后者保证传输的数据准确,须要连结.请解释转发与跳转的区别
转发就是服务端的跳转A页面提交数据到B页面,B页面进行解决然后从服务端跳转到其它页面
跳转就是指客户端的跳转简述你对XMLWebService的原理的结识?
答:运用SOAP(简朴对象访问协议)在http上执行远程方法的调用,也可以使用WSDL(Web服务描述语言)来完毕完整的描述Web服务,然后用UDDI注册各个服务提供商提供的服务,以便共享他们。什么叫应用程序域?
答:应用程序域可以理解为一种轻量级进程。起到安全的作用。占用资源小。CTS、CLS、CLR分别作何解释?
答:CTS:通用语言系统。CLS:通用语言规范。CLR:公共语言运营库。什么是受管制的代码?ﻫ答:unsafe:非托管代码。不通过CLR运营。什么是强类型系统?
答:RTTI:类型辨认系统。什么是code-behind技术ﻫcodebehind是指代码和用户界面分开
aspxandcs在.net中,配件的意思是?ﻫ答:程序集。(中间语言,源数据,资源,装配清单)常用的调用WebService的方法有哪些?
答:1.使用WSDL.exe命令行工具。ﻫ
2.使用VS.NET中的AddWebReference菜单选项netRemoting的工作原理是什么?ﻫ答:服务器端向客户端发送一个进程编号,一个程序域编号,以拟定对象的位置。O/RMapping的原理ﻫ答:运用反射,配置将对象和数据库表映射remoting和webservice两项技术的理解以及实际中的应用。
答:WS重要是可运用HTTP,穿透防火墙。而Remoting可以运用TCP/IP,二进制传送提高效率。out保存字怎么使用,什么时候使用ﻫ答:有时为了从一个函数中返回多个值,我们需要使用out关键字,把输出值赋给通过引用传递给方法的变量(也就是参数)。但C#规定变量再被引用的前必须初始化。在调用该方法时,还需要添加out关键字PDB是什么东西?在调试中它应当放在哪里?PDB是用于保存调试和项目状态信息的文献,在debug的时候将产生pdb文献,调试的时候应当放在和相应应用程序集相同目录。
使用ASMX的XMLWeb服务与使用SOAP的.NETRemoting的区别?Web服务使用的消息机制,而Remoting采用的RPC.WebService能用于不同平台,不同语言,Remoting只合用于.Net。效率上Remoting高于XmlWebService类型系统是由XMLSchema表达的吗?CLS是XMLSchema表达的吗?不清楚从概念上阐述前期绑定(early-binding)和后期绑定(late-binding)的区别?这个就像是强弱类型的比较相似,前期绑定是在编译的时候就拟定了要绑定的数据,而后期绑定是在运营的时候才填充数据。所以前期绑定假如失败,会在编译时报编译错误,而后期绑定失败只有在运营时的时候才发生调用Assembly.Load算静态引用还是动态引用?动态
列举一下你所了解的XML技术及其应用ﻫ答:保存配置,站与站之间的交流,WEBSERVICE。以及与数据库的数据交互等地方都要用它.ﻫ7.如何理解委托?
答:
相称于函数指针,定义了委托就可以在不调用原方法名称的情况下调用那个方法.ﻫ委托具有以下特点:
委托类似于C++函数指针,但它是类型安全的。ﻫ委托允许将方法作为参数进行传递。
委托可用于定义回调方法。
委托可以链接在一起;例如,可以对一个事件调用多个方法。ﻫ方法不需要与委托署名精确匹配。有关更多信息,请参见协变和逆变。
C#2.0版引入了匿名方法的概念,此类方法允许将代码块作为参数传递,以代替单独定义的方法。
概述反射和序列化反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用HTTP通过Internet在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。11)
XmlSerializer是如何工作的?使用这个类的进程需要什么ACL权限?我只知道XmlSerializer是将对象的属性和字段进行序列化和反序列化的,序列化成为xml数据,反序列化再将xml转换成对象。应当至少需要ACL权限中的读权限.23)XmlSerializer使用的针对属性的模式有什么好处?解决了什么问题?只序列化有用的数据,而不是序列化整个对象。实现没必要的数据冗余,和提高序列化时的性能。
26.根据委托(delegate)的知识,请完毕以下用户控件中代码片段的填写:
namespacetestﻫ{ﻫpublicdelegatevoidOnDBOperate();ﻫpublicclassUserControlBase:System.Windows.Forms.UserControlﻫ{
publiceventOnDBOperateOnNew;
privatevoidtoolBar_ButtonClick(objectsender,System.Windows.Forms.ToolBarButtonClickEventArgse)ﻫ{ﻫif(e.Button.Equals(BtnNew))ﻫ{ﻫ//请在以下补齐代码用来调用OnDBOperate委托署名的OnNew事件。
}
}ﻫ}ﻫ答:if(OnNew!=null)
ﻫ
OnNew(this,e);27.分析以下代码,完毕填空
stringstrTmp="abcdefg某某某";
inti=System.Text.Encoding.Default.GetBytes(strTmp).Length;
intj=strTmp.Length;
以上代码执行完后,i=j=
答:i=13,j=1028.SQLSERVER服务器中,给定表table1中有两个字段ID、LastUpdateDate,ID表达更新的事务号,LastUpdateDate表达更新时的服务器时间,请使用一句SQL语句获得最后更新的事务号ﻫ答:SelectIDFROMtable1WhereLastUpdateDate=(SelectMAX(LastUpdateDate)FROMtable1)29.根据线程安全的相关知识,分析以下代码,当调用test方法时i>10时是否会引起死锁?并简要说明理由。
publicvoidtest(inti)
{
lock(this)ﻫ{
if(i>10)
{
i--;
test(i);
}ﻫ}
}
答:不会发生死锁,(但有一点int是按值传递的,所以每次改变的都只是一个副本,因此不会出现死锁。但假如把int换做一个object,那么死锁会发生)3)什么叫圈复杂度(cyclomaticcomplexity)?为什么它很重要?不知道,望指教?4)写一个标准的lock(),在访问变量的前后创建临界区,要有"双重检查",lock的使用
publicvoidLockTest()ﻫ
{
ObjectlockObj=newObject();ﻫ
lock(lockObj)
{ﻫ
//ﻫ
}ﻫ
}5)什么叫FullTrust?放入GAC的assembly是否是FullTrust的?FullTrust完全信任。放入GAC中的Assembly是否FullTrust我的理解不是。我理解FullTrust是可以通过代码设定的6)代码加上需要安全权限的特性有什么好处?可以更加灵活的设立对代码的访问权限,实现代码级保护。?这点不是特清楚,有明白的给讲解下7)gacutil/l|find/i"Corillian"这句命令的作用是什么?全局程序集缓存中假如有Corillian就更新该程序集,没有就安装8)sn-tfoo.dll这句命令是干嘛的?显示程序集foo.dll的公钥标记9)DCOM需要防火墙打开哪些端口?端口135是干嘛用的?135端口,由于DCOM的端标语是随机分派的,默认情况下,会分派1024以上的端标语,所以默认情况下,DCOM不能穿越防火墙。由于主线不晓得开哪个端口。但有解决办法可以使DCOM分派的端标语固定,135是远程过程调用(RPC)的默认端口10)对比OOP和SOA,它们的目的分别是什么?我想OOP和SOA应当没有对比性吧。OOP是一种编程模型,强调将复杂的逻辑分解出小的模块,特性是继承,封装和多态。而SOA是一个技术框架,技术框架和编程模型应当说不是一码事吧?SOA的思想是将业务逻辑封装成服务或者中间件提供应应用程序来调用,当然其组件化思想是继承和发扬了OOP的优点。
13)Debug.Write和Trace.Write有什么不同?何时应当使用哪一个?Debug.Write是调试的时候向跟踪窗口输出信息。当编译模式为debug的时候才有效,为release的时候Debug.Write在编译的时候会忽略,而Trace则是在debug和release两种模式下均可以向跟踪窗口输出信息。14)DebugBuild和ReleaseBuild的区别,是否会有明显的速度变化?请说明理由。Debug会产生pdb文献,release不会。Debug用于开发时的调试,不能要于部署,而release用于部署.debug编译一些特殊代码,比如#IFDEBUGDebug.Write等,而Release则会将那些特殊标记省略15)JIT是以assembly为单位发生还是以方法为单位发生?这对于工作区有何影响?方法,道理很简朴,由于对于一次运营,很也许只用到一个程序集中很少数类型和对象,而大部分也许并不会被使用,此时CLR傻乎乎的给整个程序集都给Compile了,CLR不是傻疯了么
17)a.Equals(b)和a==b同样吗?不同样。a.Equals(b)表达a与b一致,a==b表达a与b的值相等18)在对象比较中,对象一致和对象相等分别是指什么?对象一致是指两个对象是同一个对象,引用相同。而对象相等是指两个对象的值相同,但引用不一定相同19)在.NET中如何实现深拷贝(deepcopy)?实现IClonable接口20)请解释一下IClonableIClonable方法是实现深度复制的接口,实现它应当能深度复制一个对象出来。深度复制的特性的调用对象的构造方法,创建新的对象,涉及创建对象中嵌套的引用对象的新实例。而Shadow复制则不同,是浅表复制,不重新创建新实例。浅表复制的实现是Object.MemberWiseClone().深度复制(DeepCopy)与浅表复制(ShadowCopy)的比较
publicclassName
{
publicstringFirstName;ﻫ
publicstringLastName;ﻫ
}ﻫ
publicclassPerson:ICloneableﻫ
{
publicNamePersonName;ﻫ
publicstringEmail;
/**////<summary>ﻫ
///DeepCopy的例子ﻫ
///</summary>
///<returns></returns>ﻫ
publicObjectClone()
{
Personp=newPerson();
p.Email=this.Email;
p.PersonName=newName();
p.PersonName.FirstName=this.PersonName.FirstName;ﻫ
p.PersonName.LastName=this.PersonName.LastName;
returnp;
}
publicvoidChangLastName(stringlastName)
{
this.PersonName.LastName=lastName;
}ﻫ
publicstaticvoidMain()
{ﻫ
Personp=newPerson();ﻫ
p.PersonName=newName();
p.PersonName.LastName="jill";ﻫ
p.PersonName.FirstName="zhang";ﻫ
p.Email="";
PersonsameNamePerson=p.Clone()asPerson;
sameNamePerson.ChangLastName("clr_");ﻫ
Console.WriteLine(p.PersonName.LastName);ﻫ
Console.WriteLine(sameNamePerson.PersonName.LastName);
PersonsamePerson=p.MemberwiseClone()asPerson;
samePerson.ChangLastName("Shadow");
Console.WriteLine(p.PersonName.LastName);ﻫ
Console.WriteLine(sameNamePerson.PersonName.LastName);ﻫ
Console.Read();
}
}
24)为什么不应当在.NET中使用out参数?它究竟好不好?我挺喜欢用out参数的,特别是当函数需要有多于1个返回的时候,我比较乐意用out,至于它好不好没研究过?25)特性可以放到某个方法的参数上?假如可以,这有什么用?可以,作用可以对参数有进一步限定,比如输入参数为int类型,可以通过允许AttributeTargets=ParameterInfo的Attribute自定义实现来限定输入参数的大小,比如当输入参数小于100的时候便抱错。对方法的参数设立Attribute的例子ﻫ
[AttributeUsage(AttributeTargets.Parameter)]ﻫ
publicclassParameterAtt:Attributeﻫ
{ﻫ
publicintMin=100;ﻫ
}
publicclassAttributeTest
{
publicvoidTestMethod([ParameterAtt(Min=100)]intpar1)ﻫ
{
ParameterInfopara=MethodInfo.GetCurrentMethod().GetParameters()[0];ﻫ
ParameterAttatt=ParameterAtt.GetCustomAttribute(para,typeof(ParameterAtt))asParameterAtt;
if(att.Min>par1)ﻫ
{
thrownewException("规定para1最小为"+att.Min);
}ﻫ
}ﻫ
}
9.执行下面代码后:StringstrTemp="abcdefg某某某";IntiSystem.Text.Encoding.Default.GetBytes(strTemp).Length;Intj=strTemp.Length;问:i=(14);j=(11)i=(14);j=(11)中文两个字节12.概述.NET里对remoting和webservice两项技术的理解和实际中的应用。远程逻辑调用,remoing接口只能用在.net中
9.
如何给服务器端控件增长客户端脚本。
答:控件的Attributes6.私有程序集与共享程序集有什么区别?ﻫ一个私有程序集通常为单个应用程序所使用,并且存储于这个应用程序所在的目录之中,或此目录下面的一个子目录中。共享程序集通常存储在全局程序集缓存(GlobalAssemblyCache)之中,这是一个由.NET运营时所维护的程序集仓库。共享程序集通常是对许多应用程序都有用的代码库,比如.NETFramework类。10.请解释ASP.NET中以什么方式进行数据验证
Aps.net中有非空验证,比较验证,取值范围验证,正则表达式验证及客户自定义验证五大控件,另尚有一个集中验证信息解决控件11.WEB控件可以激发服务端事件,请谈谈服务端事件是怎么发生并解释其原理?自动传回是什么?为什么要使用自动传回。ﻫ在web控件发生事件时,客户端采用提交的形式将数据交回服务端,服务端先调用Page_Load事件,然后根据传回的状态信息自动调用服务端事件自动传回是当我们在点击客户端控件时,采用提交表单的形式将数据直接传回到务端ﻫ只有通过自动传回才干实现服务端事件的机制,假如没有自动回传机制就只能调用客户端事件,而不能调用服务端事件13.
请解释web.config文献中的重要节点ﻫappSettings包含自定义应用程序设立。ﻫsystem.web系统配置
compilation动态调试编译设立
customErrors自定义错误信息设立ﻫauthentication身份验证,此节设立应用程序的身份验证策略。ﻫauthorization授权,此节设立应用程序的授权策略.14.
请解释ASP。NET中的web页面与其隐藏类之间的关系?ﻫ一个ASP.NET页面一般都相应一个隐藏类,一般都在ASP.NET页面的声明中指定了隐藏类例如一个页面Tst1.aspx的页面声明如下ﻫ<%@Pagelanguage="c#"Codebehind="Tst1.aspx.cs"AutoEventWireup="false"Inherits="T1.Tst1"%>ﻫCodebehind="Tst1.aspx.cs"表白经编译此页面时使用哪一个代码文献ﻫInherits="T1.Tst1"表用运营时使用哪一个隐藏类15.
什么是viewstate,能否禁用?是否所用控件都可以禁用?
Viewstate是保存状态的一种机制,EnableViewState属性设立为false即可禁用16.
当发现不能读取页面上的输入的数据时很有也许是什么因素导致的?怎么解决?
很有也许是在Page_Load中数据解决时没有进行Page的IsPostBack属性判断17.
请解释什么是上下文对象,在什么情况下要使用上下文对象ﻫ上下文对象是指HttpContext类的Current属性,当我们在一个普通类中要访问内置对象(Response,Request,Session,Server,Appliction等)时就要以使用此对象16、解释一下ajax及实现原理
答:Ajax的核心是JavaScript对象XmlHttpRequest,它使您可以使用JavaScript向服务器提出请求并解决响应,而不阻塞用户,异步请求。
1、delegate是引用类型还是值类型?enum、int[]和string呢(难度系数40%)?答案:delegate引用类型,enum值类型,int[]引用类型,string引用类型。3、base这个关键字有哪几种语法?override呢?答案:base两个语法,分别是调用基类构造函数和调用基类方法,override用于重写基类方法。4、请指出C#中是否有下列关键字?virtual、sealed、abstract、import、as、in、goto、final、Const、signed、String(提醒,仅指出C#中没有的即可)(难度系数50%)。答案:没有的关键字:import、final、Const、signed、String5、在循环:for(inti=0;i<100;i++)Console.WriteLine(i);中,请指出i++的执行时机。答案:在Console.WriterLine(i);执行之后6、试说明continue关键字的用处。答案:立即开始下一次循环,忽略循环体余下的语句7、object是C#的关键字吗?请指出C#中有哪些类型关键字,如int、float。(提醒,写得越多越好)。答案:是,object、int、uint、long、ulong、short、ushort、byte、sbyte、char、float、double、decimal、bool,如回答:enum、struct、class、delegate也算对。8、C#的XML文档注释中(以///开头的注释),<summary>标签用于描述什么?<param>标签呢?答案:<summary>用于某个元素的概要说明,<param>用于某个方法的参数概要说明。9、我们知道[]是数组和索引器的访问操作符,但它尚有一个语法,是什么?答案:特性(Attribute)18.请叙述属性与索引器的区别。ﻫ属性索引器
ﻫ
通过名称标记。通过署名标记。
ﻫ
通过简朴名称或成员访问来访问。通过元素访问来访问。
ﻫ
可认为静态成员或实例成员。必须为实例成员。
ﻫ
属性的
get
访问器没有参数。索引器的
get
访问器具有与索引器相同的形参表。
ﻫ
属性的
set
访问器包含隐式
value
参数。除了
value
参数外,索引器的
set
访问器还具有与索引器相同的形参表。1)描述线程与进程的区别?线程(Thread)与进程(Process)两者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而线程定义的是代码执行堆栈和执行上下文的边界。一个进程可以涉及若干个线程,同时创建多个线程来完毕某项任务,便是多线程。而同一进程中的不同线程共享代码和数据空间。用一个比方来说,假如一个家庭代表一个进程,在家庭内部,各个成员就是线程,家庭中的每个成员都有义务对家庭的财富进行积累,同时也有权利对家庭财富进行消费,当面对一个任务的时候,家庭也可以派出几个成员来协同完毕,而家庭之外的人则没有办法直接消费不属于自己家庭的财产。2)什么是Windows服务,它的生命周期与标准的EXE程序有什么不同Windows服务是运营在windows后台指定用户下(默认System)的应用程序,它没有标准的UI界面,想比标准的EXE程序,Windows服务是在服务开始的时候创建,而在服务结束的时候销毁,并且可以设立服务是否与操作系统一起启动,一起关闭。它支持三种方式:1)自动方式2)手动方式3)禁用。自动方式的时候,windows服务将在OS启动后自动启动运营,而手动方式则必须手工启动服务,禁用的情况下服务将不能被启动。此外标准的EXE默认使用的当前登录的用户,而windows服务则默认使用System用户,这在对系统资源访问的时候特别需要注意。3)
Windows单个进程所能访问的最大内存量是多少?它与系统的最大虚拟内存同样吗?这对于系统设计有什么影响?这个需要针对硬件平台,公式为单个进程能访问的最大内存量=2的解决器位数次方/2,比如通常情况下,32位解决器下,单个进程所能访问的最大内存量为:232/2=2G。单个进程能访问的最大内存量是最大虚拟内存的1/2,由于要分派给操作系统一半虚拟内存。4)
什么是强类型,什么是弱类型?哪种更好些?为什么?强类型是在编译的时候就拟定类型的数据,在执行时类型不能更改,而弱类型在执行的时候才会拟定类型。没有好不好,两者各有好处,强类型安全,由于它事先已经拟定好了,并且效率高。一般用于编译型编程语言,如c++,java,c#,pascal等,弱类型相比而言不安全,在运营的时候容易出现错误,但它灵活,多用于解释型编程语言,如javascript,vb等5)
PID是什么?在做系统的故障排除时如何使用它?PID是进程编号,在系统发现故障的时候,可以根据它寻找故障所发生的具体进程,并且可通过visualstudio.net等ide将故障进程附加到进程中进行调试(debug)6)
单个TCP/IP端口上可以被多少个进程侦听?1个7)
什么是GAC?它解决了什么问题?GloalAssemblyCache,全局应用程序集缓存。它解决了几个程序共享某一个程序集的问题。不必再将那个被共享的程序集拷贝到应用程序目录了,其实这道理很简朴,.net应用程序在加载的时候,会一方面查看全局应用程序集缓存,假如有就可以直接使用,没有再到应用程序目录进行查找。1.白盒测试和黑盒测试
答:黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合规定。白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格规定,所有内部成分是否以通过检查。软件的黑盒测试意味着测试要在软件的接口处进行。这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或数据驱动测试。黑盒测试重要是为了发现以下几类错误:1、是否有不对的或漏掉的功能?2、在接口上,输入是否能对的的接受?能否输出对的的结果?3、是否有数据结构错误或外部信息(例如数据文献)访问错误?4、性能上是否可以满足规定?5、是否有初始化或终止性错误?软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看做一个打开的盒子,它允许测试人员运用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑途径进行测试。通过在不同点检查程序状态,拟定实际状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。白盒测试重要是想对程序模块进行如下检查:1、对程序模块的所有独立的执行途径至少测试一遍。2、对所有的逻辑鉴定,取“真”与取“假”的两种情况都能至少测一遍。3、在循环的边界和运营的界线内执行循环体。4、测试内部数据结构的有效性,等等。请简述一下用Socket进行同步通讯编程的具体环节ﻫ1、在应用程序和远程设备中使用协议和网络地址初始化套接字
2、在应用程序中通过指定端口和地址建立监听ﻫ3、远程设备发出连接请求
4、应用程序接受连接产生通信scoketﻫ5、应用程序和远程设备开始通讯(在通讯中应用程序将挂起直到通讯结束)
6、通讯结束,关闭应用程序和远程设备的Socket回收资源OSI网络结构的七层模型及其核心思想是什么
第七层:应用层
ﻫ
定义了用于在网络中进行通信和数据传输的接口-用户程式;
ﻫ
提供标准服务,比如虚拟终端、文献以及任务的传输和解决;
第六层:表达层
掩盖不同系统间的数据格式的不同性;
指定独立结构的数据传输格式;
数据的编码和解码;加密和解密;压缩和解压缩
第五层:会话层
管理用户会话和对话;
控制用户间逻辑连接的建立和挂断;
报告上一层发生的错误ﻫ第四层:传输层ﻫ
管理网络中端到端的信息传送;
通过错误纠正和流控制机制提供可靠且有序的数据包传送;ﻫ
提供面向无连接的数据包的传送;
第三层:网络层
定义网络设备间如何传输数据;
根据唯一的网络设备地址路由数据包;ﻫ
提供流和拥塞控制以防止网络资源的损耗ﻫ第二层:数据链路层
ﻫ
定义操作通信连接的程序;
封装数据包为数据帧;
监测和纠正数据包传输错误ﻫ第一层:物理层
定义通过网络设备发送数据的物理方式;
作为网络媒介和设备间的接口;ﻫ
定义光学、电气以及机械特性。2几十上百万行,如何快速查询出表数据ﻫ答:用分页存储过程
/*ﻫ
函数名称:GetRecordFromPage
函数功能:获取指定页的数据ﻫ
参数说明:@tblName
包含数据的表名
@fldName
关键字段名ﻫ
@PageSize
每页记录数
@PageIndex
要获取的页码
@OrderType
排序类型,0-升序,1-降序ﻫ
@strWhere
查询条件(注意:不要加where)ﻫ*/
CREATEPROCEDUREGetRecordFromPageﻫ
@tblName
varchar(255),
--表名
@fldName
varchar(255),
--字段名ﻫ
@PageSize
int=10,
--页尺寸
@PageIndex
int=1,
--页码
@OrderType
bit=0,
--设立排序类型,非0值则降序
@strWhere
varchar(2023)=''
--查询条件(注意:不要加where)
ASdeclare@strSQL
varchar(6000)
--主语句ﻫdeclare@strTmp
varchar(1000)
--临时变量
declare@strOrdervarchar(500)
--排序类型if@OrderType!=0
begin
set@strTmp='<(selectmin'
set@strOrder='orderby['+@fldName+']desc'
end
elseﻫbegin
set@strTmp='>(selectmax'
set@strOrder='orderby['+@fldName+']asc'
endset@strSQL='selecttop'+str(@PageSize)+'*from['ﻫ
+@tblName+']where['+@fldName+']'+@strTmp+'(['ﻫ
+@fldName+'])from(selecttop'+str((@PageIndex-1)*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度金融科技研发及外包合同3篇
- 2024年标准简化离婚合同版B版
- 2024版互联网+房地产典当合同范本3篇
- 2024年度旅游服务合同汇编3篇
- 2024年版:文化古迹讲解员劳务合同
- 2024年度仓储物流租赁合同电子版3篇
- 2024年度房地产股权信托与资产管理合同3篇
- 2024年标准水管购销合同样本一
- 2024年三方合同主体变更及环境保护合作协议3篇
- 2024年度商务法治建设合同起草与审核合同3篇
- YD-T 4339-2023 5G移动通信网能力开放(NEF)总体技术要求
- 七年级历史上册 第三单元 单元测试卷(人教版 2024年秋)
- (完整版)数字电子技术基础教案
- 装饰公司与材料商合作协议范本
- 跨文化交际 Intercultural Communication智慧树知到期末考试答案章节答案2024年内蒙古民族大学
- 2024年一季度思想汇报十篇
- 偏微分方程智慧树知到期末考试答案章节答案2024年浙江师范大学
- 《高延性混凝土加固技术规程》DB64-T1746-2020
- 诗经导读省公开课金奖全国赛课一等奖微课获奖课件
- MOOC 摄影艺术创作-中国传媒大学 中国大学慕课答案
- (正式版)SHT 3120-2024 石油化工喷射式混合器技术规范
评论
0/150
提交评论