小编Loi*_*oic的帖子

Maven:如何在项目生成后从原型中删除一些文件?

我正在创建一个 Maven arechtype,它生成一个带有 java 类的项目。

\n\n

原型有一些自定义属性(archetype-metadata.xml 中的 requiredProperty)\n根据用户的选择,某些文件将是无用的(例如,如果用户不需要数据库,则数据库访问类),所以我想删除它们。

\n\n

生成后是否可以运行清理挂钩脚本?

\n\n

注意:如果不需要的话,在生成过程中不包含这些文件会更好,但我认为不可能声明一些可选文件,对吧?

\n\n

谢谢

\n\n

Lo\xc3\xafc

\n

maven-2

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

播放2:play.libs.WS VS第三方客户端库以进行异步处理

我的Java Play2应用程序正在调用一些外部Web服务来通过同步第三方客户端库获取数据.对于这个应用程序,我需要高流量和可扩展性.

播放文档说:

您的代码可能阻止的情况包括:通过第三方客户端库使用REST/WebService API (即,不使用Play的异步WS API)[...]

请注意,您可能想要将您的阻止代码包装在Futures中.这不会使它成为非阻塞,它只是意味着阻塞将在不同的线程中发生[...]

相反,以下类型的IO不会阻塞: Play WS API,...

在Play2 Java应用程序中,使用promises使事情异步并不是很有用,因为默认的游戏池用于Futur任务.因此,使用大量Futur将导致与仅使用具有大型默认线程池的同步调用相同的事情:在同一池中大致相同数量的线程.

所以我的问题是:

  • 是Java API中的play.libs.WS API真的是异步的(不阻塞播放默认池中的任何线程)?
  • 如果我想要高流量和可扩展性,我应该总是使用它而不是我的第三方客户端库
  • 什么是play.libs.WS API使用的线程池,如果我的应用程序做了很多WS调用,我应该增加它的大小吗?
  • 是否有一种方法可以像play.libs.WS API一样异步,通过在期货中包装第三方同步客户端?

非常感谢

卢瓦克

playframework playframework-2.0

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

播放2个线程池:使用Java默认池VS Akka池

根据文档,使用actor的更简单方法是:

承诺promiseOfInt = Akka.future(new Callable(){public Integer call(){return ...;}});

但该文档还说,使用Java API,它将始终使用相同的线程池(播放默认线程池).

文档说,还有一个演员的Akka池.如何将此actor任务发送到Akka线程池,而不是阻止常见的用户操作?所以我可以调整Akka池并保持默认池小.

谢谢,Loic

akka playframework playframework-2.0

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

Play Framework 2.1:play.libs.WS的性能问题

我有一个Play 2.1 Java Web服务,它调用另一个Web服务.我的服务通过转换其他Web服务的XML响应来提供JSON.

最初,我使用Jersey-Client lib来调用我的第二个服务.由于这是一个阻塞调用,我修改了设置以允许并行500个线程.我用它做了很好的结果,我做了一个加特里拉测试并且速度非常快(在一台远程服务器上处理10 000个请求需要32秒).

然后我决定只使用异步调用来优化I/O. 现在我使用play.libs.WS客户端而不是使用默认线程池参数的jersey阻塞客户端.我使用promises来获取我的结果,但我的其余代码与以前完全相同.

奇怪的是,我的加特林测试(只是一个发送一些http GET请求的循环)的性能已经下降,速度慢了10倍......

我试图增加"默认调度程序"的线程数,但并不是更好.

可能是因为单个线程在WS调用之后处理XML和Json转换?

该应用程序的结构如下:

//controller : 
Promise<Response> = myService.remoteEntities();

return async(promise.map(new Function<Response, Result>() {
        public Result apply(Response response) {
          List<Entity> entities = // ... XPATH and DOM parsing
          return ok(jsonp(callback, toJson(entities)));
        }      
});  
Run Code Online (Sandbox Code Playgroud)

myService.remoteEntities定义如下:

public Promise<List<Entity>> myServiceMethod {
 return WS.url(url.toString()) 
}
Run Code Online (Sandbox Code Playgroud)

注意:myService是一个弹簧服务单例,我的路由/控制器使用带有'@'符号的spring我把它放在一个单独的类中,以便能够使用模拟测试

谢谢,Loïc

注意:我最初在此处发布了我的问题:https://groups.google.com/forum/?fromgroups =#!topic/play-frame/SDpPA6UPyFQ

performance playframework playframework-2.1

5
推荐指数
0
解决办法
552
查看次数

具有泛型类型的Kotlin List上的filterNotNull

这是有效的:

val values: List<String>  = listOf("a", null, "b").filterNotNull()
Run Code Online (Sandbox Code Playgroud)

这不起作用:

fun <A> nonNullValues(values: List<A?>): List<A> = values.filterNotNull()
Run Code Online (Sandbox Code Playgroud)

编译器抱怨泛型类型:

Error:(8, 63) Kotlin: Type parameter bound for T in fun <T : kotlin.Any> kotlin.collections.Iterable<T?>.filterNotNull(): kotlin.collections.List<T>
 is not satisfied: inferred type A is not a subtype of kotlin.Any
Run Code Online (Sandbox Code Playgroud)

这个工作正在:

fun <A: Any> nonNullValues(values: List<A?>): List<A> = values.filterNotNull()
Run Code Online (Sandbox Code Playgroud)

有人可以解释一下为什么我需要告诉编译器A是Any的子类型吗?我认为每种类型都是Any的子类型......

谢谢!

generics kotlin

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

如何在Kotlin中构成nullables

让我们假设你有两个可以归零的功能,你不能编写这两个函数:

fun giveInt(x: Int):Int? = x+1
fun giveInt2(x: Int):Int? = x+2
Run Code Online (Sandbox Code Playgroud)

为了实现这个组合,我写了这个函数:

fun all(x:Int):Int? {
  val y = giveInt(x)
  if (y != null) return giveInt2(y) else return null;
}

val four = all(1)
Run Code Online (Sandbox Code Playgroud)

是否有可能构成2个空的值来获得另一个为空的没有明确的写作if (y != null)和return null?

在Scala我会做的事情如下:

def giveInt(x: Int):Option[Int] = Some(x+1)
def giveInt2(x: Int):Option[Int] = Some(x+2)
def all(x:Int): Option[Int] = giveInt(x).flatMap(giveInt2)
Run Code Online (Sandbox Code Playgroud)

我应该使用java Optional来实现这一点,还是可以使用?运算符?

谢谢 :)

nullable kotlin

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