小编No *_* QA的帖子

Java中的并发对象创建

我正在读Brian Goetz的一本书"实践中的Java并发".第3.5和3.5.1段包含我无法理解的陈述.

请考虑以下代码:

public class Holder {
  private int value;
    public Holder(int value) { 
    this.value = value;
  }

  public void assertValue() {
    if (value != value) throw new AssertionError("Magic");
  }
}

class HolderContainer {
  // Unsafe publication
  public Holder holder;

  public void init() {
    holder = new Holder(42);  
  }
}
Run Code Online (Sandbox Code Playgroud)

作者说:

  1. 在Java中,Object构造函数首先在子类构造函数运行之前将默认值写入所有字段.
  2. 因此,可以将字段默认值视为过时值.
  3. 线程可能在第一次读取字段时看到陈旧值,然后在下次读取更新的值,这就是assertN可以抛出AssertionError的原因.

因此,根据文本,有些不幸的时机可能值= 0; 在下一刻,值= 42.

我同意第1点,Object构造函数首先使用默认值填充字段.但我不明白第2和第3点.

让我们更新作者代码并考虑以下示例:

public class Holder {
  int value;

  public Holder(int value) {
    //Sleep to prevent constructor to finish too early
    try { …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading object safe-publication

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

实现双向图搜索

我正在尝试实现双向图搜索.据我所知,我应该以某种方式合并两个广度优先搜索,一个从起始(或根)节点开始,另一个从目标(或结束)节点开始.当广度优先搜索在同一顶点"相遇"时,双向搜索终止.

您能否为我提供代码示例(如果可能,使用Java)或链接代码以进行双向图搜索?

java search artificial-intelligence graph bidirectional-search

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

复杂度为 O(N) 的字符串的哈希函数

例如,我们有一个字符串:“abc”。是否可以创建一个哈希函数(复杂度为 O(N),其中 N 是字符串长度),它将执行以下操作:对于字符串“abc”的所有排列,它将返回相同的结果。

例如:

hash("abc") returns SC0wA //just an example value, not a real hash key
hash("bac") returns SC0wA
...
hash("cba") returns SC0wA
Run Code Online (Sandbox Code Playgroud)

但对于“bba”,它将是:

hash("bba") return GD1z
hash("bab") return GD1z
Run Code Online (Sandbox Code Playgroud)

更新:

哈希函数不应该对整个字母表有任何冲突

algorithm hash computer-science hashcode

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

为什么所有现代 x86 掩码都会将计数移至 CL 中的 5 个低位

我正在深入研究 x86 ASM 中的左移和右移操作,例如shl eax, cl

\n\n

来自 IA-32 英特尔架构软件开发人员\xe2\x80\x99s 手册 3

\n\n
\n

所有 IA-32\n 处理器(从 Intel 286 处理器开始)都会将移位计数屏蔽为 5 位,从而导致最大计数为 31。此屏蔽在所有操作模式\n 中完成(包括虚拟 8086模式)以减少指令的最大执行时间。

\n
\n\n

我试图理解这个逻辑背后的原因。也许它以这种方式工作是因为在硬件级别上很难使用 1 个周期实现寄存器中所有 32(或 64)位的移位?

\n\n

任何详细的解释都会有很大帮助!

\n

x86 assembly bit-shift cpu-architecture cpu-registers

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