අවිනිශ්චිත මෙහෙයුමක් යනු කුමක්ද?


Answers:


1002

පරිගණනයේදී, අයිඩෙම්පොටෙන්ට් මෙහෙයුමක් යනු එකම ආදාන පරාමිතීන් සමඟ එක් වරකට වඩා හැඳින්වුවහොත් අමතර බලපෑමක් ඇති නොවන එකකි. නිදසුනක් ලෙස, කට්ටලයකින් අයිතමයක් ඉවත් කිරීම කට්ටලයේ අනන්‍යතා මෙහෙයුමක් ලෙස සැලකිය හැකිය.

ගණිතයේ දී, idempotent මෙහෙයුමක් යනු f (f (x)) = f (x) . නිදසුනක් ලෙස, abs()ශ්‍රිතය අනන්‍යතාවයෙන් යුක්ත වන්නේ abs(abs(x)) = abs(x)සියල්ලන්ටම යx .

ගණිතමය අර්ථ දැක්වීමේ x යනු වස්තුවක තත්වය නිරූපණය කරන බව සලකා බැලීමෙන් මෙම තරමක් වෙනස් අර්ථ දැක්වීම් සමථයකට පත් කළ හැකි අතර f යනු එම වස්තුව විකෘති කළ හැකි මෙහෙයුමකි. උදාහරණයක් ලෙස, පයිතන්set සහ එහි discardක්‍රමය සලකා බලන්න . මෙම discardක්‍රමය මඟින් මූලද්‍රව්‍යයක් කට්ටලයකින් ඉවත් කරන අතර මූලද්‍රව්‍යය නොපවතී නම් කිසිවක් නොකරයි. නිසා:

my_set.discard(x)

එකම මෙහෙයුම දෙවරක් සිදු කිරීමට හරියටම සමාන බලපෑමක් ඇත:

my_set.discard(x)
my_set.discard(x)

අයිඩෙම්පොටෙන්ට් මෙහෙයුම් බොහෝ විට ජාල ප්‍රොටෝකෝල සැලසුම් කිරීමේදී භාවිතා කරනු ලැබේ, එහිදී මෙහෙයුමක් සිදු කිරීම සඳහා ඉල්ලීමක් අවම වශයෙන් එක් වරක්වත් සිදු වන බවට සහතික වන නමුත් එක් වරකට වඩා සිදු විය හැකිය. මෙහෙයුම අනර්ථකාරී නම්, මෙහෙයුම දෙවරක් හෝ වැඩි ගණනක් සිදු කිරීමෙන් කිසිදු හානියක් සිදු නොවේ.

වැඩි විස්තර සඳහා අයිඩම්පොටෙන්ස් පිළිබඳ විකිපීඩියා ලිපිය බලන්න .


ඉහත පිළිතුරට මීට පෙර වැරදි සහ නොමඟ යවන උදාහරණ කිහිපයක් තිබුණි. පහත අදහස් දැක්වීම් 2014 අපේ‍්‍රල් මාසයට පෙර ලියා ඇත්තේ පැරණි සංශෝධනයකට ය.


7
උදාහරණය: ඉහත පිළිතුරෙන් Idempotent operations are often used in the design of network protocolsමෙහි ආශ්‍රිත උදාහරණයක් ඇති බව පවසන බැවින් ** GET සේවාදායකයේ කිසිවක් වෙනස් කිරීමට නොසිතයි, එබැවින් GET යනු අද්විතීය ය. HTTP / servlet සන්දර්භය තුළ, එයින් අදහස් වන්නේ එකම ඉල්ලීම negative ණාත්මක ප්‍රතිවිපාක නොමැතිව දෙවරක් කළ හැකි බවයි. ** POST අනර්ථකාරී නොවේ.
KNU

2
“අස්ථායි” යන්න “idempotent” යන්නට සමානද?
මයිකල් ඔසොෆ්ස්කි

3
Ic මයිකල් ඕසොෆ්ස්කි: නැත, පිළිතුරෙහි ඇති පයිතන් setඋදාහරණයේ දී, සැකසූ වස්තුවට පැහැදිලිවම රාජ්‍යයක් ඇති අතර සමහර ප්‍රබල මෙහෙයුම් ද ඉදිරිපත් කරයි discard.
ග්‍රෙග් හෙව්ගිල්

