小编Vit*_*nko的帖子

更新ConcurrentHashMap中的其他键的后果#computeIfAbsent

Javadoc ConcurrentHashMap#computeIfAbsent

计算应该简短,并且不得尝试更新此映射的任何其他映射.

但是,从我看到的,使用remove()clear()内部方法mappingFunction工作正常.例如这个

Key element = elements.computeIfAbsent(key, e -> {
    if (usages.size() == maxSize) {
        elements.remove(oldest);
    }
    return loader.load(key);
});
Run Code Online (Sandbox Code Playgroud)

在内部使用remove()方法有什么不好的后果mappingFunction

java concurrenthashmap java.util.concurrent

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

在Spring中使用@Inject进行现场注入

@Inject在Spring的工作中有一些奇怪的行为.这个例子效果很好:

@Controller
@RequestMapping("/")
public class HomeController {
    @Autowired
    private SomeBean someBean;

    @RequestMapping(method = GET)
    public String showHome() {
        System.out.println(someBean.method());
        return "home";
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我取代@Autowired@Inject,showHome方法将抛出NullPointerException,因为someBeannull.与二传手注射相同的事情.但是使用构造函数注入@Autowired并且@Inject运行良好.

为什么会这样?

我正在使用Spring 4.3.1.我的依赖关系pom.xml看起来像这样:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>javax</groupId>
        <artifactId>javaee-web-api</artifactId>
        <version>7.0</version>
        <scope>provided</scope>
    </dependency>
<dependencies>
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc jsr330

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

通过作业名称和构建 ID 获取 Jenkins 构建的参数

我正在使用 Jenkins Pipeline 插件,我需要通过其他作业的 id 和作业名称获取特定构建的所有参数。所以,基本上我需要这样的东西。

def job = JobRegistry.getJobByName(jobName)
def build = job.getBuild(buildId)
Map parameters = build.getParameters()
println parameters['SOME_PARAMETER']
Run Code Online (Sandbox Code Playgroud)

jenkins jenkins-pipeline

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

我应该同步DataSource的getConnection()

我有连接池的singelton.

public enum ConnectionPool {
    INSTANCE;

    private DataSource ds = null;

    ConnectionPool() {
      try {
         final Context initCtx = new InitialContext();
         ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/test");
      } catch (NamingException e) {
         e.printStackTrace();
      }
    }

   public Connection getConnection() throws SQLException {
      return ds.getConnection();
   }
}
Run Code Online (Sandbox Code Playgroud)

我应该同步getConnection()以防止从不同的线程获取相同的实例吗?它看起来已经被Tomcat同步了,但我不确定(我使用的是Tomcat 8).

java sql connection-pooling jdbc

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

现在c#中的方法签名是什么?

Stack Overflow关于C#中的方法签名有几个问题.几乎所有解决方案都表明返回值和访问级别不是方法签名的一部分.但我在MSDN上发现完全相反的信息.

通过指定访问级别(如public或private),可选修饰符(如abstract或sealed),返回值,方法名称和任何方法参数,在类或结构中声明方法.这些部分一起是该方法的标志.

出于方法重载的目的,方法的返回类型不是方法签名的一部分.但是,在确定委托与其指向的方法之间的兼容性时,它是方法签名的一部分.

我糊涂了.真相是什么?

c# methods signature

0
推荐指数
2
解决办法
1035
查看次数