小编Den*_*nov的帖子

Java守护程序部署基础结构

是否有Java守护程序的部署平台?我们有用于Web应用程序部署的glassfish,geronimo等,但是如果我有简单的基于Spring的应用程序,它正在处理来自ActiveMQ的消息或类似的东西.我应该在哪里部署?

java deployment daemon

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

为什么checkNotNull()没有使用@Nonnull注释

我发现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).

java guava

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

同步块可以比Atomics更快吗?

假设有以下两个计数器实现:

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,操作系统等)?

java concurrency java.util.concurrent

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

Maven属性重载

我有一个非常简单的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属性吗?

teamcity maven-2 system-properties

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

在IntelliJ IDEA中查找注释

我可以使用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)

等等

java annotations intellij-idea structural-search

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

Java记忆难题

假设我有以下代码

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)

java memory-management

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

mysql中的3字节数字的含义(MEDIUMINT)

有趣的事我发现abount mysql.MySQL有一个3字节的数字类型 - MEDIUMINT.它的范围从-8388608到8388607.我觉得很奇怪.选择数字类型的大小以获得更好的性能,我认为数据应该与机器字或双字对齐.如果我们需要一些数值范围的限制规则,它必须是相对于数据类型的外部.例如:

CREATE TABLE ... (
  id INT RANGE(0, 500) PRIMARY KEY
)
Run Code Online (Sandbox Code Playgroud)

那么,有谁知道为什么3个字节?有什么缘故吗?

mysql types

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