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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÈçºÎ´î½¨µ¯ÐԸ߿ÉÓõijÖÐø¼¯³É»·¾³
 
×÷ÕߣºÖÜΰÌÎ À´Ô´£ºCSDN ·¢²¼ÓÚ 2015-12-24
  5255  次浏览      27
 

³ÖÐø¼¯³ÉµÄ¿ª·¢Êµ¼ùÊÇĿǰµÄÒ»¸öÈÈÃÅ»°Ì⣬ÔÚ±¾ÎÄÖУ¬ÊýÈ˿Ƽ¼ÔÆÆ½Ì¨¸ºÔðÈËÖÜΰÌνâÎöÆäÀûÓÿªÔ´µÄJenkins£¬Apache MesosºÍMarathon´î½¨µ¯ÐԵģ¬¸ß¿ÉÓõijÖÐø¼¯³É»·¾³µÄʵ¼ù£¬Ïêϸ½éÉÜÁË»·¾³ÉèÖã¬ÔÚMarathonÉϲ¿ÊðJenkinsµÄmasterʵÀý£¬ÅäÖÃJenkins MasterʵÏÖµ¯ÐÔÉìËõ£¬ÔÚÄÚ²¿µÄ´úÂë¿â»òÕß github ÉÏ´´½¨Ò»¸ö git repo£¬ÒÔ¼°Ê¹Óà marathon ²¿Êð¿É³Ö¾Ã»¯µÄ Jenkins MasterµÈ²½Öè¡£

³ÖÐø¼¯³É£¨CI£©ÊÇÒ»ÖÖÈí¼þ¿ª·¢Êµ¼ù£¬Ê¹Óõõ±£¬Ëü»á¼«´óµÄÌá¸ßÈí¼þ¿ª·¢Ð§Âʲ¢±£ÕÏÈí¼þ¿ª·¢ÖÊÁ¿£»JenkinsÊÇÒ»¸ö¿ªÔ´ÏîÄ¿£¬ËüÌṩÁËÒ»ÖÖÒ×ÓÚʹÓõijÖÐø¼¯³Éϵͳ£»MesosÊÇApacheϵÄÒ»¸ö¿ªÔ´µÄͳһ×ÊÔ´¹ÜÀíÓëµ÷¶Èƽ̨£¬Ëü±»³ÆÎªÊÇ·Ö²¼Ê½ÏµÍ³µÄÄںˣ»MarathonÊÇ×¢²áµ½Apache MesosÉϵĹÜÀí³¤Ê±Ó¦Óã¨long-running applications£©µÄFramework£¬Èç¹û°ÑMesos±È×÷Êý¾ÝÖÐÐÄKernelµÄ»°£¬ÄÇôMarathon¾ÍÊÇinit»òÕßupstartµÄdaemon¡£

±¾ÎÄÖ¼ÔÚ̽ÌÖÈçºÎÀûÓÃJenkins£¬Apache MesosºÍMarathon´î½¨Ò»Ì×µ¯ÐԵģ¬¸ß¿ÉÓõijÖÐø¼¯³É»·¾³¡£

ΪʲôҪ°ÑJenkinsÔËÐе½Apache MesosÉÏ

°ÑJenkinsÔËÐе½Apache MesosÉÏ£¬»òÕß˵ÀûÓÃApache MesosÏòJenkinsÌṩslave×ÊÔ´£¬×îÖ÷ÒªµÄÄ¿µÄÊÇÀûÓÃMesosµÄµ¯ÐÔ×ÊÔ´·ÖÅäÀ´Ìá¸ß×ÊÔ´ÀûÓÃÂÊ¡£Í¨¹ýÅäÖÃJenkins-on-Mesos²å¼þ£¬Jenkins Master¿ÉÒÔÔÚ×÷Òµ¹¹½¨Ê±¸ù¾Ýʵ¼ÊÐèÒª¶¯Ì¬µÄÏòMesosÉêÇëslave½Úµã£¬²¢ÔÚ¹¹½¨Íê³ÉµÄÒ»¶Îʱ¼äºó½«½Úµã¹é»¹¸ømesos¡£