1
Ic මයිකල් ඕසොෆ්ස්කි, discardප්‍රතිලාභ වටිනාකමින් රාජ්‍යය ඇතුළත් කිරීමෙන් අස්ථායි ආකාරයකින් ක්‍රියාත්මක කළ හැකිය : discard([my_set, x]) = [my_new_set, x]. එබැවින් ඔබට කළ හැකිය discard(discard([my_set, x])). බව සටහන [my_new_set, x]වේ එක් තර්කයක් සහ එහි වර්ගය 2-tuple වේ.
පැසීරියර්

3
@Green පදය භාවිතා කරන විට එම ක්රියාත්මක බැරිකම සන්දර්භය තුළ, එය බවයි ප්රතිඵලයක් නොව, සමාන වේ පියවර . ඇමතුම් discard(x)දෙවන කාලය පළමු වරට එය ඉල්ලා සමාන බලපෑමක් ඇති වනු ඇත: මෙම කට්ටලය තවදුරටත් අඩංගු වනු ඇත x. පරමාදර්ශීභාවය ගණනය කිරීම යනු පද්ධතියක ශක්තිමත් බව පිළිබඳව ය. දේවල් අසාර්ථක විය හැකි බැවින් (උදා: ජාල ඇනහිටීම්), අසමත් වීමක් අනාවරණය වූ විට, ඔබ සුවය ලබන්නේ කෙසේද? පහසුම ප්‍රකෘතිය වන්නේ එය නැවත සිදු කිරීම පමණි, නමුත් එය ක්‍රියාත්මක වන්නේ එය නැවත සිදු කිරීම නිෂ් id ල නම් පමණි. උදා discard(x): අවිනිශ්චිත, නමුත් pop()එසේ නොවේ. ඒ සියල්ල දෝෂ ප්‍රකෘතිමත් වීමකි.
ඇන්ඩ්‍රියාස්

140

අවිනිශ්චිත මෙහෙයුමක් අත්තනෝමතික වාර ගණනක් පුනරාවර්තනය කළ හැකි අතර ප්‍රති result ලය එය එක් වරක් පමණක් සිදු වූවාක් මෙනි. අංක ගණිතයේ දී, අංකයකට ශුන්‍ය එකතු කිරීම අනන්‍යතාවයෙන් යුක්ත වේ.

"RESTful" වෙබ් සේවාවන්හි සන්දර්භය තුළ Idempotence ගැන බොහෝ දේ කතා කෙරේ. වෙබ් අන්තර්ගතයට වැඩසටහන් ලබා දීම සඳහා REST උපරිම වශයෙන් HTTP භාවිතා කිරීමට උත්සාහ කරන අතර සාමාන්‍යයෙන් එය සකසා ඇත්තේ SOAP මත පදනම් වූ වෙබ් සේවාවන්ට වෙනස්වය, එය HTTP ඉල්ලීම් සහ ප්‍රතිචාර තුළ දුරස්ථ ක්‍රියා පටිපාටි ඇමතුම් ශෛලියේ සේවාවන් උමං කරයි.

REST වෙබ් යෙදුමක් "සම්පත්" (ට්විටර් පරිශීලකයෙකු හෝ ෆ්ලිකර් රූපයක් වැනි) ලෙස සංවිධානය කරන අතර එම සම්පත් නිර්මාණය කිරීම, යාවත්කාලීන කිරීම, කියවීම සහ මකා දැමීම සඳහා POST, PUT, GET, සහ DELETE යන HTTP ක්‍රියා පද භාවිතා කරයි.

REST හි වැදගත්කම වැදගත් කාර්යභාරයක් ඉටු කරයි. ඔබට REST සම්පතක් නිරූපණය කළහොත් (උදා: Flickr වෙතින් jpeg රූපයක් ලබා ගන්න), සහ මෙහෙයුම අසාර්ථක වුවහොත්, මෙහෙයුම සාර්ථක වන තුරු ඔබට නැවත නැවතත් GET නැවත කළ හැකිය. වෙබ් සේවයට, රූපය කොපමණ වාරයක් උපයා ඇත්ද යන්න ගැටළුවක් නොවේ. ඒ හා සමානව, ඔබ ඔබේ ට්විටර් ගිණුම් තොරතුරු යාවත්කාලීන කිරීම සඳහා RESTful වෙබ් සේවාවක් භාවිතා කරන්නේ නම්, වෙබ් සේවාවෙන් තහවුරු කිරීමක් ලබා ගැනීම සඳහා ඔබට අවශ්‍ය තරම් වාර ගණනක් නව තොරතුරු ඉදිරිපත් කළ හැකිය. එය දහස් වාරයක් PUT-ing එක වරක් PUT-ing හා සමාන වේ. ඒ හා සමානව REST සම්පතක් දහස් වාරයක් මකා දැමීම සමාන වේ. සන්නිවේදන දෝෂ වලට ඔරොත්තු දෙන වෙබ් සේවාවක් තැනීම අයිඩෙම්පොටෙන්ස් පහසු කරයි.

