小编Dmi*_*kiy的帖子

Intellij 在编译期间看不到一些非公共 JDK 9 类

我有一个以前使用 JDK 8.0 的项目,现在迁移到 JDK 9。该项目尚未模块化。

关闭对私有 JDK API 的访问的所有问题都已修复,我可以使用 maven、1.8 语言级别和 JDK 9 从命令行构建项目。

Intellij Idea 根本没有突出任何问题,JDK 9 设置为项目 SDK,但是如果我尝试在 Idea 内部构建项目 - 我会在 idea 控制台中遇到编译问题:

Information:javac 9 was used to compile java sources
Error:(5, 16) java: package sun.misc does not exist
Error:(22, 19) java: cannot find symbol
  symbol:   class Unsafe
  location: class <...>.UnsafeAccessor
Run Code Online (Sandbox Code Playgroud)

因此,该项目现在使用 JDK 9 在 CMD 中构建良好,该错误没有太大意义,因为 sun.misc.Unsafe 在 JDK 9 中存在且公开,Idea 本身没有突出显示任何内容,因此它理解一切都存在.

什么可能导致 Idea 内的项目构建问题?

关于IDEA构建的信息:

IntelliJ IDEA 2017.2.5

Build #IU-172.4343.14,建于 2017 年 9 月 …

java intellij-idea maven java-9 intellij-idea2017

14
推荐指数
2
解决办法
4785
查看次数

Redis群集性能 - 低负载时的高超时率

查看redis集群的奇怪行为,它在大负载下运行完全正常,并且在低负载下以50%的超时速率和不稳定的响应时间开始运行.

我们在低负荷期间每天​​都有相同的模式.

什么想法会导致这种奇怪的模式?也许这个RedisCluster在低负载时间开始做一些维护工作?像插槽重新平衡.请推荐任何设置或方面进行检查.

版本:Redis 2.0.7,Jedis 2.8.1

配置:3个物理节点,9个主进程和18个从属.

JedisCluster Timeout = 5ms.

使用setex加载是100%写入.

JedisCluster响应时间 JedisCluster超时率

此图表适用于JedisCluster响应时间,而不是实际的RedisCluster时间.这里的"设置"行实际上是成功设置,而不是总计数.

performance redis jedis redis-cluster

9
推荐指数
1
解决办法
650
查看次数

如何使用客户端一致性哈希与 Lettuce Redis 客户端

我正在尝试查找有关如何配置和使用具有客户端一致性散列的Lettuce Redis 客户端的参考资料。

这种分片方法在Jedis 客户端的ShardedJedis 中实现,并在Redis 分区文档中进行了描述。

方法的简短描述:我们有一个环境有多个独立的 Redis 进程/节点,没有使用 Redis Cluster 或 Sentinel 的任何基于服务器的请求路由,客户端通过应用哈希函数 (key -> node_id) 在客户端。

生菜是否支持这种开箱即用的集群/分片?如果是,如何配置它以使用客户端散列?

java redis lettuce redis-cluster

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

在不影响接口的其他实现的情况下更改java中的方法签名

假设我调用了一个Java类,A并调用了一个接口I.本A类实现了接口I.接口I具有以下方法定义byte[] x(String in).该接口I也被其他类等来实现B,C,D等.

现在让我们说我想为x方法的实现发送一个额外的参数A.假设我想要一个新的定义,比如说byte[] x(String in, OutputStream os).

有没有办法OutputStream osx方法中传递它而不影响其他实现?问题是,如果我进行更改I,我必须在所有实现中进行此更改,这是不正常的.如果我选择更改x方法签名,我将不得不在所有方法中更改它并在代码中的任何位置传递第二个参数.

OutputStream必须来自a @Controller,这OutputStream必须是一个不同的流(每个请求一个流).

我的实现@Component用于@Service.

您对如何将该流仅传递给我的A班级有任何建议x吗?

实际目的x是编写返回的bites以生成文件.发送OutputStream遗嘱会以某种方式确定要返回的返回类型,void因为数据将直接发送到流.

java

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

如何在没有StringIndexer的Spark ML中进行二进制分类

我尝试在没有StringIndexer的Pipeline中使用Spark ML DecisionTreeClassifier,因为我的功能已被索引为(0.0; 1.0).DecisionTreeClassifier作为标签需要double值,因此此代码应该有效:

def trainDecisionTreeModel(training: RDD[LabeledPoint], sqlc: SQLContext): Unit = {
  import sqlc.implicits._
  val trainingDF = training.toDF()
  //format of this dataframe: [label: double, features: vector]

  val featureIndexer = new VectorIndexer()
    .setInputCol("features")
    .setOutputCol("indexedFeatures")
    .setMaxCategories(4)
    .fit(trainingDF)

  val dt = new DecisionTreeClassifier()
    .setLabelCol("label")
    .setFeaturesCol("indexedFeatures")


  val pipeline = new Pipeline()
    .setStages(Array(featureIndexer, dt))
  pipeline.fit(trainingDF)
}
Run Code Online (Sandbox Code Playgroud)

但实际上我得到了

java.lang.IllegalArgumentException:
DecisionTreeClassifier was given input with invalid label column label,
without the number of classes specified. See StringIndexer.
Run Code Online (Sandbox Code Playgroud)

当然我可以放置StringIndexer并让它为我的双"标签"字段工作,但我想使用DecisionTreeClassifier的输出rawPrediction列来获得每行0.0和1.0的概率,如...

val predictions = model.transform(singletonDF) 
val zeroProbability = predictions.select("rawPrediction").asInstanceOf[Vector](0)
val …
Run Code Online (Sandbox Code Playgroud)

scala classification apache-spark apache-spark-sql apache-spark-ml

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