你能告诉我它之间的区别是什么Thread.currentThread().getContextClassLoader()
,TestServlet.class.getClassLoader()
不要把它标记为重复,请解释并告诉我何时使用这些
Java文件:
package com.jar.test;
public class TestServlet {
public static void main(String args[]) {
ClassLoader cls = TestServlet.class.getClassLoader().loadClass(
"com.jar.test.TestServlet");
ClassLoader cls = Thread.currentThread().getContextClassLoader()
.loadClass("com.jar.test.TestServlet");
}
}
Run Code Online (Sandbox Code Playgroud) 在我们的项目中,我们使用 spring 进行Junit
Junit 测试。我们使用@ContextConfiguration
注释来加载多个文件。我们有两个类AbstractContextJUnitTest
和ContextJUnitTest
并ContextJUnitTest
扩展AbstractContextJUnitTest
。
在代码流程中,我注意到多个文件中具有不同 bean 类型的相同 bean Id。当我测试这些 Junits 并收到以下错误时。
错误:
org.springframework.beans.factory.BeanNotOfRequiredTypeException:名为“voterId”的 Bean 预计为 [com.spring.test2.Student] 类型,但实际上为 [com.spring.test2.Parent] 类型
我的要求是学生 bean 应该加载 VoterId 而不是 Parent Bean。
下面是java文件和spring bean xml文件:
测试.xml:
<beans>
<context:annotation-config/>
<bean id="voterId" class="com.spring.test2.Parent">
<property name="Name" value="hai"/>
</bean>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="system" />
<property name="password" value="system" />
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean> …
Run Code Online (Sandbox Code Playgroud) 谁可以让我知道以下程序如何在内部工作:
public class Main {
public static void main(String[] args) {
Consumer<String> c = (x) -> System.out.println(x.toLowerCase());
c.andThen(c).andThen(c).accept("Java2s.com");
}
}
Run Code Online (Sandbox Code Playgroud) 我只是想知道 DTO 类是否包含另一个对象。请告诉我下面的代码是否是有效的 DTO 类?
class Address implements Serializable{
private String city;
private String location
}
class EmployeeDTO implements Serializable{
private String name;
private int age;
private Address address;
//setters and getters
}
Run Code Online (Sandbox Code Playgroud) 我只是想更多关于以下声明.当我试图理解HDFS如何写入数据节点时.我得到了关于HDFS写入的以下解释.
为什么hdfs客户端将4kb发送到数据节点而不是将整个块64MB发送到数据节点?有人可以详细解释一下吗?
为了获得更好的性能,数据节点维护用于数据传输的管道.数据节点1在其开始传输到流中的数据节点2之前不需要等待完整的块到达.实际上,对于给定块,从客户端到数据节点1的数据传输发生在4KB的较小块中.当数据节点1从客户端接收到第一个4KB块时,它将该块存储在其本地存储库中,并立即开始将其传输到流中的数据节点2.同样,当数据节点2从数据节点1接收到第一个4KB块时,它将该块存储在其本地存储库中并立即开始将其传输到数据节点3.这样,流中除最后一个之外的所有数据节点都从前一个并将其传输到流中的下一个数据节点,以通过避免每个阶段的等待时间来提高写入性能.
我正在使用 Iteratot 迭代 ArrayList 的元素。在迭代时,我在最后将一个元素添加到 ArrayList 中。但是得到一个错误:ConcurrentModificationException。
如果我将 ArrayList 更改为 Set 并尝试在迭代过程中最后在 set 中添加元素,则不会抛出错误
测试.java
class Test {
public static void main() {
ArrayList<Integer> al = new ArrayList<Integer>();
al.add(20);
al.add(30);
al.add(40);
Iterator<Integer> it = marks.iterator();
while (it.hasNext()) {
int value = it.next();
if (value == 40) al.add(50);
}
}
}
Run Code Online (Sandbox Code Playgroud)
测试2.java
class Test2 {
public static void main() {
Set<Integer> marks = new HashSet<>();
marks.add(20);
marks.add(30);
marks.add(40);
Iterator<Integer> it = marks.iterator();
while (it.hasNext()) {
int value = it.next();
if (value …
Run Code Online (Sandbox Code Playgroud) java ×5
classloader ×1
collections ×1
dataflow ×1
hadoop ×1
hdfs ×1
jakarta-ee ×1
java-8 ×1
junit4 ×1
spring ×1
spring-mvc ×1
unit-testing ×1