ÈËÉú¾ÍÊDz©

62827,C ¦ÒmÍêȫָÄÏ£º½âËø½¹µã¹¦Ð§Óëʵս²Ù×÷È«ÆÊÎö
admin

admin¹ÜÀíÔ±

  • ÎÄÕÂ5318
  • ä¯ÀÀ4719

62827,C ¦ÒmÍêȫָÄÏ£º½âËø½¹µã¹¦Ð§Óëʵս²Ù×÷È«ÆÊÎö

ÈËÉú¾ÍÊDz©¡¤(ÖйúÇø)¼¯ÍŹÙÍøadmin 2026-03-08 04:01:08 °ÄÃÅ 4719 ´Îä¯ÀÀ 0¸ö̸ÂÛ

ÉîÈë̽Ë÷C ¦Òm£º´Ó½¹µã¿´·¨µ½ÊµÕ½ÐÑÄ¿

ÔÚµ±½ñ¿ìËÙÉú³¤µÄÊý×ÖÊÖÒÕÁìÓò £¬ÕÆÎÕÒ»ÃÅǿʢÇÒÎÞаµÄ±à³ÌÓïÑÔ»ò¿ª·¢Æ½Ì¨ £¬ÎÞÒÉÊÇ¿ª·¢Õß¹¹½¨¸ßЧ¡¢¿É¿¿Ó¦ÓõÄÒªº¦ ¡£½ñÌì £¬ÎÒÃǽ«ÑÛ¹â¾Û½¹ÓÚÒ»¸ö´úºÅΪ¡¸62827¡¹µÄÏîÄ¿ £¬Æä½¹µã±»³ÆÎª¡°C ¦Òm¡± ¡£Õâ¸öÃû×Ö×Ô¼º¿ÉÄܾʹø×Åһ˿ÉñÃØÓ뼫¿ÍÉ«²Ê £¬Ëü²¢·ÇÖ¸´úij¸ö¹ãΪÈËÖªµÄ¹ûÕæÓïÑÔ £¬¶ø¸üÏñÊÇÒ»¸ö¼¯³ÉÁËÌØ¶¨ÀíÄî¡¢¹¤¾ßÁ´ºÍ²Ù×÷·¶Ê½µÄ×ÛºÏÐÔ¿ª·¢ÇéÐλò¿ò¼Ü ¡£±¾Ö¸ÄÏÖ¼ÔÚΪÄãÖÜÈ«ÆÊÎöC ¦Òm £¬½âËøÆä½¹µã¹¦Ð§ £¬²¢Í¨¹ýʵս²Ù×÷ÑÝʾ £¬ÖúÄã´ÓÈëÃŵ½ÐÑÄ¿ ¡£

µÚÒ»Õ£º³õʶC ¦Òm¡ª¡ª½¹µãÀíÄîÓë¼Ü¹¹×ÜÀÀ

Òª¼ÝÔ¦C ¦Òm £¬Ê×ÏȱØÐèÃ÷È·ÆäÉè¼ÆÕÜѧ ¡£C ¦ÒmµÄÃüÃû»òÐíÌåÏÖÁËËüÓëCÓïÑÔ¼Ò×壨C, C++, C#£©µÄijÖÖÔ¨Ô´£¨¡°C¡±£© £¬¶ø¡°¦Ò¡±£¨Sigma£©ÔÚÊýѧºÍ¹¤³ÌÖг£´ú±íÇóºÍ¡¢×ÜºÍ £¬ÏóÕ÷׿¯³ÉÓë¾ÛºÏ ¡£Òò´Ë £¬C ¦ÒmºÜ¿ÉÄÜÊÇÒ»¸öÖ¼ÔÚ¡°¾ÛºÏCϵÓïÑÔÓÅÊÆ¡±»ò¡°¹¹½¨ÖØ´óϵͳ×ܺ͡±µÄƽ̨ ¡£Æä½¹µãÄ¿µÄÔÚÓÚÆ½ºâÐÔÄÜ¡¢¿ØÖÆÁ¦Ó뿪·¢Ð§ÂÊ £¬ÓÈÆäÊÊÓÃÓÚϵͳ¼¶±à³Ì¡¢¸ßÐÔÄÜÅÌË㡢ǶÈëʽ¿ª·¢»ò¶Ô×ÊÔ´ÏûºÄ¼«ÎªÃô¸ÐµÄÁìÓò ¡£

