


Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.
Helo, semua, saya hebat.
Tidak kira berapa kali antara muka dipanggil sekali atau beberapa kali, penyahdayaan antara muka memastikan bahawa operasi pada sumber yang sama hanya akan menghasilkan hasil yang sama. Panggilan berulang kepada permintaan antara muka yang sama beberapa kali harus mempunyai hasil yang sama seperti permintaan tunggal dan tidak boleh menyebabkan ketidakkonsistenan atau kesan sampingan.
Hari ini kami menggunakan kecerdasan buatan untuk mencipta anotasi tersuai untuk menghalang antara muka daripada diminta beberapa kali dalam masa 30 saat dan menggunakan Redis sebagai cache.
Soalan
Jangan banyak cakap, tanya terus:
Setelah menunggu beberapa minit . . .
1 Buat anotasi tersuai, termasuk tempoh perlindungan antara muka, menghidupkan perlindungan terhadap penyerahan berulang, dsb.
2 Kemudian buat pemintas
Di sini kita Siarkan kod teras pemintas:
@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 Daftarkan pemintas
Penjelasan dan kaedah penggunaan yang diberikan pada penghujung. .
Kod di atas ialah kod yang paling kritikal.
Sambung ke Redis
Seterusnya kita sambung ke Redis. Versi konfigurasi yang paling diperkemas
spring:data:redis:host: 127.0.0.1 port: 6379
Anotasi penggunaan antara muka
@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>
Mulakan Redis secara setempat, dan kemudian mulakan projek SpringBoot tempatan untuk ujian,
Ujian antara muka tempatan: Permintaan berulang dalam masa 30 saat perlu dipintas terus
KEY yang dicache dalam Redis ialah seperti berikut:
Kod yang berkaitan ada di penghujung artikel, anda boleh menggunakannya secara percuma jika anda memerlukannya!
Penyelesaian mati pucuk antara muka
Mari kita tanya tentang penyelesaian mati pucuk antara muka,
Tentang Apa pendapat anda jawapan ini?
Pautan kod berkaitan, dialu-alukan untuk melawat:
https://www.php.cn/link/94c0915ab3bcbc61c1c61624dd6d7cd5
Atas ialah kandungan terperinci Hari ini kami menggunakan AI untuk mencipta antara muka untuk mengelakkan penyerahan anotasi berulang.. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Arus char menyimpan urutan watak dalam bahasa C dan diisytiharkan sebagai array_name char [saiz]. Unsur akses diluluskan melalui pengendali subskrip, dan elemen berakhir dengan terminator null '\ 0', yang mewakili titik akhir rentetan. Bahasa C menyediakan pelbagai fungsi manipulasi rentetan, seperti strlen (), strcpy (), strcat () dan strcmp ().

Strategi untuk mengelakkan kesilapan yang disebabkan oleh lalai dalam pernyataan suis C: Gunakan enums dan bukannya pemalar, mengehadkan nilai pernyataan kes kepada ahli yang sah dari enum. Gunakan kejatuhan dalam pernyataan kes terakhir untuk membiarkan program terus melaksanakan kod berikut. Untuk pernyataan suis tanpa kejatuhan, selalu tambahkan pernyataan lalai untuk pengendalian ralat atau memberikan tingkah laku lalai.

Tiada fungsi jumlah terbina dalam dalam bahasa C, jadi ia perlu ditulis sendiri. Jumlah boleh dicapai dengan melintasi unsur -unsur array dan terkumpul: Versi gelung: SUM dikira menggunakan panjang gelung dan panjang. Versi Pointer: Gunakan petunjuk untuk menunjuk kepada unsur-unsur array, dan penjumlahan yang cekap dicapai melalui penunjuk diri sendiri. Secara dinamik memperuntukkan versi Array: Perlawanan secara dinamik dan uruskan memori sendiri, memastikan memori yang diperuntukkan dibebaskan untuk mengelakkan kebocoran ingatan.

Dalam bahasa C, anda boleh menggunakan !! x, tetapi hanya menggunakan dua penukaran boolean, dan ia lebih ringkas dan cekap untuk menggunakan x secara langsung.

Pernyataan lalai adalah penting dalam pernyataan kes suis kerana ia menyediakan laluan pemprosesan lalai yang memastikan bahawa blok kod dilaksanakan apabila nilai pembolehubah tidak sepadan dengan sebarang pernyataan kes. Ini menghalang tingkah laku atau kesilapan yang tidak dijangka dan meningkatkan keteguhan kod.

Kata kunci statik mempengaruhi skop dan kitaran hayat pengenal: pembolehubah global: terhad kepada fail sumber, hanya dapat dilihat dalam fail semasa, mengelakkan konflik penamaan. Fungsi: Terhad kepada fail sumber, ia hanya dapat dilihat dalam fail semasa, menyembunyikan butiran pelaksanaan dan meningkatkan enkapsulasi. Pembolehubah Tempatan: Kitaran hayat dilanjutkan kepada keseluruhan program, mengekalkan nilai antara panggilan fungsi, dan boleh digunakan untuk merekodkan keadaan, tetapi memberi perhatian kepada risiko pengurusan ingatan.

Kata kunci extern digunakan dalam bahasa C untuk mengisytiharkan pembolehubah dan fungsi luaran. Ia memberitahu pengkompil bahawa pembolehubah atau fungsi ditakrifkan di tempat lain, mengarahkan pengkompil untuk mencari definisi semasa peringkat menghubungkan. Apabila Extern mengisytiharkan pembolehubah luaran, ruang memori tidak diperuntukkan, dan definisi dilakukan dalam fail lain; Apabila Extern mengisytiharkan fungsi luaran, ia tidak termasuk pelaksanaan fungsi, dan pelaksanaannya juga dilakukan dalam fail lain. Penggunaan kata kunci extern biasanya digabungkan dengan fail header, yang kondusif untuk pengurusan kod dan mengelakkan pengisytiharan berulang. Adalah sangat penting untuk memahami pengendalian Extern kompilasi pelbagai fail dan penamaan konflik, dan ia memainkan peranan penting dalam proses menghubungkan.

Non-operator logik (!) Mempunyai keutamaan di sebelah kurungan, yang bermaksud bahawa dalam ungkapan, ia akan mendahului kebanyakan pengendali lain. Memahami keutamaan bukan sahaja memerlukan hafalan, tetapi lebih penting lagi, memahami logik dan perangkap yang berpotensi di belakangnya untuk mengelakkan kesilapan yang tidak dapat dikesan dalam ekspresi kompleks. Menambah kurungan dapat menjelaskan niat ekspresi, meningkatkan kejelasan kod dan pemeliharaan, dan mencegah tingkah laku yang tidak dijangka.
