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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
´Ödz¿´ TomcatÖÐÉè¼ÆÄ£Ê½·ÖÎö
 
×÷ÕߣºÎâÊ¿Áú  À´Ô´£º²©¿Í  ·¢²¼ÓÚ£º2016-10-27
  3538  次浏览      28
 

¼ò½é

Tomcat ÖÐÔËÓõÄÐí¶à¾­µäÉè¼ÆÄ£Ê½£¬ÈçÄ£°æÄ£Ê½¡¢¹¤³§Ä£Ê½ºÍµ¥ÀýģʽµÈ¡£Í¨¹ýѧϰËüÃǵÄʵ¼ùÔËÓÃÄܸøÎÒÃÇÒÔºóµÄ³ÌÐòÉè¼ÆÆðµ½Ò»¶¨µÄ½è¼ø×÷Óá£

Íâ¹Û

Íâ¹ÛÉè¼ÆÄ£Ê½ÔÚ Tomcat ÖÐÓжദʹÓã¬ÔÚ Request ºÍResponse¶ÔÏó·â×°ÖС¢StandardWrapperµ½ ServletConfig·â×°ÖС¢ApplicationContextµ½ ServletContext·â×°Öеȶ¼Óõ½ÁËÕâÖÖÉè¼ÆÄ£Ê½¡£

Ô­Àí

Õâô¶à³¡ºÏ¶¼Óõ½ÁËÕâÖÖÉè¼ÆÄ£Ê½£¬ÄÇÕâÖÖÉè¼ÆÄ£Ê½¾¿¾¹ÄÜÓÐʲ ô×÷ÓÃÄØ£¿¹ËÃû˼Ò壬¾ÍÊǽ«Ò»¸ö¶«Î÷·â×°³ÉÒ»¸öÍâ¹ÛºÃÓëÈ˼ҸüÈÝÒ×½øÐн»Á÷£¬¾ÍÏñÒ»¸ö¹ú¼ÒµÄÍâ½»²¿Ò»Ñù¡£

ÕâÖÖÉè¼ÆÄ£Ê½Ö÷ÒªÓÃÔÚÒ»¸ö´óµÄϵͳÖÐÓжà¸ö×Óϵͳ×é³Éʱ£¬Õâ ¶à¸ö×Óϵͳ¿Ï¶¨ÒªÉæ¼°µ½Ï໥ͨÐÅ£¬µ«ÊÇÿ¸ö×ÓϵͳÓÖ²»Äܽ«×Ô¼ºµÄÄÚ²¿Êý¾Ý¹ý¶àµÄ±©Â¶¸øÆäËüϵͳ£¬²»È»¾ÍûÓбØÒª»®·Ö×ÓϵͳÁË¡£ ÿ¸ö×Óϵͳ¶¼»áÉè¼ÆÒ»¸öÍâ¹Û£¬°Ñ±ðµÄϵͳ¸ÐÐËȤµÄÊý¾Ý·â×°ÆðÀ´£¬ ͨ¹ýÕâ¸öÍâ¹ÛÀ´½øÐзÃÎÊ¡£Õâ¾ÍÊÇÍâ¹ÛÉè¼ÆÄ£Ê½´æÔÚµÄÒâÒå¡£

Íâ¹ÛÉè¼ÆÄ£Ê½Ê¾ÒâͼÈçÏ£º

ClientÖ»ÄÜ·ÃÎʵ½ Fa?adeÖÐÌṩµÄÊý¾ÝÊÇÍâ¹ÛÉè¼ÆÄ£Ê½µÄ¹Ø¼ü£¬ÖÁ ÓÚ ClientÈçºÎ·ÃÎÊ Fa?adeºÍ SubsystemÈçºÎÌṩ Fa?ade Íâ¹ÛÉè ¼ÆÄ£Ê½²¢Ã»Óй涨ËÀ¡£

TomcatÖеÄdemo

Tomcat ÖÐÍâ¹ÛÉè¼ÆÄ£Ê½Ê¹Óõĺܶ࣬ÒòΪ Tomcat ÖÐÓкܶ಻ͬ×é¼þ£¬Ã¿¸ö×é¼þÒªÏ໥½»»¥Êý¾Ý£¬ÓÃÍâ¹Ûģʽ¸ôÀëÊý¾ÝÊǸöºÜºÃµÄ·½·¨¡£

