小编Hbf*_*Hbf的帖子

Guice可以注入Scala对象

在Scala中,我可以使用Guice注入Scala object吗?

例如,我可以注入s以下对象吗?

object GuiceSpec {
  @Inject
  val s: String = null

  def get() = s
}
Run Code Online (Sandbox Code Playgroud)

scala guice

21
推荐指数
1
解决办法
1万
查看次数

如何在Django中创建可重用的模板?

Django创建可重用模板的方法是什么?

示例:假设我的很多页面都包含"最新消息"框并遵循DRY原则,我想定义一次并在其他页面中重复使用它.我如何使用Django(或Jinja2)模板执行此操作?

阅读Django的模板文档我得到的结论是Django模板提供了"自上而下"的继承,其中子模板本身决定了它将嵌入哪个超模板:

<!-- Super-template (not valid, for illustration): -->
<html>
  <head><title>Title</title></head>
  <body>{% block content %}{% endblock %}</body>
</html>
Run Code Online (Sandbox Code Playgroud)
<!-- Sub-template: -->
{% extends "base.html" %}
{% block content %}
<div class="latest-news">News</div>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

那么在几个地方重用块(子模板)的技术是什么?

django templates django-templates jinja2

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

IntelliJ可以生成没有"get"前缀的getter吗?

IntelliJ具有生成Java getter的很酷功能.例如,对于字段private final String foo,它将生成一个getter getFoo().

有没有什么办法可以配置IntelliJ来生成格式的getter String foo()?我主要使用不可变对象,并喜欢这种语法.

java getter intellij-idea getter-setter

12
推荐指数
1
解决办法
1648
查看次数

Scala的参数字段和构造函数参数

我知道参数字段(如下x例所示)的行为与普通字段相同; 所以你可以在方法中引用它们:

class Test(val x: Int) { // x is a parametric field
  override def toString = "Test: " + x;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果删除关键字val,代码仍会编译(并且查看和.class输出x仍然是类的成员).所以我想知道,参数字段(即val x: Int上面的)和构造函数参数(x: Int)之间有什么区别?

(在我的脑海中,我希望构造函数的范围x可能包括类似的方法toString.)

scala

7
推荐指数
1
解决办法
774
查看次数

如何在Sorm中为有很多孩子的实体建模?

我有一个WorkspaceDocument实体,其想法是工作空间可以包含零个,一个或多个文档.我对此进行建模的第一种方法是:

case class Workspace(name: String, documents: Seq[Document])
Run Code Online (Sandbox Code Playgroud)

但由于我的工作区可能包含许多文档,因此无法很好地扩展.幸运的是,我的业务需求,允许我单独处理工作空间和文件(在这个意义上,当我有一个工作空间,也没有迫使我考虑其中包含的所有文件的原因还是不变).

问:我想知道:我将如何建模WorkspaceDocumentSORM使我有两个之间的联系,但没有加载一个工作区的所有文件?我想有一个存储库可以让我访问工作区的文档,并提供分页支持.)

case class Workspace(name: String)
case class Document(name: String, /* ... */)

trait WorkspaceRepository {
  def children(ws: Workspace, offset: Long, limit: Long)
}
Run Code Online (Sandbox Code Playgroud)

scala sorm

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

枚举是 Spark PairRDD 导致问题的关键

PairRDD当 RDD 的键是或包含枚举时,对 Spark的某些操作无法正常工作。

例如,下面的 Spark 代码需要两周的工作日并按工作日计算它们:

import java.time.DayOfWeek
val weekdays: Seq[(DayOfWeek, Int)] = DayOfWeek.values().map(dow => (dow, 1))
val numPartitions = 2 * weekdays.size
val result = sc
  .parallelize(weekdays ++ weekdays, numPartitions)
  .reduceByKey(_ + _)
  .collect
  .toSeq
println(result)
Run Code Online (Sandbox Code Playgroud)

在输出中,我希望每个工作日(例如,MONDAY)计数为 2,但是,在我的集群上,我得到:

WrappedArray(
  (THURSDAY,1), (SATURDAY,1), (WEDNESDAY,2), (SATURDAY,1),
  (MONDAY,2), (TUESDAY,2), (THURSDAY,1), (FRIDAY,2), (SUNDAY,2)
)
Run Code Online (Sandbox Code Playgroud)

如果您在具有单个节点(或设置numPartitions为 1)的集群上运行此程序,则结果是正确的(即,所有计数均为 2)。

java enums scala apache-spark

2
推荐指数
1
解决办法
873
查看次数

使用访问器/ getter可以更快?

背景:我打算将我用 C++ 编写的库移植到Java.代码处理d维点的大小为n的列表,需要计算标量产品等.我想让我的代码独立于点的存储格式,并为此引入了一个接口,

public interface PointSetAccessor
{
  float coord(int p, int c);
}
Run Code Online (Sandbox Code Playgroud)

允许我获得Ç个坐标(0≤ ç < d的的)p个点(0≤ p < Ñ).

问题:由于代码必须是非常快,我想知道是否这会减慢性能,与此相反的是直访问模式等points[p][c],其中,points是的阵列Ñ阵列,其中的每一个保持d点坐标.

令人惊讶的是,情况恰恰相反:代码(见下文)通过a的"间接"访问速度提高20%PointSetAccessor.(我用这个来衡量time java -server -XX:+AggressiveOpts -cp bin Speedo,前者为14s,后者为11s.)

问题:知道为什么会这样吗?好像Hotspot决定更积极地进行优化,或者在后一版本中有更大的自由度?

代码(计算无意义):

public class Speedo
{
  public interface PointSetAccessor
  {
    float coord(int p, int c);
  }

  public static final class ArrayPointSetAccessor …
Run Code Online (Sandbox Code Playgroud)

java performance jvm-hotspot

0
推荐指数
1
解决办法
193
查看次数