如何通过 Java 防止 DoS 攻击TreeMap?
我的代码有一个接受Map对象的 API 。现在我想阻止客户端发送Map一定长度的对象。
现在maxarrayinjdk.serialFilter能够阻止客户端发送HashMap大小 >的对象maxarray。
我也想这样做TreeMap。但是maxarrayfield 对TreeMap. 它无法拒绝该请求。
我也设置了maxdepth尺寸。但没有任何效果。
任何人都可以帮我解决这个问题吗?
我正在使用Squarify在 Python 中实现一个简单的树形图。
我正在绘制艺术家姓名及其在所考虑的歌曲图表中的流百分比,正方形越大/越暗,值越高。
我的代码如下:
dataGoals = sort_by_streams[sort_by_streams["Streams"]>1]
#Utilise matplotlib to scale our stream number between the min and max, then assign this scale to our values.
norm = matplotlib.colors.Normalize(vmin=min(dataGoals.Streams), vmax=max(dataGoals.Streams))
colors = [matplotlib.cm.Blues(norm(value)) for value in dataGoals.Streams]
#Create our plot and resize it.
fig1 = plt.figure()
ax = fig1.add_subplot()
fig1.set_size_inches(16, 4.5)
#Use squarify to plot our data, label it and add colours. We add an alpha layer to ensure black labels show through
labels = ["%s\n%.2f" % …Run Code Online (Sandbox Code Playgroud) 我正在从scala 2.7切换到scala 2.8并使用订购.它看起来很直接,但我想知道我可以减少一点点冗长.例如:
scala> case class A(i: Int)
defined class A
scala> object A extends Ordering[A] { def compare(o1: A, o2: A) = o1.i - o2.i}
defined module A
Run Code Online (Sandbox Code Playgroud)
如果我然后尝试创建一个TreeMap,我会收到一个错误
scala> new collection.immutable.TreeMap[A, String]()
<console>:10: error: could not find implicit value for parameter ordering: Ordering[A]
new collection.immutable.TreeMap[A, String]()
^
Run Code Online (Sandbox Code Playgroud)
但是,如果我明确指定对象A作为排序它可以正常工作.
scala> new collection.immutable.TreeMap[A, String]()(A)
res34: scala.collection.immutable.TreeMap[A,String] = Map()
Run Code Online (Sandbox Code Playgroud)
我是否总是必须明确指定顺序或是否有更短的格式?
谢谢
我有兴趣使用python根据正方形的大小(以及可选的颜色)制作表示值大小的图表.基本上我正在寻找一种方法来概述一堆值,例如windirstat用硬盘驱动器使用的好旧程序(它基本上会形成一个代表你的硬盘的大方块,然后构成它内部区域的小方块不同的程序,方块越大文件越大,颜色表示文件的类型).我对matplotlib非常熟悉,我认为用它做这样的事情是不可能的.有没有其他python包可以帮助?如果不是,任何更低级别的建议?我想如果我能找到一种以编程方式绘制框的方法,我可以手动完成(我并不真正关心格式,但导出SVG以及PNG的选项会很好).
最终,让它像windirstat一样具有互动性是很好的,如果你将鼠标悬停在一个特定的方格上,你可以获得更多信息,如果你点击它,也许你会进去看看它的构成特别广场.我只熟悉wxpython的GUI内容,不确定它是否可以用于这样的东西.现在我很乐意输出它们.
非常感谢!亚历克斯
编辑:谢谢大家,你的答案都有很多帮助.
我经历了一些非常怪异的TreeMap行为,我在缩小一个小测试用例时遇到了一些麻烦,所以请耐心等待.
我想从运行时提供的文件中将大量键值对读入Map.我正在使用自定义密钥类.后来,当我把条目撤回时,我发现其中一个或多个丢失了.使用调试器和一些测试用例,我已经确定缺少的条目在读取阶段肯定会消失,但我不确定是什么导致它.
基本上:
Map<MyKey,Double> map = new TreeMap<MyKey,Double>();
map.put(key1,value1);
// ... put another ~500 entries into the map ...
assertTrue(map.containsKey(key1)); // passes
if (!map.containsKey(keyN)) {
map.put(keyN, valueN); // this code executes
}
assertTrue(map.containsKey(key1)); // FAILS
Run Code Online (Sandbox Code Playgroud)
......实质上,向地图添加一个全新的密钥会导致无关的条目失效.
我最初使用TreeMap是因为我希望使用大型数据集,而TreeMap的内存效率更高一些.HashMap将是一个很好的选择,但看到TreeMap以这种方式表现仍然令人震惊 - 任何人都对这里发生的事情有所了解?
我有一张地图:TreeMap<String, Integer> m = new TreeMap<>();我有一个完整的字母和值,显示我的文字中每个字母的次数.
我想按递减计数顺序对该地图进行排序; 也就是说,最常见的字母在第一行,最后一行表示最不频繁的字母.如果两个字母具有相同的频率,那么字母表中首先出现的字母必须首先出现.怎么做?
我试过Comparator:
public int compare(String a, String b) {
if (base.get(a) >= base.get(b) && a.compareToIgnoreCase(b) < 0) {
return -1;
} else {
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
但仍然,不是它,输出是:
D 3
E 3
A 2
S 5
Run Code Online (Sandbox Code Playgroud)
伙计们......之前发现这个,这根本没有帮助.好的输出应该是:
S 5
D 3
E 3
A 2
Run Code Online (Sandbox Code Playgroud) 我有一个使用tmPlot函数from 的包treemap,但是当我尝试使用该函数时,它会抛出一个错误,它没有加载其中一个依赖项:
Error in tmPlot(data, index = index, vSize = vSize) :
could not find function "brewer.pal"
Run Code Online (Sandbox Code Playgroud)
依赖项已安装在命名空间中.
这个问题有一些设置,是一个包问题,但我试图尽可能减少它:
确保已安装treemap(及其所有依赖项).
我做了一个名为'anRpackage'的目录.里面是一个文件夹('R')和一个带有以下文字的DESCRIPTION文件:
Package: anRpackage
Title: What the package does (short line)
Version: 1.0
Author: Who wrote it
Maintainer: Who to complain to <yourfault@somewhere.net>
Description: More about what it does (maybe more than one line)
License: What license is it under?
Imports:
treemap
Collate:
'maketree.R'
Run Code Online (Sandbox Code Playgroud)
R /文件夹里面是一个名为'maketree.R'的R文件.其内容是:
#' maketree
#'
#' @importFrom treemap tmPlot
#' @export …Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多关于红黑树的文章,其中需要O(log n)时间进行操作.我不太清楚它是如何工作的以及实际上树图如何使用红黑树算法来平衡树与二叉搜索树相比.
任何人都可以用一个例子解释算法是如何工作的.
我有一些分层数据,例如,
> library(dplyr)
> df <- data_frame(id = 1:6, parent_id = c(NA, 1, 1, 2, 2, 5))
> df
Source: local data frame [6 x 2]
id parent_id
(int) (dbl)
1 1 NA
2 2 1
3 3 1
4 4 2
5 5 2
6 6 5
Run Code Online (Sandbox Code Playgroud)
我想通过圆形包装图在"自上而下"的视图中绘制树:http: //bl.ocks.org/mbostock/4063530
以上链接适用于d3库.是否有一个等价物允许我在ggplot2中制作这样的情节?
(我希望这个情节在一个闪亮的应用程序,它确实支持d3,但我之前没有使用过d3并且不确定学习曲线.如果d3是明显的选择,我会尝试让它工作.谢谢.)
我有一个树图声明如下:
TreeMap<Integer, Integer> tree = new TreeMap<Integer, Integer>();
Run Code Online (Sandbox Code Playgroud)
如何检索具有最大值的密钥。是否有O(1)方法来实现这一目标。我知道可以在O(1)时间内从TreeMap中检索最大和最小键,如下所示:
int maxKey = tree.lastEntry().getKey();
int minKey = tree.firstEntry().getKey();
Run Code Online (Sandbox Code Playgroud)
感谢帮助。