වැඩිදුර කියවීම: රිචඩ්සන් සහ රූබි විසින් රෙස්ට්ෆුල් වෙබ් සේවා (අනන්‍යතාවය 103-104 පිටුවේ සාකච්ඡා කෙරේ), සහ රෝයි ෆීල්ඩින්ගේ REST පිළිබඳ ආචාර්ය උපාධි නිබන්ධනය . පන්දු රැකීමේ දී idempotence ගැන කතා කරන HTTP 1.1 ක කතුවරයෙකු වන, නේවාසික විදේශ ව්යවහාර මුදල්-2616, විය 9.1.2 කොටස .


පැහැදිලි හා සරල ය. එහෙත් මෙය පරමාදර්ශී තැනැත්තාගේ එක් අර්ථකථනයක් පමණි .
පැසීරියර්

11
“idempotence” යනු අධික ලෙස පටවන ලද වචනයකි, මන්ද එය ශ්‍රේෂ් oc ශබ්දයක් වන අතර සෙස්කිපීඩියානු චෙක්පත සමත් වීමට ප්‍රමාණවත් අක්ෂර ඇත. බෙන්ජමින් පීරිස් සරල ශබ්දයක් තෝරාගෙන තිබුනේ නම් , අද අපට මෙම ප්‍රශ්නය පවා නොතිබෙනු ඇත.
පැසීරියර්

3
එය තේරුම් ගන්නේ කෙසේද: ඒ හා සමානව REST සම්පතක් දහස් වාරයක් මකා දැමීම එක වරක් මකා දැමීම හා සමානද ? සම්පත් දැනටමත් මකා දමා ඇත්නම් ඔබට එය නැවත මකා දැමිය නොහැක.
හරිත

1
@Green එහෙත් ඔබ නැහැ එය මුල් වතාවට මකන්න. ඔබ මකාදැමීමේ ඉල්ලීමක් යවයි . වැදගත් කරුණ නම් ඔබට අවශ්‍ය තරම් ඉල්ලීම් යැවිය හැකිය.
කාලෙත්

2
Im ජිම්ෆෙරන්ස් මම දකිනවා. POST හට කළ නොහැකි අතර කරදරයකින් තොරව PUT අමනාප විය හැක්කේ මන්ද යන්නට ක්‍රියාකාරීත්වයට සම්බන්ධ යම් හේතුවක් (HTTP තුළම ගොඩනගා ගත හැකිය) ඇතැයි මම සිතුවෙමි. දැන් අපට පෙනී යන්නේ අපට HTTP ප්‍රමිතීන්ට අනුකූල විය යුතු අතර හැසිරීම මුළුමනින්ම පදනම් වී ඇත්තේ සේවාදායකය ක්‍රියාත්මක වන ආකාරය මතය
mangusta

112

ඔබ කොපමණ වාරයක් මෙහෙයුම ඇමතූවත්, ප්‍රති result ලය සමාන වේ.


8
අයිඩම්පොටෙන්ට් පහත හෝ දෙකම ලෙස අර්ථ දක්වා ඇති බව මා අසා ඇත: 1) දී ඇති යෙදවුම් කට්ටලයක් සඳහා එය සෑම විටම එකම ප්‍රතිදානය ලබා දෙනු ඇත. 2) කිසිදු අතුරු ආබාධයක් ඇති නොකරයි. මගේ ප්‍රශ්නය නම්, ශ්‍රිතයක් # 1 ට අනුකූල වේ, නමුත් # 2 නොවේ, මන්ද එය ගණනය කිරීම හා සම්බන්ධ නොවන අතුරු ආබාධයක් ඇති කරයි (ඉල්ලීම දත්ත ගබඩාවකට ලොග් කරයි, උදාහරණයක් ලෙස), එය තවමත් අයිඩම්පොටෙන්ට් ලෙස සලකන්නේද?
කීත් බෙනට්

