小编Bob*_*r02的帖子

多个线程在同一个映射上迭代

我最近在Java中编写了一个并发程序,并遇到了一个陷入困境的困境:假设你有一个全局数据结构,它是常规的非同步,非并发库,如HashMap的一部分.允许多个线程在不同的交错周期中迭代整个集合(只是读取,没有修改)是否可以,即当thread2在同一个地图上获取迭代器时,thread1可能会重复一半?

java multithreading

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

Java - 动态更改日志记录级别

我希望能够告诉JVM在执行链中的某个点停止记录某些级别的消息.在某些时候我想只记录SEVERE级别的消息,所以我想这样做:

    for(Enumeration<String> loggerNames = logManager.getLoggerNames(); loggerNames.hasMoreElements();){
        String name = loggerNames.nextElement();
        Logger nextLogger = logManager.getLogger(name);
        if(nextLogger != null)
            nextLogger.setLevel(Level.SEVERE);
    }
Run Code Online (Sandbox Code Playgroud)

有没有更简洁的方法来实现相同的逻辑,即设置一个全局变量,停止打印到日志除非严重?我需要区分控制台输出(在测试中)和实时文件输出,所以我可能在处理程序(控制台和文件)上设置这些级别?

java logging

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

Scala - 迭代器和takeWhile

我正在运行以下代码:

 val it = List(1,1,1,2,2,3,3).iterator.buffered
 val compare = it.head
it.takeWhile(_ == compare).toList
Run Code Online (Sandbox Code Playgroud)

它返回(1,1,1).但是,如果我这样运行:

val it = List(1,1,1,2,2,3,3).iterator.buffered
it.takeWhile(_ == it.head).toList
Run Code Online (Sandbox Code Playgroud)

我得到(1,1).为什么会这样?是否head在通话时评估,takeWhile结果应该相同?

iterator scala

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

分布式缓存 - 基本概念

我试图了解分布式缓存的基本概念及其用法.

首先,分布式缓存是一组机器,它们一起充当所有客户端的大缓存,还是客户端保留其本地缓存,一个协调器只是向所有客户端发送更新,说明如何同步其LOCAL副本?

其次,如果缓存是维护缓存数据的分布式机器集,为什么我们不直接向DB发送查询,而是通过网络将请求发送到缓存?我猜性能开销可能类似......

最后,分布式缓存的主要好处是什么,即为什么人们不坚持使用传统的本地缓存模型?

非常感谢您提供的所有答案/资源.

caching distributed-computing

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

intellij - 清理代码

我想知道intellij是否有一个功能,允许它扫描文件并执行诸如组织导入,安全删除未使用的函数和字段等内容.此功能在Resharper插件中的.NET中非常有用.谢谢你的任何指示.

java intellij-idea

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

java vs scala - 在单独的线程上读取文件

我想知道在行业实践方面最好的方法是使用多线程方法读取文件.在Java中,我会做以下几种:

class Reader {  Result readFile(File file, Listener callback) }
class Listener { void process(Result r) }
Run Code Online (Sandbox Code Playgroud)

Reader会生成另一个线程来生成结果,然后Listener使用工作线程回调from.这会是一个好方法吗?这将如何转化为Scala,它可能还有其他更好的机制来实现这一目标?

java io concurrency multithreading scala

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

Java - 一次双加/减的最大精度损失

是否有可能建立甚至粗略地说明在处理doublejava中的两个值(加/减)时最大精度损失是多少?可能最坏的情况是两个数字无法准确表示,然后对它们执行操作,这导致一个也无法准确表示的值.

java double double-precision floating-point-precision

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

ScalaTest - 编写自定义匹配器

我在为NodeSeq编写自定义匹配器时遇到了问题:

private def matchXML(expected: NodeSeq) = new Matcher[NodeSeq] {
  def apply(left: NodeSeq): MatchResult = MatchResult(left xml_== expected,
    "XML structure was not the same (watch spaces in tag texts)",
    "XML messages were equal")
}
Run Code Online (Sandbox Code Playgroud)

这个编译,但下面的代码:

val expected : NodeSeq = ...
val xml : NodeSeq = ... 
xml should matchXML(expected)
Run Code Online (Sandbox Code Playgroud)

原因:

error: overloaded method value should with alternatives:
(beWord: XMLStripDecoratorTests.this.BeWord)XMLStripDecoratorTests.this.ResultOfBeWordForAnyRef[scala.collection.GenSeq[scala.xml.Node]] <and>
(notWord: XMLStripDecoratorTests.this.NotWord)XMLStripDecoratorTests.this.ResultOfNotWordForAnyRef[scala.collection.GenSeq[scala.xml.Node]] <and>
(haveWord: XMLStripDecoratorTests.this.HaveWord)XMLStripDecoratorTests.this.ResultOfHaveWordForSeq[scala.xml.Node] <and>
(rightMatcher: org.scalatest.matchers.Matcher[scala.collection.GenSeq[scala.xml.Node]])Unit
cannot be applied to (org.scalatest.matchers.Matcher[scala.xml.NodeSeq])
xml should (matchXML(expected))
Run Code Online (Sandbox Code Playgroud)

这意味着什么?

testing scala matcher scalatest

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

Spring事务TransactionSynchronizationManager:isActualTransactionActive vs isSynchronizationActive

我对Spring中的事务资源管理有点困惑.也就是说,我对TransactionSynchronizationManager.isActualTransactionActive和的使用感到困惑TransactionSynchronizationManager.isSynchronizationActive.

到目前为止,可能是错误的,我假设isSynchronizationActive已经使用(也在Spring代码库中)来确定是否存在由其发起的活动事务TransactionSynchronizationManager.initSynchronization().就我而言,当我们暂停交易时,实际isSynchronizationActive仍然是真的!因此,我认为建立正在运行的交易的正确方法是使用isActualTransactionActive,正确吗?

如果是这种情况,isSynchronizationActive方法的实际意义是什么?我理解它会告诉你是否可以添加同步,但我对它告诉我们有关交易的内容有点迷失...

spring synchronization transactions

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

比较和交换x86 - 为什么它是一个完整的屏障?

根据这个问题的答案,似乎x86上的LOCK CMPXCHG实际上会导致完全屏障.据推测,这也是Unsafe.compareAndSwapInt()引擎盖下产生的.我很难理解为什么会这样:使用MESI协议,在更新缓存行之后,CPU是否只会使其他内核上的缓存行无效,而不是耗尽执行CAS的核心的所有存储/加载缓冲区?似乎对我很浪费......

java multithreading atomic memory-barriers compare-and-swap

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