我有一个Employee具有以下列的实体:
@Entity
class Employee {
@Column(name = "first_name", length = 14)
private String firstName;
Run Code Online (Sandbox Code Playgroud)
我有一个 Spring JPA 存储库:
@Repository
public interface EmployeeRepository extends CrudRepository<Employee, Integer> {
Run Code Online (Sandbox Code Playgroud)
我test/resources/application.properties有以下内容,以便使用内存中的 h2 数据库和自动生成的表:
spring.jpa.hibernate.ddl-auto=create
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:mem:db;DB_CLOSE_DELAY=-1
spring.datasource.username=sa
spring.datasource.password=sa
Run Code Online (Sandbox Code Playgroud)
我预计这个测试会失败,因为它的firstName长度超过了允许的长度:
@DataJpaTest
public class EmployeeRepositoryTest {
@Autowired
private EmployeeRepository employeeRepository;
@Test
public void mustNotSaveFirstNameLongerThan14() {
Employee employee = new Employee();
employee.setFirstName("koraykoraykoray"); // 15 characters!
employeeRepository.save(employee);
}
}
Run Code Online (Sandbox Code Playgroud)
我很惊讶地发现这个测试没有失败,但是以下测试确实失败了:
@DataJpaTest
public class EmployeeRepositoryTest {
@Autowired
private EmployeeRepository employeeRepository;
@Test
public void …Run Code Online (Sandbox Code Playgroud) 我有一个宁静的服务(post)消耗(application/json)并生成(application/json).此服务的单个参数是带注释的java对象.
我正在使用org.jboss.resteasy.client.ClientRequest将请求发送到服务.但是,我在客户端获得此异常并且异常:
找不到内容类型application/json类型的writer.
这是否意味着我缺少一些图书馆罐子,或者我必须为application/json编写自己的编写器?
我正在使用resteasy 2.3.3.Final
以下是我添加到我的pom中的各种依赖项,我认为可能与之相关:
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>2.3.3.Final</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.0.5</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxb-provider</artifactId>
<version>2.3.4.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>2.3.4.Final</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.3.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
马特
所以我有这个用Java编写的方法:
public void myMethod(int y){
int x = 5 + y;
doSomething(x);
}
Run Code Online (Sandbox Code Playgroud)
并假设我的应用程序调用了很多次..
在Java虚拟机上运行此方法的已编译代码时,JVM将首先解释该方法.然后经过一段时间后,如果我理解正确,它将决定将其编译为机器语言.
在此刻,
它会被内存中的机器代码覆盖吗?如果被覆盖,那么尺寸差异的问题将如何解决?如果它被写入内存中的其他位置,那么加载到内存中的字节码是否会被释放?而且,如果字节码和jit编译的代码都在内存中,当应用程序再次遇到此方法时,JVM如何决定执行jit编译的代码而不是字节代码?
这是我的代码:
#include <stdlib.h>
#include <stdio.h>
int sum(int,int);
int sum(int x, int size) {
int sum = 0;
printf("%p\n", &x);
printf("%p\n", &size);
printf("%p\n", &sum);
sum(x,size);
return 0;
}
int main() {
sum(2,4);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
而我得到的错误是:
hello.c:11:5: error: called object type 'int' is not a function or function pointer
sum(x,size);
~~~^
Run Code Online (Sandbox Code Playgroud) 我不确定我是否理解:
<session-config>
<session-timeout>30</session-timeout> <!-- 30 minutes! -->
<cookie-config>
<http-only>true</http-only>
<max-age>1800</max-age> <!-- 1800 seconds: 30 minutes! -->
</cookie-config>
<tracking-mode>COOKIE</tracking-mode>
</session-config>
Run Code Online (Sandbox Code Playgroud)
另外,有没有办法在web.xml中配置所有cookie?这似乎仅适用于会话cookie.我需要过滤器才能使用此功能吗?
当用户使用无效 ID 搜索我的存储库时,我想抛出一个自定义错误类。这应该很简单,但我似乎无法捕捉到 JpaRepository 抛出的任何错误。我已经多次尝试解决这个问题,但以下是我最直接的尝试:
try {
Object obj = repository.getOne(id)
}
catch (EntityNotFoundException e) {
throw CustomException("message");
}
Run Code Online (Sandbox Code Playgroud)
在调试器中运行它时,存储库会抛出我期望的确切异常javax.persistence.EntityNotFoundException,但代码只是跳过了我的 catch 语句,并且函数返回一个错误。
我尝试使用repository.findById(id)类似的结果。我也试过捕捉Exception和Throwable。有任何想法吗?如果最终我的问题不是很明显,我会在我的帖子中添加更多信息。
Node.js®是基于Chrome的V8 JavaScript引擎构建的JavaScript运行时.
但是,根据这个答案,JavaScript是:
JavaScript = ECMAScript + DOM API;
并且Node.js运行时中没有DOM.(或者在那里?)还引用了本书:面向Web开发人员的专业JavaScript:
尽管JavaScript和ECMAScript通常是同义词,但JavaScript不仅仅是ECMA-262中定义的内容.实际上,完整的JavaScript实现由以下三个不同部分组成:
- 核心(ECMAScript)
- 文档对象模型(DOM)
- 浏览器对象模型(BOM)
它支持我链接到的答案.
考虑到上述事实,说Node.js是ECMAScript运行时是不正确的?如果没有,如果我们想要分割Node.js并使其成为ECMAScript运行时而不是JavaScript运行时,我们需要删除(或添加?)?
我在Java 8中有这个简单的代码:
class ThreadTest {
void threadTest() {
new Thread(this::threadTest).start();
System.out.println(Thread.activeCount());
}
public static void main(String[] args) {
new ThreadTest().threadTest();
}
}
Run Code Online (Sandbox Code Playgroud)
而且我非常期待看到非常大的数字被打印出来.我在控制台中看到的只有:
4
4
4
4
4
4
4
4
4
Run Code Online (Sandbox Code Playgroud)
我说也许我无法出于任何原因看到其他人,并修改了如下代码:
class ThreadTest {
void threadTest() {
new Thread(this::threadTest).start();
if (Thread.activeCount() > 4) {
System.out.println(Thread.activeCount());
}
}
public static void main(String[] args) {
new ThreadTest().threadTest();
}
}
Run Code Online (Sandbox Code Playgroud)
现在什么都没打印出来了.
我在这里错过了什么?
我的天真代码是:
class ${
public static void main(String[] _) {
final List<Integer> ints = new ArrayList<>();
IntStream.iterate(0, i -> i++).limit(5).forEach(val -> ints.add(val));
System.out.println(ints);
}
}
Run Code Online (Sandbox Code Playgroud)
我的期望是在控制台中看到以下内容:
[0, 1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)
但实际是:
[0, 0, 0, 0, 0]
Run Code Online (Sandbox Code Playgroud)
这可能是非常简单的事情,但我错过了什么?
我有以下内容Dockerfile:
FROM busybox
COPY ./manifest.json /usr/manifest.json
RUN rm /usr/manifest.json
Run Code Online (Sandbox Code Playgroud)
哪里manifest.json只是我找到的一些随机文件..
当我从这个 Dockerfile 构建图像时,将有 3 层(如预期)。当我检查这 3 层时,我将看到预期的文件层次结构。所以第一个层将相当冗长,例如...
bin/acpid
bin/add-shell
bin/addgroup
bin/adduser
bin/adjtimex
bin/ar
bin/arch
bin/arp
bin/arping
bin/ash
... many more
Run Code Online (Sandbox Code Playgroud)
第二层将是:
usr/manifest.json
Run Code Online (Sandbox Code Playgroud)
第三层是:
proc/.wh..wh..opq
sys/.wh..wh..opq
usr/.wh.manifest.json
Run Code Online (Sandbox Code Playgroud)
我猜.wh.manifest.json意味着在应用该层时删除该文件?(不确定,只是猜测..)
我的最终目标是实际创建生成的图像将具有的文件夹结构。因此,对于上述情况,它本质上应该等于第一层,因为我首先添加一个文件,然后删除它。
我找不到任何关于.wh代表什么的文档。迭代这样的层并继续添加文件(到某个目标,现在无关紧要)并删除添加的文件(如果发现它们带有前缀)是否.wh有意义?或者我完全关闭了,还有更好的方法吗?
如果有人感兴趣,我有一些 Java 代码,可以下载并检查图像的现有层:
FROM busybox
COPY ./manifest.json /usr/manifest.json
RUN rm /usr/manifest.json
Run Code Online (Sandbox Code Playgroud)