ͬʱ£¬Marathon»á¶Ô·¢²¼µ½ËüÖ®ÉϵÄÓ¦ÓóÌÐò½øÐн¡¿µ¼ì²é£¬´Ó¶øÔÚÓ¦ÓóÌÐòÓÉÓÚijЩԭÒòÒâÍâ±ÀÀ£ºó×Ô¶¯ÖØÆô¸ÃÓ¦Óá£ÕâÑù£¬Ñ¡ÔñÀûÓÃMarathon¹ÜÀíJenkins Master±£Ö¤Á˸ù¹½¨ÏµÍ³µÄÈ«¾Ö¸ß¿ÉÓ᣶øÇÒ£¬Jenkins Master±¾ÉíҲͨ¹ýMarathon²¿ÊðÔËÐÐÔÚMesos×ÊÔ´³ØÄÚ£¬½øÒ»²½ÊµÏÖÁË×ÊÔ´¹²Ïí£¬Ìá¸ßÁË×ÊÔ´ÀûÓÃÂÊ¡£

ÏÂÃæÁ½ÕÅͼÐÎÏóµÄ˵Ã÷ÁËMarathon½«Jenkins Master²¿Êðµ½Mesos×ÊÔ´³Ø£¬ÒÔ¼°Jenkins MasterʹÓÃMesos×ÊÔ´³Ø½øÐÐ×÷Òµ¹¹½¨µÄÕû¸ö¹ý³Ì¡£

»·¾³ÉèÖÃ

ΪÁ˱ãÓÚÀí½â£¬ÕâÀïÎÒ¼ò»¯ÁËMesos/Marathon¼¯ÈºµÄ¼Ü¹¹£¬²»ÔÙ¿¼ÂǼ¯Èº±¾ÉíµÄ¸ß¿ÉÓÃÐÔ¡£ÖÁÓÚÈçºÎÀûÓÃzookeeperÅäÖø߿ÉÓõÄmesos/marathon¼¯Èº£¬¿ÉÒԲο¼MesosphereµÄ¹Ù·½Îĵµ£¬ÕâÀï²»ÔÙÕ¹¿ª¡£

ÎҴÁËÒ»¸ö°üº¬40¸ö½Úµã 192.168.3.4-192.168.3.43 µÄMesos¼¯Èº£¬ÆäÖÐÒ»¸ö½ÚµãÓÃ×÷ÔËÐÐMarthon¼°Mesos-master£¬ÆäËü39¸ö½Úµã×÷ΪmesosµÄslave£¬ÈçÏÂËùʾ¡£

ÅäÖÃÆô¶¯Marathon£¬Mesos-MasterºÍMesos-Slaveºó£¬ÏÂÃæµÄÕû¸ö²Ù×÷¶¼½«ÔÚÕâ¸ö¼¯ÈºÉÏÍê³É¡£

ÔÚMarathonÉϲ¿ÊðJenkinsµÄmasterʵÀý

MarathonÖ§³ÖwebÒ³Ãæ»òÕßRESTapiÁ½ÖÖ·½Ê½·¢²¼Ó¦Óã¬ÔÚ192.168.3.£ªÄÚÍøÖ´ÐÐÏÂÃæµÄbashÃüÁ¾Í»áͨ¹ýMarathonµÄRESTapiÔÚmesos slaveÉÏÆô¶¯Ò»¸öJenkins masterʵÀý¡£

