小编Ort*_*kni的帖子

如何在另一个jar内的jar中创建一个FileSystem

我正在尝试使用NIO FileSystem来访问另一个jar中的jar.调用外部jar my-outer.jar和内部my-inner.jar(使用Java 8和Windows 7,但我认为这不是问题)

我使用以下代码

    String zipfilePath = "c:/testfs/my-outer.jar!/my-inner.jar";
    Path path = Paths.get(zipfilePath);
    try(ZipFileSystem zipfs = (ZipFileSystem) FileSystems.newFileSystem(path, null))
    { ...  }
Run Code Online (Sandbox Code Playgroud)

但是我在尝试创建newFileSystem时遇到以下异常:

Exception in thread "main" java.nio.file.FileSystemNotFoundException: C:\testfs\my-outer.jar!\my-inner.jar
Run Code Online (Sandbox Code Playgroud)

请注意,如果我只使用外部jar作为FileSystem,它可以很好地工作,我可以很好地读取和写入文件.只是当我试图进入内部存档时,麻烦就开始了.

FileSystem不支持JarURLConnection表示法吗?

java nio

9
推荐指数
1
解决办法
1049
查看次数

分段和缓存有什么区别?

我正在阅读第二版Pro Git一书.

它说,在第21页:

git diff --staged 此命令将您的暂存更改与上次提交进行比较.

以及后面的页面(不解释缓存的含义)

git diff --cached 看看你到目前为止上演了什么.

现在我有点迷茫.分段和缓存有什么区别?

git

9
推荐指数
2
解决办法
244
查看次数

使用 Spring Data JPA 通过 @OneToMany 关系属性对实体进行排序

我正在开发使用 Spring Data JPA 作为其持久层的 Spring Boot Web 应用程序。从存储库检索实体时,我使用 Spring 的 Data JPASort对象对它们进行排序。当我按检索到的实体属性或 @OneToOne 关系对象属性进行排序时,它会起作用,但我想用它来按 @OneToMany 关系对象属性之一进行排序。

让我们用一个例子来解释:假设我有一个实体对象Author,它与另一个实体有一对多的关系Book。我的最简单形式的实体类如下所示:

@Entity
public class Author {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @OneToMany(mappedBy = "author")
    private List<Book> books;

    <constructor, getters, setters etc.>
}
Run Code Online (Sandbox Code Playgroud)

@Entity
public class Book {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    private String title;

    @ManyToOne
    @JoinColumn(name = "author_id")
    private Author author;

    <constructor, getters, setters etc.>
}
Run Code Online (Sandbox Code Playgroud)

现在,当我使用 Spring 的存储库接口检索作者时,我将 Sort …

java sorting jpa spring-data-jpa

9
推荐指数
1
解决办法
2982
查看次数

类型推断算法的哪些变化会导致这种行为?

我正在阅读来自Mala Gupta的OCP Java SE7认证指南.在页297,以下代码段

import java.util.HashMap;
import java.util.Map;

public class TestGenericTypeInference {
    Map<String,Double> salaryMap     = new HashMap<>();
    Map<String,Object> copySalaryMap = new HashMap<>(salaryMap);
}
Run Code Online (Sandbox Code Playgroud)

正在使用java 8进行编译,但是使用java 7,编译器会抱怨:

TestGenericTypeInference.java:8: error: incompatible types: HashMap<String,Double> cannot be converted to Map<String,Object>
    Map<String,Object> copySalaryMap = new HashMap<>(salaryMap);  
                                   ^
Run Code Online (Sandbox Code Playgroud)

我的问题是:类型推断算法的哪些变化会导致这种行为?

java generics type-inference

8
推荐指数
1
解决办法
209
查看次数

标准,谓词和规范之间有什么区别?

Spring Data JPA - 参考文档中,标准定义如下:

编写标准实际上是为域类定义查询的where子句.

规范和谓词似乎具有相同的作用.

标准,谓词规范之间有什么区别?

java spring jpa

8
推荐指数
2
解决办法
4953
查看次数

linux内核中的系统调用表在哪里?

我正在阅读Robert Love的Linux内核开发,他所做的一项练习是创建一个系统调用(第106页).问题是我无法在v3.9中找到x86_32体系结构的系统调用表文件.我知道他正在使用2.6.xx版本,但我不知道该版本是否适用于我正在使用的发行版,因为它很旧,所以我宁愿选择v3.9.

