国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Inhaltsverzeichnis
1. Einführung
2. API-Zertifikat
Das API-Zertifikat analysieren
3. V3簽名
簽名格式
生成簽名
4. 使用簽名
rrreee
3. V3-Signatur
Signatur generieren
Heim Java JavaBase Detaillierte Erl?uterung der WeChat-Zahlung in Java (1): API V3-Versionssignatur

Detaillierte Erl?uterung der WeChat-Zahlung in Java (1): API V3-Versionssignatur

Oct 27, 2020 pm 05:20 PM
java Wechat -Zahlung

Java Basic Tutorial Die Kolumne stellt die WeChat-Zahlung in Java vor und implementiert die API V3-Versionssignatur.

Detaillierte Erl?uterung der WeChat-Zahlung in Java (1): API V3-Versionssignatur

1. Einführung

Ich hatte in letzter Zeit Probleme mit der WeChat-Zahlung und das Zertifikat ist immer noch ziemlich nervig, daher ist es notwendig, einige Erfahrungen zu teilen, um Ihre Fallstricke bei der Entwicklung der WeChat-Zahlung zu reduzieren. Derzeit wurde die WeChat-Zahlungs-API auf die V3-Version weiterentwickelt und übernimmt den beliebten Restful-Stil.

Detaillierte Erl?uterung der WeChat-Zahlung in Java (1): API V3-Versionssignatur

Heute werde ich die Schwierigkeiten der WeChat-Zahlung erl?utern – Signature Obwohl es viele nützliche SDKs gibt, müssen Sie sie dennoch verstehen, wenn Sie die WeChat-Zahlung im Detail verstehen m?chten.

2. API-Zertifikat

Um die Sicherheit sensibler Finanzdaten zu gew?hrleisten und sicherzustellen, dass die Finanztransaktionen in unserem Unternehmen narrensicher sind. Derzeit verwendet WeChat Pay den privaten Schlüssel, der im ma?geblichen CA-Zertifikat (API-Zertifikat) bereitgestellt wird, das von einem Dritten zur Signatur ausgestellt wurde. Sie k?nnen API-Zertifikate über die H?ndlerplattform einrichten und erhalten.

Detaillierte Erl?uterung der WeChat-Zahlung in Java (1): API V3-Versionssignatur

Denken Sie daran, dass Sie beim ersten Einrichten zum Herunterladen aufgefordert werden. Weitere Informationen finden Sie in den Anweisungen.

Detaillierte Erl?uterung der WeChat-Zahlung in Java (1): API V3-Versionssignatur說(shuō)明

Suchen Sie nach der Einrichtung die zip壓縮包解壓,里面有很多文件,對(duì)于JAVA開(kāi)發(fā)來(lái)說(shuō)只需要關(guān)注apiclient_cert.p12這個(gè)證書(shū)文件就行了,它包含了公私鑰,我們需要把它放在服務(wù)端并利用Java解析.p12-Datei, um den ?ffentlichen Schlüssel und den privaten Schlüssel zu erhalten.

Stellen Sie sicher, dass die Sicherheit des Zertifikats auf der Serverseite gew?hrleistet ist, was finanzielle Sicherheit beinhaltet.

Das API-Zertifikat analysieren

Der n?chste Schritt besteht darin, das Zertifikat im Internet zu analysieren. Hier verwende ich eine ?formellere“ Methode zum Parsen, n?mlich java.security. KeyStore des zu analysierenden JDK-Sicherheitspakets. <code>java.security.KeyStore來(lái)解析。

微信支付Detaillierte Erl?uterung der WeChat-Zahlung in Java (1): API V3-Versionssignatur使用了PKCS12算法,我們通過(guò)KeyStore來(lái)獲取公私鑰對(duì)的載體KeyPair以及證書(shū)序列號(hào)serialNumber,我封裝了工具類(lèi):

