HeimJavaJavaInterview FragenInterviewer: In der Zahlungsschnittstelle kann bei wiederholten Zahlungen für dieselbe Bestellung nur einmal Geld abgebucht werden.
Interviewer: In der Zahlungsschnittstelle kann bei wiederholten Zahlungen für dieselbe Bestellung nur einmal Geld abgebucht werden.
Als ich gestern ein Scheininterview für einen Freund führte, wie implementiert man Schnittstellen-Idempotenz? Aus dem Tonfall seiner Antwort ist ersichtlich, dass er den achtbeinigen Aufsatz auswendig lernt.
Damit jeder die idempotente Implementierung der Schnittstelle leicht erleben kann, hat Bruder Tian
diesen Artikel heute zusammengestellt .
Dieser Artikel hat insgesamt neun Hauptinhalte:
1. Das Konzept der Idempotenz Imdempotenz ist für Laien ausgedrückt eine Schnittstelle, die dieselbe Anfrage mehrmals initiiert . Es muss sichergestellt sein, dass der Vorgang nur einmal ausgeführt werden kann, zum Beispiel:
Bestellschnittstelle, Bestellungen können nicht mehrfach erstellt werden
Zahlungsschnittstelle, wiederholte Zahlungen für die gleiche Bestellung können nur einmal abgebucht werden
Alipay-Rückrufschnittstelle, es kann zu mehreren Rückrufen kommen, wiederholte Rückrufe müssen bearbeitet werden
Gewöhnliche Schnittstelle zum Senden von Formularen. Aufgrund von Netzwerk-Timeouts und anderen Gründen können Sie nur mehrmals auf „Senden“ klicken und können nur einmal erfolgreich sein Einzigartiger Index – verhindert neue schmutzige Daten.
Token-Mechanismus – um wiederholte Seitenübermittlungen zu verhindern Basierend auf der Versionsnummer, beim Aktualisieren von Daten. Überprüfen Sie die Daten im Handumdrehen. Verteilte Sperre – Redis (jedis, redisson) oder Zookeeper-Implementierung.
Zustandsmaschine – Zustandsänderung, beurteilen Sie den Status beim Aktualisieren von Daten 3. Implementierung dieses Artikels
Dieser Artikel verwendet die zweite Möglichkeit zur Implementierung, dh die Implementierung der Schnittstellen-Idempotenzüberprüfung durch den
-Mechanismus.
4. Implementierungsideen
Erstellen Sie eine eindeutige Kennung für jede Anfrage, die Idempotenz gewährleisten musstoken, 先获取token, 并将此token存入redis, 请求接口时, 将此token放到header或者作为请求参数请求接口, 后端接口判断redis中是否存在此token:
Wenn vorhanden, verarbeiten Sie die Geschäftslogik normal und löschen Sie sie aus Redistoken, dann, wenn es sich um eine wiederholte Anfrage handelt, aufgrund von Token wurde gelöscht, es kann die Überprüfung nicht bestehen und gibt Bitte wiederholen Sie den Vorgang nichtPrompttoken, 那么, 如果是重复请求, 由于token已被删除, 则不能通过校验, 返回请勿重复操作提示
如果不存在, 说明参数不合法或者是重复请求, 返回提示即可
五、项目简介
Spring Boot
Redis
@ApiIdempotent注解 + 拦截器对请求进行拦截
@ControllerAdvice全局异常处理
压测工具: Jmeter
Wenn er nicht existiert, bedeutet dies, dass der Parameter ungültig ist oder es sich um eine wiederholte Anforderung handelt. Geben Sie einfach den zurück prompt
5. Projekteinführung
🎜Spring Boot🎜🎜🎜🎜Redis🎜🎜🎜🎜@ApiIdempotent Annotation + Interceptor fängt Anfragen ab🎜🎜🎜🎜@ControllerAdviceGlobale Ausnahmebehandlung🎜🎜🎜🎜Stresstest-Tool: Jmeter🎜🎜🎜🎜Erklärung:🎜🎜🎜Dieser Artikel konzentriert sich auf Die Kernimplementierung von Idempotence, wie Spring Boot funktioniert. Die Details zur Integration von Redis, ServerResponse, ResponseCode und anderen Details gehen über den Rahmen dieses Artikels hinaus.🎜
8. Notizen (sehr wichtig) Es ist möglich, dass mehrere Threads gleichzeitig Zeile 46 erreichen. Zu diesem Zeitpunkt wurde das Token nicht gelöscht, sodass die Ausführung fortgesetzt wird. Wenn das Löschergebnis von nicht überprüft und direkt freigegeben wird, besteht weiterhin das Problem der wiederholten Übermittlung auftreten, auch wenn es sich eigentlich nur um einen echten Löschvorgang handelt, reproduzieren Sie ihn weiter unten. Ändern Sie den Code leicht:
Erneut anfordern
Schauen Sie sich noch einmal die Konsole an
jedisUtil.del(token)
Obwohl nur einer der Token tatsächlich gelöscht wird, da das Löschergebnis nicht überprüft wird, gibt es immer noch einen Daher müssen Parallelitätsprobleme überprüft werden
9. Zusammenfassung
Tatsächlich ist die Idee sehr einfach, das heißt, jede Anfrage ist garantiert einzigartig und wird somit 保证幂等性, 通过拦截器+注解, 就不用每次请求都写重复代码, 其实也可以利用Spring AOP erreicht.
Okay, ich werde es heute hier teilen.
Das obige ist der detaillierte Inhalt vonInterviewer: In der Zahlungsschnittstelle kann bei wiederholten Zahlungen für dieselbe Bestellung nur einmal Geld abgebucht werden.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Sie müssen Spring kennen, also lassen Sie uns über die Reihenfolge aller Benachrichtigungen von Aop sprechen. Wie wirkt sich Spring Boot oder Spring Boot 2 auf die Ausführungsreihenfolge von Aop aus? Erzählen Sie uns von den Fallstricken, auf die Sie bei AOP gestoßen sind?
OOM bedeutet, dass im Programm eine Sicherheitslücke vorliegt, die durch den Code oder die JVM-Parameterkonfiguration verursacht werden kann. In diesem Artikel erfahren die Leser, wie sie Fehler beheben können, wenn ein Java-Prozess OOM auslöst.
Das Extrakapitel der Java-Concurrent-Programming-Reihe, C A S (Compare and swap), ist nach wie vor in einem leicht verständlichen Stil mit Bildern und Texten gehalten und ermöglicht den Lesern eine verrückte Konversation mit dem Interviewer.
Unterschätzen Sie nicht die schriftlichen Prüfungsfragen vieler Unternehmen. Es gibt Fallstricke, in die Sie versehentlich geraten können. Wenn Sie auf eine solche schriftliche Testfrage zu Zyklen stoßen, empfehle ich Ihnen, ruhig zu denken und Schritt für Schritt vorzugehen.
In diesem Artikel werden fünf Interviewfragen zur Java-String-Klasse behandelt. Ich habe während des Interviewprozesses mehrere dieser fünf Fragen persönlich erlebt. Dieser Artikel wird Ihnen helfen zu verstehen, warum die Antworten auf diese Fragen so sind.
Letzte Woche ging ein Freund aus der Gruppe zu einem Interview mit Ping An Insurance. Das Ergebnis war etwas bedauerlich, aber ich hoffe, Sie lassen sich nicht entmutigen, im Grunde genommen alle Fragen, auf die Sie stoßen Das Interview kann durch Auswendiglernen der Interviewfragen gelöst werden, also arbeiten Sie bitte hart!
Dieser Artikel hat insgesamt mehr als 30.000 Wörter und umfasst Linux-Übersicht, Festplatte, Verzeichnis, Datei, Sicherheit, Syntaxebene, praktische Kämpfe, Dateiverwaltungsbefehle, Dokumentbearbeitungsbefehle, Festplattenverwaltungsbefehle, Netzwerkkommunikationsbefehle, Systemverwaltungsbefehle und Backup Komprimierungsbefehle usw. Abbau von Linux-Wissenspunkten.