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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
18ÕÅͼ£¬Ïê½âSpringBoot½âÎöymlÈ«Á÷³Ì
 
×÷Õߣº Dr Hydra
  1793  次浏览      27
 2022-1-21
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜ Ò»ÏÂSpringBoot¼ÓÔØymlÅäÖÃÎļþµÄ¹ý³Ì , Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£
±¾ÎÄÀ´×ÔÓÚ ÂëÅ©²ÎÉÏ £¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

±³¾°

ǰ¼¸ÌìµÄʱºò£¬ÏîÄ¿ÀïÓÐÒ»¸öÐèÇó£¬ÐèÒªÒ»¸ö¿ª¹Ø¿ØÖÆ´úÂëÖÐÊÇ·ñÖ´ÐÐÒ»¶ÎÂß¼­£¬ÓÚÊÇÀíËùµ±È»µÄÔÚ yml ÎļþÖÐÅäÖÃÁËÒ»¸öÊôÐÔ×÷Ϊ¿ª¹Ø£¬ÔÙÅäºÏ nacos ¾Í¿ÉÒÔËæÊ±¸Ä±äÕâ¸öÖµ´ïµ½ÎÒÃǵÄÄ¿µÄ£¬ymlÎļþÖÐÊÇÕâÑùдµÄ£º

switch:
turnOn: on

³ÌÐòÖеĴúÂëÒ²ºÜ¼òµ¥£¬´óÖµÄÂß¼­¾ÍÊÇÏÂÃæÕâÑù£¬Èç¹ûÈ¡µ½µÄ¿ª¹Ø×Ö¶ÎÊÇ on µÄ»°£¬ÄÇô¾ÍÖ´ÐÐ if ÅжÏÖеĴúÂ룬·ñÔò¾Í²»Ö´ÐУº

@Value ( "${switch.turnOn}" )
private String on;

@GetMapping ( "testn" )
public void test () {
if ( "on" .equals(on)){
//TODO
}
}

µ«Êǵ±´úÂëʵ¼ÊÅÜÆðÀ´£¬ÓÐÒâ˼µÄµØ·½À´ÁË£¬ÎÒÃÇ·¢ÏÖÅжÏÖеĴúÂëÒ»Ö±²»»á±»Ö´ÐУ¬Ö±µ½debugһϣ¬²Å·¢ÏÖÕâÀïµÄÈ¡µ½µÄÖµ¾ÓÈ»²»ÊÇ on ¶øÊÇ true ¡£

¿´µ½Õ⣬ÊDz»ÊǸоõÓеãÒâ˼£¬Ê×ÏÈä²ÂÊÇÔÚ½âÎöymlµÄ¹ý³ÌÖÐ°Ñ on ×÷Ϊһ¸öÌØÊâµÄÖµ½øÐÐÁË´¦Àí£¬ÓÚÊÇÎҸɴàÔÙ¶à²âÊÔÁ˼¸¸öÀý×Ó£¬°ÑymlÖеÄÊôÐÔÀ©Õ¹µ½ÏÂÃæÕâЩ£º

switch:
turnOn: on
turnOff: off
turnOn2: 'on'
turnOff2: 'off'

ÔÙÖ´ÐÐһϴúÂ룬¿´Ò»ÏÂÓ³ÉäºóµÄÖµ£º

¿ÉÒÔ¿´µ½£¬ymlÖÐûÓдøÒýºÅµÄ on ºÍ off ±»×ª»»³ÉÁË true ºÍ false £¬´øÒýºÅµÄÔò±£³ÖÁËÔ­À´µÄÖµ²»·¢Éú¸Ä±ä¡£

µ½ÕâÀÈÃÎÒÈ̲»×¡ÓеãºÃÆæ£¬ÎªÊ²Ã´»á·¢ÉúÕâÖÖÏÖÏóÄØ£¿ÓÚÊÇÇ¿ÈÌ×ÅÀ§Òâ·­ÁË·­Ô´Â룬Ӳ¿ÄÁËÒ»ÏÂSpringBoot¼ÓÔØymlÅäÖÃÎļþµÄ¹ý³Ì£¬ÖÕÓÚÈÃÎÒ¿´³öÁ˵ãÃŵÀ£¬ÏÂÃæÎÒÃÇÒ»µãÒ»µãϸ˵£¡

