小编Ana*_*001的帖子

Java由一个连续的字符分割

我有以下示例,以更好地解释我正在尝试做什么:

String text = "a,b,,,,c,,";
String[] split = text.split(",");
for(int i=0;i<split.length;i++){
    System.out.println("I = "+i+" "+split[i]);
}
Run Code Online (Sandbox Code Playgroud)

输出是:

I = 0 a

I = 1 b

I = 2 

I = 3 

I = 4 

I = 5 c
Run Code Online (Sandbox Code Playgroud)

但是,我想要的是获得一个大小为8的数组,包含:

I = 6 

I = 7
Run Code Online (Sandbox Code Playgroud)

当然,最后两个元素将是空字符串,但对我来说它是必不可少的.此外,我认为拥有它们是合乎逻辑的.我的意思是,如果我有:

String text = "a,b,,,,c,,d";
Run Code Online (Sandbox Code Playgroud)

结果将是一个大小为8的数组,我不认为这两个例子之间有很大的不同.

java string split

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

Cassandra Datastax驱动程序 - 连接池

我正在尝试理解Datastax Cassandra Driver中的连接池,所以我可以在我的Web服务中更好地使用它.

我有1.0版本的文档.它说:

Java驱动程序异步使用连接,因此可以在同一连接上同时提交多个请求.

他们通过连接了解什么?连接到群集时,我们有:构建器,群集和会话.其中哪一个是连接?

例如,有这个参数:

maxSimultaneousRequestsPerConnection - 在主机的所有连接上同时发出的请求数,然后创建更多连接.

因此,在连接池的情况下,这些连接会自动创建(这是我所期望的).但究竟是什么联系?集群对象?会议?

我正在尝试决定在我的网络服务中保持"静态"的内容.目前,我决定保持Builder静态,因此对于每次调用,我都会创建一个新的Cluster和一个新的Session.这个可以吗?如果群集是连接,那么它应该没问题.但是吗?现在,记录器说,每次通话:

2013:12:06 12:05:50 DEBUG群集:742 - 使用联系点启动新群集

2013:12:06 12:05:50 DEBUG ControlConnection:216 - [控制连接]刷新节点列表和令牌映射

2013:12:06 12:05:50 DEBUG ControlConnection:219 - [控制连接]刷新模式

2013:12:06 12:05:50 DEBUG ControlConnection:147 - [控制连接]成功连接到...

那么,它每次都连接到集群?这不是我想要的,我想重用连接.

那么,连接实际上是Session?如果是这种情况,我应该保持群集静态,而不是构建器.

我应该调用什么方法,以确保尽可能重用连接?

java cassandra datastax-java-driver

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

对于带参数的方法,Powermockito doNothing

我用Java开发了一个应用程序,我正在尝试使用Powermockito创建单元测试(我应该补充一点,我是单元测试的新手).

我有一个名为Resource的类,它有一个名为readResources的静态方法:

public static void readResources(ResourcesElement resourcesElement);
Run Code Online (Sandbox Code Playgroud)

ResourcesElement也由我编码.在测试中,我想创建自己的资源,所以我希望上面的方法什么都不做.我尝试使用此代码:

    PowerMockito.spy(Resource.class);
    PowerMockito.doNothing().when(Resource.class, "readResources", Matchers.any(ResourcesElement.class));
Run Code Online (Sandbox Code Playgroud)

单元测试抛出异常:

org.mockito.exceptions.misusing.UnfinishedStubbingException:此处检测到未完成的存根: - > at org.powermock.api.mockito.internal.PowerMockitoCore.doAnswer(PowerMockitoCore.java:36)

Powermockito还建议我应该使用thenReturn或者之后使用Thhrow,但似乎方法'when'在doNothing之后调用时返回void(这是合乎逻辑的).如果我尝试:

PowerMockito.when(Resource.class, "readResources", Matchers.any(ResourcesElement.class)).....
Run Code Online (Sandbox Code Playgroud)

什么都不是后来的选择.

我设法使用方法的2个参数版本创建没有参数的方法,什么都不做.例如:

PowerMockito.doNothing().when(Moduler.class, "startProcessing");
Run Code Online (Sandbox Code Playgroud)

这工作(startProcessing不接受任何参数).

但是,我怎样才能制定出与Powermockito无关的方法呢?

java unit-testing powermock

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

具有多个数据中心时的Cassandra复制因子

我很难理解Cassandra中的复制因子.在文档中,它说:"群集中的副本总数通常被称为复制因子".另一方面,在同一文档中,它说"NetworkTopologyStrategy允许您指定每个数据中心需要多少个副本".那么,如果我有两个使用NetworkTopologyStrategy的数据中心,复制因子为2意味着我将在每个数据中心拥有2个副本或者在群集中拥有2个副本?

谢谢.

cassandra

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

如何正确捕获ClientTransportException

我有一个用 JAX-WS 编写的 SOAP 客户端。我的代码是这样的:

UpdateSub port = service.getUpdateSub();
port.soapMethod(parameter);
Run Code Online (Sandbox Code Playgroud)

我想要针对与 SOAP 服务器的连接被拒绝或超时的情况提供特定的代码。我测试了这些情况,发现soapMethod 抛出ClientTransportException。ClientTransportException 来自 sun 包,因此如果我导入它以捕获它,编译器会抛出此错误:

包 com.sun.xml.internal.ws.client 不存在

我按照Karmakaze 建议的方式解决了这个问题

据我了解,这只是一种解决方法,Oracle 不建议这样做。那么,在没有编译器参数的情况下捕获此类异常的正确方法是什么?

java soap web-services

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

Enum Generic的Java使用值方法

我想用枚举参数化一个类,然后在类的构造函数中创建一个具有枚举中元素数量大小的数组.

我创建了这样的类:

public class LogLine <T extends Enum<T>> {
Run Code Online (Sandbox Code Playgroud)

然后在构造函数中我尝试写这个:

public LogLine(){
numberOfElementsInEnum = T.values().length;
//then I would create the Array based on the numberOfElementsInEnum variable
Run Code Online (Sandbox Code Playgroud)

它不起作用.编译器没有看到values方法.我尝试用T扩展String而不是Enum.然后可以访问所有静态方法.这是什么问题?

java generics enums

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