我正在用 java 开发一个 web 服务器,除其他外,它应该在几个用户之间实现一个挑战服务。
每个用户一次只能参加一项挑战。
实际上,我将“挑战”对象存储在 a 中ConcurrentHashMap<String, Challenge>,我使用的String是两个玩家用户名的并集作为映射键。
例如,如果两个玩家的用户名是“Mickey”和“Goofy”,那么Challenge里面的对象的键ConcurrentHashMap就是字符串:
Mickey:Goofy
在 中记录两个用户之间的新挑战时ConcurrentHashMap,我必须在实际将挑战放入 Map 之前检查他们是否已经参与其他挑战,换句话说,我必须检查 Map 中是否存储了一个密钥包含想要开始新挑战的玩家的两个用户名之一。
例如,给定ConcurrentHashMap<String, Challenge>对用户Mickey和的填充和挑战请求Goofy,我想以原子方式知道并且不锁定整个地图,如果他们中的一个(或最终两个)已经参与了地图中的其他注册挑战如果没有,则将新挑战放入地图中。
我希望已经足够清楚了。
你们有什么建议吗?
提前致谢。
我正在努力使用 Vue 3 Composition API。我试图按逻辑问题拆分我的代码,但我无法弄清楚如何传递要在可组合函数中监视的属性。
这是组件:
export default defineComponent({
props: {
collapseY: {
type: Boolean,
required: false,
default: false
},
barcodePulse: {
type: Boolean,
required: false,
default: false
}
},
setup(props) {
const pulse = ref(props.barcodePulse)
const {getRandomVerticalScaleValue, getRandomAnimationDuration} = usePulse(pulse)
return {
getRandomVerticalScaleValue,
getRandomAnimationDuration
}
}
})
Run Code Online (Sandbox Code Playgroud)
这是usePulse可组合函数:
export interface usePulseData {
getRandomVerticalScaleValue: () => number;
getRandomAnimationDuration: () => number;
}
export const usePulse: (pulse: Ref<boolean>) => usePulseData = (pulse) => {
const stopBarcodeAniation = (event: Event) …Run Code Online (Sandbox Code Playgroud)