import?org.springframework.core.io.ClassPathResource;import?java.security.KeyPair;import?java.security.KeyStore;import?java.security.PrivateKey;import?java.security.PublicKey;import?java.security.cert.X509Certificate;/**
?*?KeyPairFactory
?*
?*?@author?dax
?*?@since?13:41
?**/public?class?KeyPairFactory?{????private?KeyStore?store;????private?final?Object?lock?=?new?Object();????/**
?????*?獲取公私鑰.
?????*
?????*?@param?keyPath??the?key?path
?????*?@param?keyAlias?the?key?alias
?????*?@param?keyPass??password
?????*?@return?the?key?pair
?????*/
????public?KeyPair?createPKCS12(String?keyPath,?String?keyAlias,?String?keyPass)?{
????????ClassPathResource?resource?=?new?ClassPathResource(keyPath);????????char[]?pem?=?keyPass.toCharArray();????????try?{????????????synchronized?(lock)?{????????????????if?(store?==?null)?{????????????????????synchronized?(lock)?{
????????????????????????store?=?KeyStore.getInstance("PKCS12");
????????????????????????store.load(resource.getInputStream(),?pem);
????????????????????}
????????????????}
????????????}
????????????X509Certificate?certificate?=?(X509Certificate)?store.getCertificate(keyAlias);
????????????certificate.checkValidity();????????????//?證書(shū)的序列號(hào)?也有用
????????????String?serialNumber?=?certificate.getSerialNumber().toString(16).toUpperCase();????????????//?證書(shū)的?公鑰
????????????PublicKey?publicKey?=?certificate.getPublicKey();????????????//?證書(shū)的私鑰
????????????PrivateKey?storeKey?=?(PrivateKey)?store.getKey(keyAlias,?pem);????
????????????return?new?KeyPair(publicKey,?storeKey);

????????}?catch?(Exception?e)?{????????????throw?new?IllegalStateException("Cannot?load?keys?from?store:?"?+?resource,?e);
????????}
????}
}復(fù)制代碼

眼熟的可以看出是胖哥Spring Security教程中JWT用的公私鑰提取方法的修改版本,你可以對(duì)比下不同之處。

這個(gè)方法中有三個(gè)參數(shù),這里必須要說(shuō)明一下:

  • keyPath ?Detaillierte Erl?uterung der WeChat-Zahlung in Java (1): API V3-Versionssignaturapiclient_cert.p12classpath路徑,一般我們會(huì)放在resources路徑下,當(dāng)然你可以修改獲取證書(shū)輸入流的方式。
  • keyAlias 證書(shū)的別名,這個(gè)微信的文檔是沒(méi)有的,胖哥通過(guò)加載證書(shū)時(shí)進(jìn)行DEBUG獲取到該值固定為Tenpay Certificate 。
  • keyPass ?證書(shū)密碼,這個(gè)默認(rèn)就是商戶(hù)號(hào),在其它配置中也需要使用就是mchid,就是你用超級(jí)管理員登錄微信商戶(hù)平臺(tái)在個(gè)人資料中的一串?dāng)?shù)字。

3. V3簽名

