原创 輸入n,求斐波那契數列第n項。斐波那契數列的第0項爲0,第一項爲1,之後的項依次爲前兩項之和。

思路一: 遞歸 要求第n項,首先就要求出第n-1,n-2項,依次類推。遞歸的出口就是第0項爲0,第1項爲1.使用遞歸雖然代碼很簡單,但如果n大一點的話,所產生的運行時開銷會非常大,這樣做的後果就是效率非常低下。 思路二:

原创 epoll

#include <stdio.h>   #include <string.h>   #include <stdlib.h>   #include <sys/types.h>   #include <sys/socket.h>   #i

原创 在字符串中查找第一個只出現一次的字符,例如:輸入"abbbacfes",則輸出'c'.

char check(char const *src) { assert(src); char const *psrc = src; int dst[256] = { 0 };

原创 /*****/二叉樹基礎問題

創建一棵二叉樹(先序創建): 以{1,2,3,’#’,’#’,4,’#’,’#’,5,6}爲例: 先創建左路,每創建一個結點就入棧,cur指向當前結點: 左路創建完畢之後用一個變量top保存棧頂元素3,然後將棧

原创 Linux-1

1.如果系統的umask設置爲244,創建一個新文件後,它的權限:(-r—w–w-) umask是從權限中“拿走”相應的位,且文件創建時不能賦予執行權限. 創建時,文件 默認666,目錄默認777,減去umask的位就是結果。

原创 線程池

一、什麼是線程池 線程池是服務器預先創建的一組線程,這些線程運行着相同的代碼,並具有相同的屬性。當有新的任務到來的時候,主線程通過某種方式選擇線程池中的某一個線程來爲之服務,服務完之後又放回線程池中。 二、爲什麼要有線程池

原创 一個數組中只有兩個數字單獨出現,其餘數字都是成對出現的,請找出這兩個數。

排序: #include<stdio.h> #include<stdlib.h> int check(int arr[], int len) //將arr[]中

原创 I/O多路複用之select&poll

系統提供select函數用來實現I/O多路複用輸入/輸出模型。select系統調用是用來讓我們的程序監視多個文件描述狀態變化的。程序會停在select這裏等待,直到被監視的文件描述符有一個或多個發生狀態變化。通常I/O操作有兩個步

原创 new/delete和new[ ]/delete[ ]的底層調用和簡單實現

在使用new的時候做了兩件事: 1、調用operator new分配空間 2、調用構造函數初始化對象 在使用delete的時候也做了兩件事: 1、調用析構函數清理對象 2、調用operator de

原创 /*****/排序

直接插入排序 插入排序的基本思想是: 每次將一個待排的記錄,按照其關鍵字的大小,插入到前面已經排好序的有序區中適當的位置,直到全部記錄插入完畢爲止。 假設待排序的記錄存放在數組R[0..n]中,初始時

原创 堆的應用之堆排序

void AdjustDown1(int* b, int n, int i) //向下調整,建立大堆 { int parent = i; int child = parent * 2 + 1;

原创 長連接和短連接

什麼是長連接? 其實長連接是相對於通常的短連接而說的,也就是長時間保持客戶端與服務端的連接狀態。 通常的短連接操作步驟是: 連接-》數據傳輸-》關閉連接; 而長連接通常就是: 連接-》數據傳輸-》保持連接-》數據傳輸-》

原创 Web性能壓力測試工具之WebBench

背景: 在運維工作中,壓力測試是一項很重要的工作,比如在一個網站上線之前,能承受多大訪問量,大訪問量下性能如何等這些數據指標好壞將直接影響用戶體驗。另外,在所有壓力測試中存在一個共性那就是壓力測試的結果與實際負載結果不會完全相同

原创 字符串函數strchr,strrchr,strrstr,strncat()函數,strncpy()函數 ,strncmp()函數 ,

#include<stdio.h> #include<stdlib.h> #include<assert.h> char *my_strchr(const char *dst, char c) //由於

原创 多態

多態的實現機制: C++中虛函數的主要作用就是用來實現多態,就是使用基類的指針或者引用調用重寫的虛函數,當父類的指針或引用指向父類對象時調用的是父類虛函數,當指向子類對象時調用的是子類的虛函數。那麼這又是怎麼