我有以下示例,以更好地解释我正在尝试做什么:
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的数组,我不认为这两个例子之间有很大的不同.
我正在尝试理解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开发了一个应用程序,我正在尝试使用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无关的方法呢?
我很难理解Cassandra中的复制因子.在文档中,它说:"群集中的副本总数通常被称为复制因子".另一方面,在同一文档中,它说"NetworkTopologyStrategy允许您指定每个数据中心需要多少个副本".那么,如果我有两个使用NetworkTopologyStrategy的数据中心,复制因子为2意味着我将在每个数据中心拥有2个副本或者在群集中拥有2个副本?
谢谢.
我有一个用 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 不建议这样做。那么,在没有编译器参数的情况下捕获此类异常的正确方法是什么?
我想用枚举参数化一个类,然后在类的构造函数中创建一个具有枚举中元素数量大小的数组.
我创建了这样的类:
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 ×5
cassandra ×2
enums ×1
generics ×1
powermock ×1
soap ×1
split ×1
string ×1
unit-testing ×1
web-services ×1