Day17 Java Foundation

Directeur d'usine Java 2021-10-14 04:49:01
day17 day java foundation


Day17-Java

1、Ensemble de classes

1.1 Reconnaître les ensembles de classes

Si vous voulez enregistrer plusieurs objets maintenant , Assurez - vous d'utiliser un tableau d'objets pour compléter , Mais le plus gros problème avec le tableau d'objets lui - même est de déterminer la longueur des données , Ainsi, le développement d'un tableau d'objets dynamiques a été réalisé plus tard avec une liste liée , Mais le développement de la liste liée est très difficile , Et si une liste doit vraiment être utilisée , Il ne suffit pas de s'appuyer uniquement sur ce qui a été écrit avant , Il faut aussi régler le Code .

EtJDK1.2 Le concept d'ensemble de classes a ensuite été officiellement introduit , Un ensemble de classes est un tableau dynamique d'objets , Classe d'implémentation appartenant à chaque structure de données , Les principales composantes de l'ensemble des classes sont les interfaces d'exploitation de base :Collection,List,Set,Map,Iterator,Enumeration.

1.2 CollectionInterface de collecte

Collection Est la plus grande interface parent d'une collection unique .EtCollectionLes interfaces sont définies comme suit::

public interface Collection<E> extends Iterable<E>

DeJDK1.5AprèsCollection Une application générique est ajoutée à l'interface , L'avantage immédiat est d'éviter ClassCastExceptionAnomalie, Toutes les données à l'intérieur doivent être du même type de stockage . Voici quelques - unes des méthodes couramment utilisées pour ce type de :

Nom de la méthode Type Description
public boolean add(E e) Fréquent Ajouter des données à la collection
boolean addAll(Collection<? extends E> c) Fréquent Ajouter un ensemble de données à la collection
public void clear() Fréquent Effacer les données de l'ensemble
public boolean contains(Object o) Fréquent Demander si les données existent
public Boolean isEmpty() Fréquent Déterminer si la collection contient des éléments
public Iterator iterator() Fréquent AccèsIteratorObjet d'interface,Pour la sortie
public boolean remove(Object o) Fréquent Supprimer les données,Besoinequals()Méthodes
public int size() Fréquent Obtenir la longueur de la collection
public Object[] toArray() Fréquent Renvoie les données de la collection

En cours de développement,add()Etiterator() Utilisation extrêmement élevée de la méthode , D'autres méthodes sont rarement utilisées . L'interface n'est qu'une norme pour le stockage des données , Et ne différencie pas les types de stockage ,Par exemple: Si vous souhaitez conserver des données, vous devrez peut - être faire la distinction entre duplication et non - duplication . Donc dans le développement réel , J'ai tendance à penser à utiliser CollectionSous - interface de l'interface:List(Autoriser la répétition)、Set(Dupliquer non autorisé).

image-20210822185639319

1.3 ListIntroduction à l'interface

List- Oui.Collection Une des sous - interfaces les plus couramment utilisées pour , Et permettre des sous - interfaces dupliquées .

Nom de la méthode Type Description
public E get(int index) Fréquent Obtenir les données à l'emplacement de l'index spécifié
public E set(int index,E element) Fréquent Modifier les données de l'index spécifié
public ListIterator listIterator() Fréquent PourListIteratorInstanciation de l'interface

List Sous - interface avec Collection La plus grande caractéristique de l'interface par rapport à l'interface est qu'elle a un get()Méthodes, Le contenu peut être obtenu à partir de l'index .MaisList Il appartient à l'une de nos interfaces, et si vous obtenez l'objet instantané de l'interface, vous devez avoir une sous - classe ,InList Il existe trois sous - classes communes sous interface :ArrayList、Vector、LinkedList.

image-20210822191336145

L'opération finale devrait toujours être axée sur l'interface , Alors, puisque c'est l'interface principale , Donc toutes les méthodes se réfèrent simplement à la définition de l'interface .

1.3.1 ArrayListSous - catégories

ArrayList C'est une aiguille pour List Mise en œuvre de l'opération Array pour l'interface .

ListFonctionnement de base

package com.day17.demo;
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo {

public static void main(String[] args) {

List<String> all = new ArrayList<>();// À ce stade, la collection ne convient qu'à l'enregistrement StringDonnées de type
System.out.println(all.size() + " " + all.isEmpty());
all.add("Hello");
all.add("Hello"); //Données en double
all.add("world~!");
all.add("zsr~");
System.out.println(all.contains("zsr~"));
System.out.println(all.contains("zsr"));
System.out.println(all);
}
}

