为什么不像以下代码一样捕获CTRL-C?
MAXVAL = 10000
STEP_INTERVAL = 10
for i in range(1, MAXVAL, STEP_INTERVAL):
try:
print str(i)
except KeyboardInterrupt:
break
print "done"
Run Code Online (Sandbox Code Playgroud)
我的期望是 - 如果在程序运行时按下CTRL-C,KeyboardInterrupt则应该离开循环.它不是.
对我做错的任何帮助?
select(2)当一个正在监视读取的文件描述符被另一个线程关闭时,该函数的行为是什么?
从一些粗略的测试,它确实立即返回.我怀疑结果要么是(a)它仍然继续等待数据,但如果你真的试图从它读取你会得到EBADF(可能 - 有一个潜在的竞赛)或(b)它假装好像文件描述符从未传入.如果后一种情况为真,传入一个没有超时的fd将导致死锁,如果它被关闭.
如果将表的列设置为其公式调用函数的计算列,则更改该基础函数将变得很痛苦.每次更改时,您必须找到每个引用该函数的公式的列,删除引用,保存表,更改函数,添加所有内容,然后重新保存.即使很小的变化也是噩梦.
您能否告诉SQL Server您不关心公式引用函数并继续更改基础函数?
其他详细信息:计算列不会被FK约束持久化或引用,因为它是非确定性的.该功能考虑了当前时间.它正在处理记录是否过期的问题.
sql-server-2005 calculated-columns sql-function non-deterministic
我对java(特别是swing)比较陌生,最近一直在制作一些相当简单的应用程序,随时随地学习.最新版本具有许多表单组件,如JLabel,JTextFields,JButtons等.所有组件都使用可视化构建器放置在NetBeans中.我不得不说我并没有真正接受NetBeans,而是真正设计了GUI并将代码直接复制到Eclipse.
我的问题是:是否值得对GroupLayout进行非常好的理解并手动编码(因此可以更好地控制我的GUI)或继续按原样继续?
使用SQL时,=在WHERE子句中使用而不是LIKE?
没有任何特殊的操作员,LIKE并且=是一样的,对吧?
我正在尝试学习高级sql以及如何使用系统查询(sql server).以下查询有点令人困惑.
CREATE PROC dbo.ShowHierarchy
(
@Root int
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @EmpID int, @EmpName varchar(30)
SET @EmpName = (SELECT EmpName FROM dbo.Emp WHERE EmpID = @Root)
PRINT REPLICATE('-', @@NESTLEVEL * 4) + @EmpName
SET @EmpID = (SELECT MIN(EmpID) FROM dbo.Emp WHERE MgrID = @Root)
WHILE @EmpID IS NOT NULL
BEGIN
EXEC dbo.ShowHierarchy @EmpID
SET @EmpID = (SELECT MIN(EmpID) FROM dbo.Emp WHERE MgrID = @Root AND EmpID > @EmpID)
END
END
GO
Run Code Online (Sandbox Code Playgroud)
取自这里:
http://vyaskn.tripod.com/hierarchies_in_sql_server_databases.htm
每次运行查询时,@ EmpId参数如何递增?它会自己做吗?另外,每次递归都会增加@root吗?例如CEO是root,直接下属,直接下属现在是@root等.
谢谢
为什么要查找数据库以查找已在ObjectContext中表示的记录?
所以这就是我认为你查询时会发生的事情:
SiteUser someUser = context.SiteUser.Where(role => role.UserID == 1).ToList()[0];
垃圾示例,但我的想法是,我想从id为1的表中获取用户.现在假设这是第一次通过所以我猜测它必须在上下文中创建SiteUser列表,查询数据库,然后填写它的列表.使用分析器我看到这个:
SELECT
[Extent1].[UserID] AS [UserID],
[Extent1].[MainEmail] AS [MainEmail],
[Extent1].[Password] AS [Password],
[Extent1].[UserName] AS [UserName]
FROM [TIDBA].[TI_USER] AS [Extent1]
WHERE 1 = [Extent1].[UserID]
Run Code Online (Sandbox Code Playgroud)
美丽.它完成了我所期望的并且在SiteUser列表中(如果我使用Watch挖得足够远)我可以看到在上下文SiteUser列表中有一个项目,它恰好是代表此数据行的水合对象.
接下来我想改变一些事情而不保存:
someUser.UserName = "HIHIHI";
Run Code Online (Sandbox Code Playgroud)
现在说出于某种原因我想再次抓住它使用相同的上下文(这是一个奇怪的例子,但它实际上是一个测试,所以我可以证明这种情况发生):
someUser = context.SiteUser.Where(role => role.UserID == 1).ToList()[0];
Run Code Online (Sandbox Code Playgroud)
我认为会发生的是它会查看上下文中的SiteUser列表,因为这就是生成的属性所说的内容.(如果不为null,则返回列表)然后它会查看它是否存在并返回它.没有数据库命中.猜猜是什么意思...
SELECT
[Extent1].[UserID] AS [UserID],
[Extent1].[MainEmail] AS [MainEmail],
[Extent1].[Password] AS [Password],
[Extent1].[UserName] AS [UserName]
FROM [TIDBA].[TI_USER] AS [Extent1]
WHERE 1 = [Extent1].[UserID]
Run Code Online (Sandbox Code Playgroud)
人力资源管理.好的,所以我开始想,也许这是一个直觉检查,看看该数据项是否有任何变化,只更新我在客户端上没有更改的值的SiteUser对象.(类似于context.Refresh(RefreshMode.ClientWins,context.SiteUser))所以我把它停在了:
someUser = context.SiteUser.Where(role => role.UserID == 1).ToList()[0];
Run Code Online (Sandbox Code Playgroud)
Line和I更改数据库中的值(密码列)并让它命中数据库.对象上没有任何变化.
这里的东西似乎不对.它命中数据库以选择我已经在上下文中已经水合的对象,但它不应用我在数据库中手动进行的更改.为什么它一直在击中数据库呢?
更新 感谢下面的一些链接,我能够挖掘一下并找到这个:
在Ruby的unit :: test框架中运行测试时,是否有一种非常简单的方法可以从命令行指定只应运行一个测试(即指定测试类和测试成员变量)?如果没有,是否有另一个具有此功能的框架?