ÒòΪÅäÖÃÎļþµÄ¼ÓÔØ»áÉæ¼°µ½Ò»Ð©SpringBootÆô¶¯µÄÏà¹ØÖªÊ¶£¬ËùÒÔÈç¹û¶ÔÕâÒ»¿é²»ÊǺÜÊìϤµÄͬѧ£¬¿ÉÒÔÏÈÌáǰÏÈ¿´Ò»ÏÂHydraÔÚ¹ÅÔçʱÆÚд¹ýһƪÎÄÕÂÔ¤ÈÈһϡ£ÏÂÃæµÄ½éÉÜÖУ¬Ö»»áÕª³öһЩ¶Ô¼ÓÔØºÍ½âÎöÅäÖÃÎļþ±È½ÏÖØÒªµÄ²½Öè½øÐзÖÎö£¬¶ÔÆäËûÎ޹ز¿·Ö½øÐÐÁËÊ¡ÂÔ¡£

¼ÓÔØ¼àÌýÆ÷

µ±ÎÒÃÇÆô¶¯Ò»¸öSpringBoot³ÌÐò£¬ÔÚÖ´ÐÐ SpringApplication.run() µÄʱºò£¬Ê×ÏÈÔÚ³õʼ»¯ SpringApplication µÄ¹ý³ÌÖУ¬¼ÓÔØÁË11¸öʵÏÖÁË ApplicationListener ½Ó¿ÚµÄÀ¹½ØÆ÷¡£

Õâ11¸ö×Ô¶¯¼ÓÔØµÄ ApplicationListener £¬ÊÇÔÚ spring.factories Öж¨Ò岢ͨ¹ý SPI À©Õ¹±»¼ÓÔØµÄ£º

ÕâÀïÁгöµÄ10¸öÊÇÔÚ spring-boot ÖмÓÔØµÄ£¬»¹ÓÐÊ£ÓàµÄ1¸öÊÇÔÚ spring-boot-autoconfigure ÖмÓÔØµÄ¡£ÆäÖÐ×î¹Ø¼üµÄ¾ÍÊÇ ConfigFileApplicationListener £¬ËüºÍºóÃæÒª½²µ½µÄÅäÖÃÎļþµÄ¼ÓÔØÏà¹Ø¡£

Ö´ÐÐrun·½·¨

ÔÚʵÀý»¯Íê³É SpringApplication ºó£¬»á½Ó×ÅÍùÏÂÖ´ÐÐËüµÄ run ·½·¨¡£

¿ÉÒÔ¿´µ½£¬ÕâÀïͨ¹ý getRunListeners ·½·¨»ñÈ¡µÄ SpringApplicationRunListeners ÖУ¬ EventPublishingRunListener °ó¶¨ÁËÎÒÃÇÇ°Ãæ¼ÓÔØµÄ11¸ö¼àÌýÆ÷¡£µ«ÊÇÔÚÖ´ÐÐ starting ·½·¨Ê±£¬¸ù¾ÝÀàÐͽøÐÐÁ˹ýÂË£¬×îÖÕʵ¼ÊÖ»Ö´ÐÐÁË 4¸ö ¼àÌýÆ÷µÄ onApplicationEvent ·½·¨£¬²¢Ã»ÓÐÎÒÃÇÏ£Íû¿´µ½µÄ ConfigFileApplicationListener £¬ÈÃÎÒÃǽÓ×ÅÍùÏ¿´¡£

µ± run ·½·¨Ö´Ðе½ prepareEnvironment ʱ£¬»á´´½¨Ò»¸ö ApplicationEnvironmentPreparedEvent ÀàÐ͵Äʼþ£¬²¢¹ã²¥³öÈ¥¡£ÕâʱËùÓеļàÌýÆ÷ÖУ¬ÓÐ7¸ö»á¼àÌýµ½Õâ¸öʼþ£¬Ö®ºó»á·Ö±ðµ÷ÓÃËüÃÇµÄ onApplicationEvent ·½·¨£¬ÆäÖоÍÓÐÁËÎÒÃÇÐÄÐÄÄîÄîµÄ ConfigFileApplicationListener £¬½ÓÏÂÀ´ÈÃÎÒÃÇ¿´¿´ËüµÄ onApplicationEvent ·½·¨ÖÐ×öÁËʲô¡£

