小编bpe*_*kes的帖子

为什么在视图外部放置WHERE子句会产生糟糕的性能

假设您有一个观点:

CREATE VIEW dbo.v_SomeJoinedTables AS
SELECT
    a.date,
    a.Col1,
    b.Col2,
    DENSE_RANK() 
      OVER(PARTITION BY a.date, a.Col2 ORDER BY a.Col3) as Something
FROM a JOIN b on a.date = b.date
Run Code Online (Sandbox Code Playgroud)

我发现了以下的表现:

SELECT *
FROM v_SomeJoinedTables
WHERE date > '2011-01-01'
Run Code Online (Sandbox Code Playgroud)

比...差很多

SELECT *, 
   DENSE_RANK() 
     OVER(PARTITION BY a.date, a.Col2 ORDER BY a.Col3) as Something
FROM a JOIN b ON a.date = b.date
WHERE a.date > '2011-01-01'
Run Code Online (Sandbox Code Playgroud)

我很惊讶这两个语句的查询计划不一样.

我也尝试使用内联表值函数,但查询仍然比我复制和粘贴视图逻辑的代码长100-1000倍.

有任何想法吗?

t-sql sql-server-2005 where-clause sql-execution-plan

16
推荐指数
1
解决办法
8162
查看次数

HTML5/javascript X11服务器?

我们有一个消耗大量数据的应用程序.目前是桌面应用,但我们希望通过浏览器提供.

创建一个我需要传输用于可视化的数据的Web应用程序对我来说没有意义.

我们正在研究RDP和那些通过完全javascript客户端提供RDP访问的产品.它们似乎与我们的应用程序配合得很好,但我一直在考虑离开Windows需要什么.

切换前端以便它可以在Linux下运行并不是微不足道的,但并非不可能,所以主要的绊脚石就是交付.

我想知道是否有任何X11 javascript服务器,但没有找到任何线索.

javascript linux x11 html5

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

你能算出Active Directory使用的密码哈希吗?

我们目前在我们的数据库中存储我们的Web应用程序的用户,以及他们的密码的哈希/盐.哈希是在创建用户时计算的,并设置其密码并存储在数据库的User表中.

在创建用户帐户后的某个时间,我们可能希望在我们的域中创建一个Windows帐户,并希望能够设置域用户的密码,使其与用户用于登录Web应用程序的密码相同.由于我们不保存密码的纯文本版本,因此我们无法在创建密码时将其发送到AD.

我考虑绕过这个问题的一种方法是计算AD在用户第一次设置密码时使用的所有不同的密码哈希值,然后在我们创建用户时以某种方式在AD中设置记录.

  1. 你会如何使用.Net创建哈希(我认为它们是MD4,MD5和DES)?
  2. 您是否可以绕过UserPrincpal.SetPassword上的密码创建,并进行其他调用以直接设置AD存储的哈希值?

似乎应该有办法实现这一点,因为MS具有从AD到Azure用户同步密码的工具.

.net active-directory password-encryption

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

基于C++范围的循环,第一项有特殊情况?

我经常发现自己的代码看起来像这样:

bool isFirst = true;
for(const auto &item: items)
{
    if(!isFirst) 
    { 
       // do something
    }
    // Normal processing
    isFirst = false;
}
Run Code Online (Sandbox Code Playgroud)

似乎应该有更好的方式来表达这一点,因为它是功能中的一种常见模式,就像"加入"一样.

c++

13
推荐指数
3
解决办法
2381
查看次数

使字典只能在C#中读取

我有一个Dictionary<string, List<string>>并希望将该成员公开为只读.我看到我可以将它作为一个返回IReadOnlyDictionary<string, List<string>>,但我无法弄清楚如何将它作为一个返回IReadOnlyDictionary<string, IReadOnlyList<string>>.

有没有办法做到这一点?在c ++中,我只是使用const,但C#没有.

请注意,IReadOnlyDictionary在这种情况下简单地使用a 没有帮助,因为我希望只读取值.看来唯一的方法是构建另一个IReadOnlyDictionary,并向它们添加IReadOnlyList.

另一个我不会兴奋的选择是创建实现接口IReadOnlyDictionary>的包装器,并让它保存原始实例的副本,但这似乎有点过分.

c# collections covariance

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

有哪些工具可用于分析除MS Profiler之外的SQL Server中的存储过程?

