- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试做一个可以让多个用户同时登录的网络服务。在 Nodejs 服务器上,有一个包含所有用户的未排序数组。以及包含所有用户的数据库。
每个用户始终可以在 HTML Bootstrap 表中看到每个用户在线,其中包含用户名、ID、在线时间等不同列......并且还有包含在线和离线用户的组列表。重要的是,该表应该每 3-5 秒更新一次。
我希望用户能够通过单击列的表标题对在线用户表进行排序。这样做的最佳做法是什么?
我目前只能想到两种不同的解决方案,对我来说似乎都不完美。
<强>1。使用 Bootstrap 排序
我以用户希望列表排序的方式保存信息。然后我收到未排序的数据并用它填充表格,之后我将触发标题上的单击并再次以相同的方式对表格进行排序。
但如果我这样做,我认为用户总是会注意到表被重新填充,然后如果每 3-5 秒完成一次,就会再次排序。
<强>2。在服务器上保留排序列表
始终将用户的所有不同排序列表保留在我的服务器上,并让服务器每 3-5 秒对它们进行新排序。然后当客户端请求时,将他当前想要的排序列表发送给客户端,并填充Table HTML。
但这样我认为它会使用我服务器上的相当多的资源,因为它还必须对一些混合的在线/离线用户进行排序,这将是我必须在服务器上不断保存和重新排序的许多不同的表。
有没有更好的方法来为客户端实现许多可排序的用户列表?
最佳答案
关于 UI 的重要一点是减少闪烁和任何类型的延迟。在数据显示在表格中之前,首先尝试在用户端测试排序。您不想触发点击事件,因为这可能会在数据进入、显示、排序然后再次显示时产生闪烁效果。如果由于某种原因排序花费的时间太长,这可能会导致用户界面出现滞后或不稳定,因此请对其进行测试,看看感觉如何。如果客户端性能不佳,我只会关注服务器端。检查您的 CPU 和 RAM,看看如何最好地处理这个问题。动态排序可能可以根据您的设置进行,或者如果您有多余的内存,也可以选择将其保存在 RAM 中。
服务器端存储在 ram 中的站点范围或线程引擎变量中。如果你能摆脱它,线程引擎变量将是最快的选择,但成本将是 SORTEDDATA_BYTES * WEB_THREADS。
Array.prototype.keySort = function(k, descending) {
var z = descending === true ? -1 : 1;
this.sort(function(a, b) {
return a[k] > b[k] ? 1*z : a[k] < b[k] ? -1*z : 0;
});
return this;
};
var sortedJSON = {
UsernameAsc: JSON.stringify(data.keySort("Username")),
UsernameDesc: JSON.stringify(data.keySort("Username", true)),
IdAsc: JSON.stringify(data.keySort("Id")),
IdDesc: JSON.stringify(data.keySort("Id", true))
};
关于javascript - 可排序用户列表最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32727926/
本文分享自华为云社区《大模型LLM之分布式训练》,作者: 码上开花_Lancer。 随着语言模型参数量和所需训练数据量的急速增长,单个机器上有限的资源已无法满足大语言模型训练的要求。需要设计分布式训
本文分享自华为云社区《五大基础算法--动态规划法》,作者: 大金(内蒙的)。 一、基本概念 动态规划法,和分治法极其相似。区别就是,在求解子问题时,会保存该子问题的解,后面的子问题求解时,可以直接拿来
pip install scp pip install pexpect 测试代码: import os import stat import paramiko # 用于调用scp命令 def s
我目前正在实现“ token ”REST 服务。 token 只是一个字符串,由一些参数构建而成,然后经过哈希处理并在一定时间后过期。 我想在我的 REST 服务中有一个可以验证 token 的端点,
打开软删除后,我在客户端上添加一条记录,推送,删除添加的记录推送,然后尝试使用与初始记录相同的主键添加新记录(然后推送),我得到一个异常(exception)。 EntityDomainManager
打开软删除后,我在客户端上添加一条记录,推送,删除添加的记录推送,然后尝试使用与初始记录相同的主键添加新记录(然后推送),我得到一个异常(exception)。 EntityDomainManager
我有一个应用程序,每 x 秒接收一次天气信息。我想将此数据保存到 XML 文件中。 我应该为每个天气通知创建一个新的 XML 文件,还是将每个通知附加到同一个 XML 文件中?我不确定 XML 标准的
我猜我们大多数人都必须在某个时候处理这个问题,所以我想我会问这个问题。 当您的 BLL 中有很多集合并且您发现自己一遍又一遍地编写相同的旧内联(匿名)谓词时,显然有必要进行封装,但实现封装的最佳方
我有一些 c# 代码已经运行了一段时间了..我不得不说,虽然我了解 OO 原则的基础知识,但显然有不止一种方法可以给猫剥皮(尽管我讨厌那个短语!)。 因此,我有一个基本抽象类作为基本数据服务类,如下所
我设计了一个 SQL 数据库系统(使用 Postgre),我有一个问题,即创建一个关系/引用的常见做法是什么,这种关系/引用即使在引用的对象被删除时也能持续存在。 比如有一个UserORM,还有Act
我们的目标是搜索用户输入的字符串并计算在其中找到多少元音。不幸的是我被困在这里,有什么帮助吗? def numVowels(s): vowels= "AEIOUaeiou" if s
我有一个适用于我的“items”int 数组的旋转函数。下面的代码完成了它,除了我不必要地传输值。我正在努力实现“就地”轮换。我的意思是 ptrs 会递增或递减,而不是从数组中获取值。我需要通过这种方
我有一个 json 存储在我的应用程序文档文件夹中,我需要在我的所有 View 中使用它。我正在加载 json 并将其添加到每个 View 中的 NSMutableArray。但现在我了解到,我可以将
我用 C++ 开始了一个项目。这种语言的内存管理对我来说是新的。 我过去常常使用 new () 创建对象,然后传递指针,虽然它可以工作,但调试起来很痛苦,人们看到代码时会用有趣的眼神看着我。我为它没有
已结束。 这个问题是 off-topic .它目前不接受答案。 想要改进这个问题? Update the question所以它是on-topic堆栈溢出。 关闭 10 年前。 Improve thi
保持类松散耦合是编写易于理解、修改和调试的代码的一个重要方面——我明白这一点。然而,作为一个新手,几乎任何时候我都会超越我所苦苦挣扎的最简单的例子。 我或多或少地了解如何将字符串、整数和简单数据类型封
我发现我需要编写大量重复代码,因为我无法从其他 Controller 调用函数。例如,这里新闻提要内容在我的代码中重复,我对一个 Controller 做一些特定的事情,然后需要像这样加载我的新闻提要
假设需要一种数字数据类型,其允许值在指定范围内。更具体地说,假设要定义一个整数类型,其最小值为0,最大值为5000。这种情况在很多情况下都会出现,例如在对数据库数据类型,XSD数据类型进行建模时。 在
假设我想循环整个数组来访问每个元素。使用 for 循环、for...in 循环或 for...of 循环是 JavaScript 开发人员的标准做法吗? 例如: var myArray = ["app
我有一个旧的 SL4/ria 应用程序,我希望用 Breeze 取代它。我有一个关于内存使用和缓存的问题。我的应用程序加载工作列表(一个典型的用户可以访问大约 1,000 个这些工作)。此外,还有很多
我是一名优秀的程序员,十分优秀!