ÏÂÃæÊÇ Request ÉÏʹÓõÄÍâ¹ÛÉè¼ÆÄ£Ê½£º

´ÓͼÖпÉÒÔ¿´³ö HttpRequestFacadeÀà·â×°ÁË HttpRequest ½Ó¿ÚÄÜ ¹»ÌṩÊý¾Ý£¬Í¨¹ý HttpRequestFacade·ÃÎʵ½µÄÊý¾Ý¶¼±»´úÀíµ½ HttpRequest ÖУ¬Í¨³£±»·â×°µÄ¶ÔÏó¶¼±»ÉèΪ Private»òÕß Protected ·ÃÎÊÐÞÊΣ¬ÒÔ·ÀÖ¹ÔÚ Fa?ade Öб»Ö±½Ó·ÃÎÊ¡£

¹Û²ìÕß

ÕâÖÖÉè¼ÆÄ£Ê½Ò²Êdz£ÓõÄÉè¼Æ·½·¨Í¨³£Ò²½Ð·¢²¼ -¶©ÔÄģʽ£¬Ò² ¾ÍÊÇʼþ¼àÌý»úÖÆ£¬Í¨³£ÔÚij¸öʼþ·¢ÉúµÄǰºó»á´¥·¢Ò»Ð©²Ù×÷¡£

Ô­Àí

¹Û²ìÕßģʽԭÀíÒ²ºÜ¼òµ¥£¬¾ÍÊÇÄãÔÚ×öʵÄʱºòÅÔ±ß×ÜÓÐÒ»¸öÈËÔÚ¶¢×ÅÄ㣬µ±Äã×öµÄÊÂÇéÊÇËü¸ÐÐËȤµÄʱºò£¬Ëü¾Í»á¸ú×Å×öÁíÍâÒ» ЩÊÂÇé¡£µ«ÊǶ¢×ÅÄãµÄÈ˱ØÐëÒªµ½ÄãÄÇÈ¥µÇ¼Ç£¬²»È»ÄãÎÞ·¨Í¨ÖªËü¡£ ¹Û²ìÕßģʽͨ³£°üº¬ÏÂÃæÕ⼸¸ö½ÇÉ«£º

Subject ¾ÍÊdzéÏóÖ÷Ì⣺Ëü¸ºÔð¹ÜÀíËùÓй۲ìÕßµÄÒýÓã¬Í¬Ê±¶¨ÒåÖ÷ÒªµÄʼþ²Ù×÷¡£

ConcreteSubject ¾ßÌåÖ÷Ì⣺ËüʵÏÖÁ˳éÏóÖ÷ÌâµÄËùÓж¨ÒåµÄ½Ó¿Ú£¬µ±×Ô¼º·¢Éú±ä »¯Ê±£¬»á֪ͨËùÓй۲ìÕß¡£

Observer ¹Û²ìÕߣº¼àÌýÖ÷Ìâ·¢Éú±ä»¯ÏàÓ¦µÄ²Ù×÷½Ó¿Ú¡£

TomcatÖеÄdemo

Tomcat Öй۲ìÕßģʽҲÓжദʹÓã¬Ç°Ãæ½²µÄ¿ØÖÆ×é¼þÉúÃüÖÜÆÚµÄ Lifecycle¾ÍÊÇÕâÖÖģʽµÄÌåÏÖ£¬»¹ÓÐ¶Ô ServletʵÀýµÄ´´½¨¡¢ SessionµÄ¹ÜÀí¡¢ContainerµÈ¶¼ÊÇͬÑùµÄÔ­Àí¡£ÏÂÃæÖ÷Òª¿´Ò»Ï Lifecycle µÄ¾ßÌåʵÏÖ¡£

Lifecycle µÄ¹Û²ìÕßģʽ½á¹¹Í¼£º

