目次
質問
Redis への接続
インターフェイス使用法の注釈
インターフェイス冪等性ソリューション
ホームページ テクノロジー周辺機器 AI 現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。

現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。

Jun 05, 2023 pm 01:33 PM
インターフェース ai 冪等性

みなさん、こんにちは。私はすごいです。

インターフェイスが 1 回呼び出されるか複数回呼び出されるかに関係なく、インターフェイスの冪等性により、同じリソースに対する操作は同じ結果のみを生成します。同じインターフェイス リクエストを複数回繰り返し呼び出しても、単一のリクエストと同じ結果が得られ、不整合や副作用が発生しないようにする必要があります。

今日は、人工知能を使用してカスタム アノテーションを作成し、インターフェイスが 30 秒以内に複数回リクエストされるのを防ぎ、キャッシュとして Redis を使用しました。

質問

これ以上面倒なことはせずに、次のように質問してください。

現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。

数分待った後。 。 。

1. インターフェイスの保護期間を含むカスタム アノテーションを作成し、繰り返しの送信に対する保護を有効にします。

現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。

2. 次に、インターセプターを作成します。

現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。

ここでは、インターセプターを作成します。インターセプターのコア コードを投稿します:

@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {if (handler instanceof HandlerMethod) {HandlerMethod handlerMethod = (HandlerMethod) handler;RepeatSubmit annotation = handlerMethod.getMethodAnnotation(RepeatSubmit.class);if (annotation != null && annotation.enable()) {String key = buildKey(request);if (StringUtils.hasText(redisTemplate.opsForValue().get(key))) {response.getWriter().write("repeat request, please try again later!");return false;} else {redisTemplate.opsForValue().set(key, Arrays.toString(request.getInputStream().readAllBytes()), annotation.timeout(), TimeUnit.SECONDS);}}}return true;} //创建redis 缓存keyprivate String buildKey(HttpServletRequest request) throws IOException, NoSuchAlgorithmException {String key = useRequestMD5 ? hashRequest(request) : request.getRequestURI();return "repeat-submit:" + key;} //对请求做hash运算private String hashRequest(HttpServletRequest request) throws IOException, NoSuchAlgorithmException {byte[] hashBytes = MessageDigest.getInstance("MD5").digest(request.getInputStream().readAllBytes());StringBuilder sb = new StringBuilder();for (byte b : hashBytes) {sb.append(String.format("%02x", b));}return sb.toString();}
ログイン後にコピー

3. インターセプターを登録します

現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。

説明と使用法は最後に記載されています。

現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。


上記は最も重要なコードです。

Redis への接続

次に、Redis に接続します。最も合理化された構成バージョン

spring:data:redis:host: 127.0.0.1 port: 6379
ログイン後にコピー

インターフェイス使用法の注釈

@RestControllerpublic class RepeatTestController {@RepeatSubmit@GetMapping("/hello/mono1")public Mono<string> mono(){return Mono.just("Hello Mono -Java North");}@RepeatSubmit@PostMapping ("/hello/mono1")public Mono<string> mono1(@RequestBody User user){return Mono.just("Hello Mono -Java North-"+user.getName());}}</string></string>
ログイン後にコピー

Redis をローカルで起動し、次にテスト用にローカル SpringBoot プロジェクトを起動します。

現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。

ローカル インターフェイス テスト: 30 秒以内に繰り返されるリクエストは直接インターセプトする必要があります

現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。

Redis にキャッシュされた KEY は次のとおりです。

現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。

関連するコードは記事の最後にあります。必要な場合は無料で使用できます。

インターフェイス冪等性ソリューション

インターフェイス冪等性ソリューションについて質問しましょう。

現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。

インターフェイス冪等性ソリューションについてどう思いますか?この答えは?

関連コード リンクへようこそ:

https://www.php.cn/link/94c0915ab3bcbc61c1c61624dd6d7cd5

以上が現在、私たちは AI を使用して、注釈の繰り返しの送信を防ぐインターフェイスを作成しています。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

抽象クラスとPHPのインターフェイスの違いは何ですか? 抽象クラスとPHPのインターフェイスの違いは何ですか? Apr 08, 2025 am 12:08 AM

抽象クラスとインターフェイスの主な違いは、抽象クラスにメソッドの実装を含めることができるのに対し、インターフェイスはメソッドの署名のみを定義できることです。 1。要約クラスは、デフォルトの実装と共有コードの提供に適した要約および具体的なメソッドを含めることができる要約キーワードを使用して定義されます。 2。インターフェイスは、行動規範と複数継承を定義するのに適したメソッドシグネチャのみを含むインターフェイスキーワードを使用して定義されます。

vue.jsのストリングをオブジェクトに変換するためにどのような方法が使用されますか? vue.jsのストリングをオブジェクトに変換するためにどのような方法が使用されますか? Apr 07, 2025 pm 09:39 PM

vue.jsのオブジェクトに文字列を変換する場合、標準のjson文字列にはjson.parse()が推奨されます。非標準のJSON文字列の場合、文字列は正規表現を使用して処理し、フォーマットまたはデコードされたURLエンコードに従ってメソッドを削減できます。文字列形式に従って適切な方法を選択し、バグを避けるためにセキュリティとエンコードの問題に注意してください。

