小编Hon*_*gbo的帖子

切换语句不好?

我最近了解到开关语句在OOP中很糟糕,特别是罗伯特·马丁的"清洁代码"(第37-39页).

但请考虑这个场景:我正在编写一个游戏服务器,接收来自客户端的消息,其中包含一个表示玩家行为的整数,例如移动,攻击,挑选项目......等等,将有超过30种不同的动作.当我编写代码来处理这些消息时,没有想到我想到的解决方案,它将不得不在某处使用switch.如果不切换语句,我应该使用什么模式?

oop design-patterns coding-style switch-statement

32
推荐指数
5
解决办法
4万
查看次数

将volatile关键字与可变对象一起使用

在Java中,我理解volatile关键字提供变量的可见性.问题是,如果变量是对可变对象的引用,那么volatile还是为该对象内的成员提供了可见性吗?

在下面的示例中,如果多个线程正在访问volatile Mutable m并更改value?,它是否正常工作?

class Mutable {
    private int value;
    public int get()
    {
        return a;
    }
    public int set(int value)
    {
        this.value = value;
    }
}

class Test {
    public volatile Mutable m;
}
Run Code Online (Sandbox Code Playgroud)

java concurrency mutable volatile

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

MMORPG应该使用加密吗?

首先, 那些成功的商业MMORPG是否使用加密进行游戏数据传输

我得到的印象是,许多开发人员倾向于使用加密,因为它无法阻止对作弊和制作私有服务器的逆向工程,但是它不能有效地减少那些数量吗?

加密也会影响性能,即使只是一点点.

良好的加密确实可以防止网络嗅探和中间人,对于MMORPG来说这些重要吗?

如何保护聊天消息以保护隐私

你怎么想?

PS:我说的是游戏数据,而不是用户/密码,auth信息需要加密.

encryption

11
推荐指数
3
解决办法
3824
查看次数

将volatile和synchronized混合为读写锁

考虑一个原始类型变量,其中包含许多线程读取和几个线程写入,以下代码是否可以正常工作?

如果它会,它提供比1)更好的性能.声明所有方法的同步; 2).使用显式ReadWriteLock?

这是一种常见的模式吗?如果没有,在这种情况下通常使用什么模式?

这对我来说当前工作正常,但我觉得使用volatile和synchronized有点多余.

private volatile int value = 1;

public void func1()
{
    if (value == 1) {
        // do something
    }
}

public void func2()
{
    if (value == 2) {
        // do something
    }
}

public void func3()
{
    if (value == 3) {
        // do something
    }
}

public synchronized void increase()
{
    if (value < 10) value++;
}

public synchronized void decrease()
{
    if (value > 0) value--;
}
Run Code Online (Sandbox Code Playgroud)

java concurrency volatile synchronized readwritelock

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

为什么不摆脱JVM?

JIT编译器已存在一段时间了.偶尔我会想到,"嘿,为什么不直接将Java源文件编译成机器代码呢?"

与编译库一起,我们可以摆脱繁琐的JVM.

我能想到的唯一障碍是垃圾收集器.你的想法怎么样?

PS:哦,你说便携性?WTH是那个?另外,我不得不首先安装JVM.

java compiler-construction jvm

0
推荐指数
2
解决办法
637
查看次数