ÉÏÃæµÄ½á¹¹Í¼ÖУ¬LifecycleListener´ú±íµÄÊdzéÏó¹Û²ìÕߣ¬Ëü¶¨ ÒåÒ»¸ö lifecycleEvent·½·¨£¬Õâ¸ö·½·¨¾ÍÊǵ±Ö÷Ìâ±ä»¯Ê±ÒªÖ´Ðеķ½ ·¨¡£ ServerLifecycleListener´ú±íµÄÊǾßÌåµÄ¹Û²ìÕߣ¬ËüʵÏÖÁË LifecycleListener½Ó¿ÚµÄ·½·¨£¬¾ÍÊÇÕâ¸ö¾ßÌåµÄ¹Û²ìÕß¾ßÌåµÄʵÏÖ·½Ê½¡£Lifecycle½Ó¿Ú´ú±íµÄÊdzéÏóÖ÷Ì⣬Ëü¶¨ÒåÁ˹ÜÀí¹Û²ìÕߵķ½·¨ ºÍËüÒªËù×öµÄÆäËü·½·¨¡£¶ø StandardServer´ú±íµÄÊǾßÌåÖ÷Ì⣬Ëü ʵÏÖÁ˳éÏóÖ÷ÌâµÄËùÓз½·¨¡£ÕâÀï Tomcat ¶Ô¹Û²ìÕß×öÁËÀ©Õ¹£¬Ôö¼ÓÁËÁíÍâÁ½¸öÀࣺLifecycleSupport¡¢LifecycleEvent£¬ËüÃÇ×÷Ϊ¸¨ÖúÀàÀ©Õ¹Á˹۲ìÕߵŦÄÜ¡£LifecycleEventʹµÃ¿ÉÒÔ¶¨ÒåʼþÀà±ð£¬²» ͬµÄʼþ¿ÉÇø±ð´¦Àí£¬¸ü¼ÓÁé»î¡£LifecycleSupportÀà´úÀíÁËÖ÷Ìâ¶Ô ¶à¹Û²ìÕߵĹÜÀí£¬½«Õâ¸ö¹ÜÀí³é³öÀ´Í³Ò»ÊµÏÖ£¬ÒÔºóÈç¹ûÐÞ¸ÄÖ»Òª ÐÞ¸Ä LifecycleSupportÀà¾Í¿ÉÒÔÁË£¬²»ÐèҪȥÐÞ¸ÄËùÓоßÌåÖ÷Ì⣬ ÒòΪËùÓоßÌåÖ÷ÌâµÄ¶Ô¹Û²ìÕߵIJÙ×÷¶¼±»´úÀí¸ø LifecycleSupportÀàÁË¡£Õâ¿ÉÒÔÈÏΪÊǹ۲ìÕßģʽµÄ¸Ä½ø°æ¡£

LifecycleSupport µ÷Óù۲ìÕߵķ½·¨´úÂëÈçÏ£º

1. LifecycleSupport ÖÐµÄ fireLifecycleEvent ·½·¨

<span style="font-size:18px;">public void fireLifecycleEvent(String type, Object data) {  

LifecycleEvent event = new LifecycleEvent(lifecycle, type, data);

LifecycleListener interested[] = null;

synchronized (listeners) {

interested = (LifecycleListener[]) listeners.clone();

}

for (int i = 0; i < interested.length; i++)

interested[i].lifecycleEvent(event);

}</span>

Ö÷ÌâÊÇÔõô֪ͨ¹Û²ìÕßÄØ£¿¿´ÏÂÃæ´úÂ룺

2. ÈÝÆ÷ÖÐµÄ start ·½·¨

<span style="font-size:18px;">public void start() throws LifecycleException {  

lifecycle.fireLifecycleEvent(BEFORE_START_EVENT, null);

lifecycle.fireLifecycleEvent(START_EVENT, null);

started = true;

synchronized (services) {

for (int i = 0; i < services.length; i++) {

if (services[i] instanceof Lifecycle)

((Lifecycle) services[i]).start();

}

}

lifecycle.fireLifecycleEvent(AFTER_START_EVENT, null);

}</span>

ÃüÁî

Ç°Ãæ°Ñ TomcatÖÐÁ½¸öºËÐÄ×é¼þ ConnectorºÍ Container£¬±È×÷Ò»¶Ô·òÆÞ¡£ÄеĽ«½ÓÊܹýÀ´µÄÇëÇóÒÔÃüÁîµÄ·½Ê½½»¸øÅ®Ö÷ÈË¡£¶ÔÓ¦ µ½ ConnectorºÍ Container£¬ConnectorÒ²ÊÇͨ¹ýÃüÁîģʽµ÷Óà ContainerµÄ¡£

