小编Die*_*o D的帖子

获得通用类型的"真实"类

如何获得泛型类型的"真实"类?

例如:

public class MyClass<T> {
    public void method(){
        //something

        System.out.println(T.class) //causes a compile error, I wont the class name

        //something
    }
}
Run Code Online (Sandbox Code Playgroud)

如果T =整数

输出:

java.lang.Integer
Run Code Online (Sandbox Code Playgroud)

如果T = String

输出:

java.lang.String
Run Code Online (Sandbox Code Playgroud)

谢谢

java generics

14
推荐指数
2
解决办法
2万
查看次数

从外部API播放模型对象

我是Play 2 Framework v.2.1.1中的新用Java和我正在寻找最好的方法来执行以下操作而不重复代码.

为了简化,我有一个使用外部API的Play 2后台.我不管理这个API,但我调用REST服务来执行api上的操作.

此API的对象与Play 2模型对象完全相同.但我不想复制api对象来添加Play验证和其他注释.

有没有办法使用配置文件添加此类行为?我正在考虑像Hibernate hbm这样的东西.

例如:

非托管api中的对象:(为简单起见,我省略了getter和setter)

public class Entity{
    public String field1;
    public String field2;
}
Run Code Online (Sandbox Code Playgroud)

我想避免的对象:(为简单起见,我省略了getter和setter)

public class Entity1{

    @Required
    @NonEmpty
    @MinLength(3)
    public String field1;

    @Required
    @NonEmpty
    public String field2;
}
Run Code Online (Sandbox Code Playgroud)

配置示例:(我需要这样的东西)

<class name="Entity1">
    <property name="field1" >
        <required/>
        <nonEmpty/>
        <minLength value="3"/>
    </property>
    <property name="field2" >
        <required/>
        <nonEmpty/>
    </property>
</class>
Run Code Online (Sandbox Code Playgroud)

使用注释似乎比使用xmls或任何其他配置文件更好,所以我不一定要使用配置文件,我愿意接受任何解决此问题的建议.

谢谢

java configuration-files playframework playframework-2.1

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

如何在Vaadin 8中添加验证器?

在Vaadin 7中有一个addValidator函数,但在Vaadin 8中它不存在.

Vaadin 7示例:

   TextField user = new TextField("User:");
   user.setRequired(true);
   user.setInputPrompt("Your username");
   user.addValidator(new NullValidator("Username can't be empty", false));
   user.setInvalidAllowed(false);
Run Code Online (Sandbox Code Playgroud)

java vaadin vaadin8

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

Eclipse中的Maven依赖项错误

我有一个战争人工制品,我需要从罐子里使用他们的一些类.我无法将类移动到另一个项目,然后使用以下配置将我的webapp中包含的类和资源部署为"附加"工件:

<plugin>
    <artifactId>maven-war-plugin</artifactId>
    <version>2.1.1</version>
    <configuration>
        <attachClasses>true</attachClasses>
    </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

这将导致部署两个工件:mywebapp-1.0-SNAPSHOT.war和mywebapp-1.0-SNAPSHOT-classes.jar.

要使用这些类,我将引用工件,如下所示:

    <dependency>
        <groupId>mygroup</groupId>
        <artifactId>mywebapp</artifactId>
        <version>${project.version}</version>
        <classifier>classes</classifier>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

当我从Jenkins编译时一切正常,但是当我从Eclipse本地运行测试时找不到引用类.(java.lang.NoClassDefFoundError)

我认为它可能是maven eclipse插件中的一个错误,有人有任何想法可以发生吗?

java maven

7
推荐指数
2
解决办法
2273
查看次数

异常的javax.jms.JMSException:对等对象已处置

我的Java JMS有一个不稳定的问题。暂时可以正常工作,但是会异常地引发以下异常并削减执行力。

重要的是要注意,这种情况不会停止经纪人。

javax.jms.JMSException: Peer (vm://test#1) disposed.
        at org.apache.activemq.util.JMSExceptionSupport.create(JMSExceptionSupport.java:49)
        at org.apache.activemq.ActiveMQConnection.onAsyncException(ActiveMQConnection.java:1773)
        at org.apache.activemq.ActiveMQConnection.onException(ActiveMQConnection.java:1790)
        at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:99)
        at org.apache.activemq.transport.ResponseCorrelator.onException(ResponseCorrelator.java:114)
        at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:99)
        at org.apache.activemq.transport.vm.VMTransport.iterate(VMTransport.java:203)
        at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:122)
        at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:43)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:619)
