有时,当我阅读Scala生态系统中的文章时,我会读到"提升"/"解除"一词.不幸的是,没有解释这究竟意味着什么.我做了一些研究,似乎提升与功能价值或类似的东西有关,但我无法找到一个文本,以初学者友好的方式解释实际提升的内容.
通过Lift框架存在额外的混乱,其名称已经提升,但它无助于回答这个问题.
什么是Scala中的"提升"?
请查看最新评论.
我有几个使用scala 2.10.2编写的项目,并使用sbt 0.12.4构建.由于我的操作系统是Ubuntu,我使用SBT.deb包来安装sbt 0.12.4.一切都很好.我用sbt建立了我的项目.
昨天我想将sbt更新到版本0.13.0.我下载并安装了新的.deb软件包.项目配置尚未更改.
在更新后运行SBT时,我遇到此故障:
$ sbt
Loading /usr/share/sbt/bin/sbt-launch-lib.bash
Getting org.scala-sbt sbt 0.13.0 ...
:: problems summary ::
:::: WARNINGS
module not found: org.scala-sbt#sbt;0.13.0
==== local: tried
/home/myUser/.ivy2/local/org.scala-sbt/sbt/0.13.0/ivys/ivy.xml
::::::::::::::::::::::::::::::::::::::::::::::
:: UNRESOLVED DEPENDENCIES ::
::::::::::::::::::::::::::::::::::::::::::::::
:: org.scala-sbt#sbt;0.13.0: not found
::::::::::::::::::::::::::::::::::::::::::::::
:: USE VERBOSE OR DEBUG MESSAGE LEVEL FOR MORE DETAILS
unresolved dependency: org.scala-sbt#sbt;0.13.0: not found
Error during sbt execution: Error retrieving required libraries
(see /home/myUser/.sbt/boot/update.log for complete log)
Error: Could not retrieve sbt 0.13.0
Run Code Online (Sandbox Code Playgroud)
该~/.sbt/update.log文件可在此处获得: …
我会做这样的事情(伪代码):
1. load sensitive encrypted data from file
2. decrypt the data
3. do something with the unencrypted data
4. override the data safely / securely (for example with random data)
Run Code Online (Sandbox Code Playgroud)
敏感数据在内存中保持原样(未加密)的时间应尽可能短。
不得以任何方式泄露明文数据。
A. 这样的程序可以用 Haskell 或 OCAML 编写吗?
B. 是否可以防止数据泄露,即被垃圾收集器在后台静默复制?
C. 能否在内存中正确覆盖纯数据?
据我所知,垃圾收集器 (GC) 可以在后台静默复制数据。我猜这是由分代 GC 算法完成的,但我不确定。
我知道如果攻击者设法在正确的时间/状态获取程序的内存,攻击者仍然有可能获得纯数据。我只是考虑这样做以提高安全性,因为我没有控制上下文(即操作系统、交换等)。
我正在努力使用Slick提升的嵌入和映射表格.API对我来说很奇怪,也许只是因为它的构造方式对我来说是不熟悉的.
我想构建一个Task/Todo-List.有两个实体:
TaskList:表示带有标签和对列表的第一个Task的引用的TaskList.
case class Task(id: Option[Long], title: String, nextTask: Option[Task])
case class TaskList(label: String, firstTask: Option[Task])
现在我尝试为这两个实体编写数据访问对象(DAO).
import scala.slick.driver.H2Driver.simple._
import slick.lifted.MappedTypeMapper
implicit val session: Session = Database.threadLocalSession
val queryById = Tasks.createFinderBy( t => t.id )
def task(id: Long): Option[Task] = queryById(id).firstOption
private object Tasks extends Table[Task]("TASKS") {
def id = column[Long]("ID", O.PrimaryKey, O.AutoInc)
def title = column[String]("TITLE")
def nextTaskId = column[Option[Long]]("NEXT_TASK_ID")
def nextTask = foreignKey("NEXT_TASK_FK", nextTaskId, Tasks)(_.id)
def * = id ~ title ~ nextTask <> (Task, Task.unapply …Run Code Online (Sandbox Code Playgroud) 当Java程序调用System.out.println()或Scala程序调用println()时,线程是否阻塞?
我正在编写一个带有大量子任务的Scala程序.每个子任务都在Future中执行.建议actor和future内的代码不会阻塞,以便后续任务也不必等待.但我想在控制台上打印很多.
如果是阻塞操作:我可以做些什么来优化性能?
当然,我可以尝试减少输出量或收集StringBuilder中的一些输出并将它们一起打印,这样可以减少输出操作的数量.
在几个地方有一个状态,akka在某种程度上是"实时".例如:
http://doc.akka.io/docs/akka/2.0/intro/what-is-akka.html
不幸的是,我无法找到更深入的解释,akka是"实时"的.所以这就是问题:
akka在哪个方面是实时的?
我假设aka不是真正的以下定义意义上的实时计算系统,不是吗?:https://en.wikipedia.org/wiki/Real-time_computing
我想编写一个程序,它自动通过JDBC创建RDBMS表.要向表中添加列,我需要知道列的名称和列的RDBMS数据类型.我已经有了列的名称.我没有列的RDBMS类型,但我有这些列的Java类型.所以我需要将这些Java类型映射到RDBMS数据类型.Java类型可以是以下之一:
串
所以我的问题是:如何将这些java类型映射到RDBMS类型?
特别是我正在使用PostgreSQL.因此,如果没有通用的方法,那么让它与PG一起运行将是非常重要的.
提前致谢
我知道Scala已经成为Java平台的目标.据我所知,Scala也适合.Net/C#中间代码的东西.恕我直言Java和.Net平台相对类似,这并不奇怪.
Java和.Net平台提供的服务或某种基础结构可能在系统和内核开发中缺失.
compiler-construction kernel scala native systems-programming
JDBC提供了一个API,可用于连接到不同的RDBMS或类似的数据存储.但数据存储区的实现方式不同(例如SQL方言).
是否可以以这种方式使用JDBC,我的查询和语句适用于大多数常见的RDBMS(例如:Oracle,PostgreSQL,SQL Server,MySQL)?
这个问题在两个方面对我很有意思:*常见SQL(INSERT,UPDATE,SELECT等)*访问元数据(获取有关表和列的信息)
我目前正在尝试使用自编写的持久性框架,并希望在其下插入JDBC数据存储区.因此,如果我编写JDBC数据存储区适配器,那么它将很好,如果它可以在大多数常见的RDBMS上工作.
提前致谢
我有一个抽象方法和具体实现方法的特征,所以这样的事情:
trait MyTrait extends BaseClass {
def myAbstractMethod: MyReturnType
def myConcreteMethod = { /*implementation*/ }
}
Run Code Online (Sandbox Code Playgroud)
现在我混合了这个特质:
class MyClass extends BaseClass with MyTrait {
}
Run Code Online (Sandbox Code Playgroud)
BaseClass不实现抽象方法.我期望scala编译器在混合特征时强制执行抽象方法(就像Java接口一样).但是没有编译器错误.
我的具体情况比较复杂.我无法测试运行时发生的事情.
我想要像Java类型的名称一样的RDBMS表.例:
mytld.mycompany.myproject.mypackage.mysubpackage.MyClass
Run Code Online (Sandbox Code Playgroud)
目前我正在尝试使用PostgreSQL.它给了我这个错误:
FEHLER:falscher qualifizierter姓名(zu viele Namensteile):mytld.mycompany.myproject.mypackage.mysubpackage.MyClass
在英语中,这意味着:
错误:错误的限定名称(多名称部分):mytld.mycompany.myproject.mypackage.mysubpackage.MyClass