小编gro*_*gor的帖子

Kotlin:在某些对象的某些列表中找到最小元素的第一个索引的最有效方法

我有一些自定义类的实例列表:

data class Flight(val duration: Int)
Run Code Online (Sandbox Code Playgroud)

例如:

val flights = listOf(Flight(10), Flight(5), Flight(5), Flight(15), Flight(20))
Run Code Online (Sandbox Code Playgroud)

如何最有效地找到此列表中最小元素的第一个索引?在这种情况下,min 元素的第一个索引是 1,因为航班 [1].duration = 5。

kotlin

7
推荐指数
2
解决办法
3067
查看次数

Grafana 查询以获取唯一标签值

我想获得某些指标的特定标签的唯一值。例如,如果我有指标“metric_name”有标签“tag_name1”和“tag_name2”:

metric_name{tag_name1='a',tag_name2='b'}
metric_name{tag_name1='c',tag_name2='d'}
metric_name{tag_name1='e',tag_name2='f'}
Run Code Online (Sandbox Code Playgroud)

我想获得 'tag_name1' 标签的唯一值:a,c,e

就像:

select distinct tag_name1 from metric_name
Run Code Online (Sandbox Code Playgroud)

grafana prometheus

6
推荐指数
1
解决办法
8438
查看次数

如何将 kotlin 协程与响应式弹簧数据一起使用

我正在尝试将一些项目从 Spring Reactor 迁移到 kotlin 协程。我有一些基于 spring webflux 的控制器,如下所示:

@RestController
class Controller(val productRepository: ProductsRepository) {

    @GetMapping("/product")
    fun find(@RequestParam id: String): Mono<Product> {
        return productRepository.findById(id)
    }
}
Run Code Online (Sandbox Code Playgroud)

该控制器使用反应式弹簧数据存储库:

@Repository
interface ProductsRepository : ReactiveMongoRepository<Product, String>
Run Code Online (Sandbox Code Playgroud)

根据这个官方文档 - https://docs.spring.io/spring/docs/5.2.0.M1/spring-framework-reference/languages.html#how-reactive-translates-to-coroutines,我find在控制器中的功能应该被转换为suspend fun并且这个函数应该返回一个 Product 类的实例,而不是 Product 的反应式 Mono 包装器。类似的东西:

@RestController
class Controller(val productRepository: ProductsRepository) {

    @GetMapping("/product")
    suspend fun find(@RequestParam id: String): Product {
        return productRepository.findById(id)
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我的 productRepository 处理 Mono 和 Flux,而不是挂起的函数。在这种情况下,我应该如何正确使用 spring 数据抽象?

spring spring-data kotlin kotlin-coroutines

3
推荐指数
1
解决办法
1890
查看次数