インストール後にMySQLの使用方法 インストール後にMySQLの使用方法 Apr 08, 2025 am 11:48 AM

この記事では、MySQLデータベースの操作を紹介します。まず、MySQLWorkBenchやコマンドラインクライアントなど、MySQLクライアントをインストールする必要があります。 1. mysql-uroot-pコマンドを使用してサーバーに接続し、ルートアカウントパスワードでログインします。 2。CreatedAtaBaseを使用してデータベースを作成し、データベースを選択します。 3. createTableを使用してテーブルを作成し、フィールドとデータ型を定義します。 4. INSERTINTOを使用してデータを挿入し、データをクエリし、更新することでデータを更新し、削除してデータを削除します。これらの手順を習得することによってのみ、一般的な問題に対処することを学び、データベースのパフォーマンスを最適化することでMySQLを効率的に使用できます。

MySQLを解決する方法は開始できません MySQLを解決する方法は開始できません Apr 08, 2025 pm 02:21 PM

MySQLの起動が失敗する理由はたくさんあり、エラーログをチェックすることで診断できます。一般的な原因には、ポートの競合(ポート占有率をチェックして構成の変更)、許可の問題(ユーザー許可を実行するサービスを確認)、構成ファイルエラー(パラメーター設定のチェック)、データディレクトリの破損(テーブルスペースの復元)、INNODBテーブルスペースの問題(IBDATA1ファイルのチェック)、プラグインロード障害(エラーログのチェック)が含まれます。問題を解決するときは、エラーログに基づいてそれらを分析し、問題の根本原因を見つけ、問題を防ぐために定期的にデータをバックアップする習慣を開発する必要があります。

Vue Axiosのタイムアウトを設定する方法 Vue Axiosのタイムアウトを設定する方法 Apr 07, 2025 pm 10:03 PM

Vue axiosのタイムアウトを設定するために、Axiosインスタンスを作成してタイムアウトオプションを指定できます。グローバル設定:Vue.Prototype。$ axios = axios.create({Timeout:5000});単一のリクエストで:this。$ axios.get( '/api/users'、{timeout:10000})。

Laravelの地理空間:インタラクティブマップと大量のデータの最適化 Laravelの地理空間:インタラクティブマップと大量のデータの最適化 Apr 08, 2025 pm 12:24 PM

700万のレコードを効率的に処理し、地理空間技術を使用したインタラクティブマップを作成します。この記事では、LaravelとMySQLを使用して700万を超えるレコードを効率的に処理し、それらをインタラクティブなマップの視覚化に変換する方法について説明します。最初の課題プロジェクトの要件:MySQLデータベースに700万のレコードを使用して貴重な洞察を抽出します。多くの人は最初に言語をプログラミングすることを検討しますが、データベース自体を無視します。ニーズを満たすことができますか?データ移行または構造調​​整は必要ですか? MySQLはこのような大きなデータ負荷に耐えることができますか?予備分析:キーフィルターとプロパティを特定する必要があります。分析後、ソリューションに関連している属性はわずかであることがわかりました。フィルターの実現可能性を確認し、検索を最適化するためにいくつかの制限を設定しました。都市に基づくマップ検索

vue.js文字列タイプの配列をオブジェクトの配列に変換する方法は? vue.js文字列タイプの配列をオブジェクトの配列に変換する方法は? Apr 07, 2025 pm 09:36 PM

概要:Vue.js文字列配列をオブジェクト配列に変換するための次の方法があります。基本方法:定期的なフォーマットデータに合わせてマップ関数を使用します。高度なゲームプレイ:正規表現を使用すると、複雑な形式を処理できますが、慎重に記述して考慮する必要があります。パフォーマンスの最適化:大量のデータを考慮すると、非同期操作または効率的なデータ処理ライブラリを使用できます。ベストプラクティス:コードスタイルをクリアし、意味のある変数名とコメントを使用して、コードを簡潔に保ちます。

MySQLインストール後にデータベースのパフォーマンスを最適化する方法 MySQLインストール後にデータベースのパフォーマンスを最適化する方法 Apr 08, 2025 am 11:36 AM

MySQLパフォーマンスの最適化は、インストール構成、インデックス作成、クエリの最適化、監視、チューニングの3つの側面から開始する必要があります。 1。インストール後、INNODB_BUFFER_POOL_SIZEパラメーターやclose query_cache_sizeなど、サーバーの構成に従ってmy.cnfファイルを調整する必要があります。 2。過度のインデックスを回避するための適切なインデックスを作成し、説明コマンドを使用して実行計画を分析するなど、クエリステートメントを最適化します。 3. MySQL独自の監視ツール(ShowProcessList、ShowStatus)を使用して、データベースの健康を監視し、定期的にデータベースをバックアップして整理します。これらの手順を継続的に最適化することによってのみ、MySQLデータベースのパフォーマンスを改善できます。

See all articles