我有一个任务来更改 IDM 中用户的状态。我选择的解决方案是天真的:循环每个并使用 REST 调用 KeyCloak 的服务。
但是,我注意到这会消耗大量时间。我认为像批量更新(相当于 SQL)之类的东西可能会解决这个问题,但我没有在 KeyCloak 的 API 中找到它。
有谁知道如何修理它?感谢帮助!
最近,我们在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个时代开始。如果是这样,那么我们可以在拍摄查询之前根据需要使用偏移量。我希望将其添加到他们的文档中,因为这可以为其他人节省大量时间,并且可以确认下一个版本中不会有重大更改。
最近,我们将数据从具有保留策略 autogen(默认)的测量“用户”迁移到保留策略 Sixty_days (sixty_days.users)。所以我们不再需要 autogen.users 中的数据。
我们怎样才能在不损害 Sixty_days.users 中的数据的情况下删除它?
这是一种奇怪的行为,因为当我们将数据插入到 Sixty_days.users 时 - 它不会应用于 autogen.users,但是当我们尝试删除/删除时 - 它会从它们中删除它。
我们尝试过按时间使用DROP和DELETE,但没有成功。
我们希望仅删除属于特定 RT 的测量中的数据。
我被要求更改我们的 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实例)。
我说的是:
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)