Ô­Àí

ÃüÁîģʽÖ÷Òª×÷ÓþÍÊÇ·â×°ÃüÁ°Ñ·¢³öÃüÁîµÄÔðÈκÍÖ´ÐÐÃüÁî µÄÔðÈηֿª¡£Ò²ÊÇÒ»ÖÖ¹¦Äܵķֹ¤¡£²»Í¬µÄÄ£¿é¿ÉÒÔ¶Ôͬһ¸öÃüÁî×ö³ö²»Í¬½âÊÍ¡£

ÏÂÃæÊÇÃüÁîģʽͨ³£°üº¬ÏÂÃæ¼¸¸ö½ÇÉ«£º

Client£º´´½¨Ò»¸öÃüÁ²¢¾ö¶¨½ÓÊÜÕß

Command ÃüÁÃüÁî½Ó¿Ú¶¨ÒåÒ»¸ö³éÏó·½·¨

ConcreteCommand£º¾ßÌåÃüÁ¸ºÔðµ÷ÓýÓÊÜÕßµÄÏàÓ¦²Ù×÷

Invoker ÇëÇóÕߣº¸ºÔðµ÷ÓÃÃüÁî¶ÔÏóÖ´ÐÐÇëÇó

Receiver ½ÓÊÜÕߣº¸ºÔð¾ßÌåʵʩºÍÖ´ÐÐÒ»´ÎÇëÇó

Tomcat ÖеÄdemo

TomcatÖÐÃüÁîģʽÔÚ ConnectorºÍ Container×é¼þÖ®¼äÓÐÌåÏÖ£¬ Tomcat ×÷Ϊһ¸öÓ¦Ó÷þÎñÆ÷£¬ÎÞÒÉ»á½ÓÊܵ½ºÜ¶àÇëÇó£¬ÈçºÎ·ÖÅäºÍÖ´ÐÐÕâЩÇëÇóÊDZØÐëµÄ¹¦ÄÜ¡£

ÏÂÃæ¿´Ò»Ï Tomcat ÊÇÈçºÎʵÏÖÃüÁîģʽµÄ£¬ÏÂÃæÊÇ Tomcat ÃüÁî ģʽµÄ½á¹¹Í¼£º

Connector ×÷Ϊ³éÏóÇëÇóÕߣ¬HttpConnector×÷Ϊ¾ßÌåÇëÇóÕß¡£ HttpProcessor×÷ΪÃüÁî¡£Container×÷ΪÃüÁîµÄ³éÏó½ÓÊÜÕߣ¬ ContainerBase ×÷Ϊ¾ßÌåµÄ½ÓÊÜÕß¡£¿Í»§¶Ë¾ÍÊÇÓ¦Ó÷þÎñÆ÷ Server×é¼þÁË¡£Server Ê×ÏÈ´´½¨ÃüÁîÇëÇóÕßHttpConnector¶ÔÏó£¬È»ºó´´½¨ÃüÁî HttpProcessorÃüÁî¶ÔÏó¡£ÔÙ°ÑÃüÁî¶ÔÏ󽻸øÃüÁî½ÓÊÜÕß ContainerBase ÈÝÆ÷À´´¦ÀíÃüÁî¡£ÃüÁîµÄ×îÖÕÊDZ» Tomcat µÄ ContainerÖ´Ðеġ£ÃüÁî¿ÉÒÔÒÔ¶ÓÁеķ½Ê½½øÀ´£¬ContainerÒ²¿ÉÒÔ ÒÔ²»Í¬µÄ·½Ê½À´´¦ÀíÇëÇó£¬Èç HTTP1.0ЭÒéºÍ HTTP1.1µÄ´¦Àí·½ ʽ¾Í»á²»Í¬¡£

Ö°ÔðÁ´

