小编Ken*_*Lee的帖子

C++ 11中的auto是否会使编译时间更长?

auto abc = 5566;
Run Code Online (Sandbox Code Playgroud)

据我所知,编译器知道abcint在编译时,所以它不会影响运行时性能.

但是,它是否会使编译时间更长?

提前致谢.

c++ performance c++11

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

为什么以及何时从Collection <T>继承

我在用C#编写的项目中跟踪遗留代码.

我找到以下代码:

public class FooCollection : Collection<IFoo> {};
Run Code Online (Sandbox Code Playgroud)

我不明白为什么(以及何时)我们需要像这样创建我们自己的Collection类.

为什么不直接使用内置的集合(array,List<T>,Dictionary<K,V>,...)

什么是数据结构Collection<T>?阵列?或链表?

c# collections data-structures

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

为什么我们在Command设计模式中需要一个"接收器"类

我正在学习命令设计模式.据我所知,总是与命令模式相关的四个术语是命令,接收器,调用者和客户端.

具体的命令类有一个execute()方法,调用者有几个命令.调用者决定何时调用execute()命令的方法.

execute()方法被调用时,它会调用接收器的方法.然后,接收器完成工作.

我不明白为什么我们需要接收器类?我们可以在内部工作execute(),似乎接收器类是多余的.

预先感谢.

oop design-patterns

7
推荐指数
3
解决办法
2795
查看次数

为什么在C++ 11中需要decltype?

我正在学习C++ 11中的"decltype".

"auto"和"decltype"的功能似乎重复,我不明白为什么我们需要"decltype".

根据维基,其主要用途是在通用编程中,通常很难甚至不可能表达依赖于模板参数的类型.

在通用编程中,当难以表达类型时,我可以使用"auto":

template <typename T>
void MakeAnObject (const T& builder)
{
    auto val = builder.MakeObject();
    // do stuff with val
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么需要"decltype".

"decltype"可以做"自动"不能做的事情吗?

提前致谢.

c++ decltype auto c++11

5
推荐指数
1
解决办法
1160
查看次数

在存储过程中使用extract方法

在编写编程语言时,Extract方法是一种常见的重构模式.

当我尝试对我的存储过程进行一些重构时,我想知道在编写存储过程(SP)/用户定义函数(UDF)时使用extract方法是否也是一个好习惯,因为我们可以调用其他SP/UDF一个SP/UDF?

它会影响性能吗?

提前致谢.

sql database performance stored-procedures

5
推荐指数
1
解决办法
159
查看次数

何时在SQL Server中使用复合索引和覆盖索引?

我有2个表tb_player1tb_player2.

CREATE TABLE tb_player1 
(
    pk_id INT PRIMARY KEY IDENTITY (1,1) NOT NULL,
    first_name CHAR(16),
    last_name CHAR(16),
    age INT
)

CREATE NONCLUSTERED INDEX ix_nonclustered_name ON tb_player1(first_name, last_name)

CREATE TABLE tb_player2 
(
    pk_id INT PRIMARY KEY IDENTITY (1,1) NOT NULL,
    first_name CHAR(16),
    last_name CHAR(16),
    age INT
)

CREATE NONCLUSTERED INDEX ix_nonclustered_name ON tb_player2(first_name)
INCLUDE (last_name)
Run Code Online (Sandbox Code Playgroud)

tb_player1有复合指数和tb_player2具有包括柱(覆盖索引).

我请对下面的SQL语句tb_player1tb_player2,但实际的执行计划tb_player1tb_player2是相同的.

INSERT INTO tb_player1 VALUES('kenny', 'lee', 29)
INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server indexing

5
推荐指数
1
解决办法
8247
查看次数

不在C#中使用Exception类的Message字段是一种好习惯吗?

根据这篇文章,使用Exception类的Message字段不是一个好的编程习惯.

但是,当我尝试ArgumentException在我的项目中抛出异常(例如)时,如何添加自定义异常信息?我应该使用Exception.Data房产吗?

而不是使用:

throw new ArgumentException("My Custom Info.");
Run Code Online (Sandbox Code Playgroud)

我应该使用:

ArgumentException ex = new ArgumentException();
ex.Data["CustomInfo"] = "My Custom Info.";
throw ex;
Run Code Online (Sandbox Code Playgroud)

如果我不使用Message字段,代码会变得很麻烦.

不使用Exception类的Message字段是一种好习惯吗?

提前致谢.

c# error-handling exception

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

是否可以使用SELECT*在T-SQL中进行存在检查

我是T-SQL的新手.据我所知,SELECT*被认为是一种不好的做法,所以我总是避免在我的代码中使用SELECT*.

但是,我的同事告诉我,使用SELECT*可以进行存在检查.例如,

IF EXISTS (SELECT * FROM tb_test WHERE ResourceType = 2)
BEGIN
    --do something
END
Run Code Online (Sandbox Code Playgroud)

"因为MSSQL Server知道该语句正在进行存在检查,所以优化器会做正确的事情." 他说.

当我使用SELECT*进行存在检查时,是否没有性能开销?

提前致谢.

sql t-sql sql-server

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