我想知道如何使用C#获取当前活动窗口(即具有焦点的窗口)的Window标题.
我正在开发一个使用OpenID来验证用户身份的网站(在Django中).由于我目前只在本地计算机上运行,因此无法使用Web上的某个OpenID提供程序进行身份验证.所以我想我需要运行一个本地OpenID服务器,只需让我输入用户名,然后将其传递回我的主应用程序.
这样的OpenID开发服务器是否存在?这是最好的方式吗?
我有一个包含数据行的文本文件.我可以使用以下的powershell脚本来提取我感兴趣的行:
select-string -path *.txt -pattern "subject=([A-Z\.]+),"
Run Code Online (Sandbox Code Playgroud)
一些示例数据将是:
blah blah subject=THIS.IS.TEST.DATA, blah blah blah
Run Code Online (Sandbox Code Playgroud)
我想要的是能够只提取主题的实际内容(即"THIS.IS.TEST.DATA"字符串).我试过这个:
select-string -path *.txt -pattern "subject=([A-Z\.]+)," | %{ $_.Matches[0] }
Run Code Online (Sandbox Code Playgroud)
但"匹配"属性始终为空.我究竟做错了什么?
我在SQL Server 2k8中有一个带有XML列的表.以下SQL检索一些XML:
SELECT TOP 1 my_xml_column FROM my_table
Run Code Online (Sandbox Code Playgroud)
让我们说它返回以下XML
<a>
<b />
<c>
<d />
<d />
<d />
</c>
</a>
Run Code Online (Sandbox Code Playgroud)
我想得到的是
/a
/a/b
/a/c
/a/c/d
/a/e
Run Code Online (Sandbox Code Playgroud)
换句话说,我怎样才能让SQL Server告诉我XML的结构?
我可以执行以下操作来获取各个元素的所有名称:
SELECT C1.query('fn:local-name(.)')
FROM my_table
CROSS APPLY my_xml_column.nodes('//*') AS T ( C1 )
Run Code Online (Sandbox Code Playgroud)
也许如果有一个等效的"local-name()"返回了元素的整个路径就可以了?
假设我们有两个表:'Car'和'Part',在'Car_Part'中有一个连接表.说我想看到所有车辆中都有123部分.我能做到这一点:
SELECT Car.Col1, Car.Col2, Car.Col3
FROM Car
INNER JOIN Car_Part ON Car_Part.Car_Id = Car.Car_Id
WHERE Car_Part.Part_Id = @part_to_look_for
GROUP BY Car.Col1, Car.Col2, Car.Col3
Run Code Online (Sandbox Code Playgroud)
或者我可以做到这一点
SELECT Car.Col1, Car.Col2, Car.Col3
FROM Car
WHERE Car.Car_Id IN (SELECT Car_Id FROM Car_Part WHERE Part_Id = @part_to_look_for)
Run Code Online (Sandbox Code Playgroud)
现在,我内心的一切都想要使用第一种方法,因为我是由善良的父母抚养长大的,他们向我灌输了对次级查询和对集合理论的热爱的清教徒仇恨,但有人建议我做那么大GROUP BY比子查询更糟糕.
我应该指出我们在SQL Server 2008上.我还应该说实际上我想根据Part Id,Part Type以及其他可能的东西进行选择.所以,我想要做的查询实际上是这样的:
SELECT Car.Col1, Car.Col2, Car.Col3
FROM Car
INNER JOIN Car_Part ON Car_Part.Car_Id = Car.Car_Id
INNER JOIN Part ON Part.Part_Id = Car_Part.Part_Id
WHERE (@part_Id IS NULL OR Car_Part.Part_Id = @part_Id)
AND (@part_type IS NULL …
Run Code Online (Sandbox Code Playgroud) 我们将一些Guid存储在MS SQL数据库中.有一些遗留代码可以执行Guid.ToString()
,然后将它们传递给a,varchar(64)
并且有一些较新的代码使用唯一标识符参数传递它们.当您使用MS SQL Management studio查看结果时,它们看起来有所不同.前三个块的字节顺序相反,但最后一个块保持不变.为什么?
考虑以下C#代码:
double result1 = 1.0 + 1.1 + 1.2;
double result2 = 1.2 + 1.0 + 1.1;
if (result1 == result2)
{
...
}
Run Code Online (Sandbox Code Playgroud)
result1应该始终等于result2对吗?问题是,事实并非如此.result1是3.3,result2是3.3000000000000003.唯一的区别是常数的顺序.
我知道双打的实现方式可能会出现舍入问题.我知道如果我需要绝对精度,我可以使用小数.或者我可以在if语句中使用Math.Round().我只是一个想要了解C#编译器正在做什么的书呆子.有人能告诉我吗?
编辑:
感谢所有到目前为止建议阅读浮点运算和/或谈论CPU如何处理双精度的固有不准确性.但我觉得我的问题的主旨仍然没有答案.因为没有正确地说出来,这是我的错.我这样说吧:
分解上面的代码,我希望发生以下操作:
double r1 = 1.1 + 1.2;
double r2 = 1.0 + r1
double r3 = 1.0 + 1.1
double r4 = 1.2 + r3
Run Code Online (Sandbox Code Playgroud)
假设上述每个加法都有一个舍入误差(编号为e1..e4).因此r1包含舍入误差e1,r2包括舍入误差e1 + e2,r3包含e3,r4包含e3 + e4.
现在,我不知道舍入错误究竟是如何发生的,但我希望e1 + e2等于e3 + e4.显然它没有,但这对我来说似乎有些不对劲.另一件事是,当我运行上面的代码时,我没有得到任何舍入错误.这就是让我觉得C#编译器做的奇怪而不是CPU的原因.
我知道我问了很多,也许任何人都可以给出的最佳答案是去做CPU设计的PHD,但我只是想我会问.
编辑2
从原始代码示例中查看IL,很明显,编译器不是CPU正在执行此操作:
.method private hidebysig static void Main(string[] args) cil managed
{
.entrypoint
.maxstack 1
.locals …
Run Code Online (Sandbox Code Playgroud) 我有一个 python 类(实际上是 Google App Engine 模型),如下所示:
class MyClass(ParentClass):
variable_one = PropertyClass(...)
variable_two = PropertyClass(...)
Run Code Online (Sandbox Code Playgroud)
我打算构建一个系统,它可以描述该类的两个实例之间的差异,这两个实例代表不同时间点的实体的两个版本。最终它会产生一个像这样的字符串
"Variable One changed from 'foo' to 'bar', Variable Two changed from empty to 'baz'"
Run Code Online (Sandbox Code Playgroud)
因此,我需要在某个地方存储“variable_one”应显示为“Variable One”等事实。来自 C# 的背景,我的本能是使用属性,例如:
class MyClass : ParentClass
{
[DisplayName("Variable One")]
public PropertyClass variable_one;
[DisplayName("Variable Two")]
public PropertyClass variable_two;
}
Run Code Online (Sandbox Code Playgroud)
首先,Python 的等价物似乎是装饰器:
class MyClass(ParentClass):
@display_name("Variable One")
variable_one = PropertyClass(...)
@display_name("Variable Two")
variable_two = PropertyClass(...)
Run Code Online (Sandbox Code Playgroud)
然而,装饰器实际上是在进行函数柯里化,并且由于类变量定义只是将 PropertyClass 的一个实例分配给variable_one 和variable_two,所以看起来这不是有效的python。无论如何,我不知道该怎么写。
一种选择似乎是扩展 PropertyClass...
class MyClass(ParentClass):
variable_one = MyPropertyClass("Variable One", ...)
variable_two = MyPropertyClass("Variable …
Run Code Online (Sandbox Code Playgroud) 我们有一个用C#编写的Windows服务.该服务产生一个执行此操作的线程:
private void ThreadWorkerFunction()
{
while(false == _stop) // stop flag set by other thread
{
try
{
openConnection();
doStuff();
closeConnection();
}
catch (Exception ex)
{
log.Error("Something went wrong.", ex);
Thread.Sleep(TimeSpan.FromMinutes(10));
}
}
}
Run Code Online (Sandbox Code Playgroud)
当数据库消失后,我们将Thread.Sleep放入了几次,然后我们回到了3Gb日志文件中,这些文件充满了数据库连接错误.
这几个月一直运行良好,但最近我们已经看到一些实例,其中log.Error()语句记录了一个"System.InvalidOperationException:这个SqlTransaction已经完成;它不再可用"异常然后永远不会回来.该服务可以保持运行数天,但不会记录任何其他内容.
做过一些阅读之后,我知道Thread.Sleep并不理想,但为什么它永远不会回来?
我有一个带有链接服务器的SQLServer到另一个其他数据库.我在该链接服务器上创建了一个视图
create view vw_foo as
select
[id],
[name]
from LINKEDSERVER.RemoteDatabase.dbo.tbl_bar
Run Code Online (Sandbox Code Playgroud)
我想谈谈以下内容
alter table [baz]
add foo_id int not null
go
alter table [baz] with check
add constraint [fk1_baz_to_foo]
foreign key([foo_id])
references [dbo].[vw_foo] ([id])
go
Run Code Online (Sandbox Code Playgroud)
但是这会产生错误:"外键'fk1_baz_to_foo'引用对象'dbo.vw_foo',它不是用户表."
如果我尝试使用以下内容将外键直接放在表上
alter table [baz] with check
add constraint [fk1_baz_to_bar]
foreign key([foo_id])
references LINKEDSERVER.RemoteDatabase.dbo.tbl_bar ([id])
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误:
对象名称"LINKEDSERVER.RemoteDatabase.dbo.tbl_bar"包含的前缀数量超过最大数量.最大值为2.
有什么方法可以达到同样的效果吗?
我有一个非常简单的ASP.NET Web应用程序和一个Web安装项目,它将项目输出和内容文件部署到IIS中的虚拟目录.
我想要的是MSI自动禁用IIS中该虚拟文件夹的匿名访问.
我怀疑它可以通过在自定义动作DLL中编写一些代码来完成,这是可以接受的,但有没有办法在Web设置项目的设置中执行它?
我在SQLServer 2008 R2中有以下XML数据
DECLARE @data XML
SET @data = '<root attr1="val1" attr2="val2" attr3="val3"/>'
Run Code Online (Sandbox Code Playgroud)
我想从root获取属性名称列表,并将其作为元素列表输出,如下所示:
<root>
<attr1>val1</attr1>
<attr2>val2</attr2>
<attr3>val3</attr3>
</root>
Run Code Online (Sandbox Code Playgroud)
我一直在玩FLWOR查询以获得我想要的东西.到目前为止我有这个:
SELECT @data.query('
for $attr in /*/@*
return <test>{fn:string($attr)}</test>
')
Run Code Online (Sandbox Code Playgroud)
这很好,几乎是我需要的,但当我尝试这样做时......
SELECT @data.query('
for $attr in /*/@*
return <{fn:local-name($attr)}>{fn:string($attr)}</{fn:local-name($attr)}>
')
Run Code Online (Sandbox Code Playgroud)
它不开心.除了硬编码元素名称之外,它似乎不喜欢任何其他东西.
如何返回具有计算名称的元素?