我总是采用首先使用最少的索引集部署数据库,然后根据性能指示添加/更改索引的方法.
这种方法运作得相当好.但是,它仍然没有告诉我在哪里可以提高性能.它只告诉我性能如此糟糕以至于用户抱怨它.
目前,我正在为许多应用程序重构数据库对象.
因此,我不应该费心寻求性能改进,因为"过早优化是所有邪恶的根源"吗?
在重构应用程序代码时,开发人员一直在寻找提高代码质量的方法.有没有办法不断寻求数据库性能的改进?如果是这样,您发现哪些工具和技术最有帮助?
我曾简要介绍过"数据库引擎调优顾问",但没有发现它有用.也许我只需要更多的经验来解释结果.
我准备开始使用SVN,但我没有(如免费啤酒所需的钱)源控制的经验.我已经在我的服务器上安装了subversion(这很简单,'apt-get install subversion'),但现在我不知道该怎么做,如何配置它,或者如何使用它.
您有什么建议,我在哪里可以找到学习开始使用它的好资源?
更新:
好的所以反馈非常好,我已经阅读了一些内容,但我想澄清我的问题,说我正在寻找有关如何实际设置我的存储库,客户端,服务器等的更多信息.我知道我可以快速搜索谷歌并找到几十个(或更多)资源,但我希望那些有颠覆经验的人和一个客户(我已经安装了乌龟)可以建议一个可靠的好参考,有优质的内容.
我正在使用NUnit 2.5.7.我想测试一个特定类的自定义对象的集合是否包含某些对象,基于类的属性之一.
例如一个人为的例子......
public class Person
{
public string Name { get; set; }
public Person(string name)
{
Name = name;
}
}
// ...
public List<Person> GetFavouritePeople()
{
List<Person> favouritePeople = new List<Person>();
favouritePeople.Add(new Person("joe"));
favouritePeople.Add(new Person("fred"));
favouritePeople.Add(new Person("jenny"));
return favouritePeople;
}
// ...
[Test]
public GetFavouritePeople()
{
List<Person> people = GetFavouritePeople();
// What I'd like to test, but not sure how to do it...
Assert.Contains(Name="joe", people);
Assert.Contains(Name="fred", people);
Assert.Contains(Name="jenny", people);
}
Run Code Online (Sandbox Code Playgroud)
虽然在这个例子中它很简单,但我不想为每个Person创建模拟对象并在断言中使用它们......我只想根据特定属性(本例中的Name)进行检查.
Python的IDLE有'Check Module'(Alt-X)来检查可以调用的语法而无需运行代码.是否有相同的方法在Emacs中执行此操作而不是运行和执行代码?
我从NAnt切换到使用Python编写构建自动化脚本.我很好奇是否有任何值得使用的构建框架类似于Make,Ant和NAnt,而是基于Python.例如,Ruby有Rake.那Python怎么样?
我需要连接到另一个Windows域中的SQL Server 2008实例来管理它.我们只使用Windows身份验证.
在Windows XP中,我可以使用"管理网络密码"功能在我的本地计算机上存储我的远程计算机的用户名和密码.这样做会导致SQL Server Management Studio在连接到该服务器时使用这些凭据而不是我的本地凭据.这非常有效,并且每次与SSMS连接时都无法输入用户名或密码.
但是,Holy Cow,升级到Windows 7之后,我再也无法做到这一点.在Credential Manager中添加远程域凭据无法产生所需的行为.SMSS 2008 R2忽略存储的凭据,而是始终发送我的本地凭据,导致登录每次都失败.在SMSS中,甚至没有办法输入备用凭据,因此结果是我根本无法访问远程服务器!
登录失败,并显示以下消息:
登录失败.登录来自不受信任的域,不能与Windows身份验证一起使用.(Microsoft SQL Server,错误:18452)
如何让Windows 7上的SMSS以与Windows XP相同的方式运行?
我遇到以下代码问题.当我使用调试器时,我遇到以下行的异常:
dgvCalls.Columns.Insert(1, msisnnColumn);
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
无法添加列,因为其CellType属性为null.
奇怪的是,我为其他一些DataGridViews创建了相同的程序,它运行正常.
if (!(dgvCalls.Columns.Contains("DirectionImage")))
{
directionIconColumn = new DataGridViewImageColumn();
directionIconColumn.Name = "DirectionImage";
directionIconColumn.HeaderText = "";
dgvCalls.Columns.Insert(0, directionIconColumn);
directionIconColumn.CellTemplate = new DataGridViewImageCell();
}
if (!(dgvCalls.Columns.Contains("msisndColumn")))
{
msisnnColumn = new DataGridViewColumn();
msisnnColumn.Name = "msisndColumn";
msisnnColumn.HeaderText = "Klic";
dgvCalls.Columns.Insert(1, msisnnColumn);
msisnnColumn.CellTemplate = new DataGridViewTextBoxCell();
}
Run Code Online (Sandbox Code Playgroud)
有什么建议?
通常在我处理LINQ序列时,我想将每个项目发送到返回void的方法,避免使用foreach循环.但是,我还没有找到一种优雅的方法来做到这一点.今天,我写了以下代码:
private StreamWriter _sw;
private void streamToFile(List<ErrorEntry> errors)
{
if (_sw == null)
{
_sw = new StreamWriter(Path.Combine
(Path.GetDirectoryName(_targetDatabasePath), "errors.txt"));
}
Func<ErrorEntry, bool> writeSelector =
(e) => { _sw.WriteLine(getTabDelimititedLine(e)); return true; };
errors.Select(writeSelector);
_sw.Flush();
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我编写了一个只返回true的lambda函数,我意识到Select方法将返回一个布尔序列 - 我将忽略该序列.然而,这看起来有点讽刺和下沉.有没有优雅的方法来做到这一点?或者我只是误用了LINQ?
谢谢.
与列表不同的字典不是有序的(并且没有'sort'属性).因此,首次添加时,您不能依赖于以相同顺序获取项目.
循环包含字符串作为键值的字典并按键按升序检索它们的最简单方法是什么?
例如,你有这个:
d = {'b' : 'this is b', 'a': 'this is a' , 'c' : 'this is c'}
Run Code Online (Sandbox Code Playgroud)
我想按以下顺序打印关键值:按键排序:
this is a
this is b
this is c
Run Code Online (Sandbox Code Playgroud) 我正在创建一个Python脚本,它执行一系列任务,其中一个任务是启动并打开Excel实例.在我的脚本中实现这一目标的理想方法是什么?
python ×4
c# ×3
sql-server ×2
.net ×1
collections ×1
datagridview ×1
dictionary ×1
emacs ×1
ipc ×1
linq ×1
list ×1
nunit ×1
nunit-2.5 ×1
optimization ×1
scripting ×1
sorting ×1
ssms ×1
svn ×1
syntax ×1
unit-testing ×1
validation ×1
void ×1