我刚开始使用Kotlin,并且在进行实验时发现:
fun main(args: Array<String>) {
val list: MutableList<Int> = mutableListOf(1, 2, 3, 4, 5)
list.removeAll { x -> x in 1..3 }
Run Code Online (Sandbox Code Playgroud)
和
list.removeIf { x -> x in 1..3 }
}
Run Code Online (Sandbox Code Playgroud)
它们都导致相同的输出
4
5
Run Code Online (Sandbox Code Playgroud)
虽然我知道removeAll是Kotlin,removeIf是Java,但是我不明白为什么当removeIf已经存在时removeAll在那里?而且我们可以在Kotlin中轻松使用removeIf。还是有可能需要一个使用案例?
我一直在寻找各种解决方案,但是当我把它们放在一起时,它看起来非常混乱。
我正在尝试为具有 socket.io 实现的应用程序实现 pm2 集群模式。现在,我理解了需要无状态才能使我的应用程序在集群模式下正常工作的概念。socket.io 不是无状态的。困惑是,
1) 我们的朋友 Cam说,socket.io-redis当我们在最大数量的 CPU 上产生时,只要实现就可以正常工作。
2)虽然socket.io说,我引用,
注意:使用 Redis 适配器时仍然需要粘性会话。”
对于 1),根据我的研究,互联网应该不同意它会起作用。也许卡姆先生幸运地拥有运输方法,websocket并且可能不必处理polling。但同时我认为它应该可以工作,因为redis-adapter我们正在使用它来使其无状态。
信息:它使用websocketas 传输方法对我有用,但我无法使用polling.
对于 2),我认为我们可以结合 Joni 先生的建议,在“集群”中但在不同端口上使用“pm2”运行它。然后我们心爱nginx的upstream组 withip_hash会给我们带来同样的效果。
此外,我想让我的应用程序具有弹性。不仅在集群级别,而且在纵向扩展和横向扩展。鉴于我的应用程序包含 socket.io 实现和会话令牌管理,最佳实践是redis什么?
我错过了什么还是我在这里完全错了?哪种扩展方式最好?