小编Gan*_*ngX的帖子

lock对同步和使用它作为锁有什么区别?

我知道同步方法和同步块之间的区别,但我不确定同步块部分.

假设我有这个代码

class Test {
  private int x=0;
  private Object lockObject = new Object();

  public void incBlock() {
    synchronized(lockObject) {
      x++;
    }
    System.out.println("x="+x);
  }

  public void incThis() {  // same as synchronized method
    synchronized(this) {
      x++;
    }
    System.out.println("x="+x);
  }
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,使用lockObject和使用作为锁有什么区别?对我来说似乎是一样的..

当您决定使用synchronized块时,如何确定哪个对象是锁?

java concurrency locking synchronized synchronized-block

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

服务器端和胖客户端Web应用程序的文件夹结构

目前我使用Node.js作为后端,并为客户端使用extjs或骨干,现在我对文件夹结构感到困惑.

使用express我的文件夹结构如下

appname
  |--controllers
  |--models
  |  |--appmodel.js
  |--public
  |  |--css
  |  |--js // any client-side javascripts
  |--routes
  |  |--router.js
  |--views
  |  |--appview.ejs
  |--app.js
Run Code Online (Sandbox Code Playgroud)

其中app.js是入口点,它用于router.js处理视图的路由和呈现.如果只是服务器端开发,这可以正常工作.现在,如果我想为客户端使用ExtJS或Backbone,我应该如何组织我的代码?我应该将它添加到public文件夹还是views

appname
  |--controllers
  |  |--extbasedcontroller.js // correct location?
  |--models
  |  |--appmodel.js
  |  |--extbasedmodels.js // correct location?
  |--public
  |  |--css
  |  |--js
  |  |  |--extjs // extjs files
  |--routes
  |  |--router.js
  |--views
  |  |--appview.ejs
  |  |--extbasedview.ejs // correct location?
  |--app.js
Run Code Online (Sandbox Code Playgroud)

如果是这种情况,我应该在哪里放置我的extjs文件的模型?如果我把它放在models文件夹中,感觉就像我将客户端和服务器代码混合在一个文件夹中,这会让人感到困惑......

architecture directory extjs node.js express

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

ExecutorService缓慢多线程性能

我正在尝试执行一个简单的计算(它调用Math.random()10000000次).令人惊讶的是,以简单方法运行它比使用ExecutorService要快得多.

我已经阅读了ExecutorService令人惊讶的性能收支平衡点的另一个主题---经验法则?并尝试通过执行Callable使用批次来遵循答案,但性能仍然很差

如何根据我当前的代码改进性能?

import java.util.*;
import java.util.concurrent.*;

public class MainTest {
    public static void main(String[]args) throws Exception {
        new MainTest().start();;
    }

    final List<Worker> workermulti = new ArrayList<Worker>();
    final List<Worker> workersingle = new ArrayList<Worker>();
    final int count=10000000;

    public void start() throws Exception {
        int n=2;

        workersingle.add(new Worker(1));
        for (int i=0;i<n;i++) {
            // worker will only do count/n job
            workermulti.add(new Worker(n));
        }

        ExecutorService serviceSingle = Executors.newSingleThreadExecutor();
        ExecutorService serviceMulti = Executors.newFixedThreadPool(n);
        long s,e;
        int tests=10; …
Run Code Online (Sandbox Code Playgroud)

java concurrency multithreading executorservice executor

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

如何在git分支上更改作者姓名

前几天,我分支了github项目以创建静态页面,但搞砸了我的作者姓名

https://github.com/ronaldsuwandi/le-simplepage/commits/gh-pages

如何为分支的第一次提交重命名作者?

我试过了

但是没有运气-我对git还是很陌生。

编辑:如果我想更改第一个提交(例如,如果我的提交历史记录是并且我想更改我可以执行的提交历史记录,那么Amber给出的答案将无效)。想更改自身的提交历史。A-B-C-DBgit rebase -i AA

git git-amend branching-and-merging

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