我偶然发现了一个我不理解的奇怪行为.
我必须将一个String转换为泛型,它会产生一个警告.
Type safety : Unchecked cast from String to T
Run Code Online (Sandbox Code Playgroud)
如果我在@SuppressWarnings("unchecked")上面添加方法声明它可以正常工作.
如果我将它添加到赋值之上,它会在eclipse中产生编译器错误.
这很好用.
@SuppressWarnings("unchecked")
public <T> T search(final String query){
T returnValue = null;
...
if(returnValue instanceof String){
returnValue = (T) collection.getString(attrName);
}
Run Code Online (Sandbox Code Playgroud)
这不行.
public <T> T search(final String query){
T returnValue = null;
...
if(returnValue instanceof String){
@SuppressWarnings("unchecked") // Compiler error: "returnValue cannot be resolved to a type"
returnValue = (T) collection.getString(attrName);
}
Run Code Online (Sandbox Code Playgroud)
有什么想法导致两种抑制警告方法之间的差异?
我有自己的亚马逊ec2微实例(一个VPN服务器)来玩.
问题是,亚马逊会对您在微实例中执行的每个光盘IO收取费用.
该实例运行的是Amazon Linux的CentOS.
我在服务器上的Play 2.0(.2)框架中启动了一个Scala应用程序,我是唯一一个连接到该应用程序的人.
我观察到服务器上每隔几秒就有一些东西提交IO事务,为了缩小它,我安装了一个名为的Linux程序iotop.
这是几秒钟后的输出.
TID PRIO USER DISK READ DISK WRITE SWAPIN IO>
23333 be/4 root 0.00 B/s 11.91 K/s 0.00 % 0.00 %
COMMAND java -Dsbt.ivy.home=/usr/play-2.0.2/framework/../repository -Djava.runtime.name=OpenJDK ~/jars/slf4j-api.jar:/usr/play-2.0.2/repository/local/org.slf4j/jul-to-slf4j/1.6.4/jars/j
Run Code Online (Sandbox Code Playgroud)
来自日志文件的猫
cat /home/ec2-user/socketTest/logs/application.log
2012-07-05 11:43:31,881 - [INFO] - from play in main
Listening for HTTP on port 9000...
Run Code Online (Sandbox Code Playgroud)
因此Play不会向日志文件写入任何内容.
第一个问题,我理解iotop正确,而Play确实是光盘IO小偷.
如果是这样,为什么要玩IO?
我的应用程序是一个简单的websocket示例.本质上,它回输输出.即使您没有通过websockets推送任何内容,也会发生IO.
我正在创建一个Play 2.1应用程序,我决定使用Slick进行数据库交互.
但是,我找不到有关如何为Slick配置/启用日志记录的文档.
谁知道这个?
如何在Play中替换JSON值中的值?
代码说明:
def newReport() = Action(parse.json) { request =>
var json = request.body
if((json \ "customerId").as[Int] == -1){
// replace customerId after some logic to find the new value
}
json.validate[Report](Reports.readsWithoutUser).map {
case _: Report =>
Run Code Online (Sandbox Code Playgroud) 我想声明引发异常并且服务器返回500内部服务器错误.
要突出显示意图,请提供代码段:
thrown.expect(NestedServletException.class);
this.mockMvc.perform(post("/account")
.contentType(MediaType.APPLICATION_JSON)
.content(requestString))
.andExpect(status().isInternalServerError());
Run Code Online (Sandbox Code Playgroud)
当然,无论我写作isInternalServerError还是写作都没关系isOk.无论是否在throw.except语句下方抛出异常,测试都将通过.
你会怎么解决这个问题?
游戏如何验证cookie?
cookie看起来像这样:
PLAY_SESSION = e6443c88da7xxxxxxxxxxxxxxxxxxxxxxxxxxxxx-的userid%3A1
// My logout code
def logout() = Action {
Ok("").withNewSession
}
Run Code Online (Sandbox Code Playgroud)
从文档中
删除整个会话
有一个特殊操作丢弃整个会话:
Ok("Bye").withNewSession
Run Code Online (Sandbox Code Playgroud) 如何告诉Slick创建允许小数的十进制SQL类型?
似乎默认情况下Slick不允许使用下面的代码注意到小数.它decimal(10,0)在MySQL中创建一个具有数据类型的列.
我的Scala代码中有以下模型:
import scala.slick.driver.MySQLDriver.simple._
case class TimeType(id: Option[Int], name: String,
employeeMultiplier: BigDecimal, employerMultiplier: BigDecimal)
object TimeTypes extends Table[TimeType]("timeType") {
def id = column[Int]("id", O.PrimaryKey, O.AutoInc)
def name = column[String]("name")
def employeeMultiplier = column[BigDecimal]("employeeMultiplier")
def employerMultiplier = column[BigDecimal]("employerMultiplier")
def * = id.? ~ name ~ employeeMultiplier ~ employerMultiplier <> (TimeType, TimeType.unapply _)
}
Run Code Online (Sandbox Code Playgroud)
在启动期间,我使用Slick创建此表,除非它已存在此代码
...
lazy val database = Database.forDataSource(DB.getDataSource())
database.withSession {
if (MTable.getTables("timeType").list.isEmpty) {
TimeTypes.ddl.create
...
Run Code Online (Sandbox Code Playgroud) Heroku如何计算slu size尺寸?
我正在做一个简单的Google Web工具包网络应用程序.我使用Spring Roo帮助我处理锅炉代码,它创建了一个小应用程序"费用",与Google IO上显示的应用程序相同.
对于生成的POM.xml文件,我在Heroku的spring mvc教程中添加了<artifactId> jetty-runner </ artifactId>.
现在,当我git push heroku master在终端maven中运行时,开始在Heroku端获取依赖项,[INFO] BUILD SUCCESS然后我得到了然后Heroku拒绝了我的推送.
-----> Push rejected, your compiled slug is 138.0MB (max is 100MB).
See: http://devcenter.heroku.com/articles/slug-size ! Heroku push rejected, slug too large
Run Code Online (Sandbox Code Playgroud)
我生成的war文件在本地创建时最终为31Mb.但目标目录最终会像编译的slug大小一样,所以我添加了一个slugignore文件.
$ cat .slugignore
target/*
!target/*.war
Run Code Online (Sandbox Code Playgroud)
把它推到了Heroku,它仍然把它扔向我 Push rejected, your compiled slug is 138.0MB (max is 100MB).
所以我的问题是Heroku计算它的slu size大小?我已经阅读了他们的文档,但它非常稀疏.
我是一个理解,从Web服务中获取逗号分隔的Id列表.
然后我使用Id List进行新的调用,我的问题是Id List大约是10000个长,每个调用都是一个中等大小的XML文档.
当我同时请求所有10 000个异步时,Web服务端点,或者它可能是Play Framework,并不是很喜欢它,因为我只得到大约500个正确的响应.
一些伪代码突出了意图.
for {
respA <- WS.url(url1).get
id <- respA.body.split(",")
respB <- WS.url(url2 + id).get
} yield ...
Run Code Online (Sandbox Code Playgroud)
我如何将并发请求限制为更可行的?
asynchronous web-services scala playframework playframework-2.0
我想更改某些生成文件的输出目录,在本例中是从XSD-Schema生成的对象.
这是我的构建文件的一部分.
val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA,
settings = Defaults.defaultSettings ++ buildInfoSettings ++ scalaxbSettings
).settings(
sourceGenerators in Compile <+= buildInfo,
buildInfoKeys := Seq[BuildInfoKey](name, version, scalaVersion, sbtVersion),
buildInfoPackage := "hello",
packageName in scalaxb in Compile := "models",
sourceGenerators in Compile <+= scalaxb in Compile
)
Run Code Online (Sandbox Code Playgroud)
此代码将生成的文件放入以下目录:
target/scala-2.10/src_managed/main/models/
Run Code Online (Sandbox Code Playgroud)
如何更改构建文件以将文件输出到下面呢?
/app/models/
Run Code Online (Sandbox Code Playgroud) scala ×7
java ×5
slick ×2
amazon-ec2 ×1
asynchronous ×1
build ×1
cookies ×1
database ×1
eclipse ×1
generics ×1
gwt ×1
heroku ×1
json ×1
junit ×1
linux ×1
logging ×1
maven ×1
sbt ×1
scalaquery ×1
scalaxb ×1
spring ×1
spring-mvc ×1
testing ×1
web-services ×1