12
මෙහෙයුමක් කැඳවීමේ ප්‍රති result ලයට පද්ධතියේ තත්වය ඇතුළත් විය යුතුය, එබැවින් මෙහෙයුමට යම් සමුච්චිත අතුරු ආබාධයක් තිබේ නම් එය අවිනිශ්චිත නොවේ; කෙසේ වෙතත්, අතුරු ආබාධය පද්ධතිය කොපමණ වාරයක් කැඳවනු ලැබුවද එකම තත්වයෙන් පද්ධතියෙන් ඉවත් වුවහොත් එය අනර්ථකාරී විය හැකිය.
රොබට්

4
කෙටි හා මිහිරි, මම ඒ වගේ පිළිතුරකට කැමතියි. මට මෙම පදය නිරන්තරයෙන් සොයා බැලිය යුත්තේ මන්දැයි නිශ්චිතවම කිව නොහැක, එය මා සමඟ නොසිටින එකකි.
Prancer

1
E කීත්බෙනට්, දෙවන අර්ථ දැක්වීම වැරදිය. “අතුරු ආබාධයක් නැත” යන්නෙන් අදහස් කරන්නේ නිරර්ථක නොවන බවයි. Idempotent කාර්යයන් අතුරු ආබාධ ඇති කළ හැකිය. උදා: MySQL truncateසහ delete.
පැසීරියර්

ප්‍රති result ලය සමාන වනු ඇත (එනම් පද්ධති තත්වය), නමුත් ප්‍රතිචාරය වෙනස් විය හැකිය (එනම්, REST සේවාවක HTTP තත්ව කේත).
ජී. ස්ටීගර්ට්

51

Idempotence යන්නෙන් අදහස් කරන්නේ එක් වරක් මෙහෙයුමක් යෙදීම හෝ කිහිප වතාවක් යෙදීමෙන් එකම බලපෑමක් ඇති බවයි.

උදාහරණ:

  • ශුන්‍යයෙන් ගුණ කිරීම. ඔබ එය කොපමණ වාරයක් කළත්, ප්‍රති result ලය තවමත් ශුන්‍ය වේ.
  • බූලියන් ධජයක් සැකසීම. ඔබ එය කොපමණ වාරයක් කළත්, ධජය සකසා ඇත.
  • දී ඇති හැඳුනුම්පතක් සහිත දත්ත සමුදායකින් පේළියක් මකා දැමීම. ඔබ එය නැවත උත්සාහ කළහොත්, පේළිය තවමත් නැති වී ඇත.

සඳහා පිරිසිදු කටයුතු (කිසිදු අතුරු සමග කටයුතු), පසුව idempotency බව f (x) එයින් ගම්ය = f (f (x)) = f (f (f (x))) = f (f (f (f (x))) ) = ...... x හි සියලුම අගයන් සඳහා

සඳහා අතුරු ආබාධ සමඟ කටයුතු , idempotency තවද, කිසිදු අමතර අතුරු ආබාධ පළමු යෙදීමෙන් පසුව සිදුවන බවයි. ඔබ කැමති නම් ශ්‍රිතයට අතිරේක “සැඟවුණු” පරාමිතියක් ලෙස ලෝකයේ තත්වය සලකා බැලිය හැකිය.

ඔබට සමගාමී ක්‍රියා සිදු වෙමින් පවතින ලෝකයක, ඔබ සිතූ මෙහෙයුම් අශෝභන ලෙස නතර වී ඇති බව ඔබට පෙනී යනු ඇත (නිදසුනක් ලෙස, වෙනත් උදාහරණයකට ඉහත උදාහරණයේ ඇති බූලියන් ධජයේ වටිනාකම සැකසිය නොහැක). මූලික වශයෙන් ඔබ සමගාමී හා විකෘති තත්වයක් ඇති සෑම අවස්ථාවකම, අනන්‍යතාවය පිළිබඳව වඩාත් හොඳින් සිතා බැලිය යුතුය.

ශක්තිමත් පද්ධති ගොඩනැගීමේදී Idempotency බොහෝ විට ප්‍රයෝජනවත් දේපලකි. නිදසුනක් ලෙස, ඔබට තෙවන පාර්ශවයකින් අනුපිටපත් පණිවිඩයක් ලැබීමේ අවදානමක් තිබේ නම්, පණිවිඩ හසුරුවන්නා ක්‍රියා විරහිත මෙහෙයුමක් ලෙස ක්‍රියා කිරීම ප්‍රයෝජනවත් වන අතර එමඟින් පණිවිඩයේ බලපෑම එක් වරක් පමණක් සිදු වේ.


