란 멱등 작업?
컴퓨팅에서 주님으로부터그에게 방정식입니다 문제지고 멱등 작업이 호출될 경우 추가 효과를 함께 두 번 이상 같은 입력 매개변수입니다. 예를 들어, 제거 작업을 할 수 있는 항목을 집합에서 옵션이므로 멱등 설정되었습니다.
수학에서, 멱등 작업이 있는 한 여기서 f (f (x)) = f (x) . 예를 들어, 함수 () 는 멱등 자산담보부증권 (abs) '' 때문에 'abs (abs (x)) = abs (x)' 모든 'x'.
이러한 조금씩 다를 수 있다는 점을 감안할 때 redefinitions) 에 의해 조정하게 x f 는 객체의 상태를 나타내는 수학적 정의 및 변형 개체 수 있는 작업입니다. 예를 들어, 포지셔닝합니다 [파이썬 '세트'] (https://docs.python.org/2/library/stdtypes.html # 세트) '와' 무시하시겠습니까 메서드입니다. 이 경우 '방법' 에서 요소를 무시하시겠습니까 절감뿐만 세트 및 높여줍니까 아무것도아니야 요소점 존재하지 않습니다. 그래서:
my_set.discard(x)
이 같은 작업을 하는 것과 똑같은 두 번:
my_set.discard(x)
my_set.discard(x)
멱등 작업은 설계 작업을 수행하는 데 자주 사용되는 네트워크 프로토콜, 여기서 보장되지 않지만, 그런 요청을 한 번 이상 여러 번 발생할 수도 있습니다. 이 작전이 시작될 경우 멱등 관심용 작업을 수행하기 위해 두 번 이상 줄 수 없다.
[멱등법칙] 에서 위키백과 문서 참조 (http://en.wikipedia.org/wiki/Idempotence) 를 참조하십시오.
그 결과가 될 수 있는 멱등 작업을 반복하는 횟수를 자의적 동일합니까 끝냈다고 경우 한 번만. 산술, 추가 zero 의 멱등 수 있다.
멱등법칙 는 이야기를 많이 " 컨텍스트에서 RESTful"; 웹 서비스. 미삭 최대 활용 방안도 추진하고 있는 것과 달리 웹 컨텐츠, 보통 HTTP 전달자로써 액세스하도록 프로그래밍합니다 설정되었습니다 soap 기반의 웹 서비스, 원격 프로시저 호출 서비스 HTTP 요청 및 응답 그냥 터널 안에 있는 스타일.
웹 애플리케이션, resources" " 미삭 구성 된다. (트위터 사용자 또는 Flickr 같은 이미지) 과 HTTP GET, POST 는 동사, 그 생성, 업데이트 및 삭제 및 삭제, 읽고, 다시 말해, 이러한 자원이.
멱등법칙 미삭 데 중요한 역할을 한다. 표현한 미삭 리소스에는 받는 경우 (예, jpeg 이미지를 확보하십시오 충스러웠으니 Flickr), 그리고 작업이 실패한 작업이 성공할 때까지 그냥 반복하십시오 다시 가져올 수 있습니다. # 39, t, 이 문제는 몇 번이나 doesn& 웹 서비스에 대한 이미지가 실정이다. 트위터 계정 정보를 사용하는 경우, 거짓하였으니 RESTful 웹서비스 업데이트하려면 배치할 수 있습니다 새로운 정보를 얻기 위해 필요한 만큼 확인 웹 서비스의. 또 한 번 동일팔레트에 ing 동일팔레트에 ing 수천 배 동일합니다. 마찬가지로 삭제하시겠습니까 ing 수천 배에 미삭 리소스에는 한번 삭제에서 동일합니다. 멱등법칙 카타시안 때문에 훨씬 쉽게 웹 서비스 that& chunghwa # 39 에 대한 복구 통신 오류.
추가 정보: [RESTful 웹 서비스] [1], 리차드슨이 및 루비 (멱등법칙 대해서는 103 104 페이지의) 와 로이 fielding& # 39 의 [박사 논문 에서 미삭] [2]. Http 1.1, rfc 2616 실시하고 있는 작가 중 한 명이었습니다 멱등법칙 이야기하고 있는 섹선에서 9.1.2.
[1]: http://www.amazon.com/restful-web-services-leonard-richardson/dp/ 0596529260 [2]: http://www.ics.uci.edu/ ~ fielding/pubs/dissertation/top.htm
멱등법칙 적용하는 것을 여러 번 작업을 한 번 또는 적용한 것과 같은 효과가 있습니다.
예를 들면 다음과 같다:
또 별도의 추가 기능을 위한 부작용은요 , 이뎀포텐시 있음을 말해주는 것으로 인해 부작용은요 첫 번째 이후 프로그램. 추가로, the state of the world to be " hidden" 볼 수 있습니다. 그렇게 말씀하시다면야 매개변수입니다 함수
참고로 전 세계 동시 작업을 한 가지는 일어나고 있는 것을 발견할 수 있습니다 운영체 멱등 않아 이렇게 생각해 본 적이 있었다 (예를 들어, 스레드할 해제할 수 있는 다른 값을 부울입니다 플래깅 위의 예에서). 기본적으로 동시에 수행할 수 있는 상태를 주의 깊게 생각할 때마다, mutable 이뎀포텐시 대한 훨씬 더 합니다.
종종 강력한 시스템 구축에 이뎀포텐시 유용하게 사용할 수 있는 속성. 예를 들어, 중복된 메시지를 받을 수 있는 위험이 있는 경우, 제 3 의 역할을 할 수 있도록 하는 것이 무슨 일이 있어도 메시지가 메시지 처리기에서 멱등 작업을 한 번 만 효과.
그 결과 이 같은 상태에 있는 멱등 만드는 작업을 해도 여러 번 전화하시기 전달하십시오 제공한 동일한 매개변수입니다.
그냥 하고 싶은 것을 보여 주는 진짜 览侩 荤례 아웃하려면 멱등법칙. Javascript 로 정의하고, say you a bunch of 모델 클래스 (MVC 모델을 같이). 이것은 종종 구현됩니까 운행에서어떠한 동등한 기능을 지닌 이 같은 일이 있다 (정의):
<! - 언어: 자바스크립트 - >.
function model(name) {
function Model() {
this.name = name;
}
return Model;
}
그러면 다음과 같은 새로운 클래스를 정의할 수 있습니다.
<! - 언어: js - >.
var User = model('user');
var Article = model('article');
'사용자' 클래스 '를 통해 신앙이니라 조교하실 시도하시려면 내려받습니다 모델 (& # 39, user& # 39;)', 다른 곳에서 코드 얻게된다면 실패하게 된다.
var User = model('user');
// ... then somewhere else in the code (in a different scope)
var User = model('user');
두 사람은 '사용자' 구성자를 약간만이라도 다르다. 즉,
model('user') !== model('user');
, 멱등 일종의 캐싱과는 추가하기만 할 때와 방법은 다음과 같습니다.
var collection = {};
function model(name) {
if (collection[name])
return collection[name];
function Model() {
this.name = name;
}
collection[name] = Model;
return Model;
}
때마다 추가하기만 캐싱과는 (& # 39, user& # 39;) 재발했지 '모델' 될 것 같은 개체 등 it& # 39 의 멱등. 그래서:
model('user') === model('user');
멱등 작업을 행동, 또는 요청을 한 작업은 여러 번 적용할 수 있는 시스템 상태를 바꾸지 않고 그 결과, 즉 차원을 넘어 초기 응용 프로그램.
예 (웹 애플리케이션 컨텍스트로):
멱등: 따라서 여러 동일해집니다 요청률 요청을 한 것과 같은 효과가 있다. 메시지, 전자 우편 및 메시징 시스템 열릴 것으로 표시된 " opened". 데이터베이스에. 그러나 이 같은 작업은 여러 차례 열 수 있는 메시지를 한 결과 그 메시지가 있는 거라곤 기술입니까 " opened"; 상태. 이 오류는 멱등 운영할 수 있다. 처음 업데이트하려면 일치하지 않는 한 모든 리소스에 대한 정보를 이용하여 자원 (the state of the system), 시스템 상태를 리소스에는 업데이트되도록 따라 달라질 것으로 보인다. 이렇게 반복적으로 같은 경우 다음 정보를 업데이트 (update) 는 이미 리소스에는 업데이트하십시오 일치시킵니다 정보 시스템의 모든 동일팔레트에, 아니 변경하십시오 빛위에 시스템 상태를 발생합니다. 이렇게 반복적으로 같은 정보를 사용하여 멱등 있다. 첫 번째 동일팔레트에 시스템 상태를 변경할 수 있으며, 이후 안 된다.
비사양 멱등: 이 경우, 동일한 메시지를 올리는 작업은 항상 같은 상태 변화를 운명인것 사용자에게, 그 결과 새 메시지 전송, 말할 때마다, 우리는 이 작업은 데이터베이스에 저장된 비사양 멱등.
누이포텐트: 작업의 경우 웹 페이지의 정보를 주님으로부터그에게 부작용은요, 어떠한 변화도 없이 순수하게 디스플레이하여 같은 데이터베이스 (즉 틀렸다니까 국한됨 판독값 데이터베이스입니까), 우리는 이 작업은 말하도다 누이포텐트. 모든 누이포텐트 얻을 수 있어야 합니다.
이야기할 때 우리는 분명히 심각한 시스템 상태를 무시하고 로깅하기 및 진단 및 불가피한 같은 효과를 기대해 본다.
내 5c: 의 통합 및 네트워크로 이뎀포텐시 매우 중요하다. 여러 가지 예를 통해 실제: 이매진, 데이터를 제공할 타겟대상 시스템. 데이터를 제공하는 일련의 메시지.
, 한 마디로 멱등 운영체 고말은 다른 결과를 초래할 수 있는 작업을 시작한 횟수에 관계없이 운영체 멱등 작동하지 않습니다.
예를 들어, HTTP GET, HEAD, 동일팔레트에 '의 정의에 따라, 사양 및 삭제입니다' 이 멱등 운영체. 그러나 '' 왜 's # 39, 때때로 That& 로그하고 패치합니다 않습니다.' 는 'POST' 동일팔레트에 대체되었다.
작업을 이해할 수 있는 좋은 사례 멱등 잠금식 함께 차를 원격입니다 키.
log(Car.state) // unlocked
Remote.lock();
log(Car.state) // locked
Remote.lock();
Remote.lock();
Remote.lock();
log(Car.state) // locked
'' 는 멱등 잠급니다 운영할 수 있다. 있어도, 자동차 등 일부 부작용이 잠급니다 실행할 때마다 ',' 깜박거림 여전히 같은 잠금 상태입니다.