小编Ala*_*din的帖子

KeyCloak中用户的批量更新

我有一个任务来更改 IDM 中用户的状态。我选择的解决方案是天真的:循环每个并使用 REST 调用 KeyCloak 的服务。

但是,我注意到这会消耗大量时间。我认为像批量更新(相当于 SQL)之类的东西可能会解决这个问题,但我没有在 KeyCloak 的 API 中找到它。

有谁知道如何修理它?感谢帮助!

java keycloak

5
推荐指数
1
解决办法
2040
查看次数

Influxdb GROUP BY时间在错误的时间间隔或存储桶上聚合数据

最近,我们在InfluxDB的GROUP BY时间上面临一个非常烦人的问题。事实证明,如果我们尝试汇总每30天的数据,则InfluxDB会通过意外的时间段来汇总我们的数据。

例如以下查询:

SELECT COUNT(user_id) AS result FROM measurement1 WHERE time > '2017-12-31 23:59:59' AND time < '2019-01-01 23:59:59' GROUP BY time(30d) FILL(0);
Run Code Online (Sandbox Code Playgroud)

然后我们得到以下响应(以毫秒为单位的时间):

time                result
----                ------
1513728000000000000 0
1516320000000000000 0
1518912000000000000 0
1521504000000000000 0
1524096000000000000 0
1526688000000000000 0
1529280000000000000 0
1531872000000000000 0
1534464000000000000 4
1537056000000000000 1
1539648000000000000 0
1542240000000000000 0
1544832000000000000 0
Run Code Online (Sandbox Code Playgroud)

好了,将时间转换为正常日期后,我们发现返回的时间间隔是20/12 / 17、19 / 01/18到15/12/18(每30天)。

据我了解,聚合点是由influxdb根据时间上的第一个值(GROUP BY time(value))预先定义的。它甚至在文档中被提及,但规模更小-“预设时间边界”。但是,这些示例处理的是分钟和1天的汇总,并且可以通过offset参数轻松修复,因为这些标度的默认汇总间隔为午夜。

很好,但是在这里我们要处理很多天。在我们的例子中,我们无法使用offset参数,因为我们无法知道GROUP BY返回的时间间隔。

是否有任何源/公式/算法或任何东西可以帮助我们预测这些时间间隔,以便我们可以对它们进行抵消?如果没有这样的东西,那我们该如何克服这个问题呢?

我猜这一切的原因是性能,但是很奇怪的是,在他们的文档中没有提到此问题,因为这不是一种直观的行为。

编辑:我想我发现潮汐如何确定这些时间间隔-它总是从0个时代开始。如果是这样,那么我们可以在拍摄查询之前根据需要使用偏移量。我希望将其添加到他们的文档中,因为这可以为其他人节省大量时间,并且可以确认下一个版本中不会有重大更改。

time group-by influxdb influxql

5
推荐指数
0
解决办法
425
查看次数

丢弃属于特定保留策略的测量

最近,我们将数据从具有保留策略 autogen(默认)的测量“用户”迁移到保留策略 Sixty_days (sixty_days.users)。所以我们不再需要 autogen.users 中的数据。

我们怎样才能在不损害 Sixty_days.users 中的数据的情况下删除它?

这是一种奇怪的行为,因为当我们将数据插入到 Sixty_days.users 时 - 它不会应用于 autogen.users,但是当我们尝试删除/删除时 - 它会从它们中删除它。

我们尝试过按时间使用DROP和DELETE,但没有成功。

我们希望仅删除属于特定 RT 的测量中的数据。

influxdb

5
推荐指数
1
解决办法
1876
查看次数

将空对象的 Jackson 反序列化为 Null

我被要求更改我们的 jackson 映射配置,以便我们反序列化(来自 JSON)的每个空对象都将反序列化为 null。

问题是我正在努力做到这一点,但没有任何运气。这是我们的ObjectMapper配置示例(和示例):

ObjectMapper mapper = new ObjectMapper();
mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
mapper.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, true);
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
JavaTimeModule javaTimeModule = new JavaTimeModule();
javaTimeModule.addDeserializer(LocalDateTime.class, new LocalDateTimeDeserializer(DateTimeFormatter.ISO_DATE_TIME));
javaTimeModule.addDeserializer(Instant.class, InstantDeserializer.INSTANT);
mapper.registerModule(javaTimeModule);
mapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
warmupMapper(mapper);

return mapper;
Run Code Online (Sandbox Code Playgroud)

我想过这样的事情:

mapper.configure(
    DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);
Run Code Online (Sandbox Code Playgroud)

但它只适用于字符串。

恐怕使用自定义反序列化器对我没有帮助,因为我正在编写一个通用(适用于所有对象)映射器。所以我可能需要像委托人或后处理反序列化方法之类的东西。

所以对于 json like""或者{}我希望null在 java 中转换为(而不是空字符串或Object实例)。

java jackson deserialization

5
推荐指数
1
解决办法
7866
查看次数

XV6:ptable初始化

我说的是:

struct {
struct spinlock lock;
struct proc proc[NPROC];
} ptable;
Run Code Online (Sandbox Code Playgroud)

它驻留在 proc.c 文件中。

有人可以解释它在哪里初始化吗?因为,在 proc.c 中,我从未见过向其中添加了某些东西(进程)。

更准确地说,假设我正在查看调度程序代码:

void
scheduler(void)
{
 struct proc *p;
 for(;;){
 // Enable interrupts on this processor.
 sti();
 // Loop over process table looking for process to run.
 acquire(&ptable.lock);
 for(p = ptable.proc; p < &ptable.proc[NPROC]; p++){
  if(p?>state != RUNNABLE)
  continue;
  // Switch to chosen process. It is the process’s job
  // to release ptable.lock and then reacquire it
  // before jumping back to us.
  proc = …
Run Code Online (Sandbox Code Playgroud)

c proc xv6

4
推荐指数
2
解决办法
5507
查看次数

标签 统计

influxdb ×2

java ×2

c ×1

deserialization ×1

group-by ×1

influxql ×1

jackson ×1

keycloak ×1

proc ×1

time ×1

xv6 ×1