Tomcat ÖÐÒ»¸ö×îÈÝÒ×·¢ÏÖµÄÉè¼ÆÄ£Ê½¾ÍÊÇÖ°ÔðÁ´Ä£Ê½£¬Õâ¸öÉè ¼ÆÄ£Ê½Ò²ÊÇTomcatÖÐ ContainerÉè¼ÆµÄ»ù´¡£¬Õû¸öÈÝÆ÷µÄ¾ÍÊÇͨ ¹ýÒ»¸öÁ´Á¬½ÓÔÚÒ»Æð£¬Õâ¸öÁ´Ò»Ö±½«ÇëÇóÕýÈ·µÄ´«µÝ¸ø×îÖÕ´¦ÀíÇë ÇóµÄÄǸö Servlet¡£

Ô­Àí

Ö°ÔðÁ´Ä£Ê½£¬¾ÍÊǺܶà¶ÔÏóÓÐÿ¸ö¶ÔÏó¶ÔÆäϼҵÄÒýÓöøÁ¬½ÓÆð À´ÐγÉÒ»ÌõÁ´£¬ÇëÇóÔÚÕâÌõÁ´ÉÏ´«µÝ£¬Ö±µ½Á´ÉϵÄij¸ö¶ÔÏó´¦Àí´ËÇëÇ󣬻òÕßÿ¸ö¶ÔÏ󶼿ÉÒÔ´¦ÀíÇëÇ󣬲¢´«¸øÏÂÒ»¼Ò£¬Ö±µ½×îÖÕÁ´ ÉÏÿ¸ö¶ÔÏó¶¼´¦ÀíÍê¡£ÕâÑù¿ÉÒÔ²»Ó°Ïì¿Í»§¶Ë¶øÄܹ»ÔÚÁ´ÉÏÔö¼ÓÈÎ ÒâµÄ´¦Àí½Úµã¡£

ͨ³£Ö°ÔðÁ´Ä£Ê½°üº¬ÏÂÃæ¼¸¸ö½ÇÉ«£º

Handler£¨³éÏó´¦ÀíÕߣ©£º¶¨ÒåÒ»¸ö´¦ÀíÇëÇóµÄ½Ó¿Ú

ConcreteHandler£¨¾ßÌå´¦ÀíÕߣ©£º´¦ÀíÇëÇóµÄ¾ßÌåÀ࣬»òÕß´«¸øÏ¼Ò

Tomcat ÖеÄdemo

ÔÚtomcatÖÐÕâÖÖÉè¼ÆÄ£Ê½¼¸ºõ±»ÍêÕûµÄʹÓã¬tomcatµÄÈÝÆ÷ÉèÖþÍÊÇÖ°ÔðÁ´Ä£Ê½£¬´Ó Engine µ½ HostÔÙµ½ ContextÒ»Ö±µ½ Wrapper ¶¼ÊÇͨ¹ýÒ»¸öÁ´´«µÝÇëÇó¡£

Tomcat ÖÐÖ°ÔðÁ´Ä£Ê½µÄÀà½á¹¹Í¼ÈçÏ£º

ÉÏͼ»ù±¾ÃèÊöÁËËĸö×ÓÈÝÆ÷ʹÓÃÖ°ÔðÁ´Ä£Ê½µÄÀà½á¹¹Í¼£¬¶ÔÓ¦µÄ Ö°ÔðÁ´Ä£Ê½µÄ½ÇÉ«£¬Container°çÑݳéÏó´¦ÀíÕß½ÇÉ«£¬¾ßÌå´¦ÀíÕßÓÉ StandardEngineµÈ×ÓÈÝÆ÷°çÑÝ¡£Óë±ê×¼µÄÖ°ÔðÁ´²»Í¬µÄÊÇ£¬ÕâÀïÒý ÈëÁË PipelineºÍ Valve½Ó¿Ú¡£ËûÃÇÓÐʲô×÷ÓÃÄØ£¿

ʵ¼ÊÉÏ PipelineºÍ ValveÊÇÀ©Õ¹ÁËÕâ¸öÁ´µÄ¹¦ÄÜ£¬Ê¹µÃÔÚÁ´ÍùÏ ´«µÝ¹ý³ÌÖУ¬Äܹ»½ÓÊÜÍâ½çµÄ¸ÉÔ¤¡£Pipeline¾ÍÊÇÁ¬½Óÿ¸ö×ÓÈÝÆ÷ µÄ¹Ü×Ó£¬ÀïÃæ´«µÝµÄ RequestºÍ Response¶ÔÏóºÃ±È¹Ü×ÓÀïÁ÷µÄË®£¬ ¶ø Valve¾ÍÊÇÕâ¸ö¹Ü×ÓÉÏ¿ªµÄÒ»¸ö¸öС¿Ú×Ó£¬ÈÃÄãÓлú»áÄܹ»½Ó´¥ µ½ÀïÃæµÄË®£¬×öһЩ¶îÍâµÄÊÂÇé¡£