更多信息:我所说的练习如下:在系统调用表的末尾添加一个条目.这需要为每个支持系统调用的体系结构完成(对于大多数调用,这是所有体系结构)表中系统调用的位置,从零开始,是系统调用号.例如,列表中的第十个条目被分配了系统调用号9.

使用以下方法解决: 系统调用表位于x86体系结构的arch/x86/syscalls/syscall_32.tbl中.感谢Sudip Mukherjee的帮助.

另一种方法如下: http ://lists.kernelnewbies.org/pipermail/kernelnewbies/2013-July/008598.html 感谢Srinivas Ganji的帮助.

linux kernel

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

docker容器文件夹中的命名管道通过boot2docker挂载到mac os x文件系统

我正在使用Mac OS X上的boot2docker通过docker image包装一些科学软件.该软件(https://github.com/voutcn/megahit.git)正在使用命名管道(在python代码中,但它并不重要)将不同的部分(用C书写)相互连接起来.我从主机Mac OS X机器挂载临时文件夹,在docker容器中提供临时区域(因为软件的临时输出可能很大),如下所示:

docker run -v /external/folder:/tmp/scratch <image> <args>
Run Code Online (Sandbox Code Playgroud)

它给了我在容器内的这个挂载线:

none on /tmp/scratch type vboxsf (rw,nodev,relatime)
Run Code Online (Sandbox Code Playgroud)

在这个挂载的文件夹中,名为管道创建在容器内运行时失败.它甚至与python,C或任何特定语言无关.我mkfifo pipe1在这个文件夹中用linux命令检查了一次错误:

mkfifo: cannot create fifo 'pipe1': Operation not permitted
Run Code Online (Sandbox Code Playgroud)

它适用于容器内任何内部未安装的文件夹.为什么会发生这种情况又如何解决?

PS:这是我轻松重现问题的方法.

1)带有boot2docker的Mac OS X.

2)Dockerfile是:

FROM ubuntu:14.04
#WORKDIR /tmp <- this one would work
WORKDIR /tmp/scratch
ENTRYPOINT [ "mkfifo" ]
CMD [ "pipe1" ]
Run Code Online (Sandbox Code Playgroud)

3)图像构建:

docker build --rm -t mine/namedpipes:latest .
Run Code Online (Sandbox Code Playgroud)

4)运行(在要安装的外部主机文件夹中):

docker run -v $(pwd):/tmp/scratch mine/namedpipes:latest
Run Code Online (Sandbox Code Playgroud)

macos named-pipes docker boot2docker

7
推荐指数
1
解决办法
1037
查看次数

合并更新查询无法正常执行的问题

我试图在SQL Server中执行合并更新查询.

表"my_table"有4列"字段"(字符),"日期"(日期),"val"(数字),"修订版"(日期时间)

查询是这样的:

MERGE "my_table" AS Target USING ( VALUES ('field_example','2017-01-04','0','2017-01-03 12:02:02')) AS Source ("field","date","val","revision")
                   ON (Target."field" = Source."field" AND Target."date" = Source."date")
                   WHEN MATCHED 
                   THEN UPDATE SET Target."val" = Source."val",Target."revision" = Source."revision"
                   WHEN NOT MATCHED BY TARGET 
                   THEN INSERT ("field","date","val","revision")
                   VALUES (Source."field", Source."date", Source."val", Source."revision")
                   OUTPUT $action, Inserted.*, Deleted.*; 
Run Code Online (Sandbox Code Playgroud)

由于field_"field_example"和date ='2017-01-04'在"my_table"中已经有一行,我希望此查询更新另外两列"val","revision".

我得到以下查询输出:

$action            field       date            revision val          field.1     date.1          revision.1  val.1
1  UPDATE field_example 2017-01-04 2017-01-03 12:02:02   0 field_example 2017-01-04 2017-01-03 10:09:25 161250
Run Code Online (Sandbox Code Playgroud)

所以它看起来不错(要更新它应该)

但是当我查看数据库时,该行还没有更新(= val仍然是161250而不是0,修订版仍然是2017-01-03 10:09:25)

知道为什么吗?

sql sql-server version-control merge sql-update

7
推荐指数
1
解决办法
278
查看次数

隐藏移动Firefox中的地址栏

我尝试了各种scrollTo()解决方案,它们隐藏了移动浏览器中的地址栏,但它们似乎都没有在移动Firefox中运行.

在这种情况下是否需要使用不同的技巧?

html css firefox mobile fennec

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

JEP和JCP有什么区别或关系

JEP(JDK 增强提案)和 JCP(Java 社区进程)之间有什么区别或关系?

java

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