´Ó¼Ü¹¹ÉÏ¿´ £¬C ¦Òm²¢·Ç¼òµ¥µÄÓïÑÔ±àÒëÆ÷ £¬¶øÊÇÒ»¸ö°üÀ¨ÒÔϽ¹µã×é¼þµÄÉú̬ϵͳ£º

1. ½¹µãÓïÑԹ淶£º ÔÚ±ê×¼CÓï·¨µÄ»ù´¡ÉÏ £¬ÒýÈëÁËÏÖ´úÓïÑÔÌØÕ÷ £¬Èç¸üÇå¾²µÄÀàÐÍÍÆ¶Ï¡¢¼ò»¯µ«¹¦Ð§Ç¿Ê¢µÄ·ºÐÍÖ§³Ö¡¢Ë¢ÐµÄÄÚ´æ¹ÜÀíÔ­Ó¿ÉÄܰüÀ¨ËùÓÐȨ»òÇøÓòÄÚ´æÄ£×Ó£© £¬ÒÔ¼°¶Ô²¢·¢±à³ÌµÄÒ»µÈ¹«ÃñÖ§³Ö ¡£ÆäÓï·¨Á¦Õù¾«Á· £¬ïÔÌ­Ñù°å´úÂë £¬µ«¾ø²»ÎþÉüµ×²ã¿ØÖÆÄÜÁ¦ ¡£

2. ÖÇÄܹ¹½¨¹¤¾ßÁ´£¨¦Ò-Builder£©£º ÕâÊÇÒ»¸ö¸ß¶È¼¯³ÉºÍ¿ÉÀ©Õ¹µÄ¹¹½¨ÏµÍ³ ¡£Ëü²»µ«ÄÜ´¦Öóͷ£Ô´´úÂë±àÒë £¬»¹ÄÜÖÇÄܹÜÀíÏîÄ¿ÒÀÀµ£¨°üÀ¨ÍâµØºÍÔ¶³Ì£©¡¢×Ô¶¯»¯²âÊÔ¡¢ÌìÉú¶àÖÖÄ¿µÄÃûÌã¨È羲̬¿â¡¢¶¯Ì¬¿â¡¢¿ÉÖ´ÐÐÎļþ £¬ÉõÖÁÌØ¶¨Ó²¼þƽ̨µÄ¹Ì¼þ£© ¡£ÆäÉèÖÃÎļþ½ÓÄÉÉùÃ÷ʽÓï·¨ £¬ÇåÎúÒ×¶® ¡£

3. ±ê×¼¿âÓë¦Ò½¹µã¿â£º ³ýÁËÌṩÇкÏPOSIXµÈ±ê×¼µÄ¹Å°å¿âº¯ÊýÍâ £¬C ¦ÒmÓµÓÐ×Ô¼ºÇ¿Ê¢µÄ¡°¦Ò½¹µã¿â¡± ¡£Õâ¸ö¿âÖØÐÂÉè¼ÆºÍʵÏÖÁ˳£ÓõÄÊý¾Ý½á¹¹£¨ÈçÏòÁ¿¡¢¹þÏ£±í¡¢×Ö·û´®£©¡¢Ëã·¨¡¢ÍøÂçͨѶ¡¢ÎļþI/OÒÔ¼°²¢·¢Ô­Óï £¬Ç¿µ÷Á㱾ǮÁýͳºÍÎÞÒì³£Çå¾²£¨¿ÉÄÜʹÓ÷µ»ØÂë»ò¿ÉÑ¡ÀàÐÍÀ´´¦Öóͷ£¹ýʧ£© ¡£

