머리말
최근에 우리는 퓨즈 구성 요소에 다운 그레이드 전략을 추가했으며 (Hystrix는이 구성이없는 것 같습니다) 다음과 같은 전략을 제공합니다.
1. 기본 정책
2. 상수 값을 반환합니다
3. 지정된 예외를 던지십시오
4. 그루비 스크립트를 실행하십시오
물론 이러한 구성은 플랫폼에서 구성되어 즉시 적용 할 수 있습니다.
리턴 상수 값의 현재 구현은 다음과 같습니다.
오늘 나는 같은 객체가 매번 반환 되고이 논리가 비즈니스를위한 블랙 박스라면 (비즈니스는 매번 얻은 객체가 동일하다는 것을 알지 못합니다), 객체가 작동되면 다른 요청에 반드시 영향을 미칩니다. 책임을지지 않으려면 매번 새로운 객체를 반환해야합니다. 첫 번째 반응은 클론을 통해 실현 가능한지 여부입니다 (각 JS 직렬화는 성능을 잃어 버리기 때문에). 그러나 JDK와 함께 제공되는 클론 방법은 얕은 클론 일뿐입니다. 객체에 다른 복잡한 객체가 포함 된 경우 클론에서 파생 된 물체는 여전히 수정 될 위험이 있습니다.
자세한 소개 :
다음 예를 볼 수 있습니다.
클래스 마스터 {문자열 이름; 공개 마스터 (문자열 이름) {this.name = 이름; }}마스터 클래스를 초기화하십시오
클래스 개는 클로닝 가능한 {문자열 이름; int 연령; 마스터 마스터; 공개 개 (문자열 이름, int age, master master) {this.name = name; this.age = age; 이. 마스터 = 마스터; } @Override Protected Object Clone ()는 ClonenOntSupportedException {return super.clone (); } @override public String toString () {return "{name :" + name + ", age :" + age + ", master :" + master.name + "}"; }}개를 초기화하십시오
public static void main (string [] args)은 예외 {Master Master = New Master ( "Zj0"); Dog Dog1 = New Dog ( "Wangcai", 1, Master); Dog Dog2 = (Dog) dog1.Clone (); dog1.name = "Billy"; dog1.master.name = "zj1"; System.out.println (dog2);}마지막으로 실행하면 결과는 다음과 같습니다.
{이름 : 王彩, 나이 : 1, 마스터 : ZJ1}Dog1은 원시 개이며 Dog2는 복제되지만 Dog1의 마스터 이름을 수정하면 복제 된 마스터도 변경되었으며 분명히 작동하지 않습니다.
나는 항상 복제 된 물체 방법이 얕은 클론이라는 것을 알고 있었지만 계속 탐색하지는 않았다. 오늘 나는 그것을 발견했고 JVM의 구현을 살펴 보았습니다. 매우 간단 해 보입니다. JVM.CPP 파일에서 "JVM_CLONE"을 검색하십시오.
나는 전에 복제 방법을 사용한 적이 없다. 소스 코드를 통해 실행할 때 클래스가 복제 가능한 인터페이스를 구현하는지 여부를 확인했습니다. 편집 중에 확인하지 않습니다. 내가 어떻게 생각하세요?
객체 또는 데이터의 크기에 따라 힙에서 동일한 크기의 메모리를 열고 원래 객체의 데이터를 새 메모리 주소에 복사하십시오. 기본 유형의 경우 원래 값을 복사 할 수 있지만 내부 객체의 경우 주소 만 저장되며 복사 중 주소 사본이기도하며 궁극적으로 동일한 개체를 가리므로 위의 문제를 일으 킵니다.
요약
위는이 기사의 전체 내용입니다. 이 기사의 내용에 모든 사람의 연구 나 작업에 대한 특정 참조 가치가 있기를 바랍니다. 궁금한 점이 있으면 의사 소통을 위해 메시지를 남길 수 있습니다. Wulin.com을 지원 해주셔서 감사합니다.