国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

這篇具有很好參考價(jià)值的文章主要介紹了Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1.題目要求

編寫C語(yǔ)言程序,模擬實(shí)現(xiàn)首次/最佳/最壞適應(yīng)算法(選擇其中之一即可)的內(nèi)存塊分配和回收,要求每次分配和回收后顯示出空閑分區(qū)和已分配分區(qū)的情況。假設(shè)初始狀態(tài)下,可用的內(nèi)存空間為640KB。
假設(shè)下列作業(yè)請(qǐng)求序列:
(1)作業(yè)1 申請(qǐng)130 KB (2)作業(yè)2 申請(qǐng)60 KB (3)作業(yè)3 申請(qǐng)100 KB
(4)作業(yè)2 釋放60 KB (5)作業(yè)3 釋放100 KB (6)作業(yè)1 釋放130 KB
顯示每次作業(yè)申請(qǐng)或釋放后當(dāng)前內(nèi)存情況。

2.分析設(shè)計(jì)

根據(jù)題目,分析設(shè)計(jì)如下:
(1)程序初始需要提供用戶選擇方式。選擇首次適應(yīng)算法,還是最佳是適應(yīng)算法,選擇作業(yè)的回收,作業(yè)的展示,程序的退出能。
(2)當(dāng)用戶選擇首次適應(yīng)算法或者最佳適應(yīng)算法,需要用戶輸入分配內(nèi)存的大小。在輸入大小時(shí)在根據(jù)算法的設(shè)計(jì)進(jìn)行分配。
(3)當(dāng)內(nèi)存分配過(guò)后,如果分配成功就需要提示成功,如果失敗則需要提示失敗。
(4)內(nèi)存回收需要用戶輸入回收作業(yè)的ID,根據(jù)作業(yè)的ID對(duì)內(nèi)存進(jìn)行回收。在回收時(shí)要分多種情況進(jìn)行判斷。
(5)作業(yè)展示,需要向用戶展示,作業(yè)的ID,起始地址,內(nèi)存大小,狀態(tài)是已分配還是空閑。
(6)一個(gè)作業(yè)需要用到數(shù)據(jù)結(jié)構(gòu)中的雙向列表,用一個(gè)雙向列表來(lái)表示節(jié)點(diǎn)。

3.程序代碼

#include <stdio.h>
#include <stdlib.h>

struct area
{
  int id;             // 編號(hào)
  int addr_front;     //首地址
  int addr_end;      //結(jié)束地址
  int size;           //分區(qū)大小
  int flag;           //分配標(biāo)志,0表示空閑,1表示占用
  struct area *front; //上一分區(qū)
  struct area *next;  //下一分區(qū)
};

typedef struct area partion;

partion *head = NULL; //分區(qū)隊(duì)列頭節(jié)點(diǎn)
int need;             //需求
int choice = 1;       //操作選項(xiàng)

partion *createPartion(int id, int addr_front, int size, int flag); //生成一個(gè)節(jié)點(diǎn)
void inputNeed();                                                   //輸入需求量
void assign(partion *ptr, int need);                                //分配分區(qū)
void first_fit();                                                   //首次適應(yīng)算法
void best_fit();                                                    //最佳適應(yīng)算法
void showMemoryInfo();                                              //打印分區(qū)分配狀況
void recovery();                                                    //分區(qū)回收
void changeIdValue(partion *ptr, int delta);                        //改變從ptr開始所有節(jié)點(diǎn)的id值

int main(void)
{
  head = createPartion(0, 0, 640, 0);
  while (choice != 0)
  {
    puts("-------------------\n請(qǐng)選擇操作:\n1:首次適應(yīng);\n2:最佳適應(yīng);\n3:內(nèi)存回收;\n4:展示詳細(xì)信息;\n0:推出......\n-------------------");
    scanf("%d", &choice);
    switch (choice)
    {
    case 1:
      inputNeed();
      first_fit();
      break;
    case 2:
      inputNeed();
      best_fit();
      break;
    case 3:
      recovery();
      showMemoryInfo();
      break;
    case 4:
      showMemoryInfo();
      break;
    case 0:
      puts("byebye");
      break;
    default:
      break;
    }
  }

  return 0;
}

//創(chuàng)建一個(gè)節(jié)點(diǎn)
partion *createPartion(int id, int addr_front, int size, int flag)
{
  partion *p = (partion *)malloc(sizeof(partion));
  p->id = id;
  p->addr_front = addr_front;
  p->addr_end=addr_front+size-1;
  p->size = size;
  p->flag = flag;
  p->front = NULL;
  p->next = NULL;
  return p;
}

