原创 linux共享內存原理剖析

linux共享內存原理剖析 共享內存區域是被多個進程共享的一部分物理內存。如果多個進程都把該內存區域映射到自己的虛擬地址空間,則這些進程就都可以直接訪問該共享內存區域,從而可以通過該區域進行通信。共享內存是進程間共享數據的一種最快

原创 激光SLAM導航系列(四)全局路徑規劃

全局路徑規劃簡介 機器人移動到目的地需要在做出具體移動策略之前先進行全局路徑規劃,ROS的navigation中使用global_planner包提供的一系列全局規劃的算法接口(包括A*,Dijkstra)。 在本文中我

原创 網絡中出現TCP、UDP粘包、分包的兩點解決辦法

粘包產生原因: 先說TCP:由於TCP協議本身的機制(面向連接的可靠地協議-三次握手機制)客戶端與服務器會維持一個連接(Channel),數據在連接不斷開的情況下,可以持續不斷地將多個數據包發往服務器,但是如果發送的網絡數據包太小,那麼

原创 epoll源碼實現分析[整理]

轉自http://www.360doc.com/userhome.aspx?userid=14513665&cid=3 epoll用法回顧 先簡單回顧下如何使用C庫封裝的3個epoll相關的系統調用。更詳細的用法參見http://www

原创 STL源碼學習----內存管理

1, allocator SGI STL 的頭文件defalloc.h中有一個符合標準的名爲allocator的內存分配器,它只是簡單地將::operator new 和::operator delete做了一層薄薄的封裝。在SGI

原创 ROS導航小車無故倒退問題分析

之前用ROS+激光雷達做小車室內導航時,遇到個問題,就是在RVIZ中給定目的地後小車總是會倒退行走,這個行走速度就是base_local_planner_params.yaml裏配置的escape_vel逃逸速度,調整了其他參數無用,看看

原创 vector中的resize()函數 VS reserve()函數

轉自http://www.cnblogs.com/biyeymyhjob/archive/2013/05/11/3072893.html C++:vector中的resize()函數 VS reserve()函數 http://www

原创 linux信號實現機制詳解

1 信號本質 軟中斷信號(signal,又簡稱爲信號)用來通知進程發生了異步事件。在軟件層次上是對中斷機制的一種模擬,在原理上,一個進程收到一個信號與處理器收到一箇中斷請求可以說是一樣的。信號是進程間通信機制中唯一的異步通信

原创 理解TIME_WAIT

理解TIME_WAIT 轉自http://www.firefoxbug.com/index.php/archives/2795/ 前言 TIME_WAIT 是在TCP協議中很模糊的概念,它可能使socke能陷入的一種時間相對比較長的狀態

原创 poll、select和epoll的區別

poll、select和epoll的區別 select原理概述 調用select時,會發生以下事情: 1. 從用戶空間拷貝fd_set到內核空間; 2. 註冊回調函數__pollwait; 3. 遍歷所有fd,對全部

原创 字符編碼筆記:ASCII,Unicode和UTF-8

轉自http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html 1. ASCII碼 我們知道,在計算機內部,所有的信息最終都表示爲一個二進制的字符串。每一個二

原创 《操作系統真象還原》-閱讀筆記(下)

第十一章 任意進程的頁目錄表第0~767個頁目錄項屬於用戶空間,指向用戶頁表。第768~1023個頁目錄項指向內核頁表。每創建一個新的用戶進程,就將內核頁目錄項複製到用戶進程的頁目錄表,其次需要把用戶頁目錄表中最後一個頁目錄項更新爲用戶進

原创 《操作系統真象還原》-閱讀筆記(上)

第一章 配置bochs,進入bochs simulator後一直是黑屏,原來默認是調試模式,需要輸入C(continue)來讓調試繼續。 第二章 主講MBR及進入MBR前的步驟 1.實模式只能訪問1MB的內存空間。 2.BIOS在RO

原创 C++四種強制轉換

reinterpret_cast /* reinterpret_cast converts any pointer type to any other pointer type, even of unrelated classes.

原创 開源許可證GPL、BSD、MIT、Mozilla、Apache和LGPL的區別

開源許可證GPL、BSD、MIT、Mozilla、Apache和LGPL的區別 首先借用有心人士的一張相當直觀清晰的圖來劃分各種協議:開源許可證GPL、BSD、MIT、Mozilla、Apache和LGPL的區別 以下是上述協議的