今天终于决定辞职了,请了半天的假 去面试了! 在做笔试题的时候:遇到了一条sql语句 是要 查询数据库中 A表的第31条-40条的记录,表有一个自增型的字段ID,且id不连续,我写了下面的sql: select top 10 * from ( select Top 40 *from A order by ID asc )ord
今天终于决定辞职了,请了半天的假 去面试了!
在做笔试题的时候:遇到了一条sql语句 是要 查询数据库中 A表的第31条-40条的记录,表有一个自增型的字段ID,且id不连续,我写了下面的sql:
select top 10 * from ( select Top 40 * from A order by ID asc ) order by id asc;
查出来的记录是从40-31的顺序。被主考官给发现了,郁闷死了!
回来上网查一下,发现一大堆:
下面发几条答案:
select top 10 * from A where Id not in( select top 30 Id from A order by Id asc ) order by id asc;
select top 10 * from A where Id > ( select max( id ) from ( select top 30 id from A order by id asc ) temp ) order by id asc;
select top 10 * from A tt where not exists( select * from ( select top 30 * from A order by ID asc ) temp where temp.Id = tt.Id );
简述反射与序列化的区别?
反射:程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性
序列化:序列化是将对象转换为容易传输的格式的过程。例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象。在另一端,反序列化将从该流重新构造对象。
反射
公共语言运行库加载器管理应用程序域。这种管理包括将每个程序集加载到相应的应用程序域以及控制每个程序集中类型层次结构的内存布局本文来源gaodai#ma#com搞*!代#%^码$网*。
程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装程序集、模块和类型的对象。您可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。
序列化
序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。
什么是应用程序域AppDomain?
应用程序域(通常为 AppDomain)是一个用于隔离应用程序的虚拟进程。在同一应用程序范围内(换句话说,以应用程序入口点开头的对象激活序列中的任何位置)创建的所有对象都创建在同一应用程序域中。多个应用程序域可以存在于单个操作系统进程中,这使它们成为应用程序隔离的轻量方法。
操作系统进程通过提供一个独特的内存地址空间来提供隔离。虽然这很有效,但成本很高,而且不能扩展到大型 Web 服务器所需的数目。另一方面,公共语言运行库通过管理运行在应用程序域中的代码的内存使用来强制应用程序隔离。这可确保它不会访问域边界以外的内存。注意只有类型安全代码才能以这种方式进行管理(运行库在不安全代码加载到应用程序域中时无法保证隔离)很重要。
应用程序域 (AppDomain) 可以被看作一个轻型的进程。在一个 Win32 进程中可以存在多个 AppDomain。AppDomain 的主要目的是将应用程序和其它应用程序隔离开来。
通过使用独立的地址空间,Win32 进程提供隔离性。这种方法很有效,但开销很大并且伸缩性不好。.NET 运行库通过控制对内存的是用来施加 AppDomain 隔离—AppDomain 中的所有内存是由 .NET 运行库来管理的,所以运行库可以确保 AppDomain 之间不能访问彼此的内存。