提交 0d6e8d9b 编写于 作者: W wizardforcel

2020-06-09 10:45:22

上级 22d2ddc2
{% raw %}
# Angular 插值 # Angular 插值
> 原文: [https://howtodoinjava.com/angular/angular-interpolation/](https://howtodoinjava.com/angular/angular-interpolation/) > 原文: [https://howtodoinjava.com/angular/angular-interpolation/](https://howtodoinjava.com/angular/angular-interpolation/)
...@@ -170,4 +172,6 @@ export class AppComponent { ...@@ -170,4 +172,6 @@ export class AppComponent {
``` ```
学习愉快! 学习愉快!
\ No newline at end of file
{% endraw %}
\ No newline at end of file
{% raw %}
# Angular 服务示例 # Angular 服务示例
> 原文: [https://howtodoinjava.com/angular/angular2-service/](https://howtodoinjava.com/angular/angular2-service/) > 原文: [https://howtodoinjava.com/angular/angular2-service/](https://howtodoinjava.com/angular/angular2-service/)
...@@ -178,4 +180,6 @@ Angular 2 服务输出 ...@@ -178,4 +180,6 @@ Angular 2 服务输出
学习愉快! 学习愉快!
[源码下载](https://howtodoinjava.com/wp-content/downloads/angular2-service.zip) [源码下载](https://howtodoinjava.com/wp-content/downloads/angular2-service.zip)
\ No newline at end of file
{% endraw %}
\ No newline at end of file
{% raw %}
# 带有 RxJS `Observable`的 Angular `HttpClient`示例 # 带有 RxJS `Observable`的 Angular `HttpClient`示例
> 原文: [https://howtodoinjava.com/angular/rxjs-observable-httpclient/](https://howtodoinjava.com/angular/rxjs-observable-httpclient/) > 原文: [https://howtodoinjava.com/angular/rxjs-observable-httpclient/](https://howtodoinjava.com/angular/rxjs-observable-httpclient/)
...@@ -199,4 +201,6 @@ export class AppComponent { ...@@ -199,4 +201,6 @@ export class AppComponent {
学习愉快! 学习愉快!
[源码下载](https://howtodoinjava.com/wp-content/downloads/Angular2%20Http%20Service%20Example.zip) [源码下载](https://howtodoinjava.com/wp-content/downloads/Angular2%20Http%20Service%20Example.zip)
\ No newline at end of file
{% endraw %}
\ No newline at end of file
{% raw %}
# AngularJS 教程 – HelloWorld 示例 # AngularJS 教程 – HelloWorld 示例
> 原文: [https://howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/](https://howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/) > 原文: [https://howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/](https://howtodoinjava.com/angularjs/angularjs-tutorial-helloworld-example/)
...@@ -223,4 +225,6 @@ firstApp.controller('MyController', function($scope) { ...@@ -223,4 +225,6 @@ firstApp.controller('MyController', function($scope) {
当您执行上面的 Angular 示例时,您将看到输出作为附加图像作为工作应用。 当您执行上面的 Angular 示例时,您将看到输出作为附加图像作为工作应用。
学习愉快! 学习愉快!
\ No newline at end of file
{% endraw %}
\ No newline at end of file
{% raw %}
# AngularJS 服务(内置和自定义) # AngularJS 服务(内置和自定义)
> 原文: [https://howtodoinjava.com/angularjs/angularjs-services-built-in-and-custom/](https://howtodoinjava.com/angularjs/angularjs-services-built-in-and-custom/) > 原文: [https://howtodoinjava.com/angularjs/angularjs-services-built-in-and-custom/](https://howtodoinjava.com/angularjs/angularjs-services-built-in-and-custom/)
...@@ -206,4 +208,6 @@ app.controller('LondonController', ['$scope', 'TimeService', ...@@ -206,4 +208,6 @@ app.controller('LondonController', ['$scope', 'TimeService',
这就是 **AngularJS 服务入门教程**的全部内容。 将我的问题放在评论部分。 这就是 **AngularJS 服务入门教程**的全部内容。 将我的问题放在评论部分。
学习愉快! 学习愉快!
\ No newline at end of file
{% endraw %}
\ No newline at end of file
{% raw %}
# AngularJS Spring MVC Rest 示例 # AngularJS Spring MVC Rest 示例
> 原文: [https://howtodoinjava.com/angularjs/angularjs-http-restful-api-example/](https://howtodoinjava.com/angularjs/angularjs-http-restful-api-example/) > 原文: [https://howtodoinjava.com/angularjs/angularjs-http-restful-api-example/](https://howtodoinjava.com/angularjs/angularjs-http-restful-api-example/)
...@@ -399,4 +401,6 @@ public class EmployeeRESTController ...@@ -399,4 +401,6 @@ public class EmployeeRESTController
其余的事情几乎可以自我解释。 如果您有任何疑问或疑问,请在下面给我留言。 其余的事情几乎可以自我解释。 如果您有任何疑问或疑问,请在下面给我留言。
学习愉快! 学习愉快!
\ No newline at end of file
{% endraw %}
\ No newline at end of file
# HTDIJ2
来源: [http://cpython.org/](http://cpython.org/)
\ No newline at end of file
...@@ -271,4 +271,4 @@ Model- LUXURY built in ASIA ...@@ -271,4 +271,4 @@ Model- LUXURY built in ASIA
参考文献: 参考文献:
[抽象工厂–维基百科](https://en.wikipedia.org/wiki/Abstract_factory_pattern) [抽象工厂 – 维基百科](https://en.wikipedia.org/wiki/Abstract_factory_pattern)
\ No newline at end of file \ No newline at end of file
...@@ -16,7 +16,7 @@ Implementation ...@@ -16,7 +16,7 @@ Implementation
> 请确保您要对原型进行[深克隆或浅克隆](https://howtodoinjava.com/java/cloning/a-guide-to-object-cloning-in-java/ "A guide to object cloning in java"),因为两者在运行时的行为不同。 如果需要深度复制,则可以使用在内存序列化中使用此处给出的良好技术[。](https://howtodoinjava.com/java/serialization/how-to-do-deep-cloning-using-in-memory-serialization-in-java/ "How to do deep cloning using in memory serialization in java") > 请确保您要对原型进行[深克隆或浅克隆](https://howtodoinjava.com/java/cloning/a-guide-to-object-cloning-in-java/ "A guide to object cloning in java"),因为两者在运行时的行为不同。 如果需要深度复制,则可以使用在内存序列化中使用此处给出的良好技术[。](https://howtodoinjava.com/java/serialization/how-to-do-deep-cloning-using-in-memory-serialization-in-java/ "How to do deep cloning using in memory serialization in java")
## 原型模式参与者 ## 原型模式参与者
* **原型**:这是如上所述的实际对象的原型。 * **原型**:这是如上所述的实际对象的原型。
* **原型注册表**:用作注册表服务,使所有原型都可以使用简单的字符串参数进行访问。 * **原型注册表**:用作注册表服务,使所有原型都可以使用简单的字符串参数进行访问。
...@@ -26,7 +26,7 @@ Implementation ...@@ -26,7 +26,7 @@ Implementation
让我们通过一个例子来了解这种模式。 我正在创建一个娱乐应用程序,该应用程序将非常频繁地需要 Movie,Album 和 Show 类的实例。 我不想每次都创建它们的实例,因为这很昂贵。 因此,我将创建他们的原型实例,每当我需要一个新实例时,我都将克隆该原型。 让我们通过一个例子来了解这种模式。 我正在创建一个娱乐应用程序,该应用程序将非常频繁地需要 Movie,Album 和 Show 类的实例。 我不想每次都创建它们的实例,因为这很昂贵。 因此,我将创建他们的原型实例,每当我需要一个新实例时,我都将克隆该原型。
## 原型模式示例实现 ## 原型模式示例实现
让我们从创建类图开始。 让我们从创建类图开始。
......
...@@ -29,10 +29,10 @@ Summary ...@@ -29,10 +29,10 @@ Summary
命令设计模式的参与者包括: 命令设计模式的参与者包括:
* **命令界面** –用于声明操作。 * **命令界面** 用于声明操作。
* **具体命令类** –扩展了`Command`接口,并具有用于在接收方上调用业务操作方法的执行方法。 它在内部具有命令接收者的参考。 * **具体命令类** 扩展了`Command`接口,并具有用于在接收方上调用业务操作方法的执行方法。 它在内部具有命令接收者的参考。
* **调用程序** –被赋予执行操作的命令对象。 * **调用程序** 被赋予执行操作的命令对象。
* **接收器** –执行操作。 * **接收器** 执行操作。
在命令模式中,调用者与接收者执行的动作分离。 调用者不知道接收者。 调用程序调用一个命令,然后该命令执行接收方的相应操作。 因此,调用者可以在不知道要执行的动作的细节的情况下调用命令。 此外,这种脱钩意味着对接收者动作的更改不会直接影响动作的调用。 在命令模式中,调用者与接收者执行的动作分离。 调用者不知道接收者。 调用程序调用一个命令,然后该命令执行接收方的相应操作。 因此,调用者可以在不知道要执行的动作的细节的情况下调用命令。 此外,这种脱钩意味着对接收者动作的更改不会直接影响动作的调用。
...@@ -42,7 +42,7 @@ Summary ...@@ -42,7 +42,7 @@ Summary
在这里,此遥控器将是一个可编程的遥控器,它将用于打开和关闭各种灯/风扇等。 在这里,此遥控器将是一个可编程的遥控器,它将用于打开和关闭各种灯/风扇等。
首先,让我们看看如何使用任何设计方法解决问题。 她的遥控器代码可能看起来像– 首先,让我们看看如何使用任何设计方法解决问题。 她的遥控器代码可能看起来像
```java ```java
If(buttonName.equals(Light)) If(buttonName.equals(Light))
...@@ -56,7 +56,7 @@ else If(buttonName.equals(“Fan”)) ...@@ -56,7 +56,7 @@ else If(buttonName.equals(“Fan”))
``` ```
但是上述解决方案显然存在许多明显的问题,例如– 但是上述解决方案显然存在许多明显的问题,例如
* 任何新物品(例如 TubeLight)都需要更改遥控器的代码。 您将需要添加更多的 if-elses。 * 任何新物品(例如 TubeLight)都需要更改遥控器的代码。 您将需要添加更多的 if-elses。
* 如果我们想为其他目的更改按钮,那么我们也需要更改代码。 * 如果我们想为其他目的更改按钮,那么我们也需要更改代码。
......
...@@ -37,14 +37,14 @@ Mediator design pattern ...@@ -37,14 +37,14 @@ Mediator design pattern
图片来源– [Wikipedia](https://en.wikipedia.org/wiki/Mediator_pattern) 图片来源 [Wikipedia](https://en.wikipedia.org/wiki/Mediator_pattern)
#### 3.2。 设计参加者 #### 3.2。 设计参加者
* **介体** –定义`Colleague`对象之间的通信接口 * **介体** 定义`Colleague`对象之间的通信接口
* **ConcreteMediator** –实现`Mediator`接口并协调`Colleague`对象之间的通信。 **它了解所有同事及其在互通方面的目的** * **ConcreteMediator** 实现`Mediator`接口并协调`Colleague`对象之间的通信。 **它了解所有同事及其在互通方面的目的**
* **同事** –定义了通过`Mediator`与其他同事进行交流的接口 * **同事** 定义了通过`Mediator`与其他同事进行交流的接口
* **ConcreteColleague** –实现`Colleague`接口并通过其`Mediator`与其他同事进行通信 * **ConcreteColleague** 实现`Colleague`接口并通过其`Mediator`与其他同事进行通信
## 4.中介器设计模式示例 ## 4.中介器设计模式示例
......
...@@ -38,13 +38,13 @@ Memento 设计模式是行为模式,是 Gang of Four 讨论的 23 种[设计 ...@@ -38,13 +38,13 @@ Memento 设计模式是行为模式,是 Gang of Four 讨论的 23 种[设计
纪念品模式有三个参与者。 纪念品模式有三个参与者。
1. **发起者** –是知道如何创建和保存其状态以备将来使用的对象。 它提供了方法`createMemento()``restore(memento)` 1. **发起者** 是知道如何创建和保存其状态以备将来使用的对象。 它提供了方法`createMemento()``restore(memento)`
2. **看守者** –在发起者上执行操作,同时可能回滚。 它跟踪多种纪念品。 看守者类是指发起者类,用于保存(HTG0)和恢复(HTG1)发起者的内部状态。 2. **看守者** 在发起者上执行操作,同时可能回滚。 它跟踪多种纪念品。 看守者类是指发起者类,用于保存(HTG0)和恢复(HTG1)发起者的内部状态。
3. **Memento** –由发起者编写和读取,并由看守者管理的锁盒。 原则上,纪念品必须在[不可变的](https://howtodoinjava.com/java/basics/how-to-make-a-java-class-immutable/)对象中,这样一旦创建便没有人可以更改其状态。 3. **Memento** 由发起者编写和读取,并由看守者管理的锁盒。 原则上,纪念品必须在[不可变的](https://howtodoinjava.com/java/basics/how-to-make-a-java-class-immutable/)对象中,这样一旦创建便没有人可以更改其状态。
## 4\. Memento 设计模式示例 ## 4\. Memento 设计模式示例
在此示例中,我们为`Article`对象创建纪念品,该对象具有三个基本属性– id,title 和 content。 `ArticleMemento`类用作`Article`对象的纪念品。 在此示例中,我们为`Article`对象创建纪念品,该对象具有三个基本属性 – id,title 和 content。 `ArticleMemento`类用作`Article`对象的纪念品。
```java ```java
public class Article public class Article
......
...@@ -53,8 +53,8 @@ Observer Pattern Architecture ...@@ -53,8 +53,8 @@ Observer Pattern Architecture
* **主题**[接口或抽象类](https://howtodoinjava.com/oops/exploring-interfaces-and-abstract-classes-in-java/)定义了将观察者附加到主题或从主题上拆下的操作。 * **主题**[接口或抽象类](https://howtodoinjava.com/oops/exploring-interfaces-and-abstract-classes-in-java/)定义了将观察者附加到主题或从主题上拆下的操作。
* **ConcreteSubject** -具体的 Subject 类。 它维护对象的状态,并在状态发生变化时通知附加的观察者。 * **ConcreteSubject** -具体的 Subject 类。 它维护对象的状态,并在状态发生变化时通知附加的观察者。
* **观察者** –定义用于通知此对象的操作的接口或抽象类。 * **观察者** 定义用于通知此对象的操作的接口或抽象类。
* **ConcreteObserver** –具体的 Observer 实现。 * **ConcreteObserver** 具体的 Observer 实现。
## 4.观察者设计模式示例 ## 4.观察者设计模式示例
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
## 1.何时使用状态模式 ## 1.何时使用状态模式
在任何应用程序中,当我们处理**时,该对象在其生命周期**期间可能处于不同的状态,以及如何根据其当前状态处理传入的请求(或进行状态转换)–我们可以使用 状态模式。 在任何应用程序中,当我们处理**时,该对象在其生命周期**期间可能处于不同的状态,以及如何根据其当前状态处理传入的请求(或进行状态转换)– 我们可以使用 状态模式。
如果在这种情况下不使用状态模式,则最终将有很多`[if-else](https://howtodoinjava.com/java/basics/if-else-statement-in-java/)`语句,这些语句会使代码库变得丑陋,不必要地复杂且难以维护。 状态模式允许对象根据当前状态表现不同,并且我们可以在不同类中定义特定于状态的行为。 如果在这种情况下不使用状态模式,则最终将有很多`[if-else](https://howtodoinjava.com/java/basics/if-else-statement-in-java/)`语句,这些语句会使代码库变得丑陋,不必要地复杂且难以维护。 状态模式允许对象根据当前状态表现不同,并且我们可以在不同类中定义特定于状态的行为。
...@@ -39,9 +39,9 @@ State design pattern ...@@ -39,9 +39,9 @@ State design pattern
#### 3.2。 设计参加者 #### 3.2。 设计参加者
* **状态** –接口定义每个状态必须处理的操作。 * **状态** 接口定义每个状态必须处理的操作。
* **具体状态** –包含状态特定行为的类。 * **具体状态** 包含状态特定行为的类。
* **上下文** –定义与客户端进行交互的接口。 它维护对具体状态对象的引用,这些引用可用于定义对象的当前状态。 它将特定于状态的行为委派给不同的 State 对象。 * **上下文** 定义与客户端进行交互的接口。 它维护对具体状态对象的引用,这些引用可用于定义对象的当前状态。 它将特定于状态的行为委派给不同的 State 对象。
## 4.状态模式示例 ## 4.状态模式示例
...@@ -245,7 +245,7 @@ Package is delivered !! ...@@ -245,7 +245,7 @@ Package is delivered !!
#### 5.1。 状态模式与策略模式 #### 5.1。 状态模式与策略模式
两种模式的结构相似,但目的不同。 [策略模式](https://howtodoinjava.com/design-patterns/behavioral/strategy-design-pattern/)为子类提供了更好的选择,而在状态模式下行为封装在单独的类中。 两种模式的结构相似,但目的不同。 [策略模式](https://howtodoinjava.com/design-patterns/behavioral/strategy-design-pattern/)为子类提供了更好的选择,而在状态模式下行为封装在单独的类中。
然而,两者都促进了遗产的继承和授权。 然而,两者都促进了遗产的继承和授权。
......
...@@ -64,7 +64,7 @@ Gson 的最佳**好处是,在我们为某些成员字段进行非常特定的 ...@@ -64,7 +64,7 @@ Gson 的最佳**好处是,在我们为某些成员字段进行非常特定的
Gson 支持多种机制来排除顶级类,字段和字段类型。 了解如何使用它们。 Gson 支持多种机制来排除顶级类,字段和字段类型。 了解如何使用它们。
* #### [JsonReader –流 JSON 解析器](https://howtodoinjava.com/gson/jsonreader-streaming-json-parser/) * #### [JsonReader – 流 JSON 解析器](https://howtodoinjava.com/gson/jsonreader-streaming-json-parser/)
了解如何读取 JSON 字符串或文件作为 JSON 令牌流。 了解如何读取 JSON 字符串或文件作为 JSON 令牌流。
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
**策略设计模式**是行为设计​​模式,在该行为设计模式中,我们选择[算法](//howtodoinjava.com/java-algorithms-implementations/)或任务在运行时的特定实现-从同一任务的多个其他实现中选择。 **策略设计模式**是行为设计​​模式,在该行为设计模式中,我们选择[算法](//howtodoinjava.com/java-algorithms-implementations/)或任务在运行时的特定实现-从同一任务的多个其他实现中选择。
重要的一点是,这些实现是可互换的根据任务可以选择一种实现而不会干扰应用程序工作流程。 重要的一点是,这些实现是可互换的根据任务可以选择一种实现而不会干扰应用程序工作流程。
```java ```java
Table of Contents Table of Contents
...@@ -60,7 +60,7 @@ Strategy Pattern Participants ...@@ -60,7 +60,7 @@ Strategy Pattern Participants
为了实施该解决方案,让我们一次设计一个参与者。 为了实施该解决方案,让我们一次设计一个参与者。
* **ISocialMediaStrategy** -抽象操作的接口。 * **ISocialMediaStrategy** -抽象操作的接口。
* **SocialMediaContext** –确定实现的上下文。 * **SocialMediaContext** 确定实现的上下文。
* **实现**`ISocialMediaStrategy`的各种实现。 例如。 `FacebookStrategy``GooglePlusStrategy``TwitterStrategy``OrkutStrategy` * **实现**`ISocialMediaStrategy`的各种实现。 例如。 `FacebookStrategy``GooglePlusStrategy``TwitterStrategy``OrkutStrategy`
#### 类图 #### 类图
......
...@@ -262,7 +262,7 @@ Glass Wall House constructed successfully ...@@ -262,7 +262,7 @@ Glass Wall House constructed successfully
**模板模式**是一种非常简单的设计模式,用于定义和实施编程范例中的某些顺序算法步骤。 它有助于定义算法的框架,该框架不得在子类中被覆盖。 **模板模式**是一种非常简单的设计模式,用于定义和实施编程范例中的某些顺序算法步骤。 它有助于定义算法的框架,该框架不得在子类中被覆盖。
因此,展望未来,当您需要实现上述业务场景时,请考虑一下模板模式它非常易于实现并且也非常易于维护。 因此,展望未来,当您需要实现上述业务场景时,请考虑一下模板模式它非常易于实现并且也非常易于维护。
学习愉快! 学习愉快!
......
...@@ -32,13 +32,13 @@ Sourcecode download ...@@ -32,13 +32,13 @@ Sourcecode download
此模式中的参与者类是: 此模式中的参与者类是:
**访问者** –这是用于声明所有可访问类类型的访问操作的接口或抽象类。 **访问者** 这是用于声明所有可访问类类型的访问操作的接口或抽象类。
**ConcreteVisitor** –对于每种类型的访问者,必须实现在抽象访问者中声明的所有访问方法。 每个访客将负责不同的操作。 **ConcreteVisitor** 对于每种类型的访问者,必须实现在抽象访问者中声明的所有访问方法。 每个访客将负责不同的操作。
**可访问** –是一个声明接受操作的接口。 这是使访问者对象可以“访问”对象的入口点。 **可访问** 是一个声明接受操作的接口。 这是使访问者对象可以“访问”对象的入口点。
**ConcreteVisitable** –这些类实现了 Visitable 接口或类并定义了接受操作。 使用 accept 操作将访问者对象传递给该对象。 **ConcreteVisitable** 这些类实现了 Visitable 接口或类并定义了接受操作。 使用 accept 操作将访问者对象传递给该对象。
## 样品问题要解决 ## 样品问题要解决
......
...@@ -58,7 +58,7 @@ Without bridge pattern ...@@ -58,7 +58,7 @@ Without bridge pattern
但是上述解决方案存在问题。 如果要更改`Rectange`类别,则可能最终也会更改`BlueRectangle``RedRectangle` –即使更改是特定于颜色的,也可能需要更改`Circle`类别。 但是上述解决方案存在问题。 如果要更改`Rectange`类别,则可能最终也会更改`BlueRectangle``RedRectangle` 即使更改是特定于颜色的,也可能需要更改`Circle`类别。
您可以通过以下方式去耦`Shape``Color`接口来解决上述问题。 您可以通过以下方式去耦`Shape``Color`接口来解决上述问题。
......
...@@ -26,8 +26,8 @@ Decorator design pattern participants ...@@ -26,8 +26,8 @@ Decorator design pattern participants
以下是“装饰器设计”模式的参与者: 以下是“装饰器设计”模式的参与者:
* **组件** –这是包装程序,在运行时可以具有与其相关的其他职责。 * **组件** 这是包装程序,在运行时可以具有与其相关的其他职责。
* **具体组件** –是在程序中添加了其他职责的原始对象。 * **具体组件** 是在程序中添加了其他职责的原始对象。
* **装饰器**-这是一个抽象类,其中包含对组件对象的引用,并且还实现了组件接口。 * **装饰器**-这是一个抽象类,其中包含对组件对象的引用,并且还实现了组件接口。
* **混凝土装饰器**-它们扩展了装饰器,并在 Component 类的顶部构建了附加功能。 * **混凝土装饰器**-它们扩展了装饰器,并在 Component 类的顶部构建了附加功能。
......
...@@ -227,7 +227,7 @@ Drawing THICK content in color : BLUE ...@@ -227,7 +227,7 @@ Drawing THICK content in color : BLUE
#### 5.3。 轻量化设计模式的好处 #### 5.3。 轻量化设计模式的好处
使用举重装置,我们可以– 使用举重装置,我们可以
* 减少可以相同控制的重物的内存消耗。 * 减少可以相同控制的重物的内存消耗。
* 减少系统中“完整但相似的对象”的总数。 * 减少系统中“完整但相似的对象”的总数。
......
...@@ -33,9 +33,9 @@ Proxy design pattern ...@@ -33,9 +33,9 @@ Proxy design pattern
#### 3.2。 设计参加者 #### 3.2。 设计参加者
* **主题** –是一个接口,它公开了可供客户端使用的功能。 * **主题** 是一个接口,它公开了可供客户端使用的功能。
* **实际主题** –是实现`Subject`的类,并且是具体的实现,需要隐藏在代理后面。 * **实际主题** 是实现`Subject`的类,并且是具体的实现,需要隐藏在代理后面。
* **代理** –通过扩展它来隐藏真实对象,并且客户端通过此代理对象与真实对象进行通信。 通常,当客户端请求真实对象时,框架会创建此代理对象。 * **代理** 通过扩展它来隐藏真实对象,并且客户端通过此代理对象与真实对象进行通信。 通常,当客户端请求真实对象时,框架会创建此代理对象。
## 4.代理设计模式示例 ## 4.代理设计模式示例
...@@ -102,12 +102,12 @@ Performing work in real object ...@@ -102,12 +102,12 @@ Performing work in real object
#### 5.1。 有哪些不同类型的代理 #### 5.1。 有哪些不同类型的代理
代理通常分为四种类型– 代理通常分为四种类型
1. **远程代理** –表示远程授乳的对象。 要与远程对象对话,客户端需要在网络通信方面做其他工作。 代理对象代表原始对象进行此通信,而客户端则专注于实际交谈。 1. **远程代理** 表示远程授乳的对象。 要与远程对象对话,客户端需要在网络通信方面做其他工作。 代理对象代表原始对象进行此通信,而客户端则专注于实际交谈。
2. **虚拟代理** –延迟昂贵对象的创建和初始化,直到需要时才按需创建对象。 Hibernate 创建的代理实体是虚拟代理的示例。 2. **虚拟代理** 延迟昂贵对象的创建和初始化,直到需要时才按需创建对象。 Hibernate 创建的代理实体是虚拟代理的示例。
3. **保护代理** –帮助实现对原始对象的安全性。 他们可以在方法调用之前检查访问权限,然后根据结论允许或拒绝访问。 3. **保护代理** 帮助实现对原始对象的安全性。 他们可以在方法调用之前检查访问权限,然后根据结论允许或拒绝访问。
4. **智能代理** –当客户端访问对象时,执行其他内部管理工作。 一个示例可以是在访问真实对象之前检查它是否已锁定,以确保没有其他对象可以更改它。 4. **智能代理** 当客户端访问对象时,执行其他内部管理工作。 一个示例可以是在访问真实对象之前检查它是否已锁定,以确保没有其他对象可以更改它。
#### 5.2。 代理模式与装饰器模式 #### 5.2。 代理模式与装饰器模式
...@@ -119,4 +119,4 @@ Performing work in real object ...@@ -119,4 +119,4 @@ Performing work in real object
参考文献: 参考文献:
图片来源– [Wikipedia](https://en.wikipedia.org/wiki/Proxy_pattern) 图片来源 – [Wikipedia](https://en.wikipedia.org/wiki/Proxy_pattern)
\ No newline at end of file \ No newline at end of file
...@@ -118,7 +118,7 @@ LSP 的一个示例可以是 Spring 框架中的[自定义属性编辑器](https ...@@ -118,7 +118,7 @@ LSP 的一个示例可以是 Spring 框架中的[自定义属性编辑器](https
Spring 可以为一种数据类型注册一个属性编辑器,并且需要遵循**基类** `PropertyEditorSupport`强制的约束。 所以是任何扩展`PropertyEditorSupport`类的类,那么它可以被需要基类的任何地方替换。 Spring 可以为一种数据类型注册一个属性编辑器,并且需要遵循**基类** `PropertyEditorSupport`强制的约束。 所以是任何扩展`PropertyEditorSupport`类的类,那么它可以被需要基类的任何地方替换。
例如,每本书都有一个 ISBN 号,它始终是固定的显示格式。 您可以在数据库和 UI 中使用独立的 ISBN 表示形式。 为此,我们可以用以下方式编写属性编辑器– 例如,每本书都有一个 ISBN 号,它始终是固定的显示格式。 您可以在数据库和 UI 中使用独立的 ISBN 表示形式。 为此,我们可以用以下方式编写属性编辑器
```java ```java
import java.beans.PropertyEditorSupport; import java.beans.PropertyEditorSupport;
...@@ -164,7 +164,7 @@ public class IsbnEditor extends PropertyEditorSupport { ...@@ -164,7 +164,7 @@ public class IsbnEditor extends PropertyEditorSupport {
查找 IPS 示例的最佳地方是 Java AWT 事件处理程序,用于处理从键盘和鼠标触发的 GUI 事件。 对于每种事件,它都有不同的侦听器类。 我们只需要编写希望处理的事件处理程序即可。 没有什么是强制性的。 查找 IPS 示例的最佳地方是 Java AWT 事件处理程序,用于处理从键盘和鼠标触发的 GUI 事件。 对于每种事件,它都有不同的侦听器类。 我们只需要编写希望处理的事件处理程序即可。 没有什么是强制性的。
一些听众是– 一些听众是
* FocusListener * FocusListener
* 侦听器 * 侦听器
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
## 1.开放封闭原则的定义 ## 1.开放封闭原则的定义
有两种流行的定义来描述这一原理– 有两种流行的定义来描述这一原理
#### 1.1。 迈耶的定义 #### 1.1。 迈耶的定义
...@@ -18,9 +18,9 @@ ...@@ -18,9 +18,9 @@
Robert C. Martin 在他的书《 *敏捷软件开发:原理,模式和实践》(Prentice Hall,2003 年)*中定义了 OCP,如下所示: Robert C. Martin 在他的书《 *敏捷软件开发:原理,模式和实践》(Prentice Hall,2003 年)*中定义了 OCP,如下所示:
**打开扩展** –这意味着可以扩展模块的行为。 随着应用程序需求的变化,我们能够通过满足这些变化的新行为来扩展模块。 换句话说,我们能够更改模块的功能。 **打开扩展** 这意味着可以扩展模块的行为。 随着应用程序需求的变化,我们能够通过满足这些变化的新行为来扩展模块。 换句话说,我们能够更改模块的功能。
**已关闭,可修改** –扩展模块的行为不会导致模块的源代码或二进制代码更改。 模块的二进制可执行版本,无论是在可链接库,DLL 还是 Java .jar 中,都保持不变。 **已关闭,可修改** 扩展模块的行为不会导致模块的源代码或二进制代码更改。 模块的二进制可执行版本,无论是在可链接库,DLL 还是 Java .jar 中,都保持不变。
## 2.讨论 ## 2.讨论
...@@ -54,7 +54,7 @@ Robert C. Martin 在他的书《 *敏捷软件开发:原理,模式和实践 ...@@ -54,7 +54,7 @@ Robert C. Martin 在他的书《 *敏捷软件开发:原理,模式和实践
[接口](https://howtodoinjava.com/oops/exploring-interfaces-and-abstract-classes-in-java/)继承中,客户端对类的依赖关系被替换为接口。 与抽象方法相比,这实际上是首选方法。 这呼应了这样的建议,即首选组合而不是[继承](https://howtodoinjava.com/oops/java-inheritance/),并保持继承层次结构较浅,并且子分类层很少。 [接口](https://howtodoinjava.com/oops/exploring-interfaces-and-abstract-classes-in-java/)继承中,客户端对类的依赖关系被替换为接口。 与抽象方法相比,这实际上是首选方法。 这呼应了这样的建议,即首选组合而不是[继承](https://howtodoinjava.com/oops/java-inheritance/),并保持继承层次结构较浅,并且子分类层很少。
> 设计继承或禁止继承。 –有效的 Java(Addison-Wesley,2008 年),约书亚·布洛赫(Joshua Bloch) > 设计继承或禁止继承。 – 有效的 Java(Addison-Wesley,2008 年),约书亚·布洛赫(Joshua Bloch)
## 3.开闭原理示例 ## 3.开闭原理示例
...@@ -133,7 +133,7 @@ public class SimpleCalculator implements ICalculator ...@@ -133,7 +133,7 @@ public class SimpleCalculator implements ICalculator
``` ```
上面的模块代码看起来不错并达到目的。 但是,在客户端应用程序中时,开发人员想要增加乘法功能除了更改方法`calculate()`中的`SimpleCalculator`类代码外,他别无选择。 此代码不符合 OCP。 上面的模块代码看起来不错并达到目的。 但是,在客户端应用程序中时,开发人员想要增加乘法功能除了更改方法`calculate()`中的`SimpleCalculator`类代码外,他别无选择。 此代码不符合 OCP。
#### 3.2。 符合 OCP 的代码 #### 3.2。 符合 OCP 的代码
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/best-practices/first-principles-for-good-tests/](https://howtodoinjava.com/best-practices/first-principles-for-good-tests/) > 原文: [https://howtodoinjava.com/best-practices/first-principles-for-good-tests/](https://howtodoinjava.com/best-practices/first-principles-for-good-tests/)
在解决现实问题的任何应用程序中,单元测试中都存在问题是最不希望的事情。 [好的书面测试](//howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/)是资产,而不好的书面测试是您应用程序的负担。 在本教程中,我们将学习**单元测试 FIRST 原理**,它可以使您的测试脱颖而出,并确保其收益超过成本。 在解决现实问题的任何应用程序中,单元测试中都存在问题是最不希望的事情。 [好的书面测试](//howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/)是资产,而不好的书面测试是您应用程序的负担。 在本教程中,我们将学习**单元测试 FIRST 原理**,它可以使您的测试脱颖而出,并确保其收益超过成本。
## 良好单元测试的首要原则 ## 良好单元测试的首要原则
...@@ -48,11 +48,11 @@ ...@@ -48,11 +48,11 @@
#### 自我验证 #### 自我验证
测试必须是自我验证的手段每个测试都必须能够确定预期的输出与否。 它必须确定它失败或通过。 必须没有**人工解释结果** 测试必须是自我验证的手段每个测试都必须能够确定预期的输出与否。 它必须确定它失败或通过。 必须没有**人工解释结果**
手动验证测试结果是一个耗时的过程,也可能带来更多风险。 手动验证测试结果是一个耗时的过程,也可能带来更多风险。
确保您不会做任何愚蠢的事情,例如设计测试以要求在运行前需要手动安排步骤。 您必须自动执行测试所需的任何设置甚至不依赖于数据库和预煮数据的存在。 确保您不会做任何愚蠢的事情,例如设计测试以要求在运行前需要手动安排步骤。 您必须自动执行测试所需的任何设置甚至不依赖于数据库和预煮数据的存在。
创建一个内存数据库,创建架构并放入虚拟数据,然后测试代码。 这样,您可以运行该测试 N 次,而不必担心会影响测试执行及其结果的任何外部因素。 创建一个内存数据库,创建架构并放入虚拟数据,然后测试代码。 这样,您可以运行该测试 N 次,而不必担心会影响测试执行及其结果的任何外部因素。
......
# GSON –序列化和反序列化 JSON # GSON – 序列化和反序列化 JSON
> 原文: [https://howtodoinjava.com/gson/gson-serialize-deserialize-json/](https://howtodoinjava.com/gson/gson-serialize-deserialize-json/) > 原文: [https://howtodoinjava.com/gson/gson-serialize-deserialize-json/](https://howtodoinjava.com/gson/gson-serialize-deserialize-json/)
...@@ -41,7 +41,7 @@ dependencies { ...@@ -41,7 +41,7 @@ dependencies {
``` ```
## 2.序列化使用 Gson 编写 JSON ## 2.序列化使用 Gson 编写 JSON
[在 Gson 上下文中的序列化](https://howtodoinjava.com/java/serialization/a-mini-guide-for-implementing-serializable-interface-in-java/)意味着将 Java 对象转换为其 JSON 表示形式。 为了进行序列化,我们需要一个 **Gson** 对象,该对象可以处理转换。 接下来,我们需要调用函数 **toJson()**,并传递`Employee`对象。 [在 Gson 上下文中的序列化](https://howtodoinjava.com/java/serialization/a-mini-guide-for-implementing-serializable-interface-in-java/)意味着将 Java 对象转换为其 JSON 表示形式。 为了进行序列化,我们需要一个 **Gson** 对象,该对象可以处理转换。 接下来,我们需要调用函数 **toJson()**,并传递`Employee`对象。
...@@ -68,7 +68,7 @@ System.out.println(jsonString); ...@@ -68,7 +68,7 @@ System.out.println(jsonString);
``` ```
## 2.反序列化使用 Gson 读取 JSON ## 2.反序列化使用 Gson 读取 JSON
在 Gson 上下文中,[反序列化](https://howtodoinjava.com/java/serialization/how-deserialization-process-happen-in-java/)意味着将 JSON 字符串转换为等效的 Java 对象。 为了进行反序列化,我们需要一个 **Gson** 对象,并从 Json()调用函数**,并在解析完成后传递两个参数,即 JSON 字符串和所需的 Java 类型。** 在 Gson 上下文中,[反序列化](https://howtodoinjava.com/java/serialization/how-deserialization-process-happen-in-java/)意味着将 JSON 字符串转换为等效的 Java 对象。 为了进行反序列化,我们需要一个 **Gson** 对象,并从 Json()调用函数**,并在解析完成后传递两个参数,即 JSON 字符串和所需的 Java 类型。**
......
...@@ -26,7 +26,7 @@ Web 应用程序的性能对于任何公司和任何客户的项目成功都是 ...@@ -26,7 +26,7 @@ Web 应用程序的性能对于任何公司和任何客户的项目成功都是
最后,衡量整体应用程序性能的提高并与基准进行比较。 仍然您落后,然后重复所有步骤。 最后,衡量整体应用程序性能的提高并与基准进行比较。 仍然您落后,然后重复所有步骤。
尽管上述步骤已经完成,但实际上需要完成哪些工作以可衡量的方式提高性能,但您需要记住以下几点: 尽管上述步骤已经完成,但实际上需要完成哪些工作以可衡量的方式提高性能,但您需要记住以下几点:
* **开箱即用**。 例如 如果数据库查询花费时间,则不要过度使用 SQL 语句,而应考虑使用缓存。 * **开箱即用**。 例如 如果数据库查询花费时间,则不要过度使用 SQL 语句,而应考虑使用缓存。
* **永远不要假设/猜测任何东西**。 始终进行建议的更改并记录其效果。 * **永远不要假设/猜测任何东西**。 始终进行建议的更改并记录其效果。
......
# Java 比较和交换示例– CAS 算法 # Java 比较和交换示例 – CAS 算法
> 原文: [https://howtodoinjava.com/java/multi-threading/compare-and-swap-cas-algorithm/](https://howtodoinjava.com/java/multi-threading/compare-and-swap-cas-algorithm/) > 原文: [https://howtodoinjava.com/java/multi-threading/compare-and-swap-cas-algorithm/](https://howtodoinjava.com/java/multi-threading/compare-and-swap-cas-algorithm/)
......
...@@ -102,39 +102,39 @@ Hello, World! ...@@ -102,39 +102,39 @@ Hello, World!
#### 7.1。 语言基础 #### 7.1。 语言基础
[Python –在 Sublime Editor 中安装](https://howtodoinjava.com/python/install-python-sublime-editor/) [Python – 在 Sublime Editor 中安装](https://howtodoinjava.com/python/install-python-sublime-editor/)
[Python –注释](https://howtodoinjava.com/python/python-comments/) [Python – 注释](https://howtodoinjava.com/python/python-comments/)
[Python –变量](https://howtodoinjava.com/python/python-variables/) [Python – 变量](https://howtodoinjava.com/python/python-variables/)
[Python –数据类型](https://howtodoinjava.com/python/python-data-types/) [Python – 数据类型](https://howtodoinjava.com/python/python-data-types/)
[Python –关键字](https://howtodoinjava.com/python/python-keywords/) [Python – 关键字](https://howtodoinjava.com/python/python-keywords/)
[Python –关键字](https://howtodoinjava.com/python/python-keywords/) [Python – 关键字](https://howtodoinjava.com/python/python-keywords/)
[Python –整数](https://howtodoinjava.com/python/python-integer-ints/) [Python – 整数](https://howtodoinjava.com/python/python-integer-ints/)
[Python –字符串](https://howtodoinjava.com/python/python-strings/) [Python – 字符串](https://howtodoinjava.com/python/python-strings/)
[Python –列出](https://howtodoinjava.com/python/python-lists/) [Python – 列出](https://howtodoinjava.com/python/python-lists/)
[Python –元组](https://howtodoinjava.com/python/python-tuples/) [Python – 元组](https://howtodoinjava.com/python/python-tuples/)
#### 7.2。 弦乐 #### 7.2。 弦乐
[Python –字符串 split()示例](https://howtodoinjava.com/python/split-string/) [Python – 字符串 split()示例](https://howtodoinjava.com/python/split-string/)
[Python –字符串 startswith()示例](https://howtodoinjava.com/python/string-startswith/) [Python – 字符串 startswith()示例](https://howtodoinjava.com/python/string-startswith/)
[Python –字符串 endswith()示例](https://howtodoinjava.com/python/string-endswith-method/) [Python – 字符串 endswith()示例](https://howtodoinjava.com/python/string-endswith-method/)
#### 7.3。 馆藏 #### 7.3。 馆藏
[Python –查找列表或数组中的最大值和最小值](https://howtodoinjava.com/python/max-min/) [Python – 查找列表或数组中的最大值和最小值](https://howtodoinjava.com/python/max-min/)
[Python –查找最大 N 个(前 N 个)或最小 N 个项](https://howtodoinjava.com/python/find-largest-smallest-items/) [Python – 查找最大 N 个(前 N 个)或最小 N 个项](https://howtodoinjava.com/python/find-largest-smallest-items/)
[Python-将元组解包为变量](https://howtodoinjava.com/python/unpack-tuple-sequence/) [Python-将元组解包为变量](https://howtodoinjava.com/python/unpack-tuple-sequence/)
[Python –元组比较](https://howtodoinjava.com/python/compare-tuples/) [Python – 元组比较](https://howtodoinjava.com/python/compare-tuples/)
[Python –列表与元组](https://howtodoinjava.com/python/lists-vs-tuples/) [Python – 列表与元组](https://howtodoinjava.com/python/lists-vs-tuples/)
[Python –解包元组–太多值无法解包](https://howtodoinjava.com/python/unpack-variable-length-tuple/) [Python – 解包元组 – 太多值无法解包](https://howtodoinjava.com/python/unpack-variable-length-tuple/)
[Python – Multidict 示例](https://howtodoinjava.com/python/multidict-key-to-multiple-values/) [Python – Multidict 示例](https://howtodoinjava.com/python/multidict-key-to-multiple-values/)
[Python – OrderedDict 示例](https://howtodoinjava.com/python/ordereddict-ordered-dictionary/) [Python – OrderedDict 示例](https://howtodoinjava.com/python/ordereddict-ordered-dictionary/)
[Python –字典交集](https://howtodoinjava.com/python/dictionary-intersection/) [Python – 字典交集](https://howtodoinjava.com/python/dictionary-intersection/)
[Python –优先级队列示例](https://howtodoinjava.com/python/priority-queue/) [Python – 优先级队列示例](https://howtodoinjava.com/python/priority-queue/)
#### 7.4。 杂 #### 7.4。 杂
[Python –读写 CSV 文件](https://howtodoinjava.com/python/python-read-write-csv-files/) [Python – 读写 CSV 文件](https://howtodoinjava.com/python/python-read-write-csv-files/)
[Python – httplib2 库](https://howtodoinjava.com/python/httplib2-http-get-post-requests/) [Python – httplib2 库](https://howtodoinjava.com/python/httplib2-http-get-post-requests/)
在评论中向我发送有关 python 的问题。 在评论中向我发送有关 python 的问题。
......
# Python –评论 # Python – 评论
> 原文: [https://howtodoinjava.com/python/python-comments/](https://howtodoinjava.com/python/python-comments/) > 原文: [https://howtodoinjava.com/python/python-comments/](https://howtodoinjava.com/python/python-comments/)
......
# Python –变量 # Python – 变量
> 原文: [https://howtodoinjava.com/python/python-variables/](https://howtodoinjava.com/python/python-variables/) > 原文: [https://howtodoinjava.com/python/python-variables/](https://howtodoinjava.com/python/python-variables/)
......
# Python –数据类型 # Python – 数据类型
> 原文: [https://howtodoinjava.com/python/python-data-types/](https://howtodoinjava.com/python/python-data-types/) > 原文: [https://howtodoinjava.com/python/python-data-types/](https://howtodoinjava.com/python/python-data-types/)
...@@ -52,7 +52,7 @@ sumOfItems = str(100) # type conversion from int to string ...@@ -52,7 +52,7 @@ sumOfItems = str(100) # type conversion from int to string
* `int`保留不限长度的有符号整数。 * `int`保留不限长度的有符号整数。
* `float`保留浮点精度数字,它们的精度最高为 15 个小数位。 * `float`保留浮点精度数字,它们的精度最高为 15 个小数位。
* `complex` –复数包含实部和虚部。 * `complex` 复数包含实部和虚部。
```java ```java
x = 2 # int x = 2 # int
......
# GSON –将 JSON 数组解析为 Java 数组或列表 # GSON – 将 JSON 数组解析为 Java 数组或列表
> 原文: [https://howtodoinjava.com/gson/gson-parse-json-array/](https://howtodoinjava.com/gson/gson-parse-json-array/) > 原文: [https://howtodoinjava.com/gson/gson-parse-json-array/](https://howtodoinjava.com/gson/gson-parse-json-array/)
了解如何使用 Google GSON 库将包含 *json 数组*[JSON](https://restfulapi.net/introduction-to-json/) 反序列化或解析为 Java [数组](https://howtodoinjava.com/java-array/)或 Java 列表对象。 了解如何使用 Google GSON 库将包含 *json 数组*[JSON](https://restfulapi.net/introduction-to-json/) 反序列化或解析为 Java [数组](https://howtodoinjava.com/java-array/)或 Java 列表对象。
值得一提的是,JSON 仅具有[数组数据类型](https://restfulapi.net/json-array/)。 Java 同时具有– [数组](https://howtodoinjava.com/java-array/)[列表](https://howtodoinjava.com/java-arraylist/) 值得一提的是,JSON 仅具有[数组数据类型](https://restfulapi.net/json-array/)。 Java 同时具有 [数组](https://howtodoinjava.com/java-array/)[列表](https://howtodoinjava.com/java-arraylist/)
## 1.将 JSON 数组解析为根对象 ## 1.将 JSON 数组解析为根对象
...@@ -55,7 +55,7 @@ public class User ...@@ -55,7 +55,7 @@ public class User
#### 1.1。 对象数组 #### 1.1。 对象数组
Java 程序将**反序列化为根**的 json 数组转换为 Java 对象数组。 Java 程序将**反序列化为根**的 json 数组转换为 Java 对象数组。
```java ```java
String userJson = "[{'name': 'Alex','id': 1}, " String userJson = "[{'name': 'Alex','id': 1}, "
...@@ -83,7 +83,7 @@ User [id=3, name=Charles] ...@@ -83,7 +83,7 @@ User [id=3, name=Charles]
#### 1.2。 对象清单 #### 1.2。 对象清单
Java 程序**以根**的形式反序列化 json 数组– Java 对象列表。 Java 程序**以根**的形式反序列化 json 数组 – Java 对象列表。
```java ```java
import java.lang.reflect.Type; import java.lang.reflect.Type;
...@@ -143,7 +143,7 @@ User [id=3, name=Charles] ...@@ -143,7 +143,7 @@ User [id=3, name=Charles]
#### 2.1。 成员数组 #### 2.1。 成员数组
Java 程序将**反序列化 json 数组作为成员对象** –转换为 Java 对象数组作为成员字段。 Java 程序将**反序列化 json 数组作为成员对象** 转换为 Java 对象数组作为成员字段。
```java ```java
public class Department public class Department
...@@ -190,7 +190,7 @@ Department [id=1, name=HR, ...@@ -190,7 +190,7 @@ Department [id=1, name=HR,
#### 2.2。 会员名单 #### 2.2。 会员名单
Java 程序**将 json 数组反序列化为成员对象** –到 Java 对象列表的成员字段。 Java 程序**将 json 数组反序列化为成员对象** 到 Java 对象列表的成员字段。
```java ```java
public class Department public class Department
......
# Python –关键字 # Python – 关键字
> 原文: [https://howtodoinjava.com/python/python-keywords/](https://howtodoinjava.com/python/python-keywords/) > 原文: [https://howtodoinjava.com/python/python-keywords/](https://howtodoinjava.com/python/python-keywords/)
......
# Python –字符串 # Python – 字符串
> 原文: [https://howtodoinjava.com/python/python-strings/](https://howtodoinjava.com/python/python-strings/) > 原文: [https://howtodoinjava.com/python/python-strings/](https://howtodoinjava.com/python/python-strings/)
......
# Python –列表 # Python – 列表
> 原文: [https://howtodoinjava.com/python/python-lists/](https://howtodoinjava.com/python/python-lists/) > 原文: [https://howtodoinjava.com/python/python-lists/](https://howtodoinjava.com/python/python-lists/)
...@@ -363,4 +363,4 @@ print (charList) # ["a", "b", "c", "d"] ...@@ -363,4 +363,4 @@ print (charList) # ["a", "b", "c", "d"]
阅读更多: 阅读更多:
[Python –列表与元组](https://howtodoinjava.com/python/lists-vs-tuples/) [Python – 列表与元组](https://howtodoinjava.com/python/lists-vs-tuples/)
\ No newline at end of file \ No newline at end of file
# Python –元组 # Python – 元组
> 原文: [https://howtodoinjava.com/python/python-tuples/](https://howtodoinjava.com/python/python-tuples/) > 原文: [https://howtodoinjava.com/python/python-tuples/](https://howtodoinjava.com/python/python-tuples/)
...@@ -157,7 +157,7 @@ Tuple = ("a", "b", "c") ...@@ -157,7 +157,7 @@ Tuple = ("a", "b", "c")
**拆包**称为将元组变量分配给另一个元组,并将元组中的各个项目分配给各个变量的操作。 **拆包**称为将元组变量分配给另一个元组,并将元组中的各个项目分配给各个变量的操作。
在给定的示例中,将元组解包为新的元组,并将值`"a", "b" and "c"` –分配给变量`x, y and z` 在给定的示例中,将元组解包为新的元组,并将值`"a", "b" and "c"` 分配给变量`x, y and z`
```java ```java
Tuple = ("a", "b", "c") # Packing Tuple = ("a", "b", "c") # Packing
...@@ -271,5 +271,5 @@ print( sum( Tuple ) ) # 22 ...@@ -271,5 +271,5 @@ print( sum( Tuple ) ) # 22
阅读更多 : 阅读更多 :
[Python –元组比较](https://howtodoinjava.com/python/compare-tuples/) [Python – 元组比较](https://howtodoinjava.com/python/compare-tuples/)
[Python –列表与元组](https://howtodoinjava.com/python/lists-vs-tuples/) [Python – 列表与元组](https://howtodoinjava.com/python/lists-vs-tuples/)
\ No newline at end of file \ No newline at end of file
# Python max()和 min()–在列表或数组中查找最大值和最小值 # Python max()和 min()– 在列表或数组中查找最大值和最小值
> 原文: [https://howtodoinjava.com/python/max-min/](https://howtodoinjava.com/python/max-min/) > 原文: [https://howtodoinjava.com/python/max-min/](https://howtodoinjava.com/python/max-min/)
...@@ -6,7 +6,7 @@ Python 示例使用 **max()**和 **min()**方法在可比较元素的集 ...@@ -6,7 +6,7 @@ Python 示例使用 **max()**和 **min()**方法在可比较元素的集
## 1\. Python max()函数 ## 1\. Python max()函数
`max()`功能用于– `max()`功能用于
1. 计算在其参数中传递的最大值。 1. 计算在其参数中传递的最大值。
2. 如果字符串作为参数传递,则在字典上的最大值。 2. 如果字符串作为参数传递,则在字典上的最大值。
...@@ -56,7 +56,7 @@ Python 示例使用 **max()**和 **min()**方法在可比较元素的集 ...@@ -56,7 +56,7 @@ Python 示例使用 **max()**和 **min()**方法在可比较元素的集
## 2\. Python min()函数 ## 2\. Python min()函数
此功能用于– 此功能用于
1. 计算在其参数中传递的最小值。 1. 计算在其参数中传递的最小值。
2. 如果字符串作为参数传递,则在字典上的最小值。 2. 如果字符串作为参数传递,则在字典上的最小值。
......
...@@ -6,7 +6,7 @@ Python 示例使用 **heapq** 库中的 **nlargest()**和 **nsmallest()* ...@@ -6,7 +6,7 @@ Python 示例使用 **heapq** 库中的 **nlargest()**和 **nsmallest()*
## 1.使用 heapq 模块的 nlargest()和 nsmallest() ## 1.使用 heapq 模块的 nlargest()和 nsmallest()
Python `heapq`模块可用于**从集合中找到 N 个最大或最小的项目**。 它具有两个功能来帮助– Python `heapq`模块可用于**从集合中找到 N 个最大或最小的项目**。 它具有两个功能来帮助
1. `nlargest()` 1. `nlargest()`
2. `nsmallest()` 2. `nsmallest()`
......
...@@ -8,7 +8,7 @@ Python 示例将 N 元素元组或序列解压缩为 N 个变量的集合。 Pyt ...@@ -8,7 +8,7 @@ Python 示例将 N 元素元组或序列解压缩为 N 个变量的集合。 Pyt
可以使用简单的赋值操作将任何序列(或可迭代)解压缩为变量。 唯一的要求是变量和结构的**数量与序列**匹配。 可以使用简单的赋值操作将任何序列(或可迭代)解压缩为变量。 唯一的要求是变量和结构的**数量与序列**匹配。
#### 1.1。 解压示例– 1 #### 1.1。 解压示例 – 1
```java ```java
>>> data = (1, 2, 3) >>> data = (1, 2, 3)
...@@ -22,7 +22,7 @@ Python 示例将 N 元素元组或序列解压缩为 N 个变量的集合。 Pyt ...@@ -22,7 +22,7 @@ Python 示例将 N 元素元组或序列解压缩为 N 个变量的集合。 Pyt
``` ```
#### 1.2。 解压示例– 2 #### 1.2。 解压示例 – 2
```java ```java
>>> data = [ 'Lokesh', 37, 73.5, (1981, 1, 1) ] >>> data = [ 'Lokesh', 37, 73.5, (1981, 1, 1) ]
...@@ -49,7 +49,7 @@ Python 示例将 N 元素元组或序列解压缩为 N 个变量的集合。 Pyt ...@@ -49,7 +49,7 @@ Python 示例将 N 元素元组或序列解压缩为 N 个变量的集合。 Pyt
``` ```
#### 1.3。 解压示例– 3 #### 1.3。 解压示例 – 3
```java ```java
>>> greeting = 'Hello' >>> greeting = 'Hello'
......
# Python 解包元组太多值无法解包 # Python 解包元组太多值无法解包
> 原文: [https://howtodoinjava.com/python/unpack-variable-length-tuple/](https://howtodoinjava.com/python/unpack-variable-length-tuple/) > 原文: [https://howtodoinjava.com/python/unpack-variable-length-tuple/](https://howtodoinjava.com/python/unpack-variable-length-tuple/)
......
# GSON –序列化和反序列化 JSON 以进行设置 # GSON – 序列化和反序列化 JSON 以进行设置
> 原文: [https://howtodoinjava.com/gson/gson-serialize-deserialize-set/](https://howtodoinjava.com/gson/gson-serialize-deserialize-set/) > 原文: [https://howtodoinjava.com/gson/gson-serialize-deserialize-set/](https://howtodoinjava.com/gson/gson-serialize-deserialize-set/)
......
# Python multidict 示例将单个键映射到字典中的多个值 # Python multidict 示例将单个键映射到字典中的多个值
> 原文: [https://howtodoinjava.com/python/multidict-key-to-multiple-values/](https://howtodoinjava.com/python/multidict-key-to-multiple-values/) > 原文: [https://howtodoinjava.com/python/multidict-key-to-multiple-values/](https://howtodoinjava.com/python/multidict-key-to-multiple-values/)
......
# Python OrderedDict –有序字典 # Python OrderedDict – 有序字典
> 原文: [https://howtodoinjava.com/python/ordereddict-ordered-dictionary/](https://howtodoinjava.com/python/ordereddict-ordered-dictionary/) > 原文: [https://howtodoinjava.com/python/ordereddict-ordered-dictionary/](https://howtodoinjava.com/python/ordereddict-ordered-dictionary/)
......
# Python 字典交集比较两个字典 # Python 字典交集比较两个字典
> 原文: [https://howtodoinjava.com/python/dictionary-intersection/](https://howtodoinjava.com/python/dictionary-intersection/) > 原文: [https://howtodoinjava.com/python/dictionary-intersection/](https://howtodoinjava.com/python/dictionary-intersection/)
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
[RxJava 2.0](http://reactivex.io/) 是 Java 的开源扩展,用于 NetFlix 的异步编程。 如 [java 8 lambda 表达式](//howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/)中所示,它与函数式编程更加接近。 反应代码的基本构建块是*可观察对象**订户*`Observable`发出项目; `Subscriber`消耗这些项目。 [RxJava 2.0](http://reactivex.io/) 是 Java 的开源扩展,用于 NetFlix 的异步编程。 如 [java 8 lambda 表达式](//howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/)中所示,它与函数式编程更加接近。 反应代码的基本构建块是*可观察对象**订户*`Observable`发出项目; `Subscriber`消耗这些项目。
RxJava 看起来也像[观察者设计模式](https://howtodoinjava.com/design-patterns/behavioral/observer-design-pattern/),但有所不同可观察对象通常不会开始发布项目,除非有人明确订阅它们。 RxJava 看起来也像[观察者设计模式](https://howtodoinjava.com/design-patterns/behavioral/observer-design-pattern/),但有所不同可观察对象通常不会开始发布项目,除非有人明确订阅它们。
```java ```java
Table of Contents Table of Contents
......
# Gson –序列化和反序列化包含自定义对象的 HashMap # Gson – 序列化和反序列化包含自定义对象的 HashMap
> 原文: [https://howtodoinjava.com/gson/gson-serialize-deserialize-hashmap/](https://howtodoinjava.com/gson/gson-serialize-deserialize-hashmap/) > 原文: [https://howtodoinjava.com/gson/gson-serialize-deserialize-hashmap/](https://howtodoinjava.com/gson/gson-serialize-deserialize-hashmap/)
......
# SQL –删除没有临时表的重复行 # SQL – 删除没有临时表的重复行
> 原文: [https://howtodoinjava.com/sql/how-to-remove-duplicate-rows-in-mysql-without-using-temporary-table/](https://howtodoinjava.com/sql/how-to-remove-duplicate-rows-in-mysql-without-using-temporary-table/) > 原文: [https://howtodoinjava.com/sql/how-to-remove-duplicate-rows-in-mysql-without-using-temporary-table/](https://howtodoinjava.com/sql/how-to-remove-duplicate-rows-in-mysql-without-using-temporary-table/)
......
# Struts 2 –如何正确设置结果路径 # Struts 2 – 如何正确设置结果路径
> 原文: [https://howtodoinjava.com/struts2/how-to-correctly-set-result-path-in-struts-2/](https://howtodoinjava.com/struts2/how-to-correctly-set-result-path-in-struts-2/) > 原文: [https://howtodoinjava.com/struts2/how-to-correctly-set-result-path-in-struts-2/](https://howtodoinjava.com/struts2/how-to-correctly-set-result-path-in-struts-2/)
......
...@@ -11,7 +11,7 @@ Gson gson = new GsonBuilder().create(); ...@@ -11,7 +11,7 @@ Gson gson = new GsonBuilder().create();
``` ```
## 1\. GsonBuilder.setPrettyPrinting()–漂亮的打印 JSON ## 1\. GsonBuilder.setPrettyPrinting()– 漂亮的打印 JSON
默认情况下,Gson 将创建缩小的 JSON 字符串。 这对于减少通过网络传输的数据量非常重要。 默认情况下,Gson 将创建缩小的 JSON 字符串。 这对于减少通过网络传输的数据量非常重要。
...@@ -138,7 +138,7 @@ Gson 将确保在将 Java 字段名称的第一个“字母”序列化为 JSON ...@@ -138,7 +138,7 @@ Gson 将确保在将 Java 字段名称的第一个“字母”序列化为 JSON
``` ```
## 3\. GsonBuilder.serializeNulls()–空值的序列化 ## 3\. GsonBuilder.serializeNulls()– 空值的序列化
默认情况下,Gson 在序列化过程中会忽略`null`属性。 但是,有时我们想序列化具有空值的字段,以便它必须出现在 JSON 中。 为此,请使用 **serializeNulls()**方法。 默认情况下,Gson 在序列化过程中会忽略`null`属性。 但是,有时我们想序列化具有空值的字段,以便它必须出现在 JSON 中。 为此,请使用 **serializeNulls()**方法。
...@@ -195,7 +195,7 @@ Gson gson = new GsonBuilder() ...@@ -195,7 +195,7 @@ Gson gson = new GsonBuilder()
``` ```
## 5\. GsonBuilder.setLenient()–宽松的 JSON 语法规则 ## 5\. GsonBuilder.setLenient()– 宽松的 JSON 语法规则
在反序列化期间,Gson 使用了一个不太宽大的 *JsonReader* 类。 这意味着它仅接受兼容的 JSON 输入。 如果 JSON 违反结构规则之一,它将抛出 **MalformedJsonException** 在反序列化期间,Gson 使用了一个不太宽大的 *JsonReader* 类。 这意味着它仅接受兼容的 JSON 输入。 如果 JSON 违反结构规则之一,它将抛出 **MalformedJsonException**
......
# HTML5 –部分代码示例 # HTML5 – 部分代码示例
> 原文: [https://howtodoinjava.com/html5/html5-section-tag/](https://howtodoinjava.com/html5/html5-section-tag/) > 原文: [https://howtodoinjava.com/html5/html5-section-tag/](https://howtodoinjava.com/html5/html5-section-tag/)
......
# HTML5 字符集字符编码声明 # HTML5 字符集字符编码声明
> 原文: [https://howtodoinjava.com/html5/html5-charset/](https://howtodoinjava.com/html5/html5-charset/) > 原文: [https://howtodoinjava.com/html5/html5-charset/](https://howtodoinjava.com/html5/html5-charset/)
......
...@@ -18,6 +18,6 @@ ...@@ -18,6 +18,6 @@
* [如何反转字符串](//howtodoinjava.com/puzzles/how-to-reverse-string-in-java/) * [如何反转字符串](//howtodoinjava.com/puzzles/how-to-reverse-string-in-java/)
* [从系列](//howtodoinjava.com/puzzles/find-missing-number-from-series/)中查找丢失的号码 * [从系列](//howtodoinjava.com/puzzles/find-missing-number-from-series/)中查找丢失的号码
如果被问到,别忘了分享更多这样的难题并且您认为它们可以帮助其他人。 如果被问到,别忘了分享更多这样的难题并且您认为它们可以帮助其他人。
学习愉快! 学习愉快!
\ No newline at end of file
...@@ -38,7 +38,7 @@ public class IdentifyProblemsInCode { ...@@ -38,7 +38,7 @@ public class IdentifyProblemsInCode {
我将在下一节中给出上述难题的答案,但我建议您先尝试一下。 它只是为了好玩。 我将在下一节中给出上述难题的答案,但我建议您先尝试一下。 它只是为了好玩。
## 2.解决方案代码无效 ## 2.解决方案代码无效
我们所有人都必须面对与“ **Unreachable code** ”相关的编译**错误**,并且有些人可能已经注意到“ **无效代码警告**”。 以上难题仅与他们有关。 我们所有人都必须面对与“ **Unreachable code** ”相关的编译**错误**,并且有些人可能已经注意到“ **无效代码警告**”。 以上难题仅与他们有关。
...@@ -54,7 +54,7 @@ public class IdentifyProblemsInCode { ...@@ -54,7 +54,7 @@ public class IdentifyProblemsInCode {
方法 2 中无法访问的代码称为“ **死代码**”。 这是**纯粹是 Eclipse 编译器报告的错误**,如果您使用“ ***javac*** ”编译上述类,则 Java 内置编译器将仅抱怨其他两种方法。 [第一和第三]。 方法 2 中无法访问的代码称为“ **死代码**”。 这是**纯粹是 Eclipse 编译器报告的错误**,如果您使用“ ***javac*** ”编译上述类,则 Java 内置编译器将仅抱怨其他两种方法。 [第一和第三]。
> **引用 Java 语言规范–** > **引用 Java 语言规范 –**
> >
> “我们的想法是,从包含该语句的构造函数,方法,实例初始化程序或静态初始化程序的开始,必须有一些可能的执行路径。 分析考虑了语句的结构。 > “我们的想法是,从包含该语句的构造函数,方法,实例初始化程序或静态初始化程序的开始,必须有一些可能的执行路径。 分析考虑了语句的结构。
> >
......
# Java 字符串回文– Java 数字回文示例 # Java 字符串回文 – Java 数字回文示例
> 原文: [https://howtodoinjava.com/puzzles/java-string-palindrome-number-palindrome/](https://howtodoinjava.com/puzzles/java-string-palindrome-number-palindrome/) > 原文: [https://howtodoinjava.com/puzzles/java-string-palindrome-number-palindrome/](https://howtodoinjava.com/puzzles/java-string-palindrome-number-palindrome/)
......
# Java 难题查找所有重复的元素 # Java 难题查找所有重复的元素
> 原文: [https://howtodoinjava.com/puzzles/find-all-duplicate-elements/](https://howtodoinjava.com/puzzles/find-all-duplicate-elements/) > 原文: [https://howtodoinjava.com/puzzles/find-all-duplicate-elements/](https://howtodoinjava.com/puzzles/find-all-duplicate-elements/)
......
# Java 难题– TreeMap 的放置操作 # Java 难题 – TreeMap 的放置操作
> 原文: [https://howtodoinjava.com/puzzles/java-puzzle-treemap-put-operation/](https://howtodoinjava.com/puzzles/java-puzzle-treemap-put-operation/) > 原文: [https://howtodoinjava.com/puzzles/java-puzzle-treemap-put-operation/](https://howtodoinjava.com/puzzles/java-puzzle-treemap-put-operation/)
......
# 拼图返回所有字符串的第 N 个最长长度 # 拼图返回所有字符串的第 N 个最长长度
> 原文: [https://howtodoinjava.com/puzzles/puzzle-return-all-the-strings-with-the-nth-longest-length/](https://howtodoinjava.com/puzzles/puzzle-return-all-the-strings-with-the-nth-longest-length/) > 原文: [https://howtodoinjava.com/puzzles/puzzle-return-all-the-strings-with-the-nth-longest-length/](https://howtodoinjava.com/puzzles/puzzle-return-all-the-strings-with-the-nth-longest-length/)
......
# Gson @Since –版本支持 # Gson @Since – 版本支持
> 原文: [https://howtodoinjava.com/gson/gson-since-version-support/](https://howtodoinjava.com/gson/gson-since-version-support/) > 原文: [https://howtodoinjava.com/gson/gson-since-version-support/](https://howtodoinjava.com/gson/gson-since-version-support/)
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
## 1\. Gson @Since 注解 ## 1\. Gson @Since 注解
[Gson](https://howtodoinjava.com/learningpaths/gson/) 中,可以通过使用`@Since`注释来维护同一对象的多个版本。 可以在类,字段以及将来的方法中使用此注释。 它采用单个参数– **ignoreVersionsAfter** [Gson](https://howtodoinjava.com/learningpaths/gson/) 中,可以通过使用`@Since`注释来维护同一对象的多个版本。 可以在类,字段以及将来的方法中使用此注释。 它采用单个参数 **ignoreVersionsAfter**
当我们用版本号`'M.N'`配置`Gson`实例时,所有标记有**版本大于`M.N`的类字段将被忽略** 当我们用版本号`'M.N'`配置`Gson`实例时,所有标记有**版本大于`M.N`的类字段将被忽略**
......
# Java 难题:好的字符串坏的字符串 # Java 难题:好的字符串坏的字符串
> 原文: [https://howtodoinjava.com/puzzles/java-puzzle-good-string-bad-string/](https://howtodoinjava.com/puzzles/java-puzzle-good-string-bad-string/) > 原文: [https://howtodoinjava.com/puzzles/java-puzzle-good-string-bad-string/](https://howtodoinjava.com/puzzles/java-puzzle-good-string-bad-string/)
......
# 拼图检查字符串是否完整(包含所有字母) # 拼图检查字符串是否完整(包含所有字母)
> 原文: [https://howtodoinjava.com/puzzles/puzzle-check-if-string-is-complete-contains-all-alphabets/](https://howtodoinjava.com/puzzles/puzzle-check-if-string-is-complete-contains-all-alphabets/) > 原文: [https://howtodoinjava.com/puzzles/puzzle-check-if-string-is-complete-contains-all-alphabets/](https://howtodoinjava.com/puzzles/puzzle-check-if-string-is-complete-contains-all-alphabets/)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/puzzles/3-ways-to-calculate-factorial-in-java/](https://howtodoinjava.com/puzzles/3-ways-to-calculate-factorial-in-java/) > 原文: [https://howtodoinjava.com/puzzles/3-ways-to-calculate-factorial-in-java/](https://howtodoinjava.com/puzzles/3-ways-to-calculate-factorial-in-java/)
编写程序以用 Java 计算[阶乘](https://en.wikipedia.org/wiki/Factorial) –可能是 [Java 访谈](//howtodoinjava.com/java-interview-questions/)期间的编码练习。 最好了解如何构建这样的析因程序。 让我们经历以下三种方式: 编写程序以用 Java 计算[阶乘](https://en.wikipedia.org/wiki/Factorial) 可能是 [Java 访谈](//howtodoinjava.com/java-interview-questions/)期间的编码练习。 最好了解如何构建这样的析因程序。 让我们经历以下三种方式:
## 1)使用迭代计算阶乘 ## 1)使用迭代计算阶乘
...@@ -47,7 +47,7 @@ public static long factorialStreams( long n ) ...@@ -47,7 +47,7 @@ public static long factorialStreams( long n )
``` ```
* 在这里,`[LongStream](https://docs.oracle.com/javase/8/docs/api/java/util/stream/LongStream.html).rangeClosed(2, n)`方法创建内容为`[2, 3, ... , n]`的 long 流。 * 在这里,`[LongStream](https://docs.oracle.com/javase/8/docs/api/java/util/stream/LongStream.html).rangeClosed(2, n)`方法创建内容为`[2, 3, ... , n]`的 long 流。
* `reduce (a, b) -> a * b`表示每对`a``b` –将它们相乘并返回结果。 然后结果继续到下一轮。 * `reduce (a, b) -> a * b`表示每对`a``b` 将它们相乘并返回结果。 然后结果继续到下一轮。
* 在简化方法中使用的值“ 1”在第一次迭代中用作变量`a`的起始值。 * 在简化方法中使用的值“ 1”在第一次迭代中用作变量`a`的起始值。
## 4)使用 BigInteger 计算大于 20 的数字的阶乘 ## 4)使用 BigInteger 计算大于 20 的数字的阶乘
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/puzzles/find-missing-number-from-series/](https://howtodoinjava.com/puzzles/find-missing-number-from-series/) > 原文: [https://howtodoinjava.com/puzzles/find-missing-number-from-series/](https://howtodoinjava.com/puzzles/find-missing-number-from-series/)
[Java 访谈](https://howtodoinjava.com/java-interview-questions/)上,一个常见的难题是从一系列数字或数组中找到缺失的数字。 这个难题已经在 Amazon.com 中问过。 [Java 访谈](https://howtodoinjava.com/java-interview-questions/)上,一个常见的难题是从一系列数字或数组中找到缺失的数字。 这个难题已经在 Amazon.com 中问过。
在这个 Java 难题中,您有一系列数字开头(例如 1….N),而该系列中恰好缺少一个数字。 您必须编写一个 **Java 程序来查找**系列中的缺失数字。 在这个 Java 难题中,您有一系列数字开头(例如 1….N),而该系列中恰好缺少一个数字。 您必须编写一个 **Java 程序来查找**系列中的缺失数字。
...@@ -45,7 +45,7 @@ Output: ...@@ -45,7 +45,7 @@ Output:
``` ```
## 查找电话号码的解决方案– Java 8 ## 查找电话号码的解决方案 – Java 8
上面的代码虽然很简单,但是可以使用新语言功能(例如 [Java 8](https://howtodoinjava.com/java-8-tutorial/) 中的 [lambda](https://howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/) )减少许多行。 让我们看看如何? 上面的代码虽然很简单,但是可以使用新语言功能(例如 [Java 8](https://howtodoinjava.com/java-8-tutorial/) 中的 [lambda](https://howtodoinjava.com/java8/complete-lambda-expressions-tutorial-in-java/) )减少许多行。 让我们看看如何?
......
# Java –创建不带“ new”关键字的对象 # Java – 创建不带“ new”关键字的对象
> 原文: [https://howtodoinjava.com/puzzles/how-to-create-an-instance-of-any-class-without-using-new-keyword/](https://howtodoinjava.com/puzzles/how-to-create-an-instance-of-any-class-without-using-new-keyword/) > 原文: [https://howtodoinjava.com/puzzles/how-to-create-an-instance-of-any-class-without-using-new-keyword/](https://howtodoinjava.com/puzzles/how-to-create-an-instance-of-any-class-without-using-new-keyword/)
......
...@@ -16,9 +16,9 @@ ...@@ -16,9 +16,9 @@
该系列分为 3 部分。 这些问题将帮助您在很短的时间内快速修订最常见的核心 Java 问题。 开始准备下一次面试的最佳方法。 该系列分为 3 部分。 这些问题将帮助您在很短的时间内快速修订最常见的核心 Java 问题。 开始准备下一次面试的最佳方法。
* [核心 Java 面试问题第 1 部分](//howtodoinjava.com/java/interviews-questions/core-java-interview-questions-series-part-1/) * [核心 Java 面试问题第 1 部分](//howtodoinjava.com/java/interviews-questions/core-java-interview-questions-series-part-1/)
* [核心 Java 面试问题第 2 部分](//howtodoinjava.com/java/interviews-questions/core-java-interview-questions-series-part-2/) * [核心 Java 面试问题第 2 部分](//howtodoinjava.com/java/interviews-questions/core-java-interview-questions-series-part-2/)
* [核心 Java 面试问题第 3 部分](//howtodoinjava.com/java/interviews-questions/core-java-interview-questions-series-part-3/) * [核心 Java 面试问题第 3 部分](//howtodoinjava.com/java/interviews-questions/core-java-interview-questions-series-part-3/)
#### 1.2。 [对象初始化最佳做法](//howtodoinjava.com/java/related-concepts/object-initialization-best-practices-internal-caching-in-wrapper-classes/) #### 1.2。 [对象初始化最佳做法](//howtodoinjava.com/java/related-concepts/object-initialization-best-practices-internal-caching-in-wrapper-classes/)
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#### 1.3。 [HashMap 在 Java 中的工作方式](//howtodoinjava.com/java/collections/how-hashmap-works-in-java/ "How hashmap works in java") #### 1.3。 [HashMap 在 Java 中的工作方式](//howtodoinjava.com/java/collections/how-hashmap-works-in-java/ "How hashmap works in java")
如果您参加任何初级或中级面试,`[HashMap](https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html)`可能是讨论最多且最具争议的话题。 如果您知道 hashmap 在内部如何工作,您可以面对与`**HashMap**`相关的任何面试问题。 这篇文章将帮助您回答一些很好的问题,例如– 如果您参加任何初级或中级面试,`[HashMap](https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html)`可能是讨论最多且最具争议的话题。 如果您知道 hashmap 在内部如何工作,您可以面对与`**HashMap**`相关的任何面试问题。 这篇文章将帮助您回答一些很好的问题,例如
* HashMap 如何存储键值对? * HashMap 如何存储键值对?
* HashMap 如何解决冲突? * HashMap 如何解决冲突?
...@@ -53,7 +53,7 @@ HashMap 不是线程安全的。 我们可以在并发应用程序中使用 **Ha ...@@ -53,7 +53,7 @@ HashMap 不是线程安全的。 我们可以在并发应用程序中使用 **Ha
我是否应该建议您准备**收集框架**及其所有主要类别? 我想你已经足够聪明了。 我是否应该建议您准备**收集框架**及其所有主要类别? 我想你已经足够聪明了。
如果没有任何与馆藏框架有关的问题,则任何面试(初中和中级)都将是不完整的。 它真正测试您的编程技能和对核心 Java API 的了解。 问题可能像集合层次结构一样简单,而困难的问题例如队列和堆栈。 这是此类常见收藏采访问题的列表– 如果没有任何与馆藏框架有关的问题,则任何面试(初中和中级)都将是不完整的。 它真正测试您的编程技能和对核心 Java API 的了解。 问题可能像集合层次结构一样简单,而困难的问题例如队列和堆栈。 这是此类常见收藏采访问题的列表
* 解释馆藏层次? * 解释馆藏层次?
* **设置****列表**之间的区别? * **设置****列表**之间的区别?
...@@ -98,7 +98,7 @@ HashMap 不是线程安全的。 我们可以在并发应用程序中使用 **Ha ...@@ -98,7 +98,7 @@ HashMap 不是线程安全的。 我们可以在并发应用程序中使用 **Ha
#### 1.11。 [枚举面试问题](//howtodoinjava.com/java-5/guide-for-understanding-enum-in-java/) #### 1.11。 [枚举面试问题](//howtodoinjava.com/java-5/guide-for-understanding-enum-in-java/)
枚举已成为核心构建块很长时间了。 在大多数流行的 Java 库中都可以看到它们。 它们帮助您以更加面向对象的方式管理常量。 它们看起来非常简单,但是如果您深入研究,它们会隐藏很多复杂性。 一些枚举问题可能是– 枚举已成为核心构建块很长时间了。 在大多数流行的 Java 库中都可以看到它们。 它们帮助您以更加面向对象的方式管理常量。 它们看起来非常简单,但是如果您深入研究,它们会隐藏很多复杂性。 一些枚举问题可能是
* 枚举与枚举类之间的区别? * 枚举与枚举类之间的区别?
* 枚举可以与 String 一起使用吗? * 枚举可以与 String 一起使用吗?
...@@ -109,7 +109,7 @@ HashMap 不是线程安全的。 我们可以在并发应用程序中使用 **Ha ...@@ -109,7 +109,7 @@ HashMap 不是线程安全的。 我们可以在并发应用程序中使用 **Ha
#### 1.12。 [Java 序列化和可序列化接口](//howtodoinjava.com/java/serialization/a-mini-guide-for-implementing-serializable-interface-in-java/) #### 1.12。 [Java 序列化和可序列化接口](//howtodoinjava.com/java/serialization/a-mini-guide-for-implementing-serializable-interface-in-java/)
如果您准备对电信公司或在其应用程序流程中使用**序列化**的任何此类域进行 Java 采访,那么您将从本教程中受益匪浅。 用 Java 进行序列化的可做与不可做的一个很好的清单。 可能的问题可能包括– 如果您准备对电信公司或在其应用程序流程中使用**序列化**的任何此类域进行 Java 采访,那么您将从本教程中受益匪浅。 用 Java 进行序列化的可做与不可做的一个很好的清单。 可能的问题可能包括
* 什么是 **serialVersionUID** * 什么是 **serialVersionUID**
* 什么是 **readObject****writeObject** * 什么是 **readObject****writeObject**
...@@ -179,7 +179,7 @@ Java 中的对象**克隆**并非易事。 我自己花了很长时间了解 Jav ...@@ -179,7 +179,7 @@ Java 中的对象**克隆**并非易事。 我自己花了很长时间了解 Jav
这也是一个非常受欢迎的面试问题。 如果您的角色要求为并发应用程序创建设计,那么您必须知道此问题的正确答案。 这个问题的答案决定了您在两者之间选择哪种结构。 这也是一个非常受欢迎的面试问题。 如果您的角色要求为并发应用程序创建设计,那么您必须知道此问题的正确答案。 这个问题的答案决定了您在两者之间选择哪种结构。
此外,它将帮助您回答一些基本问题,例如– 此外,它将帮助您回答一些基本问题,例如
* 线程和可运行之间的区别? * 线程和可运行之间的区别?
* 编写 Java 代码以使用 Runnable 接口创建线程? * 编写 Java 代码以使用 Runnable 接口创建线程?
......
...@@ -18,6 +18,6 @@ ...@@ -18,6 +18,6 @@
* [如何反转字符串](//howtodoinjava.com/puzzles/how-to-reverse-string-in-java/) * [如何反转字符串](//howtodoinjava.com/puzzles/how-to-reverse-string-in-java/)
* [从系列](//howtodoinjava.com/puzzles/find-missing-number-from-series/)中查找丢失的号码 * [从系列](//howtodoinjava.com/puzzles/find-missing-number-from-series/)中查找丢失的号码
如果被问到,别忘了分享更多这样的难题并且您认为它们可以帮助其他人。 如果被问到,别忘了分享更多这样的难题并且您认为它们可以帮助其他人。
学习愉快! 学习愉快!
\ No newline at end of file
...@@ -16,8 +16,8 @@ ...@@ -16,8 +16,8 @@
它接受两个属性: 它接受两个属性:
* `value` –序列化或反序列化时所需的字段名称。 * `value` 序列化或反序列化时所需的字段名称。
* `alternate` –反序列化字段时的备用名称。 除了*'值'*属性以外,它还提供更多可能的名称。 如果有多个字段匹配一个属性,则 Gson 将使用最后处理的那个。 * `alternate` 反序列化字段时的备用名称。 除了*'值'*属性以外,它还提供更多可能的名称。 如果有多个字段匹配一个属性,则 Gson 将使用最后处理的那个。
> 请记住,具有多个名称的`alternate`选项仅限于反序列化。 在序列化中,不会有任何影响。 > 请记住,具有多个名称的`alternate`选项仅限于反序列化。 在序列化中,不会有任何影响。
......
...@@ -345,7 +345,7 @@ default: ...@@ -345,7 +345,7 @@ default:
## 15.编写一个程序以打印 String 的所有排列? ## 15.编写一个程序以打印 String 的所有排列?
排列是对字符的有序列表的元素进行重新排列,以使每个排列相对于其他排列都是唯一的。 例如 以下是字符串“ ABC”的排列– ABC ACB BAC BCA CBA CAB。 排列是对字符的有序列表的元素进行重新排列,以使每个排列相对于其他排列都是唯一的。 例如 以下是字符串“ ABC”的排列 – ABC ACB BAC BCA CBA CAB。
> 长度为`N`的字符串具有`N! (N Factorial)`排列。 > 长度为`N`的字符串具有`N! (N Factorial)`排列。
......
# Java 核心面试问题第 1 部分 # Java 核心面试问题第 1 部分
> 原文: [https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-1/](https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-1/) > 原文: [https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-1/](https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-1/)
...@@ -31,7 +31,7 @@ When do you override hashCode and equals()? ...@@ -31,7 +31,7 @@ When do you override hashCode and equals()?
3. 不允许子类覆盖方法。 最简单的方法是将类声明为`final`。 Java 中的最终类不能被覆盖。 3. 不允许子类覆盖方法。 最简单的方法是将类声明为`final`。 Java 中的最终类不能被覆盖。
4. 永远记住,您的实例变量将是可变的或不可变的。 标识它们并返回具有所有可变对象(对象引用)复制内容的新对象。 不变的变量(原始类型)可以安全地返回,而无需付出额外的努力。 4. 永远记住,您的实例变量将是可变的或不可变的。 标识它们并返回具有所有可变对象(对象引用)复制内容的新对象。 不变的变量(原始类型)可以安全地返回,而无需付出额外的努力。
另外,您应该记住不变类的以下好处。 面试期间您可能需要它们。 不变的类– 另外,您应该记住不变类的以下好处。 面试期间您可能需要它们。 不变的类
* 易于构建,测试和使用 * 易于构建,测试和使用
* 自动是线程安全的,并且没有同步问题 * 自动是线程安全的,并且没有同步问题
...@@ -69,8 +69,8 @@ Java 规范说 Java 中的 ***都是按值传递*** 。 在 Java 中,没有“ ...@@ -69,8 +69,8 @@ Java 规范说 Java 中的 ***都是按值传递*** 。 在 Java 中,没有“
`java.sql.Date``java.util.Date`的子类(扩展)。 因此,`java.sql.Date`中发生了什么变化: `java.sql.Date``java.util.Date`的子类(扩展)。 因此,`java.sql.Date`中发生了什么变化:
`toString()`生成不同的字符串表示形式: **yyyy-mm-dd** `toString()`生成不同的字符串表示形式: **yyyy-mm-dd**
–一种`static valueOf(String)`方法,从具有上述表示形式的字符串中创建日期 一种`static valueOf(String)`方法,从具有上述表示形式的字符串中创建日期
–吸气器和设置器数小时 ,不建议使用分钟和秒 吸气器和设置器数小时 ,不建议使用分钟和秒
`java.sql.Date`类与 JDBC 一起使用,并且不应包含时间部分,即小时,分钟,秒和毫秒应为零…但是该类未强制执行。 `java.sql.Date`类与 JDBC 一起使用,并且不应包含时间部分,即小时,分钟,秒和毫秒应为零…但是该类未强制执行。
......
# Java 核心面试问题第 2 部分 # Java 核心面试问题第 2 部分
> 原文: [https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-2/](https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-2/) > 原文: [https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-2/](https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-2/)
...@@ -95,8 +95,8 @@ Wrapping data and methods within classes in combination with implementation hidi ...@@ -95,8 +95,8 @@ Wrapping data and methods within classes in combination with implementation hidi
因此,它们可以像下面这样关联: 因此,它们可以像下面这样关联:
–抽象更多是关于“类可以做什么”。 [想法] 抽象更多是关于“类可以做什么”。 [想法]
–封装更多地是关于“如何”实现该功能。 [实施] 封装更多地是关于“如何”实现该功能。 [实施]
## 接口和抽象类之间的区别? ## 接口和抽象类之间的区别?
...@@ -126,8 +126,8 @@ Wrapping data and methods within classes in combination with implementation hidi ...@@ -126,8 +126,8 @@ Wrapping data and methods within classes in combination with implementation hidi
Java 基于 [Hoare](https://en.wikipedia.org/wiki/Tony_Hoare) 的监视器概念。 在 Java 中,所有对象都有一个监视器。 线程在监视器上等待,因此要执行等待,我们需要 2 个参数: Java 基于 [Hoare](https://en.wikipedia.org/wiki/Tony_Hoare) 的监视器概念。 在 Java 中,所有对象都有一个监视器。 线程在监视器上等待,因此要执行等待,我们需要 2 个参数:
–线程 线程
–监视器(任何对象) 监视器(任何对象)
在 Java 设计中,无法指定线程,它始终是当前运行代码的线程。 但是,我们可以指定监视器(这是我们称为 wait 的对象)。 这是一个很好的设计,因为如果我们可以让任何其他线程在所需的监视器上等待,则会导致“入侵”,给设计/编程并发程序带来了困难。 请记住,在 Java 中,不推荐使用会干扰另一个线程执行的所有操作(例如 stop())。 在 Java 设计中,无法指定线程,它始终是当前运行代码的线程。 但是,我们可以指定监视器(这是我们称为 wait 的对象)。 这是一个很好的设计,因为如果我们可以让任何其他线程在所需的监视器上等待,则会导致“入侵”,给设计/编程并发程序带来了困难。 请记住,在 Java 中,不推荐使用会干扰另一个线程执行的所有操作(例如 stop())。
...@@ -211,6 +211,6 @@ Output: ...@@ -211,6 +211,6 @@ Output:
``` ```
显然,我可以在列表中的任意位置添加元素,同时对其进行迭代同样,我也可以更改任何元素。 使用`Iterator`不可能。 显然,我可以在列表中的任意位置添加元素,同时对其进行迭代同样,我也可以更改任何元素。 使用`Iterator`不可能。
学习愉快! 学习愉快!
\ No newline at end of file
# Java 核心面试问题第 3 部分 # Java 核心面试问题第 3 部分
> 原文: [https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-3/](https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-3/) > 原文: [https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-3/](https://howtodoinjava.com/interview-questions/core-java-interview-questions-series-part-3/)
......
...@@ -120,7 +120,7 @@ public interface Collection extends Iterable { ...@@ -120,7 +120,7 @@ public interface Collection extends Iterable {
由于存在如此大的差异,因此在 Map 界面中未使用 Collection 界面,而是在单独的层次结构中构建。 由于存在如此大的差异,因此在 Map 界面中未使用 Collection 界面,而是在单独的层次结构中构建。
## Java 集合面试列出接口问题 ## Java 集合面试列出接口问题
#### 5)为什么要使用 List 接口? 什么是实现 List 接口的主要类? #### 5)为什么要使用 List 接口? 什么是实现 List 接口的主要类?
...@@ -162,7 +162,7 @@ List numsList = Arrays.asList(nums); ...@@ -162,7 +162,7 @@ List numsList = Arrays.asList(nums);
``` ```
## Java 集合面试设置接口问题 ## Java 集合面试设置接口问题
#### 8)为什么要使用 Set 接口? 什么是实现 Set 接口的主要类? #### 8)为什么要使用 Set 接口? 什么是实现 Set 接口的主要类?
...@@ -213,7 +213,7 @@ private static final Object PRESENT = new Object(); ...@@ -213,7 +213,7 @@ private static final Object PRESENT = new Object();
NavigableMap 是 SortedMap 的子类型,不允许使用 null 键。 因此,本质上, **TreeSet 也不支持空键**。 如果您尝试在 TreeSet 中添加 null 元素,它将抛出 NullPointerException。 NavigableMap 是 SortedMap 的子类型,不允许使用 null 键。 因此,本质上, **TreeSet 也不支持空键**。 如果您尝试在 TreeSet 中添加 null 元素,它将抛出 NullPointerException。
## Java 集合面试– Map 接口问题 ## Java 集合面试 – Map 接口问题
#### 11)为什么要使用 Map 界面? 什么是实现 Map 接口的主要类? #### 11)为什么要使用 Map 界面? 什么是实现 Map 接口的主要类?
...@@ -293,7 +293,7 @@ TreeMap 是 HashMap 的特殊形式。 **它维护 HashMap 类中缺少的键** ...@@ -293,7 +293,7 @@ TreeMap 是 HashMap 的特殊形式。 **它维护 HashMap 类中缺少的键**
请注意,**所有插入映射的键都必须实现 Comparable 接口**(这是确定顺序的必要条件)。 此外,所有这些键必须相互可比较:k1.compareTo(k2)不得为映射中的任何键 k1 和 k2 抛出 ClassCastException。 如果用户尝试将键放入违反此约束的映射中(例如,用户尝试将字符串键放入其键为整数的映射中),则 put(Object key,Object value)调用将引发 ClassCastException 。 请注意,**所有插入映射的键都必须实现 Comparable 接口**(这是确定顺序的必要条件)。 此外,所有这些键必须相互可比较:k1.compareTo(k2)不得为映射中的任何键 k1 和 k2 抛出 ClassCastException。 如果用户尝试将键放入违反此约束的映射中(例如,用户尝试将字符串键放入其键为整数的映射中),则 put(Object key,Object value)调用将引发 ClassCastException 。
## Java 集合访谈讲述差异问题 ## Java 集合访谈讲述差异问题
#### 18)Set 和 List 之间的区别? #### 18)Set 和 List 之间的区别?
......
# Gson –排除或忽略字段 # Gson – 排除或忽略字段
> 原文: [https://howtodoinjava.com/gson/gson-exclude-or-ignore-fields/](https://howtodoinjava.com/gson/gson-exclude-or-ignore-fields/) > 原文: [https://howtodoinjava.com/gson/gson-exclude-or-ignore-fields/](https://howtodoinjava.com/gson/gson-exclude-or-ignore-fields/)
...@@ -14,8 +14,8 @@ ...@@ -14,8 +14,8 @@
`@Expose`是可选的,并提供两个配置参数: `@Expose`是可选的,并提供两个配置参数:
* `serialize` –如果*为真*,则在序列化时会在 JSON 中写出带有此批注的字段。 * `serialize` 如果*为真*,则在序列化时会在 JSON 中写出带有此批注的字段。
* `deserialize` –如果*为真*,则从 JSON 反序列化带有此批注的字段。 * `deserialize` 如果*为真*,则从 JSON 反序列化带有此批注的字段。
```java ```java
@Expose(serialize = false) @Expose(serialize = false)
......
...@@ -16,8 +16,8 @@ JsonParser parser = new JsonParser(); ...@@ -16,8 +16,8 @@ JsonParser parser = new JsonParser();
`JsonParser`类提供 3 种方法来提供 JSON 作为源并将其解析为`JsonElement`的树。 `JsonParser`类提供 3 种方法来提供 JSON 作为源并将其解析为`JsonElement`的树。
* **JsonElement parse(JsonReader json)** –使用 [JsonReader](https://howtodoinjava.com/gson/jsonreader-streaming-json-parser/) 将 JSON 作为令牌流读取,并从 JSON 流中返回下一个值作为分析树。 * **JsonElement parse(JsonReader json)** 使用 [JsonReader](https://howtodoinjava.com/gson/jsonreader-streaming-json-parser/) 将 JSON 作为令牌流读取,并从 JSON 流中返回下一个值作为分析树。
* **JsonElement parse(java.io.Reader json)** –使用指定的读取器读取 JSON,并将 JSON 字符串解析为解析树。 * **JsonElement parse(java.io.Reader json)** 使用指定的读取器读取 JSON,并将 JSON 字符串解析为解析树。
* **JsonElement parse(java.lang.String json)**-将指定的 JSON 字符串解析为解析树。 * **JsonElement parse(java.lang.String json)**-将指定的 JSON 字符串解析为解析树。
如果指定的文本不是有效的 JSON,则这三种方法都将抛出 **JsonParseException****JsonSyntaxException** 如果指定的文本不是有效的 JSON,则这三种方法都将抛出 **JsonParseException****JsonSyntaxException**
......
# Gson –自定义序列化和反序列化 # Gson – 自定义序列化和反序列化
> 原文: [https://howtodoinjava.com/gson/custom-serialization-deserialization/](https://howtodoinjava.com/gson/custom-serialization-deserialization/) > 原文: [https://howtodoinjava.com/gson/custom-serialization-deserialization/](https://howtodoinjava.com/gson/custom-serialization-deserialization/)
......
# Gson –快速指南 # Gson – 快速指南
> 原文: [https://howtodoinjava.com/gson/google-gson-tutorial/](https://howtodoinjava.com/gson/google-gson-tutorial/) > 原文: [https://howtodoinjava.com/gson/google-gson-tutorial/](https://howtodoinjava.com/gson/google-gson-tutorial/)
...@@ -97,7 +97,7 @@ Gson gson = new GsonBuilder() ...@@ -97,7 +97,7 @@ Gson gson = new GsonBuilder()
使用`GsonBuilder`时,可以为`Gson`对象提供许多其他[有用选项](https://static.javadoc.io/com.google.code.gson/gson/2.7/com/google/gson/GsonBuilder.html)。 继续检查一下。 使用`GsonBuilder`时,可以为`Gson`对象提供许多其他[有用选项](https://static.javadoc.io/com.google.code.gson/gson/2.7/com/google/gson/GsonBuilder.html)。 继续检查一下。
## 3\. Gson toJson()–将 Java 对象转换为 JSON 字符串 ## 3\. Gson toJson()– 将 Java 对象转换为 JSON 字符串
要将**将对象转换为 json** ,请使用 **`toJson()`** 方法。 要将**将对象转换为 json** ,请使用 **`toJson()`** 方法。
...@@ -121,7 +121,7 @@ System.out.println(gson.toJson(employee)); ...@@ -121,7 +121,7 @@ System.out.println(gson.toJson(employee));
``` ```
## 4\. 3\. Gson fromJson()–将 JSON 字符串转换为 Object ## 4\. 3\. Gson fromJson()– 将 JSON 字符串转换为 Object
**将 json 解析为对象**,请使用 **`fromJson()`** 方法。 **将 json 解析为对象**,请使用 **`fromJson()`** 方法。
...@@ -141,7 +141,7 @@ Employee [id=1, firstName=Lokesh, lastName=Gupta, roles=[ADMIN, MANAGER]] ...@@ -141,7 +141,7 @@ Employee [id=1, firstName=Lokesh, lastName=Gupta, roles=[ADMIN, MANAGER]]
``` ```
## 5\. Gson InstanceCreator –给定对象中不存在无参构造函数时 ## 5\. Gson InstanceCreator – 给定对象中不存在无参构造函数时
在大多数情况下,即使任何类都不提供默认的无参数构造函数, **Gson** 库也足以创建实例。 但是,如果使用无参数构造函数的类发现任何问题,则可以使用`InstanceCreator`支持。 使用它之前,您需要先向 Gson 注册 Java 类类型的`InstanceCreator` 在大多数情况下,即使任何类都不提供默认的无参数构造函数, **Gson** 库也足以创建实例。 但是,如果使用无参数构造函数的类发现任何问题,则可以使用`InstanceCreator`支持。 使用它之前,您需要先向 Gson 注册 Java 类类型的`InstanceCreator`
...@@ -334,7 +334,7 @@ Employee [id=1, firstName=Lokesh, lastName=Gupta, roles=[ADMIN, MANAGER], birthD ...@@ -334,7 +334,7 @@ Employee [id=1, firstName=Lokesh, lastName=Gupta, roles=[ADMIN, MANAGER], birthD
``` ```
## 7\. Gson setPrettyPrinting()–漂亮的打印 JSON 输出 ## 7\. Gson setPrettyPrinting()– 漂亮的打印 JSON 输出
Gson 提供的默认 JSON 输出是紧凑的 JSON 格式。 这意味着在输出 JSON 结构中将没有任何空格。 要生成更具可读性和美观的 JSON,请使用`GsonBuilder`中的 **setPrettyPrinting()** Gson 提供的默认 JSON 输出是紧凑的 JSON 格式。 这意味着在输出 JSON 结构中将没有任何空格。 要生成更具可读性和美观的 JSON,请使用`GsonBuilder`中的 **setPrettyPrinting()**
...@@ -428,10 +428,10 @@ Output: ...@@ -428,10 +428,10 @@ Output:
## 9.更多的 Gson 教程 ## 9.更多的 Gson 教程
1. [Gson-GsonBuilder 教程](https://howtodoinjava.com/library/gson-gsonbuilder-configuration/) 1. [Gson-GsonBuilder 教程](https://howtodoinjava.com/library/gson-gsonbuilder-configuration/)
2. [Gson –序列化和反序列化 JSON](https://howtodoinjava.com/library/gson-serialize-deserialize-json/) 2. [Gson – 序列化和反序列化 JSON](https://howtodoinjava.com/library/gson-serialize-deserialize-json/)
3. [Gson –序列化和反序列化映射](https://howtodoinjava.com/java/serialization/gson-serialize-deserialize-hashmap/) 3. [Gson – 序列化和反序列化映射](https://howtodoinjava.com/java/serialization/gson-serialize-deserialize-hashmap/)
4. [Gson –序列化和反序列化设置](https://howtodoinjava.com/library/gson-serialize-deserialize-set/) 4. [Gson – 序列化和反序列化设置](https://howtodoinjava.com/library/gson-serialize-deserialize-set/)
5. [Gson –序列化和反序列化数组](https://howtodoinjava.com/library/gson-parse-json-array/) 5. [Gson – 序列化和反序列化数组](https://howtodoinjava.com/library/gson-parse-json-array/)
6. [Gson-@SerializedName 注释示例](https://howtodoinjava.com/library/gson-serializedname/) 6. [Gson-@SerializedName 注释示例](https://howtodoinjava.com/library/gson-serializedname/)
7. [Gson-球衣+ Gson 示例](https://howtodoinjava.com/jersey/jax-rs-gson-example/) 7. [Gson-球衣+ Gson 示例](https://howtodoinjava.com/jersey/jax-rs-gson-example/)
......
...@@ -83,8 +83,8 @@ Object value = mapper.readValue(jsonSource , javaObject); ...@@ -83,8 +83,8 @@ Object value = mapper.readValue(jsonSource , javaObject);
``` ```
* `jsonSource` –将获取 json 字符串的输入源。 * `jsonSource` 将获取 json 字符串的输入源。
* `javaObject` –需要填充的目标 Java 对象。 * `javaObject` 需要填充的目标 Java 对象。
#### 2.2。 将对象转换为 json 的语法 #### 2.2。 将对象转换为 json 的语法
...@@ -96,8 +96,8 @@ Object value = mapper.writeValue(jsonTarget, javaObject); ...@@ -96,8 +96,8 @@ Object value = mapper.writeValue(jsonTarget, javaObject);
``` ```
* `jsonTarget` –将写入 json 字符串的输出目标。 * `jsonTarget` 将写入 json 字符串的输出目标。
* `javaObject` –需要转换为 json 的源 Java 对象。 * `javaObject` 需要转换为 json 的源 Java 对象。
## 3\. Jackson 将对象转换为 JSON ## 3\. Jackson 将对象转换为 JSON
......
...@@ -48,10 +48,10 @@ public class Employee implements Serializable ...@@ -48,10 +48,10 @@ public class Employee implements Serializable
它定义 JAXB 引擎用来包含到生成的 XML 中的 Java 类的字段或属性。 它有四个可能的值。 它定义 JAXB 引擎用来包含到生成的 XML 中的 Java 类的字段或属性。 它有四个可能的值。
* `FIELD` –绑定到 JAXB 的类中的每个非静态,非瞬态字段都将自动绑定到 XML,除非由`XmlTransient`注释。 * `FIELD` 绑定到 JAXB 的类中的每个非静态,非瞬态字段都将自动绑定到 XML,除非由`XmlTransient`注释。
* `NONE` –没有任何字段或属性绑定到 XML,除非使用某些 JAXB 注释专门对其进行注释。 * `NONE` 没有任何字段或属性绑定到 XML,除非使用某些 JAXB 注释专门对其进行注释。
* `PROPERTY` –绑定到 JAXB 的类中的每个 getter / setter 对将自动绑定到 XML,除非由`XmlTransient`注释。 * `PROPERTY` 绑定到 JAXB 的类中的每个 getter / setter 对将自动绑定到 XML,除非由`XmlTransient`注释。
* `PUBLIC_MEMBER` –每个公共获取/设置对和每个公共字段都将自动绑定到 XML,除非由`XmlTransient`注释。 * `PUBLIC_MEMBER` 每个公共获取/设置对和每个公共字段都将自动绑定到 XML,除非由`XmlTransient`注释。
* 默认值为`PUBLIC_MEMBER` * 默认值为`PUBLIC_MEMBER`
```java ```java
......
# JMS 教程– Java 消息服务教程 # JMS 教程 – Java 消息服务教程
> 原文: [https://howtodoinjava.com/jms/jms-java-message-service-tutorial/](https://howtodoinjava.com/jms/jms-java-message-service-tutorial/) > 原文: [https://howtodoinjava.com/jms/jms-java-message-service-tutorial/](https://howtodoinjava.com/jms/jms-java-message-service-tutorial/)
[Java 消息服务](https://en.wikipedia.org/wiki/Java_Message_Service)是一种 API,支持网络上计算机之间称为**消息传递的正式通信。 它为标准消息协议和消息服务提供了通用接口,以支持 Java 程序。 它提供了创建,发送和阅读消息的功能。 JMS API 减少了程序员必须学习使用消息传递服务/产品的概念,并且还提供了支持消息传递应用程序的功能。 [Java 消息服务](https://en.wikipedia.org/wiki/Java_Message_Service)是一种 API,支持网络上计算机之间称为**消息传递的正式通信。 它为标准消息协议和消息服务提供了通用接口,以支持 Java 程序。 它提供了创建,发送和阅读消息的功能。 JMS API 减少了程序员必须学习使用消息传递服务/产品的概念,并且还提供了支持消息传递应用程序的功能。
**JMS** 是一种技术,在 J2EE 技术​​中用于使应用程序以松散耦合的方式与其他应用程序通信。 这意味着必须通信的应用程序没有直接连接,而是通过一个公共目的地连接。 我们将在本 **jms 教程**中详细介绍。** **JMS** 是一种技术,在 J2EE 技术​​中用于使应用程序以松散耦合的方式与其他应用程序通信。 这意味着必须通信的应用程序没有直接连接,而是通过一个公共目连接。 我们将在本 **jms 教程**中详细介绍。**
```java ```java
Table of Contents Table of Contents
...@@ -78,7 +78,7 @@ Read More: [HornetQ Basic Example](//howtodoinjava.com/hornetq/basic-jms-messagi ...@@ -78,7 +78,7 @@ Read More: [HornetQ Basic Example](//howtodoinjava.com/hornetq/basic-jms-messagi
#### 4.1。 同步 #### 4.1。 同步
在同步消息使用中,订户/接收者通过调用`[receive()](https://docs.oracle.com/javaee/7/api/javax/jms/MessageConsumer.html#receive--)`方法从目的地请求消息。 在`receive()`中,方法将阻塞直到消息到达或超时(如果消息在给定时间内未到达)。 就像普通的 java 方法调用一样,它带有一些返回值。 在同步消息使用中,订户/接收者通过调用`[receive()](https://docs.oracle.com/javaee/7/api/javax/jms/MessageConsumer.html#receive--)`方法从目请求消息。 在`receive()`中,方法将阻塞直到消息到达或超时(如果消息在给定时间内未到达)。 就像普通的 java 方法调用一样,它带有一些返回值。
#### 4.2。 异步 #### 4.2。 异步
...@@ -88,7 +88,7 @@ Read More: [HornetQ Basic Example](//howtodoinjava.com/hornetq/basic-jms-messagi ...@@ -88,7 +88,7 @@ Read More: [HornetQ Basic Example](//howtodoinjava.com/hornetq/basic-jms-messagi
JMS 应用程序具有一些基本构建块,它们是: JMS 应用程序具有一些基本构建块,它们是:
1. 受管对象–连接工厂和目的地 1. 受管对象 – 连接工厂和目标
2. 连接数 2. 连接数
3. 届会 3. 届会
4. 消息生产者 4. 消息生产者
...@@ -106,7 +106,7 @@ JMS API Programming Model ...@@ -106,7 +106,7 @@ JMS API Programming Model
JMS 应用程序提供两种类型的管理对象: JMS 应用程序提供两种类型的管理对象:
* 连接工厂 * 连接工厂
*的地 *
这两个受管理对象由 JMS 系统管理员在 JMS Provider 中通过使用 Application Server 管理控制台创建。 这两个对象都存储在应用程序服务器 JNDI 目录或 JNDI 注册表中。 这两个受管理对象由 JMS 系统管理员在 JMS Provider 中通过使用 Application Server 管理控制台创建。 这两个对象都存储在应用程序服务器 JNDI 目录或 JNDI 注册表中。
...@@ -121,7 +121,7 @@ Queue returnQueue = (Queue) initialCtx.lookup ("Return_Queue"); ...@@ -121,7 +121,7 @@ Queue returnQueue = (Queue) initialCtx.lookup ("Return_Queue");
``` ```
#### 5.3。 目的地 #### 5.3。 目
客户端使用称为目标的对象,该对象用于指定其生成的消息的目标以及使用它的消息的源。 JMS 应用程序使用两种类型的目标队列或主题。 该代码指定队列和主题。 客户端使用称为目标的对象,该对象用于指定其生成的消息的目标以及使用它的消息的源。 JMS 应用程序使用两种类型的目标队列或主题。 该代码指定队列和主题。
...@@ -189,7 +189,7 @@ producer.send(message); ...@@ -189,7 +189,7 @@ producer.send(message);
#### 5.7。 JMS 消息使用者 #### 5.7。 JMS 消息使用者
消息使用者是一个由会话创建的对象,用于接收在目的地发送的消息。 它将实现`[MessageConsumer](https://docs.oracle.com/javaee/7/api/javax/jms/MessageConsumer.html)`接口。 我们使用会话为目标,队列或主题对象创建 MessageConsumer。 消息使用者是一个由会话创建的对象,用于接收在目发送的消息。 它将实现`[MessageConsumer](https://docs.oracle.com/javaee/7/api/javax/jms/MessageConsumer.html)`接口。 我们使用会话为目标,队列或主题对象创建 MessageConsumer。
```java ```java
MessageConsumer consumer = session.createConsumer(dest); MessageConsumer consumer = session.createConsumer(dest);
......
...@@ -70,9 +70,9 @@ jaxbMarshaller.setProperty("jaxb.formatted.output", Boolean.TRUE); ...@@ -70,9 +70,9 @@ jaxbMarshaller.setProperty("jaxb.formatted.output", Boolean.TRUE);
* **jaxb.encoding** -编组 XML 数据时使用的输出编码。 如果未指定此属性,则默认情况下`Marshaller`将使用“ `UTF-8`”。 * **jaxb.encoding** -编组 XML 数据时使用的输出编码。 如果未指定此属性,则默认情况下`Marshaller`将使用“ `UTF-8`”。
* **jaxb.formatted.output** -值可以是`true``false``Marshaller`是否将使用换行符和缩进来格式化所得的 XML 数据。 默认值为`false` * **jaxb.formatted.output** -值可以是`true``false``Marshaller`是否将使用换行符和缩进来格式化所得的 XML 数据。 默认值为`false`
* **jaxb.schemaLocation** –允许客户端应用程序在生成的 XML 数据中指定`xsi:schemaLocation`属性。 * **jaxb.schemaLocation** 允许客户端应用程序在生成的 XML 数据中指定`xsi:schemaLocation`属性。
* **jaxb.noNamespaceSchemaLocation** –它允许客户端应用程序在生成的 XML 数据中指定`xsi:noNamespaceSchemaLocation`属性。 * **jaxb.noNamespaceSchemaLocation** 它允许客户端应用程序在生成的 XML 数据中指定`xsi:noNamespaceSchemaLocation`属性。
* **jaxb.fragment** –它确定 Marshaller 是否将生成文档级事件。 值可以是`true``false` * **jaxb.fragment** 它确定 Marshaller 是否将生成文档级事件。 值可以是`true``false`
## 3.马歇尔回调方法 ## 3.马歇尔回调方法
......
# JAXB –编组和解组列表或对象集 # JAXB – 编组和解组列表或对象集
> 原文: [https://howtodoinjava.com/jaxb/jaxb-exmaple-marshalling-and-unmarshalling-list-or-set-of-objects/](https://howtodoinjava.com/jaxb/jaxb-exmaple-marshalling-and-unmarshalling-list-or-set-of-objects/) > 原文: [https://howtodoinjava.com/jaxb/jaxb-exmaple-marshalling-and-unmarshalling-list-or-set-of-objects/](https://howtodoinjava.com/jaxb/jaxb-exmaple-marshalling-and-unmarshalling-list-or-set-of-objects/)
......
...@@ -12,7 +12,7 @@ Point to point JMS Messaging ...@@ -12,7 +12,7 @@ Point to point JMS Messaging
## 点对点消息发布者应用程序流程 ## 点对点消息发布者应用程序流程
下面给出了发送方应用程序的典型点对点消息传递示例。 该应用程序的以下步骤是– 下面给出了发送方应用程序的典型点对点消息传递示例。 该应用程序的以下步骤是
1. 首先,我们将获取 JMS 服务器的 Initial Context 对象。 1. 首先,我们将获取 JMS 服务器的 Initial Context 对象。
2. 之后,使用初始上下文对象查找队列对象。 2. 之后,使用初始上下文对象查找队列对象。
...@@ -79,7 +79,7 @@ public class Sender ...@@ -79,7 +79,7 @@ public class Sender
## 点对点消息传递订户应用程序流程 ## 点对点消息传递订户应用程序流程
接收方的大多数步骤与发送方应用程序相同除了它将侦听消息而不是发送 JMS 消息外。 接收方的大多数步骤与发送方应用程序相同除了它将侦听消息而不是发送 JMS 消息外。
```java ```java
package pointToPoint; package pointToPoint;
......
# 没有@XmlRootElement 的 JAXB 元帅缺少@XmlRootElement 错误 # 没有@XmlRootElement 的 JAXB 元帅缺少@XmlRootElement 错误
> 原文: [https://howtodoinjava.com/jaxb/marshal-without-xmlrootelement/](https://howtodoinjava.com/jaxb/marshal-without-xmlrootelement/) > 原文: [https://howtodoinjava.com/jaxb/marshal-without-xmlrootelement/](https://howtodoinjava.com/jaxb/marshal-without-xmlrootelement/)
......
# 杰克逊 2 –将 Java 对象转换为 JSON,并将 JSON 字符串转换为对象 # 杰克逊 2 – 将 Java 对象转换为 JSON,并将 JSON 字符串转换为对象
> 原文: [https://howtodoinjava.com/jackson/jackson-2-convert-json-to-from-java-object/](https://howtodoinjava.com/jackson/jackson-2-convert-json-to-from-java-object/) > 原文: [https://howtodoinjava.com/jackson/jackson-2-convert-json-to-from-java-object/](https://howtodoinjava.com/jackson/jackson-2-convert-json-to-from-java-object/)
在本教程中,我们将学习使用 **[Jackson 2](https://github.com/FasterXML/jackson)** 库将 **JSON 转换为 Java 对象** –和**将 Java 对象转换为 JSON** 在本教程中,我们将学习使用 **[Jackson 2](https://github.com/FasterXML/jackson)** 库将 **JSON 转换为 Java 对象** **将 Java 对象转换为 JSON**
```java ```java
Table of Contents Table of Contents
......
...@@ -83,8 +83,8 @@ Object value = mapper.readValue(jsonSource , javaObject); ...@@ -83,8 +83,8 @@ Object value = mapper.readValue(jsonSource , javaObject);
``` ```
* `jsonSource` –将获取 json 字符串的输入源。 * `jsonSource` 将获取 json 字符串的输入源。
* `javaObject` –需要填充的目标 Java 对象。 * `javaObject` 需要填充的目标 Java 对象。
#### 2.2。 将对象转换为 json 的语法 #### 2.2。 将对象转换为 json 的语法
...@@ -96,8 +96,8 @@ Object value = mapper.writeValue(jsonTarget, javaObject); ...@@ -96,8 +96,8 @@ Object value = mapper.writeValue(jsonTarget, javaObject);
``` ```
* `jsonTarget` –将写入 json 字符串的输出目标。 * `jsonTarget` 将写入 json 字符串的输出目标。
* `javaObject` –需要转换为 json 的源 Java 对象。 * `javaObject` 需要转换为 json 的源 Java 对象。
## 3\. Jackson 将对象转换为 JSON ## 3\. Jackson 将对象转换为 JSON
......
# 杰克逊将 JSON 转换为 Map 并将 Map 转换为 JSON # 杰克逊将 JSON 转换为 Map 并将 Map 转换为 JSON
> 原文: [https://howtodoinjava.com/jackson/jackson-json-to-from-hashmap/](https://howtodoinjava.com/jackson/jackson-json-to-from-hashmap/) > 原文: [https://howtodoinjava.com/jackson/jackson-json-to-from-hashmap/](https://howtodoinjava.com/jackson/jackson-json-to-from-hashmap/)
......
...@@ -12,7 +12,7 @@ Publish Subscribe JMS Messaging ...@@ -12,7 +12,7 @@ Publish Subscribe JMS Messaging
## 发布/订阅消息发布者应用程序流程 ## 发布/订阅消息发布者应用程序流程
下面给出了发送方应用程序的典型发布/订阅消息传递示例。 该应用程序的以下步骤是– 下面给出了发送方应用程序的典型发布/订阅消息传递示例。 该应用程序的以下步骤是
1. 首先,我们将获取 JMS 服务器的 Initial Context 对象。 1. 首先,我们将获取 JMS 服务器的 Initial Context 对象。
2. 之后,使用初始上下文对象查找主题对象。 2. 之后,使用初始上下文对象查找主题对象。
...@@ -82,7 +82,7 @@ public class Publisher ...@@ -82,7 +82,7 @@ public class Publisher
## 发布/订阅消息订阅者应用程序流程 ## 发布/订阅消息订阅者应用程序流程
接收方的大多数步骤与发送方应用程序相同除了它将侦听消息而不是发送 JMS 消息外。 接收方的大多数步骤与发送方应用程序相同除了它将侦听消息而不是发送 JMS 消息外。
```java ```java
package pubSub; package pubSub;
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
> 原文: [https://howtodoinjava.com/xml/read-xml-dom-parser-example/](https://howtodoinjava.com/xml/read-xml-dom-parser-example/) > 原文: [https://howtodoinjava.com/xml/read-xml-dom-parser-example/](https://howtodoinjava.com/xml/read-xml-dom-parser-example/)
在此 *Java xml 解析器教程*中,学习**用 Java 中的 DOM 解析器**读取 xml。 DOM 解析器旨在将 XML 作为内存中的对象图(树状结构)使用称为“ **文档对象模型(DOM)**”。 在此 *Java xml 解析器教程*中,学习**用 Java 中的 DOM 解析器**读取 xml。 DOM 解析器旨在将 XML 作为内存中的对象图(树状结构)使用称为“ **文档对象模型(DOM)**”。
首先,解析器遍历输入的 XML 文件并创建与 XML 文件中的节点相对应的 **DOM** 对象。 这些 DOM 对象以树状结构链接在一起。 一旦解析器完成了解析过程,我们就会从中获得这种树状 DOM 对象结构。 现在,我们可以根据需要来回遍历 DOM 结构-从中获取/更新/删除数据。 首先,解析器遍历输入的 XML 文件并创建与 XML 文件中的节点相对应的 **DOM** 对象。 这些 DOM 对象以树状结构链接在一起。 一旦解析器完成了解析过程,我们就会从中获得这种树状 DOM 对象结构。 现在,我们可以根据需要来回遍历 DOM 结构-从中获取/更新/删除数据。
......
# Java SAX 解析器阅读 XML 示例 # Java SAX 解析器阅读 XML 示例
> 原文: [https://howtodoinjava.com/xml/sax-parser-read-xml-example/](https://howtodoinjava.com/xml/sax-parser-read-xml-example/) > 原文: [https://howtodoinjava.com/xml/sax-parser-read-xml-example/](https://howtodoinjava.com/xml/sax-parser-read-xml-example/)
......
# Java JDOM2 –阅读 XML 示例 # Java JDOM2 – 阅读 XML 示例
> 原文: [https://howtodoinjava.com/xml/jdom2-read-parse-xml-examples/](https://howtodoinjava.com/xml/jdom2-read-parse-xml-examples/) > 原文: [https://howtodoinjava.com/xml/jdom2-read-parse-xml-examples/](https://howtodoinjava.com/xml/jdom2-read-parse-xml-examples/)
......
# 使用 StAX Parser 的 Java 读取 XML –游标&迭代器 API # 使用 StAX Parser 的 Java 读取 XML – 游标&迭代器 API
> 原文: [https://howtodoinjava.com/xml/read-xml-stax-parser-cursor-iterator/](https://howtodoinjava.com/xml/read-xml-stax-parser-cursor-iterator/) > 原文: [https://howtodoinjava.com/xml/read-xml-stax-parser-cursor-iterator/](https://howtodoinjava.com/xml/read-xml-stax-parser-cursor-iterator/)
......
# Java 将 XML 转换为属性从 XML 文件读取属性 # Java 将 XML 转换为属性从 XML 文件读取属性
> 原文: [https://howtodoinjava.com/xml/convert-xml-to-properties/](https://howtodoinjava.com/xml/convert-xml-to-properties/) > 原文: [https://howtodoinjava.com/xml/convert-xml-to-properties/](https://howtodoinjava.com/xml/convert-xml-to-properties/)
......
# Java String to XML –将字符串解析为 XML DOM 示例 # Java String to XML – 将字符串解析为 XML DOM 示例
> 原文: [https://howtodoinjava.com/xml/parse-string-to-xml-dom/](https://howtodoinjava.com/xml/parse-string-to-xml-dom/) > 原文: [https://howtodoinjava.com/xml/parse-string-to-xml-dom/](https://howtodoinjava.com/xml/parse-string-to-xml-dom/)
......
# Java XML 转换为字符串将 XML 对象写入文件示例 # Java XML 转换为字符串将 XML 对象写入文件示例
> 原文: [https://howtodoinjava.com/xml/xml-to-string-write-xml-file/](https://howtodoinjava.com/xml/xml-to-string-write-xml-file/) > 原文: [https://howtodoinjava.com/xml/xml-to-string-write-xml-file/](https://howtodoinjava.com/xml/xml-to-string-write-xml-file/)
......
# Java XPath 示例– XPath 教程 # Java XPath 示例 – XPath 教程
> 原文: [https://howtodoinjava.com/xml/java-xpath-tutorial-example/](https://howtodoinjava.com/xml/java-xpath-tutorial-example/) > 原文: [https://howtodoinjava.com/xml/java-xpath-tutorial-example/](https://howtodoinjava.com/xml/java-xpath-tutorial-example/)
...@@ -132,11 +132,11 @@ XSLT 样式表几乎从未使用过命名空间节点。 **它们的存在主要 ...@@ -132,11 +132,11 @@ XSLT 样式表几乎从未使用过命名空间节点。 **它们的存在主要
在 Java 中,XPath 表达式可能返回以下数据类型之一: 在 Java 中,XPath 表达式可能返回以下数据类型之一:
1. [**节点集**](https://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/XPathConstants.html#NODESET "NODESET") –表示一组节点。 该集合可以为空,也可以包含任意数量的节点。 1. [**节点集**](https://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/XPathConstants.html#NODESET "NODESET") 表示一组节点。 该集合可以为空,也可以包含任意数量的节点。
2. [**节点**](https://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/XPathConstants.html#NODE "NODE") (Java 支持)–表示单个节点。 它可以为空,也可以包含任意数量的子节点。 2. [**节点**](https://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/XPathConstants.html#NODE "NODE") (Java 支持)– 表示单个节点。 它可以为空,也可以包含任意数量的子节点。
3. [**布尔值**](https://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/XPathConstants.html#BOOLEAN "BOOLEAN") –表示值 true 或 false。 请注意,在 XPath 中,true 或 false 字符串没有特殊含义或值。 有关布尔值的更详细讨论,请参见第 4 章的 4.2.1.2 节。 3. [**布尔值**](https://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/XPathConstants.html#BOOLEAN "BOOLEAN") 表示值 true 或 false。 请注意,在 XPath 中,true 或 false 字符串没有特殊含义或值。 有关布尔值的更详细讨论,请参见第 4 章的 4.2.1.2 节。
4. [**数字**](https://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/XPathConstants.html#NUMBER "NUMBER") –表示浮点数。 XPath 和 XSLT 中的所有数字均实现为浮点数; XPath 和 XSLT 中不存在整数(或 int)数据类型。 具体来说,所有数字都实现为 IEEE 754 浮点数,与 Java float 和 double 原语类型使用的标准相同。 除普通数字外,数字还有五个特殊值:正负无穷大,正负零和 NaN(非数字的特殊符号)。 4. [**数字**](https://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/XPathConstants.html#NUMBER "NUMBER") 表示浮点数。 XPath 和 XSLT 中的所有数字均实现为浮点数; XPath 和 XSLT 中不存在整数(或 int)数据类型。 具体来说,所有数字都实现为 IEEE 754 浮点数,与 Java float 和 double 原语类型使用的标准相同。 除普通数字外,数字还有五个特殊值:正负无穷大,正负零和 NaN(非数字的特殊符号)。
5. [**字符串**](https://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/XPathConstants.html#STRING "STRING") –表示零个或多个字符,如 XML 规范中所定义。 5. [**字符串**](https://docs.oracle.com/javase/1.5.0/docs/api/javax/xml/xpath/XPathConstants.html#STRING "STRING") 表示零个或多个字符,如 XML 规范中所定义。
这些数据类型通常很简单,并且除了节点集之外,类型之间的转换通常很简单。 我们将不在这里更详细地讨论这些数据类型。 相反,我们将讨论数据类型和转换,因为我们需要它们来执行特定的任务。 这些数据类型通常很简单,并且除了节点集之外,类型之间的转换通常很简单。 我们将不在这里更详细地讨论这些数据类型。 相反,我们将讨论数据类型和转换,因为我们需要它们来执行特定的任务。
......
# Java xpath 示例在 xml 文件上评估 xpath # Java xpath 示例在 xml 文件上评估 xpath
> 原文: [https://howtodoinjava.com/xml/evaluate-xpath-on-dom/](https://howtodoinjava.com/xml/evaluate-xpath-on-dom/) > 原文: [https://howtodoinjava.com/xml/evaluate-xpath-on-dom/](https://howtodoinjava.com/xml/evaluate-xpath-on-dom/)
......
# Java 8 xpath 示例在字符串上评估 xpath # Java 8 xpath 示例在字符串上评估 xpath
> 原文: [https://howtodoinjava.com/xml/evaluate-xpath-on-xml-string/](https://howtodoinjava.com/xml/evaluate-xpath-on-xml-string/) > 原文: [https://howtodoinjava.com/xml/evaluate-xpath-on-xml-string/](https://howtodoinjava.com/xml/evaluate-xpath-on-xml-string/)
Java 示例**评估字符串**上的 xpath 并返回字符串本身的结果 XML。 Java 示例**评估字符串**上的 xpath 并返回字符串本身的结果 XML。
## 1\. XPath 示例在 xml 字符串上评估 xpath ## 1\. XPath 示例在 xml 字符串上评估 xpath
1. 创建包含`[StringReader](https://docs.oracle.com/javase/8/docs/api/java/io/StringReader.html)`并引用 XML 字符串的`[org.xml.sax.InputSource](https://docs.oracle.com/javase/7/docs/api/org/xml/sax/InputSource.html)` 1. 创建包含`[StringReader](https://docs.oracle.com/javase/8/docs/api/java/io/StringReader.html)`并引用 XML 字符串的`[org.xml.sax.InputSource](https://docs.oracle.com/javase/7/docs/api/org/xml/sax/InputSource.html)`
2.`[XPathFactory](https://docs.oracle.com/javase/8/docs/api/javax/xml/xpath/XPathFactory.html)`创建`[XPath](https://docs.oracle.com/javase/8/docs/api/javax/xml/xpath/XPath.html)` 2.`[XPathFactory](https://docs.oracle.com/javase/8/docs/api/javax/xml/xpath/XPathFactory.html)`创建`[XPath](https://docs.oracle.com/javase/8/docs/api/javax/xml/xpath/XPath.html)`
...@@ -59,7 +59,7 @@ Lokesh ...@@ -59,7 +59,7 @@ Lokesh
``` ```
## 2\. XPath 示例在 xml 文件上评估 xpath ## 2\. XPath 示例在 xml 文件上评估 xpath
```java ```java
package com.howtodoinjava.demo; package com.howtodoinjava.demo;
......
# Java XPath NamespaceContext –名称空间解析示例 # Java XPath NamespaceContext – 名称空间解析示例
> 原文: [https://howtodoinjava.com/xml/xpath-namespace-resolution-example/](https://howtodoinjava.com/xml/xpath-namespace-resolution-example/) > 原文: [https://howtodoinjava.com/xml/xpath-namespace-resolution-example/](https://howtodoinjava.com/xml/xpath-namespace-resolution-example/)
......
# Java XPath –检查节点或属性是否存在? # Java XPath – 检查节点或属性是否存在?
> 原文: [https://howtodoinjava.com/xml/xpath-check-if-xml-tag-exists/](https://howtodoinjava.com/xml/xpath-check-if-xml-tag-exists/) > 原文: [https://howtodoinjava.com/xml/xpath-check-if-xml-tag-exists/](https://howtodoinjava.com/xml/xpath-check-if-xml-tag-exists/)
......
# HornetQ 独立存在基本的 JMS 消息传递示例 # HornetQ 独立存在基本的 JMS 消息传递示例
> 原文: [https://howtodoinjava.com/hornetq/basic-jms-messaging-example-using-hornetq-stand-alone-server/](https://howtodoinjava.com/hornetq/basic-jms-messaging-example-using-hornetq-stand-alone-server/) > 原文: [https://howtodoinjava.com/hornetq/basic-jms-messaging-example-using-hornetq-stand-alone-server/](https://howtodoinjava.com/hornetq/basic-jms-messaging-example-using-hornetq-stand-alone-server/)
......
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册