4. ½»»¥Ê½¿ª·¢ÇéÐÎÓëµ÷ÊÔÆ÷£¨¦Ò-IDE/¦Ò-Debug£©£º ËäȻ֧³ÖÈκÎÎı¾±à¼­Æ÷ £¬µ«C ¦ÒmÌṩÁ˹ٷ½IDE²å¼þ»ò×ÔÁ¦Ó¦Óà £¬¼¯³ÉÁË´úÂëÖÇÄܲ¹È«£¨»ùÓÚÉî¶Èѧϰģ×ÓѵÁ· £¬ÄÜÃ÷È·ÏîÄ¿ÉÏÏÂÎÄ£©¡¢ÊµÊ±¾²Ì¬ÆÊÎö¡¢Í¼Ðλ¯µ÷ÊÔÆ÷£¨¿É¿ÉÊÓ»¯ÄÚ´æ½á¹¹ºÍ²¢·¢Ïß³Ì״̬£©ºÍÐÔÄÜÆÊÎö¹¤¾ß ¡£

µÚ¶þÕ£º½âËø½¹µã¹¦Ð§¡ª¡ªÌØÕ÷Éî¶ÈÆÊÎö

Ã÷È·ÁËÕûÌå¼Ü¹¹ £¬ÎÒÃÇÀ´ÖðÒ»²ð½âC ¦ÒmÄÇЩÁîÈËÕñ·ÜµÄ½¹µã¹¦Ð§ ¡£

1. ÄÚ´æÇå¾²ÓëÎÞη²¢·¢

ÕâÊÇC ¦Òm¿ÉÄÜ×ÅÁ¦½â¾öµÄC/C++ÁìÓòµÄ¹Å°åÄÑÌâ ¡£Ëü¿ÉÄÜÒýÈëÁËÒ»Ì×¾²Ì¬ËùÓÐȨϵͳ£¨ÀàËÆRust £¬µ«Óï·¨¸ü¿¿½üC³ÌÐòԱϰ¹ß£© £¬ÔÚ±àÒëÆÚ×·×ÙËùÓбäÁ¿µÄÉúÃüÖÜÆÚ £¬¶Å¾øÊý¾Ý¾ºÕùºÍÐü´¹Ö¸Õë ¡£µ«ÆäÆæÒìÖ®´¦ÔÚÓÚÌṩÁË¡°Ç徲ģʽ¡±ºÍ¡°·ÇÇå¾²Óò¡±µÄÎÞаÇл» ¡£ÔÚ±ê¼ÇΪ¡°·ÇÇå¾²¡±µÄ´úÂë¿éÖÐ £¬¿ª·¢Õß¿ÉÒÔΪÁ˼«ÖÂÐÔÄÜ»òÓë¾ÉÓÐC´úÂë½»»¥¶øÊ¹ÓÃԭʼָÕë £¬Í¬Ê±±àÒëÆ÷»á¸ø³öÐÑÄ¿ÖÒÑÔ ¡£ÕâÖÖÉè¼Æ¼È°ü¹ÜÁËĬÈÏÇå¾² £¬ÓÖ²»°þ¶á³õ¼¶¿ØÖÆÈ¨ ¡£

2. À©Õ¹µÄ·ºÐÍÓëÔª±à³Ì

C ¦ÒmµÄ·ºÐÍÓâÔ½ÁËC++µÄÄ£°å ¡£Ëü½ÓÄÉ¡°¿´·¨¡±À´Ô¼Êø·ºÐͲÎÊý £¬´úÂë¸üÇåÎú £¬¹ýʧÐÅÏ¢¸üÓѺà ¡£Í¬Ê± £¬Ëü¿ÉÄܼ¯³ÉÁËǿʢµÄ±àÒëʱº¯ÊýÖ´ÐУ¨CTFE£©ºÍÔª¹¤¾ßЭÒé £¬ÔÊÐí¿ª·¢ÕßÔÚ±àÒëÆÚÌìÉú´úÂë¡¢ÅÌËã³£Á¿ £¬ÉõÖÁ¾ÙÐÐÖØ´óµÄÀàÐͲÙ×÷ £¬´Ó¶ø½«ÔËÐÐʱ¿ªÏú½µÖÁÁã £¬ÊµÏָ߶ÈÎÞаÇÒ¸ßÐÔÄܵÄÁýͳ ¡£

3. °ü¹ÜÀíÓëÄ£¿éϵͳ

