小编Jan*_*cek的帖子

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

更改运行netbeans的java平台

我使用的是Netbeans 6.7.我在安装Netbeans之前首先安装了Java 1.5.当我安装Netbeans时,它将Java 1.5作为默认版本.然后我在我的机器上安装了Java 1.6.我需要将netbeans的默认JDK更改为1.6,不仅是特定项目,还要更改为整个Netbeans应用程序.

java netbeans

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

可视化免费Monad

我想我已经大致了解了免费monad是什么,但我想有一个更好的方式来形象化它.

有意义的是,自由岩浆只是二叉树,因为它可以像你一样"一般"而不会丢失任何信息.

同样,有意义的是,免费幺半群只是列表,因为操作顺序无关紧要.现在在"二叉树"中存在冗余,因此如果有意义的话,您可以将其展平.

有意义的是,自由群体看起来像分形,出于类似的原因:https://en.wikipedia.org/wiki/Cayley_graph#/media/File: Cayley_graph_of_F2.svg 并且为了得到其他群体,我们只是识别不同的元素该群体是"相同的",我们得到其他群体.

我应该如何形象化免费的monad?现在,我只是把它想象成你能想象的最通用的抽象语法树.这本质上是吗?还是我过度简化了?

同样,从免费monad到列表或其他monad,我们会失去什么?我们认为什么是"相同"?

我感谢所有能够阐明这一点的评论.谢谢!

monads haskell free-monad

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

信号量如何工作?

信号量可以低于0吗?我的意思是,说我有一个N = 3的信号量,我称之为"向下"4次,然后N将保持为0,但是一个进程将被阻止?

而另一方面,如果在一开始我打电话,N可以高于3吗?因为正如我所看到的那样,如果在开始时N可以高于3,我会调用几次,然后我可以调用更多次,因此在关键部分放入更多进程然后信号量允许我.

如果有人为我澄清一点,我会非常感激.

格雷格

java multithreading computer-science semaphore

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

信号量和同步

我无法从javadocs中的信号量描述中理解以下内容.

请注意,调用acquire()时不会保持同步锁定,因为这会阻止项目返回到池中.信号量封装了限制访问池所需的同步,与维护池本身一致性所需的任何同步分开.

有人可以帮助我理解这个及其含义.

java multithreading semaphore

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

把JButton放在右下角

我需要在一个空的JPanel的右下角放一个按钮

 +-----------------------------------+
 |                                   |
 |                                   |
 |                                   |
 |                                   |
 |                                   |
 |                                   |
 |                                   |
 |                                   |
 |                      +-----------+|
 |                      | Click Me! ||
 |                      +-----------+|
 +-----------------------------------+
Run Code Online (Sandbox Code Playgroud)

我怎么做?它应该很容易吗?我想找到正确的布局管理器,而不是使用一系列嵌套面板.

JPanel panel = new JPanel();
panel.setLayout(new SomeKindOfLayoutManagerThatDoesThis());
panel.add(new JButton("Click Me!"), SETTINGS);
Run Code Online (Sandbox Code Playgroud)

java swing jbutton

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

在Java中增加信号量允许

我可以在Java中为信号量添加更多许可吗?

Semaphore s = new Semaphore(3);
Run Code Online (Sandbox Code Playgroud)

在代码中的某个地方之后,我想将许可证更改为4.这可能吗?

java concurrency multithreading semaphore

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

信号量僵局

所以我使用信号量时遇到了问题.编写一个代码,其中有4个房间和一些访客.每个房间都有一定的上限,可以容纳他们可以容纳的游客数量.因此,进入一个完整的房间将触发wait().访客在进入另一个房间之前不得离开房间,因此他们总是在一个房间里.

public class Semaphore {

  private int placesLeft;

  public Semaphore(int placesInRoom) {
    this.placesLeft = placesInRoom;
  }

  public synchronized void acquire(Visitor visitor) {
    Semaphore sem = visitor.getRoom().getSemaphore();

    try {
      while (placesLeft <= 0) {
        this.wait();
    }

  } catch (InterruptedException e) {}

  sem.release();
  placesLeft--;
}

public synchronized void release() {
  placesLeft++;
  this.notifyAll();
}
Run Code Online (Sandbox Code Playgroud)

当2个人试图进入彼此的房间时出现死锁.也出于某种原因,placesLeft计数不正确.

所以我该怎么做?

编辑:

忙于其他事情,重新回答这个问题.由于房间满了,问题不会发生,当来自room1的person1想要进入room2并且同时来自room2的person2想要进入room1时,会发生锁定.因为我明白它可能与同步有关吗?它们在发布之前就会卡住,因此不会调用release.据我所知,一个房间的准确和释放不能同时调用.所以基本上room1信号量释放不能被称为cuz同时调用accuire,对于room2也是如此?我是新手编码器,同步还不是那么清楚.从一个或另一个删除同步似乎不起作用(也是错误的).

java multithreading deadlock semaphore

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

是否可以调试Turtle脚本(相当于bash中的"-x"标志)?

我最近开始使用Haskell Turtle库来替换我的一些shell脚本.

有没有办法set -x在bash脚本中以某种方式启用内置Turtle命令(如cd)ala的回声?我发现在执行许多命令并且其中一个命令因异常而失败(如cp命令Exception:openBinaryFile: does not exist)时调试Turtle脚本是很有问题的.或者,您是否有一些建议如何快速隔离这些问题,以便我不必puStrLn/echo在整个脚本中插入命令?

haskell haskell-turtle

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

如何编写简单的公平信号量?

我发现信号量的简单实现(我的CustomSemaphore),据我所知这是'不公平',因为进入安全块只能一次输入第一个线程(我不确定).如何编写公平的信号量(并发模拟new Semaphore(1, true);)

   public class SimpleSemaphoreSample2 {
    CustomSemaphore cSem = new CustomSemaphore(1);

    public static void main(String[] args) {
        SimpleSemaphoreSample2 main = new SimpleSemaphoreSample2();
        Semaphore sem = new Semaphore(1, true);
        Thread thrdA = new Thread(main.new SyncOutput(sem, "Thread1"), "Thread1");
        Thread thrdB = new Thread(main.new SyncOutput(sem, "Thread2"), "Thread2");

        thrdA.start();
        thrdB.start();

        try {
            thrdB.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("END");
    }

    class SyncOutput implements Runnable {
        private Semaphore sem;
        private String msg;

        public SyncOutput(Semaphore s, String m) {
            sem = …
Run Code Online (Sandbox Code Playgroud)

java concurrency semaphore

6
推荐指数
2
解决办法
6684
查看次数