小编use*_*855的帖子

消息传递的性能损失而不是共享数据

这些天有很多关于不使用锁和使用像Erlang这样的Message传递方法的嗡嗡声.或者关于使用函数式编程与C++/Java之类的不可变数据结构.

但我关心的是以下内容:

  1. AFAIK,Erlang不保证邮件传递.消息可能会丢失.如果您不得不担心消息丢失,那么算法和代码是否会膨胀并再次变得复杂?无论您使用何种分布式算法,都不能依赖于保证的消息传递.
  2. 如果Message是一个复杂的对象怎么办?在复制和发送消息时是否存在巨大的性能损失,而不是将其保留在共享位置(如两个进程都可以访问的数据库)?
  3. 你真的可以完全取消共享国家吗?我不这么认为.例如,在DB中,您必须访问和修改相同的记录.你不能在那里使用消息传递.您需要锁定或采用乐观并发控制机制,然后对错误进行回滚.Mnesia如何运作?
  4. 此外,您并不总是需要担心并发性.任何项目也将有一大块的,不都与在所有并发或交易任何代码(但他们确实有性能和速度的关注).很多这些算法都依赖于共享状态(这就是为什么传递引用或指针非常有用的原因).

鉴于这一事实,在Erlang等中编写程序是一件痛苦的事情,因为你无法做任何这些事情.可能是,它使程序健壮,但是对于诸如解决线性规划问题或计算凸起等问题,性能更重要,并且当它与并发/事务无关时强制算法的不变性等是一个糟糕的决定.不是吗?

concurrency erlang transactions distributed-computing

8
推荐指数
1
解决办法
2084
查看次数

一些函数式编程构造是否会降低可调性?

我听说以下功能降低了可调试性(因为它们是匿名的,调试器无法很好地跟踪它)

  1. 匿名类
  2. 内在的类
  3. 闭包块/ Lambda函数

这是真的?

debugging functional-programming

8
推荐指数
2
解决办法
940
查看次数

在JMockIt中等效的次数()?

我不认为minInvocation或maxInvocation相当于Mockito中的times().在那儿?

请看这个问题:Mockito和JMockIt之间的主要区别

任何人都没有回答过.

编辑

我自己找到了答案:在这里为需要此答案的其他人添加答案:

解决方案是使用DynamicPartialMocking并将对象传递给Expectations或NonStrictExpectations的构造函数,而不是调用该对象上的任何函数.

然后在Verifications部分中,调用要测量调用次数的对象上的任何函数,并设置times =您想要的值

new NonStrictExpectations(Foo.class, Bar.class, zooObj)
{
    {
        // don't call zooObj.method1() here
        // Otherwise it will get stubbed out
    }
};


new Verifications()
{
    {
        zooObj.method1(); times = N;
    }
};
Run Code Online (Sandbox Code Playgroud)

jmockit

8
推荐指数
1
解决办法
1323
查看次数

scala中的所有东西都是函数或表达式或对象吗?

我很迷惑.

我认为一切都是表达式,因为语句返回一个值.但我也听说scala中的所有东西都是一个对象.

实际上是什么?为什么scala选择以某种方式做到这一点?这对scala开发人员意味着什么?

scala

8
推荐指数
3
解决办法
2473
查看次数

如何阻止“cargo Clippy”在依赖项上运行?

我有一个有很多板条箱的工作区。我只想运行cargo clippy其中之一,而不是其任何依赖项。

我该如何实现这个目标?

rust rust-cargo rust-clippy

8
推荐指数
1
解决办法
3793
查看次数

在Scala中使用"val capacity:Int"而不是"val Int Capacity"的任何原因

我正在读斯卡拉,我想知道......
为什么

val capacity : Int 
Run Code Online (Sandbox Code Playgroud)

代替

val Int capacity.
Run Code Online (Sandbox Code Playgroud)

这个选择的任何原因.如果没有,我似乎不喜欢摆脱Java声明它的方式.本来可以更容易地从Java转换到Scala(不是很多,而是一点点)

syntax types scala language-design

7
推荐指数
3
解决办法
625
查看次数

什么是01001001的算术左移?

我认为它是00010010,即它试图按原样维持符号位

另一方面,1位的逻辑左移将是10010010

它是否正确?

java bit-manipulation

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

为什么Builder模式比创建类对象中的参数的构造函数更好?

为什么我们不能在构造函数本身内构建不同的构建步骤.如果构建步骤采用参数,为什么它们不能作为构造函数的参数提供,并在构造函数中用于创建对象.

AFAIK,在Builder模式中,客户端要创建的特定对象; 那么在创建Class的对象中使用构建器而不是带有参数的构造函数有什么好处?

c++ builder-pattern

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

Eclipse命令行格式化Java代码

是否有一种命令行方式来调用Eclipse的java代码格式化功能?另外,有没有办法配置它通过命令行格式化代码的方式?

目标是为整个团队建立一个通用的代码格式化机制,并在签入代码之前自动执行该步骤.

java eclipse eclipse-plugin

6
推荐指数
2
解决办法
2400
查看次数

用于实现分布式消息传递算法的编程语言

基本上,我想实现以下算法并分析使用这些算法构建的系统在不同条件下的行为.

  • 八卦协议
  • 多个paxos
  • 一致的散列

我的兴趣在于这些算法.我基本上正在寻找一种编程语言,可以让我快速编写这些算法并深入理解这些算法.

我应该选择哪种语言?Java,Scala,Erlang或其他任何东西.

目前,我了解Java和C++.

java erlang scala consistent-hashing paxos

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