Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
¾©¶«µ½¼Ò¿â´æÏµÍ³¼Ü¹¹Éè¼Æ
 
  2231  次浏览      27
 2018-1-15
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ51CTO£¬±¾ÎÄÖØµã½éÉܾ©¶«µ½¼Ò¿â´æÏµÍ³¾­ÀúÁ½Äê¶àµÄÏßÉÏ¿¼ÑéÓë¼¼Êõµü´ú£¬·þÎñ×ÅÍò¼¶É̼ÒÊ®Íò¼¶µêÆÌÐèÇóµÄ±ä¸üÓë¼¼ÊõÑݽø£¬ÊÇÈçºÎ×öµ½ÏµÍ³µÄÎȶ¨ÐÔÓë¸ß¿ÉÓã¿

Ŀǰ£¬¾©¶«µ½¼Ò¿â´æÏµÍ³¾­ÀúÁ½Äê¶àµÄÏßÉÏ¿¼ÑéÓë¼¼Êõµü´ú£¬ÏÖ·þÎñ×ÅÍò¼¶É̼ÒÊ®Íò¼¶µêÆÌµÄ¹æÄ££¬ÐèÇóµÄ±ä¸üÓë¼¼ÊõÑݽø£¬ÎÒÃÇÊÇÈçºÎ×öµ½ÏµÍ³µÄÎȶ¨ÐÔÓë¸ß¿ÉÓÃÄØ£¬ÏÂͼ»á¸øÄã½ÒÏþ´ð°¸(ͨ¹ýÇ¿´óµÄ»ù´¡·þÎñƽ̨ÈÃÓ¦Óá¢JVM¡¢Docker¡¢ÎïÀí»úËùÓн¡¿µÖ¸±êһĿÁËÈ»£¬7*24СʱÖÇÄÜ¼à¿Ø¸æ¾¯Èÿª·¢ÎÞÐëÒ»Ö±¶¢×Å¼à¿Ø£¬ÁíÍâÊý¾ÝÓëÒµÎñÏศÏà³É£¬ÓÃÊý¾ÝÑéÖ¤ÒµÎñÐèÇ󣬵ü´úÒµÎñÐèÇó£¬ÈÃÒµÎñÐèÇó¶¼¾¡¿ÉÄܵÄÊÕÒæ×î´ó»¯£¬¿â´æÏµÍ³µÄ¿ª·¢Í¬Ñ§Ö»ÐèÒª¹Ø×¢ÒµÎñÐèÇ󣬴󰿱¾ÉÏÏßǰÏàÓ¦µÄ²âÊÔͬѧ»á¸ú½ø°ïÄãѹ²â£¬·ÀÖ¹ÉÏÏߺóDZÔÚµÄÐÔÄÜÆ¿¾±)¡£

¸½1£º¿â´æÏµÍ³¼¼Êõ¼Ü¹¹Í¼

¸½2£º¿â´æÏµÍ³Êý¾ÝÁ÷תͼ

¿â´æÏµÍ³µÄ¼Ü¹¹ºÜÓÐÒâ˼£¬´ÓÉÏͼÀ´¿´¹¦ÄÜÉÏÆäʵ²¢²»¸´ÔÓ£¬µ«ÊÇËûÃæÁٵļ¼Êõ¸´ÔÓ¶ÈÈ´ÊÇÏ൱¸ßµÄ£¬±ÈÈçÃëɱƷÔڸ߲¢·¢µÄÇé¿öÏÂÈçºÎ·ÀÖ¹³¬Âô£¬ÁíÍâ¿â´æÏµÍ³»¹²»ÊÇÒ»¸ö´¿¼¼ÊõµÄϵͳ£¬ÐèÒª½áºÏÓû§µÄÐÐÎªÌØµãÀ´¿¼ÂÇ£¬±ÈÈçÏÂÎÄÖÐÌᵽʲôʱ¼ä½øÐÐ¿â´æµÄ¿Û¼õ×îºÏÊÊ£¬ÎÒÃÇÏÈÅ׳ö¼¸¸öÎÊÌâºÍ´ó¼ÒÒ»Æð̽ÌÖÏ£¬ÈçÓÐÓÐÍײ»´¦£¬»¶Ó­´ó¼ÒÅÄש¡£

¿â´æÊ²Ã´Ê±ºò½øÐÐÔ¤Õ¼(»òÕ߿ۼõ)ÄØ

