原创 windows下異步IO一

介紹 簡單講解下我們程序進行IO的過程,當線程進行一個同步的設備IO請求時,他會被掛起,直到設備完成IO請求,返回給阻塞線程,線程激活繼續處理。當進行一個異步的設備IO請求時,該線程可以先去做其他事,等到設備完成IO請求後通知該線

原创 chromium的base源碼閱讀之scoped_refptr

簡介 我們之前對C++標準庫的智能指針有了一定了解,今天我們來聊一聊Chromium中base的智能指針-scoped_refptr,該智能指針同樣是採用引用計數的方式來控制指針的創建和析構。接下來我們看下源碼來解讀下,源碼在ba

原创 自己實現簡單的動態分配器

自己實現簡單的動態分配器前言動態內存分配分配器的要求碎片實現問題空閒塊的組織結構放置塊合併空閒塊合併時機合併方式合併場景代碼實現寫在後邊其他的組織結構顯式空閒鏈表分離空閒鏈表完 前言 本文簡單論述下動態分配的原理,並自己實現一個最

原创 windows下異步IO二

介紹 本文是基於windows下異步IO一的後續,上一篇我們講了關於windows異步io設備訪問,包括初始化設備,執行IO設備請求,IO請求完成的通知三個部分,其中完成通知我們說有四種方式,上一篇我們講了其他的三種,如果有興趣請

原创 volatile的解讀

簡介 我們來講一下volatile這個關鍵字,在很多語言中都會涉及到這關鍵字,首先我們來講一下計算機的一些運行規則,其次我們簡單來淺析一下這個關鍵字的定義,然後通過實例講一下這個關鍵字的用處,及和memorybarrier的比較。

原创 chromium的base源碼閱讀之Callback一

簡介 本文描述下chromium使用base庫中的callback,相關代碼位於base庫的根目錄下的callback及callback相關,bind及bind相關的,本系列本人只是簡單說一下自己的感受,有些存在的問題還望大家一塊

原创 C函數調用過程

介紹 本文從機器級的層面來介紹下函數的調用過程,讀自《深入理解操作系統》第三章 虛擬內存 虛擬內存是內存管理的一種方式,它使得應用程序認爲它擁有連續的可用的內存(一個連續完整的地址空間),實際上是對主存和磁盤I/O設備的抽象表示。根據

原创 chromium的base源碼閱讀之Timer

簡介 本文介紹chromium的base的timer的源碼,地址在https://github.com/chromium/chromium/tree/master/base,我們討論在base中是如何實現一個timer的。 windo

原创 V8的HeapProfiler簡單解析

V8的HeapProfiler簡單解析 ​ v8中的HeapProfiler是用來反映javascript運行時的內存情況,外部接口位於v8-profiler.h文件中,相關的類有HeapGraphEdge,HeapGraphNod

原创 C++ 實現websocket 簡單的服務器

前言 打算寫一個WebSocket服務器來練練手,它是基於tcp實現的,與生俱來的優點較之http是全雙工的,即服務端可主動向客戶端推送數據,亦可請求響應的模式來進行數據傳輸 WebSocket講解 網上有很多對WebSocket的格式進

原创 C++ 實現序列化

本文大概講下用C++實現序列化 本文的序列化:簡單的講是將C++裏的對象(此處是廣義上的對象,內置類型或者用戶自定義類型)數據變成char*,即單個字節的數據,這樣方便傳輸等 本文要求有一點C/C++基礎 涉及到的知識點有C++中的函數重

原创 CEF 網頁中內嵌qt窗口

     是的,你沒看錯,是在瀏覽器中嵌入窗口,其實你想一想可能沒必要,確實也是,在本地窗口中中嵌入瀏覽器是再正常不過的了,但是如果你有一個需求,需要使用到本地窗口,例如一些繪製操作,這邊博客的大神使用的是PPAPI+skia實現簡單的塗

原创 CEF中C++與JS交互

花了幾天時間學習了下C++和JS交互,寫下筆記記錄下 ,也歡迎大神指教https://bitbucket.org/chromiumembedded/cef/wiki/JavaScriptIntegration.md#markdown-he