Àë±ðÖØ´óµÄÍ·ÎļþºÍºê°üÀ¨ ¡£C ¦ÒmÓµÓÐÏÖ´ú»¯µÄÄ£¿éϵͳ £¬Ê¹ÓÃÇåÎúµÄ`import`Óï¾äµ¼È빦Ч ¡£ÅäºÏÖÐÑë°ü¿ÍÕ»£¨¦Ò-Crates£© £¬ÒÀÀµ¹ÜÀí±äµÃÍòÎÞһʧ ¡£`¦Òm.toml`ÎļþÖÐÉùÃ÷ÒÀÀµºó £¬¹¹½¨¹¤¾ß»á×Ô¶¯´¦Öóͷ£ÏÂÔØ¡¢°æ±¾ÆÊÎöºÍ±àÒëÁ´½Ó £¬²¢Ö§³ÖÒÀÀµ¸ôÀë £¬³¹µ×½â¾ö¡°ÒÀÀµµØÓü¡±ÎÊÌâ ¡£

4. ¿çƽ̨ÓëÒì¹¹ÅÌËãÖ§³Ö

C ¦Òm±àÒëÆ÷ºó¶Ë¿ÉÄÜ»ùÓÚLLVM £¬Òò´Ë×ÔȻ֧³Ö´Óx86/ARMµ½RISC-V £¬ÉõÖÁGPU£¨ÈçCUDA¡¢OpenCL£©ºÍFPGAµÈ¶àÖÖÄ¿µÄƽ̨ ¡£Æä±ê×¼¿âÌṩÁËÌõ¼þ±àÒëÇ徲̨Áýͳ²ã £¬Ê¹µÃ±àдһ´Î´úÂë £¬¼´¿É°²Åŵ½×ÀÃæ¡¢·þÎñÆ÷¡¢Òƶ¯¶Ë»òǶÈëʽװ±¸ ¡£¹ØÓÚÒì¹¹ÅÌËã £¬Ëü¿ÉÄÜÓÐÌØ¶¨µÄÓï·¨»ò¿âÀ´Àû±ãµØ±àдÄÜÔÚCPUºÍ¼ÓËÙÆ÷ÉÏЭͬÔËÐеĴúÂë ¡£

µÚÈýÕ£ºÊµÕ½²Ù×÷È«ÆÊÎö¡ª¡ª´ÓÇéÐδµ½ÏîÄ¿°²ÅÅ

ÀíÂÛ×ã¹»¸»ºñ £¬ÏÖÔÚÈÃÎÒÃÇÏÂÊÖ ¡£¼ÙÉèÎÒÃÇÒª¿ª·¢Ò»¸ö¼òÆÓµÄ²¢·¢ÍøÂç·þÎñ¡ª¡ªÒ»¸ö¶àÏ̵߳ĵ¥´ÊƵÂÊͳ¼Æ·þÎñÆ÷ ¡£

°ì·¨Ò»£ºÇéÐÎ×°ÖÃÓëÉèÖÃ

»á¼ûC ¦Òm¹ÙÍø £¬Æ¾Ö¤ÄãµÄ²Ù×÷ϵͳÏÂÔØ×°Öðü ¡£ÔÚLinux/macOSÉÏ £¬Í¨³£ÊÇÒ»¸öshell¾ç±¾£»ÔÚWindowsÉÏÔòÊÇÒ»¸ö×°ÖóÌÐò ¡£×°ÖÃÍê³Éºó £¬ÔÚÖÕ¶ËÔËÐÐ `¦Òm --version` ºÍ `¦Òmc --version` À´ÑéÖ¤±àÒëÆ÷Óë¹¹½¨¹¤¾ßÊÇ·ñÍ£µ± ¡£ÇéÐαäÁ¿Í¨³£»á×Ô¶¯ÉèÖà ¡£

°ì·¨¶þ£º½¨ÉèÐÂÏîÄ¿

ʹÓÃÏÂÁîÐй¤¾ß¿ìËٴÏîÄ¿¹Ç¼Ü£º

`¦Òm new word_freq_server`

Õâ»á½¨ÉèÒ»¸öÃûΪ`word_freq_server`µÄĿ¼ £¬ÄÚº¬ÒÔϽṹ£º