ÔÚ·½·¨µÄµ÷Óùý³ÌÖУ¬»á¼ÓÔØÏµÍ³×Ô¼ºµÄ4¸öºóÖô¦ÀíÆ÷ÒÔ¼° ConfigFileApplicationListener ×ÔÉí£¬Ò»¹²5¸öºóÖô¦ÀíÆ÷£¬²¢Ö´ÐÐËûÃÇµÄ postProcessEnvironment ·½·¨£¬ÆäËû4¸ö¶ÔÎÒÃDz»ÖØÒª¿ÉÒÔÂÔ¹ý£¬×îÖձȽϹؼüµÄ²½ÖèÊÇ´´½¨ Loader ʵÀý²¢µ÷ÓÃËüµÄ load ·½·¨¡£

¼ÓÔØÅäÖÃÎļþ

ÕâÀïµÄ Loader ÊÇ ConfigFileApplicationListener µÄÒ»¸öÄÚ²¿À࣬¿´Ò»Ï Loader ¶ÔÏóʵÀý»¯µÄ¹ý³Ì£º

ÔÚʵÀý»¯ Loader ¶ÔÏóµÄ¹ý³ÌÖУ¬ÔÙ´Îͨ¹ýSPIÀ©Õ¹µÄ·½Ê½¼ÓÔØÁËÁ½¸öÊôÐÔÎļþ¼ÓÔØÆ÷£¬ÆäÖÐµÄ YamlPropertySourceLoader ¾ÍºÍºóÃæµÄymlÎļþµÄ¼ÓÔØ¡¢½âÎöÃÜÇйØÁª£¬¶øÁíÒ»¸ö PropertiesPropertySourceLoader Ôò¸ºÔð properties ÎļþµÄ¼ÓÔØ¡£´´½¨Íê Loader ʵÀýºó£¬½ÓÏÂÀ´»áµ÷ÓÃËüµÄ load ·½·¨¡£

ÔÚ load ·½·¨ÖУ¬»áͨ¹ýǶÌ×Ñ­»··½Ê½±éÀúĬÈÏÅäÖÃÎļþ´æ·Å·¾¶£¬ÔÙ¼ÓÉÏĬÈϵÄÅäÖÃÎļþÃû³Æ¡¢ÒÔ¼°²»Í¬ÅäÖÃÎļþ¼ÓÔØÆ÷¶ÔÓ¦½âÎöµÄºó׺Ãû£¬×îÖÕÕÒµ½ÎÒÃǵÄymlÅäÖÃÎļþ¡£½ÓÏÂÀ´£¬¿ªÊ¼Ö´ÐÐ loadForFileExtension ·½·¨¡£

ÔÚ loadForFileExtension ·½·¨ÖУ¬Ê×ÏȽ« classpath:/application.yml ¼ÓÔØÎª Resource Îļþ£¬½ÓÏÂÀ´×¼±¸Õýʽ¿ªÊ¼£¬µ÷ÓÃÁË֮ǰ´´½¨ºÃµÄ YamlPropertySourceLoader ¶ÔÏóµÄ load ·½·¨¡£

·â×°Node

ÔÚ load ·½·¨ÖУ¬¿ªÊ¼×¼±¸½øÐÐÅäÖÃÎļþµÄ½âÎöÓëÊý¾Ý·â×°£º

load ·½·¨Öе÷ÓÃÁË OriginTrackedYmlLoader ¶ÔÏóµÄ load ·½·¨£¬´Ó×ÖÃæÒâ˼ÉÏÎÒÃÇÒ²¿ÉÒÔÀí½â£¬ËüµÄÓÃ;ÊÇԭʼ׷×ÙymlµÄ¼ÓÔØÆ÷¡£ÖмäÒ»Á¬´®µÄ·½·¨µ÷ÓÿÉÒÔºöÂÔ£¬Ö±½Ó¿´×îºóÒ²ÊÇ×îÖØÒªµÄÊÇÒ»²½£¬µ÷Óà OriginTrackingConstructor ¶ÔÏóµÄ getData ½Ó¿Ú£¬À´½âÎöyml²¢·â×°³É¶ÔÏó¡£

