原创 二叉樹各種遍歷操作

目錄 1 求二叉樹深度 1.1 遞歸實現 1.2 非遞歸實現(隊列) 1.3 非遞歸實現(棧) 2 求二叉樹高度  3 二叉樹先序遍歷 3.1 遞歸版本 3.2 非遞歸版本 3.3 利用先序創建二叉樹  4 二叉樹中序遍歷 4.1 遞歸版

原创 最大連續子序列的和

最大連續子序列和 最大連續子序列和是一個常見的面試題,也是算法中經典的一個問題。作爲總結,今天就從最簡單的暴力求解,寫道目前能達到最好的線性時間複雜度的算法。 問題描述:找出一個整型數組中的最大連續子序列的和  測試用例:int[] a

原创 線程和進程的各自特點和區別

進程 進程是具有一定功能的程序在一個數據集合上的運行過程,它是系統進行資源分配和調度管理的一個可併發執行的基本單位。 是執行中一段程序,即一旦程序被載入到內存中並準備執行,它就是一個進程。 進程的基本特性        a、動態性:進程的

原创 linux線程間同步(通信)的幾種方法——互斥鎖、條件變量、信號量、讀寫鎖

Linux下提供了多種方式來處理線程同步,最常用的是互斥鎖、條件變量、信號量和讀寫鎖。  下面是思維導圖:  一、互斥鎖(mutex)    鎖機制是同一時刻只允許一個線程執行一個關鍵部分的代碼。 1 . 初始化鎖 int pthrea

原创 DMA

DMA(Direct Memory Access,直接內存存取) DMA 傳輸將數據從一個地址空間複製到另外一個地址空間。當CPU 初始化這個傳輸動作,傳輸動作本身是由 DMA 控制器來實行和完成。典型的例子就是移動一個外部內存的區塊到芯

原创 I2C總線傳輸協議

簡介 I2C(Inter-integrated Circuit)總線支持設備之間的短距離通信,用於處理器和一些外圍設備之間的接口,它只需要兩根信號線來完成信息交換。I2C最早是飛利浦在1982年開發設計並用於自己的芯片上,一開始只允許10

原创 C/C++面經總結

1.用#define聲明一個常數,表明1年中有多少秒(忽略閏年問題)? 答案:#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 要點: A.沒有以分號結束; B.懂得預處理器將爲你計算常數表達

原创 c++ pair 用法詳解

C++pair類型 標準庫類型--pair類型定義在utility頭文件中定義 1、pair的創建和初始化 pair包含兩個數值,與容器一樣,pair也是一種模板類型。但是又與之前介紹的容器不同,在創建pair對象時,必須提供兩個類型名

原创 進程間的五種通信方式

進程間通信(IPC,InterProcess Communication)是指在不同進程之間傳播或交換信息。 IPC的方式通常有管道(包括無名管道和命名管道)、消息隊列、信號量、共享存儲、Socket、Streams等。其中 Socket

原创 二叉樹遍歷——深度優先(DFS)與廣度優先(BFS)

二叉樹的深度優先遍歷(DFS)與廣度優先遍歷(BFS) 深度優先遍歷:從根節點出發,沿着左子樹方向進行縱向遍歷,直到找到葉子節點爲止。然後回溯到前一個節點,進行右子樹節點的遍歷,直到遍歷完所有可達節點爲止。 廣度優先遍歷:從根節點出發,在

原创 DMA導致的CACHE一致性問題解決方案

先簡單說一下DMA的CACHE一致性是個啥問題。 複製:   CPU在訪問內存時,首先判斷所要訪問的內容是否在Cache中,如果在,就稱爲“命中(hit)”,此時CPU直接從Cache中調用該內容;否則,就 稱爲“ 不命中”,CPU只好去

原创 STM32之串口通信

串口通信原理   串口通信的概念非常簡單,串口按位(bit)發送和接收字節。儘管比按字節(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單並且能夠實現遠距離通信。比如IEEE488定義並行通行狀態

原创 常用排序算法(三)歸併排序、堆排序、基數排序

歸併排序 1. 基本思想: 歸併排序是建立在歸併操作上的一種有效的排序算法。該算法是採用分治法的一個非常典型的應用。 首先考慮下如何將2個有序數列合併。這個非常簡單,只要從比較2個數列的第一個數,誰小就先取誰,取了後就在對應數列中刪除這個

原创 Java 多線程編程

Java 給多線程編程提供了內置的支持。 一條線程指的是進程中一個單一順序的控制流,一個進程中可以併發多個線程,每條線程並行執行不同的任務。 多線程是多任務的一種特別的形式,但多線程使用了更小的資源開銷。 這裏定義和線程相關的另一個術語

原创 二叉樹先序遍歷

下面是leetcode上的一道題,先序遍歷二叉樹。 Given a binary tree, return the preorder traversal of its nodes' values. For example: Given b