小编Вит*_*вич的帖子

最好的java twitter库?

twitter API站点列出了3个java twitter库.

你认识其他人吗?您在支持,易用性,稳定性,社区等方面有哪些经验?

java twitter

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

Oracle:如何在时间戳上添加分钟?

我需要在Oracle日期列中添加30分钟的值.我通过指定在SELECT语句中执行此操作

to_char(date_and_time + (.000694 * 31)

这在大多数时候都很好.但是当时间在AM/PM边界时.例如,向12:30[PM] 添加30分钟将返回1:00AM.我期待的答案是13:00.这样做的正确方法是什么?

oracle timestamp date date-arithmetic

36
推荐指数
5
解决办法
23万
查看次数

在Java中重载和多次调度

我有一个集合(或列表或数组列表),我想在其中放置String值和double值.我决定使它成为一个对象集合并使用重载ond多态,但我做错了.

我做了一点测试:

public class OOP {
    void prova(Object o){
        System.out.println("object");
    }

    void prova(Integer i){
    System.out.println("integer");
    }

    void prova(String s){
        System.out.println("string");
    }

    void test(){
        Object o = new String("  ");
        this.prova(o); // Prints 'object'!!! Why?!?!?
    }

    public static void main(String[] args) {
        OOP oop = new OOP();
        oop.test(); // Prints 'object'!!! Why?!?!?
    }
}
Run Code Online (Sandbox Code Playgroud)

在测试中,似乎参数类型是在编译时而不是在运行时决定的.这是为什么?

这个问题与以下内容有关:

多态性与重写与重载
尝试尽可能简单地描述多态性

编辑:

好的,要调用的方法是在编译时决定的.是否有解决方法以避免使用instanceof运营商?

java oop polymorphism overloading

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

powermock mocking构造函数通过whennew()不能与匿名类一起使用

我有一个DummyResource类和一个DummyTarget文件,以及一个测试类TestDummyResource,如下所示,但是DummyResource dr = mock(DummyResource.class)当我在普通类中调用构造函数时,模拟对象才起作用,当它在匿名类中调用时,它调用实际的构造函数而不是使用被模拟的对象.

版本:

powermock 1.4.12 mockito 1.9.0 junit 4.8.2

DummyTarget.java:

import java.io.IOException;
import java.io.OutputStream;

import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.StreamingOutput;


public class DummyTarget {
    public StreamingOutput testMocking() {
        return new StreamingOutput() {
            @Override
            public void write(OutputStream arg0) throws IOException, WebApplicationException {
                new DummyResource();
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

DummyResource.java:

package com.smin.dummy;

public class DummyResource {
    public DummyResource() {
        System.out.println("mock failure");
    }
}
Run Code Online (Sandbox Code Playgroud)

TestDummyResource.java:

package com.smin.dummy;

import static org.mockito.Mockito.mock;

import java.io.IOException;

import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.StreamingOutput;

import org.junit.Before;
import org.junit.Test;
import …
Run Code Online (Sandbox Code Playgroud)

java junit mockito powermock

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

从Java写入HDFS,"只能复制到0个节点而不是minReplication"

我已经下载并启动了Cloudera的Hadoop Demo VM for CDH4(运行Hadoop 2.0.0).我正在尝试编写一个将从我的Windows 7机器运行的Java程序(与运行VM的机器/操作系统相同).我有一个示例程序,如:

public static void main(String[] args) {
    try{
        Configuration conf = new Configuration();
        conf.addResource("config.xml");
        FileSystem fs = FileSystem.get(conf);
        FSDataOutputStream fdos=fs.create(new Path("/testing/file01.txt"), true);
        fdos.writeBytes("Test text for the txt file");
        fdos.flush();
        fdos.close();
        fs.close();
    }catch(Exception e){
        e.printStackTrace();
    }

}
Run Code Online (Sandbox Code Playgroud)

我的config.xml文件只定义了属性:fs.default.name = hdfs:// CDH4_IP:8020.

当我运行它时,我得到以下异常:

org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /testing/file01.txt could only be replicated to 0 nodes instead of minReplication (=1).  There are 1 datanode(s) running and 1 node(s) are excluded in this operation.
    at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1322)
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2170)
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:471) …
Run Code Online (Sandbox Code Playgroud)

java hadoop hdfs

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

使用系统文件分隔符符分割文件名

我有一个完整的文件路径,我想获取文件名.

我使用以下说明:

String[] splittedFileName = fileName.split(System.getProperty("file.separator"));
String simpleFileName = splittedFileName[splittedFileName.length-1];
Run Code Online (Sandbox Code Playgroud)

但是在Windows上它给出了:

java.util.regex.PatternSyntaxException: Unexpected internal error near index 1
\
 ^
Run Code Online (Sandbox Code Playgroud)

我可以避免这种例外吗?有一个更好的方法吗?

java regex windows file-io

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

使用Spark列出Hadoop HDFS目录中的所有文件?

我想循环遍历Hadoop目录中的所有文本文件,并计算单词"error"的所有出现次数.有没有办法hadoop fs -ls /users/ubuntu/用Apache Spark Scala API列出目录中的所有文件?

从给定的第一个示例中,spark上下文似乎只能通过以下方式单独访问文件:

val file = spark.textFile("hdfs://target_load_file.txt")
Run Code Online (Sandbox Code Playgroud)

在我的问题中,我不知道预先在HDFS文件夹中有多少文件名.看了一下spark上下文文档,却找不到这种功能.

hadoop scala apache-spark

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

Mockito:如何替换被测试类调用的类方法?

不幸的是,Mockito文档缺乏详尽的信息,很难找到如何创建以下设置的正确方法.

我有一个应该测试的类"ResourceManager".该类实例化另一个类"JerseyClient",它有一个名为"get"的方法.我希望"ResourceManager" 不要调用真正的"JerseyClient",而是从它调用mock(或stub?)(我已经不清楚Mockito上下文中模拟和存根或模拟和间谍之间的区别).

我的尝试是@Mock(或@Spy?)JerseyClient,或者至少有一种方法:

@RunWith(MockitoJUnitRunner.class)
public class ResourceManagerTest
{
    @Mock
    private JerseyClient jerseyClient;


    @Test
    public void testResultHandling() throws JsonGenerationException, JsonMappingException, IOException, ResourceException
    {
        TestEntity testEntity = new TestEntity();
        ResourceManager resourceManager = new ResourceManager();

        testEntity.setGet(true);
        testEntity.setTestAttribute("1stTest");

        when(jerseyClient.get(anyString())).thenReturn("{\"get\":true,\"testAttribute\":\"2ndTest\",\"message\":\"success\"}");

//      doReturn("{\"get\":true,\"testAttribute\":\"2ndTest\",\"message\":\"success\"}").when(jerseyClient).get(anyString());

        TestEntity result = (TestEntity)resourceManager.execute(testEntity, TestEntity.class);

        assertThat(result, is(notNullValue()));
        assertThat(result.getMessage(), is("success"));
        assertThat(result.getTestAttribute(), is("2ndTest"));
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我尝试模拟jerseyClient.get()方法以返回预定义的JSON字符串:

when(jerseyClient.get(anyString())).thenReturn("{\"get\":true,\"testAttribute\":\"2ndTest\",\"message\":\"success\"}");
Run Code Online (Sandbox Code Playgroud)

要么

doReturn("{\"get\":true,\"testAttribute\":\"2ndTest\",\"message\":\"success\"}").when(jerseyClient).get(anyString());
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用.这意味着调用了真正的JerseyClient.get方法,因为它尝试使用真正的JerseyClient发出HTTP请求.

解决方案是什么,我想在这做什么?它是在监视一个真实的对象还是嘲笑一个我想要模拟它的方法的对象,什么时候可以替换方法,只能在模拟上或只在间谍上?

java junit mocking mockito

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

Spring数据替代品

目前我们有一个适用于spring和JPA的企业应用程序.今天我们正在计划下一代服务器.

我们正在讨论是否在项目中使用弹簧数据?它似乎提高了生产力和开发时间.

是否有任何替代弹簧数据的选择?为什么不单独使用spring和JPA?你有什么建议?

请记住,我们开始从头开始开发,因此除了以下方面之外没有任何限制:

  1. 我们使用mysql和mongoDB
  2. 我们用java编写代码
  3. 我们将在GWT中开发客户端代码.

目前我们有分层架构.我们有一个服务层和一个管理层,它负责持久化和业务逻辑.无论谁建造,都没有看到插入第三个DAO层的充分理由.

spring dao spring-data spring-data-jpa

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

从头开始实施自定义凝聚算法

我知道凝聚聚类算法,它以每个数据点作为单个聚类开始然后将点组合成聚类的方式.

现在,我有一个n维空间和几个数据点,每个维度都有值.我想根据业务规则聚类两个点/集群,如:

  • 如果跨越维度1的集群之间的距离<T1,则集群两个点c1和c2,并且跨越维度2的距离<T2,......和跨越维度的距离n <Tn.
  • 如果满足维度1的规则并且满足维度2的规则,则集群它们而不必担心其他维度...

....和类似的自定义规则.

另外,我有自己的方法来定义和测量任何特定维度中任意两个聚类之间的距离.维度可能只是字符串,我想定义自己的字符串距离度量.在另一个维度中,它可以包含位置的名称,并且沿着该维度的两个点之间的距离是命名的位置之间的地理距离,对于其他维度也是如此.

是否有框架/软件可以让我实现这种定义自定义距离指标的方式,然后实施凝聚聚类?当然,当在任何时间点都不满足业务规则时,凝聚聚类停止,并且我们在最后的n维空间中形成聚类.

谢谢Abhishek S.

java algorithm math frameworks cluster-analysis

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