É̼ÒÏúÊÛµÄÉÌÆ·ÊýÁ¿ÊÇÓÐÏ޵ģ¬Óû§Ïµ¥ºóÉÌÆ·»á±»¿Û¼õ£¬ÎÒÃÇ¿ÉÒÔÔõôʵÏÖÄØ?

¾Ù¸öÀý×Ó£º

Ò»¼þÉÌÆ·ÓÐ1000¸ö¿â´æ£¬ÏÖÔÚÓÐ1000¸öÓû§£¬Ã¿¸öÓû§¼Æ»®Í¬Ê±¹ºÂò1000¸ö¡£

1.(ʵÏÖ·½°¸1)Èç¹ûÓû§¼ÓÈ빺Îﳵʱ½øÐÐ¿â´æÔ¤Õ¼£¬ÄÇô½«Ö»ÄÜÓÐ1¸öÓû§½«1000¸öÉÌÆ·¼ÓÈ빺Îï³µ¡£

2.(ʵÏÖ·½°¸2)Èç¹ûÓû§Ìá½»¶©µ¥Ê±½øÐÐ¿â´æÔ¤Õ¼£¬ÄÇô½«Ò²Ö»ÄÜÓÐ1¸öÓû§½«1000¸öÉÌÆ·Ìáµ¥³É¹¦£¬ÆäËüµÄÈ˾ùÌáʾ¡°¿â´æ²»×㣬Ìᵥʧ°Ü¡±¡£

3.(ʵÏÖ·½°¸3)Èç¹ûÓû§Ìá½»¶©µ¥&Ö§¸¶³É¹¦Ê±½øÐÐ¿â´æÔ¤Õ¼£¬ÄÇôÕâ1000¸öÈ˶¼ÄÜÉú³É¶©µ¥£¬µ«ÊÇÖ»ÓÐ1¸öÈË¿ÉÒÔÖ§¸¶³É¹¦£¬ÆäËüµÄ¶©µ¥¾ù»á±»×Ô¶¯È¡Ïû¡£

¾©¶«µ½¼ÒĿǰ²ÉÓõÄÊÇ·½°¸2£¬ÀíÓÉ£º

1.Óû§¿ÉÄÜÖ»ÊÇÔÝʱ¼ÓÈ빺Îï³µ£¬²¢²»±íʾÓû§×îÖÕ»áÌáµ¥²¢Ö§¸¶¡£

2.ËùÒÔÔÚ¹ºÎï³µ½øÐÐ¿â´æÐ£Ñé²¢Ô¤Õ¼£¬»áÔì³ÉÆäËüÕæÕýÏëÂòµÄÓû§²»ÄܼÓÈ빺Îï³µµÄÇé¿ö£¬µ«ÊÇ֮ǰ¼Ó³µµÄÓû§Ò»Ö±²»¸¶¿î£¬×îÖÕËðʧµÄÊǹ«Ë¾¡£

3.·½°¸3»áÔì³ÉÉú³É1000¸ö¶©µ¥£¬ÎÞÂÛÊÇÔÚÖ§¸¶Ç°Ð£Ñé¿â´æ»¹ÊÇÔÚÖ§¸¶³É¹¦ºóÔÙ¼ìÑé¿â´æ£¬¶¼»áÔì³ÉÓû§×¼±¸ºÃÖ§¸¶Ìõ¼þºóÈ´»á³öÏÖ99.9%µÄϵͳȡÏû¶©µ¥µÄ¸ÅÂÊ£¬Ò²¾ÍÊÇ˵»á¸ø99.9%µÄÓû§ÌåÑéµ½²»Ë¬µÄ¸Ð¾õ¡£

4.Êý¾Ý±íÃ÷Óû§Ìá½»¶©µ¥²»Ö§¸¶µÄÕ¼±ÈÊǷdz£Ð¡µÄ(Ïà¶ÔÓÚ¼ÓÈ빺Îï³µ²»¹ºÂòµÄÐÐΪ)£¬Ä¿Ç°¾©¶«µ½¼Ò¸øÓû§Ô¤ÁôµÄ×֧¸¶Ê±¼äÊÇ30·ÖÖÓ£¬³¬¹ý30·ÖÖÓ¶©µ¥×Ô¶¯È¡Ïû£¬Ô¤Õ¼µÄ¿â´æ×Ô¶¯ÊÍ·Å

