问题列表 - 第8152页

SQL连接条件A = B或反向B = A?

我不认为它对数据库有任何影响,但在连接表时,您更喜欢编写条件:

SELECT
    ...
    FROM AAA
        INNER JOIN BBB ON AAA.ID=BBB.ID
    WHERE ...
Run Code Online (Sandbox Code Playgroud)

要么

SELECT
    ...
    FROM AAA
        INNER JOIN BBB ON BBB.ID=AAA.ID
    WHERE ...
Run Code Online (Sandbox Code Playgroud)

sql join

2
推荐指数
3
解决办法
3727
查看次数

阻止Visual Studio尝试加载特定DLL的符号

我将Visual Studio 2005设置为使用Microsoft的符号服务器.我还安装了UltraMon,它为每个进程注入一个钩子DLL.每当我开始调试我的MFC应用程序时,Visual Studio会说:

"Loading symbols for C:\Program Files\UltraMon\RTSUltraMonHookX32.dll..."
Run Code Online (Sandbox Code Playgroud)

从眨眼间到几十秒钟.它永远不会找到那些符号......我可以告诉它不要去寻找它吗?

(我尝试创建一个空RTSUltraMonHookX32.pdb文件,但Visual Studio发现它不好并继续查找.)

debugging debug-symbols visual-studio

61
推荐指数
4
解决办法
6万
查看次数

键入安全性,Java泛型和查询

我有一个有趣的情况,我想知道是否有更好的方法来做到这一点.情况是这样的,我有一个树结构(具体是抽象语法树),一些节点可以包含各种类型的子节点,但都从给定的基类扩展.

我想经常在这个树上做查询,我想找回我感兴趣的特定子类型.所以我创建了一个谓词类,然后我可以将其传递给通用查询方法.起初我有一个看起来像这样的查询方法:

public <T extends Element> List<T> findAll(IElementPredicate pred, Class<T> c);
Run Code Online (Sandbox Code Playgroud)

其中Class参数仅用于指示返回类型.令我困扰的是这种方法是我的所有谓词都已经用于特定类型,所以这里有冗余信息.典型的呼叫可能如下所示:

List<Declaration> decls = 
    scope.findAll(new DeclarationPredicate(), Declaration.class);
Run Code Online (Sandbox Code Playgroud)

所以我像这样重构它:

public <T extends Element> List<T> findAll(IElementPredicate<T> pred);
Run Code Online (Sandbox Code Playgroud)

IElementPredicate界面看起来是这样的:

public interface IElementPredicate<T extends Element> {
    public boolean match(T e);
    public String getDescription();
    public Class<T> getGenericClass();
}
Run Code Online (Sandbox Code Playgroud)

这里的要点是谓词接口被扩展以提供Class对象.它使得编写实际的findAll方法更加有效,并且它在编写谓词时增加了一些工作,但这些都是微小的"一次性"事情,它使查询调用更好,因为你没有添加额外的(可能是多余的)参数,例如

List<Declaration> decls = scope.findAll(new DeclarationPredicate());
Run Code Online (Sandbox Code Playgroud)

我之前没有注意到这种模式.这是处理Java泛型语义的典型方法吗?只是好奇我是否错过了一些更好的模式.

Commments?

更新:

一个问题是你需要什么类?这是findAll的实现:

public <T extends Element> List<T> findAll(IElementPredicate<T> pred) {
    List<T> ret = new LinkedList<T>();
    Class<T> c = pred.getGenericClass();
    for(Element …
Run Code Online (Sandbox Code Playgroud)

java generics

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

使用webforms和DI对象实例化的MVP模式

我使用通用存储库模式来保存我的数据.在PageLoad上,我正在创建一个新的Repository(来自IRepository)对象,而在PageUnload上,我处理它.

MasterPage/Page是否应该负责实例化要传递给演示者的对象,还是演示者应该负责这个?我更关心测试演示者而不是页面(View),因为它更容易模拟传递给演示者的接口.

示例页面

public partial class _Default : System.Web.UI.Page
{
    private IRepository _repo;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (_repo == null)
            _repo = new Repository();
        ConnectPresenter();
    }

    private void ConnectPresenter()
    {
        _DefaultPresenter presenter = new _DefaultPresenter(_repo);
    }

    private void Page_Unload(object sender, EventArgs e)
    {
        if (_repo != null)
            _repo.Dispose();
    }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,诸如StructureMap或Ninject之类的DI框架会有帮助吗?它会负责处理这样的物体吗?

structuremap dependency-injection webforms ninject

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

在LINQ to Entities中批量删除

有没有办法在LINQ或LINQ-to-Entities中批量删除与给定查询匹配的一堆对象?我能找到的唯一引用已经过时了,迭代并手动删除我想删除的所有对象似乎很愚蠢.

c# linq database linq-to-entities entity-framework

79
推荐指数
5
解决办法
9万
查看次数

WHERE x IN(5)vs WHERE x = 5 ...为什么要使用IN?

我最近注意到的一些事情是使用IN的人似乎不合适.我觉得我错过了一个技巧 - 也许有速度提升或什么?

这个查询:

SELECT * FROM pages WHERE is_visible IN ($visibility)
Run Code Online (Sandbox Code Playgroud)

为什么要用它?为什么不:

SELECT * FROM pages WHERE is_visible = $visibility
Run Code Online (Sandbox Code Playgroud)

当然,如果是这样的话:

SELECT * FROM pages WHERE is_visible 
IN ($visibility,$invisibility,$somethingelse)
Run Code Online (Sandbox Code Playgroud)

那么WHERE x IN (1,2,3)是一个更好的选择WHERE x = 1 OR x = 2 OR x = 3,对吗?但肯定这是你应该使用IN 的唯一场景吗?

无论如何,谢谢你的时间 - 我期待你的回复!

mysql sql syntax

6
推荐指数
4
解决办法
1480
查看次数

禁用Visual Studio 2008 Project的编译

有没有办法告诉visual studio在构建解决方案时不包含项目而不仅仅是从解决方案中移除项目?

我的情况是,解决方案中的一个项目需要一个我没有安装的插件/工具/库,但我们团队中的另一个开发人员需要.所以当我尝试构建解决方案时,我会遇到编译错误.它是一个单元测试项目,因此从编译中删除它不会影响应用程序的功能.

我不想从解决方案中删除项目,因为他在我签入解决方案之后只需要重新添加它(然后我需要在检查时将其删除,无限制).

visual-studio-2008 visual-studio

21
推荐指数
2
解决办法
6279
查看次数

为什么Python中的range()循环比使用while循环更快?

前几天我做了一些Python基准测试,我发现了一些有趣的东西.下面是两个或多或少相同的循环.循环1大约需要循环2执行的两倍.

循环1:

int i = 0
while i < 100000000:
  i += 1
Run Code Online (Sandbox Code Playgroud)

循环2:

for n in range(0,100000000):
  pass
Run Code Online (Sandbox Code Playgroud)

为什么第一个循环这么慢?我知道这是一个微不足道的例子,但它引起了我的兴趣.range()函数有什么特别之处,它比以相同方式递增变量更有效吗?

python performance benchmarking

73
推荐指数
4
解决办法
5万
查看次数

如何将JLabel定位到Java GUI上的绝对位置

我有很多JLabels(包括ImageIcons)JPanel.

JPanel只是GUI上的一个面板; 还有很多其他面板.

我想将标签放在JPanel容器上的精确像素坐标上.

如果不使用我怎么能这样做GroupLayout

java user-interface swing layout-manager

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

用于注释长度Subversion的Windows预提交钩子

我似乎无处可去.在网上搜索脚本等等.任何人都有一个脚本,您可以在Windows环境中编辑现成的pre-commit.tmpl,该环境需要输入x字符才能在Tortoise Subversion中提交注释全局,以便团队中的所有成员都需要,而这个要求从SVN服务器下推到客户端?

我不知道脚本语言,这应该是非常简单的事情,没有我花时间找出接下来3个小时的脚本.

svn windows tortoisesvn pre-commit svn-hooks

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