似乎应该有比SQL Server Profiler更好的工具来分析sql.设置配置文件会话需要永远.我正在寻找一种更像VS profiler的工具.只需选择一个存储过程,并使用一组参数运行它,我应该得到的是一个分析图,显示每个查询,SP调用和函数调用需要多长时间,并允许我深入查看具有参数的单个语句被传入

我见过一些针对Oracle的东西,但我还没有看到任何用于SQL服务器的好工具.

t-sql sql-server performance profiling

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

当std :: future准备好被检索时发信号通知主线程

我想了解的std::async,std::future系统的.我不太明白的是你如何处理运行多个异步"任务",然后,基于返回第一个,第二个等,运行一些额外的代码.

示例:假设您的主线程处于一个简单的循环中.现在,根据用户输入,您可以通过运行多个功能std::async,并将期货保存在std::list.

我的问题是,如何从std::async可以指定哪个未来完成的函数中传回信息?

我的主要线程基本上是在消息循环中,我需要做的是通过std::async能够以某种方式指定哪个未来完成的消息的队列来运行.问题是该功能无法访问未来.

我只是错过了一些东西吗?

这是我想要完成的一些伪代码; 额外的积分,如果有办法有办法让一个方法来使用取消令牌"取消"请求.

class RequestA
{
public:
    int input1;

    int output1;
};

main()
{
    while(1)
    {
       //check for completion
       // i.e. pop next "message"
       if(auto *completed_task = get_next_completed_task())
       {
          completed_task->run_continuation();
       }

       // other code to handle user input
       if(userSaidRunA())
       {
          // note that I don't want to use a raw pointer but
          // am not sure how to use future for this …
Run Code Online (Sandbox Code Playgroud)

c++ asynchronous future

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

有没有办法使用OVER子句而不是CTE来计算TSQL中的相关性?

假设您有一个包含列,Date,GroupID,X和Y的表.

CREATE TABLE #sample
  (
     [Date]  DATETIME,
     GroupID INT,
     X       FLOAT,
     Y       FLOAT
  )

DECLARE @date DATETIME = getdate()

INSERT INTO #sample VALUES(@date, 1, 1,3)
INSERT INTO #sample VALUES(DATEADD(d, 1, @date), 1, 1,1)
INSERT INTO #sample VALUES(DATEADD(d, 2, @date), 1, 4,2)
INSERT INTO #sample VALUES(DATEADD(d, 3, @date), 1, 3,3)
INSERT INTO #sample VALUES(DATEADD(d, 4, @date), 1, 6,4)
INSERT INTO #sample VALUES(DATEADD(d, 5, @date), 1, 7,5)
INSERT INTO #sample VALUES(DATEADD(d, 6, @date), 1, 1,6)
Run Code Online (Sandbox Code Playgroud)

并且您想要计算每个组的X和Y的相关性.目前我使用的CTE有点乱:

;WITH DataAvgStd
     AS (SELECT GroupID,
                AVG(X) …
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server correlation

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

使用 HttpSendRequest 强制进行基本身份验证?

用于在连接到服务时InternetSetOption设置username和。我注意到,即使我先调用 InternetSetOption,当我调用时也不会发送授权标头。看起来很荒谬,您必须首先从服务器获取带有 WWW-Authenication 标头的响应。这会在每个请求上向服务器创建一个完整的额外请求。passwordRESTWinInetHttpSentRequest

是否有WinInet调用在第一次调用时强制授权标头,或者我是否必须手动添加它?

c++ authentication wininet

6
推荐指数
1
解决办法
1307
查看次数

根据成员的存在选择模板功能

假设你有这两个类:

class A
{
 public:
     int a;
     int b;
}

class B
{
 public:
     int a;
     int b;
}

class C
{
 public:
     float a1;
     float b1;
}

enum class Side { A, B };
Run Code Online (Sandbox Code Playgroud)

我希望有一个模板函数,该函数sideT,并根据T返回的引用," T.a"或" T.b"如果类有一个成员T::a,或参考" T.a1"或" T.b1"如果类有一个成员T::a1.

我的出发点是:

template<typename T>
auto &GetBySide(const Side &side, const T &twoSided) 
{ 
  return side == Side::A?twoSided.a:twoSided.b; 
}

template<typename T>
auto &GetBySide(const Side &side, const T &twoSided) 
{ …
Run Code Online (Sandbox Code Playgroud)

c++ templates sfinae

6
推荐指数
1
解决办法
132
查看次数