JD.com achète Dangdang achète
Tous les codes de la colonne sont développés sur la base de Java 8 + Spring Boot 2.2.1.RELEASE + Spring Cloud Greenwich.SR4 + Spring Data Moore-SR4, et la gestion des dépendances est basée sur Maven.
Chaque cas est une application indépendante en ligne de commande SpringBoot ou Java qui peut être démarrée indépendamment pour éviter les interférences mutuelles, mais elles partagent un POM Maven.
Après avoir téléchargé le code source, exécutez d'abord la commande docker-compose up dans le répertoire racine pour exécuter MySQL, Redis, ES, RabbitMQ et d'autres systèmes associés via Docker, puis démarrez l'application.
La majeure partie de la colonne ne repose que sur un seul composant, MySQL. Si vous rencontrez des difficultés pour démarrer docker-compose, vous pouvez d'abord commenter les composants pertinents dans docker-compose.yml, comme commenter ES et RabbitMQ, puis le démarrer lorsque vous le souhaitez. Vous devez l'utiliser plus tard dans le chapitre sur la conception et vous devez supprimer le module SpringBoot Starter approprié dans pom.xml en même temps.
Il existe un fichier readme.md Markdown dans le répertoire racine du code source. Il existe un répertoire répertoriant l'emplacement du code source correspondant à chaque article. En même temps, il existe un fichier readme.md sous chaque package de code source, qui répertorie chacun. article. Le nom du package de code source de chaque section de cet article.
La plupart des cas dans le code source utiliseront des méthodes de dénomination incorrectes et correctes pour représenter une implémentation incorrecte et une implémentation correcte. Vous pouvez comparer l'implémentation avec le contenu du livre pour comprendre.
Certains cas (tels que l'article sur l'index SQL) généreront des données de test en fonction de l'heure actuelle. Il n'est donc pas garanti que les résultats des tests dans l'article puissent être reproduits localement et vous devez ajuster les scénarios de test vous-même.
Cliquez sur le lien pour entrer dans le dossier de codes pour chaque section
Il existe également un fichier readme.md dans chaque dossier, qui répertorie les dossiers de code source de chaque section dans chaque section.
[Penser] représente le code impliqué dans la réflexion et la discussion
[Extended] représente le code impliqué dans la lecture étendue
[Supplément] Représente davantage d'autres codes qui n'apparaissent pas dans le livre.
1.0 : java8
2.1 L'utilisation d'une bibliothèque d'outils concurrents ne signifie pas qu'il n'y a pas de problèmes de sécurité des threads : concurrenttool
2.2 Verrouillage par code : Ne laissez pas le « verrouillage » devenir un souci : verrouillez
2.3 Pool de threads : le composant le plus couramment utilisé et le plus sujet aux erreurs dans le code métier : le pool de threads
2.4 Pool de connexions : Ne laissez pas le pool de connexions vous nuire : pool de connexions
2.5 Appels HTTP : avez-vous pensé aux délais d'attente, aux tentatives et à la concurrence : httpinvoke
2.6 20 % des transactions déclaratives Spring dans le code métier peuvent ne pas être traitées correctement : transaction
2.7 Index de base de données : l'index n'est pas une panacée : sqlindex
2.8 La question de l'égalité : Comment déterminer que vous êtes vous-même dans le programme : égaux
2.9 Calculs numériques : Faites attention aux problèmes de précision, d'arrondi et de débordement : calculs numériques
2.10 Classe Collection : Opération de liste semée d'embûches : collection
2.11 Traitement des valeurs nulles : pointeur nul peu clair et ennuyeux : valeur nulle
2.12 Gestion des exceptions : ne vous laissez pas aveugler lorsque quelque chose ne va pas : exception
2.13 Journalisation : la journalisation n'est pas aussi simple que vous le pensez : la journalisation
2.14 Fichier IO : il n'est pas facile d'obtenir une lecture et une écriture de fichier efficaces et correctes : io
2.15 Sérialisation : Encore et encore, êtes-vous toujours la même personne en sérialisation ?
2.16 Faites bon usage des classes de date et d'heure de Java 8 et évitez certains des « troisièmes vieux » pièges : datetime
2.17 Ne pensez pas que le MOO est impossible avec la « transmission automatique » : oom
2.18 Quels pièges y aura-t-il lorsque la réflexion, les annotations et les génériques rencontreront la POO : fonctionnalités avancées
2.19 Spring Framework : IoC et AOP sont au cœur des extensions : springpart1
2.20 Spring Framework : il a fait beaucoup de travail pour nous et a également apporté de la complexité : springpart2
3.1 Duplication de code : trois astuces pour résoudre la duplication de code : code redondant
3.2 Conception des interfaces : Le langage de dialogue entre systèmes doit être unifié : apidesign
3.3 Conception du cache : la mise en cache peut être la cerise sur le gâteau ou ajouter l'insulte à l'injure : cachedesign
3.4 Lorsque le code métier est écrit, cela signifie-t-il qu'il est prêt pour la production : productionready
3.5 Le traitement asynchrone est facile à utiliser, mais il est très facile de l'utiliser de manière incorrecte : asyncprocess
3.6 Stockage des données : Comment NoSQL et RDBMS se complètent-ils et se complètent-ils ? :nosqluse
4.1 Source de données : rien de fiable côté client : données client
4.2 Sécurité : Lorsqu'il s'agit d'argent, il faut penser à une protection anti-swipe, limitée et lourde : securitylastdefense
4.3 Données et code : les données sont des données, le code est du code : dataandcode
4.4 Comment sauvegarder et transmettre correctement les données sensibles : données sensibles
5.1 Routines de dépannage pour localiser les problèmes d'application Java : N/A
5.2 Pour analyser et localiser les problèmes Java, vous devez faire bon usage de ces outils : outils de dépannage
5.3 Quelques pièges lors de la migration de programmes Java de machines virtuelles vers Kubernetes : N/A
Si vous pensez que le code source vous est utile, bienvenue sur Star