小编sof*_*sof的帖子

调用Java Object的wait()会中断线程同步

public class Main2 {
    public static void main(String[] args) {
        new Test2().start();
        new Test2().start();
    }
}

class Test2 extends Thread {
    @Override
    synchronized public void run() {
        try {
            System.out.println("begin wait");
            wait();
        } catch (Exception ex) {
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

作为运行测试的实际结果:从两个线程开始等待,开始等待,两次.与预期结果相比:开始等待,从两个线程之一只有一次,因为在synchronized run()方法中调用了wait().为什么可以调用Object的wait()中断线程同步?

吃了很多!


    public class Main3 {

    public static void main(String[] args) {
        Test3 t = new Test3();
        new Thread(t).start();
        new Thread(t).start();
    }
}

class Test3 implements Runnable {
    synchronized public void run() {
        try {
            System.out.println("begin wait");
            wait();
        } …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading

5
推荐指数
2
解决办法
4884
查看次数

无法将InputStream对象传递给Java Sound API

它可以与File传递给的对象一起使用AudioSystem#getAudioFileFormat,但是为什么InputStream下面的对象不能通过呢?有什么建议吗?

import java.io.*;
import javax.sound.sampled.*;

public class Test {

    public static void main(String[] args) throws Exception {

        AudioSystem.getAudioFileFormat(new File(
                "myaudio.wav"));
        AudioSystem.getAudioFileFormat(new FileInputStream(
                "myaudio.wav"));

    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

Exception in thread "main" java.io.IOException: mark/reset not supported
    at java.io.InputStream.reset(InputStream.java:330)
    at com.sun.media.sound.WaveFileReader.getAudioFileFormat(WaveFileReader.java:88)
    at javax.sound.sampled.AudioSystem.getAudioFileFormat(AudioSystem.java:985)
    at Test.main(Test.java:10)
Run Code Online (Sandbox Code Playgroud)

@编辑

据答案@René Jeschke@Phil Freihofner并且@Andrew Thompson,无论mark/reset被要求作为强制性protocal为Java Sound API与互动IO stream,恕我直言,类型buffered流,而不是raw一个应该被专门定义为参数的签名传递。这样做将使收窄到更理想的结果,而不是任意接受IO stream然后诉诸IOException为不利指标。

java javasound

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

Eclipse项目资源管理器无法切换​​到工作集上的视图

在选择"项目资源管理器 - >视图菜单 - >顶级元素 - >工作集"之后,Eclipse不会将视图切换projectsworking sets打开project explorer.如果package explorer使用if ,转换工作正常.为什么?

eclipse

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

单独的GWT UIBinder文件

默认情况下使用GWT UIBinder时,会在同一目录下创建一对java源和UI模板文件.

将它们保存在不同的目录中需要什么.例如client/MyApp.java和client/ui/xml/MyApp.ui.xml?

@编辑

下面是基于@jonasr答案的,但注释应该使用file pathUI模板而不是包前缀进行评估.

@UiTemplate("ui/xml/MyApp.ui.xml")
interface MyAppUiBinder extends UiBinder<Widget, MyApp>
{}
Run Code Online (Sandbox Code Playgroud)

gwt uibinder

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

JPA和Hibernate代理行为

我试着在下面观察JPA2/Hibernate4代理行为,

//延迟加载的循环实体:

@Entity
public class Employee {

 @Id@Generated
 int id;
 String name;
 @OneToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
 Employee boss;

 public String toString() {
  return id + "|" + name + "|" + boss;
 }

 //getters and setters ...

}
Run Code Online (Sandbox Code Playgroud)

//坚持实体:

// Outer entity:
Employee employee = new Employee();
employee.setName("engineer");
// Inner entity:
Employee boss = new Employee();
boss.setName("manager");
employee.setBoss(boss);

entityTransaction.begin();
entityManager.persist(employee);
entityTransaction.commit();
System.out.println(employee);
Run Code Online (Sandbox Code Playgroud)

//输出:

Hibernate: insert into Employee (id, boss_id, name) values (default, ?, ?)
Hibernate: insert into Employee …
Run Code Online (Sandbox Code Playgroud)

hibernate jpa jpa-2.0 hibernate-4.x

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

如何定义函数接受curried函数参数?

下面fn2编译失败,

def fn(x: Int)(y: Int) = x + y
def fn2(f: ((Int)(Int)) => Int) = f
fn2(fn)(1)(2) // expected = 3
Run Code Online (Sandbox Code Playgroud)

如何定义fn2接受fn

scala

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

用确定性值替换重复的函数应用程序

f x y z = [n | n <- z, n > x + y]

f 1 2 [3,4]
Run Code Online (Sandbox Code Playgroud)

x + y要在第一只执行一次,这样连续的通话费由所取代value 3呢?GHCHaskell 是否优化了这项工作,FP为我们带来了参考透明度的优点?

如何追踪证明呢?

haskell

4
推荐指数
2
解决办法
93
查看次数

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

React中的单向数据流

Reactunidirectional data flowtwo-way data binding其他框架形成对比的概念,例如Vue.js.

我已经制作了以下片段来感知本质区别,然后似乎unidirectional要求应用程序传播任何状态转换,而two-way传统上为你做.

希望我可能在这里误解了这个要点,你能帮助澄清两人之间根本不同的东西吗?

var MyComponent = React.createClass({
  getInitialState: function () { 
    return {
      one: 'Hello', 
      two: 'world', 
      three: ''
    } 
  },
  handleValueOneChange: function (e) {
    this.setState({one: e.target.value})
  },
  handleValueTwoChange: function (e) {
    this.setState({two: e.target.value})
  },
  render: function () { 
    return (
      <div>
        <h1>
        {this.state.one + ' ' + this.state.two}
        </h1>
        <input value={this.state.one} 
          onChange={this.handleValueOneChange} />
        <input value={this.state.two} 
          onChange={this.handleValueTwoChange} />
      </div>
    )   
  }
})

ReactDOM.render(
  <MyComponent />, document.getElementById('app') …
Run Code Online (Sandbox Code Playgroud)

reactjs vue.js

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

减少后,Python映射的对象变为空

A = map(lambda x: x * 2, [1, 2])
z = reduce(lambda x, y: x + y, A)

print(z, list(A))
# outputs: 6 []
Run Code Online (Sandbox Code Playgroud)

如此混乱以至于规范的map reduceFP操作导致了破坏性的结果。表面之下发生了什么?

python python-3.x

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