一个)
SQL语句是单个SQL命令(例如,SELECT*FROM table1或SET NOCOUNT ON).另一方面,批处理是将许多SQL语句发送到服务器以作为整体执行.批处理中的语句将编译为单个执行计划.批处理由GO命令分隔
因此,SQL语句和Batch之间的唯一区别是每个SQL语句作为单独的单元发送到服务器,因此与其他SQL语句分开编译,而Batch中的SQL语句是一起编译的?
b)我假设存储过程和批处理之间的主要区别之一是存储过程是预编译的,而批处理不是?
感谢名单
绑定的一个定义是它是用内存地址替换函数名的行为.
a)因此我假设早期绑定意味着在编译过程中函数调用被替换为内存地址,而在后期绑定时,这种替换发生在运行时期间?
b)为什么虚方法也被认为是早期绑定(因此在编译时找到目标方法,并创建将调用此方法的代码)?据我所知,使用虚方法只能在运行时解析对实际方法的调用而不是编译时间?!
感谢名单
编辑:
1)
A a=new A();
a.M();
Run Code Online (Sandbox Code Playgroud)
据我所知,在编译时不知道a在运行时将在堆上创建实例(因此在哪个内存地址).现在,通过早期绑定,在编译过程中将函数调用替换为内存地址.但是编译器如何用内存地址替换函数调用,如果它不知道a在运行时将在堆上的哪个对象被创建(这里我假设方法的地址a.M也将在同一个内存位置a)?
2)
v-table调用既不早,也不晚.相反,函数指针表中存在偏移量.偏移量在编译时固定,但是从哪个表中选择函数指针取决于对象的运行时类型(对象包含指向其v表的隐藏指针),因此最终的函数地址在运行时找到.
但假设类型的对象T是通过反射创建的(因此app甚至不知道类型的存在T),那么在编译时如何能够存在该类型对象的入口点?
我知道如何使用派生表,但我仍然无法真正看到使用它们的任何真正优势.
例如,在下面的文章http://techahead.wordpress.com/2007/10/01/sql-derived-tables/中,作者尝试使用派生表在没有示例的情况下使用派生表显示优势,我们想要生成一份报告,显示每个客户在1996年下达的订单总数,我们希望这个结果集包括所有客户,包括那些没有下订单的客户和那些从未放置任何订单的客户.订单(他使用Northwind数据库).
但是当我比较两个查询时,我没有看到使用派生表的查询的任何优点(如果没有别的,使用派生表似乎不会简化我们的代码,至少在这个例子中不是这样):
常规查询:
SELECT C.CustomerID, C.CompanyName, COUNT(O.OrderID) AS TotalOrders
FROM Customers C LEFT OUTER JOIN Orders O ON
C.CustomerID = O.CustomerID AND YEAR(O.OrderDate) = 1996
GROUP BY C.CustomerID, C.CompanyName
Run Code Online (Sandbox Code Playgroud)
使用派生表进行查询:
SELECT C.CustomerID, C.CompanyName, COUNT(dOrders.OrderID) AS TotalOrders
FROM Customers C LEFT OUTER JOIN
(SELECT * FROM Orders WHERE YEAR(Orders.OrderDate) = 1996) AS dOrders
ON
C.CustomerID = dOrders.CustomerID
GROUP BY C.CustomerID, C.CompanyName
Run Code Online (Sandbox Code Playgroud)
也许这只是一个很好的例子,你能告诉我一个例子,派生表的好处更明显吗?
感谢名单
回复GBN:
在这种情况下,如果客户和产品之间没有关系,则无法捕获产品和订单聚合.
你能详细说明一下你的意思吗?以下查询不会生成与查询相同的结果集:
SELECT
C.CustomerID, C.CompanyName,
COUNT(O.OrderID) AS TotalOrders,
COUNT(DISTINCT P.ProductID) AS DifferentProducts
FROM Customers …Run Code Online (Sandbox Code Playgroud) 这是允许的:
// scope_1
int i = 100;
if (i > 50)
{
// scope_2
int a = 200;
}
Run Code Online (Sandbox Code Playgroud)
这给出了错误:
// scope_1
if (100 > 50)
int a = 200;
Run Code Online (Sandbox Code Playgroud)
第二个代码示例的原因是否由于范围而导致错误?因此编译器不允许可变一个只有当条件语句评估为真,因为如果它确实允许的话,那就没有办法编译器弄清楚是否允许另一个名为变量的声明中声明内特定范围一个 scope_1内?
为什么编译器无法在编译时检测到obj引用了类型B的对象,从而在我们尝试将其强制转换为类型A时报告错误?
public class A { }
public class B { }
static void Main(string[] args)
{
B b = new B();
object obj = (object)b;
A a = (A)obj; // exception
Run Code Online (Sandbox Code Playgroud)
感谢名单
1)我知道有很多网站描述在Asp.Net页面生命周期中调用事件的顺序.但是还有一个工具,也许是Reflector,它可以让我自己弄清楚在页面的生命周期中所有页面事件和事件处理程序的顺序是什么?
2)你会说试图找出引擎盖下的确切内容是一个好主意还是浪费时间?澄清一下 - 我想弄清楚构建控件树时到底发生了什么 - 因此所有方法调用,控制树所需的所有事件调用等都需要构建(我想有数百行或者数千行)用于构建控件树的代码.
感谢名单
1)如果在CSS文件中我们指定以下样式:
td
{ text-align:center; }
Run Code Online (Sandbox Code Playgroud)
在我们的Html文件中
<td align=”right” … >
Run Code Online (Sandbox Code Playgroud)
然后CSS文件中设置的值将优先于内联html属性,因此单元<td>格中包含的元素将与中心对齐.
a)所有html属性都一样吗?这意味着如果CSS规则和html属性功能重叠,那么CSS规则是否总是优先?
顺便说一句 - 我知道我们通常应该更喜欢使用CSS规则和html属性
感谢名单
假设我通过SQL Server Management Studio(SSMS)连接到SQL Server 2008并W1通过单击New Query选项卡打开新窗口并在W1中写入以下内容:
BEGIN TRANSACTION;
Run Code Online (Sandbox Code Playgroud)
如果我执行此语句5次,然后写(内部W1)
SELECT @@TRANCOUNT;
Run Code Online (Sandbox Code Playgroud)
,然后返回的值将是5.但是如果我打开另一个窗口W2(在同一个SSMS实例内,因此在同一个连接上)并在W2内部写入
SELECT @@TRANCOUNT;
Run Code Online (Sandbox Code Playgroud)
然后返回的值将为0.
@@ TRANCOUNT变量返回当前连接的活动事务数.
W1和W2窗口都是在同一个连接上打开的,所以不应该(根据上面的引用)W1和W2变量@@ TRANCOUNT保持相同的值?
感谢名单
a)如何new int[10][]评估数组类型声明?是否进行了评估
如 (new int[10])[]
或者作为 (new int[10][])
要么 …?
b)我不确定如何问这个:我知道语句int[][] i = (new int[10])[]会给我们编译错误.但假设编译器不会报告错误,编译器会根据此语句创建什么样的数组类型?
编辑:
我为无法使我的问题更全面而道歉.这是其中一个问题,其中有些东西困扰着我,我无法在脑海中充分理解这个问题,足以理解它.所以我问半个问题,希望回复能帮到我.无论如何,这是一个毫无意义的问题,但我仍然想解释一下我的实际意义:
提示所有这一切的原因是来自MSDN的一篇文章
主表达式分为array-creation-expression和primary-no-array-creation-expressions.以这种方式处理数组创建表达式,而不是将其与其他简单的表达式表单一起列出,使语法能够禁止可能混淆的代码,例如
object o = new int [3] [1];
否则将被解释为
object o =(new int [3])[1];
所以让我想到这个数组创建表达式的不同部分的括号可能会给编译器提供关于它应该创建的数组类型的不同指令.
或者换句话说,我认为在解释数组创建/初始化语法时,编译器可能遵循一些内置逻辑(从某些数学字段派生).换句话说,编译器没有构建一个数组,因为它的开发人员给出了特定的指令,例如" 当你看到新的单词和某些类型的名称和两对方括号([] [])时,然后按照这些步骤 -按顺序说明,它将告诉你完整的细节做什么 ",但开发人员只是构建一些数学相关的逻辑,并从该编译器能够自己导出一个数组,没有开发人员给它一步一步的指令.
顺便说一句 - 我确实了解锯齿状和矩形阵列以及它们如何初始化等;)
1)不久前我开始学习Asp.Net,但后来我听说Ajax是"新事物".由于我不想浪费我投入Asp.Net的时间,我想知道在创建网站和网站时使用这两种技术(Asp.Net和Ajax)是否是一种常见/推荐的做法应用程序一般?
2)如果将两种技术结合使用确实是一种常见的做法,那么对于服务器端的Ajax和Asp.Net是否也是如此,或者客户端Ajax是否也可以与Asp.Net一起使用?
感谢名单
编辑:
一个)
唯一的问题是,在使用asp.net webforms时使用jquery执行ajax请求可能有点诡计(asp.net mvc的设计时考虑了jquery等框架,因此更容易实现).
你是否暗示,当与webforms一起使用时,jquery可能会有太多麻烦,因此我应该考虑使用Asp.Net Ajax?
B)我在ajax上读到的很少,它还需要调用Web服务或其他一些提供与Web服务类似功能的技术.如果为true,您使用哪种技术(WCF或Asp.Net Web服务或......)?
C)Ajax是jquery的一个子部分吗?因此,为了理解Ajax,我是否只需要购买一本关于jquery的书,还是我还需要在其标题中阅读一本带有Ajax的书?
我\xe2\x80\x99已经读到逻辑运算符AND比逻辑运算符IN具有更高的优先级,但这没有意义\xe2\x80\x99t因为如果这是真的,那么下面的\xe2\x80\x99t不会语句中 AND 条件在 IN 条件之前被求值(因此在 IN 运算符之前能够检查 Released 字段是否等于括号内指定的任何值?
\n\nSELECT Song, Released, Rating\nFROM Songs\nWHERE\nReleased IN (1967, 1977, 1987)\nAND\nSongName = \xe2\x80\x99WTTJ\xe2\x80\x99\nRun Code Online (Sandbox Code Playgroud)\n\n谢谢
\n\n编辑:
\n\nEgrunin和ig0774,我\xe2\x80\x99已经检查过,除非我完全误解了你的帖子,否则似乎
\n\nWHERE x > 0 AND x < 10 OR special_case = 1
确实是一样的
\n\nWHERE (x > 0 AND x < 10) OR special_case = 1
也就是说,我做了以下三个查询
\n\nSELECT * \nFROM Songs \nWHERE AvailableOnCD='N' AND Released > 2000 OR Released = 1989\n\nSELECT *\nFROM Songs\nWHERE (AvailableOnCD='N' AND Released …Run Code Online (Sandbox Code Playgroud) 1)如果textbox element(<input type=”text” /> )的width属性设置为inherit,则文本框不会溢出.但是如果textbox width设置为auto,则由于浏览器计算它而溢出width.
a)为什么浏览器没有进入文本框在另一个元素内的帐户,从而相应地调整width文本框?
b)根据什么参数决定width文本框的内容应该是什么?
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<style type="text/css">
p
{
width:60px;
}
</style>
</head>
<body>
<p>
<input type=”text” />
</p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
2)默认情况下,所有Html元素的宽度值都设置为auto吗?
感谢名单
1)假设:
• B1定义了方法virtualM()和nonvirtualM(),其中前者的方法是虚拟而后者是非虚拟
• B2从导出B1
• B2覆盖virtualM()
• B2内部组件被定义A
•应用程序app不必组件A的参考
在下面的代码应用程序中,app动态加载程序集A,创建类型的实例B2并调用方法virtualM()和nonvirtualM():
Assembly asemb=Assembly.Load(“A”);
Type t= asemb.GetType(“B2”);
B1 a = ( B1 ) Activator.CreateInstance ( “t” );
a.virtualM();
a.nonvirtualM();
Run Code Online (Sandbox Code Playgroud)
a)是否要求a.virtualM()考虑提前约束或延迟约束?
b)我假设a.nonvirtualM()在编译期间解决了一个调用?
2)术语后期绑定是指仅在运行时查找目标方法还是指在运行时创建给定类型的实例?
感谢名单
编辑:
1)
- 我假设在编译期间解析了对a.nonvirtualM()的调用?
- 是的.
如果我们有:
A a = new A();
a.M();
Run Code Online (Sandbox Code Playgroud)
据我所知,在编译时不知道a在运行时将在堆上创建实例(因此在哪个内存地址).现在,通过早期绑定,在编译过程中将函数调用替换为内存地址.但是编译器如何用内存地址替换函数调用,如果它不知道a在运行时将在堆上的哪个对象被创建(这里我假设方法的地址a.M也将在同一个内存位置a)? …