Èç¹ûJenkins masterʵÀý±»³É¹¦²¿Êð£¬Í¨¹ýä¯ÀÀÆ÷·ÃÎÊhttp://192.168.3.4:8080(ÇëÈ·¶¨ÄãµÄä¯ÀÀÆ÷Äܹ»·ÃÎÊÄÚÍø£¬Æ©Èç¿ÉÒÔÀûÓÃÉèÖÃä¯ÀÀÆ÷´úÀíµÈ·½Ê½À´¸ã¶¨)¿ÉÒÔÔÚrunning tasksÁбíÖÐÕÒµ½jenkins£¬µã»÷½øÈëÏêϸÐÅÏ¢Ò³Ãæ£¬ÎÒÃǻῴµ½ÏÂͼ£º

·ÃÎÊhttp://192.168.3.4:5050/#/frameworks²¢ÔÚActive FrameworksÖÐÕÒµ½Marathon£¬µã»÷½øÈëÏêϸÐÅÏ¢Ò³Ãæ£¬¿ÉÒÔÔÚ¸ÃÒ³ÃæÕÒµ½Jenkins Master¾ßÌåÔËÐе½MesosÄÄһ̨SlaveÉÏ£¬ÈçÏÂͼËùʾ£º

µã»÷sandbox

ÅäÖÃJenkins MasterʵÏÖµ¯ÐÔÉìËõ

½ÓÏÂÀ´ÊÇÅäÖÃJenkins×¢²á³ÉΪMesosµÄFramework£¬ÐèҪͨ¹ýä¯ÀÀÆ÷·ÃÎÊhttp://192.168.3.25:31052/À´µ½Jenkins MasterµÄUIÒ³Ãæ¡£ÏÂÃæµÄ½ØÍ¼ÊÇÎÒÖð²½ÅäÖõÄÈ«¹ý³Ì¡£

1.µã»÷¡±ÏµÍ³¹ÜÀí¡±Öеġ±ÏµÍ³ÉèÖá±

2.ÉèÖÃMesos MasterΪ192.168.3.4:5050£»µã»÷¡±Test Connection¡±²âÊÔÁ´½Ó£¬ÏÔʾÁ´½Ó³É¹¦ºó£¬µã»÷¡±Ó¦Óá±±£´æÉèÖá£

JenkinsÔÚMesosÉÏ×¢²á³É¹¦£¬·ÃÎÊhttp://192.168.3.4:5050/#/frameworks£¬ÎÒÃÇ¿ÉÒÔÕÒµ½jenkins Framework£¬ÈçÏÂͼËùʾ£º

ÏÖÔÚÎÒÃÇ¿ÉÒÔͬʱÆô¶¯¶à¸ö¹¹½¨×÷ÒµÀ´¿´Ò»ÏÂJenkinsÔÚMesosÉϵĵ¯ÐÔÉìËõ£¬ÔÚhttp://192.168.3.25:31052/ÉÏн¨Ò»¸öÃûΪtestµÄ¹¤³Ì£¬ÅäÖÃÆä¹¹½¨¹ý³ÌΪÔËÐÐÒ»¸öshellÃüÁîtop£¬ÈçÏÂͼËùʾ£º

°Ñ¸Ã¹¤³Ì¸´ÖÆ3·Ýtest2¡¢test3ºÍtest4£¬²¢Í¬Ê±Æô¶¯Õâ4¸ö¹¤³ÌµÄ¹¹½¨×÷Òµ£¬Jenkins Master»áÏòMesosÉêÇë×ÊÔ´£¬Èç¹û×ÊÔ´·ÖÅä³É¹¦£¬Jenkins Master¾ÍÔÚ»ñµÃµÄslave½ÚµãÉϽøÐÐ×÷Òµ¹¹½¨£¬ÈçÏÂͼËùʾ£º

ÒòΪÔÚÇ°ÃæµÄϵͳÅäÖÃÀïÎÒÃÇÉèÖÃÁËÖ´ÐÐÕßÊýÁ¿Îª2£¨¼´×î¶àÓÐÁ½¸ö×÷ҵͬʱ½øÐй¹½¨£©£¬ËùÒÔÔÚÉÏͼÖÐÎÒÃÇ¿´µ½Á½¸öÕýÔÚ½øÐй¹½¨µÄ×÷Òµ£¬¶øÁíÍâÁ½¸ö×÷ÒµÔÚÅŶӵȴý¡£