`word_freq_server/`
  ©À©¤©¤ ¦Òm.toml     # ÏîÄ¿ÉèÖúÍÒÀÀµÉùÃ÷Îļþ
  ©À©¤©¤ src/
  ©¦   ©¸©¤©¤ main.¦Ò   # ³ÌÐòÈë¿ÚÔ´Îļþ£¨C ¦ÒmÔ´ÎļþÀ©Õ¹Ãû¿ÉÄÜÊÇ .¦Ò »ò .csm£©
  ©¸©¤©¤ tests/     # ¼¯³É²âÊÔĿ¼

°ì·¨Èý£º±àд½¹µã´úÂë

·­¿ª`src/main.¦Ò` £¬ÈÃÎÒÃÇ×îÏȱàÂë ¡£Ê×ÏÈ £¬µ¼ÈëÐëÒªµÄÄ£¿é£º

```
import net.tcp; // ÍøÂçTCPÄ£¿é
import io; // ÊäÈëÊä³ö
import threading; // Ïß³Ì
import collections.hashmap; // ¹þÏ£±í
import sync; // ͬ²½Ô­Óï
```

½Ó×Å £¬½ç˵¹²ÏíµÄÊý¾Ý½á¹¹ ¡£ÎÒÃǽ«Ê¹ÓÃÒ»¸öÓÉ»¥³âËø±£»¤µÄ¹þÏ£±íÀ´´æ´¢µ¥´Ê¼ÆÊý£º

```
struct SharedCounter {
   mutex: sync.Mutex,
   map: hashmap.HashMap<string, int>,
}

impl SharedCounter {
   fn new() -> Self {
      Self {
         mutex: sync.Mutex::new(),
         map: hashmap.HashMap::new(),
      }
   }

   fn add_word(&self, word: string) {
      let guard = self.mutex.lock(); // ×Ô¶¯Ëø £¬ÍÑÀë×÷ÓÃÓòÊÍ·Å
      let count = self.map.entry(word).or_insert(0);
      *count += 1;
   }

   fn get_stats(&self) -> string {
      let guard = self.mutex.lock();
      // ÃûÌû¯Êä³öͳ¼ÆÐ§¹û...
   }
}
```

È»ºó £¬±àд´¦Öóͷ£¿Í»§¶ËÅþÁ¬µÄº¯Êý £¬Ëü½«ÔÚÒ»¸ö×ÔÁ¦µÄÏß³ÌÖÐÔËÐУº

```
fn handle_client(stream: net.tcp.TcpStream, counter: &SharedCounter) -> io.Result<()> {
   let mut reader = io.BufReader::new(stream);
   let mut line = string::new();

   while reader.read_line(&mut line)? > 0 {
      for word in line.split_whitespace() {
         counter.add_word(word.to_lowercase());
      }
      line.clear();
   }
   Ok(())
}
```

×îºó £¬ÔÚ`main`º¯ÊýÖн¨Éè¼àÌýÌ×½Ó×ֺ͹²Ïí¼ÆÊýÆ÷ £¬²¢½øÈëÖ÷Ñ­»·½ÓÊÜÅþÁ¬£º

```
fn main() {
   let listener = net.tcp::TcpListener::bind("127.0.0.1:8080").expect("°ó¶¨µØÖ·Ê§°Ü");
   let counter = SharedCounter::new();
   let arc_counter = sync.Arc::new(counter); // Ô­×ÓÒýÓüÆÊý £¬ÓÃÓÚÇå¾²¹²Ïí

   println!("µ¥´ÊƵÂÊ·þÎñÆ÷ÔËÐÐÔÚ 127.0.0.1:8080");

   for stream_result in listener.incoming() {
      match stream_result {
         Ok(stream) => {
            let counter_clone = arc_counter.clone();
            threading::spawn(move || { // Ϊÿ¸ö¿Í»§¶Ë½¨ÉèÐÂÏß³Ì
               if let Err(e) = handle_client(stream, &counter_clone) {
                  eprintln!("¿Í»§¶Ë´¦Öóͷ£¹ýʧ: {}", e);
               }
            });
         }
         Err(e) => eprintln!("ÅþÅþÁÚÊÜʧ°Ü: {}", e),
      }
   }
}
```

°ì·¨ËÄ£º¹¹½¨¡¢²âÊÔÓëÔËÐÐ