ÔÚ½âÎöymlµÄ¹ý³ÌÖÐʵ¼ÊʹÓÃÁË Composer ¹¹½¨Æ÷À´Éú³É½Úµã£¬ÔÚËüµÄ getNode ·½·¨ÖУ¬Í¨¹ý½âÎöÆ÷ʼþÀ´´´½¨½Úµã¡£Í¨³£À´Ëµ£¬Ëü»á½«ymlÖеÄÒ»×éÊý¾Ý·â×°³ÉÒ»¸ö MappingNode ½Úµã£¬ËüµÄÄÚ²¿Êµ¼ÊÉÏÊÇÒ»¸ö NodeTuple ×é³ÉµÄ List £¬ NodeTuple ºÍ Map µÄ½á¹¹ÀàËÆ£¬ÓÉÒ»¶Ô¶ÔÓ¦µÄ keyNode ºÍ valueNode ¹¹³É£¬½á¹¹ÈçÏ£º

ºÃÁË£¬ÈÃÎÒÃÇÔٻص½ÉÏÃæµÄÄÇÕÅ·½·¨µ÷ÓÃÁ÷³Ìͼ£¬ËüÊǸù¾ÝÎÄÕ¿ªÍ·µÄymlÎļþÖÐʵ¼ÊÄÚÈÝÄÚÈÝ»æÖƵģ¬Èç¹ûÄÚÈݲ»Í¬µ÷ÓÃÁ÷³Ì»á·¢Éú¸Ä±ä£¬´ó¼ÒÖ»ÐèÒªÃ÷°×Õâ¸öÔ­Àí£¬ÏÂÃæÎÒÃǾßÌå·ÖÎö¡£

Ê×ÏÈ£¬´´½¨Ò»¸ö MappingNode ½Úµã£¬²¢½« switch ·â×°³É keyNode £¬È»ºóÔÙ´´½¨Ò»¸ö MappingNode £¬×÷ΪÍâ²ã MappingNode µÄ valueNode £¬Í¬Ê±´æ´¢ËüÏÂÃæµÄ4×éÊôÐÔ£¬ÕâÒ²ÊÇΪʲôÉÏÃæ»á³öÏÖ4´ÎÑ­»·µÄÔ­Òò¡£Èç¹ûÓеãÀ§»óҲû¹ØÏµ£¬¿´Ò»ÏÂÏÂÃæµÄÕâÕÅͼ£¬¾ÍÄÜһĿÁËÈ»Á˽âËüµÄ½á¹¹¡£

ÔÚÉÏͼÖУ¬ÓÖÒýÈëÁËÒ»ÖÖÐ嵀 ScalarNode ½Úµã£¬ËüµÄÓÃ;Ҳ±È½Ï¼òµ¥£¬¼òµ¥StringÀàÐ͵Ä×Ö·û´®ÓÃËüÀ´·â×°³É½Úµã¾Í¿ÉÒÔÁË¡£µ½ÕâÀymlÖеÄÊý¾Ý±»½âÎöÍê³É²¢Íê³ÉÁ˳õ²½µÄ·â×°£¬¿ÉÄÜÑÛ¼âµÄС»ï°éÒªÎÊÁË£¬ÉÏÃæÕâÕÅͼÖÐΪʲôÔÚ ScalarNode ÖУ¬³ýÁË value »¹ÓÐÒ»¸ö tag ÊôÐÔ£¬Õâ¸öÊôÐÔÊǸÉʲôµÄÄØ£¿

