小编Ada*_*lik的帖子

泛型返回类型上限 - 接口与类 - 令人惊讶的有效代码

这是来自第三方库API的真实示例,但已简化.

使用Oracle JDK 8u72编译

考虑这两种方法:

<X extends CharSequence> X getCharSequence() {
    return (X) "hello";
}

<X extends String> X getString() {
    return (X) "hello";
}
Run Code Online (Sandbox Code Playgroud)

两者都报告了"未经检查的演员"警告 - 我明白了.困扰我的是我为什么打电话

Integer x = getCharSequence();
Run Code Online (Sandbox Code Playgroud)

它编译?编译器应该知道Integer没有实现CharSequence.打电话给

Integer y = getString();
Run Code Online (Sandbox Code Playgroud)

给出错误(如预期的那样)

incompatible types: inference variable X has incompatible upper bounds java.lang.Integer,java.lang.String
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么这种行为被认为是有效的?它会有用吗?

客户端不知道此调用是不安全的 - 客户端的代码在没有警告的情况下编译.为什么编译器不会警告/发出错误?

另外,它与这个例子有什么不同:

<X extends CharSequence> void doCharSequence(List<X> l) {
}

List<CharSequence> chsL = new ArrayList<>();
doCharSequence(chsL); // compiles

List<Integer> intL = new ArrayList<>();
doCharSequence(intL); // …
Run Code Online (Sandbox Code Playgroud)

java generics java-8

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

对于CIFS共享上的文件,PHP file_exists有时会返回false

我有一个安装在Ubuntu 14.04.2 LTS(内核3.13.0-61-generic)上的Windows Server 2012 R2的CIFS共享

/ etc/fstab文件

//10.1.2.3/Share /Share cifs credentials=/root/.smbcredentials/share_user,user=share_user,dirmode=0770,filemode=0660,uid=4000,gid=5000,forceuid,forcegid,noserverino,cache=none 0 0
Run Code Online (Sandbox Code Playgroud)

gid=5000对应于组www-data运行在PHP过程.

当我通过以www-data用户身份登录的控制台进行检查时,文件正确安装- 它们是可读和可移动的(PHP脚本使用的操作).

PHP脚本每天处理大约50-70,000个文件.这些文件是在主机Windows机器上创建的,一段时间后,Linux机器上运行的PHP脚本会收到有关新文件的通知,检查文件是否存在(file_exists),读取和删除.通常一切正常,但有时(每天几百到1-2 000)PHP脚本会引发文件不存在的错误.绝不应该这样,因为只通知实际存在的文件.

当我手动检查那些报告为不存在的文件时,它们可以在Ubuntu机器上正确访问,并且具有从PHP脚本检查它们存在之前的创建日期.

然后我手动触发PHP脚本来获取该文件,并且它可以毫无问题地被拾取.

我已经尝试过了什么

有许多类似的问题,但我似乎已经用尽了所有的建议:

  • clearstatcache()在检查前添加了file_exists($f)
  • 文件和目录权限都正常(以后正确选取完全相同的文件)
  • 用于检查的路径file_exists($f)是绝对路径,没有特殊字符 - 文件路径始终是格式/Share/11/222/333.zip(具有各种数字)
  • 我使用了noserverinoshare mount参数
  • 我使用了cache=noneshare mount参数

/proc/fs/cifs/Stats/显示如下,但我不知道这里是否有任何可疑之处.有问题的是2) \\10.1.2.3\Share

Resources in use
CIFS Session: 1
Share (unique mount targets): 2
SMB Request/Response Buffer: 1 Pool size: 5
SMB Small Req/Resp Buffer: 1 Pool size: …
Run Code Online (Sandbox Code Playgroud)

php linux share mount cifs

27
推荐指数
1
解决办法
1389
查看次数

Java 7 zip文件系统提供程序似乎不接受URI中的空格

我一直在测试所有可能的变体和排列,但我似乎无法使用zip/jar方案为包含空格的路径(URI)构建FileSystemProvider.Oracle Docs提供了一个非常简单的测试用例.我冒昧地修改了这个例子,只是在URI中添加空格,它就停止工作了.下面的代码段:

import java.util.*;
import java.net.URI;
import java.nio.file.*;

