小编Dan*_*ral的帖子

什么是饥饿?

在多任务系统中,某些异常情况会阻止执行进程或线程的进度.我将这两个进程和线程简称为"进程".其中两个条件称为死锁和活锁.

前者指的是相互阻塞的进程,从而阻止了执行.后者指的是阻止彼此前进的过程,但实际上并不阻止执行.例如,他们可能会不断地让对方回滚交易,也无法完成它们.

另一个条件被称为资源饥饿,其中进程进展所需的一个或多个有限资源已被其耗尽,并且除非进程进展,否则无法恢复.这也是活锁的一个特例.

我想知道是否有任何其他定义,特别是学术定义,对于"饥饿",不仅限于"资源饥饿".特别欢迎参考文献.

而且,不,这不是功课.:-)

theory multitasking

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

Scala编程语言的目的是什么?

我认为每种语言都是为特定目的而创建的.Scala创建的是什么以及它最好解决哪些问题?

programming-languages scala

40
推荐指数
4
解决办法
3万
查看次数

根据经验估算大时间效率

背景

我想通过基准测试估算库中某些方法的性能.我不需要精确度 - 它足以证明某些东西是O(1),O(logn),O(n),O(nlogn),O(n ^ 2)或更糟.因为大哦意味着上限,所以估计O(logn)的O(logn)不是问题.

现在,我正在考虑找到最适合每个大数据的数据的常数乘数k(但会覆盖所有结果),然后选择最适合的大哦.

问题

  1. 有没有更好的方式来做到这比我的兴趣?如果是这样,他们是什么?
  2. 否则,是否有人可以指出算法来估算k以获得最佳拟合,并比较每条曲线与数据的拟合程度?

注释和约束

鉴于到目前为止的评论,我需要做一些事情:

  • 这需要自动化.我无法"查看"数据并做出判断.
  • 我将使用多种n尺寸对方法进行基准测试.对于每种规模n,我将使用经过验证的基准框架,提供可靠的统计结果.
  • 事实上,我事先知道将要测试的大多数方法的大部分.我的主要目的是为他们提供性能回归测试.
  • 代码将使用Scala编写,并且可以使用任何免费的Java库.

这是我想要测量的那种东西的一个例子.我有一个带有此签名的方法:

def apply(n: Int): A
Run Code Online (Sandbox Code Playgroud)

给定a n,它将返回序列的第n个元素.给定现有实现,该方法可以具有O(1),O(logn)或O(n),并且小的改变可以使其错误地使用次优实现.或者,更容易,可以获得一些依赖于它的方法来使用它的次优版本.

java algorithm big-o scala

39
推荐指数
4
解决办法
3735
查看次数

如何使用特定的语言环境在Java中将String转换为Double?

我想将我得到的一些数字转换为双打,但这些数字不是美国标准语言环境,而是另一个数字.我怎样才能做到这一点?

java localization

38
推荐指数
3
解决办法
4万
查看次数

在Scala中使用reify(获取AST)表达式的最简单方法是什么?

我正在寻找替代-printjavap作为一种方法来确定编译器在Scala中正在做什么.随着新的反射/宏库,reify似乎应该是一个很好的候选人,如在返璞词的宏观desugar.它甚至展示了人们如何做到这一点,前M4.

所以问题是,在Scala 2.10.0-M4之后,我可以在Scala的REPL上输入最短/最简单的东西来获取表达式的AST?

macros scala scala-2.10

36
推荐指数
1
解决办法
9173
查看次数

哪些因素可以决定Clojure,Scala或Haskell是否会获得牵引力?

鉴于不可能看到未来,与Clojure,Scala或Haskell有关的哪些因素可能决定其中一个是否能够抓住?

是否有文化或经济问题可以使其中一种语言优于其他语言?

或者这些语言是否因其概念复杂性而无法获得牵引力?

haskell programming-languages scala clojure

33
推荐指数
3
解决办法
9266
查看次数

Scala中的右关联方法有什么用?

我刚刚开始使用Scala,我刚学会了如何使方法成为正确关联(而不是在命令式面向对象语言常见的更传统的左关联性).

首先,当我cons在Scala中看到列表的示例代码时,我注意到每个示例总是在右侧有List:

println(1 :: List(2, 3, 4))
newList = 42 :: originalList
Run Code Online (Sandbox Code Playgroud)

然而,即使在一遍又一遍地看到这一点之后,我也没有三思而后行,因为我不知道(当时)这::是一种方法List.我只是假设它是一个运算符(再次,在Java中的运算符意义上),并且关联性并不重要.List在示例代码中始终出现在右侧的事实似乎巧合(我认为它可能只是"首选样式").

现在我知道的更好:它必须以这种方式编写,因为它::是正确联想的.

我的问题是,能够定义右关联方法的重点是什么?

这纯粹是出于审美原因,还是在某些情况下,权利关联实际上可以带来某些与左联结相关的好处?

从我(新手)的角度来看,我真的不知道如何

1 :: myList
Run Code Online (Sandbox Code Playgroud)

比任何更好

myList :: 1
Run Code Online (Sandbox Code Playgroud)

但这显然是一个微不足道的例子,我怀疑这是一个公平的比较.

scala operators operator-precedence

31
推荐指数
1
解决办法
8970
查看次数

选择列表的最后一个元素

scala> last(List(1, 1, 2, 3, 5, 8))
res0: Int = 8
Run Code Online (Sandbox Code Playgroud)

为了得到上面的结果,我写了这段代码:

val yum = args(0).toInt
val thrill: 

def last(a: List[Int]): List[Int] = {
     println(last(List(args(0).toInt).last)
     }
Run Code Online (Sandbox Code Playgroud)

这段代码有什么问题?

scala list

31
推荐指数
3
解决办法
5万
查看次数

将参数传递给Capistrano

我正在研究使用Capistrano作为通用部署解决方案的可能性."通用",我的意思是不是铁轨.我对我发现的文档的质量不满意,但是,我认为,我不是在考虑那些假设你正在部署rails的文档.所以我会尝试基于一些例子来解决问题,但是我从一开始就面临着一些问题.

我的问题是cap deploy没有足够的信息来做任何事情.重要的是,它缺少我要部署的版本标签,而这具有在命令行上传递.

另一个问题是我如何指定我的git存储库.我们的git服务器在用户的帐户上通过SSH访问,但我不知道如何更改deploy.rb以使用用户的id作为scm URL的一部分.

那么,我该如何完成这些事情呢?

我想部署第二个版本的第一个sprint的结果.那被标记在git存储库中r2s1.另外,假设用户"johndoe"负责部署系统.要访问存储库,他必须使用URL johndoe@gitsrv.domain:app.因此,存储库的远程URL取决于用户ID.

获取所需文件的命令行将是:

git clone johndoe@gitsrv.domain:app
cd app
git checkout r2s1
Run Code Online (Sandbox Code Playgroud)

deployment capistrano

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

BigDecimal上有Square Root的库吗?

Java中的BigDecimal上有Square Root的库吗?

java math

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