我刚刚开始使用Anorm和解析器组合器.似乎有很多样板代码.例如,我有
case class Model(
id:Int,
field1:String,
field2:Int,
// a bunch of fields omitted
)
val ModelParser:RowParser[RegdataStudentClass] = {
int("id") ~
str("field1") ~
int("field2") ~
// a bunch of fields omitted
map {
case id ~ field1 ~ field2 //more omissions
=> Model(id, field1, field2, // still more omissions
)
}
}
Run Code Online (Sandbox Code Playgroud)
在定义整个事物之前,每个数据库字段重复四(!)次.似乎解析器应该能够从case类中半自动推导出来.建议减少此处涉及的工作的任何工具或其他技术?
谢谢你的任何指示.
在我看来,SBT只是在观察文件更改时占用了过多的CPU时间.我知道这篇文章,但作者认为IDE CPU时间与SBT cpu时间相混淆; 我没有运行IDE.
我正在Scala中开发一个Play项目,大约有370个scala文件,分为5个模块.
使用~run运行sbt会占用我的MacBook Pro上大约70-90%的CPU(2012年中).我没有运行IDE,我没有编辑任何文件,没有浏览器访问服务器......根据Activity Monitor,只需使用〜运行(并观察文件系统)占用70-90%的CPU.
看着它闲置了一段时间后我启动了VisualVM; 它显示了自己和另一个JVM进程:
有关xsbt进程的详细信息(每个VisualVM):
PID: 56661
Host: localhost
Main class: xsbt.boot.Boot
Arguments: -Dhttp.port=9001 -Dhttps.port=9443 -Djsse.enableSNIExtension=false -Dhazelcast.config=conf/hazelcast-dev.xml -Dlogger.file=conf/logback-dev.xml -Dconfig.file=conf/passwords/local-dev.conf
JVM: Java HotSpot(TM) 64-Bit Server VM (25.121-b13, mixed mode)
Java: version 1.8.0_121, vendor Oracle Corporation
Java Home: /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre
JVM Flags: <none>
Heap dump on OOME: disabled
Run Code Online (Sandbox Code Playgroud)
JVM参数:
-Xms1024m
-Xmx1024m
-XX:ReservedCodeCacheSize=128m
-XX:MaxMetaspaceSize=256m
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005
Run Code Online (Sandbox Code Playgroud)
以下是VisualVM中有关时间的详细信息:
80%的CPU使用率 - 以及大多数时间都在运行的风扇 - 合理而sbt是空闲的吗?看起来真的很高.任何降低战略的策略?
PS:当sbt刚出现在命令提示符下时(不看文件更改),Activity Monitor显示大约5%的CPU使用率.
PPS:我通常concurrentRestrictions in Global += Tags.limit(Tags.Test, 4)在我的构建文件中防止在测试期间有太多并发数据库连接.我不确定这实际上是否符合我的想法.上面的统计数据是用该行注释掉的.当我恢复它时,活动监视器仍然报告~80%的CPU使用率,但在CPU样本中idleAwaitWork根本没有出现并且在它后面ConcurrentRestrictions$$anon$4.take占据首位SourceModificationWatch$.watch …
当我的Scala.js代码抛出异常时,我对无法理解的堆栈跟踪感到沮丧.我以为我有一个使用Javascript库的解决方案(请参阅获取scala堆栈跟踪),但它经常中断.
如何做你提取含义(方案打破了这里;它是如何到达那里-在Scala代码而言)从类似下面的堆栈跟踪.或者我做错了甚至得到一个未翻译的堆栈跟踪?