小编Dan*_*ola的帖子

如何在PostgreSQL中为日期添加可变的小时数?

显然,PostgreSQL没有DATEADD,因为你可以只使用+-运算符.

我需要在日期中添加一些小时,这样就完成了:

date_field + interval '8.25 hour' 
Run Code Online (Sandbox Code Playgroud)

这很棒,但是我需要从表格中的字段中获得的小时数.会是这样的:

date_field + interval start_time 'hour' 
Run Code Online (Sandbox Code Playgroud)

我无法在任何地方找到如何做到这一点.这实际上不可能吗?

我不介意使用丑陋的黑客,比如取场值并除以3600,乘以86400.无论我需要做什么,但我也没有办法做到这一点.

postgresql datetime

32
推荐指数
3
解决办法
3万
查看次数

Entity Framework何时打开和关闭数据库连接?

当我在实体框架中实例化我的"实体"对象,并使用该实体对象进行一些查询时,连接会发生什么?

  • 我在实例化对象时是否打开连接,并在处理它时将其关闭?
  • 或者它是否为我执行的每个查询打开和关闭连接?

在任何一种情况下,是否可以改变它以便它做另一件事?

connection entity-framework .net-3.5

31
推荐指数
2
解决办法
3万
查看次数

帮助排除SqlException故障:在非负载情况下,连接超时

我有一个托管我的网站的服务器几乎没有流量.
一些人(<20)每天进入该网站,一些RSS阅读器订阅了我们推出的一些提要.

几乎每天晚上,一个RSS阅读器都会在半夜打电话给我们,并且由于连接中的超时而导致网站无法连接到SQL Server.细节非常奇怪,所以我正在寻找一些可能出现问题的帮助,因为我不知道从哪里开始寻找.

我们在Windows Server 2008上使用ASP.Net MVC,实体框架和SQL Server 2008.这台机器是我们从一个不完全顶级的提供商那里获得的专用盒子,所以事情可能是非最佳配置,或者谁知道什么其他.
盒子也很小,只有1Gb的RAM,但它应该承担我们现在的那种负载......

我正在复制下面的完整调用堆栈,但首先,我们知道的一些事情:

  • 当iTunes查询我们的网站时,总会发生错误.我相信这应该与任何事情无关,但事实是我们只能从iTunes获得它.我最好的猜测是,这种情况发生是因为只有iTunes在当晚没有其他人打我们的时候询问我们.
  • 我们的一个理论是,SQL Server和IIS正在为内存而战,其中一个是从未被使用中被分页到磁盘,当有人"唤醒它"时,从磁盘上读取所有内容需要很长时间进入记忆.这有可能发生吗?(我有点丢弃这个,因为如果可能的话,它听起来像SQL Server中的设计问题)
  • 我还想到了我们泄漏连接的可能性,因为我们可能没有适当地处理EF实体(请参阅我的问题).这是我通过谷歌搜索问题找到的唯一一件事.鉴于我们的负载极低,我正在抛弃这一点.
  • 这总是发生在整个晚上,所以这很可能与一段时间没有发生任何事情有关.例如,我很确定当这些请求命中时,Web服务器进程被回收并且它正在启动/重新监视所有内容.但是,重新JITting并没有解释SQL超时.

