- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在java中实现一个不透明的句柄。
即,当用户在我的 Factory 类上调用 Create 时,我创建了该类的一个对象,但不返回该对象本身,而是返回一个表示该类实例的 int。我会有一个 HashMap
它将 int 存储为键,将对象存储为值。
该类的所有其他方法都将一个 int 作为一个参数,并且它将从 HashMap
中检索对象。并对相应的对象进行所需的操作。
将有一个删除方法将其从 HashMap
中删除。并允许它被垃圾收集。
我想知道是否有任何现有的类/数据结构可以避免我必须实现代码的句柄部分?
我不认为我可以使用 hashCode
或 identityHashCode
作为唯一标识符,因为不能保证它们是唯一的。
如果我自己实现了一个运行计数器,我将不得不在创建唯一 ID 时处理线程安全等问题,当我从 hashMap
中删除对象时重用 ID。等等。所以我想知道是否有任何现有的类(class)可以帮助解决这个问题。
最佳答案
让我们做简单的计算。你说你最多有 10000 个对象,最多 1 小时的存活时间。让我们假设更艰难的条件 - 每 1 分钟 10000 个对象。 32 位整数足以使用大约 1 年。此外,即使整数溢出,它也会再次从零开始,重复使用 1 年前使用的整数。在我看来,这已经绰绰有余了。因此,只需使用 AtomicInteger 它的工作速度非常快,并且足以满足您的要求。
如果你仍然有疑问,你可以有一个更有弹性的解决方案 - 当一个新的句柄生成时,首先检查 HashMap 是否已经有这个键(这是非常快的操作),如果有,只需选择下一个整数。它类似于 https://superuser.com/questions/135007/how-are-pids-generated在操作系统中。
关于java - 在java中实现一个不透明的句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14892917/
我设置了 Helm 柄和 Helm 柄。我有tiller-deploy。昨天,我可以定期运行了。但今天我收到此错误消息 Error: could not find a ready tiller pod
我以前已将分er安装到特定的 namespace 中。 我设置了一个环境变量来设置'tiller'命名空间-但我不记得该环境变量的名称-而且似乎无法通过网络搜索找到它。 这是什么 key ? 最佳答案
当我在 View 模型中使用如下界面时 class MainViewModel @ViewModelInject constructor( private val trafficImagesR
我正在尝试找到如何在某个 fragment 相关场景中定义 Hilt 的解决方案。我有以下设置: Activity 父 fragment 1 子 fragment 1 子 fragment 2 ...
Hilt 指出如果没有@Provides 注解就不能提供这个接口(interface): interface PlannedListRepository { fun getAllLists()
我的问题非常简单明了:两个注释/示例之间有什么区别: 例子一 @Singleton class MySingletonClass() {} @Module @InstallIn(FragmentCom
我是一名优秀的程序员,十分优秀!