ÔÚ½éÉÜËüµÄ×÷ÓÃǰ£¬ÏÈ˵һÏÂËüÊÇÔõô±»È·¶¨µÄ¡£ÕâÒ»¿éµÄÂß¼­±È½Ï¸´ÔÓ£¬´ó¼Ò¿ÉÒÔ·­Ò»Ï ScannerImpl Àà fetchMoreTokens ·½·¨µÄÔ´Â룬Õâ¸ö·½·¨»á¸ù¾ÝymlÖÐÿһ¸ö key »ò value ÊÇÒÔʲô¿ªÍ·£¬À´¾ö¶¨ÒÔʲô·½Ê½½øÐнâÎö£¬ÆäÖоͰüÀ¨ÁË { ¡¢ [ ¡¢ ' ¡¢ % ¡¢ ? µÈÌØÊâ·ûºÅµÄÇé¿ö¡£ÒÔ½âÎö²»´øÈκÎÌØÊâ×Ö·ûµÄ×Ö·û´®ÎªÀý£¬¼òÒªµÄÁ÷³ÌÈçÏ£¬Ê¡ÂÔÁËһЩ²»ÖØÒª²¿·Ö£º

ÔÚÕâÕÅͼµÄÖм䲽ÖèÖУ¬´´½¨ÁËÁ½¸ö±È½ÏÖØÒªµÄ¶ÔÏó ScalarToken ºÍ ScalarEvent £¬ÆäÖж¼ÓÐÒ»¸öΪ true µÄ plain ÊôÐÔ£¬¿ÉÒÔÀí½âΪÕâ¸öÊôÐÔÊÇ·ñÐèÒª ½âÊÍ £¬ÊǺóÃæ»ñÈ¡ Resolver µÄ¹Ø¼üÊôÐÔÖ®Ò»¡£

ÉÏͼÖÐµÄ yamlImplicitResolvers ÆäʵÊÇÒ»¸öÌáǰ»º´æºÃµÄHashMap£¬ÒѾ­Ìáǰ´æ´¢ºÃÁËһЩ Char ÀàÐÍ×Ö·ûÓë ResolverTuple µÄ¶ÔÓ¦¹ØÏµ£º

µ±½âÎöµ½ÊôÐÔ on ʱ£¬È¡³öÊ××Öĸ o ¶ÔÓ¦µÄ ResolverTuple £¬ÆäÖÐµÄ tag ¾ÍÊÇ tag:yaml.org.2002:bool ¡£µ±È»ÁË£¬ÕâÀïÒ²²»ÊǼòµ¥µÄÈ¡³ö¾ÍÍêÊÂÁË£¬ºóÐø»¹»á¶ÔÊôÐÔ½øÐÐÕýÔò±í´ïʽµÄÆ¥Å䣬¿´Óë regexp ÖеÄÖµÊÇ·ñÄܶԵÄÉÏ£¬¼ì²éÎÞÎóʱ²Å»á·µ»ØÕâ¸ö tag ¡£

µ½ÕâÀÎÒÃǾͽâÊÍÇå³þÁË ScalarNode ÖÐ tag ÊôÐÔ¾¿¾¹ÊÇÔõô»ñÈ¡µ½µÄÁË£¬Ö®ºó·½·¨µ÷Óòã²ã·µ»Ø£¬·µ»Øµ½ OriginTrackingConstructor ¸¸Àà BaseConstructor µÄ getData ·½·¨ÖС£½ÓÏÂÀ´£¬¼ÌÐøÖ´ÐÐ constructDocument ·½·¨£¬Íê³É¶ÔymlÎĵµµÄ½âÎö¡£

µ÷Óù¹ÔìÆ÷

ÔÚ constructDocument ÖУ¬ÓÐÁ½²½±È½ÏÖØÒª£¬µÚÒ»²½ÊÇÍÆ¶Ïµ±Ç°½ÚµãÓ¦¸ÃʹÓÃÄÄÖÖÀàÐ͵Ĺ¹ÔìÆ÷£¬µÚ¶þ²½ÊÇʹÓûñµÃµÄ¹¹ÔìÆ÷À´ÖØÐÂ¶Ô Node ½ÚµãÖÐµÄ value ½øÐи³Öµ£¬¼òÒ×Á÷³ÌÈçÏ£¬Ê¡È¥ÁËÑ­»·±éÀúµÄ²¿·Ö£º

ÍÆ¶Ï¹¹ÔìÆ÷ÖÖÀàµÄ¹ý³ÌÒ²ºÜ¼òµ¥£¬ÔÚ¸¸Àà BaseConstructor ÖУ¬»º´æÁËÒ»¸öHashMap£¬´æ·ÅÁ˽ڵãµÄ tag ÀàÐ͵½¶ÔÓ¦¹¹ÔìÆ÷µÄÓ³Éä¹ØÏµ¡£ÔÚ getConstructor ·½·¨ÖУ¬¾ÍʹÓÃ֮ǰ½ÚµãÖдæÈëµÄ tag ÊôÐÔÀ´»ñµÃ¾ßÌåҪʹÓõĹ¹ÔìÆ÷£º

µ± tag Ϊ bool ÀàÐÍʱ£¬»áÕÒµ½ SafeConstruct ÖеÄÄÚ²¿Àà ConstructYamlBool ×÷Ϊ¹¹ÔìÆ÷£¬²¢µ÷ÓÃËüµÄ construct ·½·¨ÊµÀý»¯Ò»¸ö¶ÔÏó£¬À´×÷Ϊ ScalarNode ½ÚµãµÄ value µÄÖµ£º

ÔÚ construct ·½·¨ÖУ¬È¡µ½µÄval¾ÍÊÇ֮ǰµÄ on £¬ÖÁÓÚÏÂÃæµÄÕâ¸ö BOOL_VALUES £¬Ò²ÊÇÌáǰ³õʼ»¯ºÃµÄÒ»¸öHashMap£¬ÀïÃæÌáǰ´æ·ÅÁËһЩ¶ÔÓ¦µÄÓ³Éä¹ØÏµ£¬keyÊÇÏÂÃæÁгöµÄÕâЩ¹Ø¼ü×Ö£¬valueÔòÊÇ Boolean ÀàÐ굀 true »ò false £º

µ½ÕâÀymlÖеÄÊôÐÔ½âÎöÁ÷³Ì¾Í»ù±¾Íê³ÉÁË£¬ÎÒÃÇÒ²Ã÷°×ÁËΪʲôymlÖÐµÄ on »á±»×ª»¯Îª true µÄÔ­ÀíÁË¡£

˼¿¼

ÄÇô£¬ÏÂÒ»¸öÎÊÌâÀ´ÁË£¬¼ÈÈ»ymlÎļþ½âÎöÖлá×öÕâÑùµÄÌØÊâ´¦Àí£¬ÄÇôÈç¹û»»³É properties ÅäÖÃÎļþÔõôÑùÄØ£¿

sw.turnOn=on
sw.turnOff=off

Ö´ÐÐһϳÌÐò£¬¿´Ò»Ï½á¹û£º

¿ÉÒÔ¿´µ½£¬Ê¹Óà properties ÅäÖÃÎļþÄܹ»Õý³£¶ÁÈ¡½á¹û£¬¿´À´ÊÇÔÚ½âÎöµÄ¹ý³ÌÖÐûÓÐ×öÌØÊâ´¦Àí£¬ÖÁÓÚ½âÎöµÄ¹ý³Ì£¬ÓÐÐËȤµÄС»ï°é¿ÉÒÔ×Ô¼ºÈ¥ÔĶÁÒ»ÏÂÔ´Âë¡£

 

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

Java΢·þÎñÐÂÉú´úÖ®Nacos
ÉîÈëÀí½âJavaÖеÄÈÝÆ÷
JavaÈÝÆ÷Ïê½â
Java´úÂëÖÊÁ¿¼ì²é¹¤¾ß¼°Ê¹Óð¸Àý
Ïà¹ØÎĵµ

JavaÐÔÄÜÓÅ»¯
Spring¿ò¼Ü
SSM¿ò¼Ü¼òµ¥¼òÉÜ
´ÓÁ㿪ʼѧjava±à³Ì¾­µä
Ïà¹Ø¿Î³Ì

¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
Java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JAVAÐéÄâ»úÔ­ÀíÆÊÎö
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]
 
×îÐÂÎÄÕÂ
JavaÐéÄâ»ú¼Ü¹¹
JVM¡ª¡ªJavaÐéÄâ»ú¼Ü¹¹
JavaÈÝÆ÷Ïê½â
Java½ø½×--ÉîÈëÀí½âArrayListʵÏÖÔ­Àí
Java²¢·¢ÈÝÆ÷£¬µ×²ãÔ­ÀíÉîÈë·ÖÎö
×îпγÌ
java±à³Ì»ù´¡µ½Ó¦Óÿª·¢
JavaEE¼Ü¹¹¡¢ Éè¼ÆÄ£Ê½¼°ÐÔÄܵ÷ÓÅ
¸ßÐÔÄÜJava±à³ÌÓëϵͳÐÔÄÜÓÅ»¯
SpringBoot&Cloud¡¢JavaSSM¿ò¼Ü
Spring Boot Åàѵ
³É¹¦°¸Àý
¹úÄÚÖªÃûÒøÐÐ Spring+SpringBoot+Cloud+MVC
±±¾© Java±à³Ì»ù´¡ÓëÍøÒ³¿ª·¢»ù´¡
±±¾© Struts+Spring
»ªÏÄ»ù½ð ActiveMQ Ô­Àí
ijÃñº½¹« Java»ù´¡±à³Ìµ½Ó¦Óÿª·¢