ÏÂͼչʾÁ˵±Ç°µÄJenkins×÷Òµ¹¹½¨¹²Ê¹ÓÃÁË0.6CPUºÍ1.4GÄڴ棺

ÕýÔÚʹÓõÄslave½ÚµãµÄÏêϸÐÅÏ¢£º

ÅäÖÃJenkins Slave²ÎÊý(¿ÉÑ¡)

ÔÚʹÓÃJenkins½øÐÐÏîÄ¿¹¹½¨Ê±£¬ÎÒÃǾ­³£»áÃæÁÙÕâÑùÒ»ÖÖÇéÐΣ¬²»Í¬µÄ×÷Òµ»áÓв»Í¬µÄ×ÊÔ´ÐèÇó£¬ÓÐЩ×÷ÒµÐèÒªÔÚÅäÖúܸߵÄslave»úÆ÷ÉÏÔËÐУ¬µ«ÊÇÓÐЩÔò²»ÐèÒª¡£ÎªÁËÌá¸ß×ÊÔ´ÀûÓÃÂÊ£¬ÏÔÈ»£¬ÎÒÃÇÐèÒªÒ»ÖÖÊÖ¶ÎÀ´Ïò²»Í¬µÄ×÷Òµ·ÖÅ䲻ͬµÄ×ÊÔ´¡£Í¨¹ýÉèÖÃJenkins Mesos Cloud²å¼þµÄslave info£¬ÎÒÃÇ¿ÉÒÔºÜÈÝÒ×µÄÂú×ãÉÏÊöÒªÇó¡£ ¾ßÌåµÄÅäÖÃÈçÏÂͼËùʾ£º

ÖÁ´ËÎÒÃÇÀûÓÃmesosΪjenkinsµ¯ÐÔµÄÌṩ×ÊÔ´£¬Í¬Ê±ÅäÖÃJenkins SlaveµÄ²ÎÊýÀ´Âú×㲻ͬ×÷ÒµµÄ×ÊÔ´ÐèÇó£¬Ìá¸ßÁ˼¯ÈºµÄÕûÌå×ÊÔ´ÀûÓÃÂÊ¡£²¢Í¨¹ýMarathon »á×Ô¶¯¼ì²éÔËÐÐÔÚËüÖ®ÉϵÄappµÄ½¡¿µ×´Ì¬£¬ ²¢ÖØÐ·¢²¼±ÀÀ£µôµÄÓ¦ÓóÌÐò¹¦ÄÜ£¬ÊµÏÖÁ˼¯ÈºÏµÍ³µÄ²¿·Ö¸ß¿ÉÓù¦ÄÜ¡£½ÓÏÂÀ´ÎÒÃÇ¿´¿´ÈçºÎ½â¾öÊý¾Ý³Ö¾Ã»¯µÄÎÊÌâ¡£

ÈçºÎ½â¾öJenkins MasterµÄÊý¾Ý³Ö¾Ã»¯ÎÊÌâ

marathon»áÔÚJenkins MasterÒòÒâÍâ±ÀÀ£ºóÖØÐ²¿ÊðÆäµ½Ä³¸ömesos slave½ÚµãÉÏ£¬µ«marathonÎÞ·¨Î¬»¤Ó¦ÓóÌÐòµÄÊý¾Ý£¬¼´ÎÒÃÇÐèÒªÒ»¸ö Jenkins Master µÄÊý¾Ý³Ö¾Ã»¯·½·¨£¬ÓÉÓÚJenkins MasterÊǽ«Êý¾Ý´æ´¢ÔÚXMLÎļþ¶ø²»ÊÇÊý¾Ý¿âÖУ¬ÕâÀï¿ÉÒÔÀûÓÃjenkins²å¼þSCM Sync configuration pluginÀ´½«Jenkins MasterµÄÊý¾Ýͬ²½µ½ÏàÓ¦µÄrepo¡£

