有谁知道如何在ScalaTest中显示自定义失败消息?
例如:
NumberOfElements() should equal (5)
Run Code Online (Sandbox Code Playgroud)
失败时显示以下消息:
10不等于5
但我想要更多描述性的消息,如:
NumberOfElements应为5.
在LINQ的scala并行集合中是否有任何等价物来withDegreeOfParallelism
设置将运行查询的线程数?我想并行运行一个需要运行一定数量线程的操作.
Java中比较和交换的语义是什么?也就是说,AtomicInteger
just 的compare和swap方法是否保证在不同线程之间对原子整数实例的特定内存位置进行有序访问,或者它是否保证对内存中所有位置的有序访问,即它就像是一个volatile一样(记忆围栏).
来自文档:
weakCompareAndSet
原子地读取并有条件地写入变量但不创建任何发生前的排序,因此不提供关于除了目标之外的任何变量的先前或后续读取和写入的保证weakCompareAndSet
.compareAndSet
以及所有其他读取和更新操作,例如getAndIncrement
读取和写入volatile变量的内存效应.从API文档中compareAndSet
可以看出,它就好像是一个易变的变量.但是,weakCompareAndSet
应该只是改变其特定的内存位置.因此,如果该存储器位置是单个处理器的高速缓存所独有的,weakCompareAndSet
则应该比常规处理器快得多compareAndSet
.
我问这个是因为我通过运行threadnum
不同的线程来对以下方法进行基准测试,threadnum
从1到8 不等,并且totalwork=1e9
(代码是用Scala编写的,这是一种静态编译的JVM语言,但它的含义和字节码转换都是同构的在这种情况下Java的代码 - 这个简短的代码片段应该是清楚的):
val atomic_cnt = new AtomicInteger(0)
val atomic_tlocal_cnt = new java.lang.ThreadLocal[AtomicInteger] {
override def initialValue = new AtomicInteger(0)
}
def loop_atomic_tlocal_cas = {
var i = 0
val until = totalwork / threadnum
val acnt = atomic_tlocal_cnt.get
while (i < until) {
i += 1
acnt.compareAndSet(i - …
Run Code Online (Sandbox Code Playgroud) 观察以下用Java编写的程序(完整的runnable版本如下,但程序的重要部分在下面的代码片段中):
import java.util.ArrayList;
/** A not easy to explain benchmark.
*/
class MultiVolatileJavaExperiment {
public static void main(String[] args) {
(new MultiVolatileJavaExperiment()).mainMethod(args);
}
int size = Integer.parseInt(System.getProperty("size"));
int par = Integer.parseInt(System.getProperty("par"));
public void mainMethod(String[] args) {
int times = 0;
if (args.length == 0) times = 1;
else times = Integer.parseInt(args[0]);
ArrayList < Long > measurements = new ArrayList < Long > ();
for (int i = 0; i < times; i++) {
long start = System.currentTimeMillis();
run();
long end …
Run Code Online (Sandbox Code Playgroud) 我之前改变了我的git diff工具git config --global diff.external <diff-tool-name>
.我决定不喜欢那个工具,想要换回来.
我试着干涉并做了类似的事情:git config --global diff.external git-diff
.现在调用git diff
以查看未分级的更改产生:
fatal: ambiguous argument '48e66b706d21398f28240810e7fc0d44d8f92d99': unknown revision or path not in the working tr
Use '--' to separate paths from revisions
external diff died, stopping at somefile.ext.
Run Code Online (Sandbox Code Playgroud)
如何设置我的git diff
命令以使用git附带的默认命令行git diff.就像是:
git config --global diff.
然后什么?
来自Java AtomicReferenceFieldUpdater
文档:
请注意,
compareAndSet
此类中方法的保证比其他原子类弱.因为此类不能确保该领域的所有应用都适合于原子访问目的,它可以保证原子性和可变语义只相对于其他调用compareAndSet
和set
.
这意味着我无法进行正常的易失性写入compareAndSet
,但必须使用set
.它没有提到任何关于get
.
这是否意味着我仍然可以读取具有相同原子性保证的volatile字段 - 所有写入之前的所有写入set
或者compareAndSet
对读取volatile字段的所有人都可见?
还是我使用get
上AtomicReferenceFieldUpdater
,而不是在球场上挥发读?
如果您有参考,请发布参考.
谢谢.
编辑:
从Java Concurrency in Practice中,他们唯一说的是:
updater类的原子性保证比常规原子类弱,因为您无法保证不会直接修改基础字段 - compareAndSet和算法方法仅保证原子性与使用原子字段更新器方法的其他线程相关.
同样,没有提到其他线程应该如何读取这些volatile字段.
另外,我是否正确地假设"直接修改"是一个常规的易失写?
sbt把下载的jar放在哪里?我试图让sbt下载所有依赖项并将它们放在lib /目录下,这样我就可以将它们与ScalaIDE一起使用,但是在我sbt compile
成功运行之后我不知道在哪里可以找到这些下载的.jars
你能告诉我一些灵活,强大,快速的库,它可以涵盖SciPy(性能和功能).我发现SciPy很有表现力 - 但我想在Scala中尝试一些东西.
我读了一些关于Scala的内容 - 但不像SciPy那样精彩.任何替代品?也许Java库?
是否可以request.setAttribute
在JSP页面上使用,然后在HTML Submit中获取相同的请求属性Servlet
?
观察线程子类的以下定义(为方便起见,整个可运行的Java源文件包含在问题的末尾):
final class Worker extends Thread {
Foo[] array = new Foo[1024];
int sz;
public Worker(int _sz) {
sz = _sz;
}
public void run() {
//Foo[] arr = new Foo[1024];
Foo[] arr = array;
loop(arr);
}
public void loop(Foo[] arr) {
int i = 0;
int pos = 512;
Foo v = new Foo();
while (i < sz) {
if (i % 2 == 0) {
arr[pos] = v;
pos += 1;
} else {
pos -= 1;
v …
Run Code Online (Sandbox Code Playgroud)