小编Gio*_*uri的帖子

何时在Spring中使用ModelAndView vs Model?

这听起来对专家来说可能是愚蠢的,Spring但我不得不问.你如何决定何时使用ModelAndView对比Model

毕竟我研究过的最好的答案就是这个.它已经提到,ModelAndView是一个古老的道路,ModelString返回是一种新的方式Spring.

我的问题是,我们ModelAndView现在应该弃用旧的Model吗?或者是否有任何需要使用ModelAndView它的情况.

此外,没有人知道为什么要改ModelAndViewModelStringView,和有什么好处?

java spring spring-mvc

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

无法在 JPA @Entity 类中声明 List 属性。它说“基本”属性类型不应该是容器

我有一个 JPA @Entity class Place,其中的一些属性包含一些有关地点的信息,例如地点名称、描述和某些图像的 URL。

对于图像的 URL,我List<Link>在我的实体中声明了一个。

在此处输入图片说明

但是,我收到此错误:

Basic attribute type should not be a container.

我试图删除@Basic,但错误消息仍然存在。我不知道为什么它会显示此错误。

有什么帮助吗?

java hibernate jpa

27
推荐指数
5
解决办法
4万
查看次数

关于调用Java接口方法的困惑

假设我有一个接口A,定义如下:

public interface A {
  public void a();
}
Run Code Online (Sandbox Code Playgroud)

它包括调用的方法 void a();

我有一个实现此接口的类,只有一个方法:

    public class AImpl implements A {
       @Override
       public void a() {
           System.out.println("Do something");
       }
    }
Run Code Online (Sandbox Code Playgroud)

问:如果在主类中,我调用接口方法,它会调用属于实现接口的类的实现吗?

例如:

public static void main(String[] args){
  A aa;
  aa.a();
}
Run Code Online (Sandbox Code Playgroud)

这会打印"做点什么"吗?

java interface

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

JPS 增量注释处理被禁用。部分重新编译的编译结果可能不准确

因为IntelliJ IDEA 2020.3.2(我使用社区版),我开始得到:

Parsing java... [applicationname]
java: JPS incremental annotation processing is disabled. Compilation results on partial recompilation may be inaccurate.
Use build process "jps.track.ap.dependencies" VM flag to enable/disable incremental annotation processing environment.
Writing classes
Run Code Online (Sandbox Code Playgroud)

警告,在 IntelliJ IDEA 中运行应用程序时。

这实际上发生在构建阶段,当您“第一次”运行应用程序时(更准确地说,target是在构建时(或您配置为构建结果目录的任何内容))。

这个消息是什么意思?

intellij-idea

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

让容器使用 OpenJDK 和现有容器的库

我正在用我的论文做一些实验,涉及容器发生的冷启动问题。我的测试应用程序是一个基于 openjdk 映像构建的 Spring Boot 应用程序。我想尝试解决冷启动问题的第一件事是:

准备一个容器,容器中是 openjdk 和 springboot 应用程序使用的库。我启动我的另一个容器,使用现有容器的 ipc 和网络命名空间,然后能够使用 openjdk 和这个容器的库来运行 jar 文件。

我不确定如何实现这一目标?我可以通过使用卷来实现这一点,还是应该寻找一种完全不同的方法?

另一方面,如果我想要 x 个容器运行,我将确保有 x 个预先存在的容器在运行。这是为了确保每个容器都有自己特定的 librarycontainer 可以使用。这样可以吗?

简而言之,我可以通过使用通过 ipc/net 连接的第二个容器来加速 spring boot 应用程序的任何方式;会对我的问题有所帮助。

java docker

19
推荐指数
1
解决办法
373
查看次数

尝试使用资源文件编写器是一种好习惯吗

我在网上和“Effective Java”(Joshua Bloch 着)一书中看到了这个例子。

try(BufferedWriter writer = new BufferedWriter(new FileWriter(fileName))){
  writer.write(str); // do something with the file we've opened
}
catch(IOException e){
  // handle the exception
}
Run Code Online (Sandbox Code Playgroud)

这个例子没有问题,BufferedWriter它会自动关闭,然后关闭FileWriter; 但是,在其他情况下,如果我们以这种方式声明 2 个嵌套资源:

try (AutoClosable res = new Impl2(new Impl1())) {... }
Run Code Online (Sandbox Code Playgroud)

我想可能会发生new Impl1()性能良好但new Impl2()崩溃的情况,在这种情况下,Java 将没有引用Impl1, 以关闭它。

像这样始终独立声明多个资源(即使在这种情况下不需要)难道不是更好的做法吗?

try(FileWriter fw = new FileWriter(fileName); 
    BufferedWriter writer = new BufferedWriter(fw)){ ... }
Run Code Online (Sandbox Code Playgroud)

java java-7 try-with-resources

19
推荐指数
1
解决办法
2402
查看次数

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

List <int> vs int list

有什么区别List<int>int list?例如,当我写一个函数

let somefn a : int list = a
Run Code Online (Sandbox Code Playgroud)

let somefn2 a : List<int> = a
Run Code Online (Sandbox Code Playgroud)

返回值类型因符号样式而异,甚至在控制台输出中,当我调用这些函数时,它会显示两种明显不同的类型

val it : int list = ...
Run Code Online (Sandbox Code Playgroud)

val it : List<int> = ...
Run Code Online (Sandbox Code Playgroud)

虽然逻辑和想法似乎相同,但解释器/编译器以不同的方式解释这两种类型.

有什么区别吗?

generics f# list

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

Java 中的孵化器模块与预览功能

JEP 11:孵化器模块

概括

孵化器模块是将非最终 API 和非最终工具交到开发人员手中的一种方法,而 API/工具则在未来版本中朝着最终确定或删除的方向发展。

目标

使 JDK 发布项目能够分发一组有限的 API 和工具(网站上可能缺少“是”),这些 API 和工具不是最终的和完整的,并且可以从开发人员或用户的反馈中受益。这将减少 Java SE 平台和 JDK 中出现代价高昂的错误的机会。


JEP 12:预览功能

概括

预览功能是 Java 语言、Java 虚拟机或 Java SE API 的一项新功能,它是完全指定、完全实现的,但不是永久的。它在 JDK 功能版本中可用,以激发开发人员根据实际使用情况提供反馈;这可能会导致它在未来的 Java SE 平台中永久存在。

目标

允许 Java 平台开发人员传达新功能是否会在未来 12 个月内以其当前形式“来到 Java”。


我想知道分别拥有这两个在概念上(甚至在语义上)非常相似的方面有什么意义?

是的,JEP 12 有更多的目标,定义和总结略有不同;而且它似乎与 JVM 内部有更密切的联系;然而,这两个 JEP 对我来说似乎很重叠。

有任何想法吗?

java jls jep

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

F#中的阴影与设置值

我已经介绍过,默认情况下,数据在F#中是不可变的.当我们将值重新赋值给某个变量时,真正发生的是它重新绑定变量的值,但设置新值是不同的事情.重新绑定称为阴影,而如果我们明确地没有说变量的值是可变的,则设置新值是不可能的.

任何人都可以详细解释这个概念吗?阴影(重新绑定)之间有什么区别

let var = "new_value"
Run Code Online (Sandbox Code Playgroud)

并设置新值

var <- "new_value"
Run Code Online (Sandbox Code Playgroud)

这是一个时刻,在重新绑定期间我们创建另一个对象并将该对象的地址分配给变量,而在第二个示例中我们更改值本身?我从堆/堆栈中了解了内存......我可能错了.

谢谢

f# immutability shadowing

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