小编My *_* Me的帖子

如何从SQL Server中的XML元素获取特定属性

我在表的列中有类似下面的XML:

<?xml version="1.0" encoding="utf-8"?>
<container>
  <param name="paramA" value="valueA" />
  <param name="paramB" value="valueB" />
  ...
</container>
Run Code Online (Sandbox Code Playgroud)

我试图通过TSQL从XML中获取valueB部分

到目前为止,我正在获得正确的节点,但现在我无法弄清楚如何获取属性.

select xmlCol.query('/container/param[@name="paramB"]') from LogTable
Run Code Online (Sandbox Code Playgroud)

我想我可以添加/ @值到最后,但是SQL告诉我属性必须是节点的一部分.我可以找到许多用于选择子节点属性的示例,但兄弟属性中没有任何属性(如果这是正确的术语).

任何帮助,将不胜感激.

xml sql-server xpath xquery

35
推荐指数
2
解决办法
8万
查看次数

为什么DateTime.Now DateTime.UtcNow如此慢/昂贵

我意识到这在微优化领域太过分了,但我很想知道为什么调用DateTime.Now和DateTime.UtcNow是如此"昂贵".我有一个示例程序运行几个做"一些"工作的场景(添加到一个计数器)并试图这样做1秒钟.我有几个接近让它在有限的时间内完成工作.这些示例显示DateTime.Now和DateTime.UtcNow明显慢于Environment.TickCount,但与仅让一个单独的线程休眠1秒然后设置一个值以指示工作线程停止相比,即使这样也很慢.

所以我的问题是:

  • 我知道UtcNow更快,因为它没有时区信息,为什么它仍然比TickCount慢得多?
  • 为什么读取布尔值比int更快?
  • 处理这些类型场景的理想方法是什么,你需要允许某些东西在有限的时间内运行,但是你不想浪费更多时间来检查时间而不是实际工作?

请原谅这个例子的详细程度:

class Program
{
    private static volatile bool done = false;
    private static volatile int doneInt = 0;
    private static UInt64 doneLong = 0;

    private static ManualResetEvent readyEvent = new ManualResetEvent(false);

    static void Main(string[] args)
    {
        MethodA_PrecalcEndTime();
        MethodB_CalcEndTimeEachTime();
        MethodC_PrecalcEndTimeUsingUtcNow();

        MethodD_EnvironmentTickCount();

        MethodX_SeperateThreadBool();
        MethodY_SeperateThreadInt();
        MethodZ_SeperateThreadLong();

        Console.WriteLine("Done...");
        Console.ReadLine();
    }