×ÛÉÏËùÊö£¬·½°¸2Ò²¿ÉÄÜÓÉÓÚÓû§Ïµ¥Ô¤Õ¼¿â´æµ«×îÖÕδ֧¸¶£¬Ôì³É¿â´æ30·ÖÖÓºó²ÅÄܱ»ÆäËüÓû§Ê¹ÓõÄÇé¿ö£¬µ«ÊÇÏà½ÏÓÚ·½°¸1£¬·½°¸3ÎÞÒÉÊÇÕÛÖеÄ×îºÃ·½°¸¡£

ÖØ¸´Ìá½»¶©µ¥µÄÎÊÌâ?

ÖØ¸´Ìá½»¶©µ¥Ôì³ÉµÄ¿â´æÖظ´¿Û¼õµÄºó¹ûÊDZȽÏÑÏÖØµÄ¡£±ÈÈçÉ̼ÒÉèÖÃÓÐ1000¼þÉÌÆ·£¬¶øÊµ¼ÊÇé¿ö¿ÉÄÜÂôÁË900¼þ¾ÍÌáʾÓû§ÎÞ»õÁË£¬¸øÉ̼ÒÔì³ÉÎÞÐεÄËðʧ

¿ÉÄܳöÏÖÖØ¸´Ìá½»¶©µ¥µÄÇé¿ö£º

1.Óû§ÉÆÒâÐÐΪ)appÉÏÓû§µ¥»÷¡°Ìá½»¶©µ¥¡±°´Å¥ºóÓÉÓÚºó¶Ë½Ó¿ÚûÓзµ»Ø£¬Óû§ÒÔΪûÓвÙ×÷³É¹¦»áÔٴε¥»÷¡°Ìá½»¶©µ¥¡±°´Å¥

2.Óû§¶ñÒâÐÐΪ)ºÚ¿ÍÖ±½ÓË¢Ìáµ¥½Ó¿Ú£¬ÈƹýApp¶Ë·ÀÖØÌá½»¹¦ÄÜ

3.Ìáµ¥ÏµÍ³ÖØÊÔ)±ÈÈçÌᵥϵͳΪÁËÌá¸ßϵͳµÄ¿ÉÓÃÐÔ£¬ÔÚµÚÒ»´Îµ÷ÓÃ¿â´æÏµÍ³¿Û¼õ½Ó¿Ú³¬Ê±ºó»áÖØÊÔÔÙ´ÎÌá½»¿Û¼õÇëÇó

ºÃÁË£¬¼ÈÈ»ÎÊÌâ¸ùÔ´ÞÛÇå³þÁË£¬ÎÒÃÇÒ»Ò»¶ÔÖ¢ÏÂÒ©

1.Óû§ÉÆÒâÐÐΪ)app²àÔÚÓû§µÚÒ»´Îµ¥»÷¡°Ìá½»¶©µ¥¡±°´Å¥ºó¶Ô°´Å¥½øÐÐÖûң¬½ûÖ¹ÔÙ´ÎÌá½»¶©µ¥

2.Óû§¶ñÒâÐÐΪ)²ÉÓÃÁîÅÆ»úÖÆ£¬Óû§Ã¿´Î½øÈë½áËãÒ³£¬Ìᵥϵͳ»á°ä·¢Ò»¸öÁîÅÆID(È«¾ÖΨһ)£¬µ±Óû§µã»÷¡°Ìá½»¶©µ¥¡±°´Å¥Ê±·¢ÆðµÄÍøÂçÇëÇóÖÐ»á´øÉÏÕâ¸öÁîÅÆID,Õâ¸öʱºòÌᵥϵͳ»áÓÅÏȽøÐÐÁîÅÆIDÑéÖ¤£¬ÁîÅÆID´æÔÚ&ÁîÅÆID·ÃÎÊ´ÎÊý=1µÄ»°²Å»á·ÅÐд¦ÀíºóÐøÂß¼­£¬·ñÔòÖ±½Ó·µ»Ø

3.Ìáµ¥ÏµÍ³ÖØÊÔ)ÕâÖÖÇé¿öÔòÐèÒªºó¶Ëϵͳ(±ÈÈç¿â´æÏµÍ³)À´±£Ö¤½Ó¿ÚµÄÃݵÈÐÔ£¬Ã¿´Îµ÷ÓÃ¿â´æÏµÍ³Ê±¾ù´øÉ϶©µ¥ºÅ£¬¿â´æÏµÍ³»á»ùÓÚ¶©µ¥ºÅÔö¼ÓÒ»¸ö·Ö²¼Ê½ÊÂÎñËø£¬Î±´úÂëÈçÏ£º

