我们目前正在开发一个Web应用程序,它可以处理位于数据库表中的大量存档数据.表中的数据行由一个唯一的行ID,两个标识机器和数据点的ID,一个值和一个时间戳组成.每当值更改超过给定阈值时,每台机器都会将其数据发送到此表.该表通常包含数百万到数亿个条目.
出于可视化目的,我创建了一个存储过程,该过程获取识别机器和数据点所需的两个ID,以及开始和结束日期时间.然后它将开始和结束之间的值聚合成可变长度的块(通常为15分钟,1小时,7天等),并返回给定时间间隔内每个块的平均值,最小值和最大值.
该方法有效,但即使有大量的数据库优化和索引,也需要花费大量时间.因此,在前端图表页面上显示所选范围和机器的数据大约需要10到60秒,我认为这太多了.
所以我开始考虑创建一个新表,其中包含每个"chunk"的每台机器的预聚合数据.为了实现这一点,必须[chunksize]每台机器每分钟/小时/天自动调用聚合过程.然后可以从更精细的块等容易地创建更粗糙的块.据我所知,这将极大地加速整个事物.
问题是:实现定期聚合的最佳方法是什么?有没有办法让数据库自己完成工作?或者我是否必须在ASP.NET MVC Web应用程序中实现基于计时器的解决方案?后者需要Web应用程序始终运行,这可能不是最佳方式,因为它可能因各种原因而停机.另一种选择是独立的应用程序或服务来处理这项任务.还有其他我没想过的方法吗?你会如何解决这个问题?
在这里,我创建了一个未评估的表达式:
e2 <- expression(x+10)
Run Code Online (Sandbox Code Playgroud)
如果我提供的环境x定义如下
env <- as.environment(list(x=20))
eval(e2,env)
Run Code Online (Sandbox Code Playgroud)
R将报告错误:
Error in eval(expr, envir, enclos) : could not find function "+"
Run Code Online (Sandbox Code Playgroud)
这是可以理解的,因为它是env从头开始创建的环境,也就是说,它没有+定义的父环境.
但是,如果我+在列表中提供要转换为这样的环境
env <- as.environment(list(x=20,`+`=function(a,b) {a+b}))
eval(e2,env)
Run Code Online (Sandbox Code Playgroud)
评估工作正常,产生30.
但是,当我+在列表中定义时,它是一个二进制函数,它的主体也使用+中定义的{base}.我知道函数返回在R中被懒惰地评估,但为什么这可以工作?如果a+b在函数体中进行了懒惰的评估,当我eval在e2内部调用时env,即使+在没有父环境的环境中定义,它仍然应该+自己调用,这应该以无限循环结束.为什么不这样发生?这里的机制是什么?
我正在做一个批处理文件来统一所有的Phonegap命令来创建一个应用程序.一切似乎都运行良好,但在命令后phonegap create appName我的cmd停止批处理脚本并且不继续工作.我认为Phonegap的命令以"退出"或类似方式结束,但我不确定.
有人知道是否有任何方法可以在批处理文件中运行此命令而没有此问题?有没有办法将控件返回到批处理脚本?
谢谢!
我在我的控制器中有这个:
[HttpPost]
public void UpdateLanguagePreference(string languageTag)
{
if (string.IsNullOrEmpty(languageTag))
{
throw new ArgumentNullException("languageTag");
}
...
}
Run Code Online (Sandbox Code Playgroud)
并将此jQuery代码POST到控制器:
jQuery.ajax({
type: 'POST',
url: '/Config/UpdateLanguagePreference',
contentType: 'application/json; charset=utf-8',
data: '{ "languageTag": "' + selectedLanguage + '" }'
});
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试代码时,我收到错误:
Server Error in '/' Application.
Value cannot be null.
Parameter name: languageTag
Run Code Online (Sandbox Code Playgroud)
有什么问题?这不是如何将JSON POST到MVC控制器?我可以使用Fiddler检查POST,看看请求是否正确.出于某种原因,UpdateLanguagePreference()获取null或空字符串.
我正在使用VisualStudio 2012 Professional中的ASP.NET MVC4构建一个相当复杂的Web应用程序,用于数据可视化.由于技术原因(涉及实时服务器端消息传递等),我必须通过文件系统将Web应用程序部署到我们的生产服务器,因此在大多数情况下我不能使用开发服务器.
随着项目的发展和包含越来越多的脚本,部署几乎需要一分钟才能完成,即使在1000BASE-T以太网上也是如此,这非常烦人.在大多数情况下,仅仅"更新"项目中的特定文件或文件夹是绝对足够的,因为大多数文件通常永远不会更改(例如JQuery和其他框架).
根据这篇文章,应该可以发布自Visual Studio 2012.2以来的单个文件,但它对我不起作用,上下文菜单中描述的选项不存在.
这是我的VS的确切版本:
Microsoft Visual Studio Professional 2012
Version 11.0.60315.01 Update 2
Microsoft .NET Framework
Version 4.5.50709
Run Code Online (Sandbox Code Playgroud)
以前有人遇到过这个问题吗?解决这个问题真是太棒了.
我正在构建一个用于在多个客户端之间进行安全消息传递的应用程序。为了实现这一目标,我先用AES加密消息,然后再使用收件人的公共RSA密钥加密AES密钥,然后将这两个组件(RSA加密的AES密钥和AES加密的消息)发送给收件人。整个过程运行良好,没有任何错误。
现在我遇到了一个问题,我想知道最佳实践是什么:为了保留一个参与者的私钥和公钥,我需要存储密钥对。可以将其另存为XML文件,但这显然不是一种选择。因此决定使用此处描述的密钥容器。实现容器的使用非常容易,但是我该如何
据我所知,这是不可能的,因为如果容器不存在,则RSACryptoServiceProvider会生成一个新密钥-无需告知。但是我需要知道是否存在以前存储的密钥对,或者是否创建了新的密钥对。
我该如何解决?还是这是完全错误的方法?
我确实有一个包含一个系列的工作折线图。现在我想在上面画一条自定义线。我想在图表坐标(如系列中的数据点)而不是像素中设置这条线的起点和终点。据我目前所知,LineAnnotation 可能可以完成这项工作,但我不知道如何做到这一点,到目前为止它根本没有显示任何内容。
我还尝试了 HorizontalLineAnnotation,这个效果很好并显示水平线,但这不是我需要的:
double lineHeight = -35;
HorizontalLineAnnotation ann = new HorizontalLineAnnotation();
ann.AxisX = tc.ChartAreas[0].AxisX;
ann.AxisY = tc.ChartAreas[0].AxisY;
ann.IsSizeAlwaysRelative = false;
ann.AnchorY = lineHeight;
ann.IsInfinitive = true;
ann.ClipToChartArea = tc.ChartAreas[0].Name;
ann.LineColor = Color.Red; ann.LineWidth = 3;
tc.Annotations.Add(ann);
Run Code Online (Sandbox Code Playgroud)
这段代码给了我这个结果:

我想要实现的目标如下(只是一个例子):

我尝试了这段代码,但我不知道如何正确设置坐标:
double lineHeight = -30;
LineAnnotation ann = new LineAnnotation();
ann.AxisX = tc.ChartAreas[0].AxisX;
ann.AxisY = tc.ChartAreas[0].AxisY;
ann.IsSizeAlwaysRelative = true;
ann.AnchorY = lineHeight;
ann.ClipToChartArea = tc.ChartAreas[0].Name;
ann.LineColor = Color.Red; ann.LineWidth = 3;
ann.Width = 200;
ann.X = 2;
ann.Y = -40; …Run Code Online (Sandbox Code Playgroud) PMD和SonarQube是一个不错的工具,但我在尝试抑制PMD警告方面遇到了问题.
我们在项目中经常使用Lombok,因此许多模型类都有:@SuppressWarnings("PMD.UnusedPrivateField")作为类级别的注释.
这很好用.
问题是,如果我不想再忽略一条规则,我会期望以下语法:@SuppressWarnings(value = {"PMD.UnusedPrivateField","PMD.SingularField"})这看起来像正确的语法,也是阅读PMD注释的实现.
但是,这似乎不起作用:现在没有规则被禁止.
我有一个名为arr的巨大的np.array,带有N个值,并随机选择这些值的10%:
choice=random.sample(range(N), int(N*percent)) # percent has values 0-1
newarr=arr[choice]
Run Code Online (Sandbox Code Playgroud)
N可能超过200万个值.
实际上我还需要一个包含其他90%值的数组.所以目前我使用的是非常慢的以下内容:
def buildRevChoice(choice, nevents):
revChoice=[]
for i in range(N):
if not i in choice:
revChoice.append(i)
return revChoice
Run Code Online (Sandbox Code Playgroud)
你能想出一种方法来解决这个问题吗?
我有这个SQL命令,该命令GEOGRAPHY为空间数据创建一个带有-type列的表,该表用于存储纬度/经度对(点)。如何为该列设置默认值?例如,点(0,0)?
CREATE TABLE [dbo].[StationLocations] (
[Id] [int] NOT NULL,
[StationId] [int] NOT NULL,
[Position] [Geography],
CONSTRAINT [PKStationLocations] PRIMARY KEY CLUSTERED ([Id]))
Run Code Online (Sandbox Code Playgroud) c# ×4
asp.net-mvc ×2
sql-server ×2
.net ×1
.net-4.5 ×1
annotations ×1
arrays ×1
asp.net ×1
batch-file ×1
charts ×1
containers ×1
controller ×1
cordova ×1
deployment ×1
geography ×1
ide ×1
json ×1
key ×1
line ×1
numpy ×1
pmd ×1
python ×1
r ×1
sonarqube ×1
spatial ×1
sql ×1