ΪÁË·Àֹˮ±»Òý³öÀ´¶ø²»ÄÜÁ÷µ½ÏÂÒ»¸öÈÝÆ÷ÖУ¬Ã¿Ò»¶Î¹Ü×Ó×îºó ×ÜÓÐÒ»¸ö½Úµã±£Ö¤ËüÒ»¶¨ÄÜÁ÷µ½ÏÂÒ»¸ö×ÓÈÝÆ÷£¬ËùÒÔÿ¸öÈÝÆ÷¶¼ÓÐÒ»¸öStandardXXXValve¡£Ö»ÒªÉæ¼°µ½ÕâÖÖÓÐÁ´Ê½ÊÇ´¦ÀíÁ÷³ÌÕâÊÇÒ»¸ö·Ç³£ÖµµÃ½è¼øµÄģʽ¡£

ÒµÎñ˼Ïë

TomcatÖеÄÉè¼ÆÄ£Ê½ºÜÖµµÃÑо¿Ñ§Ï°£¬ÃâµÃÈÆÂ·È¥ÉÏѧ£¬¸ã²»ºÃ³É¼¨»¹µÍÄØ¡£

²»ÖªµÀÓÐÅóÓÑ¿´¹ý¡¶ÉäµñÓ¢ÐÛ´«¡·Ä¾£¿ÆäÖÐÒ»¶ÎÊǽ²»ÆÈØÊÜÉËÈ¥°Ý¼ûÄϵ۶λÊÒ¯ÖÎÁÆ£¬Í¾ÓöÀÏÍçͯµÄÀÏÆÅçø¹Ã£¬¶þÈËÔÚéÎÝÄÚ×öËãÊõÌâ£¬çø¹ÃÊDZÕÃÅÔì³µ£¬¶ø»ÆÈØÊÇ¿´»ÆÀÏа£¨Ò²¾ÍÊÇËûÀϰÖÊÕ¼¯µÄÊé±¾£©£¬×îºó½á¹ûÏàÐÅ´ó¼Ò¶¼ÖªµÀ£ºçø¹Ãpkʧ°Ü¡£Ô­ÒòÖµµÃ̽¾¿£ºÊ±¿ÌÒªÕ¾ÔÚ¾ÞÈ˵ļç°òÉÏÀ´Ñ§Ï°¡£

   
3538 ´Îä¯ÀÀ       28
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
 
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
Visitor Parttern
ÓÉ±í¼°À￴ģʽ
Éè¼ÆÄ£Ê½Ëæ±ÊϵÁÐ
ÉîÈëdz³öÉè¼ÆÄ£Ê½-½éÉÜ
.NETÖеÄÉè¼ÆÄ£Ê½
Ïà¹ØÅàѵ¿Î³Ì

J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Ó¦ÓÃģʽÉè¼ÆJavaÆóÒµ¼¶Ó¦ÓÃ
Éè¼ÆÄ£Ê½Ô­ÀíÓëÓ¦ÓÃ
J2EEÉè¼ÆÄ£Ê½Ö¸ÄÏ
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Éè¼ÆÄ£Ê½¼°ÆäCSharpʵÏÖ

ijµçÁ¦¹«Ë¾ Éè¼ÆÄ£Ê½Ô­Àí
À¶ÍØÆË Éè¼ÆÄ£Ê½Ô­Àí¼°Ó¦ÓÃ
ÎÀÐǵ¼º½ UML & OOAD
ÌÀɭ·͸Ñз¢ÖÐÐÄ UML& OOAD
Öдïµçͨ Éè¼ÆÄ£Ê½Ô­Àí
Î÷ÃÅ×Ó Ç¶ÈëʽÉè¼ÆÄ£Ê½
 
 
 
¡¡