原创 C++中動多態實現之虛函數與虛表指針

1、靜多態與命名傾軋,動多態與虛函數: (1)概述: 我們知道,C++的多態有靜多態(Static polymorphism)與動多態(Dynamic polymorphism)之分,靜多態是依靠函數重載(function ov

原创 Android 實現webview的封裝示例

1. 簡介 WebView是一個基於webkit引擎、展現web頁面的控件。 2. 作用 顯示和渲染Web頁面 直接使用html文件(網絡上或本地assets中)作佈局 可和JavaScript交互調用 WebView控件功能

原创 C++中的類型轉換(static_cast、const_cast、dynamic_cast、reinterpret_cast)

1. c強制轉換與c++強制轉換 c語言強制類型轉換主要用於基礎的數據類型間的轉換,語法爲: (type-id)expression//轉換格式1 type-id(expression)//轉換格式2 c++除了能使用c語言的強

原创 C++中動態類型與動態綁定、虛函數、運行時多態的實現

動態類型與靜態類型 靜態類型 是指不需要考慮表達式的執行期語義,僅分析程序文本而決定的表達式類型。靜態類型僅依賴於包含表達式的程序文本的形式,而在程序運行時不會改變。通俗的講,就是上下文無關,在編譯時就可以確定其類型。 動態類型

原创 以太網幀,IP,TCP,UDP首部結構

1.以太網幀的格式 2.IP報頭格式 IP是TCP/IP協議簇中最爲重要的協議。所有的TCP,UDP, ICMP和IGMP數據都以IP數據報格式傳輸。IP提供的是不可靠、無連接的協議。 普通的IP首部長爲20個字節,除非含有選

原创 TCP相關技術:重發機制

重發機制 TCP協議是一個可靠的協議。它通過重新發送(retransmission)來實現TCP片段傳輸的可靠性。簡單的說,TCP會不斷重複發送TCP片段,直到片段被正確接收。 接收方(receiver)可以通過校驗TCP片段頭部

原创 C++中宏與內聯函數的優缺點

宏 爲什麼要使用宏呢? 因爲函數的調用必須要將程序執行的順序轉移到函數所存放在內存中的某個地址,將函數的程序內容執行完後,再返回到轉去執行該函數前的地方。這種轉移操作要求在轉去執行前要保存現場並記憶執行的地址,轉回後要恢復現場,並

原创 TCP三次握手四次揮手詳解

TCP三次握手 所謂三次握手(Three-way Handshake),是指建立一個TCP連接時,需要客戶端和服務器總共發送3個包。 三次握手的目的是連接服務器指定端口,建立TCP連接,並同步連接雙方的序列號和確認號並交換 TCP

原创 C++ 中內存對齊原理及作用

struct/class/union內存對齊原則有四個: 1).數據成員對齊規則:結構(struct)(或聯合(union))的數據成員,第一個數據成員放在offset爲0的地方,以後每個數據成員存儲的起始位置要從該成員大小或者成

原创 C/C++內存管理詳解

內存管理是C++最令人切齒痛恨的問題,也是C++最有爭議的問題,C++高手從中獲得了更好的性能,更大的自由,C++菜鳥的收穫則是一遍一遍的檢查代碼和對C++的痛恨,但內存管理在C++中無處不在,內存泄漏幾乎在每個C++程序中都會發

原创 C++中垃圾回收機制中幾種經典的垃圾回收算法

前言 垃圾收集器是一種動態存儲分配器,它自動釋放程序不再需要的已分配的塊,這些塊也稱爲 垃圾 。在程序員看來,垃圾就是不再被引用的對象。自動回收垃圾的過程則稱爲 垃圾收集(garbage collection) 。在一個支持垃圾收

原创 C/C++中new與malloc的區別

1. 申請的內存所在位置 new操作符從自由存儲區(free store)上爲對象動態分配內存空間,而malloc函數從堆上動態分配內存。自由存儲區是C++基於new操作符的一個抽象概念,凡是通過new操作符進行內存申請,該內存即

原创 TCP與UDP之間的區別

TCP和UDP區別 / TCP UDP 是否連接 面向連接 面向非連接 傳輸可靠性 可靠的 不可靠的 應用場合 傳輸大量的數據 少量數據 速度 慢 快 OSI 和 TCP/IP 模型在傳輸層定義兩種傳輸

原创 二叉查找樹(BST)

什麼是二叉查找樹 二叉查找樹(Binary Search Tree)又叫二叉排序樹(Binary Sort Tree),它是一種數據結構,支持多種動態集合操作,如 Search、Insert、Delete、Minimum 和 Ma

原创 C++中類對象的內存佈局以及虛函數表生成

類對象內存佈局計算 l 空類、單一繼承的空類、多重繼承的空類所佔空間大小爲:1(字節,下同); l 一個類中,虛函數本身、成員函數(包括靜態與非靜態)和靜態數據成員都是不佔用類對象的存儲空間的; l 因此一個對象的大小≥所有