小编Ars*_*nko的帖子

SQL连接等待15秒,尽管连接字符串中有3秒超时

我有一个在本地网络上使用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文档指示我们可以同时使用两个字符串)。

c# connection-string sql-server-2008 connection-timeout

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

XML有哪些缺点?

阅读StackOverflow并听Joel Spolsky和Jeff Atwood的播客,我开始相信很多开发人员讨厌使用XML,或者至少尽量避免使用XML来存储或交换数据.

另一方面,我喜欢使用XML有很多原因:

  • XML序列化以大多数现代语言实现,并且非常易于使用,
  • 比二进制序列化慢,XML序列化在使用来自多种编程语言的相同数据或者用于读取和理解的情况时非常有用,即使对于人类的调试(例如,JSON,更难)了解),
  • XML支持unicode,如果使用得当,不同的编码,字符等都没有问题.
  • 有许多工具可以轻松使用XML数据.XSLT就是一个例子,可以轻松呈现和转换数据.XPath是另一个,可以轻松搜索数据,
  • XML可以存储在某些SQL服务器中,这样就可以保存和操作过于复杂而无法轻松存储在SQL表中的数据.例如,JSON或二进制数据不能通过SQL直接操作(除非通过操作字符串,这在大多数情况下是疯狂的),
  • XML不需要安装任何应用程序.如果我希望我的应用程序使用数据库,我必须首先安装数据库服务器.如果我希望我的应用程序使用XML,我不需要安装任何东西,
  • XML比例如Windows注册表或INI文件更加明确和可扩展,
  • 在大多数情况下,由于XML提供的抽象级别,没有CR-LF问题.

那么,考虑到使用XML的所有好处,为什么这么多开发人员讨厌使用它呢?恕我直言,唯一的问题是:

  • XML过于冗长,并且需要比大多数其他形式的数据更多的地方,特别是在涉及Base64编码时.

当然,有很多情况下XML根本不适合.在服务器端的XML文件中存储SO的问题和答案绝对是错误的.或者,在存储AVI视频或一堆JPG图像时,XML是最糟糕的事情.

但其他场景呢?XML有哪些缺点?


对于那些认为这个问题不是真正问题的人:

1980年以来计算机中非封闭的重要新发明之类的问题相反,我的问题一个非常明确的问题,并且明确地邀请解释其他人在使用XML时遇到的弱点以及他们为什么不喜欢它.例如,它不会邀请讨论XML是好还是坏.它也不需要进行长时间的讨论; 因此,到目前为止收到的当前答案简短而精确,并提供了我想要的足够信息.

它是一个维基,因为这个问题没有一个独特的好答案.

根据SO,"不是一个真正的问题"是一个问题,"很难说这里有什么问题.这个问题含糊不清,含糊不清,不完整或修辞,无法以现有形式得到合理回答."

  • 这里有什么问题:我认为问题本身非常清楚,上面的几段文字使它更加清晰,
  • 这个问题含糊不清,含糊不清,不完整:再一次,没有任何含糊不清,既不模糊也不完整,
  • 或修辞:事实并非如此:我的问题的答案并不明显,
  • 并且无法合理地回答:几个人已经对这个问题给出了很好的答案,表明这个问题可以合理地回答.

如何评估答案并确定接受的答案似乎也很明显.如果答案给出了XML错误的充分理由,那么这个答案很可能会被投票,然后被接受.

xml data-storage xml-serialization data-exchange

6
推荐指数
2
解决办法
862
查看次数

在引用父对象字段,属性或方法时,'base'和'this'之间有什么区别吗?

请考虑以下代码:

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类?是否有性能影响?

c# oop syntax optimization

6
推荐指数
2
解决办法
1368
查看次数

在没有iPhone/Mac的情况下为iPhone开发网站

我需要开发一个专门用于iPhone和iPad的网站.我没有这些设备,也没有Mac.