int ret=redis.incr(orderId);
redis.expire(orderId,5,TimeUnit.MINUTES);
if(ret==1){
//Ìí¼Ó³É¹¦£¬ËµÃ÷֮ǰûÓд¦Àí¹ýÕâ¸ö¶©µ¥ºÅ

»òÕß5·ÖÖÓ֮ǰ´¦Àí¹ýÁË
boolean alreadySuccess=alreadySuccessDoOrder

(orderProductRequest);
if(!alreadySuccess){
doOrder(orderProductRequest);
}else{
return "²Ù×÷ʧ°Ü£¬Ô­Òò£ºÖظ´Ìá½»";
}
}else{
return "²Ù×÷ʧ°Ü£¬Ô­Òò£ºÖظ´Ìá½»";
}

¿â´æÊý¾ÝµÄ»Ø¹ö»úÖÆÈçºÎ×ö

ÐèÒª¿â´æ»Ø¹öµÄ³¡¾°Ò²ÊDZȽ϶àµÄ£¬±ÈÈ磺

1.Óû§Î´Ö§¸¶)Óû§Ïµ¥ºóºó»ÚÁË

2.Óû§Ö§¸¶ºóÈ¡Ïû)Óû§Ïµ¥&Ö§¸¶ºóºó»ÚÁË

3.·ç¿ØÈ¡Ïû)·ç¿ØÊ¶±ðµ½Òì³£ÐÐΪ£¬Ç¿ÖÆÈ¡Ïû¶©µ¥

4.(ñîºÏϵͳ¹ÊÕÏ)±ÈÈçÌá½»¶©µ¥Ê±ÌᵥϵͳT1ͬʱ»áµ÷Óûý·Ö¿Û¼õϵͳX1¡¢¿â´æ¿Û¼õϵͳX2¡¢ÓÅ»ÝȯϵͳX3£¬¼ÙÈçX1,X2³É¹¦ºó£¬µ÷ÓÃX3ʧ°Ü£¬ÐèÒª»Ø¹öÓû§»ý·ÖÓëÉÌ¼Ò¿â´æ¡£

ÆäÖг¡¾°1£¬2£¬3±È½ÏÀàËÆ£¬¶¼»áÔì³É¶©µ¥È¡Ïû£¬¶©µ¥ÖÐÐÄÈ¡Ïûºó»á·¢ËÍmq³öÀ´£¬¸÷¸öϵͳ±£Ö¤×Ô¼ºÄܹ»ÕýÈ·Ïû·Ñ¶©µ¥È¡ÏûMQ¼´¿É¡£¶ø³¡¾°4¶©µ¥ÆäʵÉÐδÉú³É£¬Ïà¶ÔÀ´ËµÒª¸´ÔÓЩ£¬ÈçÉÏÃæÌáµ½µÄ£¬ÌᵥϵͳT1ÐèÒªÖ÷¶¯·¢Æð¿â´æÏµÍ³X2¡¢ÓÅ»ÝȯϵͳX3µÄ»Ø¹öÇëÇó(Èë²Î±ØÐë´øÉ϶©µ¥ºÅ)£¬X2¡¢X3»Ø¹ö½Ó¿ÚÐèÒªÖ§³ÖÃݵÈÐÔ¡£

ÆäʵÕë¶Ô³¡¾°4£¬»¹´æÔÚÒ»ÖÖ¼«¶ËÇé¿ö£¬Èç¹ûÌᵥϵͳT1×¼±¸»Ø¹öʱ×ÔÉíҲ崻úÁË£¬ÄÇô¿â´æÏµÍ³X2¡¢ÓÅ»ÝȯϵͳX3¾Í±ØÐëÒÀ¿¿×Ô¼ºÎªÍê³É»Ø¹ö²Ù×÷ÁË£¬Ò²¾ÍÊÇ˵¾ß±¸×ÔÎÒÊý¾Ý½¡¿µ¼ì²éµÄÄÜÁ¦£¬¾ßÌåÀ´ËµÔõôʵÏÖÄØ?

¿ÉÒÔÀûÓõ±Ç°¶©µ¥ºÅËùÊôµÄ¶©µ¥ÉÐδÉú³ÉµÄÌØµã£¬¿ÉÒÔͨ¹ýworker»úÖÆ£¬Ã¿´ÎÀÌÈ¡40·ÖÖÓ(ÕâÀïµÄ40Ò»¶¨Òª´óÓÚÈÝÈÌÓû§µÄÖ§¸¶Ê±¼ä)ǰµÄ¶©µ¥£¬µ÷Óö©µ¥ÖÐÐIJéѯ¶©µ¥µÄ״̬£¬È·±£²»ÊÇÒÑÈ¡ÏûµÄ£¬·ñÔò½øÐÐ×ÔÎÒÊý¾ÝµÄ»Ø¹ö¡£

