在各种Scala文献中,我看到一些使用"this"的自我类型注释和其他使用"self"的注释:
trait A { this: B => ... }
trait A { self: B => ... }
Run Code Online (Sandbox Code Playgroud)
使用"this"或"self"之间有什么真正的区别吗?你用的是什么名字是否重要?这有效吗?
trait A { foo: B => ... }
Run Code Online (Sandbox Code Playgroud) 你看过哪些好的在线文章或视频最有可能让开发人员对Scala感兴趣?我正在寻找一个简短的介绍,直到潜入示例代码,并留下一个不知道Scala想要了解更多信息的开发人员.
我们有一个自定义的C++守护程序应用程序,它只能分叉一次.所以我们一直在Ubuntu 12.04上的Upstart脚本中这样做,它完美地工作:
expect fork
exec /path/to/the/app
Run Code Online (Sandbox Code Playgroud)
但是现在我们需要向我们的app传递一个参数,该参数包含运行它的机器上的CPU数量:
cat /proc/cpuinfo | grep processor | wc -l
Run Code Online (Sandbox Code Playgroud)
我们的第一次尝试就是:
expect fork
exec /path/to/the/app -t `cat /proc/cpuinfo | grep processor | wc -l`
Run Code Online (Sandbox Code Playgroud)
而我们开始用正确的-t值的应用程序,新贵跟踪错误的PID值,我假设,因为这些猫,grep的&WC命令在EXEC所有启动过程中我们的应用程序之前.
我也试过这个,即使它不起作用,我想因为设置一个env var运行一个进程?Upstart仍然跟踪错误的pid:
expect fork
script
NUM_CORES=32
/path/to/the/app -t $NUM_CORES
end script
Run Code Online (Sandbox Code Playgroud)
我也试过在env节中这样做,但显然那些不运行命令:
env num_cores=`cat /proc/cpuinfo | grep processor | wc -l`
Run Code Online (Sandbox Code Playgroud)
也尝试在pre-start中执行此操作,但设置的env vars在exec节中没有任何值:
pre-start
NUM_CORES=32
end script
Run Code Online (Sandbox Code Playgroud)
知道如何正确设置这个NUM_CORES,并仍然让Upstart跟踪我们的应用程序一次分叉的正确pid吗?