我想在 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) 当将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) 在Jackson 中,我想包含每个自定义对象的类型信息。为了在没有注释的情况下完成此操作,我正在使用
OBJECT_MAPPER.enableDefaultTypingAsProperty(DefaultTyping.NON_FINAL, "@Ketan");
Run Code Online (Sandbox Code Playgroud)
这是工作,但它也包括类型信息List,Map,Collection像容器本身。
让我给你一个标准的例子Animal,Dog,Cat和Zoo层次。
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)
在这里,我有两个自定义对象Cat和Dog. 我只想为那些只包含类型信息,但它也包括容器 -List就我而言 - 也是如此。
请参阅下面我通过序列化获得的 JSON 字符串。
{
"@Ketan": "com.csam.wsc.enabling.core.codec.json.test.Zoo1",
"cats": …Run Code Online (Sandbox Code Playgroud) 我需要知道如何应用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>和我有使用biFunction与listA和listB.我不知道如何在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具有相同的尺寸.
这是一个可怕的解决方案,请你能建议一个更好的方法吗?
我是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) 在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) 我有一个方法可以找到一个运算符并返回新位置。
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)
我如何返回旧值?我尝试用方法中的值提供一个新参数并将其传递到异常中,但代码看起来很丑陋。有没有更好的办法 ?
我阅读了新手的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)解开s3Bucket成bucket?引擎盖下究竟发生了什么?
我正在使用数据流生成大量数据.
我测试了我的管道的两个版本:一个带有侧输入(不同大小),另一个没有.
当我在没有侧输入的情况下运行管道时,我的工作将在大约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) 所以我以前工作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) 我需要为我的一个分配编写一个简单的函数,它应该删除给定列表中的所有重复项,除了列表中第一个出现的元素.这是我写的:
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].怎么做反过来呢?
如何ALLOW_ENCODED_SLASH=true在Tomcat 8中进行设置?我应该在哪个文件中配置此属性?我想获得这样的URI http://www.example.com//12345%2F6789,但是Tomcat不会通过收到这样的请求%2F。我应该怎么做才能解决这个问题?
我正在编写一个能够成为矩阵强大功能的程序.正如你所看到的,我试图在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)