ÔÚÏîÄ¿¸ùĿ¼ £¬Ö´ÐÐ `¦Òm build` ¾ÙÐбàÒë ¡£C ¦Òm¹¹½¨¹¤¾ß»áÏÂÔØËùÓÐÒÀÀµ£¨±¾ÀýÖпÉÄÜûÓÐÌØÊâÒÀÀµ£© £¬²¢ÐбàÒë £¬²¢ÌìÉúÓÅ»¯ºóµÄ¿ÉÖ´ÐÐÎļþ £¬Ä¬ÈÏλÓÚ `target/release/` Ŀ¼Ï ¡£Ê¹Óà `¦Òm run` ¿ÉÒÔÖ±½Ó±àÒë²¢ÔËÐÐ ¡£Äã¿ÉÒÔ·­¿ªÁíÒ»¸öÖÕ¶Ë £¬Óà `telnet 127.0.0.1 8080` »ò `nc` ÏÂÁîÅþÁ¬·þÎñÆ÷ £¬ÊäÈ뼸ÐÐÓ¢Îľä×Ó £¬ÊÓ²ì·þÎñÆ÷ÈçÄÇÀïÖã¨ËäÈ»Õâ¸öʾÀý·þÎñÆ÷ûÓÐÉè¼Æ·µ»ØÏìÓ¦ £¬µ«ÄÚ²¿¼ÆÊýÔÚÒ»Á¬£© ¡£

°ì·¨Î壺ÐÔÄÜÆÊÎöÓëÓÅ»¯

C ¦ÒmÄÚÖÃǿʢµÄÆÊÎö¹¤¾ß ¡£ÔËÐÐ `¦Òm profile --output flamegraph target/release/word_freq_server` ²¢Ä£ÄâһЩ¿Í»§¶ËÇëÇó £¬¹¤¾ß»áÌìÉúÒ»¸ö»ðÑæÍ¼ £¬Ö±¹ÛչʾCPUʱ¼äÔÚÄÄЩº¯ÊýÖÐÏûºÄ ¡£Äã¿ÉÄÜ·¢Ã÷Ëø¾ºÕù³ÉΪƿ¾± £¬½ø¶ø¿ÉÒÔ˼Á¿Ê¹ÓöÁÐ´Ëø£¨`sync.RwLock`£©»ò½«È«¾Ö¼ÆÊýÆ÷¸ÄΪÏß³ÌÍâµØ¼ÆÊýÆ÷°´ÆÚºÏ²¢µÈÓÅ»¯Õ½ÂÔ ¡£

°ì·¨Áù£º½»Ö¯±àÒëÓë°²ÅÅ

ÈçÐè°²Åŵ½ARM¼Ü¹¹µÄǶÈëʽװ±¸ £¬Ö»ÐèÖ´ÐУº
`¦Òm build --target=armv7-unknown-linux-gnueabihf`
¹¹½¨¹¤¾ß»á×Ô¶¯Ê¹ÓöÔÓ¦µÄ¹¤¾ßÁ´ £¬ÌìÉúARMƽ̨µÄ¿ÉÖ´ÐÐÎļþ £¬½«Æä¿½±´µ½×°±¸Éϼ´¿ÉÔËÐÐ ¡£

±¾ÎÄÎÊÌ⣺¡¶62827,C ¦ÒmÍêȫָÄÏ£º½âËø½¹µã¹¦Ð§Óëʵս²Ù×÷È«ÆÊÎö¡·

ÈËÉú¾ÍÊDz©¡¤(ÖйúÇø)¼¯ÍŹÙÍø
ÿһÌì £¬Ã¿Ò»Ãë £¬ÄãËù×öµÄ¾öÒé¶¼»á¸Ä±äÄãµÄÈËÉú£¡

½ÒÏþ̸ÂÛ

¿ì½Ý»Ø¸´£º

̸ÂÛÁÐ±í £¨ÔÝÎÞ̸ÂÛ £¬4719ÈËΧ¹Û£©¼ÓÈëÌÖÂÛ

»¹Ã»ÓÐ̸ÂÛ £¬À´ËµÁ½¾ä°É...

Top
ÍøÕ¾µØÍ¼