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?
我@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,因为someBean是null.与二传手注射相同的事情.但是使用构造函数注入@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) 我正在使用 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) 我有连接池的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).
Stack Overflow关于C#中的方法签名有几个问题.几乎所有解决方案都表明返回值和访问级别不是方法签名的一部分.但我在MSDN上发现完全相反的信息.
通过指定访问级别(如public或private),可选修饰符(如abstract或sealed),返回值,方法名称和任何方法参数,在类或结构中声明方法.这些部分一起是该方法的标志.
和
出于方法重载的目的,方法的返回类型不是方法签名的一部分.但是,在确定委托与其指向的方法之间的兼容性时,它是方法签名的一部分.
我糊涂了.真相是什么?