微信支付V3版本的簽名是我們?cè)谡{(diào)用具體的微信支付的API時(shí)在HTTP請(qǐng)求頭中攜帶特定的編碼串供微信支付服務(wù)器進(jìn)行驗(yàn)證請(qǐng)求來(lái)源,確保請(qǐng)求是真實(shí)可信的。

簽名格式

簽名串的具體格式,一共五行一行也不能少,每一行以換行符n結(jié)束。

HTTP請(qǐng)求方法\n
URL\n
請(qǐng)求時(shí)間戳\n
請(qǐng)求隨機(jī)串\n
請(qǐng)求報(bào)文主體\n復(fù)制代碼
  • HTTP請(qǐng)求方法 ?你調(diào)用的微信支付API所要求的請(qǐng)求方法,比如APP支付為POST。
  • URL ?比如APP支付文檔中為https://api.mch.weixin.qq.com/v3/pay/transactions/app,除去域名部分得到參與簽名的URL。如果請(qǐng)求中有查詢(xún)參數(shù),URL末尾應(yīng)附加有'?'和對(duì)應(yīng)的查詢(xún)字符串。這里為/v3/pay/transactions/app。
  • 請(qǐng)求時(shí)間戳 服務(wù)器系統(tǒng)時(shí)間戳,保證服務(wù)器時(shí)間正確并利用System.currentTimeMillis() / 1000獲取即可。
  • 請(qǐng)求隨機(jī)串 ?找個(gè)工具類(lèi)生成類(lèi)似593BEC0C930BF1AFEB40B4A08C8FB242的字符串就行了。
  • 請(qǐng)求報(bào)文主體 ?如果是GET請(qǐng)求直接為空字符"" ;當(dāng)請(qǐng)求方法為POSTPUT時(shí),請(qǐng)使用真實(shí)發(fā)送JSON報(bào)文。圖片上傳API,請(qǐng)使用meta對(duì)應(yīng)的JSON報(bào)文。

生成簽名

然后我們使用商戶(hù)私鑰對(duì)按照上面格式的待簽名串進(jìn)行SHA256 with RSA簽名,并對(duì)簽名結(jié)果進(jìn)行Base64編碼得到簽名值。對(duì)應(yīng)的核心Java代碼為:

/**
?*?V3??SHA256withRSA?簽名.
?*
?*?@param?method???????請(qǐng)求方法??GET??POST?PUT?DELETE?等
?*?@param?canonicalUrl?例如??https://api.mch.weixin.qq.com/v3/pay/transactions/app?version=1?——>?/v3/pay/transactions/app?version=1
?*?@param?timestamp????當(dāng)前時(shí)間戳???因?yàn)橐渲玫絋OKEN?中所以?簽名中的要跟TOKEN?保持一致
?*?@param?nonceStr?????隨機(jī)字符串??要和TOKEN中的保持一致
?*?@param?body?????????請(qǐng)求體?GET?為?""?POST?為JSON
?*?@param?keyPair??????商戶(hù)API?證書(shū)解析的密鑰對(duì)??實(shí)際使用的是其中的私鑰
?*?@return?the?string
?*/@SneakyThrowsString?sign(String?method,?String?canonicalUrl,?long?timestamp,?String?nonceStr,?String?body,?KeyPair?keyPair)??{
????String?signatureStr?=?Stream.of(method,?canonicalUrl,?String.valueOf(timestamp),?nonceStr,?body)
????????????.collect(Collectors.joining("\n",?"",?"\n"));
????Signature?sign?=?Signature.getInstance("SHA256withRSA");
????sign.initSign(keyPair.getPrivate());
????sign.update(signatureStr.getBytes(StandardCharsets.UTF_8));????return?Base64Utils.encodeToString(sign.sign());
}復(fù)制代碼

4. 使用簽名

簽名生成后會(huì)同一些參數(shù)組成一個(gè)Token放置到對(duì)應(yīng)HTTP請(qǐng)求的Authorization請(qǐng)求頭中,格式為:

Authorization:?WECHATPAY2-SHA256-RSA2048?{Token}復(fù)制代碼

Token由以下五部分組成:

  • 發(fā)起請(qǐng)求的商戶(hù)(包括直連商戶(hù)、服務(wù)商或渠道商)的商戶(hù)號(hào)mchid

  • 商戶(hù)Detaillierte Erl?uterung der WeChat-Zahlung in Java (1): API V3-Versionssignatur序列號(hào)serial_no,用于聲明所使用的證書(shū)

  • 請(qǐng)求隨機(jī)串nonce_str

  • 時(shí)間戳timestamp

  • 簽名值signature

Token生成的核心代碼:

/**
?*?生成Token.
?*
?*?@param?mchId?商戶(hù)號(hào)
?*?@param?nonceStr???隨機(jī)字符串?
?*?@param?timestamp??時(shí)間戳
?*?@param?serialNo???證書(shū)序列號(hào)
?*?@param?signature??簽名
?*?@return?the?string
?*/String?token(String?mchId,?String?nonceStr,?long?timestamp,?String?serialNo,?String?signature)?{????final?String?TOKEN_PATTERN?=?"mchid=\"%s\",nonce_str=\"%s\",timestamp=\"%d\",serial_no=\"%s\",signature=\"%s\"";????//?生成token
????return?String.format(TOKEN_PATTERN,
????????????wechatPayProperties.getMchId(),
????????????nonceStr,?timestamp,?serialNo,?signature);
}復(fù)制代碼

將生成的Token

Das WeChat-Zahlungs-API-Zertifikat verwendet den PKCS12-Algorithmus. Wir verwenden KeyStore, um den Tr?ger des ?ffentlichen und privaten Schlüsselpaars KeyPair zu erhalten Zertifikatsseriennummer serialNumber, ich habe die Tool-Klasse gekapselt:

rrreee

Wenn es Ihnen bekannt vorkommt, k?nnen Sie sehen, dass es sich um eine modifizierte Version der von JWT im Frühjahr verwendeten Extraktionsmethode für ?ffentliche und private Schlüssel handelt Sicherheits-Tutorial. Sie k?nnen die Unterschiede vergleichen.

Es gibt drei Parameter in dieser Methode, die hier erkl?rt werden müssen:

3. V3-Signatur

Die Signatur der WeChat Pay V3-Version ist, wenn wir die spezifische WeChat Pay API A aufrufen Im HTTP-Anforderungsheader wird eine bestimmte Codierungszeichenfolge für den WeChat-Zahlungsserver übertragen, um die Quelle der Anforderung zu überprüfen und sicherzustellen, dass die Anforderung authentisch und vertrauenswürdig ist.

SignaturformatDas spezifische Format der Signaturzeichenfolge, insgesamt nicht weniger als fünf Zeilen, jede Zeile endet mit einem Zeilenumbruchzeichen n.
rrreee
  • HTTP-Anfragemethode Die von der von Ihnen aufgerufenen WeChat-Zahlungs-API ben?tigte Anfragemethode, beispielsweise APP-Zahlung, ist POST.
  • URL Das APP-Zahlungsdokument lautet beispielsweise https://api.mch.weixin.qq.com/v3/pay/transactions/app, Entfernen Sie den Teil des Dom?nennamens, um die URL zu erhalten, die an der Signatur beteiligt ist. Wenn die Anfrage Abfrageparameter enth?lt, sollten ??“ und die entsprechende Abfragezeichenfolge an das Ende der URL angeh?ngt werden. Dies ist /v3/pay/transactions/app.
  • Zeitstempel anfordern Zeitstempel des Serversystems. Stellen Sie sicher, dass die Serverzeit korrekt ist, und verwenden Sie System.currentTimeMillis() / 1000, um ihn abzurufen.
  • Anfordern einer zuf?lligen Zeichenfolge Suchen Sie einfach eine Toolklasse, um eine Zeichenfolge ?hnlich wie 593BEC0C930BF1AFEB40B4A08C8FB242 zu generieren.
  • Nachrichtentext anfordern Wenn es sich um eine GET-Anfrage handelt, ist sie direkt Nullzeichen"" code>; Wenn die Anforderungsmethode POST oder PUT ist, verwenden Sie bitte die JSON-Nachricht, die wirklich gesendet wird. Für die Bild-Upload-API verwenden Sie bitte die JSON-Nachricht, die meta entspricht.

Signatur generieren

Dann verwenden wir den privaten Schlüssel des H?ndlers, um SHA256 mit RSA-Signatur auf der zu signierenden Zeichenfolge durchzuführen im oben genannten Format und führen Sie eine Base64-Codierung für das Signaturergebnis durch, um den Signaturwert zu erhalten. Der entsprechende Kern-Java-Code lautet: ??rrreee

4 Verwenden Sie die Signatur ????Nachdem die Signatur generiert wurde, wird sie mit einigen Parametern kombiniert, um ein Token zu bilden. code> und fügen Sie es in den <code> ein, der dem HTTP-Anforderungsheader code>Authorization entspricht. Das Format lautet: ??rrreee??Token besteht aus den folgenden fünf Teilen: ??
  • ??Der H?ndler, der die Anfrage initiiert hat (einschlie?lich direkt verbundener H?ndler, Dienstleistungsh?ndler oder Kanalanbieter) H?ndlernummer mchid??
  • ??Seriennummer des H?ndler-API-Zertifikats serial_no, wird verwendet, um das verwendete Zertifikat zu deklarieren??
  • ??Zuf?llige Zeichenfolge anfordern nonce_str??
  • ??Zeitstempel timestamp code>??
  • ??Signaturwert signatur ??
  • ??TokenDer generierte Kerncode: ??rrreee??Setzen Sie den generierten Code ein Token in den Anforderungsheader gem?? dem oben genannten Format einfügen. Die Verwendung von Signaturen kann abgeschlossen werden. ????5. Zusammenfassung????In diesem Artikel haben wir eine vollst?ndige Analyse der schwierigen Signaturen und der Verwendung von Signaturen in der WeChat Pay V3-Version durchgeführt und auch die Analyse von API-Zertifikaten erl?utert, die Ihnen bei der L?sung einiger Probleme helfen kann spezifische Probleme bei der Zahlungsentwicklung. ??????Verwandte kostenlose Lernempfehlungen: ??Java-Grundlagen-Tutorial??????Einführung in den verwandten Artikel: ??So implementieren Sie die Miniprogramm-Zahlungsfunktion????????

    Das obige ist der detaillierte Inhalt vonDetaillierte Erl?uterung der WeChat-Zahlung in Java (1): API V3-Versionssignatur. 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

    Hei?e KI -Werkzeuge

    Undress AI Tool

    Undress AI Tool

    Ausziehbilder kostenlos

    Undresser.AI Undress

    Undresser.AI Undress

    KI-gestützte App zum Erstellen realistischer Aktfotos

    AI Clothes Remover

    AI Clothes Remover

    Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

    Clothoff.io

    Clothoff.io

    KI-Kleiderentferner

    Video Face Swap

    Video Face Swap

    Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

    Hei?e Werkzeuge

    Notepad++7.3.1

    Notepad++7.3.1

    Einfach zu bedienender und kostenloser Code-Editor

    SublimeText3 chinesische Version

    SublimeText3 chinesische Version

    Chinesische Version, sehr einfach zu bedienen

    Senden Sie Studio 13.0.1

    Senden Sie Studio 13.0.1

    Leistungsstarke integrierte PHP-Entwicklungsumgebung

    Dreamweaver CS6

    Dreamweaver CS6

    Visuelle Webentwicklungstools

    SublimeText3 Mac-Version

    SublimeText3 Mac-Version

    Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

    Hei?e Themen

    PHP-Tutorial
    1502
    276
    Wie gehe ich mit Transaktionen in Java mit JDBC um? Wie gehe ich mit Transaktionen in Java mit JDBC um? Aug 02, 2025 pm 12:29 PM

    Um JDBC -Transaktionen korrekt zu verarbeiten, müssen Sie zun?chst den automatischen Komiti -Modus ausschalten und dann mehrere Vorg?nge ausführen und schlie?lich entsprechend den Ergebnissen festlegen oder rollen. 1. Nennen Sie Conn.SetAutoCommit (False), um die Transaktion zu starten. 2. Führen Sie mehrere SQL -Operationen aus, z. B. einfügen und aktualisieren. 3. Rufen Sie Conn.Commit () an, wenn alle Vorg?nge erfolgreich sind, und rufen Sie Conn.Rollback () auf, wenn eine Ausnahme auftritt, um die Datenkonsistenz zu gew?hrleisten. Gleichzeitig sollten Try-with-Ressourcen verwendet werden, um Ressourcen zu verwalten, Ausnahmen ordnungsgem?? zu behandeln und Verbindungen zu schlie?en, um Verbindungsleckage zu vermeiden. Darüber hinaus wird empfohlen, Verbindungspools zu verwenden und Save -Punkte zu setzen, um teilweise Rollback zu erreichen und Transaktionen so kurz wie m?glich zu halten, um die Leistung zu verbessern.

    JD Stablecoin Offizielle Website, auf der JD Stablecoin gekauft werden kann JD Stablecoin Offizielle Website, auf der JD Stablecoin gekauft werden kann Aug 01, 2025 pm 06:51 PM

    Derzeit hat JD.com keine Stablecoins ausgestellt, und Benutzer k?nnen die folgenden Plattformen ausw?hlen, um Mainstream Stablecoins zu kaufen: 1. Binance ist die Plattform mit dem gr??ten Transaktionsvolumen der Welt, unterstützt mehrere Fiat -W?hrungszahlungen und verfügt über eine starke Liquidit?t. 2. OKX hat leistungsstarke Funktionen und bietet 7x24-Stunden-Kundendienst und mehrere Zahlungsmethoden. 3.. Huobi hat einen hohen Ansehen in der chinesischen Gemeinschaft und ein vollst?ndiges Risikokontrollsystem. V. 5. Auf Kucoin sind viele Arten von W?hrungen aufgeführt, was für die Entdeckung früherer Projekte f?rderlich ist. 6. Bitget ist durch Auftragstransaktionen mit bequemen P2P -Transaktionen charakterisiert und eignet sich für Sozialhandelsbegeisterte. Die oben genannten Plattformen bieten alle sichere und zuverl?ssige Stablecoin -Kaufdienste.

    Wie arbeite man mit Kalender in Java? Wie arbeite man mit Kalender in Java? Aug 02, 2025 am 02:38 AM

    Verwenden Sie Klassen im Java.Time -Paket, um das alte Datum und die Kalenderklassen zu ersetzen. 2. Erhalten Sie das aktuelle Datum und die aktuelle Uhrzeit durch LocalDate, LocalDatetime und Local Time; 3. Erstellen Sie ein bestimmtes Datum und eine bestimmte Uhrzeit mit der von () Methode; 4.. Verwenden Sie die Plus/Minus -Methode, um die Zeit nicht zu erh?hen und zu verkürzen. 5. Verwenden Sie ZonedDatetime und zoneId, um die Zeitzone zu verarbeiten. 6. Format und analysieren Sie Datumszeichenfolgen über DateTimeFormatter; 7. Verwenden Sie sofortige, um bei Bedarf mit den alten Datumstypen kompatibel zu sein. Die Verarbeitung der Datum in der modernen Java sollte der Verwendung von Java.Timeapi vorrangig machen, was klare, unver?nderliche und linear ist

    Vergleich von Java Frameworks: Spring Boot vs Quarkus gegen Micronaut Vergleich von Java Frameworks: Spring Boot vs Quarkus gegen Micronaut Aug 04, 2025 pm 12:48 PM

    Pre-Formancetartuptimemoryusage, QuarkusandmicronautleadduToCompile-Time-foringandgraalvSupport, WithQuarkusofttenperformLightBetterin serverloser Szenarien.2. Thyvelopecosystem,

    Wie funktioniert die Müllsammlung in Java? Wie funktioniert die Müllsammlung in Java? Aug 02, 2025 pm 01:55 PM

    Die Müllsammlung von Java (GC) ist ein Mechanismus, der automatisch den Speicher verwaltet, der das Risiko eines Speicherlecks verringert, indem unerreichbare Objekte zurückgeführt werden. 1.GC beurteilt die Zug?nglichkeit des Objekts aus dem Stammobjekt (z. B. Stapelvariablen, aktive Threads, statische Felder usw.) und nicht erreichbare Objekte als Müll markiert. 2. Basierend auf dem markierten Algorithmus markieren Sie alle erreichbaren Objekte und l?schen Sie nicht markierte Objekte. 3.. Verfolgen Sie eine Generationskollektionsstrategie: Die neue Generation (Eden, S0, S1) führt h?ufig MollGC aus; Die ?lteren Menschen erzielen weniger, dauert jedoch l?nger, um MajorGC durchzuführen. MetaPace speichert Klassenmetadaten. 4. JVM bietet eine Vielzahl von GC -Ger?ten: SerialGC ist für kleine Anwendungen geeignet; ParallelgC verbessert den Durchsatz; CMS reduziert sich

    Verwenden von HTML `Input` -Typen für Benutzerdaten Verwenden von HTML `Input` -Typen für Benutzerdaten Aug 03, 2025 am 11:07 AM

    Durch die Auswahl des richtigen HTMlinput -Typs kann die Datengenauigkeit verbessert, die Benutzererfahrung verbessert und die Benutzerfreundlichkeit verbessert werden. 1. W?hlen Sie die entsprechenden Eingabetypen gem?? dem Datentyp aus, z. B. Text, E -Mail, Tel, Nummer und Datum, die automatisch überprüft und an die Tastatur anpassen k?nnen. 2. Verwenden Sie HTML5, um neue Typen wie URL, Farbe, Reichweite und Suche hinzuzufügen, die eine intuitivere Interaktionsmethode bieten k?nnen. 3.. Verwenden Sie Platzhalter und erforderliche Attribute, um die Effizienz und Genauigkeit der Formulierung zu verbessern. Es sollte jedoch beachtet werden, dass der Platzhalter das Etikett nicht ersetzen kann.

    Vergleich von Java -Build -Werkzeugen: Maven vs. Gradle Vergleich von Java -Build -Werkzeugen: Maven vs. Gradle Aug 03, 2025 pm 01:36 PM

    GradleStheBetterChoiceFormostnewProjectsDuetoitSuperiorFlexibilit?t, Leistung und ModerntoolingSupport.1.GRADLE'SGROOVY/KOTLINDSLISMORECONCISEANDEIPRESSIVETHANMANMANBOSEXML.2.GRAGRECONCISEANDEPRPRESSIVETHANMAVENSVOSEXML.2.

    Gehen Sie mit einer Beispielverschiebung erkl?rt Gehen Sie mit einer Beispielverschiebung erkl?rt Aug 02, 2025 am 06:26 AM

    Auf Defer wird verwendet, um bestimmte Vorg?nge auszuführen, bevor die Funktion zurückgibt, z. B. die Reinigungsressourcen. Die Parameter werden sofort bewertet, wenn sie aufgeschoben werden, und die Funktionen werden in der Reihenfolge von Last-In-First-Out (LIFO) ausgeführt. 1. Mehrere Defers werden in umgekehrter Reihenfolge der Erkl?rungen ausgeführt. 2. h?ufig für die sichere Reinigung wie das Schlie?en von Dateien verwendet; 3. Der benannte Rückgabewert kann ge?ndert werden; V. 5. Vermeiden Sie den Missbrauch von Verschiebungen in Schleifen, um Ressourcenleckage zu verhindern. Die korrekte Verwendung kann die Sicherheit und die Lesbarkeit der Code verbessern.

    See all articles