在开发过程中能够测试网站的哪些可能的免费解决方案?

最明显的是使用iPhone的SDK,但由于它的成本/每年$ 100美元,但因为它仅适用于Mac,它不是我的情况的解决方案.

iphone safari cross-browser

5
推荐指数
1
解决办法
774
查看次数

在ASP.NET中更新Dictionary <T,U>的静态方法 - 在字典本身上锁定()是否安全?

我有一个类,它维护一个来自我的域控制器的缓存查找结果的静态字典 - 用户的给定名称和电子邮件.

我的代码看起来像:

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)

需要锁吗?我假设是因为多个请求可能同时执行查找并最终尝试将相同的密钥插入到同一个静态字典中.

如果锁必需的,做我需要创建锁令牌使用一个专用的静态对象实例,或者是它的安全使用实际的词典实例作为锁定令牌?

c# asp.net locking thread-safety

5
推荐指数
2
解决办法
1398
查看次数

难道不向没有正确使用网站的用户提供优雅的错误吗?

我最近收到了一位同事关于我的网站源代码的反馈.他说,不能优雅地处理视觉界面不允许做的事情是不好的做法.

由于它不是很清楚,这是一个例子.

假设访问者可以发表评论.

  • 注释将保存到nvarchar(500)列中的数据库中.
  • <input />字段长度被限制为500.

但是,当然,没有什么禁止更高级的用户禁用长度限制并键入501字符.

(其他例子:提交不即使在存在一个选项<select />.当用户被要求输入一个号码一个优美的错误,她进入一个非数字代替,因为按键事件是通过JavaScript控制和JavaScript可能被禁用)

如果访问者这样做,代码合同级别就会失败.AJAX请求将因意外错误而失败(或者,在页面提交时,将出现意外错误).在所有情况下,访问者都会看到发生了错误,但没有优雅的消息表明提交的评论的长度太长.

为什么这是不好的做法?为什么我会费心为那些正确使用网站的访问者永远不会有的情况设计清晰明确的错误消息?


注意:我知道在发生类似这样的事情时显示.NET Framework详细错误和堆栈跟踪很糟糕.如果我这样做,这是一个严重的安全问题.但在我的情况下,只有一个非常通用的AJAX响应或重定向到通用页面,并对错误道歉.

asp.net usability user-interface

5
推荐指数
1
解决办法
223
查看次数

不使用堆栈/队列的非递归方式列出目录和子目录中的文件

在一次面试中,我被要求列出目录及其子目录\xc2\xb9中的文件名,而不使用递归,也不使用堆栈或队列。

\n\n

由于我知道的唯一非递归方式使用堆栈,因此我无法回答这个问题。

\n\n

面试官解释了解决方案,但我无法理解。我唯一记得的是它涉及两种方法而不是一种。

\n\n

这种允许在没有递归、没有堆栈或队列的情况下列出目录及其子目录中的文件的方法是什么?

\n\n
\n\n

\xc2\xb9 解决方案与语言无关。子目录列表由ListDirectories(string directoryPath)方法提供,文件由ListFiles(string directoryPath). 我们事先不知道子目录的深度。

\n

algorithm queue recursion stack

5
推荐指数
1
解决办法
3473
查看次数

重启后等待MongoDB准备好的正确方法是什么?

我有一个失败的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将起作用,但我不确定是否没有缺点(以某种方式运行无限循环?)

javascript bash mongodb

5
推荐指数
2
解决办法
3394
查看次数

如何找到测试未涵盖哪些分支?

我正在测量一个小型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列包含对应于七个错过的分支的行,但那里什么都没有.

我该怎么找到它们?

python code-coverage coverage.py python-3.x

5
推荐指数
1
解决办法
1251
查看次数

如何在解决方案中嵌入 StyleCop?

我尝试将 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

怎么了?

msbuild stylecop visual-studio-2015

5
推荐指数
1
解决办法
5891
查看次数