1
පිරිසිදු කාර්යයන් සඳහා නම් f(x) = f(f(x)), ඔබ අදහස් කරන්නේ f(x){return x+1;}එය පිරිසිදු ශ්‍රිතයක් නොවේද? මන්ද f(x) != f(f(x)): f(1)2 ක් f(2)ලබා දෙන අතර 3 ලබා දෙයි.
පැසීරියර්

1
Ac පැකේරියර් නැත, මිකෙරා පවසන්නේ නිර්මල හා අව්‍යාජ ගම්‍ය f(x) = f(f(x))බවයි. @GregHewgill සඳහන් කළ පරිදි, මෙම අර්ථ දැක්වීම අර්ථවත් කිරීම සඳහා, ඔබ xවස්තුවක් ලෙසත්, වස්තුවේ fතත්වය විකෘති කරන මෙහෙයුමක් ලෙසත් සලකා බැලිය යුතුය (එනම්: ප්‍රතිදානය fවිකෘති වේ x).
ජස්ටින් ජේ ස්ටාර්ක්

25

අවිනිශ්චිත මෙහෙයුමක් මඟින් ඔබ එකම පරාමිතීන් තුළ සමත් වුවහොත්, ඔබ එය කිහිප වතාවක් ඇමතුවද, එකම තත්වයේ ප්‍රති result ලය ලබා දෙයි.


1
කිසිසේත්ම තර්කානුකූල නොවේ. stackoverflow.com/questions/1077412/…
හරිත

2
මම ඔබට වැට්ටවීමට කල හැක හිතන්නේ idempotent හා අයනික .
සන්කැට් 2000

17

අවිනිශ්චිතතාවය පෙන්නුම් කරන සැබෑ භාවිත නඩුවක් ඉවත දැමීමට අවශ්‍ය විය. ජාවාස්ක්‍රිප්ට් හි, ඔබ ආදර්ශ පංති සමූහයක් නිර්වචනය කරන බව පවසන්න (එම්වීසී ආකෘතියේ මෙන්). මෙය බොහෝ විට ක්‍රියාත්මක කරන ආකාරය ක්‍රියාකාරීව මේ හා සමාන දෙයකට සමාන වේ (මූලික උදාහරණය):

function model(name) {
  function Model() {
    this.name = name;
  }

  return Model;
}

එවිට ඔබට මෙවැනි නව පන්ති අර්ථ දැක්විය හැකිය:

var User = model('user');
var Article = model('article');

නමුත් ඔබ Userපන්තිය හරහා යාමට උත්සාහ කරන්නේ නම්model('user') කේතයේ වෙනත් තැනක සිට එය අසාර්ථක වනු ඇත:

var User = model('user');
// ... then somewhere else in the code (in a different scope)
var User = model('user');

ඒ දෙක 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;
}

හැඹිලි එකතු කිරීමෙන්, ඔබ කළ සෑම අවස්ථාවකම model('user')එය එකම වස්තුවක් වනු ඇත, එබැවින් එය අනර්ථකාරී ය. නිසා:

model('user') === model('user');

මෙම පිළිතුර නිවැරදි යැයි නොපෙනේ. Idempotence යනු ආදාන පරාමිතීන් අනුව ඔබ යම් තත්වයක් වෙනස් කිරීමට අපේක්ෂා කරන මෙහෙයුමක් කැඳවීමයි, ඔබ එම පරාමිතීන් සමඟ නැවත අමතන්නේ නම් එය රාජ්‍යයට තවදුරටත් බලපෑමක් ඇති නොකරයි. නමුත් ඔබේ උදාහරණයේ දී, හැඹිලිය භාවිතා කිරීමට පෙර, අපි දෙවරක් මාදිලිය ('පරිශීලකයා') ලෙස හැඳින්වුවහොත්, මෙය දැනටමත් අශෝභන ය, රාජ්‍යයේ වෙනසක් නැත, හුදෙක් වෙනස් වෙනස් වස්තුවක් නිර්මාණය කර නැවත අමතන්නා වෙත ආපසු එවීම (ගබඩා කර නැත). ඔබ විස්තර කරන්නේ වස්තු අනන්‍යතා කර්මාන්තශාලා රටාවක් වන අතර එමඟින් එකම වස්තුව ඇමතුම් හරහා ආපසු ලබා දෙන බව සහතික කරයි.
අළු

12

