原创 shell的幾種常用工具

最近在學習shell腳本語言,在學習的過程中瞭解了關於shell的幾種常用工具,就總結了一下。 1、sort 功能:顧名思義,sort是對文本進行排序操作的。 原則:sort將文件的每一行作爲一個單位,相互比較,比較原則是從首字

原创 數組相關問題

題目描述: Given a number represented as an array of digits, plus one to the number. 給你一個用數組表示的數,求加一之後的結果,結果還是用數組表示 解

原创 用shell腳本實現彩色進度條

一、進度條原理 進度條的的動態增長是利用人的視覺短暫停留效果的,不斷從輸出緩衝區刷新出相同的內容,在肉眼看來進度條在不斷的增長。 1、顯示問題: 因爲不需要多行顯示,只需刷新當前進度 ,那麼輸出時只需要回車‘\r’,不需要換行‘\

原创 static關鍵字的作用【C語言、C++、linux中的作用剖析】

一、C語言中static關鍵字的作用 在C語言中,static關鍵字主要有以下作用: 1、static修飾變量會延長局部變量的生命週期 當static修飾變量的時候,變量會被存儲在靜態區,存儲出在靜態區的變量會在程序剛開始運行時就

原创 設計模式----單例模式

一、單例模式 一般情況下,我們建立的一些類是屬於工具性質的,基本不用存儲太多的跟自身有關的數據,在這種情況下,每次都去new一個對象,即增加了開銷,也使得代碼更加臃腫。其實,我們只需要一個實例對象就可以。如果採用全局或者靜態變量的

原创 求兩個數的和,不允許用四則運算符

解題思路: 1、 四則運算不能算的情況下,肯定只能藉助位運算,所以應該考慮位運算 2、 假設兩個數的二進制位00001 和 10001,兩個數相加的過程就是 第一步:先把二進制的各位相加但不進位,10001; 第二步:記下進

原创 設計一個簡單的內存池

一、爲什麼要使用內存池呢? 在瞭解內存池之前,我們先來了解一下什麼是內存碎片: 內存碎片 通常情況下,我們在使用new、malloc進行空間申請時,系統都是在對上進行空間開闢的,儘管開闢出來內存的地址是連續的一塊內存空間,但每次開

原创 關於迭代器失效的幾種情況

之前就做題的時候就經常碰到與迭代器失效有關的問題,但是一直對這個問題也沒有深究,處於似懂非懂的狀態,今天就對迭代器失效這部分知識做一個總結。 迭代器 迭代器(iterator)是一個可以對其執行類似指針的操作(如:解除引用(ope

原创 已排序的整數數組相關查找返回索引問題

對於數組的應用大家一定不會陌生,今天要介紹的就是兩種有關數組中對於指定元素的查找問題. 1、給定一個排序的整數數組,找到給定目標值的起始位置和結束位置。 題目要求: 算法的運行時複雜度必須是O(log n)的順序。 如果在數組中

原创 C++中四種強制類型轉換

C++的四種強制類型轉換,所以C++不是類型安全的。分別爲:static_cast , dynamic_cast , const_cast , reinterpret_cast 下面介紹的四種強制類型轉換如圖:

原创 fork()函數的底層實現原理

在之前的博客 進程控制【創建、等待、終止和替換】 - CSDN博客 https://blog.csdn.net/qq_37964547/article/details/79720027中只是簡單的講到了fork函數,但並沒

原创 一組數中,只有兩個數出現了一次,剩下的數都是成對出現,找出這兩個數

今天在做題的時候,碰到這樣一道題:一個數組中除了兩個數字之外,其餘數字均出現了兩次,如{1,2,3,4,5,3,2,1}。查找這兩個只出現一次的數字,要求時間複雜度爲o(n),空間複雜度爲o(1)。 解題思路: 在解這道題時,

原创 建立TCP 服務器的系統調用

建立TCP服務器連接的過程中主要通過以下系統調用序列來獲取某些函數,這些系統調用主要包括:socket(),bind(),listen(),accept(),send()和recv()。 如下圖所示, TCP應用程序進行的普通

原创 柔性數組

1、如何在一個結構體中動態存放動態字符串 在瞭解柔性數組之前,我們先考慮這個問題,通常我們要想在結構體中存放一個動態長度字符串主要有以下兩種方法: (1)在結構體中定義一個指針,讓該指針指向字符串的動態地址空間 (2)定義一個

原创 sizeof和strlen的區別

在我們平時寫代碼的過程中,我們會經常用到sizeof和strlen,那麼他們到底有什麼區別呢,我簡單總結了以下幾點: (1)sizeof是運算符,strlen是函數 (2)sizeof可以用類型做參數,strlen只能用cha