是否有Java守护程序的部署平台?我们有用于Web应用程序部署的glassfish,geronimo等,但是如果我有简单的基于Spring的应用程序,它正在处理来自ActiveMQ的消息或类似的东西.我应该在哪里部署?
我发现checkNotNull()番石榴中的前提条件没有标注@Nonull注释是不方便的.考虑以下示例:
State(Set<Model> models, Set<Variation> variations) {
this.models = checkNotNull(models);
this.variations = checkNotNull(variations);
if (this.variations == null) {
throw new IllegalArgumentException();
}
this.engine = createEngine();
}
Run Code Online (Sandbox Code Playgroud)
因此IDE无法发现variations == null总是错误的.是否有任何特殊原因可以解释为什么没有标记此前提条件@Nonull(即使它的参数是使用定义的@Nullable).
假设有以下两个计数器实现:
class Counter {
private final AtomicInteger atomic = new AtomicInteger(0);
private int i = 0;
public void incrementAtomic() {
atomic.incrementAndGet();
}
public synchronized void increment() {
i++;
}
}
Run Code Online (Sandbox Code Playgroud)
乍一看,原子应该更快,更具可扩展性.我相信他们是.但它们总是比synchronized阻挡更快吗?或者这个规则被破坏时存在某些情况(例如SMP /单CPU机器,不同的CPU ISA,操作系统等)?
我有一个非常简单的maven描述符,它定义了一些属性:
<?xml version="1.0"?>
<project
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd"
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<properties>
<it.port>8080</it.port>
</properties>
</project>
Run Code Online (Sandbox Code Playgroud)
我可以it.port用命令覆盖属性:
$ mvn -Dit.port=8181 verify
Run Code Online (Sandbox Code Playgroud)
但是以下命令不能按预期工作:
$ MAVEN_OPTS="-Dit.port=8181" mvn verify
Run Code Online (Sandbox Code Playgroud)
这将系统变量传递给JVM,但是maven拒绝覆盖此属性和给test(8080)的默认值.原始问题是TeamCity(out CI服务器)将系统变量传递给JVM MAVEN_OPTS,因此属性覆盖不起作用.
我可以用MAVEN_OPTS环境变量覆盖maven属性吗?
我可以使用SSR(结构搜索和替换)在我的项目中轻松找到所有提及的注释.例如,我有以下基于弹簧的代码:
class DashboardController {
@RequestMapping("/dashboard")
public void doDashboard() {
[...]
}
}
Run Code Online (Sandbox Code Playgroud)
如果我按模式搜索,org.springframework.web.bind.annotation.RequestMapping我会找到我的代码.但是,如果我想找到使用参数化注释注释的方法,那么如果只查找带有@RequestMapping"/ dashboard"url 注释的方法呢?
我可以简单地按@RequestMapping("/dashboard")字符串搜索,但注释可以用几种方式编写:
@RequestMapping("/dashboard")
@RequestMapping(value = "/dashboard", method = {RequestMethod.POST})
@RequestMapping(headers = "content-type=application/*", value = "/dashboard")
Run Code Online (Sandbox Code Playgroud)
等等
假设我有以下代码
package memoryleak;
public class MemoryLeak {
public static int size;
static {
size = (int) (Runtime.getRuntime().maxMemory()*0.6);
}
public static void main(String[] args) throws InterruptedException {
{
byte[] data1 = new byte[size];
}
byte[] data2 = new byte[size];
}
}
Run Code Online (Sandbox Code Playgroud)
此代码生成OutOfMemoryError.您可以使用一个变量分配使这个代码工作(它重写第一个数组使用的堆栈帧,并使make数组可用于垃圾收集).这个难题在这里解释.
{
byte[] data1 = new byte[size];
}
int i = 0;
byte[] data2 = new byte[size];
Run Code Online (Sandbox Code Playgroud)
问题是:为什么以下代码仍然不起作用?
Object o = new Object();
synchronized (o) {
byte[] data1 = new byte[size];
}
int i = 0;
byte[] data2 …Run Code Online (Sandbox Code Playgroud) 有趣的事我发现abount mysql.MySQL有一个3字节的数字类型 - MEDIUMINT.它的范围从-8388608到8388607.我觉得很奇怪.选择数字类型的大小以获得更好的性能,我认为数据应该与机器字或双字对齐.如果我们需要一些数值范围的限制规则,它必须是相对于数据类型的外部.例如:
CREATE TABLE ... (
id INT RANGE(0, 500) PRIMARY KEY
)
Run Code Online (Sandbox Code Playgroud)
那么,有谁知道为什么3个字节?有什么缘故吗?
java ×5
annotations ×1
concurrency ×1
daemon ×1
deployment ×1
guava ×1
maven-2 ×1
mysql ×1
teamcity ×1
types ×1