Idempotent operation යනු ප්‍රති application ලය වෙනස් නොකර කිහිප වතාවක් යෙදිය හැකි මෙහෙයුමක්, ක්‍රියාවක් හෝ ඉල්ලීමක්, එනම් ආරම්භක යෙදුමෙන් ඔබ්බට පද්ධතියේ තත්වය.

උදාහරණ (WEB APP CONTEXT):

හැඳුනුම්පත: එක හා සමාන ඉල්ලීම් කිහිපයක් කිරීම එකම ඉල්ලීමක් කිරීමට සමාන බලපෑමක් ඇති කරයි. ඊමේල් පණිවිඩ පද්ධතියක පණිවිඩයක් විවෘත කර දත්ත ගබඩාවේ "විවෘත" ලෙස සලකුණු කර ඇත. කෙනෙකුට පණිවිඩය බොහෝ වාරයක් විවෘත කළ හැකි නමුත් මෙම නැවත නැවත ක්‍රියාවෙන් සිදුවන්නේ එම පණිවිඩය “විවෘත” තත්වයට පත්වීමයි. මෙය අනර්ථකාරී මෙහෙයුමකි. සම්පතට නොගැලපෙන තොරතුරු (පද්ධතියේ තත්වය) භාවිතා කරමින් පළමු වරට යමෙකු සම්පතක් වෙත යාවත්කාලීන කිරීමක් කළ විට, සම්පත යාවත්කාලීන වන විට පද්ධතියේ තත්වය වෙනස් වේ. යමෙක් එකම යාවත්කාලීනයක් සම්පතකට නැවත නැවත ලබා දෙන්නේ නම්, යාවත්කාලීනයේ ඇති තොරතුරු සෑම PUT මත දැනටමත් පද්ධතියේ ඇති තොරතුරු සමඟ ගැලපෙනු ඇති අතර පද්ධතියේ තත්වයට කිසිදු වෙනසක් සිදු නොවේ. එකම තොරතුරු සහිත පුනරාවර්තන PUTs අනර් are ය:

NON-IDEMPOTENT: මෙහෙයුමක් සෑම විටම එකම වෙනසක් පරිශීලකයාට තැපැල් කිරීම වැනි තත්වයේ වෙනසක් ඇති කරයි නම්, එහි ප්‍රති new ලයක් ලෙස සෑම විටම නව පණිවිඩයක් දත්ත ගබඩාවේ යවා ගබඩා කර තබයි, අපි කියන්නේ මෙහෙයුම NON-IDEMPOTENT බවයි.

NULLIPOTENT: දත්ත සමුදායේ කිසිදු වෙනසක් නොමැතිව වෙබ් පිටුවක තොරතුරු ප්‍රදර්ශනය කිරීම වැනි මෙහෙයුමකට අතුරු ආබාධ නොමැති නම් (වෙනත් වචන වලින් කිවහොත් ඔබ කියවන්නේ දත්ත සමුදාය පමණි), අපි කියන්නේ මෙහෙයුම NULLIPOTENT බවයි. සියලුම GETs ශුන්‍ය විය යුතුය.

පද්ධතියේ තත්වය ගැන කතා කරන විට, අපි පැහැදිලිවම නොසලකා හැරීම හා රෝග විනිශ්චය වැනි හානිකර හා නොවැළැක්විය හැකි බලපෑම් නොසලකා හරිමු.


10

Idempotent Operations: කිහිප වතාවක් ක්‍රියාත්මක කළහොත් අතුරු ආබාධ නොමැති මෙහෙයුම්.
උදාහරණය : දත්ත

සම්පතකින් අගයන් ලබාගෙන එය මුද්‍රණය කරයි, අනන්‍ය නොවන මෙහෙයුම්: කිහිප වතාවක් ක්‍රියාත්මක කළහොත් යම් හානියක් සිදු කරන මෙහෙයුම්. (ඔවුන් සමහර අගයන් හෝ තත්වයන් වෙනස් කරන විට)
උදාහරණය: බැංකු ගිණුමකින් ඉවත් වන මෙහෙයුමක්


4
ඇත්තටම වැරදි පිළිතුරක්! "අතුරු ආබාධ නැත" යැයි කියමින් අයිඩෙම්පොටෙන්ට් මෙහෙයුම නිවැරදි නොවේ. මක්නිසාද යත්, කිසියම් හානියක් සිදු කරයි යැයි කියමින් අනාරක්‍ෂිත නොවන මෙහෙයුම් ව්‍යාකූල පිළිතුරකි.
සයීඩ් මොතාෂාම්

10