¶àÈËͬʱ¹ºÂò1¼þÉÌÆ·£¬ÈçºÎ°²È«µØ¿â´æ¿Û¼õ

ÏÖʵÖÐͬһ¼þÉÌÆ·¿ÉÄÜ»á³öÏÖ¶àÈËͬʱ¹ºÂòµÄÇé¿ö£¬ÎÒÃÇ¿ÉÒÔÈçºÎ×öµ½²¢·¢°²È«ÄØ?

α´úÂëÆ¬¶Î1£º

synchronized(this){
long stockNum = getProductStockNum(productId);
if(stockNum>requestBuyNum) {
String sql=" update stock_main "+
" set stockNumstockNum=stockNum-"+requestBuyNum +
" where productId="+productId;
int ret=updateSQL(sql);
if(ret==1){
return "¿Û¼õ³É¹¦";
}else {
return "¿Û¼õʧ°Ü";
}
}
}

α´úÂëÆ¬¶Î1µÄÉè¼ÆË¼ÏëÊÇËùÓÐ ÇëÇó¹ýÀ´Ö®ºóÊ×ÏȼÓËø£¬Ç¿ÖÆÆä´®Ðл¯´¦Àí£¬¿É¼ûÆäЧÂÊÒ»¶¨²»¸ß£¬

α´úÂëÆ¬¶Î2£º

String sql=" update stock_main "+
" set stockNumstockNum=stockNum-"+requestBuyNum +
" where productId="+productId+
" and stockNum>="+requestBuyNum;
int ret=updateSQL(sql);
if(ret==1){
return "¿Û¼õ³É¹¦";
}else {
return "¿Û¼õʧ°Ü";
}

Õâ¶Î´úÂëÖ»ÊÇÔÚwhereÌõ¼þÀïÔö¼ÓÁËand stockNum>="+requestBuyNum¼´¿É·ÀÖ¹³¬ÂôµÄÐÐΪ£¬´ïµ½ÁËÓëÉÏÊöα´úÂë1µÄ¹¦ÄÜ

Èç¹ûÉÌÆ·ÊÇ´ÙÏúÆ·(±ÈÈç²ÎÓëÁËÃëɱµÄÉÌÆ·)²¢·¢¿Û¼õµÄ»úÂÊ»á¸ü¸ß£¬ÄÇôÊý¾Ý¿âµÄѹÁ¦»á¸ü¸ß£¬Õâ¸öʱºò»¹¿ÉÒÔÔõô×öÄØ

º£Á¿µÄÓû§ÃëɱÇëÇó,±¾ÖÊÉÏÊÇÒ»¸öÅÅÐò,Ïȵ½ÏȵÃ.µ«ÊÇÈç´ËÖ®¶àµÄÇëÇó£¬×¢¶¨ÁËÓÐЩÈËÊÇÇÀ²»µ½µÄ£¬¿ÉÒÔÔÚ½øÈëÉÏÊöα´úÂëDao²ã֮ǰÔö¼ÓÒ»¸ö¼ÆÊýÆ÷½øÐпØÖÆ£¬±ÈÈçÓÐ50%µÄÁ÷Á¿½«Ö±½Ó¸æË߯äÇÀ¹ºÊ§°Ü£¬Î±´úÂëÈçÏ£º

public class SeckillServiceImpl{
private long count=0;

public BuyResult buy(User user,int productId,int productNum){
count++;
if(count%2=1){
Thread.sleep(1000);
return new BuyResult("ÇÀ¹ºÊ§°Ü");
}else{
return doBuy(user,productId,productNum);
}
}
}

ÁíÍâͬһ¸öÓû§£¬²»ÔÊÐí¶à´ÎÇÀ¹ºÍ¬Ò»¼þÉÌÆ·£¬ÎÒÃÇÓÖ¸ÃÈçºÎ×öÄØ

public String doBuy(user,productId,productNum){
//Óû§³ýÁ˵ÚÒ»´Î½øÈëֵΪ1£¬ÆäËüʱºò¾ù´óÓÚ1
int tmp=redis.incr(user.getUid()+productId);
if(tmp==1){
//1Сʱºókey×Ô¶¯Ïú»Ù
redis.expire(user.getUid()+productId,3600);
return doBuy1(user,productId,productNum);
}else{
return new BuyResult("ÇÀ¹ºÊ§°Ü");
}
}

