小编hot*_*zen的帖子

Fork/Join和Map/Reduce之间的区别

Fork/Join和Map/Reduce之间的主要区别是什么?

它们的分解和分布类型(数据与计算)有何不同?

mapreduce fork-join

42
推荐指数
2
解决办法
8455
查看次数

ConcurrentLinkedQueue的大小

阅读Java的ConcurrentLinkedQueue Docs,我想知道为什么实现不可能存储大小:

请注意,与大多数集合不同,size方法不是恒定时间操作.由于这些队列的异步性质,确定当前元素数量需要遍历元素.

来源是这样的"异步性"?我只看到一个while循环来重试排队,直到AtomicReferences匹配预期的值/引用.为什么size:AtomicInteger在成功向队列提供值后无法增加?

非常感谢.

java size queue concurrency

15
推荐指数
2
解决办法
4806
查看次数

如何使用Continuations拆分和分派异步控制流?

我有一个异步控制流,如下所示:

ActorA ! DoA(dataA, callback1, callbackOnErrorA)

def callback1() = {
  ...
  ActorB ! DoB(dataB, callback2, callbackOnErrorB)
}

def callback2() = {
  ActorC ! DoC(dataC, callback3, callbackOnErrorC)
} 

...
Run Code Online (Sandbox Code Playgroud)

我如何将这个流划分为几个部分(延续),并在保持整体状态的同时将这些部分顺序分配给不同的参与者(或线程/任务)?

任何提示都表示赞赏,谢谢

continuations scala scala-2.8

13
推荐指数
2
解决办法
1010
查看次数

概念:渠道与流

术语"频道"和"流"之间是否存在概念上的差异?这些条款是否要求/确定,例如,允许的并发消费者或生产者数量?

我目前正在开发DataFlowVariables的Channel/Stream,它可以由一个生产者编写并由一个消费者读取,因为实现是破坏性/可变的.这将是一个频道或流,是否有任何差异?

谢谢

terminology channel stream

12
推荐指数
2
解决办法
5152
查看次数

为CPS类实现Seq [T]

如果在CPS上下文中有以下类(@cps [Unit]),我将如何实现Seq-trait?我是否必须将Seq等标准特征放在一边,只需在cps-context中实现map,flatmap和foreach?

class DataFlowVariable[T] {
  def apply(): T @cps[Unit] = ...
}

class DataFlowStream[T] extends Seq[T] {

