小编sne*_*ze1的帖子

为什么懒惰生成Java String哈希码?

它出现在java.lang.String.java中,Java只会在调用hashcode()之后生成哈希码,然后存储它,但为什么不在构造函数中创建哈希码呢?

相关代码:

if (h == 0 && count > 0) {
    int off = offset;
    char val[] = value;
    int len = count;

    for (int i = 0; i < len; i++) {
        h = 31*h + val[off++];
    }

    hash = h;
}
Run Code Online (Sandbox Code Playgroud)

大部分都可以放在构造函数中.

java string lazy-initialization

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

并发观察者模式

如果我遇到以下情况:

ObserverA,ObserverB,ObserverC都继承自AbstractObserver.

我创建了一个观察者列表:

List<AbstractObserver> list = new ArrayList<AbstractObserver>();
list.add(new ObserverA());
list.add(new ObserverB());
list.add(new ObserverC());
Run Code Online (Sandbox Code Playgroud)

并且具有以下方法的某种处理程序在"MAIN"线程中运行:

public void eat(Food item) {
     for(AbstractObserver o : list) {
          o.eatFood(item);
     }
}

public void drink(Coffee cup) {
     for(AbstractObserver o : list) {
          o.drinkCoffee(cup);
     }
}
Run Code Online (Sandbox Code Playgroud)

我如何设计一个系统,我可以在不同的线程中运行每个eatFood和drinkCoffee方法的观察者?具体来说,当"MAIN"线程收到事件(饮料或吃方法被调用)时,如何在ObserverA,ObserverB和ObserverC中运行自己的线程中的eatFood或drinkCoffee方法?

我想为每个AbstractObserver子类实例设置不同的线程,因为目前我正在按顺序通知每个观察者,这可能会导致延迟.

java concurrency multithreading observer-pattern

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

更改jupyter笔记本服务器密码

我想将我的jupyter笔记本服务器的密码更改为其他内容.我在Jupyter的文档(http://jupyter-notebook.readthedocs.org/en/latest/public_server.html)上看到了如何为表面上的新服务器准备密码,而不是如何更改现有服务器.

我可以简单地说:

  1. 根据上面的文档指定,为密码生成新的SHA哈希
  2. 替换PWDFILE环境变量中的密码(位于jupyter_notebook_config.py中)
  3. 重启jupyter服务器

基本上,我问,因为我不想通过改变事物来混淆和/或搞乱认证系统.

python-2.7 jupyter jupyter-notebook

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

没有服务器代码的iOS cron作业

是否有可能在iOS应用程序(包括iOS 8的任何版本)中设置(Linux)cron工作,无论应用程序是打开还是处于后台模式,它们都会在设定的时间运行?

例如,我想在11:00和23:00从iPhone运行网络GET操作.如果由于手机电源关闭而无法运行作业,那没关系.

objective-c ios swift

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