තරමක් සවිස්තරාත්මක හා තාක්ෂණික පිළිතුරු. සරල අර්ථ දැක්වීමක් එක් කිරීම පමණි.

Idempotent = නැවත ධාවනය කළ හැකි

නිදසුනක් ලෙස, Createඑක් වරකට වඩා ක්‍රියාත්මක කළ හොත් එය ක්‍රියාත්මක නොවී දෝෂයකින් තොරව ක්‍රියාත්මක වන බවට සහතික නොවේ. නමුත් මෙහෙයුමක් තිබේ CreateOrUpdateනම් එය නැවත ධාවනය කිරීමේ හැකියාව (Idempotency) සඳහන් කරයි.


3
මෙය රැවටිලිකාර අර්ථ දැක්වීමකි. නැවත ධාවනය කිරීමේ හැකියාව අවිනිශ්චිත බවට සහතික නොවේ. මෙහෙයුමක් නැවත ක්‍රියාත්මක කළ හැකි අතර සෑම ධාවනයක් තුළම ප්‍රති result ලයට අමතර ප්‍රති add ල එක් කළ හැකිය.
සයීඩ් මොතාෂාම්

9

කට්ටලයක් හරහා අනර්ථකාරී මෙහෙයුමක් එහි සාමාජිකයන් එක් වරක් හෝ වැඩි ගණනක් යොදන විට නොවෙනස්ව පවතී.

එය නිරපේක්ෂ (x) වැනි ඒකීය ක්‍රියාවක් විය හැකිය අතර x යනු ධන නිඛිල සමූහයකට අයත් වේ. මෙහි නිරපේක්ෂ (නිරපේක්ෂ (x)) = x.

එය තමන් සමඟ කට්ටලයක් ඒකාබද්ධ කිරීම වැනි ද්විමය මෙහෙයුමක් විය හැකිය සැමවිටම එකම කට්ටලය නැවත ලබා දෙනු ඇත.

චියර්ස්


උදාසීන මෙහෙයුමක් යනු f (f (x)) = f (x). "එහි සාමාජිකයන් නොවෙනස්ව තබයි" යන්න නිවැරදි පිළිතුරක් නොවේ.
සයීඩ් මොතාෂාම්

8

සෑම නවවන ප්‍රති result ලයක්ම 1 වන ප්‍රති .ලයේ වටිනාකමට ගැලපෙන ප්‍රතිදානයක් ලැබෙනු ඇත. උදාහරණයක් ලෙස -1 හි නිරපේක්ෂ අගය 1. යනු -1 හි නිරපේක්ෂ වටිනාකමෙහි නිරපේක්ෂ අගය 1. යනු 1 හි නිරපේක්ෂ වටිනාකමෙහි නිරපේක්ෂ වටිනාකම 1. සහ එසේ ය.

මෙයද බලන්න: පුනරාවර්තනය භාවිතා කිරීමට ඉතා මෝඩ කාලයක් වන්නේ කවදාද?


1
එය වසර 10 කට පසුව පවා ඉතා සුළු පිළිතුරකි. +1
snr

6

අවිනිශ්චිත මෙහෙයුමක් අවබෝධ කර ගැනීම සඳහා හොඳ උදාහරණයක් වන්නේ දුරස්ථ යතුරක් සහිත මෝටර් රථයක් අගුළු දැමීමයි.

log(Car.state) // unlocked

Remote.lock();
log(Car.state) // locked

Remote.lock();
Remote.lock();
Remote.lock();
log(Car.state) // locked

lockඅවිනිශ්චිත මෙහෙයුමක්. ඔබ ධාවනය කරන සෑම අවස්ථාවකම කිසියම් අතුරු ආබාධයක් lockතිබුනද, ඇස් ඇරීම වැනි, ඔබ කොපමණ වාරයක් අගුලු දැමීමේ ක්‍රියාවලිය ධාවනය කළද, මෝටර් රථය තවමත් එකම අගුලු දමා ඇත.


2

