我有一个在本地网络上使用Microsoft SQL 2008 Server的网站。有时,SQL Server计算机会重新启动,因此网站无法连接到数据库。如果机器运行起来,它会迅速作出反应。如果出现故障,则无需等待15秒。3秒还可以。
当数据库不可访问时,我想在网站上表示歉意,并希望尽快做到。但是Connection Timeout=3在连接字符串中设置似乎无效。该页面花了22秒钟等待,然后再SqlException继续SqlConnection.Open();。
它出什么问题了?难道它是一个覆盖了超时的隐藏配置?
目前,我的连接字符串是
Data Source=...;
Initial Catalog=...;
Integrated Security=True;
Connection Timeout=3
Run Code Online (Sandbox Code Playgroud)
如果我将其设置为...;ConnectionTimeout=3(无空格),
System.ArgumentException: Keyword not supported: 'connectiontimeout'.
Run Code Online (Sandbox Code Playgroud)
被抛出(奇怪的是,MSDN文档指示我们可以同时使用两个字符串)。
阅读StackOverflow并听Joel Spolsky和Jeff Atwood的播客,我开始相信很多开发人员讨厌使用XML,或者至少尽量避免使用XML来存储或交换数据.
另一方面,我喜欢使用XML有很多原因:
那么,考虑到使用XML的所有好处,为什么这么多开发人员讨厌使用它呢?恕我直言,唯一的问题是:
当然,有很多情况下XML根本不适合.在服务器端的XML文件中存储SO的问题和答案绝对是错误的.或者,在存储AVI视频或一堆JPG图像时,XML是最糟糕的事情.
但其他场景呢?XML有哪些缺点?
对于那些认为这个问题不是真正问题的人:
与1980年以来计算机中非封闭的重要新发明之类的问题相反,我的问题是一个非常明确的问题,并且明确地邀请解释其他人在使用XML时遇到的弱点以及他们为什么不喜欢它.例如,它不会邀请讨论XML是好还是坏.它也不需要进行长时间的讨论; 因此,到目前为止收到的当前答案简短而精确,并提供了我想要的足够信息.
但它是一个维基,因为这个问题没有一个独特的好答案.
根据SO,"不是一个真正的问题"是一个问题,"很难说这里有什么问题.这个问题含糊不清,含糊不清,不完整或修辞,无法以现有形式得到合理回答."
如何评估答案并确定接受的答案似乎也很明显.如果答案给出了XML错误的充分理由,那么这个答案很可能会被投票,然后被接受.
请考虑以下代码:
public class Vehicle
{
public void StartEngine()
{
// Code here.
}
}
public class CityBus : Vehicle
{
public void MoveToLocation(Location location)
{
////base.StartEngine();
this.StartEngine();
// Do other stuff to drive the bus to the new location.
}
}
Run Code Online (Sandbox Code Playgroud)
是否有任何区别this.StartEngine();和base.StartEngine();不同之处在于在第二种情况下,StartEngine方法不能被移动到或重写CityBus类?是否有性能影响?
我需要开发一个专门用于iPhone和iPad的网站.我没有这些设备,也没有Mac.
在开发过程中能够测试网站的哪些可能的免费解决方案?
在最明显的是使用iPhone的SDK,但由于它的成本/每年$ 100美元,但因为它仅适用于Mac,它不是我的情况的解决方案.
我有一个类,它维护一个来自我的域控制器的缓存查找结果的静态字典 - 用户的给定名称和电子邮件.
我的代码看起来像:
private static Dictionary<string, string> emailCache = new Dictionary<string, string>();
protected string GetUserEmail(string accountName)
{
if (emailCache.ContainsKey(accountName))
{
return(emailCache[accountName]);
}
lock(/* something */)
{
if (emailCache.ContainsKey(accountName))
{
return(emailCache[accountName]);
}
var email = GetEmailFromActiveDirectory(accountName);
emailCache.Add(accountName, email);
return(email);
}
}
Run Code Online (Sandbox Code Playgroud)
需要锁吗?我假设是因为多个请求可能同时执行查找并最终尝试将相同的密钥插入到同一个静态字典中.
如果锁是必需的,做我需要创建锁令牌使用一个专用的静态对象实例,或者是它的安全使用实际的词典实例作为锁定令牌?
我最近收到了一位同事关于我的网站源代码的反馈.他说,不能优雅地处理视觉界面不允许做的事情是不好的做法.
由于它不是很清楚,这是一个例子.
假设访问者可以发表评论.
nvarchar(500)列中的数据库中.<input />字段长度被限制为500.但是,当然,没有什么禁止更高级的用户禁用长度限制并键入501字符.
(其他例子:提交不即使在存在一个选项<select />.但有是当用户被要求输入一个号码一个优美的错误,她进入一个非数字代替,因为按键事件是通过JavaScript控制和JavaScript可能被禁用)
如果访问者这样做,代码合同级别就会失败.AJAX请求将因意外错误而失败(或者,在页面提交时,将出现意外错误).在所有情况下,访问者都会看到发生了错误,但没有优雅的消息表明提交的评论的长度太长.
为什么这是不好的做法?为什么我会费心为那些正确使用网站的访问者永远不会有的情况设计清晰明确的错误消息?
注意:我知道在发生类似这样的事情时显示.NET Framework详细错误和堆栈跟踪很糟糕.如果我这样做,这是一个严重的安全问题.但在我的情况下,只有一个非常通用的AJAX响应或重定向到通用页面,并对错误道歉.
在一次面试中,我被要求列出目录及其子目录\xc2\xb9中的文件名,而不使用递归,也不使用堆栈或队列。
\n\n由于我知道的唯一非递归方式使用堆栈,因此我无法回答这个问题。
\n\n面试官解释了解决方案,但我无法理解。我唯一记得的是它涉及两种方法而不是一种。
\n\n这种允许在没有递归、没有堆栈或队列的情况下列出目录及其子目录中的文件的方法是什么?
\n\n\xc2\xb9 解决方案与语言无关。子目录列表由ListDirectories(string directoryPath)方法提供,文件由ListFiles(string directoryPath). 我们事先不知道子目录的深度。
我有一个失败的bash脚本.检查后,似乎失败的原因是重启后立即访问MongoDB.
例如,运行:
mongo --eval "db.version()"
Run Code Online (Sandbox Code Playgroud)
给出预期的输出:
MongoDB shell版本:2.4.9
连接到:test
2.4.9
在跑步的时候:
service mongodb restart; mongo --eval "db.version()"
Run Code Online (Sandbox Code Playgroud)
产生以下输出,强调我的:
mongodb停止/等待
mongodb启动/运行,进程1466
MongoDB shell版本:2.4.9
连接到:test
Sat Oct 25 02:52:29.736 错误:无法连接到 src/mongo/shell /的服务器127.0.0.1:27017 mongo.js:145
例外:连接失败
因为服务器尚未就绪.
在执行bash脚本直到MongoDB实际准备好之前等待的正确方法是什么?
service mongodb status 不是解决方案,因为它报告服务的状态,而不是数据库本身.
nc -z localhost 27017重复执行直到其退出代码变为0将起作用,但我不确定是否没有缺点(以某种方式运行无限循环?)
我正在测量一个小型Python应用程序的代码覆盖率.
虽然线路覆盖率为100%,但分支覆盖范围不是.问题是,coverage不会给我任何关于没有被覆盖的分支的位置的指示.
coverage run
--branch
--omit=/usr/lib/python3/dist-packages/*,tests/*
-m unittest discover
Run Code Online (Sandbox Code Playgroud)
收益:
Ran 33 tests in 0.079s
OK
Name Stmts Miss Branch BrMiss Cover Missing
-------------------------------------------------------------
app/__init__ 1 0 0 0 100%
app/file_finder 93 0 40 0 100%
app/zipper 66 0 46 7 94%
-------------------------------------------------------------
TOTAL 160 0 86 7 97%
Run Code Online (Sandbox Code Playgroud)
我希望Missing列包含对应于七个错过的分支的行,但那里什么都没有.
我该怎么找到它们?
我尝试将 StyleCop 集成到 Visual Studio 解决方案中。我宁愿避免在每个开发人员的每台机器上安装 StyleCop。我多次看到的建议(示例)是在项目中包含 StyleCop 的二进制文件,将它们存储在版本控制中。
我就是这么做的。它在我的机器上工作,但在没有安装 StyleCop 的另一台机器上失败。在我的机器上卸载 StyleCop 后,它也无法在那里工作。
错误消息如下:
严重性代码描述项目文件行错误无法从程序集 C:\Program Files (x86)\MSBuild..\StyleCop 4.7\StyleCop.dll 加载“StyleCopTask”任务。无法加载文件或程序集“file:///C:\Program Files (x86)\StyleCop 4.7\StyleCop.dll”或其依赖项之一。该系统找不到指定的文件。确认声明正确,程序集及其所有依赖项都可用,并且任务包含实现 Microsoft.Build.Framework.ITask 的公共类。演示
这是我在每个 .csproj 文件中包含的内容:
<Import Project="$(SolutionDir)\externs\Microsoft.StyleCop\StyleCop.targets" />
Run Code Online (Sandbox Code Playgroud)
该目录C:\demo\externs\Microsoft.StyleCop包含:
来自C:\Program Files (x86)\StyleCop 4.7,的所有文件的副本
的副本C:\Program Files (x86)\MSBuild\StyleCop\v4.7\StyleCop.Targets。
怎么了?
c# ×3
asp.net ×2
algorithm ×1
bash ×1
coverage.py ×1
data-storage ×1
iphone ×1
javascript ×1
locking ×1
mongodb ×1
msbuild ×1
oop ×1
optimization ×1
python ×1
python-3.x ×1
queue ×1
recursion ×1
safari ×1
stack ×1
stylecop ×1
syntax ×1
usability ×1
xml ×1