小编Hel*_*ira的帖子

GraphViz 中的集群挤压节点

我想在 GraphViz 中将几个相关的子图绘制在一起。当我绘制简单的节点时,它看起来很漂亮:

在此输入图像描述

来源:

digraph {
  rankdir=LR;

  A1 -> A21;
  A1 -> A22;
  A1 -> A23;
  A1 -> A24;

  B1 -> B21;
  B1 -> B22;
  B1 -> B23;
  B1 -> B24;

  A21 -> A31;
  A22 -> A31;
  A23 -> A31;

  A23 -> A32;

  B21 -> B31;

  B21 -> B32;
  B22 -> B32;

  B21 -> B33;
  B23 -> B33;
}
Run Code Online (Sandbox Code Playgroud)

由于几个子图中同一级别的节点是相关的,我想将它们分组并给它一个标签。我尝试使用集群来做到这一点,但它“挤压”了节点:

在此输入图像描述

来源:

digraph {
  rankdir=LR;

  subgraph cluster_level1 {
    label = "Level 1";
    style=filled;
    color=lightgrey;

    A1;
    B1;
  }

  subgraph cluster_level2 {
    label …
Run Code Online (Sandbox Code Playgroud)

dot graphviz

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

使SonarQube Gradle插件在根项目和子项目中可用

当将Maven与多模块项目一起使用时,我可以简单地将Sonar插件添加到父POM中:

<plugin>
    <groupId>org.sonarsource.scanner.maven</groupId>
    <artifactId>sonar-maven-plugin</artifactId>
    <version>3.4.0.905</version>
</plugin>
Run Code Online (Sandbox Code Playgroud)

然后在项目根目录中运行它以获取汇总结果:

.../project$ mvn sonar:sonar
Run Code Online (Sandbox Code Playgroud)

或针对特定模块:

.../project$ mvn sonar:sonar -f module/pom.xml
Run Code Online (Sandbox Code Playgroud)

但是,Gradle似乎无法做到这一点。

如果仅apply plugin: 'org.sonarqube'在根项目中应用SonarQube插件(),则在根项目中运行该插件时会得到汇总结果,但是该子项目中没有该插件:

.../project$ ./gradlew :module:sonarqube
FAILURE: Build failed with an exception.

* What went wrong:
Task 'sonarqube' not found in project ':module'.
...
Run Code Online (Sandbox Code Playgroud)

如果仅在子项目中应用SonarQube插件,则在根项目上运行它不会产生汇总结果。

如果我将SonarQube插件应用于所有项目(根项目+子项目),请尝试运行任何Gradle命令输出:

FAILURE: Build failed with an exception.

* Where:
Build file '.../project/build.gradle' line: 38

* What went wrong:
A problem occurred evaluating root project 'project'.
> Failed to apply plugin [id 'org.sonarqube']
   > Cannot add extension …
Run Code Online (Sandbox Code Playgroud)

gradle sonarqube gradle-plugin sonarqube-scan

5
推荐指数
0
解决办法
532
查看次数

Jackson 在序列化期间排除容器(列表、地图、集合)的类型信息

Jackson 中,我想包含每个自定义对象的类型信息。为了在没有注释的情况下完成此操作,我正在使用

OBJECT_MAPPER.enableDefaultTypingAsProperty(DefaultTyping.NON_FINAL, "@Ketan");
Run Code Online (Sandbox Code Playgroud)

这是工作,但它也包括类型信息ListMapCollection像容器本身。

让我给你一个标准的例子AnimalDogCatZoo层次。

class Zoo {

    List<Cat> cats;
    Dog dog;

    public Dog getDog() {
       return dog;
    }

    public void setDog(Dog dog) {
       this.dog = dog;
    }

    public List<Cat> getCats() {
       return cats;
    }

    public void setCats(List<Cat> cats) {
       this.cats = cats;
    }

}
Run Code Online (Sandbox Code Playgroud)

在这里,我有两个自定义对象CatDog. 我只想为那些只包含类型信息,但它也包括容器 -List就我而言 - 也是如此。

请参阅下面我通过序列化获得的 JSON 字符串。

{
    "@Ketan": "com.csam.wsc.enabling.core.codec.json.test.Zoo1",
    "cats": …
Run Code Online (Sandbox Code Playgroud)

java json jackson

4
推荐指数
2
解决办法
1652
查看次数

Java 8将BiFunction应用于两个不同对象的列表

我需要知道如何应用BiFunction两个不同对象的列表

List<A> listA;
List<B> listB;

private BiFunction<A,B,C> biFunction=new BiFunction<A,B,C>() {
    @Override
    public C apply(A a, B b) {
        C c=new C();

        return c;
    }
};
Run Code Online (Sandbox Code Playgroud)

我需要一个List<C>和我有使用biFunctionlistAlistB.我不知道如何在Java 8中执行此操作,我知道的唯一方法是:

List<C> listC=new ArrayList<>();
        for(int i=0;i<listA.size();i++)
            listC.add(biFunction.apply(listA.get(i),listB.get(i)));
Run Code Online (Sandbox Code Playgroud)

显然listA并且listB具有相同的尺寸.
这是一个可怕的解决方案,请你能建议一个更好的方法吗?

java collections java-8 java-stream

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

新Maven/Spring MVC项目的最小pom.xml文件

我是Maven和Spring MVC的新手.我想要做的是使用Maven设置一个新的Spring MVC项目(希望这句话很有意义),然后使用Eclipse在Tomcat上运行我的Web应用程序.

我正在关注此链接的教程,我遇到了该pom.xml文件的问题:

本教程要求创建文件夹结构,并创建pom.xml文件.对于初学者,他们要求将此行放在pom.xml中:

xml 4.0.0org.springsource.greenbeans.mavenexample11.0-SNAPSHOTOur Simple Project
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我的Eclipse会抛出一个错误:

[INFO] Scanning for projects...
[ERROR] The build could not read 1 project -> [Help 1]
[ERROR]
[ERROR]   The project  (D:\projectName\pom.xml) has 1 error
[ERROR]     Non-parseable POM D:\projectName\pom.xml: only whitespace content allowed before start tag and not ` (position: START_DOCUMENT seen `... @1:1)  @ line 1, column 1 -> [Help 2]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. …
Run Code Online (Sandbox Code Playgroud)

java eclipse spring pom.xml maven

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

tomcat服务器启动完成后回调

在tomcat服务器sartup完成后,是否存在spring或tomcat中的任何机制,生命周期事件或回调(我已经配置了8个Web应用程序和队列,我希望在启动所有应用程序后将通知返回给每个应用程序.) .我知道spring有应用程序监听器,可以在初始化Web应用程序后使用.但我不能在我的情况下使用它,因为我希望在初始化所有Web应用程序后收到通知.

**已编辑***

我添加了实现tomcat的监听器来记录消息.但我绝对不知道在哪里挂钩这个听众.

我尝试使用spring创建这个bean,并且通过向web.xml添加监听器两者都不起作用.

这是我的代码

public class KPTomcatListener implements LifecycleListener {

    private static final Logger LOG = LoggerFactory.getLogger(KPTomcatListener.class);
    /**
     * All the events of tomcat
     * AFTER_START_EVENT, 
     * AFTER_STOP_EVENT, 
     * BEFORE_START_EVENT, 
     * BEFORE_STOP_EVENT, 
     * DESTROY_EVENT, 
     * INIT_EVENT, 
     * PERIODIC_EVENT, 
     * START_EVENT, 
     * STOP_EVENT
     */
    private static int counter;

    @Override
    public void lifecycleEvent(LifecycleEvent arg0) {
        String event = arg0.getType();
        LOG.debug("Tomcat Envents: " + (++counter) + " :: " + event);
        if(event.equals("AFTER_START_EVENT")) {
            LOG.debug("Hey I've started");
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

java spring tomcat tomcat6

3
推荐指数
2
解决办法
3911
查看次数

如果没有匹配则返回方法中的默认值

我有一个方法可以找到一个运算符并返回新位置。

public Integer findToken(Character operator) {
    try {
        return tokenList.stream()
                .filter(x -> {
                    return x.position >= startPosition &&
                            x.position <= endPosition &&
                            x.operator == operator;
                })
                .findFirst().get()
                .position;
    } catch (Exception ex) {
        return null;
    }
} 
Run Code Online (Sandbox Code Playgroud)

但如果没有匹配项,我希望它保留旧值。

startPosition = findToken(Operator.value);
Run Code Online (Sandbox Code Playgroud)

我如何返回旧值?我尝试用方法中的值提供一个新参数并将其传递到异常中,但代码看起来很丑陋。有没有更好的办法 ?

java java-8 java-stream

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

选项上的Scala模式匹配

我阅读了新手的Scala指南第5部分:选项类型,他建议了一种匹配选项的方法.我在这里实施了他的建议:

s3Bucket match {
  case Some(bucket) =>
    bucket.putObject(partOfKey + key + file.getName, file)
    true
  case None =>
    false
}
Run Code Online (Sandbox Code Playgroud)

但我对它的实际运作方式有一些疑问.也就是说,由于s3Bucket是类型Option[Bucket],如何case Some(bucket)解开s3Bucketbucket?引擎盖下究竟发生了什么?

scala pattern-matching optional

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

SideInputs会破坏数据流性能

我正在使用数据流生成大量数据.

我测试了我的管道的两个版本:一个带有侧输入(不同大小),另一个没有.

当我在没有侧输入的情况下运行管道时,我的工作将在大约7分钟内完成.当我侧面输入来完成我的工作时,我的工作永远不会完成.

这是我的DoFn的样子:

public class MyDoFn extends DoFn<String, String> {

    final PCollectionView<Map<String, Iterable<TreeMap<Long, Float>>>> pCollectionView;
    final List<CSVRecord> stuff;

    private Aggregator<Integer, Integer> dofnCounter =
            createAggregator("DoFn Counter", new Sum.SumIntegerFn());

    public MyDoFn(PCollectionView<Map<String, Iterable<TreeMap<Long, Float>>>> pcv, List<CSVRecord> m) {
        this.pCollectionView = pcv;
        this.stuff = m;
    }

    @Override
    public void processElement(ProcessContext processContext) throws Exception {
        Map<String, Iterable<TreeMap<Long, Float>>> pdata = processContext.sideInput(pCollectionView);

        processContext.output(AnotherClass.generateData(stuff, pdata));

        dofnCounter.addValue(1);
    }
}
Run Code Online (Sandbox Code Playgroud)

这就是我的管道:

final Pipeline p = Pipeline.create(PipelineOptionsFactory.fromArgs(args).withValidation().create());

PCollection<KV<String, TreeMap<Long, Float>>> data;
data = …
Run Code Online (Sandbox Code Playgroud)

google-cloud-dataflow

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

Scala脚本不会在ubuntu上运行

所以我以前工作scala脚本试图在新的PC上运行它编译失败.

所以我制作了简单的脚本来测试:

#!/bin/sh
exec scala -J-Xmx2g "$0" "$@"
!#

println("test")
Run Code Online (Sandbox Code Playgroud)

并试图跑

test.scala 
error: Compile server encountered fatal condition: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer;
java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()Ljava/nio/ByteBuffer;
at scala.tools.nsc.io.SourceReader.read(SourceReader.scala:61)
at scala.tools.nsc.io.SourceReader.read(SourceReader.scala:40)
at scala.tools.nsc.io.SourceReader.read(SourceReader.scala:49)
at scala.tools.nsc.Global.getSourceFile(Global.scala:395)
at scala.tools.nsc.Global.getSourceFile(Global.scala:401)
at scala.tools.nsc.Global$Run$$anonfun$30.apply(Global.scala:1607)
at scala.tools.nsc.Global$Run$$anonfun$30.apply(Global.scala:1607)
at scala.collection.immutable.List.map(List.scala:284)
at scala.tools.nsc.Global$Run.compile(Global.scala:1607)
at scala.tools.nsc.StandardCompileServer.session(CompileServer.scala:151)
at scala.tools.util.SocketServer$$anonfun$doSession$1$$anonfun$apply$1.apply(SocketServer.scala:74)
at scala.tools.util.SocketServer$$anonfun$doSession$1$$anonfun$apply$1.apply(SocketServer.scala:74)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
at scala.Console$.withOut(Console.scala:65)
at scala.tools.util.SocketServer$$anonfun$doSession$1.apply(SocketServer.scala:74)
at scala.tools.util.SocketServer$$anonfun$doSession$1.apply(SocketServer.scala:69)
at scala.tools.nsc.io.Socket.applyReaderAndWriter(Socket.scala:49)
at scala.tools.util.SocketServer.doSession(SocketServer.scala:69)
at scala.tools.util.SocketServer.loop$1(SocketServer.scala:85)
at scala.tools.util.SocketServer.run(SocketServer.scala:97)
at scala.tools.nsc.CompileServer$$anonfun$execute$2$$anonfun$apply$mcZ$sp$1.apply$mcZ$sp(CompileServer.scala:218)
at scala.tools.nsc.CompileServer$$anonfun$execute$2$$anonfun$apply$mcZ$sp$1.apply(CompileServer.scala:213)
at scala.tools.nsc.CompileServer$$anonfun$execute$2$$anonfun$apply$mcZ$sp$1.apply(CompileServer.scala:213)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
at scala.Console$.withOut(Console.scala:53)
at scala.tools.nsc.CompileServer$$anonfun$execute$2.apply$mcZ$sp(CompileServer.scala:213)
at scala.tools.nsc.CompileServer$$anonfun$execute$2.apply(CompileServer.scala:213)
at scala.tools.nsc.CompileServer$$anonfun$execute$2.apply(CompileServer.scala:213)
at scala.util.DynamicVariable.withValue(DynamicVariable.scala:58)
at …
Run Code Online (Sandbox Code Playgroud)

ubuntu scala scala-script

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

Haskell-如何在haskell的列表中倒退?

我需要为我的一个分配编写一个简单的函数,它应该删除给定列表中的所有重复项,除了列表中第一个出现的元素.这是我写的:

remDup :: [Int]->[Int]
remDup []=[]
remDup (x:xs)
   | present x xs==True = remDup xs
   | otherwise = x:remDup xs
   where
   present :: Int->[Int]->Bool
   present x [] = False
   present x (y:ys)
       | x==y =True
       | otherwise = present x ys 
Run Code Online (Sandbox Code Playgroud)

但是这个代码删除了重复项,除了元素的最后一次出现.也就是说,如果给定的列表是[1,2,3,3,2]生成[1,3,2]而不是[1,2,3].怎么做反过来呢?

haskell

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

如何在Tomcat 8中设置ALLOW_ENCODED_SLASH

如何ALLOW_ENCODED_SLASH=true在Tomcat 8中进行设置?我应该在哪个文件中配置此属性?我想获得这样的URI http://www.example.com//12345%2F6789,但是Tomcat不会通过收到这样的请求%2F。我应该怎么做才能解决这个问题?

configuration tomcat

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

我的程序跳过if语句

我正在编写一个能够成为矩阵强大功能的程序.正如你所看到的,我试图在for(int n ...)循环中询问n == 0,但是当我正在调试时 - 我看到该程序只是跳过这个条件,甚至没有输入它.我的意思是,如果n == 0,它甚至不会"问"这个问题......

问题是什么?

void Matrix::pow(int power, Matrix & result)
{
    for (int i = 0; i < power-1; i++)
    {
        for (int j = 0; j < rows; j++)
        {
            for (int k = 0; k < cols; k++)
            {
                for (int n = 0; n < cols; n++)
                {
                    if (n==0)
                    {
                        (&result)->_array[i][j] == 0; //Reset result's array.
                    }
                    (&result)->_array[i][j] += this->_array[i][n] * this->_array[n][j];
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ if-statement

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