void inputNeed()
{
  printf("請(qǐng)輸入需要的內(nèi)存大小:");
  scanf("%d", &need);
}

void first_fit()
{
  partion *fit = NULL;
  partion *ptr = head;
  while (ptr != NULL)
  {
    if (ptr->size >= need && ptr->flag == 0)//如果是空閑并且大小大于則給予分配
    {
      fit = ptr;
      break;
    }
    ptr = ptr->next;
  }
  if (fit != NULL)
  {
    assign(fit, need);
    printf("內(nèi)存分配成功,分配如下:\n");
    showMemoryInfo();
  }
  else
  {
    puts("抱歉,內(nèi)存分配失敗!");
    free(fit);
  }
}

void best_fit()
{
  partion *fit = NULL;
  partion *ptr = head;
  int flag = 0; //flag 表示是否找到可分配的分區(qū)
  while (ptr != NULL)
  {
    if (ptr->flag == 0 && ptr->size >= need)
    {
      if (flag == 0)
      {
        //只有遇到的第一個(gè)可分配分區(qū)會(huì)執(zhí)行此操作
        fit = ptr;
        flag = 1;
      }
      else
      {
        //若遇到可分配且分區(qū)更小即更適合的則更新
        if (ptr->size < fit->size)
        {
          fit = ptr;
        }
      }
    }
    ptr = ptr->next;
  }
  //先處理沒找到合適分區(qū)的情況
  if (flag == 0)
  {
    puts("抱歉,未找到合適的分區(qū)!");
    free(fit);
    return;
  }
  //找到則分配
  assign(fit, need);
  puts("內(nèi)存分配成功,分配如下:\n!");
  showMemoryInfo();
}

void showMemoryInfo()
{
  partion *ptr = head;
  puts("\n\n---------------------------------------------");
  puts("總內(nèi)存分配情況如下:");
  puts("---------------------------------------------");
  puts("序號(hào)ID****開始地址****結(jié)束地址****內(nèi)存大小****狀態(tài)****");
  while (ptr != NULL)
  {
    printf("%-12d%-12d%-12d%-12d",ptr->id,ptr->addr_front,ptr->addr_end,ptr->size);
   // printf("序號(hào)id:%21d%10c\n開始地址:%10d%10c\n", ptr->id, '|', ptr->addr_front, '|');
    //printf("結(jié)束地址:%10d%10c\n", ptr->addr_end, '|');
    //printf("內(nèi)存大小:%11d%10c\n", ptr->size, '|');
    printf("%-12s\n", ptr->flag == 0 ? "空閑" : "已分配");
    puts("-----------------------------------------------------");
    ptr = ptr->next;
  }
  puts("---------------------------------------------\n\n");
}

void assign(partion *ptr, int need)
{

  if (need == ptr->size)//空閑的空間恰好等同需要的空間
  {
    ptr->flag = 1;
    return;
  }
  //空閑的空間大于需要的空間
  partion *assigned = createPartion(ptr->id, ptr->addr_front, need, 1);
  assigned->next = ptr;
  assigned->front = ptr->front;
  changeIdValue(ptr, 1);//把后面的節(jié)點(diǎn)的id值都增加1
  ptr->addr_front += need;
  ptr->size -= need;
  if (ptr->front != NULL)//空閑區(qū)的頭不空,就在前一個(gè)節(jié)點(diǎn)后面添加分配的節(jié)點(diǎn)
  {
    ptr->front->next = assigned;
  }
  else//空閑節(jié)點(diǎn)前沒有節(jié)點(diǎn)
  {
    head = assigned;
  }

  ptr->front = assigned;//空閑節(jié)點(diǎn)的頭指向新分配的
}

