我有存储在图形数据库中的活动。在某些情况下,多个活动被分组并聚合为一个活动。
处理后的活动提要可能如下所示:
Activity 1
Activity 2
Grouped Activity
Activity 3
Activity 4
Activity 5
>
活动具有更新的时间戳和唯一的id。
活动按其更新时间排序,如果是分组活动,则使用其子活动中的最新更新时间。
活动可以插入列表中的任何位置(例如,如果我们开始跟踪某人,他们过去的活动将插入列表)。
可以从列表中的任何位置删除活动。
由于数据量大,使用微秒的时间戳仍然可能导致冲突(2个项目可能具有相同的时间戳)。
光标标识符应唯一且稳定。添加和删除提要项不应更改标识符。
我想引入基于光标的分页,以允许客户端通过类似于twitter的提要分页。关于它们是如何构建的,似乎没有太多信息,因为我只发现这篇博客文章讨论了如何实现它们。但是,如果光标的标识符恰好指向已删除的项目,则似乎有问题。
有了以上内容,我如何生成一个标识符,可以用作上述内容的光标?最初,我考虑将时间戳与唯一id结合起来:1371813798111111。我的唯一ID
。但是,如果项目位于1371813798111111。myuniqueid被删除,我可以获得带有时间戳的项目,但无法确定应该从哪个项目开始。
我的另一种方法是为每个提要结果分配一个递增的数字。由于数字是按顺序递增的,如果缺少数字/id,我可以选择下一个。然而,问题是,如果我开始在提要的中间删除和添加提要项,光标ID就会改变。我对这个问题的一个解决方案是在每个数字之间有一个巨大的差距,但很难确定如何以确定性的方式将新项目添加到每个数字之间的空间中。此外,随着新项目的添加,以及缺口的填补,我们最终会遇到同样的问题。
简单地说,如果我有一个项目列表,可以在列表中的任何位置添加和删除项目,那么为每个列表项目生成id的最佳方法是什么,这样,如果删除id的项目,我仍然可以确定其在列表中的位置?
您需要有额外的(或现有的)列,对于目标表中每个新添加的行,这些列都会按顺序增加。我们将此列称为seq\u id。
当客户端第一次请求游标时:
GET /api/v1/items?sort_by={sortingFieldName}&size={count}
其中sortingFieldName是应用排序的字段名称
引擎盖下发生了什么:
SELECT * FROM items
WHERE ... // apply search params
ORDER BY sortingFieldName, seq_id
LIMIT :count
答复:
{
"data": [...],
"cursor": {
"prev_field_name": "{result[0].sortingFieldName}",
"prev_id": "{result[0].seq_id}",
"nextFieldName": "{result[count-1].sortingFieldName}",
"next_id": "{result[count-1].seq_id}",
"prev_results_link": "/api/v1/items?size={count}&cursor=bw_{prevFieldName}_{prevId}",
"next_results_link": "/api/v1/items?size={count}&cursor=fw_{nextFieldName}_{nextId}"
}
}
如果我们检索到的行少于计数行,则响应中将不存在游标的下一个。
如果请求中没有游标或没有要返回的数据,则游标的上一部分将不会出现在响应中。
当客户端再次执行请求时,他需要使用游标。前进光标:
GET /api/v1/items?size={count}&cursor=fw_{nextFieldName}_{nextId}
引擎盖下发生了什么:
SELECT * FROM items
WHERE ... // apply search params
AND ((fieldName = :cursor.nextFieldName AND seq_id > :cursor.nextId) OR
fieldName > :cursor.nextFieldName)
ORDER BY sortingFieldName, seq_id
LIMIT :count
或向后光标:
GET /api/v1/items?size={count}&cursor=fw_{prevFieldName}_{prevId}
引擎盖下发生了什么:
SELECT * FROM items
WHERE ... // apply search params
AND ((fieldName = :cursor.prevFieldName AND seq_id < :cursor.prevId) OR
fieldName < :cursor.prevFieldName)
ORDER BY sortingFieldName DESC, seq_id DESC
LIMIT :count
响应将与前一个类似
问题内容: 有没有一种简单的方法可以在Java(RGB,HSV和Lab)的颜色模型之间进行转换。 假设RGB颜色模型: 如何计算黑体光谱调色板?我想将其用于热图图表。 单波长频谱怎么样? 编辑: 我发现ColorSpace类可用于RGB / CIE与许多其他颜色模型之间的转换。 问题答案: 您可以使用HSV颜色模型构建这样的调色板。一旦准备好HSV至RGB代码并在几分钟内处理数字,这将很容易。 但
一、简介 用于生成站点首页。 二、功能演示 如下图所示: 点击“生成首页”。 如提示成功则可完成修改操作,否则则提示错误消息。 成功信息: 同时你也可以通过:当前位置菜单栏——>生成首页;进行生成首页。
用于创建 LightProbe 实例的工具类。 例子 WebGL / light probe WebGL / light probe / cube camera 静态方法 .fromCubeTexture ( cubeTexture : CubeTexture ) : LightProbe 从传入的(辐射)环境贴图创建一个光照探针。该方法期望将环境贴图表示为一个立方体纹理。 .fromCubeRe
本文向大家介绍Asp.Net之JS生成分页条的方法,包括了Asp.Net之JS生成分页条的方法的使用技巧和注意事项,需要的朋友参考一下 Default.aspx.cs中的代码 Default.aspx.cs中的代码 Body中的内容 JS中的内容 以上这篇Asp.Net之JS生成分页条的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
easyopen提供一个简单的api文档查看页面,类似于swagger,基于注解功能来生成文档页面。生成的文档页面可以查看参数、结果说明,也可以进行模拟请求。对于前后端分离的项目来说会很有帮助。文档界面如下图所示: 左边的树形菜单对应文档名称,点击树可前往查看对应的接口说明。点击请求按钮可以发起请求进行测试。可修改业务参数中的值进行测试。 下面来讲解文档注解的使用方法。 文档页面默认是关闭的,需要
静态网页生成器工具 JS 网页生成器: Metalsmith harp JS 博客网站生成器: hubpress.io Hexo.io 网站生成器列表: staticsitegenerators.net www.staticgen.com