Èç¹ûͬһ¸öÓû§ÓµÓв»Í¬µÄÕʺţ¬À´ÇÀ¹ºÍ¬Ò»¼þÉÌÆ·£¬ÉÏÃæµÄ²ßÂÔ¾ÍʧЧÁË¡£

һЩ¹«Ë¾ÔÚ·¢Õ¹ÔçÆÚ¼¸ºõÊÇûÓÐÏÞÖÆµÄ£¬ºÜÈÝÒ׾ͿÉÒÔ×¢²áºÜ¶à¸öÕ˺š£Ò²¼´ÊÇÍøÂçËùνµÄ¡°½©Ê¬Õ˺𱣬ÊýÁ¿ÅÓ´ó£¬Èç¹ûÎÒÃÇʹÓü¸Íò¸ö¡°½©Ê¬ºÅ¡±È¥»ì½øÈ¥ÇÀ¹º£¬ÕâÑù¾Í¿ÉÒÔ´ó´óÌáÉýÎÒÃÇÖн±µÄ¸ÅÂÊ£¬ÄÇÎÒÃÇÈçºÎÓ¦¶ÔÄØ£¿

public String doBuy1(user,productId,productNum){
String minuteKey=DateTimeUtil.getDateTimeStr("yyyyMMddHHmm");
String minuteIpCount=redis.incr(minuteKey+user.getClientIp());

// thresholdΪÔÊÐíÿ·ÖÖÓÔÊÐíµ¥¸öipµÄ×î´ó·ÃÎÊ´ÎÊý
if(minuteIpCount>threshold){
//ʶ±ðµ½Õⲿ·ÖDZÔÚ·çÏÕÓû§Ê±£¬»áÈÃÕⲿ·ÖÓû§Ç¿ÖÆÌø×ªµ½ÑéÖ¤ÂëÒ³Ãæ½øÐÐУÑé
//УÑéͨ¹ýºó²ÅÄܼÌÐøÇÀ¹ºÉÌÆ·
return getAndSendVerificationCode(user);
}else{
return doBuy2(user,productId,productNum);
}
}

ÁíÍ⽫¿â´æÏµÍ³µÄºËÐıí½á¹¹Éè¼ÆÌṩ³öÀ´¹©´ó¼Ò²Î¿¼

¿â´æÖ÷±í£¬ÃüÃû¹æÔò£ºstock_center_00~99

¿â´æÁ÷Ë®±í£¬ÃüÃû¹æÔò£ºstock_center_flow_00~99

¿â´æÅúÁ¿²Ù×÷ÈÕÖ¾±í£¬ÃüÃû¹æÔò£ºbatch_upload_log

 

   
2231 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ÆóÒµ¼Ü¹¹¡¢TOGAFÓëArchiMate¸ÅÀÀ
¼Ü¹¹Ê¦Ö®Â·-ÈçºÎ×öºÃÒµÎñ½¨Ä££¿
´óÐÍÍøÕ¾µçÉÌÍøÕ¾¼Ü¹¹°¸ÀýºÍ¼¼Êõ¼Ü¹¹µÄʾÀý
ÍêÕûµÄArchimateÊÓµãÖ¸ÄÏ£¨°üÀ¨Ê¾Àý£©
Ïà¹ØÎĵµ

Êý¾ÝÖÐ̨¼¼Êõ¼Ü¹¹·½·¨ÂÛÓëʵ¼ù
ÊÊÓÃArchiMate¡¢EA ºÍ iSpace½øÐÐÆóÒµ¼Ü¹¹½¨Ä£
ZachmanÆóÒµ¼Ü¹¹¿ò¼Ü¼ò½é
ÆóÒµ¼Ü¹¹ÈÃSOAÂ䵨
Ïà¹Ø¿Î³Ì

ÔÆÆ½Ì¨Óë΢·þÎñ¼Ü¹¹Éè¼Æ
ÖÐ̨սÂÔ¡¢ÖÐ̨½¨ÉèÓëÊý×ÖÉÌÒµ
ÒÚ¼¶Óû§¸ß²¢·¢¡¢¸ß¿ÉÓÃϵͳ¼Ü¹¹
¸ß¿ÉÓ÷ֲ¼Ê½¼Ü¹¹Éè¼ÆÓëʵ¼ù