ÔÚÄÚ²¿µÄ´úÂë¿â»òÕß github ÉÏ´´½¨Ò»¸ö git repo

ÎÒÃÇÐèÒªÔÚÄÚ²¿µÄ´úÂë¿â»òÕß¹«¹²´úÂë¿â´´½¨Ò»¸öÃûΪ jenkins-on-mesos µÄ gitrepo £¬ Æ©È磺git@gitlab.dataman.io:wtzhou/jenkins-on-mesos.git ¡£ Õâ¸ö repo ÊÇ jenkins ²å¼þ SCM Sync configuration plugin ÓÃÀ´Í¬²½jenkinsÊý¾ÝµÄ¡£

ÁíÍ⣬¶ÔÓÚSCM-Sync-ConfigurationÀ´Ëµ£¬·Ç³£¹Ø¼üµÄÒ»²½ÊDZ£Ö¤ÆäÓÐȨÏÞ pull/push ÉÏÃæÎÒÃÇËù´´½¨µÄgitrepo¡£ ÒÔÎÒÃǹ«Ë¾µÄÄÚ²¿»·¾³ÎªÀý£¬ ÔÚmesos¼¯Èº´î½¨Ê±£¬ÎÒÃÇÊ×ÏÈʹÓÃansibleΪËùÓеÄmesos slave½ÚµãÌí¼ÓÁËÓû§core²¢Éú³ÉÁËÏàͬµÄssh keypair£¬Í¬Ê±ÔÚÄÚ²¿µÄgitlabÉÏ×¢²áÁËÓû§core²¢ÉÏ´«ÆäÔÚslave½ÚµãÉϵĹ«Ô¿£¬È»ºóÌí¼Ó¸ÃÓû§coreΪrepo git@gitlab.dataman.io:wtzhou/jenkins-on-mesos.gitµÄdeveloper»òÕßowner£¬ÕâÑùÿ¸ömesos slave½Úµã¶¼¿ÉÒÔÒÔÓû§coreÀ´ pull/push Õâ¸ögitrepoÁË¡£

ʹÓà marathon ²¿Êð¿É³Ö¾Ã»¯µÄ Jenkins Master

ÎÒÃÇÊ×ÏÈÐèÒªwgetÁ½¸öÎļþ:

ÆäÖÐstart-jenkins.app.shÊÇÐèÒªÅäÖõģ¬

±à¼­ÈçÏÂ3¸ö±äÁ¿£º

1. SCM_SYNC_GIT: ÉÏÃæËùÅäÖÃµÄ gitrepo µØÖ·, ¸ñʽÀý×Ó£º git@gitlab.dataman.io:wtzhou/jenkins-on-mesos.git

2. APP_USER: marathon »áÒÔÓû§ APP_USER À´²¿Êð jenkins £¬´Ó¶ø²å¼þSCM-Sync-Configuration»áÒÔÓû§APP_USERÀ´¸úgitrepo½øÐÐͬ²½¡£ ËùÒÔÔÚÎÒÃǵÄÕâ¸öÀý×ÓÀÎÒÃÇÈÃAPP_USER=core¡£

3. MARATHON_PORTAL: marathon µÄ RESTapi Èë¿Ú£¬ÀýÈ磺 http://marathon.dataman.io:8080/v2/apps

½ÓÏÂÀ´¾Í¿ÉÒÔÖ´ÐÐÃüÁî:

À´Èà marathon ²¿ÊðÎÒÃÇµÄ Jenkins Master ÁË¡£ÕâÑù£¬ ÎÒÃÇÔÚ Jenkins Master ÉÏËù±£´æµÄÈκÎÅäÖ㬴´½¨µÄÈκÎjob¶¼»á±»SCM-Sync-Configurationͬ²½µ½repoÀ²¢ÔÚ Jenkins Master ±»ÖØÐ·¢²¼ºó download µ½±¾µØ¡£