void recovery()
{
  printf("請(qǐng)輸入需要回收作業(yè)的ID號(hào):");
  int id, flag = 0;
  scanf("%d", &id);
  partion *ptr = head;
  while (ptr != NULL)
  {
    if (id == ptr->id)
    {
      flag = 1;
      break;
    }
    ptr = ptr->next;
  }
  if (flag == 0)
  {
    puts("沒有找到你需要回收的作業(yè)!");
    return;
  }
  if (ptr->flag == 0)
  {
    puts("該ID已經(jīng)是空閑的了");
    return;
  }
  if (ptr->front == NULL)
  {
    //第一個(gè)分區(qū)

    if (ptr->next == NULL || ptr->next->flag == 1)
    {
      //后面不空或后面沒有
      ptr->flag = 0;
      return;
    }
    if (ptr->next->flag == 0)
    {
      //后面空
      ptr->size += ptr->next->size;
      ptr->flag = 0;//標(biāo)記為空閑
      if (ptr->next->next != NULL)//把下一個(gè)節(jié)點(diǎn)的頭指向該節(jié)點(diǎn)
      {
        ptr->next->next->front = ptr;
      }
      ptr->next = ptr->next->next;//合并兩個(gè)節(jié)點(diǎn)

      free(ptr->next);//真實(shí)釋放節(jié)點(diǎn)
      return;
    }
  }
  if (ptr->next == NULL)
  {
    //最后一個(gè)分區(qū)
    if (ptr->front == NULL || ptr->front->flag == 1)
    {
      //前面不空或者前沒有
      ptr->flag = 0;
      return;
    }
    if (ptr->front->flag == 0)
    {
      //前面為空
      ptr->front->size += ptr->size;
      ptr->front->next = NULL;
      free(ptr);
      return;
    }
  }
  if (ptr->front->flag == 0 && ptr->next->flag == 0)
  {
    //上下都空
    ptr->front->size += ptr->size + ptr->next->size;
    ptr->front->next = ptr->next->next;
    if (ptr->next->next != NULL)
    {
      ptr->next->next->front = ptr->front;
    }
    changeIdValue(ptr->front->next, -2); //更改id
    free(ptr->next);
    free(ptr);
    return;
  }
  if (ptr->front->flag == 0 && ptr->next->flag == 1)
  {
    //上空下不空
    ptr->front->size += ptr->size;
    ptr->front->next = ptr->next;
    ptr->next->front = ptr->front;
    changeIdValue(ptr->front->next, -1);
    free(ptr);
    return;
  }
  if (ptr->front->flag == 1 && ptr->next->flag == 0)
  {
    //上不空下空
    ptr->size += ptr->next->size;
    if (ptr->next->next != NULL)
    {
      ptr->next->next->front = ptr;
    }
    partion *p_next = ptr->next;  //保存一下下方為空的那個(gè)分區(qū),以便一會(huì)釋放 
    ptr->next = ptr->next->next;
    ptr->flag = 0;
    changeIdValue(ptr->next, -1);
    free(p_next);
    return;
  }
  if (ptr->front->flag == 1 && ptr->next->flag == 1)
  {
    //上下都不空
    ptr->flag = 0;
    return;
  }  
}

void changeIdValue(partion *ptr, int delta)
{
  while (ptr != NULL)
  {
    ptr->id += delta;
    ptr = ptr->next;
  }
}

4.運(yùn)行截圖

首次適應(yīng)算法
開始
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法
(1)作業(yè)1 申請(qǐng)130 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(2)作業(yè)2 申請(qǐng)60 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(3)作業(yè)3 申請(qǐng)100 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(4)作業(yè)2 釋放60 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(5)作業(yè)3 釋放100 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(6)作業(yè)1 釋放130 KB

Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

最佳適應(yīng)算法
開始:
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(1)作業(yè)1 申請(qǐng)130 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(2)作業(yè)2 申請(qǐng)60 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(3)作業(yè)3 申請(qǐng)100 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(4)作業(yè)2 釋放60 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(5)作業(yè)3 釋放100 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

(6)作業(yè)1 釋放130 KB
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

5.程序說(shuō)明

總流程圖:
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

總流程圖是提供程序開始運(yùn)行的界面圖,供用戶選擇,其中用戶可以選擇的選項(xiàng)有,首次適應(yīng)算法,最佳適應(yīng)算法,內(nèi)存回收,內(nèi)存作業(yè)的顯示。每選擇一個(gè)功能就執(zhí)行相應(yīng)的函數(shù)代碼。

首次適應(yīng)算法流程圖:
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

首次適應(yīng)算法,首先用戶輸入作業(yè)需要的內(nèi)存大小,然后程序從低地址向高地址尋找空間空間,如果找到空閑空間,如果空閑空間的大小比作業(yè)需要的空間大則進(jìn)行分配,如果空閑空間比作業(yè)需要的空間小,則繼續(xù)尋找下一個(gè)空閑空間。如果所有的空閑空間都尋找完也沒有符合要求的,那么作業(yè)的內(nèi)存分配失敗。

最佳適應(yīng)算法流程圖
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

最佳適應(yīng)算法,首頁(yè)用戶輸入作業(yè)需要的內(nèi)存空間,程序從低地址開始尋找空閑空間,如果第一次找合適的空間分配,就臨時(shí)存儲(chǔ)這個(gè)空間地址,繼續(xù)向下繼續(xù)尋找符合的地址空間,如果尋找到合適的空間空間范圍,且新的空間大小比臨時(shí)存儲(chǔ)的空間大小還小,則新的符合空間更新為臨時(shí)符合空間,依次類推到最后。如果程序沒有臨時(shí)最佳的地址空間,則并沒有分配到內(nèi)存,所以作業(yè)內(nèi)存分配失敗。如果有臨時(shí)最佳空間地址,則把最佳的地址空間分配給作業(yè)。

