小编Dán*_*gyi的帖子

为什么 ImmutableCollection.contains(null) 失败?

coll.contains(null)前面的问题:为什么在 Java 中对 ImmutableCollections 的调用会失败?

我知道,不可变集合不能包含空元素,我不想讨论这是好是坏。

但是,当我编写一个需要一个(一般的,非显式不可变的)集合的函数时,它在检查空值时失败。为什么实现不返回 false(这实际上是“正确”答案)?

Collection一般来说,我如何正确检查 a 中的空值?

编辑: 经过一些讨论(感谢评论者!)我意识到,我混淆了两件事:番石榴库中的ImmutableCollection和java.util.List.of返回的 List ,是 ImmutableCollections 中的某个类。然而,这两个类都会在 上抛出 NPE .contains(null)

我的问题在于List.of结果,但从技术上讲,番石榴实施也会发生同样的情况。[编辑:事实并非如此]

java collections immutability

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

Java客户端的单点登录

我正在寻找Java客户端中的单点登录身份验证。

由于我使用AD登录Windows,因此主要目的是不必再次输入用户名和密码。我希望Java使用Windows登录时收到的票证。这段代码是我为此目的所拥有的最好的代码:

LoginContext lc = new LoginContext("com.sun.security.jgss.krb5.initiate", new DialogCallbackHandler());
lc.login();
Subject.doAs(lc.getSubject(), (PrivilegedExceptionAction<Void>) () -> {
            System.out.println("This is privileged");
            return null;
        });
Run Code Online (Sandbox Code Playgroud)

我已经为java.security.krb5.confjava.security.auth.login.config属性设置了相应的conf文件,但是仍然弹出一个对话框,询问用户名和密码。

我也尝试使用GSSName,但GSSManager.createCredential()同时要求输入用户名和密码(可能使用TextCallbackHandler())。

我尝试与Waffle融洽相处,但没有使其正常工作。大多数示例和说明都是在服务器端进行的(我只发现了一个结合服务器端和客户端的示例,但是我无法将其拆分)。

我知道,也有类似的问题(例如this),但是我在没有输入密码的情况下无法正常工作。

PS:我知道,那DialogCallbackHandler是描述性的,我仅将其用于测试目的。

java single-sign-on

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

matplotlib 中以空格作为千​​位分隔符的科学刻度数

我想在 y 轴上设置刻度,格式如下:

  • 应写出 < 1M 的数字,并用空格作为千​​位分隔符(例如20 000
  • 数字 > 1M 应该采用科学计数法,就像标量格式化程序一样(2.0x10^6轴上方)。

现在,我可以分别实现这两个功能。

matplotlib.ticker.FuncFormatter(lambda x, p: format(x, ',').replace(',', ' '))
Run Code Online (Sandbox Code Playgroud)

用空格替换千位分隔符。

formatter = matplotlib.ticker.ScalarFormatter()
formatter.set_powerlimits((-4, 6))
Run Code Online (Sandbox Code Playgroud)

给出 1M+ 的科学记数法。

我想我必须设置一个 ScalarFormatter 并稍微改变它的一个函数,或者我必须用 FuncFormatter 在 y 轴上方写入。但是,我找不到如何做到这一点。

编辑

我稍微接近了我的目标。通过使用format(x, ',.6g').replace(',', ' ')我至少拥有所需的数字格式。尽管如此,我更喜欢在
轴上 方使用指数符号,并且对于我的所有刻度,如果最大的刻度变得太大......

python matplotlib

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