  override def iterator: Iterator[T] = new Iterator[T] {
    private val iter = queue.iterator
    def hasNext: Boolean = iter.hasNext
    def next: T = { // needed: next: T @cps[Unit] !
      val dfvar = iter.next
      // dfvar() // not possible as dvar.apply has type "T @cps[Unit]"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

continuations scala scala-2.8

7
推荐指数
1
解决办法
410
查看次数

使用Scala Actors创建像管道一样的东西

我现在正在努力解决以下问题一周,需要一些建议.

def query(title: String): List[Search]   // query("Terminator") => ["Terminator I", "Terminator II", "Terminator 1984", etc...]

def searchIMDB(s: Search): List[SearchResult]
def searchTMDB(s: Search): List[SearchResult]

def filterRedundantSearchResults(sr: SearchResult): Option[SearchResult]

def fetchIMDB(sr: SearchResult): List[MetaInfo]
def fetchTMDB(sr: SearchResult): List[MetaInfo]

def consolidate(infos: List[MetaInfo]): List[List[MetaInfo]]
Run Code Online (Sandbox Code Playgroud)

我想构建一个像以下一样的管道:

query("Terminator")
-> [askIMDB, askTMDB, ...]
-> filterRedundantSearchResults (already-searched-state per query)
-> [fetchIMDB, fetchTMDB, ...]
-> consolidate                  (collected-meta-infos-state per query)
   => List[  TerminatorI-List[MetaInfo],  TerminatorII-List[MetaInfo],  ...]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经将每个Pipeline-Segment都实现为Actor.我需要为每个Query创建专用的actor实例,因为像filterXXX和mergeate这样的一些actor需要维护每个查询的状态.

像askIMDB这样的函数会产生多个我希望同时处理的结果(每个结果都是一个单独的actor).所以我没有找到任何方法执行query()之前预构建actor的整个图形,也没有在运行时修改它的优雅方法.

我的第一次尝试是一系列演员,并在消息中传递像Transaction-ID,所以每个Actor都有一个Map [TransactionID-> State],但这感觉相当难看.第二个尝试是创建一个排序管道,将演员的有向图抽象为一个流,但到目前为止我失败了.

这是我的第一篇文章,对不起,如果我忘记了某些内容或问题是一般/伪编码.任何建议非常感谢.谢谢!

concurrency pipeline scala actor

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

创建自定义注释作为框架注释的别名?

是否可以创建自定义别名注释来代替

@SuppressWarnings("unused") // EventBus
public void onEvent(SomeMessage msg) { ... }
Run Code Online (Sandbox Code Playgroud)

喜欢

@EventBusListener
public void onEvent(SomeMessage msg) { ... }
Run Code Online (Sandbox Code Playgroud)

这将是更多的自我记录,当然应该包括 SuppressWarnings ......对不起,如果这微不足道,但到目前为止我的谷歌搜索失败了。

java annotations

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

NIO最佳实践 - SelectableChannel和InterestOps

使用java.nio,必须通过SelectableChannel注册操作的兴趣:

SelectionKey = SelectableChannel.register(selector, interestInOpsBitmask)
Run Code Online (Sandbox Code Playgroud)

注册兴趣:

  • 通过使用新的Ops执行SelectableChannel.register来覆盖现有的SelectionKey
  • VS. 使用key.interestOps更新现有的SelectionKey(key.interestOps()| newOp)

取消注册兴趣:

  • SelectionKey.cancel和SelectableChannel.register与新的Ops
  • VS. 像上面那样更新现有的SelectionKey

有任何利弊吗?

谢谢

java nio selector

5
推荐指数
1
解决办法
5642
查看次数

具有多个限制的线程池

我想要一个提供最多X个线程来处理任务的线程池,到目前为止没问题.但是,每个提交的任务都可以指定特定限制的IO目标(比如Y).

因此,提交的IOTask以限制4(Y)返回目标"google.com",并且池具有全局限制16(X).我想提交10个google.com-tasks,其中只有4个并行处理,并且该池有12个线程可用于其他任务.

我怎样才能做到这一点?

java concurrency multithreading scala pool

5
推荐指数
1
解决办法
1198
查看次数

AbstractIntegrationTest 上的 @EnableAutoConfiguration 可能吗?

有很多像这样的集成测试实现:

// no @Annotations at all
class SomeIntegrationTest extends AbstractIntegrationTest {
  ...
}
Run Code Online (Sandbox Code Playgroud)

使用(Spring Boot 1.5,JUnit 5)

@SpringBootTest(classes = {CoreConfiguration.class, RestTemplateAutoConfiguration.class, JacksonAutoConfiguration.class})
@ExtendWith(SpringExtension.class)
@AutoConfigureMockMvc
@Transactional
public abstract class AbstractIntegrationTest {
  ...
}
Run Code Online (Sandbox Code Playgroud)

这总是失败

org.springframework.beans.factory.NoSuchBeanDefinitionException:
No qualifying bean of type 'javax.persistence.EntityManagerFactory' available
Run Code Online (Sandbox Code Playgroud)

除非我注释每个IntegrationTest-Implementation

@EnableAutoConfiguration    
class SomeIntegrationTest extends AbstractIntegrationTest {
 ...
}
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我不能@EnableAutoConfigurationAbstractIntegrationTest并用它做。(这样做时,它失败了IllegalArgumentException: No auto-configuration attributes found. Is package.SomeIntegrationTest annotated with EnableAutoConfiguration?

我们正常的应用程序看起来像这样:

@SpringBootApplication
@Import({CoreConfiguration.class, OtherConfiguration.class})
public class WebApp {
Run Code Online (Sandbox Code Playgroud)

这里@SpringBootApplication显然暗示, @EnableAutoConfiguration …

spring-boot spring-boot-test

5
推荐指数
1
解决办法
1881
查看次数

By-Name-Constructors的参数

来自我的另一个问题 是有一种方法来获取构造函数的名字参数吗?我需要一种方法来提供一个代码块,它在对象内部按需/延迟/按名称执行,这个代码块必须能够访问类方法,就像代码块是类的一部分一样.

以下Testcase失败:

package test

class ByNameCons(code: => Unit) {

    def exec() = {
        println("pre-code")
        code
        println("post-code")
    }

    def meth() = println("method")

    def exec2(code2: => Unit) = {
        println("pre-code")
        code2
        println("post-code")
    }
}


object ByNameCons {

    def main(args: Array[String]): Unit = {
        val tst = new ByNameCons {
            println("foo")
            meth() // knows meth() as code is part of ByNameCons
        }
        tst.exec() // ByName fails (executed right as constructor)


        println("--------")


        tst.exec2 { // ByName works
            println("foo")
            //meth() // does not …
Run Code Online (Sandbox Code Playgroud)

constructor scala pass-by-name

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

强制正则表达式匹配可选组

我想在文本中搜索字符串"W foo X bar Y baz Z".W,X,Y,Z是不重要的分隔符,我不能搜索它们.foo,bar和baz是我感兴趣的词.订单并不重要.我想知道文本中出现的所需词语"好".

我正在尝试以下方面

(?:\Qfoo\E)?.{0,3}(?:\Qbar\E)?.{0,3}(?:\Qbaz\E)?
Run Code Online (Sandbox Code Playgroud)

我的理由是:

  • 将每个单词打包在一个可选组中,因此不需要发生[(?:是非捕获组,\ Q ...\E只是转义]
  • 用.{0,3}分隔每个单词(任何字符,出现0-3次)

此正则表达式始终匹配,因为它只包含可选组,但结果匹配始终为空,即使它可以完全匹配所有可选组.但是,我想对结果匹配进行后期处理,因此我需要尽可能多地捕获它.

我可以强制正则表达式尝试尽可能匹配所有组吗?

或者您是否知道如何搜索多个单词,由某些单词分隔,然后检查哪些单词出现以计算某些相似性?

非常感谢你

java regex scala parser-combinators

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

创建全局API对象

我在java脚本中使用module-via-anonymous-function-pattern来创建一个匿名函数,该函数体现整个模块并通过设置全局属性公开特定的公共API部分.

我尝试了几种设置这种全局属性的方法,下面发布的第二种方法失败了:

window.foo = (function() {
  function bar() { this.hello = "world" }
  return new bar();
})();

> foo.hello
"world" // OK
Run Code Online (Sandbox Code Playgroud)

(function() {
  window.foo2 = new bar( this.hello = "world" );
  function bar() {}
})();

> foo2.hello
undefined // Fail
Run Code Online (Sandbox Code Playgroud)

为什么第二种方法没有创建一个合适的条形对象?

javascript constructor global object

-1
推荐指数
1
解决办法
83
查看次数