提交 0827c202 编写于 作者: W wizardforcel

2020-06-10 12:06:16

上级 d0bbc1a2
......@@ -156,7 +156,7 @@ public class IsbnEditor extends PropertyEditorSupport {
举个例子。 开发人员 Alex 创建了一个接口`Reportable`并添加了两种方法`generateExcel()``generatedPdf()`。 现在,客户“ A”希望使用此界面,但他打算仅使用 PDF 格式的报告,而不使用 excel。 他将能够轻松使用该功能吗?
没有。 他将必须实现这两种方法,其中一种是软件设计人员要给他增加的负担。 他要么实现另一种方法,要么将其留空。 这不是一个好的设计。
没有。 他将必须实现这两种方法,其中一种是软件设计人员要给他增加的负担。 他或者实现另一种方法,或者将其留空。 这不是一个好的设计。
那么解决方案是什么? 解决方案是通过破坏现有接口来创建两个接口。 它们应该像`PdfReportable``ExcelReportable`。 这将为用户提供灵活性,使其仅使用必需的功能。
......
......@@ -66,7 +66,7 @@ layout.addComponents(txtFldOne);
```
//要么
//或者
```java
final TextField txtFldTwo = new TextField();
......
......@@ -4,7 +4,7 @@
这是一个非常常见的采访问题。 询问您是否有一个只能在一个方向上移动的链表,并且如果该链表中有一个循环,您将如何检测到它?
好吧,如果您不知道答案,那就不要灰心丧气。 我个人的观点是,这类问题无法评估候选人的逻辑思维,因为这样的问题具有非常具体的答案。 您要么知道,要么不知道。
好吧,如果您不知道答案,那就不要灰心丧气。 我个人的观点是,这类问题无法评估候选人的逻辑思维,因为这样的问题具有非常具体的答案。 您或者知道,或者不知道。
对于这个特定问题,面试官寻找的最佳答案是“ [**`Floyd's Cycle-Finding Algorithm`**](https://en.wikipedia.org/wiki/Cycle_detection#Tortoise_and_hare "Floyd's Cycle-Finding Algorithm") ”。 该算法提出了一种解决方案,建议您一次仅具有两个指针,而不是仅一个遍历列表的指针。 两个指针都将从链接列表的第一个节点开始,并使用 next 属性遍历。
......
......@@ -259,7 +259,7 @@ ThreadPoolExecutor 将任务创建和执行分开。 使用 ThreadPoolExecutor
Spring **AOP** (面向方面​​的编程)在某种意义上补充了 OOP,因为它也提供了模块化。 在 OOP 中,关键单位是“对象”,但在 AOP 中,关键单位是方面或横切关注点,例如日志记录和安全性。 AOP 提供了一种使用简单的可插拔配置在实际逻辑之前,之后或周围动态添加横切关注点的方法
通过这些最常见的 AOP 面试问题 -
通过这些最常见的 AOP 面试问题
* 关注点和跨领域关注点之间的区别?
* 有哪些可用的 AOP 实现?
......@@ -270,7 +270,7 @@ Spring **AOP** (面向方面​​的编程)在某种意义上补充了 OOP
#### 4.3 [Spring MVC 面试问题](https://howtodoinjava.com/interview-questions/spring-mvc-interview-questions-with-answers/)
这些 Spring MVC 面试问题和答案已被编写,可帮助您为面试做准备,并快速地对总体概念进行修订。 如果有多余的时间,我强烈建议您更深入地研究每个概念。 一般来说,您应该能够回答以下问题 -
这些 Spring MVC 面试问题和答案已被编写,可帮助您为面试做准备,并快速地对总体概念进行修订。 如果有多余的时间,我强烈建议您更深入地研究每个概念。 一般来说,您应该能够回答以下问题
* 什么是 MVC 架构?
* 什么是 DispatcherServlet 和 ContextLoaderListener?
......
......@@ -169,7 +169,7 @@ Java 基于 [Hoare](https://en.wikipedia.org/wiki/Tony_Hoare) 的监视器概念
我们可以使用`Iterator`遍历`Set``List``Map`。 但是`ListIterator`仅可用于遍历`List`。 其他差异如下所示。
您可以 -
您可以
1. 向后迭代。
2. 随时获取索引。
......
# [已解决]:javax.xml.bind.JAXBException:此上下文已知类 java.util.ArrayList 或其任何超
# [已解决]:`javax.xml.bind.JAXBException`:`java.util.ArrayList`或其任何超类不是此上下文的已知
> 原文: [https://howtodoinjava.com/jaxb/solved-javax-xml-bind-jaxbexception-class-java-util-arraylist-nor-any-of-its-super-class-is-known-to-this-context/](https://howtodoinjava.com/jaxb/solved-javax-xml-bind-jaxbexception-class-java-util-arraylist-nor-any-of-its-super-class-is-known-to-this-context/)
......@@ -17,19 +17,19 @@ Exception in thread "main" javax.xml.bind.JAXBException: class java.util.ArrayLi
![Random exceptions](img/bfcee52d8f51b09dd5024f261008e635.png)
Random exceptions
随机异常
## 原因
发生上述异常是因为 JAXB 总是期望实体上有一个@XmlRootElement 注解,它会编组。 这是强制性的,不能跳过。 需要@XmlRootElement 注解才能从 Java 对象编组的 XML 根元素中获取元数据。
发生上述异常是因为 JAXB 总是期望实体上有一个`@XmlRootElement`注解,它会编组。 这是强制性的,不能跳过。 需要`@XmlRootElement`注解才能从 Java 对象编组的 XML 根元素中获取元数据。
ArrayList 类或任何 Java 集合类都没有任何 JAXB 注解。 由于这个原因,JAXB 无法解析任何此类 java 对象,并引发此错误。
`ArrayList`类或任何 Java 集合类都没有任何 JAXB 注解。 由于这个原因,JAXB 无法解析任何此类 java 对象,并引发此错误。
## 解决方案:创建包装器类
建议您使用此方法,因为它可以让您灵活地在将来(例如)添加/删除字段 尺寸属性。
建议您使用此方法,因为它可以让您灵活地在将来(例如)添加/删除字段大小属性。
```java
@XmlRootElement(name = "employees")
......@@ -104,6 +104,6 @@ Output:
```
请参阅此帖子中的完整示例: [**编组示例 java ArrayList 或 Set**](//howtodoinjava.com/jaxb/jaxb-exmaple-marshalling-and-unmarshalling-list-or-set-of-objects/ "JAXB exmaple: Marshalling and Unmarshalling list or set of objects")
请参阅此帖子中的完整示例: [**java `ArrayList`或`Set`编组示例**](//howtodoinjava.com/jaxb/jaxb-exmaple-marshalling-and-unmarshalling-list-or-set-of-objects/ "JAXB exmaple: Marshalling and Unmarshalling list or set of objects")
**祝您学习愉快!**
\ No newline at end of file
# [已解决]:线程“ main” com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException 中的异常:3 个 IllegalAnnotationExceptions 计数
# [已解决]:线程“`main`”`com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException`中的异常:3 个`IllegalAnnotationExceptions`计数
> 原文: [https://howtodoinjava.com/jaxb/solved-exception-in-thread-main-com-sun-xml-internal-bind-v2-runtime-illegalannotationsexception-3-counts-of-illegalannotationexceptions/](https://howtodoinjava.com/jaxb/solved-exception-in-thread-main-com-sun-xml-internal-bind-v2-runtime-illegalannotationsexception-3-counts-of-illegalannotationexceptions/)
......@@ -23,7 +23,7 @@ Class has two properties of the same name "employees"
```
要么
或者
```java
Exception in thread "main" com.sun.xml.internal.bind.v2.runtime.IllegalAnnotationsException: 3 counts of IllegalAnnotationExceptions
......@@ -50,23 +50,23 @@ Class has two properties of the same name "employeeMap"
![Random exceptions](img/bfcee52d8f51b09dd5024f261008e635.png)
Random exceptions
随机异常
## 原因
发生上述异常的主要原因是缺少@XmlAccessType 注解或对@XmlAccessType 和@XxmlElement 注解的无效使用。 正确的用法是,一个 Java 字段应只包含一个表示其元数据的有效 JAXB 注解。
发生上述异常的主要原因是缺少`@XmlAccessType`注解或对`@XmlAccessType``@XxmlElement`注解的无效使用。 正确的用法是,一个 Java 字段应只包含一个表示其元数据的有效 JAXB 注解。
默认情况下,JAXB 包含所有公共字段和用于整理的获取器。 因此,如果您有一个字段及其获取器,那么它将包含两次。 这是错误,需要通过正确使用注释来解决。
## 解决方案:使用@XmlAccessType 注解
## 解决方案:使用`@XmlAccessType`注解
**1)@XmlAccessorType(XmlAccessType.FIELD)**
**1)`@XmlAccessorType(XmlAccessType.FIELD)`**
如果您使用的是 XmlAccessType.FIELD; 那么只有所有公共领域(非静态)将被自动包括在内以进行编组。 不会考虑吸气剂。 因此,如果将消除重复的问题。 例如,在下面的代码中,将同时包含 employee 和 size 字段。
如果您使用的是`XmlAccessType.FIELD;`那么只有所有公共领域(非静态)将被自动包括在内以进行编组。 不会考虑吸气剂。 因此,如果将消除重复的问题。 例如,在下面的代码中,将同时包含`employee``size`字段。
请注意,“ @ XmlElement(name =“ employee”))是可选的; 我用它来重命名输出 xml 中的 xml 节点。 如果删除它; 不会出现任何编组错误或异常。
请注意,“`@XmlElement(name="employee")`是可选的; 我用它来重命名输出 xml 中的 xml 节点。 如果删除它; 不会出现任何编组错误或异常。
```java
@XmlRootElement(name = "employees")
......@@ -94,9 +94,9 @@ public class Employees
```
**2)@XmlAccessorType(XmlAccessType.NONE)**
**2)`@XmlAccessorType(XmlAccessType.NONE)`**
如果使用“ XmlAccessType.NONE”,则意味着必须在输出 XML 中注释所有要编组的字段。 剩下的任何字段都不会包含在 JAXB 上下文中。 因此,本质上,“员工”和“大小”字段都需要@XmlElement 注解。 如果这两个字段中的任何一个都未使用@XmlElement 注释,则不会将其编组。
如果使用“`XmlAccessType.NONE`”,则意味着必须在输出 XML 中注释所有要编组的字段。 剩下的任何字段都不会包含在 JAXB 上下文中。 因此,本质上,`employee``size`字段都需要`@XmlElement`注解。 如果这两个字段中的任何一个都未使用`@XmlElement`注释,则不会将其编组。
```java
@XmlRootElement(name = "employees")
......
# 没有@XmlRootElement 的 JAXB 编组 – 缺少@XmlRootElement 错误
# 没有`@XmlRootElement`的 JAXB 编组 – 缺少`@XmlRootElement`错误
> 原文: [https://howtodoinjava.com/jaxb/marshal-without-xmlrootelement/](https://howtodoinjava.com/jaxb/marshal-without-xmlrootelement/)
很多时候,我们将需要**编组 Java 对象,而不使用 [JAXB 注释](https://howtodoinjava.com/jaxb/jaxb-annotations/)** ,例如 [@XmlRootElement](https://howtodoinjava.com/jaxb/xmlrootelement-annotation/) ,并且我们不允许在源代码中进行任何更改。 当我们使用遗留代码或某些我们没有源代码的客户端 jar 时,可能会发生这种情况。
很多时候,我们将需要**编组 Java 对象,而不使用 [JAXB 注释](https://howtodoinjava.com/jaxb/jaxb-annotations/)**,例如[`@XmlRootElement`](https://howtodoinjava.com/jaxb/xmlrootelement-annotation/),并且我们不允许在源代码中进行任何更改。 当我们使用遗留代码或某些我们没有源代码的客户端 jar 时,可能会发生这种情况。
可能还有许多其他情况,但是想法是*我们无法使用 JAXB 注解*修改模型类。 这可能是**将 Java 对象转换为 xml 而没有 jaxb** 的示例。
## 1.没有@XmlRootElement 进行编组时出现问题
## 1.没有`@XmlRootElement`进行编组时出现问题
在这种情况下,如果我们尝试将[将 Java 对象直接编组为 XML](https://howtodoinjava.com/jaxb/write-object-to-xml/) ,则将得到类似的错误。
在这种情况下,如果我们尝试将[将 Java 对象直接编组为 XML](https://howtodoinjava.com/jaxb/write-object-to-xml/),则将得到类似的错误。
```java
javax.xml.bind.MarshalException
......@@ -30,7 +30,7 @@ as an element because it is missing an @XmlRootElement annotation
```
其中`Employee.java`类如下。 它没有任何[XGG1]这样的 JAXB 注解。
其中`Employee.java`类如下。 它没有任何`@XmlRootElement`这样的 JAXB 注解。
```java
package com.howtodoinjava.demo.model;
......@@ -69,7 +69,7 @@ public class Employee implements Serializable {
```
## 2.解决没有@XmlRootElement 注解的对象的解决方案
## 2.没有`@XmlRootElement`注解的对象的解决方案
缺少`@XmlRootElement`注解时,JAXB 无法为`Employee`对象构建[`JAXBElement`](https://docs.oracle.com/javaee/7/api/javax/xml/bind/JAXBElement.html)实例。 这就是我们必须帮助 JAXB 手动构建它的地方。
......@@ -85,7 +85,7 @@ JAXBElement<T> elem = new JAXBElement(QName name, Class<T> declaredType, T value
```
例如 -
例如
```java
JAXBElement<Employee> jaxbElement
......@@ -93,7 +93,7 @@ JAXBElement<Employee> jaxbElement
```
#### 2.2 没有@XmlRootElement 示例的 JAXB 编组
#### 2.2 没有`@XmlRootElement`的 JAXB 编组示例
现在,让我们看看该编组代码的工作原理。
......@@ -162,8 +162,8 @@ public class JaxbExample
```
不带@XmlRootElement 示例的问题,请问我关于 *JAXB 编组的问题。*
请向我提供关于没有`@XmlRootElement`*JAXB 编组*示例的问题。
学习愉快!
参考: [XmlRootElement Java 文档](https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/annotation/XmlRootElement.html)
\ No newline at end of file
参考: [`XmlRootElement` Java 文档](https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/annotation/XmlRootElement.html)
\ No newline at end of file
......@@ -6,7 +6,7 @@
## 1.在没有 jaxb 注释的情况下解组时的问题
在这种情况下,如果您尝试直接将[ Java 对象解组为 XML](https://howtodoinjava.com/jaxb/read-xml-to-java-object/) ,则将出现类似的错误。
在这种情况下,如果您尝试直接将[ Java 对象解组为 XML](https://howtodoinjava.com/jaxb/read-xml-to-java-object/) ,则将出现类似的错误。
```java
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"employee"). Expected elements are (none)
......@@ -42,7 +42,7 @@ javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"employee")
```
其中`Employee.java`类如下。 它没有任何[XGG1]这样的 JAXB 注解。
其中`Employee.java`类如下。 它没有任何`@XmlRootElement`这样的 JAXB 注解。
```java
package com.howtodoinjava.demo.model;
......@@ -103,7 +103,7 @@ public <T> JAXBElement<T> unmarshal( javax.xml.transform.Source source, Class<T>
```
例如 -
例如
```java
JAXBElement<Employee> jaxbElement = (JAXBElement<Employee>) jaxbUnmarshaller
......@@ -187,4 +187,4 @@ Employee [id=1, firstName=Lokesh, lastName=Gupta, department=Department [id=101,
学习愉快!
参考: [XmlRootElement Java 文档](https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/annotation/XmlRootElement.html)
\ No newline at end of file
参考: [`XmlRootElement` Java 文档](https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/annotation/XmlRootElement.html)
\ No newline at end of file
......@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/xml/parse-string-to-xml-dom/](https://howtodoinjava.com/xml/parse-string-to-xml-dom/)
在 Java 中,XML 用`org.w3c.dom.Document`对象表示。 在本 XML 教程中,我们将学习 -
在 Java 中,XML 用`org.w3c.dom.Document`对象表示。 在本 XML 教程中,我们将学习
1. 将 XML **字符串转换为 XML** 文档
2.**XML 文件内容转换为 XML 文档**
......
......@@ -211,7 +211,7 @@ XPath 使用 UNIX 和[正则表达式](https://en.wikipedia.org/wiki/Regular_exp
false if price is 9.80 |
| `>=` | 大于或等于 | 价格> = 9.80 | 如果价格为 9.90,则为 true
,如果价格为 9.70,则为 false |
| `or` | 要么 | 价格= 9.80 或价格= 9.70 | 如果价格为 9.80,则为 true
| `or` | 或者 | 价格= 9.80 或价格= 9.70 | 如果价格为 9.80,则为 true
,如果价格为 9.50,则为 false |
| `and` | 和 | 价格> 9.00 和价格< 9.90 < td > | 如果价格为 9.80,则为 true
,如果价格为 8.50,则为 false |
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册