මගේ 5 සී: ඒකාබද්ධ කිරීමේ හා ජාලකරණයේ දී අනන්‍යතාවය ඉතා වැදගත් වේ. සැබෑ ජීවිතයෙන් උදාහරණ කිහිපයක්: සිතන්න, අපි ඉලක්ක පද්ධතියට දත්ත ලබා දෙන්නෙමු. පණිවිඩ මාලාවක් මඟින් දත්ත ලබා දෙනු ලැබේ. 1. නාලිකාව තුළ අනුක්‍රමය මිශ්‍ර වුවහොත් කුමක් සිදුවේද? (ජාල පැකේජ සෑම විටම කරන පරිදි :)). ඉලක්කගත පද්ධතිය අවිනිශ්චිත නම්, ප්‍රති result ලය වෙනස් නොවේ. ඉලක්කගත පද්ධතිය අනුපිළිවෙලෙහි නිවැරදි අනුපිළිවෙල මත රඳා පවතී නම්, අප විසින් ඉලක්කගත අඩවියේ සමානකම් ක්‍රියාත්මක කළ යුතු අතර එමඟින් නිවැරදි අනුපිළිවෙල යථා තත්වයට පත් වේ. 2. පණිවිඩ අනුපිටපත් තිබේ නම් කුමක් සිදුවේද? ඉලක්ක පද්ධතියේ නාලිකාව කාලෝචිත ලෙස පිළිගන්නේ නැත්නම්, ප්‍රභව පද්ධතිය (හෝ නාලිකාවම) සාමාන්‍යයෙන් පණිවිඩයේ තවත් පිටපතක් යවයි. එහි ප්‍රති As ලයක් ලෙස අපට ඉලක්කගත පද්ධති පැත්තේ අනුපිටපත් පණිවිඩයක් ලබා ගත හැකිය. ඉලක්කගත පද්ධතිය අවිනිශ්චිත නම්, එය එය බලා ගන්නා අතර ප්‍රති result ලය වෙනස් නොවේ. ඉලක්කගත පද්ධතිය අවිනිශ්චිත නොවේ නම්, අප විසින් නාලිකාවේ ඉලක්කගත පද්ධති පැත්තේ අඩුකිරීම් ක්‍රියාත්මක කළ යුතුය.


වෙනත් ඕනෑම ඉල්ලීමකින් (හෝ පද්ධතියේ තත්වය වෙනස් කරන වෙනත් දෙයක්) හුදකලා ලෙස යවන ලද තනි ඉල්ලීම්වල අනන්‍යතාවය ඉල්ලීම් නැවත සකස් කිරීම හා සමාන නොවේ. HTTP PUT ඉල්ලීමක් සහ HTTP DELETE ඉල්ලීමක් යන දෙකම තනි තනිව හඳුනාගත හැකි විය යුතුය - නමුත් එයින් අදහස් කරන්නේ එකම URL එකක PUT සහ DELETE ඇමතීමේ අනුපිළිවෙල වැදගත් නොවන බවයි, මන්ද PUT ඉල්ලීම අතුරු ආබාධ ඇති විය හැකි බැවිනි!
රොබින් ග්‍රීන්

2

කෙටියෙන් කිවහොත් , අයිඩෙම්පොටෙන්ට් මෙහෙයුම් යනු ඔබ කොපමණ වාරයක් අයිඩම්පොටෙන්ට් මෙහෙයුම් ක්‍රියාත්මක කළද විවිධ ප්‍රති results ල නොලැබෙන බවයි.

නිදසුනක් ලෙස, එච්ටීටීපී හි පිරිවිතරයේ අර්ථ දැක්වීම අනුව, GET, HEAD, PUT, and DELETEඅවිනිශ්චිත මෙහෙයුම් වේ; කෙසේ වෙතත් POST and PATCHඑසේ නොවේ. සමහර විට POSTඑය ප්රතිස්ථාපනය වන්නේ එබැවිනි PUT.


-3

නැවත උත්සාහ කරන්න-ආරක්ෂිතයි.

සාමාන්‍යයෙන් පරිගණක විද්‍යාවේ එහි තේරුම තේරුම් ගැනීමට ඇති පහසුම ක්‍රමයයි.


1
නැවත උත්සාහ කිරීමෙන් පළමු හෝ පෙර වතාවේ අසමත් වූ දෙයක් අදහස් වේ. තරමක් සමාන නොවේ.
Lasse V. Karlsen

මගේ ප්‍රශ්නය සංස්කරණය කර මට ඡන්දය ලබා දුන්නේ කවුද? එය මා පළ කළ පෙළ නොවේද ??
teknopaul

1
"පැය X කට පෙර සංස්කරණය කරන ලදි" හෝ ඊට සමාන යැයි පවසන ඔබේ පිළිතුරට පහළින් ඇති සබැඳිය ක්ලික් කිරීමෙන් ඔබට සංස්කරණ ලොගය පරීක්ෂා කළ හැකිය.
Lasse V. Karlsen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.