Kata pengantar
Baru -baru ini, kami telah menambahkan strategi penurunan peringkat ke komponen sekering (Hystrix tampaknya tidak memiliki konfigurasi ini), dan kami memberikan strategi berikut:
1. Kebijakan default
2. Nilai Konstan Pengembalian
3. Lemparkan pengecualian tertentu
4. Jalankan skrip yang asyik
Tentu saja, konfigurasi ini dapat dikonfigurasi pada platform dan segera berlaku.
Implementasi nilai konstan yang kembali saat ini adalah sebagai berikut:
Hari ini saya menemukan bahwa jika objek yang sama dikembalikan setiap kali, dan logika ini adalah kotak hitam untuk bisnis (bisnis tidak tahu bahwa objek yang diperoleh setiap kali sama), jika objek dioperasikan, itu pasti akan memengaruhi permintaan lain. Untuk menghindari kesalahan, kita perlu mengembalikan objek baru setiap saat. Reaksi pertama adalah apakah layak melalui klon (karena setiap serialisasi JS juga akan kehilangan kinerja), tetapi metode klon yang datang dengan JDK hanya klon yang dangkal. Jika objek berisi objek kompleks lain, objek yang berasal dari klon masih memiliki risiko dimodifikasi.
Pendahuluan Detail:
Anda dapat melihat contoh berikut:
class master {string name; master publik (nama string) {this.name = name; }}Inisialisasi kelas master
Class Dog mengimplementasikan nama yang dapat dikloning {string; usia int; Master Master; anjing publik (nama string, usia int, master master) {this.name = name; this.age = usia; this.master = master; } @Override Objek Protected Clone () melempar clonenotsupportedException {return super.clone (); } @Override public string toString () {return "{name:" + name + ", usia:" + usia + ", master:" + master.name + "}"; }}Inisialisasi seekor anjing
public static void main (string [] args) melempar pengecualian {master master = new master ("zj0"); Dog dog1 = anjing baru ("wangcai", 1, master); Dog dog2 = (dog) dog1.clone (); dog1.name = "billy"; dog1.master.name = "zj1"; System.out.println (dog2);}Akhirnya jalankan, hasilnya adalah sebagai berikut:
{name: 王彩, usia: 1, master: zj1}Dog1 adalah anjing primitif, Dog2 dikloning, tetapi ketika saya memodifikasi nama master Dog1, master yang dikloning juga berubah, yang jelas tidak berhasil.
Meskipun saya selalu tahu bahwa metode klon objek adalah klon yang dangkal, dan saya belum terus menjelajahinya. Hari ini saya menemukannya dan melihat implementasi JVM. Tampaknya sangat sederhana. Dalam file JVM.CPP, cari "JVM_CLONE"
Saya belum pernah menggunakan metode klon sebelumnya. Melalui kode sumber, saya menemukan bahwa ketika berjalan, saya memeriksa apakah kelas mengimplementasikan antarmuka yang dapat dikloning. Saya tidak memeriksanya selama kompilasi. Apa yang saya pikirkan?
Menurut ukuran objek atau data, buka sepotong memori dengan ukuran yang sama dari tumpukan, dan kemudian salin data objek asli ke alamat memori baru. Untuk tipe dasar, nilai asli dapat disalin, tetapi untuk objek internal, ia hanya menyimpan alamat, dan juga merupakan salinan alamat selama menyalin, dan akhirnya menunjuk ke objek yang sama, yang menyebabkan masalah di atas.
Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.