问题标签 [scalable]
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.
performance - 将数据库放到专用服务器上时性能会变差吗?
我听说扩展系统的一种方法是为 Web 服务器、数据库服务器使用不同的机器,甚至为每种类型的服务器使用多个实例
我想知道这如何提高“一台服务器用于一切”模型的性能?这些服务器之间的连接没有瓶颈吗?此外,在从不同的 Web 服务器访问数据库服务器时,您将不得不关心同步。
php - PHP:跟踪用户是否在线的最有效方法?
我正在开发一个考虑到可扩展性的项目,我已经走到了一个十字路口。在我的网站上,我想检测用户是否在线。我想不出最好的方法来处理这个问题。我的想法是这样的(在伪代码中):
因此,每当用户登录时,我都可以将他的online
列更新为true
. 然而,这最终会导致每次用户登录时都会发生 SQL 查询,如果发生这种情况,我会说,每秒 10 次登录,那么,就会发生很多查询。我想我可以做同样的事情但在不同的表中的另一种方法:
出于某种原因,我相信由于与表的分离,这会导致更少的内存消耗user
。但是我不确定它是否会对性能产生任何实际影响。
所以,如果你能用你的洞察力祝福我,我会更加感激,谢谢。
android - 在 android 平板电脑上为应用程序设置不可缩放的宽度
我正在使用 phonegap 开发适用于 android 平板电脑的应用程序。我正在转换现有网页,所以我宁愿不更改 css 或 html。我正在使用银河选项卡(android 2.2)进行测试
我想将可视宽度设置为 800px 并禁止用户放大/缩小。
如果我使用 <meta name="viewport" content="width=800px>
,则宽度设置正确,但用户仍然可以缩放页面。
如果我使用<meta name="viewport" content="width=800px, user-scalable=no">
,则用户无法缩放页面,但宽度会更小(即页面被放大,用户必须滚动才能查看页面)
我唯一能想到的另一件事是使用<meta name="viewport" content="minimum-scale=x, maximum-scale=x">
wherex
是一些我不知道如何找到的神奇数字。
任何帮助,将不胜感激。
database - 快速的写入性能,即使读取速度非常慢
抱歉,如果已经有答案,我搜索了它,但没有找到我的方案。
又是一个类似“什么是最快/最佳性能数据库?”之类的问题。但由于答案取决于场景,我的场景是这样的:我想将许多日志写入数据库,每秒数千。但我不会经常阅读它们。确实,其中 99,99% 将永远不会再被阅读,但有时我需要阅读。模式并不复杂,只是键/值。偶尔我会按价值阅读,如果阅读需要几分钟,我根本不在乎。读取的正确性至关重要,但对性能而言并不重要。
到目前为止,最好的解决方案似乎是 MongoDB、Cassandra……也许是最好的 DynamoDB?
atomic - 可扩展的 O(1) 内存线程计数器?
我有一堆线程和一堆计数器。线程递减计数器,如果计数器达到零,就会发生有趣的事情。使用原子操作实现这一点很简单。
但是,如果我们需要两个属性来保持而不考虑线程或计数器的数量,这将变得更加困难:
- 可扩展性:递减一个计数器是 O(polylog)。
- 紧凑性:每个计数器的内存为 O(1)。
我知道如何单独执行其中任何一项:简单的实现是紧凑的,分层计数网络 [4] 是可扩展的)。有可能两者都做吗?
注意:由于 O(n) 个线程不能在 O(n) 时间内做出 O(n) 个不同的更改 O(1) 个内存,因此解决此问题需要在不同计数器之间共享数据结构。
[4]:J. Aspnes、M. Herlily 和 N. Shavit。计数网络。ACM 杂志,41(5):1020-1048,1994 年 9 月。
更新:Jed Brown 指出了一个明显的事实,即 O(1) 时间是不可能的。更改为多对数。
jakarta-ee - 处理高内存可扩展 Java EE 应用程序
我在一个 Java EE 应用程序中工作,它需要太多的内存服务器端应用程序级数据(即它不是用户级数据)。通过应用程序级别的数据,我的意思是所有用户的数据都是不变的,例如主数据。到目前为止,我们在一台具有 16 GB RAM 的 Windows 服务器上为 15-20 个并发用户使用 EHCache。我们为我们的应用程序指定堆大小为 8GB。
现在我们需要重新设计应用程序,使其能够支持超过 500 个并发用户。这将导致更多的内存数据需求。
我想在这种情况下有你的观点,以便应用程序具有足够的可扩展性。
据我了解,以下解决方案可以提供帮助-
实施负载平衡,以便分配负载,但每个服务器上的内存数据仍然很高,因为它是应用程序级别的数据。虽然会在一定程度上有所帮助。
将此实现为无状态操作,而不是将数据保存在缓存中。但这会对性能产生影响。我在某处读到无状态是可扩展性的关键。我想避免这种情况,因为这需要太多的工作。
将 Terracotta 的 BigMemory 与 EHCache 结合使用。它基本上以一种特殊的方式将数据保存在磁盘上,即数据访问速度仍然不错。请注意,这不是免费产品,我们有这样的免费选项吗?
选择基于云的内存架构?对此不是很清楚。
任何建议将不胜感激。
arrays - 如何创建一个excel列的内容数组
我在excel电子表格的A列中有10个值(它会更多)有没有办法获取列的值并将它们放入数组中?
如果可能的话,是否可以将这些值以不同于它们在电子表格中的顺序放置。例如,如果我的电子表格值是“Apple”“Orange”和“Banana”,那么我希望我的数组看起来像位置 0“Orange”、位置 1“Banana”和位置 2“Apple”。
有人知道如何做到这一点吗?顺便说一句,它需要从 10 扩展到 1000 个值,而无需过多编辑代码
c++ - 使用 QPainter 绘制可扩展的 QIcon
我想设计一个新的 QIcon 并希望它看起来像一个带有圆角矩形的固定文本
在最终应用了缩放转换的 QPainter 上绘制时,该图标应该在没有“像素块”效果的情况下进行缩放(例如,当我绘制到作为 QGraphicsView 的一部分的小部件中并在其场景上应用了缩放时)。
因此,我很难知道如何绘制我的 QIcon。如果我按照以下方式进行,我将绘制一个始终具有固定数量像素的 QPixmap,因此当比例足够大时不可避免地会引入像素块效果
我正在寻找的是一种类似于 QFont 的drawText
工作方式。无论我的比例有多大,当我绘制字体时,它总是看起来很清晰,我无法检测到单个像素。
我想我可以告诉我将QPainter
我的图标绘制成一个给定的像素矩形,并在让我将项目渲染成一个可能更大的矩形或像素图之前QPainter
转换矩形本身。QIconEngine::paint
但我看不出我怎么能做这样的事情。
我只是愚蠢而没有看到明显的解决方案吗?
javascript - 以可扩展的方式切换 JavaScript webapp 中的 i18n 字段
我正在编写一个 100% JavaScript webapp 来管理产品目录。除其他外,我正在使用 Backbone & Mustache。
每个产品都有一个名称,需要翻译。因此,对于每个产品,我添加的<input>
元素与要翻译的语言一样多,如下所示:
<input>
我根据当前选择的依赖 CSS 类的语言、第一次渲染以及用户更改语言时显示/隐藏元素:
这种方法可能有点幼稚,但它很简单,因为每个输入字段的属性中都包含保存数据所需的所有信息。blur
当用户离开现场时,我正在监听事件以保存数据。
问题是当元素数量增加时语言切换很慢。
我在使用好的技术吗?我不认为在语言更改时重新渲染产品项目是一个好的解决方案。
window - 如何为设备无关像素 (DIP) 构建 Windows 商店应用程序
我正在构建 Windows 商店应用程序。我在 Visual Studio .net 2012 中使用 Windows 8 和 WPF。
此应用程序的 UI 应可扩展到不同的屏幕。我创建了一个页面,当在 10.6" 屏幕的分辨率为 1920 x 1080 的模拟器上运行应用程序时,控件(按钮、图像、文本)正确匹配。问题是当我更改分辨率时,控件的行为不正确
- 当分辨率或屏幕尺寸增加(例如 23" 屏幕为 1920 x 1080)时,页面上会创建空白空间;
- 当分辨率或屏幕尺寸减小(例如 10.6" 屏幕为 1024 x 768)时,控件尺寸也会增加,其中一些控件在 UI 中不可见,因为它们在底部显示得太远。
有没有办法构建独立于屏幕尺寸或分辨率的“可扩展”商店应用程序?当分辨率改变或从一个屏幕到另一个屏幕时,控件大小和字体大小应该增加和减小,但它们都应该适合空间并且不应该创建空白区域。
任何帮助将不胜感激。
谢谢你