我的团队TDD的演变包括似乎偏离了传统的oop.
远离自给自足的类我们仍然在适当的地方封装数据.但是为了模拟任何辅助类,我们通常会创建一些通过构造函数或mutator在外部设置它们的方法.
我们永远不会使用私有方法.为了利用我们的模拟框架(RhinoMocks),这些方法不能是私有的.这是向我们的传统开发者"销售"的最大的一个.在某种程度上,我看到了他们的观点.我只是更看重测试.
你的想法是什么?
我们正在使用Raven来验证登录,以便人们可以进入我们的网站.
我们发现如果你这样做:
// Context is an IDocumentSession
Context.Query<UserModels>()
.SingleOrDefault(u => u.Email.ToLower() == email.ToLower());
Run Code Online (Sandbox Code Playgroud)
该查询仅过滤Raven中文档的前128个文档.在我们的数据库中有几千个,所以除非你的电子邮件恰好在第一个128返回,否则你运气不好.
Raven示例代码或我在网上遇到的任何示例代码都没有使用Skip()和Take()迭代整个集合执行任何循环.
我的解决方案是循环遍历所有文档的集合,直到遇到非null结果,然后我中断并返回.
public T SingleWithIndex(string indexName, Func<T, bool> where)
{
var pageIndex = 1;
const int pageSize = 1024;
RavenQueryStatistics stats;
var queryResults = Context.Query<T>(indexName)
.Statistics(out stats)
.Customize(x => x.WaitForNonStaleResults())
.Take(pageSize)
.Where(where).SingleOrDefault();
if (queryResults == null && stats.TotalResults > pageSize)
{
for (var i = 0; i < (stats.TotalResults / (pageIndex * pageSize)); i++)
{
queryResults = Context.Query<T>(indexName)
.Statistics(out stats)
.Customize(x => …
Run Code Online (Sandbox Code Playgroud) 我对ASP.Net工作进程如何处理进程的了解非常不足.我希望那里的一些专家能够帮助我.
如果我使用System.OutOfMemoryException使工作进程崩溃,那么用户体验的是同一进程所服务的其他用户?他们会得到一个空白的屏幕吗?503错误?
我将尝试与我们实验室中的其他人一起测试这种情况,但我想我会把它漂浮在那里.我会用我们的结果更新.
更新:我们的结果各不相同.如果我们人为地引发OOM异常(例如通过将更大和更大的PDF加载到内存中),那个工作进程所服务的其他线程将暂时"挂起"然后完成,而其他线程似乎永远不会返回.谢谢你的回复.
我不记得我正在阅读哪个博客,因为它当时似乎是学术性的,但是有一个库正在讨论中你可以采取两个具体的类,如果名称匹配,将属性绑定在一起.想想ASP.NET MVC模型绑定.
我们有一个运行.NET 2.0的网站,并开始使用ASP.Net HttpRuntime.Cache来存储频繁数据查找的结果,以减少我们的数据库访问.
片段:
lock (locker)
{
if (HttpRuntime.Cache[cacheKey] == null)
{
HttpRuntime.Cache.Insert(cacheKey, GetSomeDataToCache(), null, DateTime.Today.AddDays(1), Cache.NoSlidingExpiration);
}
return ((SomeData)HttpRuntime.Cache[cacheKey]).Copy();
}
Run Code Online (Sandbox Code Playgroud)
每当我们想要查看缓存时,我们都会悲观地锁定.但是,我已经看到网上发布的各种博客建议您在检查缓存值后锁定,以免产生锁定开销.这似乎不正确,因为另一个线程可能在检查后写入缓存.
所以最后我的问题是这样做的"正确"方法是什么?我们甚至使用正确的线程同步对象吗?我知道ReaderWriterLockSlim(),但我们正在运行.NET 2.0.
我想知道如何(以及可能的话)使用SQL语句将SQL Server 2005置于单用户模式?
我在MSDN上找到了这些说明,但是他们需要SSMS.
http://msdn.microsoft.com/en-us/library/ms345598(SQL.90,loband).aspx
*将数据库设置为单用户模式