小编Leo*_*eon的帖子

自动重构工具,为Java/Javascript找到类似的重复源代码?

我正在寻找一种工具来查找重复或类似的Java/Javascript代码.我无法确定" 类似 " 的确切定义,但我希望该工具足够智能并给我建议重构代码,例如,

(1)A类和B类有相似的方法(例如,有5个方法在两个类中都有相同的方法名,参数和类似的实现),那么它应该建议将这些类似的方法移到基类中.
(2)A类在不同的地方有多次相似的代码行,工具应该建议将这些相似的代码行移动到一个方法中.

我试过PMD可以找到重复的代码行,但它不够聪明.它没有找到那些在我的项目中广泛传播的类似源代码.

有这样的工具吗?

java duplicates automated-refactoring

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

如何使用jshell运行java应用程序?

如何使用jshell运行java应用程序?它应该能够像 bash 那样指定类路径并调用 java 命令并传递一些参数,例如,

#!/bin/bash
$ARGS=...
$CLASSPATH=...
java -cp $CLASSPATH $ARGS com.example.MyApp
Run Code Online (Sandbox Code Playgroud)

更新:
我认为需要运行时或进程的包装,例如,

jshell> private String executeCommand(String command) {
   ...>
   ...>         StringBuffer output = new StringBuffer();
   ...>
   ...>         Process p;
   ...>         try {
   ...>             p = Runtime.getRuntime().exec(command);
   ...>             p.waitFor();
   ...>             BufferedReader reader =
   ...>                             new BufferedReader(new InputStreamReader(p.getInputStream()));
   ...>
   ...>                         String line = "";
   ...>             while ((line = reader.readLine())!= null) {
   ...>                 output.append(line + "\n");
   ...>             }
   ...>
   ...>         } catch (Exception e) {
   ...>             e.printStackTrace();
   ...>         }
   ...> …
Run Code Online (Sandbox Code Playgroud)

java java-9 jshell

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

如何将docker容器ip映射到主机ip(NAT而不是NAPT)?

主要目标是进行真正的 NAT 而不是 NAPT。注意,正常docker run -p ip:port2:port1命令实际上是进行 NAPT(地址+端口转换)而不是 NAT(地址转换)。是否可以仅映射地址,但保持所有暴露的端口与容器相同,例如docker run -p=ip1:*:* ... ,而不是一一或一个范围?

诗.1。我的端口范围相当大(22-50070,ssh-hdfs),因此端口范围方法不起作用。
PS.2。也许我需要一群虚拟机并将主机加入到该群中。

ps.3 我在 github 上提出了功能请求。不确定他们是否会接受,但目前有 2000 多个未解决的问题(它非常受欢迎)。

解决方案

在Linux上,您可以通过ip和端口访问任何容器,无需任何绑定(无-p)ootb。Docker 版本:CE 17+

If your host is windows, and docker is running on a linux VM like me, to access the containers, the only thing need to do is adding the route on windows route add -p 172.16.0.0 mask 255.240.0.0 ip_of_your_vm. Now you can access all containers by IP:port without …

nat docker

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

rdd.sortByKey给出了错误的结果

我复制了sortByKey身体并重命名为sortByKey2,但他们给出了不同的结果.为什么第一个结果在这里错了?这是在日食中运行的.我重新启动了eclipse,但仍然得到了错误的结果.

package test.spark

import org.apache.spark.sql.SparkSession

object RddTests {
  var spark = SparkSession.builder().appName("rdd-test").master("local[*]")
    .enableHiveSupport()
    .getOrCreate()

  val sc = spark.sparkContext

  def main(args: Array[String]) {
    //mapValues
    //combineWithKey
    //foldByKey
    sortByKey
    sortByKey2
  }    

  def sortByKey() {
    val people = List(("Mobin", 2), ("Mobin", 1), ("Lucy", 2), ("Amy", 1), ("Lucy", 3), ("Lucy", 1))
    val rdd = sc.parallelize(people)
    val sortByKeyRDD = rdd.sortByKey()
    println;println("sortByKeyRDD")
    sortByKeyRDD.foreach(println)
  }

  def sortByKey2() {
    val people = List(("Mobin", 2), ("Mobin", 1), ("Lucy", 2), ("Amy", 1), ("Lucy", 3), ("Lucy", 1))
    val …
Run Code Online (Sandbox Code Playgroud)

scala apache-spark rdd

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