原创 Synchronized的原理與鎖優化

前言 併發變成中,synchronized一直都是元老級角色,它一直被稱爲重量級鎖,在1.6中對synchronized進行各種優化過後才改善了它的性能消耗。爲了降低synchronized的性能消耗引入了偏向鎖,輕量級鎖,以及JVM底層

原创 靜態庫與動態庫混合鏈接

準備 在linux下,終端完成c/c++的編譯運行,如果使用到靜態庫與動態庫,那麼如何鏈接?這裏以一個例子來完成講述。假如當前位於test目錄,且有a.h、a.c、b.h、 b.c,以及調用a、b中方法的main.c。 每個文件

原创 JVM解釋方法的執行

前言 class文件被加載到內存中,JVM如何執行類方法?下面我們來看一下方法的人生。 重寫與重載 重寫與重載對與我們並不陌生,java作爲面向對象的語言,有封裝、繼承、多態三大特性,而重寫是多態的一個體現,而重載是參數不同的同名方法。

原创 二叉樹的非遞歸遍歷和遞歸遍歷

文章目錄前言前序遍歷遞歸非遞歸中序遍歷遞歸非遞歸後序遍歷遞歸非遞歸層序遍歷 前言 二叉樹的遍歷有前序遍歷、中序遍歷、後續遍歷、層序遍歷。然後我們分別實現一下各種遍歷的遞歸與非遞歸的方式,樹節點定義如下: class TreeNod

原创 優先級位圖算法

文章目錄算法的由來優先級位圖算法 算法的由來 我是在學習嵌入式操作系統這門課知道優先級位圖算法的,可能描述的囉嗦,將就着看吧!這個算法用來對操作系統的任務進行調度。在μC/OS-II中是這樣的,每一個任務都有一個優先級,但是每一個

原创 驗證二叉搜索樹(leetcode 98)

文章目錄題目解析解法一解法二 題目 給定一個二叉樹,判斷其是否是一個有效的二叉搜索樹。 假設一個二叉搜索樹具有如下特徵: 節點的左子樹只包含小於當前節點的數。 節點的右子樹只包含大於當前節點的數。 所有左子樹和右子樹自身必須也是二

原创 gdb命令的使用

gdb的作用: 啓動程序,指定任意可以影響程序的參數 讓程序在指定條件下暫停 測試程序停止時發生事情 改變程序內部變量,改正錯誤繼續運行 gdb的使用: gdb + 可執行文件 gdb + 可執行文件 + core gdb + 進程名 +

原创 K 個一組翻轉鏈表(leetcode24,25)題解

題目25,24: 給你一個鏈表,每 k 個節點一組進行翻轉,請你返回翻轉後的鏈表。 k 是一個正整數,它的值小於或等於鏈表的長度。 如果節點總數不是 k 的整數倍,那麼請將最後剩餘的節點保持原有順序。 示例 : 給定這個鏈表:1-

原创 gcc/g++參數以及使用

c文件的執行 c源文件到可執行一共需要經歷4個階段。使用gcc編譯程序要經過預處理、編譯、彙編、鏈接。 預處理 編譯器主要加載頭文件、條件編譯、宏替換,使用: gcc -E main.c > main.i, 編譯 編譯過程中,編譯器主要做

原创 一文看懂TCP/IP中的相關知識

文章目錄前言IP基礎知識什麼是IP?IP的分類子網掩碼計算機間通信MAC地址ARP & 內網通信私有IP如何與公網通信UDP & TCPUDPTCPTCP三次握手TCP四次揮手TCP傳輸數據包過程分析擁塞控制技術詳解DHCP(動態

原创 Linux下的shell編程詳解

本文摘要 本文主要從以下8 個方面介紹Linux下的shell編程: 一、Shell 編程概述 二、Shell 關鍵字 三、Shell 變量 四、Shell 運算 五、Shell 語句 六、Shell 函數 七、Shell 調試 八、Sh

原创 操作系統的存儲器管理

文章目錄一 多層結構存儲器二 存儲器的分配方式1. 連續分配存儲管理2. 對換技術3. 分頁存儲管理4. 分段存儲管理5. 段頁式存儲管理 一 多層結構存儲器 計算機運行時,幾乎每條指令都要設計存儲器的訪問,因此存儲器的速度必須要

原创 JVM中對象的內存佈局

創建對象 java程序中,創建對象的方式有很多,出了new之外,還可以通過反射機制、Object.clone、反序列化、Unsafe.allocateInstance等,當我們需要創建一個對象時,需要通過常量池定位類的符號引用,然後判斷是

原创 隊列同步器(AQS)理論與源碼解析

前言 AQS是AbstractQueuedSynchronizer的簡稱,提供了一種實現阻塞鎖和一系列依賴FIFO等待隊列的同步器的框架,如圖所示:在併發包中AQS有着非常重要的地位,本文就來深扒AQS的實現機制。 正文 同步器使用 在

原创 Linux下C對進程的操作

文章目錄獲取當前進程的ID 和父進程ID進程的創建進程間的通信 我將通過代碼的方式說明一些進程的基本操作 獲取當前進程的ID 和父進程ID #include<stdio.h>