更新:我们按照建议添加了一个分析器,在我们遇到新的异常之前花了很长时间.这是我们所知道的新内容:

  • 将探查器附加到极大地减少了我们得到的错误数量.事实上,通常在每天几次之后,我们不得不等待3或4天才能发生这种情况.一旦我们停止了探查器,它就会恢复到正常的错误频率(甚至更糟).因此,探查器有一定的效果可以在某种程度上隐藏这个问题,但并不完全.
  • 查看IIS请求日志旁边的探查器跟踪,请求和查询之间存在预期的1-1对应关系.但是,我偶尔会看到很多正在执行的查询与IIS日志完全无关.实际上,就在记录实际错误之前,我在3分钟内得到了750个查询,所有查询都与IIS日志完全无关.查询文本看起来像EF生成的那种不可读的废话,并且它们并不完全相同,它们看起来就像来自网站的查询:相同的ApplicationName,User等.想一想这多么荒谬是的,该网站在2天的过程中获得了大约370个IIS请求
  • 这些无法解释的查询并非来自与之前网站相同的ClientProcessID,尽管它们可能仍然来自网站,如果此过程在此期间被回收.在最后解释的查询与第一个无法解释的查询之间有近一个小时没有活动.
  • 在我记录错误之前,我不知道它们来自哪里的长条查询之一就出现了,所以我相信这是我们应该遵循的线索.
  • 正如我原先预期的那样,当执行抛出错误的查询时,它来自与前一个不同的ClientProcessID(比前一个无法解释的一个晚了8分钟,几乎比前一个IIS快一个小时).对我来说,这意味着工人流程确实得到了回收.
  • 这是我绝对不明白的事情.IIS日志显示错误请求前一分钟,4完全服务,尽管这些查询根本没有显示在跟踪中.事实上,在那些顺利完成的4个之后,我有4个例外快速连续抛出,这4个也没有显示在跟踪中(这是有道理的,因为如果有连接超时,查询应该从未执行过,但我没有看到跟踪中的连接尝试)

所以,简而言之,我对这一点完全无能为力.我无法找到那些快速连续运行的数百个查询的原因,但我相信这些问题必须与问题有关.
我也不知道如何诊断连接问题...
或者如果Profiler跟踪可能会丢失一些根据IIS进行的查询...

有任何想法吗?


这是例外信息:

System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

System.Data.EntityException: The underlying provider failed on Open. ---> System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior …
Run Code Online (Sandbox Code Playgroud)

connection timeout sql-server-2008 connection-timeout

31
推荐指数
1
解决办法
3万
查看次数

C#是单一派遣还是多种派遣语言?

我正在努力理解单个和多个调度是什么.

我刚刚读到这个:http:
//en.wikipedia.org/wiki/Multiple_dispatch

从这个定义来看,我认为C#和VB.Net是多分派的,即使在编译时选择要调用的重载也是如此.

我在这里是正确的,还是我错过了什么?谢谢!

c# programming-languages multiple-dispatch single-dispatch

30
推荐指数
3
解决办法
8589
查看次数

什么可以在我的回复标题中添加"Pragma:no-cache"?(Apache,PHP)

我有一个网站,我继承了维护,这是一个很大的毛病.
我正在做的一件事就是提高性能.除此之外,我正在Expires为图像添加标题.

现在,有一些图像是通过PHP文件提供的,我注意到它们确实有Expires标题,但每次都会加载它们.

看看响应标题,我看到了这个:

Expires Wed, 15 Jun 2011 18:11:55 GMT
Cache-Control   no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma  no-cache
Run Code Online (Sandbox Code Playgroud)

这显然解释了这个问题.

现在,我看了整个代码库,并没有在任何地方说"pragma"..htaccess似乎没有任何相关的东西.

什么想法可以设置那些"pragma"(和"缓存控制")标题,我怎么能避免它?

php apache caching pragma http-headers

30
推荐指数
4
解决办法
2万
查看次数

如何在Javascript中包装函数?

我正在为我的一个应用程序编写一个全局错误处理"模块".

我想要的一个功能是能够使用Try {} Catch {}块轻松包装函数,以便对该函数的所有调用将自动具有将调用我的全局日志记录方法的错误处理代码.(避免使用try/catch块在任何地方污染代码).

然而,这稍微超出了我对Javascript,.call和.apply方法以及"this"关键字的低级功能的理解.

我根据Prototype的Function.wrap方法编写了这段代码:

Object.extend(Function.prototype, {
  TryCatchWrap: function() {
    var __method = this;
    return function() {
            try { __method.apply(this, arguments) } catch(ex) { ErrorHandler.Exception(ex); }
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

使用方式如下:

function DoSomething(a, b, c, d) {
    document.write(a + b + c)
    alert(1/e);
}

var fn2 = DoSomething.TryCatchWrap();
fn2(1, 2, 3, 4);
Run Code Online (Sandbox Code Playgroud)

该代码完美无缺.它打印出6,然后调用我的全局错误处理程序.

我的问题是......当我正在包装的函数在一个对象中时它是否会破坏某些东西,它会使用"this"运算符?我有点担心,因为我打电话.在那里传递一些东西,我担心这可能会破坏一些东西.

javascript function try-catch wrapper apply

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

在多线程Rails环境中使用Redis的最佳方法是什么?(Puma/Sidekiq)

我在我的应用程序中使用Redis,包括Sidekiq队列和模型缓存.

考虑到将从我的Web应用程序(通过Puma运行)和Sidekiq内部的后台作业调用将要访问Redis的模型,我的模型可以使用Redis连接的最佳方法是什么?

我目前在我的初始化器中执行此操作:

Redis.current = Redis.new(host: 'localhost', port: 6379)
Run Code Online (Sandbox Code Playgroud)

然后在整个代码中使用Redis.current.get/ Redis.current.set(和类似的)...

据我所知,这应该是线程安全的,因为Redis客户端只使用Monitor一次运行一个命令.

现在,Sidekiq拥有自己的Redis连接池,并建议这样做

Sidekiq.redis do |conn|
   conn.get
   conn.set
end
Run Code Online (Sandbox Code Playgroud)

据我所知,这比使用Redis.current的方法更好,因为当他们命中Redis时,多个线程上没有多个工作线在一个连接上互相等待.

但是,如何才能将我从Sidekiq.redis获得的连接提供给我的模型?(无需在每个方法调用中将其作为参数传递)

我无法在该块中设置Redis.current,因为它是全局的,并且我回到每个人使用相同的连接(以及它们之间随机切换,甚至可能是非线程安全的)

我应该将从Sidekiq.Redis获得的连接存储到Thread-local变量中,并在任何地方使用该线程局部变量?

在这种情况下,我在"Puma"环境中做了什么?如何设置线程局部变量?

对此有任何想法非常感谢.

谢谢!

ruby thread-safety redis sidekiq ruby-on-rails-4

29
推荐指数
1
解决办法
6958
查看次数

Array.Join in .Net?

好吧,这是一个愚蠢的事情,我确信我已经做了几十次,但由于某种原因我找不到它.

我有一个数组...并希望得到一个字符串,该数组的内容由分隔符分隔...

我找不到的.Join()方法在哪里?

(这是.Net 2.0,我没有任何LINQ的东西)

谢谢!

arrays join .net-2.0

28
推荐指数
2
解决办法
2万
查看次数

什么是PHP的session.referer_check保护我?

我正在制作一个需要相当安全的CakePHP系统,因为我们处理的是钱,客户账户等.到目前为止,一切都很好,直到我必须与我需要的支付平台集成重定向到他们的网站,他们重定向回我的网站.

这在我的开发机器(debug = 2)中工作正常,但在生产中,当客户被重定向回来时,他得到登录提示而不是回到他的"登录区域".经过多次挖掘后我发现这是因为CakePHP设置了session.referer_check,如果HTTP_REFERER来自另一个主机而不是我的,则会使会话无效.

现在,通常情况下,我会毫不犹豫地禁用它,但在这个系统中我更关注安全性而不是正常情况.

我的问题是session.referer_check究竟应该保护我什么?
如果我将其关闭,我的网站可以进行什么样的攻击/利用/坏事?

我猜这里存在一些原因,但是我无法想象它会保护我什么.

你能给我任何想法吗?
安全禁用吗?

谢谢
Daniel

php security cakephp

27
推荐指数
1
解决办法
6764
查看次数

如何在MySQL中进行备份?

如何在MySQL中进行备份?

我希望每隔"x"小时运行mysqldump会有更好的东西.

有没有类似SQL Server的东西,你可以在那里每天进行完整备份,然后每小时进行一次增量备份,所以如果你的数据库死了你可以恢复到最新的备份?

像DB日志这样的东西,只要日志不死,你可以恢复到数据库死亡的确切位置?

另外,这些东西如何影响锁定?如果我做一个mysqldump,我希望在线交易能锁定一段时间.

mysql backup

26
推荐指数
3
解决办法
1万
查看次数