这可能是一个非常noobie的问题,但在今天的Web应用程序开发世界中,许多程序员不需要处理dll,因此不必费心去了解他们的目的.
什么是dll?
我被告知dll用于存储函数库,但除此之外我不太了解.希望有人在这里可以启发我,所以我终于不知道我的Windows目录中的所有.dll文件是做什么的.
在MySQL 5.0中,为什么在尝试使用FROM子句中的子查询创建视图时会发生以下错误?
错误1349(HY000):视图的SELECT包含FROM子句中的子查询
如果这是MySQL引擎的限制,为什么他们还没有实现这个功能呢?
此外,这个限制有哪些好的解决方法?
是否有任何变通方法适用于FROM子句中的任何子查询,或者是否存在一些在不使用FROM子句中的子查询时无法表达的查询?
一个示例查询(隐藏在注释中):
SELECT temp.UserName
FROM (SELECT u1.name as UserName, COUNT(m1.UserFromId) as SentCount
FROM Message m1, User u1
WHERE u1.uid = m1.UserFromId
Group BY u1.name HAVING SentCount > 3 ) as temp
Run Code Online (Sandbox Code Playgroud) 我正在阅读这个问题,以找出Java虚拟机和.NET CLR之间的差异,Benji的回答让我想知道为什么虚拟机首先是必要的.
根据我对Benji的解释的理解,虚拟机的JIT编译器将中间代码解释为在CPU上运行的实际汇编代码.它必须这样做的原因是因为CPU通常具有不同数量的寄存器,并且根据Benji的说法,"一些寄存器是特殊用途的,并且每个指令都要求其操作数在不同的寄存器中." 这是有道理的,因此需要像虚拟机这样的中间解释器,以便可以在任何CPU上运行相同的代码.
但是,如果是这种情况,那么我不明白为什么编译成机器代码的C或C++代码能够在任何计算机上运行,只要它是正确的操作系统.那么为什么我在使用Pentium的Windows机器上编译的C程序能够在我使用AMD的其他Windows机器上运行?
如果C代码可以在任何CPU上运行,那么虚拟机的目的是什么?是否可以在任何操作系统上运行相同的代码?我知道Java在几乎任何操作系统上都有VM版本但除了Windows之外还有其他操作系统的CLR吗?
或者还有其他我想念的东西?操作系统是否对其运行的汇编代码做了一些其他解释,以使其适应特定的CPU或其他东西?
我很好奇这一切是如何运作的,所以我们将非常感谢一个明确的解释.
注意:我之所以不在JVM与CLR问题中发表我的查询作为评论的原因是因为我没有足够的积分发表评论但= b.
编辑:感谢所有的好答案!所以我似乎缺少的是,虽然所有处理器都有差异,但是有一个共同的标准化,主要是X86架构,它提供了足够大的通用功能集,因此在一个X86处理器上编译的C代码将在大多数情况下工作在另一个X86处理器上.这进一步推动了虚拟机的正当性,更不用说我忘记了垃圾收集的重要性.
我想实现如下的原子事务:
BEGIN TRAN A
SELECT id
FROM Inventory
WITH (???)
WHERE material_id = 25 AND quantity > 10
/*
Process some things using the inventory record and
eventually write some updates that are dependent on the fact that
that specific inventory record had sufficient quantity (greater than 10).
*/
COMMIT TRAN A
Run Code Online (Sandbox Code Playgroud)
问题是发生的其他交易消耗了我们库存中的数量,因此在选择记录和更新写入事务A之间,该记录可能会成为无效选择,因为它的数量可能已降低到阈值以下在WHERE子句中.
所以问题是我应该在WITH子句中使用什么锁定提示来防止在完成更新并提交事务之前更改选定的库存记录?
编辑:非常感谢John,一个好的解决方案似乎是将事务隔离级别设置为REPEATABLE READ.这将确保"在当前事务完成之前,没有其他事务可以修改当前事务已读取的数据".
编程对数据库中数据更新的即时反应的最佳方法是什么?
我能想到的最简单的方法是一个线程,它检查数据库是否对某些数据进行了特定的更改,并且不断等待在一段预定义的时间内再次检查它.这个解决方案对我来说似乎是浪费和不理想的,所以我想知道是否有更好的方法.
我认为必须有某种方式,毕竟像gmail这样的网络应用程序似乎能够在向我发送新电子邮件后立即更新我的收件箱.当然,我的客户不是一直在不断检查更新.我认为他们这样做的方式是使用AJAX,但AJAX的行为方式就像我不知道的远程函数调用.我很想知道gmail是如何做到这一点的,但我最想知道的是如何在数据库的一般情况下这样做.
编辑:请注意我想立即对客户端代码中的更新做出反应,而不是在数据库本身,所以据我所知触发器无法做到这一点.基本上我希望USER在获得数据库更改后获得通知或更新其屏幕.