我不认为它对数据库有任何影响,但在连接表时,您更喜欢编写条件:
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) 我将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发现它不好并继续查找.)
我有一个有趣的情况,我想知道是否有更好的方法来做到这一点.情况是这样的,我有一个树结构(具体是抽象语法树),一些节点可以包含各种类型的子节点,但都从给定的基类扩展.
我想经常在这个树上做查询,我想找回我感兴趣的特定子类型.所以我创建了一个谓词类,然后我可以将其传递给通用查询方法.起初我有一个看起来像这样的查询方法:
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) 我使用通用存储库模式来保存我的数据.在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框架会有帮助吗?它会负责处理这样的物体吗?
有没有办法在LINQ或LINQ-to-Entities中批量删除与给定查询匹配的一堆对象?我能找到的唯一引用已经过时了,迭代并手动删除我想删除的所有对象似乎很愚蠢.
我最近注意到的一些事情是使用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 的唯一场景吗?
无论如何,谢谢你的时间 - 我期待你的回复!
有没有办法告诉visual studio在构建解决方案时不包含项目而不仅仅是从解决方案中移除项目?
我的情况是,解决方案中的一个项目需要一个我没有安装的插件/工具/库,但我们团队中的另一个开发人员需要.所以当我尝试构建解决方案时,我会遇到编译错误.它是一个单元测试项目,因此从编译中删除它不会影响应用程序的功能.
我不想从解决方案中删除项目,因为他在我签入解决方案之后只需要重新添加它(然后我需要在检查时将其删除,无限制).
前几天我做了一些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()函数有什么特别之处,它比以相同方式递增变量更有效吗?
我有很多JLabels(包括ImageIcons)JPanel.
这JPanel只是GUI上的一个面板; 还有很多其他面板.
我想将标签放在JPanel容器上的精确像素坐标上.
如果不使用我怎么能这样做GroupLayout?
我似乎无处可去.在网上搜索脚本等等.任何人都有一个脚本,您可以在Windows环境中编辑现成的pre-commit.tmpl,该环境需要输入x字符才能在Tortoise Subversion中提交注释全局,以便团队中的所有成员都需要,而这个要求从SVN服务器下推到客户端?
我不知道脚本语言,这应该是非常简单的事情,没有我花时间找出接下来3个小时的脚本.
java ×2
sql ×2
benchmarking ×1
c# ×1
database ×1
debugging ×1
generics ×1
join ×1
linq ×1
mysql ×1
ninject ×1
performance ×1
pre-commit ×1
python ×1
structuremap ×1
svn ×1
svn-hooks ×1
swing ×1
syntax ×1
tortoisesvn ×1
webforms ×1
windows ×1