提交 250d97fb 编写于 作者: W wizardforcel

2020-06-23 11:19:53

上级 bc315f2b
......@@ -77,7 +77,7 @@ public class FirstJunitTest {
}
```
如果将此代码与实 JUnit 之前的代码进行比较,将会有明显的变化,
如果将此代码与实 JUnit 之前的代码进行比较,将会有明显的变化,
1. 注释:@ Before,@ Test 和@After
2. 方法:setUp(),testPageTitle(),tearDown()
......
......@@ -91,7 +91,7 @@ for (int i = 0; i < 1_000_000; i++) {
## 结论
批处理仅有助于将数据高效地存储在数据库中。 如果要使用某种故障转移机制,则需要实手动提交策略。
批处理仅有助于将数据高效地存储在数据库中。 如果要使用某种故障转移机制,则需要实手动提交策略。
[代码下载](https://github.com/JBTAdmin/Hibernate)
......@@ -59,7 +59,7 @@ Session session = sessionFactory.withOptions().tenantIdentifier( yourTenantIdent
### MultiTenantConnectionProvider
要使用两个可用的多租户提供程序之一,我们需要配置 MultiTenantConnectionProvider。 在这种特殊情况下,这意味着我们必须自己实
要使用两个可用的多租户提供程序之一,我们需要配置 MultiTenantConnectionProvider。 在这种特殊情况下,这意味着我们必须自己实
在本文的示例应用中,我添加了接口的最基本的实现。
......
......@@ -94,7 +94,7 @@ System.out.println("Value of the localVariable is-"+localVariable);
* 局部变量的长度没有限制。
* 如果变量名只有一个单词,则所有字符均应小写。
### 子弹
###
* 局部变量不能使用任何访问级别,因为它们仅存在于方法内部。
* `Final`是唯一可以应用于局部变量的非访问修饰符。
......
......@@ -152,7 +152,7 @@ abstract class InterfaceExampleThree implements interfaceTwo {
}
```
### 子弹
###
* 接口是 100%抽象类(***隐式***)。 在 Java 8 之后,它不成立。
* 接口可以由任何继承树中的任何类实现。
......
......@@ -111,10 +111,10 @@ Inside Static method
* **静态**修饰符可以应用于变量或方法,块或内部类。
* ***静态成员***仅属于 Class 而不是实例。
* 静态方法**无法访问***实例变量*
* 静态方法**不能替代*,因为它们是特定于类的,并且不属于实例。***
* 可以将 ***重新定义为*** 静态方法。
* 静态方法**不能替代**,因为它们是特定于类的,并且不属于实例。
* 可以将***重新定义***静态方法。
* 如果一个类包含任何静态块,则仅当将该类加载到 JVM 中时,才执行该块。 创建多个实例不会多次运行静态块。 仅构造器将执行多次。
* 如果调用 Class.forName(“ *class_name* ”),则将执行 Class 的静态块。
* 如果调用`Class.forName("class_name")`,则将执行 Class 的静态块。
<noscript><iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="360" src="https://www.youtube.com/embed/QZwgz9tIy7I?start=1&amp;feature=oembed" title="Java Static variable" width="640"></iframe></noscript>
......@@ -93,11 +93,13 @@ String [] strArray = {“ J”,“ B”,“ T”};
数组中的每个元素都有一个索引。 索引**从 0** 开始,这意味着数组中的第一个元素的索引为 0,第二个元素的索引为 1。这些索引号可用于访问数组中的特定元素。 相同的索引可用于在给定索引处设置数组中的值。
String [] strArray = {“ J”,“ B”,“ T”}
strArray [0] =“ CHANGED”;
字符串 valueAtIndex = strArray [0];
```java
String[] strArray = {"J""B""T"};
strArray[0] = "CHANGED";
String valueAtIndex = strArray[0];
```
数组中的最后一个元素的索引号为( **size_of_the_array – 1** )。
数组中的最后一个元素的索引号为(`size_of_the_array – 1`)。
## Java 阵列备忘单
......
......@@ -15,14 +15,14 @@ Collection API 提供了一组接口供您选择,但同时也为您提供了
* [设置](https://javabeginnerstutorial.com/core-java-tutorial/set-collection-tutorial-for-java-beginners/)
* [SortedSet](https://javabeginnerstutorial.com/core-java-tutorial/sorted-set-collection-tutorial-for-java-beginners/ "Sorted Set Collection Tutorial for Java Beginners") (扩展集接口)
* NavigableSet(扩展 SortedSet)
* [地图](https://javabeginnerstutorial.com/core-java-tutorial/map-collection-tutorial-for-java-beginners/)
* [SortedMap](https://javabeginnerstutorial.com/core-java-tutorial/sorted-map-collection-tutorial-for-java-beginners/ "Sorted Map Collection Tutorial for Java Beginners") (扩展地图接口)
* 可导航地图(扩展 SortedSet)
* [映射](https://javabeginnerstutorial.com/core-java-tutorial/map-collection-tutorial-for-java-beginners/)
* [SortedMap](https://javabeginnerstutorial.com/core-java-tutorial/sorted-map-collection-tutorial-for-java-beginners/ "Sorted Map Collection Tutorial for Java Beginners") (扩展映射接口)
* 可导航映射(扩展 SortedSet)
* 队列
## 实
## 实
### 1-地图
### 1-映射
* [HashMap](https://javabeginnerstutorial.com/core-java-tutorial/java-collection-hashmap-hashtable/ "Java Collection Hashmap tutorial")
* 哈希表
......@@ -139,7 +139,7 @@ List l = new ArrayList<E>();
### 哈希集
**Property**
**属性**
* 未分类
* 无序
......@@ -162,53 +162,53 @@ List l = new ArrayList<E>();
## 并发收集接口
* BlockingQueue **扩展了**队列
* TransferQueue **扩展了** BlockingQueue
* BlockingDeque **扩展了** BlockingQueue
* ConcurrentMap **扩展了**地图
## 并发收集实
* LinkedBlockingQueue **扩展了** AbstractQueue **实现了** BlockingQueue
* ArrayBlockingQueue **扩展了** AbstractQueue **实现了** BlockingQueue
* PriorityBlockingQueue **扩展了** AbstractQueue **实现了** BlockingQueue
* DelayQueue **扩展了** AbstractQueue **实现了** BlockingQueue
* SynchronousQueue **扩展了** AbstractQueue **实现了** BlockingQueue
* LinkedBlockingDeque **扩展了** AbstractQueue **实现了** BlockingDeque
* LinkedTransferQueue **扩展了** AbstractQueue **实现了** TransferQueue
* CopyOnWriteArrayList **实现** List,RandomAccess
* CopyOnWriteArraySet **扩展** AbstractSet
* ConcurrentSkipListSet **扩展了** AbstractSet **实现了** NavigableSet
* ConcurrentHashMap **扩展了** AbstractMap **实现了** ConcurrentMap
* ConcurrentSkipListMap **扩展了** AbstractMap **实现了** ConcurrentNavigableMap
* `BlockingQueue`**扩展了**`Queue`
* `TransferQueue`**扩展了**`BlockingQueue`
* `BlockingDeque`**扩展了**`BlockingQueue`
* `ConcurrentMap`**扩展了**`Map`
## 并发收集实
* `LinkedBlockingQueue`**扩展了**`AbstractQueue`**实现了**`BlockingQueue`
* `ArrayBlockingQueue`**扩展了**`AbstractQueue`**实现了**`BlockingQueue`
* `PriorityBlockingQueue`**扩展了**`AbstractQueue`**实现了**`BlockingQueue`
* `DelayQueue`**扩展了**`AbstractQueue`**实现了**`BlockingQueue`
* `SynchronousQueue`**扩展了**`AbstractQueue`**实现了**`BlockingQueue`
* `LinkedBlockingDeque`**扩展了**`AbstractQueue`**实现了**`BlockingDeque`
* `LinkedTransferQueue`**扩展了**`AbstractQueue`**实现了**`TransferQueue`
* `CopyOnWriteArrayList`**实现**`List``RandomAccess`
* `CopyOnWriteArraySet`**扩展**`AbstractSet`
* `ConcurrentSkipListSet`**扩展了**`AbstractSet`**实现了**`NavigableSet`
* `ConcurrentHashMap`**扩展了**`AbstractMap`**实现了**`ConcurrentMap`
* `ConcurrentSkipListMap`**扩展了**`AbstractMap`**实现了**`ConcurrentNavigableMap`
## 可能有助于决定收藏类别的因素
为特定问题选择适当的集合时,可以考虑多种因素。 这些因素是:
1. **排序**-元素中的某种排序。 例如,排序顺序,插入顺序或没有特定顺序。
2. **重复项**-可能或可能不想在集合中允许重复的元素。
3. **线程安全** 如果有多个线程访问集合,请确保集合中元素的安全。
4. **键值对**-存储在键值对中。
5. **阻塞操作**-检索元素时等待集合变为非空。
6. **随机访问**-即时检索元素。
7. **上限**-要限制集合可以容纳的最大元素数。
1. **排序** - 元素中的某种排序。 例如,排序顺序,插入顺序或没有特定顺序。
2. **重复项** - 可能或可能不想在集合中允许重复的元素。
3. **线程安全** - 如果有多个线程访问集合,请确保集合中元素的安全。
4. **键值对** - 存储在键值对中。
5. **阻塞操作** - 检索元素时等待集合变为非空。
6. **随机访问** - 即时检索元素。
7. **上限** - 要限制集合可以容纳的最大元素数。
还有其他因素,例如优先级,延迟等。
## 备忘单
1. ***集合*** 是存储对象的数据结构。
1. ***集合***是存储对象的数据结构。
2. 可以添加,删除对象,也可以在集合中对其进行遍历。
3. 基本收藏有 4 种类型
4. **列表****有序****允许**重复,已索引****
5. **设置**:可以订购或可以不订购**不允许复制**
6. **映射:不允许使用**重复的**键。**
7. **队列:按 **FIFO** 或**优先级对**进行排序。**
8. **ArrayList**:快速迭代&快速随机访问。
9. **矢量**:同步方法。
10. **LinkedList**:适用于实现堆栈和队列。
11. **哈希集**:快速访问,没有重复,没有排序。
12. **LinkedHashSet**:没有重复,按插入顺序进行迭代。
13. **TreeSet**:无重复,按排序顺序进行迭代。
4. **列表****有序****允许**重复,已索引
5. **集**:可以有序或可以无序**不允许复制**
6. **映射**:不允许使用**重复的**键。
7. **队列**:按 **FIFO****优先级**进行排序。
8. **`ArrayList`**:快速迭代&快速随机访问。
9. **`Vector`**:同步方法。
10. **`LinkedList`**:适用于实现堆栈和队列。
11. **`HashSet`**:快速访问,没有重复,没有排序。
12. **`LinkedHashSet`**:没有重复,按插入顺序进行迭代。
13. **`TreeSet`**:无重复,按排序顺序进行迭代。
......@@ -9,11 +9,11 @@ Java HashMap 是基于 HashTable 的 Map 实现。 这就是为什么面试官
## HashMap 的重要属性
| **DEFAULT_INITIAL_CAPACITY** | 默认初始容量(2 次幂 n)。 HashMap 可以包含许多元素。 |
| **MAXIMUM_CAPACITY** | HashMap 的最大容量(2 次幂 n)。 |
| **负载因子** | 定义 HashMap 的阈值。 重新调整大小时将在 HashMap 中发生。 |
| **DEFAULT_LOAD_FACTOR** | 在 HashMap 的构造器中未定义任何负载因子时将使用。 |
| **大小** | HashMap 包含的键/值对映射数。 |
| **`DEFAULT_INITIAL_CAPACITY`** | 默认初始容量(2 次幂 n)。 HashMap 可以包含许多元素。 |
| **`MAXIMUM_CAPACITY`** | HashMap 的最大容量(2 次幂 n)。 |
| **`loadFactor`** | 定义 HashMap 的阈值。 重新调整大小时将在 HashMap 中发生。 |
| **`DEFAULT_LOAD_FACTOR`** | 在 HashMap 的构造器中未定义任何负载因子时将使用。 |
| **`size`** | HashMap 包含的键/值对映射数。 |
## 创建 HashMap
......@@ -25,24 +25,24 @@ Java HashMap 是基于 HashTable 的 Map 实现。 这就是为什么面试官
为了添加一个元素,您需要提供 2 个东西:键和值。
**键:将与指定值关联的**键。 **null** 是允许的。
**键**:将与指定值关联的键。 `null`是允许的。
**值**:与指定键关联的值。
首先,HashMap 将为给定密钥生成一个哈希码,然后检查是否已经有与给定密钥相关联的值。 如果是,则它将返回已经关联的值。 否则,它将通过提供的键在 HashMap 中增加价值。
## 子弹
##
1. HashMap 不会按 Map 中的元素顺序提供任何保证(均值顺序会随时间变化)。
2. HashMap 为**获得** & **设置**操作提供恒定时间性能(如果使用正确的哈希算法)。
3. 迭代收集所需的时间与 HashMap 的“ **容量**”((它可以容纳的元素)& **大小**(它当前容纳的元素)成比例。
2. HashMap 为**获得****设置**操作提供恒定时间性能(如果使用正确的哈希算法)。
3. 迭代收集所需的时间与 HashMap 的“**容量**”((它可以容纳的元素)和**大小**(它当前容纳的元素)成比例。
4. 如果迭代性能更为重要,那么建议不要将初始容量设置得太高而将负载系数设置得太低。 由于性能与*初始容量**负载系数*成正比。
* *容量*是哈希表中的存储桶数。
* 初始容量(默认值为 16)只是创​​建哈希表时的容量。
* *负载因子(默认值.75)*是衡量哈希表在自动增加其容量之前的填充程度的度量。
* 当哈希表中的条目数超过负载因子与当前容量的乘积时,哈希表将被*重映射*(即内部数据结构将被重建)。
5. 使用“ **Collections.synchronizedMap()**”方法使地图同步。
6. 由 HashMap 类返回的 迭代器为“ ***故障快速*** ”。
* *负载因子(默认值 .75)*是衡量哈希表在自动增加其容量之前的填充程度的度量。
* 当哈希表中的条目数超过负载因子与当前容量的乘积时,哈希表将被*重映射*(即内部数据结构将被重建)。
5. 使用“`Collections.synchronizedMap()`”方法使地图同步。
6. 由 HashMap 类返回的 迭代器为“***故障快速***”。
7. HashMap 由 Array(Key)和 LinkedList(Value)支持。
8. HashMap 使用 hashcode(使用密钥)来标识应在 HashMap 中放置或检索对象的确切位置。
9. 最后,HashCode 返回后备数组中的确切位置(索引)。
......
......@@ -2,13 +2,13 @@
> 原文: [https://javabeginnerstutorial.com/core-java-tutorial/list-collection-tutorial-for-java-beginners/](https://javabeginnerstutorial.com/core-java-tutorial/list-collection-tutorial-for-java-beginners/)
在这里,我们将详细了解 List 接口及其不同实现。 ***java.util*** 包中的列表接口是 java.util.Collection 接口的子类型。
在这里,我们将详细了解 List 接口及其不同实现。 `java.util`包中的列表接口是 java.util.Collection 接口的子类型。
## 列出接口显着点
1. 它是 *java.util* 包的一部分。
2. 它是 *java.util.Collection* 接口的子类型。
3. 列表是**有序集合。** 意味着可以按有序方式(按索引)访问 List 的元素。
3. 列表是**有序集合** 意味着可以按有序方式(按索引)访问 List 的元素。
4. 允许重复值。
5. 允许为 NULL 值。
6. List 有一个名为 ListIterator 的特殊迭代器。 这将有助于双向遍历列表。
......@@ -78,7 +78,7 @@ listA.add(0, "element 0");
## 替换元素
**Syntax : **E set(int index, E element);
**语法**E set(int index, E element);
**用途**:用于替换列表中指定位置的元素。
......
......@@ -21,7 +21,7 @@ Map 是 Java Collection 框架下的一个 Interface。
* 一些地图实现可以包含的键和值有一些限制。
* 尝试插入不合格的键或值将引发非受检异常。
# 具体地图实
# 具体地图实
* HashMap
* 哈希表
......@@ -36,13 +36,13 @@ Map 是 Java Collection 框架下的一个 Interface。
# 地图界面中的重要方法
* **put(K 键,V 值)**:使用指定的键将指定的值放入映射中。
* **putAll(Map <?扩展 K,?扩展 V > m)**:将所有映射从给定 Map 复制到此 Map。
* **keySet()**:返回包含此映射中的密钥的**集**
* **values()**:返回一个**集合**,其中包含此 Map 中的所有值。
* **isEmpty()**:检查给定 Map 中是否有任何元素。
* **remove(Object key)**:从此映射中删除键的映射(如果存在)。
* **containsKey(Object key)**:检查指定键是否存在任何映射。
* **containsValue(Object value)**:检查是否存在用于指定 Object 的任何映射(可能不止一个)。
* **get(Object key)**:返回与此键关联的值。
* **clear() :** Used to remove all the mapping in given Map.
\ No newline at end of file
* **`put(K key, V value)`**:使用指定的键将指定的值放入映射中。
* **`putAll(Map<? extends K, ? extends V> m)`**:将所有映射从给定 Map 复制到此 Map。
* **`keySet()`**:返回包含此映射中的密钥的**集**
* **`values()`**:返回一个**集合**,其中包含此 Map 中的所有值。
* **`isEmpty()`**:检查给定 Map 中是否有任何元素。
* **`remove(Object key)`**:从此映射中删除键的映射(如果存在)。
* **`containsKey(Object key)`**:检查指定键是否存在任何映射。
* **`containsValue(Object value)`**:检查是否存在用于指定 Object 的任何映射(可能不止一个)。
* **`get(Object key)`**:返回与此键关联的值。
* **`clear() `**:Used to remove all the mapping in given Map.
\ No newline at end of file
......@@ -169,7 +169,7 @@ Company Address: null
在这两种情况下,此处存储的 case 值均来自 class(Employee class),而不是 Object(emp object)。 此外,即使是临时变量,也会保存 companyCEO 变量值。 因为 static 修饰符会更改此变量的行为。
## 子弹
##
1. 静态变量无法序列化。
2. 在反序列化时,如果在基类的初始化过程中提供了相同的值,则可用于静态变量。
......
......@@ -199,7 +199,7 @@ Friday
但这不是唯一可以实现枚举方法的用法。 在下一节中,我们将看到如何将 Enum 值映射到 String 并返回。
## 实接口
## 实接口
关于枚举鲜为人知的一件事是它们可以实现接口。 这意味着,如果您需要不同枚举所需要的通用功能,则可以使用一个接口定义它,而枚举必须在该接口中实现方法。
......@@ -266,7 +266,7 @@ public Workday fromDatabase(String representation) {
有时,您最终得到一个采用布尔表达式的方法(或者您仅获得一个告诉您使用布尔值的项目说明,但感觉很痒)。 在这种情况下,可以随意引入一个新的枚举并使用正确的值而不是布尔值。
例如,一旦我有了一个规范,告诉我必须创建一个带有一些参数的方法和一个布尔值,称为“ rightHandSide”。 实际上,“ rightHandSide”的默认值为 false。 首先,我按照规范中的说明实了该方法,但是这对我来说并不舒服,我认为这是摆脱这种冷酷感觉的另一种方法:
例如,一旦我有了一个规范,告诉我必须创建一个带有一些参数的方法和一个布尔值,称为“ rightHandSide”。 实际上,“ rightHandSide”的默认值为 false。 首先,我按照规范中的说明实了该方法,但是这对我来说并不舒服,我认为这是摆脱这种冷酷感觉的另一种方法:
```java
public void someMethod(String someParameter, boolean rightHandSide) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册