public class Test {
    public static void main(String [] args) throws Throwable {
        Map<String, String> env = new HashMap<>(); 
        env.put("create", "true");
        URI uri = new URI("jar:file:/c:/dir%20with%20spaces/zipfstest.zip");
        Path dir = Paths.get("C:\\dir with spaces");
        if(Files.exists(dir) && Files.isDirectory(dir)) {
            try (FileSystem zipfs = FileSystems.newFileSystem(uri, env)) {}
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我执行此代码(Windows,JDK7u2,x32和x64)时,我得到以下异常:

java.lang.IllegalArgumentException: Illegal character in path at index 12: file:/c:/dir with spaces/zipfstest.zip
    at com.sun.nio.zipfs.ZipFileSystemProvider.uriToPath(ZipFileSystemProvider.java:87)
    at com.sun.nio.zipfs.ZipFileSystemProvider.newFileSystem(ZipFileSystemProvider.java:107)
    at java.nio.file.FileSystems.newFileSystem(FileSystems.java:322)
    at java.nio.file.FileSystems.newFileSystem(FileSystems.java:272)
Run Code Online (Sandbox Code Playgroud)

如果我使用+而不是%20作为空格转义字符,则抛出另一个异常:

java.nio.file.NoSuchFileException: c:\dir+with+spaces\zipfstest.zip
    at …
Run Code Online (Sandbox Code Playgroud)

java java-7

20
推荐指数
3
解决办法
8829
查看次数

SaltStack:是否可以在主服务器上应用状态,如果可以,如何应用?

我是SaltStack的初学者,但是我已经设法在一台机器上设置一些状态并在一个小兵上运行它们.

我现在拥有的是使用salt-master的Debian机器设置以及另一个作为salt-minion的Debian设置.

由于我也使用salt-master作为开发机器,我想知道我是否可以以某种方式在主机本身上应用状态.如果是这样,怎么样?

是否有一个命令可以运行以在主站上应用状态?(到目前为止我无法找到它)

我是否应该在同一台机器上安装salt-minion以便能够执行此操作并简单地将同一台机器注册为minion本身?

谢谢!

salt-stack

19
推荐指数
2
解决办法
9130
查看次数

如何在MAMP中创建虚拟主机?

我是Mac的新手,但是很长一段时间都在使用Ubuntu进行开发.我知道如何在Ubuntu中创建虚拟主机,但不知道Mac.我创建了hosts如下条目:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost mysite.loc
255.255.255.255 broadcasthost
::1             localhost
Run Code Online (Sandbox Code Playgroud)

但接下来该怎么办?

macos mamp virtualhost

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

IntelliJ System.out.println() - 无法解析方法println(java.lang.String)

我正在使用IntelliJ IDEA,学习Java.直到昨天发生上述错误时,一切顺利.

我没有做任何改变.我正在寻找以下方法的解决方案:

  1. 重新启动电脑
  2. 重启IntelliJ.
  3. 删除项目目录并使用另一个(都在桌面上)

无济于事.买跑步简单的你好世界的方法.它一直显示此错误:

截图

有人能帮助我吗?

intellij-idea println

14
推荐指数
6
解决办法
3万
查看次数

检查文件存在并创建符号链接

我想做那样的事情:

如果文件A存在或没有符号链接B,我想创建一个符号链接B - > A.

现在我有:

 B:
   file:
    - symlink:
       - target: A
    - exists:
        - name: A
Run Code Online (Sandbox Code Playgroud)

但这很糟糕,它不是我想要的东西.我怎样才能在盐中取这个简单的东西?

salt-stack

12
推荐指数
2
解决办法
2万
查看次数

Linting Salt声明没有运行它们

我在homelab中使用Saltstack,我经常发现自己在测试时检查了一些略微破坏的规则.我希望能够在本地和Jenkins实例上检查它们的有效性,否则它们是lint它们,但我找不到任何关于我如何这样做的文档.有什么我想念的吗?

salt-stack

12
推荐指数
2
解决办法
3763
查看次数

我们怎样才能查询Kibana?

我们如何通过REST API请求Kibana来获取可视化请求和响应?

像这样: 截图

我想用NodeJS来操作Kibana的这个结果.目的是我想以编程方式直接查询Kibana(通过REST API)来获取ES请求体.

api rest elasticsearch kibana

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

为什么JAXB生成的类有受保护的成员,我该如何更改?

我一直在网上搜索JAXB生成的类有保护成员的原因(所有这些都是继承的).

我希望这些成员是私人的.

我的搜索空洞了.

我有正常的xsd文件,使用Maven和JAXB转换为Java类.理想情况下,生成的成员应该是私有的,但我找不到实现此目的的方法.

有没有办法修改此默认行为?

java xml jaxb

10
推荐指数
2
解决办法
4174
查看次数