问题标签 [large-scale]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mysql - 大规模推荐人
我正在处理一个推荐问题,它涉及 300 万用户和 500,000 个产品。推荐的目的是在访问给定产品时向特定用户推荐 5-10 多个产品。
我们完成了实时推荐引擎部分,但我们发现1-2秒推荐并不那么容易。我们考虑两种策略:
以批处理模式离线运行推荐,然后将结果存储在MySQL DB 中。但是,表中的条目数似乎是一个巨大的数字。每个产品的每个用户应至少存储 5-10 个推荐产品。如果我创建一个以用户和产品作为表属性的表,将有 300 万 x 500,000 个条目。
即时预测推荐。我们刚试了一下,但是响应时间太长了。
谁能给我一些关于这个问题的建议?
asp.net-mvc - 在 ASP.NET MVC 4 中开发大型项目是否合理?
开发大型项目(社交网络)是否合理,这些项目在 ASP.NET MVC 中每天将处理数百万次访问。我想在这种情况下,网站的性能会非常慢。我需要一些建议。在性能和可扩展性方面构建社交网络的更好选择是什么?可以在 ASP MVC 中构建它还是不好的选择?例如,使用 Ruby on Rails 会更好吗?你怎么看?提前致谢!)
unit-testing - SIMULINK 中大型或中型复杂系统模型的单元测试和集成测试
问题
我有一个相当大的液压气动系统模型,由大约 20-25 个不同的子系统组成。然后,每个子系统都由数字逻辑、边沿延迟块和通往外部输出端口(实际输出)的网关组成。此外,一些小型构建块是作为 S-Function 导入的遗留 C 代码,以最大限度地提高成本效益比。每个子系统模型都是在 SIMULINK 中使用基本模块组设计的,即没有使用附加的商业模块组(例如,航空航天、simscape、simMechanics 等)。
主要问题是我对 SIMULINK 中的测试模型没有足够的了解。我知道 Mathworks 为测试和验证提供了一个定制的单元测试框架。问题是我不太确定这将如何与我的域相关。此外,我的子系统本身非常复杂,对它们中的每一个进行单元测试都是一场噩梦。但是,如果使用输入和输出进行黑盒测试是唯一的方法,那就这样吧,我很乐意接受。
虽然我的问题是关于在 SIMULINK 中测试大规模和复杂的系统,但我的目标是从有经验的 SIMULINK 用户那里获得建议,他们过去已经做过并且将来会做很多事情。我之前在 SIMULINK 中进行过单元测试,但所有这些测试都没有靠近我的正确设计。
任何帮助将不胜感激!!
更新自@PHILGODDARD 的评论
我忘了上面提到我熟悉 HIL 和 PIL。但是,只有当您的目标实时平台可用于循环测试时,它们才有效。如果有人想做软实时测试怎么办?
我正在等待在一两天内完成 Mathworks 大型系统测试网络研讨会。有希望地,我可以通过它得到一些更好的答案/建议吗?
更新自 @AM304 的评论
为了进一步澄清上下文,我们在软件中对所有交互系统进行建模,而不涉及任何物理设备,即在软件中对所有系统进行建模和仿真,输出显示在操作员/讲师终端中......例如,我们电气、空调和液压气动系统协同工作,但我们已经在软件中对其进行了建模。因此,当我们模拟它时,所有必要的信号都是从软件模型的行为中产生的,没有实际的硬件/物理设备参与提供这些行为输出。
matlab - Matlab中如何避免大矩阵乘法
我的代码中有两个大矩阵,它们具有相同的列数和不同的行数。喜欢A(20000X4000)
和B(30000X4000)
。两者都是 0-1 稀疏的。
我应该检查 A 的每一行和 B 的所有行,并计算常见 1 的数量。例如 ifA(1,:)=[0 1 0 1 1]
和B([1 2],:)=[1 1 1 1 1;0 0 0 1 1]
,我需要得到结果3
和2
。
假设有一个大的 0-1 矩阵C(50000X4000)
,并且它的行被标记为 typeA
或 type B
。我应该比较所有行A
和B
一起并枚举1。如果 A 和 B 的每一行中 1 的数量大于某些界限,那么我将使用 A 和 B 的那些行进行其余的计算。所以,我什至不需要存储A
and B
,我需要的只是行索引对的列表。类似的东西[(3,2),(3,5),...]
表明我应该使用的第三行A
和第二行,以及B
第三行A
和第五行B
,依此类推。
我想到的第一件事是A*B'
,它给出了正确的结果,但实际上它非常昂贵,在某些情况下不可能进行这种乘法。
我将矩阵转换为单一数据类型,它变得有点快。稀疏没有帮助。
这个任务看起来很简单,只计算 的每一行A
和所有行的常见 1 B
,但实现起来并不容易。考虑到代码应该像 1000 次一样完成这个任务,那么这实际上是不可能的。
知道如何在不乘法的情况下枚举常见的吗?(顺便说一句,循环也没有帮助)。
谢谢。
matlab - 如何在 Matlab 中逐步训练神经网络?并迭代地组合它们
我有非常大的火车,所以 Matlab。而且我需要进行大规模的培训。
是否可以将训练集分成几部分并迭代训练网络并在每次迭代时更新“网络”而不是覆盖它?
下面的代码显示了这个想法,它不会工作。在每次迭代中,它根据唯一的训练数据集更新网络。
java - 如何在 J2EE 中为大型应用程序创建基于模块的应用程序?
我们将使用 J2EE 开发大型应用程序。该应用程序包含许多模块,少数模块不直接与客户端通信。(即它将在单独的线程中处理,如 SNMP 侦听器、作业调度、轮询等)。
因此,我们计划将应用程序拆分为基于模块的应用程序并在不同的服务器上运行,并与主 j2ee 应用程序集成以向用户展示结果。
任何人都可以帮助我如何创建基于模块的应用程序并运行可以在不同服务器上运行的应用程序吗?
mysql - 如何高效地创建汇总表
在一个月的时间里,一个进程在一些数据库表中插入了大量的行,大约 1M。
这每天都会发生,整个过程持续约 40 分钟。那也行。
我从这些插入中创建了一些“汇总表”,以便快速查询数据。这工作正常。
问题:我一直在汇总表中插入数据,因此创建缓存表的时间与插入实际数据的过程相匹配,这很好。但是,如果前几天插入的数据发生了变化(由于任何更新),那么我需要“重新计算”前几天并解决这个问题,而不是每天创建今天的摘要数据,我需要更改我的流程以重新创建摘要每个月初的数据,这意味着我的运行时间将大大增加。
有没有标准的方法来处理这个问题?
c++ - 如何用 Ceres 解决大规模非线性优化问题?
我需要优化由点的 2D 网格表示的表面,以生成与提供的目标法线向量对齐的表面法线向量。网格大小可能介于 201x201 和 1001x1001 之间。这意味着变量的数量将是 40,000 到 1,000,000,因为我只修改网格点的 z 坐标。
我正在使用 Ceres 框架,因为它应该擅长处理大规模非线性优化问题。我已经尝试过 MATLAB 的 fmincon,但它使用的内存量令人难以置信。我写了一个适用于小网格的目标函数(在 3x3 和 31x31 上成功)。但是,当我尝试编译具有大网格尺寸 (157x200) 的代码时,我看到下面的错误。我读过这是 Eigen 的限制。但是,当我告诉 Ceres 使用 LAPACK 而不是 Eigen 时,对于大型矩阵,我会遇到同样的错误。我尝试了这些行:
这些告诉求解器使用 LAPACK 和 DENSE_QR,因为使用 3x3 网格的输出显示:
但是,当我使用大参数时,我仍然会得到 Eigen 的错误。
无论如何,我真的可以在这方面使用一些帮助。如何让 Ceres 优化大量变量(> 30,000)?提前致谢
谷神星链接:http: //ceres-solver.org
链接到本征:http ://eigen.tuxfamily.org/dox/
错误:
我的代码看起来像这样(缩写为去掉不相关的材料):
matlab - matlab中大规模用户标签矩阵中的聚类标签
我试图在matlab中用户标签的巨大稀疏矩阵中聚集一组标签,比如:
35000*74000,稀疏度为 99%。
我大概有两个选择:
1:制作标签的共现矩阵并在Tag-Tag共现矩阵上应用聚类。
2:将用户作为标签的特征,使用Transpose(user-tag)进行标签聚类。
我不知道哪一个更好,但是它们都存在大量用户和标签的问题。
非常感谢任何评论或建议的解决方案。
javascript - 更改 MarionetteJS 中的“页面”
我目前正在开发一个大规模的 Backbone 应用程序(使用 marionetteJS),并且在切换视图或更改“页面”所涉及的最佳实践/模式方面遇到了一些架构问题。
Marionette 的布局和区域为进行视图切换提供了一些非常棒的工具,例如.show()
和.empty()
方法。在我正在开发的应用程序中,我使用了一个布局视图作为所有其他视图的容器,这允许我切换视图进出,本质上是在应用程序中导航。
这很容易。对我来说,困难的部分是了解触发这些变化的最佳实践是什么。
以下是我提出的一些解决方案:
page:change:x
当用户单击 ui 的某个部分(x 是要更改的视图)时会触发一个事件。管理该视图的控制器侦听该事件并将其显示在应用程序主布局视图中。当用户单击 ui 更改页面时,视图会触发一个命令,并在视图中传递它希望 ui 更改为的视图,例如
App.execute('page:change', view)
. 应用程序对象监听那个触发器,并显示传递给应用程序主布局视图的视图。
第一种方法的问题是控制器必须知道其范围内的每个页面(也许这不是一件坏事,我不知道)。例如:users-list-view、users-edit-view、users-profile-view 等。这也使得代码更难跟踪,因为到处都有事件被触发。
第二种方法的问题是当前视图必须知道应用程序也会更改的视图,这对我来说似乎不是很有可扩展性。
有没有做这种事情的最佳实践?
编辑:
我应该澄清一下,这是与在应用程序中导航相关的问题。不是使用路由器的初始负载。