內(nèi)存回收流程圖:
Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法

作業(yè)回收,首先需要需要輸入回收作業(yè)的ID,先判斷作業(yè)ID是否存在,存在才能進(jìn)行釋放,在ID存在的前提下判斷,該ID的作業(yè)狀態(tài),只有為已分配狀態(tài)猜才進(jìn)行釋放。釋放則的分情況討論。釋放的節(jié)點(diǎn)分為頭部,中間,尾部。如果釋放的節(jié)點(diǎn)前后已經(jīng)有空閑空間,就需要進(jìn)行合并。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-450471.html

到了這里,關(guān)于Ubuntu22.2下C語(yǔ)言編程實(shí)現(xiàn),首次,最佳適應(yīng)算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 玄子Share-自然語(yǔ)言編程(NLP)_Java開發(fā)小白向 ChatGPT 提問的最佳模板

    以下內(nèi)容均為 ChatGPT 回答 玄子: 我向你提問時(shí),問題描述精確的重要性 ChatGPT 3.5 問題描述的精確性非常重要,因?yàn)樗梢宰尰卮鹫吒玫乩斫饽膯栴},并且更容易提供準(zhǔn)確和有用的解決方案。如果問題描述不夠清晰或不夠詳細(xì),回答者可能會(huì)誤解您的問題或者理解不到位

    2023年04月09日
    瀏覽(28)
  • Ubuntu系統(tǒng)下c語(yǔ)言的簡(jiǎn)單編程

    Ubuntu系統(tǒng)下c語(yǔ)言的簡(jiǎn)單編程

    本文主要講述關(guān)于在ubuntu系統(tǒng)下編程c語(yǔ)言的流程,包括網(wǎng)絡(luò)設(shè)置、apt源的更換、簡(jiǎn)單的c語(yǔ)言在Linux和Windows下的對(duì)比以及用Makelife編寫上述程序。 準(zhǔn)備一臺(tái)PC機(jī)并安裝好Vmware(筆者采用的是15.5版本),我們使用 NetworkManager 進(jìn)行網(wǎng)絡(luò)配置。 1.將虛擬機(jī)網(wǎng)絡(luò)適配器調(diào)為橋接模式 選擇

    2023年04月12日
    瀏覽(18)
  • 5 種編程語(yǔ)言實(shí)現(xiàn)春節(jié)快樂

    5 種編程語(yǔ)言實(shí)現(xiàn)春節(jié)快樂

    經(jīng)典:C語(yǔ)言實(shí)現(xiàn)春節(jié)快樂,應(yīng)該沒人看不懂叭 源代碼演示: ?編譯運(yùn)行結(jié)果如下: 是不是人人都能看懂的春節(jié)快樂,此外還提供了其他語(yǔ)言的春節(jié)快樂 C++實(shí)現(xiàn)春節(jié)快樂 源代碼演示: 編譯運(yùn)行結(jié)果如下: C#實(shí)現(xiàn)春節(jié)快樂 源代碼演示: 編譯運(yùn)行結(jié)果如下: Java實(shí)現(xiàn)春節(jié)快樂:

    2024年02月03日
    瀏覽(14)
  • 【區(qū)塊鏈】C語(yǔ)言編程實(shí)現(xiàn)三叉Merkle樹

    【區(qū)塊鏈】C語(yǔ)言編程實(shí)現(xiàn)三叉Merkle樹

    1. Merkle樹簡(jiǎn)介 ??如上圖所示,Merkle 樹的葉子節(jié)點(diǎn)為交易序列,對(duì)每一筆交易進(jìn)行 Hash(SHA 256算法) 之后,然后對(duì)得到的 Hash 節(jié)點(diǎn)進(jìn)行拼接再次進(jìn)行 Hash 運(yùn)算,如此遞歸直到遞歸至根節(jié)點(diǎn)。 ??如上圖所示 Merkle 樹的優(yōu)點(diǎn)在于可快速驗(yàn)證某個(gè)區(qū)塊是否存在指定交易,如要驗(yàn)

    2024年04月14日
    瀏覽(25)
  • 二叉樹的編程與實(shí)現(xiàn)(C語(yǔ)言)

    二叉樹的編程與實(shí)現(xiàn)(C語(yǔ)言)

    一 、目的 : 掌握指針變量、動(dòng)態(tài)變量的含義; 掌握二叉樹的結(jié)構(gòu)特征,以及各種存儲(chǔ)結(jié)構(gòu)的特點(diǎn)及適用范圍; 掌握指針類型描述、訪問和處理二叉樹的運(yùn)算; 二 、環(huán)境: operating system version:Win11 CPU instruction set:? x64 Integrated Development Environment:Viusal Studio 2022 三 、內(nèi)容:

    2024年02月05日
    瀏覽(16)
  • 最短路徑算法的編程與實(shí)現(xiàn) C語(yǔ)言

    最短路徑算法的編程與實(shí)現(xiàn) C語(yǔ)言

    1.掌握最短路徑算法的基本原理及編程實(shí)現(xiàn); operating system version:Win11 CPU instruction set: ?x64 Integrated Development Environment:Viusal Studio 2022 1)建立一張圖,選擇一種存儲(chǔ)結(jié)構(gòu)(鄰接矩陣或鄰接表)初始化該圖; 2)用Dijkstra算法實(shí)現(xiàn)點(diǎn)與點(diǎn)之間的最短路徑。 1) 實(shí)現(xiàn)圖的兩種表示方法;

    2024年02月11日
    瀏覽(21)
  • 用C語(yǔ)言編程實(shí)現(xiàn)兩個(gè)字符串?dāng)?shù)組的連接

    用C語(yǔ)言編程實(shí)現(xiàn)兩個(gè)字符串?dāng)?shù)組的連接

    寫一函數(shù),將兩個(gè)字符串連接。不要使用 strcat 函數(shù)。 說(shuō)明: (1)連接兩個(gè)字符串的函數(shù)名為:Connect; (2)將連個(gè)字符串存入兩個(gè)字符串?dāng)?shù)組中,要保證第一個(gè)字符串的長(zhǎng)度能夠容納兩個(gè)字符串之和; (3)連接兩個(gè)字符串主要是找到第一個(gè)字符串的結(jié)尾,然后將第二個(gè)字

    2024年02月12日
    瀏覽(24)
  • 【C語(yǔ)言】C語(yǔ)言編程實(shí)戰(zhàn):Base64編解碼算法從理論到實(shí)現(xiàn)(附完整代碼)

    ?? 作者簡(jiǎn)介 :阿里巴巴嵌入式技術(shù)專家,深耕嵌入式+人工智能領(lǐng)域,具備多年的嵌入式硬件產(chǎn)品研發(fā)管理經(jīng)驗(yàn)。 ?? 博客介紹 :分享嵌入式開發(fā)領(lǐng)域的相關(guān)知識(shí)、經(jīng)驗(yàn)、思考和感悟,歡迎關(guān)注。提供嵌入式方向的學(xué)習(xí)指導(dǎo)、簡(jiǎn)歷面試輔導(dǎo)、技術(shù)架構(gòu)設(shè)計(jì)優(yōu)化、開發(fā)外包等服

    2024年03月13日
    瀏覽(102)
  • C語(yǔ)言編程實(shí)現(xiàn),計(jì)算每天進(jìn)步一點(diǎn)點(diǎn)一年后的效果

    C語(yǔ)言編程實(shí)現(xiàn),計(jì)算每天進(jìn)步一點(diǎn)點(diǎn)一年后的效果

    本來(lái)的基數(shù)為1,如果好好學(xué)習(xí)時(shí)能力值相比前一天提高1%,當(dāng)放任時(shí)相比前一天下降1%。1年(365天)后的效果相差多少呢? 原基數(shù)為1,努力一天進(jìn)步1%,效果1*(1+0.01),努力兩天是在前一天的基礎(chǔ)上進(jìn)步1%,結(jié)果是1*(1+0.01)*(1+0.01),一年后天天向上的力量是(1+0.01)的365次方。

    2024年02月11日
    瀏覽(25)
  • C語(yǔ)言網(wǎng)絡(luò)編程:實(shí)現(xiàn)自己的高性能網(wǎng)絡(luò)框架

    C語(yǔ)言網(wǎng)絡(luò)編程:實(shí)現(xiàn)自己的高性能網(wǎng)絡(luò)框架

    一般生產(chǎn)環(huán)境中最耗時(shí)的其實(shí)是業(yè)務(wù)邏輯處理。所以,是不是可以將處理業(yè)務(wù)邏輯的代碼給拆出來(lái)丟到線程池中去執(zhí)行。 比如像下面這樣: ?我們事先創(chuàng)建好一堆worker線程,主線程accepter拿到一個(gè)連接上來(lái)的套接字,就從線程池中取出一個(gè)線程將這個(gè)套接字交給它。這樣,我

    2024年02月10日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包