Caused by: org.apache.activemq.transport.TransportDisposedIOException: Peer (vm://test#1) disposed.
Run Code Online (Sandbox Code Playgroud)

java activemq-classic jms

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

Hazelcast Ringbuffer readManyAsync返回空结果

我正在尝试使用readManyAsync从RingBuffer中读取N个项目,但它总是返回一个空的resultSet.如果我使用readOne,我会得到数据.

我正在使用readManyAsync作为文档指定.还有另一种方法吗?

环境:

  • Java 8
  • Hazelcast 3.5.3

例:

Ringbuffer<String> buffer = this.hazelcastInstance.getRingbuffer("testBuffer");
buffer.add("a");
buffer.add("b");
buffer.add("c");
Long sequence = buffer.headSequence();
ICompletableFuture<ReadResultSet<String>> resultSetFuture = buffer.readManyAsync(sequence, 0, 3, null);
ReadResultSet<String> resultSet = resultSetFuture.get();

System.out.println("*** readManyAsync *** readCount: " + resultSet.readCount());
int count = 0;
for (String s : resultSet) {
    System.out.println(count + " - " + s);
    count++;
}

System.out.println("*** readOne ***");
for (int i = 0; i < 3; i++) {
    System.out.println(i + " - " + buffer.readOne(i));
}
Run Code Online (Sandbox Code Playgroud)

输出:

*** readManyAsync …
Run Code Online (Sandbox Code Playgroud)

java hazelcast

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

JAVA中列表上的聚合函数

我有一个Java对象列表,我需要减少它应用聚合函数,如通过数据库选择.

注意:数据是从多个数据库和服务调用计算的.我希望有数千行,每行总是会有相同数量的"单元格".此数量在执行之间变化.

样品:

假设我的数据ListObject[3](List<Object[]>)表示,我的数据可能是:

[{"A", "X", 1},
{"A", "Y", 5},
{"B", "X", 1},
{"B", "X", 2}]
Run Code Online (Sandbox Code Playgroud)

样本1:

SUM索引2,按索引0和1分组

[{"A", "X", 1},
{"A", "Y", 5},
{"B", "X", 3}]
Run Code Online (Sandbox Code Playgroud)

样本2:

MAX超过索引2,按索引0分组

[{"A", "Y", 5},
{"B", "X", 2}]
Run Code Online (Sandbox Code Playgroud)

有人知道一些可以在Java中模拟这种行为的框架或api吗?

我的第一个选择是在NO-SQL数据库(如Couchbase)中插入所有数据,然后应用Map-Reduce,最后得到结果.但是这个解决方案有很大的开销.

我的第二个选择是嵌入一个Groovy脚本,但它也有很大的开销.

java database mapreduce data-processing

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

Couchbase元数据开销警告

我有一个Couchbase(v 2.0.1)群集,其中包含以下规范:

  • 5个节点
  • 1桶
  • 每节点16 GB Ram(总共80GB)
  • 每节点200GB磁盘(总共1Tb)

目前我在这个桶中有201.000.000个文件,只有200GB的磁盘在使用中.

我每分钟都会收到以下警告:

Metadata overhead warning. Over 51% of RAM allocated to bucket "my-bucket" on node "my-node" is taken up by keys and metadata. 
Run Code Online (Sandbox Code Playgroud)

Couchbase文档说明了以下内容:

表示存储桶现在使用超过50%的已分配RAM来存储元数据和密钥,从而减少了可用于数据值的RAM量.

我知道这可能是一个有用的指标,我可能需要将节点添加到我的集群,但我认为这应该是不必要的,因为桶的可用资源量.

一般桶分析: 一般桶分析

我怎么知道是什么产生了如此多的元数据?

有没有办法配置公差百分比?

nosql couchbase

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

来自"in(''或'')的MySQL意外结果"

我正在使用的: Ubuntu 12上的最新MySQL.

设置:假设我有一个表"EmployeePayment",每个员工都有"姓名"和"小时".假设我已经填充了值.

问题: 当我使用命令时

select * from EmployeePayment where Name in ('');
Run Code Online (Sandbox Code Playgroud)

正如我所料,我得到了空集.但是,当我使用时

select * from EmployeePayment where Name in ('' or '');
Run Code Online (Sandbox Code Playgroud)

我得到了整个表格.而且,如果我挑剔并投入命令

select Name, SUM(Hours) from EmployeePayment where Name in ('' or '');
Run Code Online (Sandbox Code Playgroud)

然后它只返回表中的顶级名称.这个"in"命令发生了什么?

mysql sql

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