Grâce à notre Code, nous pouvons confirmer List Autoriser l'enregistrement des données en double .

ListExiste dansget()Méthodes,Peut être utiliséget() Méthode d'obtention des données en combinaison avec l'index .

ListDeget()Méthodes

package com.day17.demo;
import java.util.ArrayList;
import java.util.List;
public class ArrayListDemo {

public static void main(String[] args) {

List<String> all = new ArrayList<>();// À ce stade, la collection ne convient qu'à l'enregistrement StringDonnées de type
all.add("Hello");
all.add("Hello"); //Données en double
all.add("world~!");
all.add("zsr~");
for (int i = 0; i < all.size(); i++) {

System.out.println(all.get(i));
}
}
}

Mais n'oubliez pas ,get()La méthode est:List Sous - Interface , Si vous n'utilisez pas maintenant ListMais...Collection, Pour l'extraction des données à ce moment , Seules les opérations qui peuvent transformer une collection en un tableau d'objets .

( Le développement n'est généralement pas utilisé )Collection Traitement de sortie et extraction des données

package com.day17.demo;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
public class CollectionDemo {

public static void main(String[] args) {

Collection<String> all = new ArrayList<>();// À ce stade, la collection ne convient qu'à l'enregistrement StringDonnées de type
all.add("Hello");
all.add("Hello"); //Données en double
all.add("world~!");
all.add("zsr~");
//FonctionnementObjectRetour au formulaire, Il est donc possible qu'une transition vers le bas soit nécessaire ,Ça pourrait causerClassCastExceptionRisques pour la sécurité
Object result [] = all.toArray();//DevientObjectTableau d'objets
System.out.println(Arrays.toString(result));
}
}

Collection et simplicité JavaCatégorie

Dans le développement réel , Le type de données le plus stocké dans la collection , C'est Jane javaCatégorie.

Enregistrer simple dans la collection javaCatégorie

package com.day17.demo;
import java.util.ArrayList;
import java.util.List;
class Person{

private String name;
private Integer age;
public Person(String name, Integer age) {

super();
this.name = name;
this.age = age;
}
public String getName() {

return name;
}
public void setName(String name) {

this.name = name;
}
public Integer getAge() {

return age;
}
public void setAge(Integer age) {

this.age = age;
}
@Override
public boolean equals(Object obj) {

// TODO Auto-generated method stub
if(this == obj){

return true;
}
if (obj == null){

return false;
}
if(!(obj instanceof Person)){

return false;
}
Person per = (Person) obj;// L'objet lui - même peut être déplacé vers le bas 
return this.name.equals(per.name) && this.age.equals(per.age);
}
@Override
public String toString() {

return "Person [name=" + name + ", age=" + age + "]";
}
}
public class ListDemo {

public static void main(String[] args) {

List<Person> all = new ArrayList<>();
all.add(new Person("Zhang San",10));
all.add(new Person("Li - si.",21));
all.add(new Person("Wang Wu",19));
//Pourremove()、contains() La méthode doit avoir equals()Appui
all.remove(new Person("Li - si.",21));
System.out.println(all.contains(new Person("Li - si.",21)));
for (int i = 0; i < all.size(); i++) {

System.out.println(all.get(i));
}
}
}

LeList Collection si elle est utilisée remove()、contains()La méthode doit avoirequals()Appui méthodologique.Simplejava L'utilisation dans la classe est rare .

1.3.2 VectorSous - catégories

Vector C'est une ancienne Sous - classe , Cette classe vient de JDK1.0Sortie,ArrayListC'est vrai.JDK1.2Lancement.

package com.day17.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
public class ArrayListDemo {

public static void main(String[] args) {

List<String> all = new Vector<>();// À ce stade, la collection ne convient qu'à l'enregistrement StringDonnées de type
all.add("Hello");
all.add("Hello"); //Données en double
all.add("world~!");
all.add("zsr~");
for (int i = 0; i < all.size(); i++) {

System.out.println(all.get(i));
}
}
}

Questions d'entrevue:Veuillez expliquer.ArrayListAvecVectorLa différence?

La différence ArrayList Vector
Heure historique JDK1.2 JDK1.0
Mode de traitement Traitement asynchrone, La forme est plus élevée Synchronisation, Dégradation des performances
Sécurité des données Sécurité non threadée Sécurité des fils
Formulaire de sortie Iterator、ListIterator、foreach Iterator、ListIterator、foreach、Enumeration
1.3.3LinkedListSous - catégories

InList Il y a un autre LinkedListSous - catégories, Si la transition vers notre interface parent , La forme utilisée n'est pas différente de celle utilisée précédemment .

package com.day17.demo;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
public class ArrayListDemo {

public static void main(String[] args) {

List<String> all = new LinkedList<>();// À ce stade, la collection ne convient qu'à l'enregistrement StringDonnées de type
all.add("Hello");
all.add("Hello"); //Données en double
all.add("world~!");
all.add("zsr~");
for (int i = 0; i < all.size(); i++) {

System.out.println(all.get(i));
}
}
}

Questions d'entrevue:Veuillez expliquer.ArrayListAvecLinkedListLa différence?

La différence ArrayList LinkedList
Méthode de construction public ArrayList() {
this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA;
}
public LinkedList() {
}
Longueur d'ouverture Taille de l'ouverture Dynamic Open
Complexité temporelle La complexité temporelle est1 La complexité temporelle estn

1.4 SetIntroduction à l'interface

SetInterface avecList La plus grande différence entre les interfaces est que le contenu ne peut pas être dupliqué ,NotificationSetEtList La plus grande différence, c'est que

set L'interface n'est pas correcte Collection L'interface est étendue ,EtListC'est exact.Collection L'interface a été étendue .Parce quejdk1.8Raisons,Donc, danscollection Les interfaces sont également disponibles en defaultMéthodes, Et cette méthode d'écriture n'est pas Set L'interface apparaît à l'intérieur .C'est - à - direset Impossible d'utiliser dans l'interface get()Méthode de traitement,EtSet Il y a des sous - classes dans les sous - interfaces que nous utilisons HashSet、TreeSet.

image-20210830135859831

1.4.1 Sous - classe de stockage de hachage:HashSet

Hash(Hashi) Appartient à un algorithme , Le sens central de cet algorithme est de trouver un algorithme de sauvegarde vide , Donc dès que je vois Hash C'est - à - dire qu'il n'y a pas de préservation séquentielle .

ObservationSetUtilisation des interfaces

package com.day17.demo;
import java.util.HashSet;
import java.util.Set;
public class HashSetDemo {

public static void main(String[] args) {

Set<String> all = new HashSet<>();
all.add("Hello");
all.add("zsr");
all.add("zsr");
all.add("Abc");
System.out.println(all);
}
}

Enregistrer les données trouvées après la sortie , Il n'y a plus de données en double , Et il n'y a pas d'ordre dans sa propre préservation .

1.4.2 Trier les sous - classes stockées:TreeSet

Si vous voulez maintenant Set Les données stockées dans la collection sont séquentielles ,Alors, passe.TreeSetEn coursSet Instanciation de l'interface .

UtiliserTreeSet Interface d'Instanciation

package com.day17.demo;
import java.util.HashSet;
import java.util.Set;
import java.util.TreeSet;
public class HashSetDemo {
public static void main(String[] args) {
Set<String> all = new TreeSet<>();
all.add("C");
all.add("C");
all.add("A");
all.add("B");
all.add("D");
System.out.println(all);
}
}

Toutes les données sauvegardées sont maintenant trouvées non dupliquées et séquentielles .TreeSet Fait en utilisant un schéma ascendant .

1.4.3 À propos deTreeSetDescription du tri

La procédure précédente a permis de constater que ,UtiliserTreeSetInstanciationSet Dans l'interface , Toutes les données stockées sont ordonnées ,Dans ce cas,, Et si on utilisait une classe personnalisée ?

Si les objets de cette classe doivent être triés , Alors cette classe doit implémenter ComparableInterface, Définir les règles de comparaison , Mais il y a une chose à noter dans ce cas : Une fois utilisé ComparableEt si, Toutes les propriétés de la classe doivent être écrites dans la collation .

Tri personnalisé

package com.day17.demo;
import java.util.Set;
import java.util.TreeSet;
class Personn implements Comparable<Personn>{

private String name;
private Integer age;
public Personn(String name, Integer age) {

this.name = name;
this.age = age;
}
public String getName() {

return name;
}
public void setName(String name) {

this.name = name;
}
public Integer getAge() {

return age;
}
public void setAge(Integer age) {

this.age = age;
}
@Override
public String toString() {

return "person [name=" + this.name + ", age=" + this.age + "]\n";
}
@Override
public int compareTo(Personn o) {

// TODO Auto-generated method stub
if(this.age > o.age){

return 1;
}else if (this.age < o.age){

return 0;
}else{

return this.name.compareTo(o.name);
}
}
}
public class TreeSetDemo {

public static void main(String[] args) {

// TODO Talon de méthode généré automatiquement 
Set<Personn> all=new TreeSet<Personn>();
all.add(new Personn("Zhang San",20));
all.add(new Personn("Zhang San",20));
all.add(new Personn("Li - si.",20));
all.add(new Personn("Wang Wu",30));
all.add(new Personn("Zhao Liu",40));
System.out.println(all);
}
}

Parce que dans le développement réel TreeSet C'est trop gênant d'utiliser , Dans la simplicité du développement du projet java La classe est basée sur la conception de la table de base de données , Si une feuille de données contient trop de champs , Tu dois écrire à mort .

image-20210830180601214

TreeSet La Sous - classe dépend de Compara() La valeur de retour de la méthode est 0 Pour déterminer s'il s'agit d'un élément répétitif .

1.4.4 Description des éléments répétitifs

En serviceTreeSet Lorsque la Sous - classe enregistre des données , Le jugement des éléments répétitifs repose sur Comparable Interface terminée .Ce n'est pas toutSet Comment l'interface juge les éléments répétitifs , Parce que si vous utilisez HashSetSous - catégories,Parce queComparableÇa n'a pas d'importance., Il s'appuie donc principalement sur deux méthodes pour juger des éléments répétitifs :

  • hashCode:public int hashCode();
  • Comparaison des objets:public Boolean equals(Object obj)

Au cours de la comparaison d'objets , Je vais d'abord utiliser hashCode() Avec les objets stockés dans la collection hashCode()Comparer, Si le Code est le même , Puis réutiliser equals() Méthodes de comparaison du contenu , Si tout est le même , Le même élément .

package com.day17.demo;
import java.util.Set;
import java.util.TreeSet;
class Personn implements Comparable<Personn>{

private String name;
private Integer age;
public Personn(String name, Integer age) {

this.name = name;
this.age = age;
}
public String getName() {

return name;
}
public void setName(String name) {

this.name = name;
}
public Integer getAge() {

return age;
}
public void setAge(Integer age) {

this.age = age;
}
@Override
public int hashCode() {

final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {

if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Personn other = (Personn) obj;
if (age == null) {

if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (name == null) {

if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
@Override
public String toString() {

return "person [name=" + this.name + ", age=" + this.age + "]\n";
}
@Override
public int compareTo(Personn o) {

// TODO Auto-generated method stub
if(this.age > o.age){

return 1;
}else if (this.age < o.age){

return 0;
}else{

return this.name.compareTo(o.name);
}
}
}
public class TreeSetDemo {

public static void main(String[] args) {

// TODO Talon de méthode généré automatiquement 
Set<Personn> all=new TreeSet<Personn>();
all.add(new Personn("Zhang San",20));
all.add(new Personn("Zhang San",20));
all.add(new Personn("Li - si.",20));
all.add(new Personn("Wang Wu",30));
all.add(new Personn("Zhao Liu",40));
System.out.println(all);
}
}

​ Si vous voulez identifier l'unicité de l'objet ,Il le faut.hashCode()、equals()Action commune.

Questions d'entrevue:Si deuxhashCode()Même chose.、equals() Quel est le résultat différent ?Impossible à éliminer

Questions d'entrevue:Si deuxhashCode()C'est différent.、equals() Quel est le même résultat ?Impossible à éliminer

​ Le jugement de l'objet doit être réalisé à la fois .

image-20210830200214061

1.5 Opération de sortie pour la collection

Toutes les opérations de base décrites précédemment qui appartiennent à un ensemble de valeurs uniques , Mais l'un des problèmes les plus importants pour une collection est comment faire la sortie du contenu de la collection ,Et la question estJava Quatre modes de sortie sont donnés dans le cadre de l'ensemble de classes pour :Iterator,ListIterator,Enumeration,foreach.

1.5.1 Sortie itérative:Iterator

image-20210830200741889

public boolean hasNext() Déterminer s'il y a un élément suivant
public E next() Obtenir l'élément courant
public default void remove() Supprimer l'élément

CritèresIterator

package com.day17.demo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class ArrayListDemo {

public static void main(String[] args) {

List<String> all = new ArrayList<>();// À ce stade, la collection ne convient qu'à l'enregistrement StringDonnées de type
all.add("Hello");
all.add("Hello"); //Données en double
all.add("world~!");
all.add("zsr~");
Iterator<String> iter = all.iterator();//InstanciationIterator
while(iter.hasNext()){

String str = iter.next();
System.out.println(str);
}
}
}

PourIterator Fourni dans l'interface remove() La méthode résout principalement le problème de la suppression d'éléments dans la collection

removeFonctionnement

package com.day17.demo;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class ArrayListDemo {

public static void main(String[] args) {

List<String> all = new ArrayList<>();// À ce stade, la collection ne convient qu'à l'enregistrement StringDonnées de type
all.add("Hello");
all.add("Hello"); //Données en double
all.add("a");
all.add("world~!");
Iterator<String> iter = all.iterator();//InstanciationIterator
while(iter.hasNext()){

String str = iter.next();
if("a".equals(str)){

all.remove("a");// Si une interruption après cette opération a été effectuée 
//iter.remove();// Si la sortie suivante n'est pas interrompue ,Exécution
continue ;
}
System.out.println(str);
}
}
}

Après avoir vu la sortie de l'ensemble , Pour toujours IteratorInterface terminée.

1.5.2 Sortie itérative bidirectionnelle:ListIterator

Iterator Ce qui peut être fait est une seule opération de sortie vers l'avant et vers l'arrière , Si vous voulez maintenant pouvoir terminer de l'avant à l'arrière , La sortie de l'arrière vers l'avant , Alors vous pouvez utiliser ListIteratorInterface terminée,Cette interface estIteratorSous - interface pour,InListIterator L'interface utilise principalement deux méthodes d'extension :

Déterminer s'il y a un élément précédent:public Boolean hasPrevious();

Retirer l'élément précédent :public E previous().

Mais si vous voulez ListIteratorObjet instantané de l'interface,Collection Il n'y a pas d'approche pour soutenir ,Cette approcheList Existe dans l'interface :

Public ListIterator listIterator()

Effectuer une itération bidirectionnelle

package com.day17.demo;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class ListIteratorDemo {

public static void main(String[] args) {

// TODO Talon de méthode généré automatiquement 
List<String> all=new ArrayList<String>();
all.add("hello");
all.add("hello");
all.add("world");
ListIterator<String> ite=all.listIterator();
System.out.println(" De l'avant vers l'arrière ");
while(ite.hasNext()){

String str=ite.next();
System.out.print(str + "、");
}
System.out.println();
System.out.println(" De l'arrière vers l'avant ");
while(ite.hasPrevious()){

String str=ite.previous();
System.out.print(str + "、");
}
}
}

Mais pour les opérations de l'arrière vers l'avant , La sortie de l'avant vers l'arrière doit se produire avant de procéder . Comme cette interface de sortie n'a que ListPeut être utilisé, Donc il n'y a presque pas de développement .

1.5.3 Interface obsolète :Enumeration

Enumeration Est l'une des premières interfaces de sortie , Première sortie énumérée ,InJDK1.0 C'est déjà sorti ,Et dansJDK1.5 Pour étendre sa fonctionnalité , Principalement l'ajout de génériques ,InEnumeration Il n'y a que deux méthodes définies dans l'interface :

Déterminer s'il y a un élément suivant:public Boolean hasMoreElements()

Obtenir l'élément courant :public E nextElement()

Mais pour obtenir EnumerationObjet instantané pour, On ne peut pas compter sur CollectionL'interface est, Il peut compter sur VectorClasse terminée,InVector Une méthode est définie dans la Sous - classe :public Enumeration elements().

UtiliserEnumertaionProduire

package com.day17.demo;
import java.util.Enumeration;
import java.util.Vector;
public class IteratorTest {

public static void main(String[] args) {

// TODO Talon de méthode généré automatiquement 
Vector<String> all=new Vector<String>();
all.add("hello");
all.add("hello");
all.add("world");
Enumeration<String> ite=all.elements();
while(ite.hasMoreElements()){

String str=ite.nextElement();
System.out.println(str);
}
}
}

En termes de développement , La première considération n'est certainement pas Enumeration, Ce qui compte, c'est que Iterator, Ne l'utilisez que si nécessaire .

1.5.4 JDK1.5Appuiforeach

Pourforeach Sortie en plus de la sortie qui peut être faite à partir d'un tableau , La sortie de la collection peut également être effectuée .

Utiliserforeach

package com.day17.demo;
import java.util.ArrayList;
import java.util.List;
public class IteratorTest {

public static void main(String[] args) {

// TODO Talon de méthode généré automatiquement 
List<String> all=new ArrayList<String>();
all.add("hello");
all.add("hello");
all.add("world");
for(String x : all){

System.out.println(x);
}
}
}

Utiliserforeach Ce n'est pas une forme largement acceptée de code d'exploitation .

版权声明
本文为[Directeur d'usine Java]所创,转载请带上原文链接,感谢
https://javamana.com/2021/10/20211013211944133u.html

  1. Common encryption algorithms such as Java MD5 and sha256
  2. The spring security permission annotation of springboot performs permission authentication on Methods in a variety of ways
  3. Spring cloud gateway has no link information. I'm stupid (Part 2)
  4. Les manteaux populaires d'automne et d'hiver de cette année sont assortis avec des jeans pour vous faire marcher avec le vent et la beauté
  5. 【送Java大数据书籍】HBase 的安装和基础编程
  6. Case sharing | online fault caused by Dubbo 2.7.12 bug
  7. Mybatis plus global update policy and insert query policy
  8. Weekly Ethereum progress 2021 / 09 / 25
  9. Installation et programmation de base de hbase
  10. Proposal to mitigate the balancing attack risk of LMD ghost
  11. Pancakeswap front-end source compilation and deployment Linux
  12. The first starcoin & move hacker song source code analysis - red envelope
  13. Vulnerability analysis of uupsupgradeable
  14. Hack Replay - Time lock
  15. Samczsun talk about Re-entrancy
  16. Starcoin & move build meta cosmic infrastructure
  17. Ion: the only way to decentralize identity
  18. [popular science] how does Xiaobai understand the uniswapv3 white paper
  19. With the help of lightning network gateway, micro payment can be completed instantly
  20. What are the new features of Java 11?
  21. What are the new features of Java 10?
  22. What are the new features of Java 9?
  23. Is the report too ugly? Try this open source project reportplus!
  24. Spring 2021 report released: who is the real brother?
  25. À bientôt, docker.
  26. Recommend a super easy to use markdown editor
  27. Java 17 new features overview
  28. New developer friendly features after Java 8
  29. Concise and efficient eclipse collections API
  30. Practice of deploying spring boot microservices on kubernetes
  31. Garbage collectors in the new JDK: Shenandoah, ZGC and improved G1
  32. À bientôt, docker.
  33. Oracle exécute le format syntaxique d'une procédure stockée ou d'un lot
  34. [Azure Cloud Service] Azure Cloud Service ajoute des champs personnalisés pour le rôle Web (hôte IIS) (ajoute le champ user agent dans l'en - tête de demande http au Journal de sortie IIS)
  35. The Linux kernel will be implemented with the latest zstd
  36. JetBrains publishes the raw data of the developer ecosystem survey in 2021
  37. Linux 5.16 will support KVM and disable amd PSF function
  38. Linux 5.16 brings DisplayPort 2.0 initial support for amdgpu driver
  39. Announcement of the election results of the technical advisory committee of the Linux foundation in 2021
  40. Java虚拟机|JVM【适合初学者入门】
  41. Spring Cloud 2021.0.0-M2 发布
  42. [Azure Cloud Service] Azure Cloud Service ajoute des champs personnalisés pour le rôle Web (hôte IIS) (ajoute le champ user agent dans l'en - tête de demande http au Journal de sortie IIS)
  43. Spring Cloud 2021.0.0-M2 發布
  44. Java虛擬機|JVM【適合初學者入門】
  45. Spring Cloud 2021.0.0-m2 Release
  46. Machine virtuelle Java | JVM [convient aux débutants]
  47. 10412 Xiaopeng cars announced sales results in September
  48. Apprendre le mécanisme des événements Java
  49. Java script RPC (07) - timeout timeout Processing from zero
  50. Introduction à la page Web de rabbitmq (3)
  51. MySQL read - Write Separation Cluster Construction and Integration with mycat
  52. Analyse du principe du conteneur du CIO printanier
  53. Java面向对象基础
  54. Java communique avec les capteurs industriels via socket et DTu, RTU
  55. Xiaopeng automobile delivered 10412 units in September, with a monthly sales volume of more than 10000 for the first time
  56. Java Object Oriented Foundation
  57. Introduction au développement Android PDF, un tour pour vous apprendre à comprendre netty
  58. Hadoop Foundation - 01 - concepts de base
  59. Hadoop Foundation - 02 - Basic Structure
  60. Hadoop Foundation - 04 - hdfs API Programming