¹ØÓÚSCM-Sync-ConfigurationµÄ¸ü¶àÐÅÏ¢

SCM-Sync-Configuration³õʼ»¯Íê³Éºó£¨ÔÚÎÒÃÇ»·¾³Àï³õʼ»¯¹ý³Ì»á±»×Ô¶¯´¥·¢£©£¬Ã¿´ÎÅäÖøüлòÕßÌí¼Ó£¬±à¼­¹¹½¨×÷ҵʱ£¬ÎÒÃÇ»áµÃµ½Ò»¸öÌáÊ¾Ò³ÃæÀ´ÎªÐ嵀 commit message Ìí¼Ó comment£¬ÈçÏÂͼËùʾ£º

µ±Ç°£¬ËùÖ§³ÖµÄÅäÖÃÎļþÈçÏ£º

1. ¹¹½¨×÷ÒµµÄÅäÖÃÎļþ (/jobs/*/config.xml)

2. È«¾ÖµÄ Jenkins/Hudson ϵͳÅäÖÃÎļþ (/config.xml)

3. »ù±¾µÄ²å¼þµÄÅäÖÃÎļþ (/hudson*.xml, /scm-sync-configuration.xml)

4. Óû§ÊÖ¶¯Ö¸¶¨µÄÅäÖÃÎļþ

ÁíÍ⣬ÎÒÃÇ¿ÉÒÔÔÚÿһҳµÄÏÂÃæ¿´µ½ scm sync config µÄ״̬£¬ ÏÂͼÊÇͬ²½³ö´íʱµÄ½ØÍ¼£¬Äã¿ÉÒÔÈ¥System Log²é¿´¾ßÌåµÄ³ö´íÐÅÏ¢¡£

ÖÁ´Ë£¬ÎÒÃÇÓÖ½â¾öÁËJenkins MasterµÄÊý¾Ý³Ö¾Ã»¯ÎÊÌâ¡£µ½ÕâÀÎÒÃǾÍÕæÕý´î½¨Íê³ÉÁË»ùÓÚJenkins, Apache MesosºÍMarathonµÄµ¯ÐԸ߿ÉÓõijÖÐø¼¯³É»·¾³¡££¨Ôð±à/Öܽ¨¶¡£©

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

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

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

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

¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
ÏîÄ¿¹ÜÀí:MavenÈÃÊÂÇé±äµÃ¼òµ¥
³ÖÐø¼¯³É¹¤¾ßhudson
³ÖÐø¼¯³É
MavenȨÍþÖ¸ÄÏ
³ÌÐò¼¯(UMLÖеİü)Ö®¼äÑ­»·


²úÆ··¢²¼¹ÜÀí
ÅäÖùÜÀí·½·¨¡¢Êµ¼ù¡¢¹¤¾ß
¶à²ã´Î¼¯³ÉÅäÖùÜÀí
ʹÓÃCCÓëCQ½øÐÐÏîĿʵ¼ù
CVSÓëÅäÖùÜÀí
Subversion¹ÜÀíÔ±


º£º½¹É·Ý ÖØ¹¹¼°³ÖÐø¼¯³É
µçÑлªÔ´ Éè¼ÆÔ­Àí¡¢½¨Ä£ÓëÖØ¹¹
Èí¼þÅäÖùÜÀíÈÕ¹¹½¨¼°³ÖÐø¼¯³É
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
ÖйúÈí¼þÑз¢ÖÐÐÄ µ¥Ôª²âÊÔÓëÖØ¹¹
µ¥Ôª²âÊÔ¡¢Öع¹ºÍ³ÖÐø¼¯³Éʵ¼ù
ÂÞ¿ËΤ¶û C++µ¥Ôª²âÊÔ+ÖØ¹¹+Gtest