    private static void MethodA_PrecalcEndTime()
    {
        int cnt = 0;
        var doneTime = DateTime.Now.AddSeconds(1);
        var startDT = DateTime.Now;
        while (DateTime.Now <= doneTime)
        {
            cnt++;
        }
        var endDT = DateTime.Now;
        Console.WriteLine("Time …
Run Code Online (Sandbox Code Playgroud)

c# performance micro-optimization

21
推荐指数
4
解决办法
1万
查看次数

Visual Studio Debugger跳过断点

在调试单元测试时,我的Visual Studio 2008 IDE表现得很奇怪:我有一个断点,当我点击它然后尝试使用F10时,测试结束.如果我在被测试方法中的每一行上设置断点,我将以随机方式结束,而不是下一行中的下一个.在清理系统重启后,我已经清理并重建了解决方案.这种行为仍然存在.有没有其他人经历过这个并得出结论.

此测试仅使用主执行线程(不创建其他线程)

debugging unit-testing visual-studio-2008

14
推荐指数
2
解决办法
1万
查看次数

如何使用log4net使用Threadpool线程记录正确的上下文?

我试图找到一种从一堆线程中记录有用上下文的方法.问题是很多代码都是通过线程池线程到达的事件处理的(据我所知),因此它们的名称与任何上下文无关.可以使用以下代码演示此问题:

class Program
{
    private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
    static void Main(string[] args)
    {
        new Thread(TestThis).Start("ThreadA");
        new Thread(TestThis).Start("ThreadB");
        Console.ReadLine();
    }

    private static void TestThis(object name)
    {
        var nameStr = (string)name;
        Thread.CurrentThread.Name = nameStr;
        log4net.ThreadContext.Properties["ThreadContext"] = nameStr;
        log4net.LogicalThreadContext.Properties["LogicalThreadContext"] = nameStr;
        log.Debug("From Thread itself");
        ThreadPool.QueueUserWorkItem(x => log.Debug("From threadpool Thread: " + nameStr));
    }
}
Run Code Online (Sandbox Code Playgroud)

转换模式是:

%date [%thread] %-5level %logger [%property] - %message%newline
Run Code Online (Sandbox Code Playgroud)

输出是这样的:

2010-05-21 15:08:02,357 [ThreadA] DEBUG LogicalContextTest.Program [{LogicalThreadContext=ThreadA, log4net:HostName=xxx, ThreadContext=ThreadA}] - From Thread itself
2010-05-21 15:08:02,357 [ThreadB] DEBUG LogicalContextTest.Program …
Run Code Online (Sandbox Code Playgroud)

c# log4net multithreading threadpool

11
推荐指数
2
解决办法
1万
查看次数

在Sql Server中将int主键转换为bigint

我们有一个生产表,有7.7亿行和变化.我们希望(/需要?)将主ID列从int更改为bigint以允许将来增长(并避免在32位整数空间耗尽时突然停止)

DEV中的实验表明,这并不像改变列那么简单,因为我们需要删除索引然后重新创建它.到目前为止DEV(比PROD略显谦逊)指数的下降还没有在1个半小时后完成.这个表每周7天,每天24小时播放,让它离线这么长时间不是一个选择.

有没有其他人不得不处理类似的情况?你是怎么做到的?

还有替代品吗?

编辑:附加信息:

  • 主键是群集.

sql-server sql-server-2008

11
推荐指数
2
解决办法
6517
查看次数

唯一约束和唯一索引之间有什么区别

以下两个陈述有什么区别?

alter table [dbo].[Demo] add constraint [UC_Demo_Code] unique ( [Code] )
go
create unique nonclustered index [UK_Demo_Code] on [dbo].[Demo] ( [NB_Code] )
go
Run Code Online (Sandbox Code Playgroud)

约束是否有索引来帮助它强制执行唯一性,还是会在每次插入/更新时执行表扫描?

sql-server sql-server-2000

10
推荐指数
1
解决办法
2739
查看次数

为什么不能直接调用扩展方法?

有人可以向我解释为什么在下面的第三次DoSomething调用无效?(错误消息是"当前上下文中不存在名称'DoSomething'")

public class A { }
public class B : A
{
    public void WhyNotDirect()
    {
        var a = new A();
        a.DoSomething();  // OK
        this.DoSomething();  // OK
        DoSomething(); // ?? Why Not
    }
}
public static class A_Ext
{
    public static void DoSomething(this A a)
    {
        Console.WriteLine("OK");
    }
}
Run Code Online (Sandbox Code Playgroud)

c# extension-methods

10
推荐指数
2
解决办法
2549
查看次数

如何从包含空格的参数的另一个批处理文件中调用批处理文件?

我有2个(可能更多的未来)批处理文件层,这使我的生活更轻松,直到我尝试添加带有空格的路径.

批处理文件1:

@echo off
set thinga=c:\final build
set thingb=\\server\deployment for final buil

echo.
echo thing a: %thinga%
echo thing b: %thingb%
echo.

call lala.bat "%thinga%" "%thingb%"
Run Code Online (Sandbox Code Playgroud)

批处理文件2(lala.bat):

@echo off

echo.
echo. Param 1 %1
echo. Param 2 %2
echo.
set BASE=%1
set TARGET=%2
echo. Want to run:
echo.  doSomethingOnBaseFolder %BASE%
echo.  doSomethingOnBaseSubFolder "%BASE%\bin\release\*" "%TARGET%\"
echo.
Run Code Online (Sandbox Code Playgroud)

这个输出是:

doSomethingOnBaseSubFolder ""c:\final build"\bin\release\*" ""\\server\deployment for final buil"\"
Run Code Online (Sandbox Code Playgroud)

但我想要输出

doSomethingOnBaseSubFolder "c:\final build\bin\release\*" "\\server\deployment for final buil\"
Run Code Online (Sandbox Code Playgroud)

有没有办法以任何其他方式逃离这个空间?

batch-file

10
推荐指数
1
解决办法
2万
查看次数

如何在c#中测试多个布尔值是否具有相同的值?

是否有更短的测试方法:

if (!((a == b) && (a == c) && (a == d) && (a == e) && (a == f)))
Run Code Online (Sandbox Code Playgroud)

我最后写了一个让我这样做的方法

if (!AllEqual(new[] { a, b, c, d, e, f }))
Run Code Online (Sandbox Code Playgroud)

这感觉更好,并且更具可读性,但我想知道框架中是否有某些东西可以做到这一点?

c# coding-style

9
推荐指数
1
解决办法
1373
查看次数

是否有像ASP.NET MVC的PHP函数nl2br()?

是否有<br />在ASP.Net MVC中对编码进行换行的库存标准功能?

php asp.net-mvc

6
推荐指数
2
解决办法
3256
查看次数