原创 內存對齊的規則和原因

對齊原因 內存對齊 大部分的參考資料都是如是說的: 平臺原因(移植原因): 不是所有的硬件平臺都能訪問任意地址上的任意數據的;某些硬件平臺只能在某些地址處取某些特定類型的數據,否則拋出硬件異常。 性能原因:數據結構(尤其是棧)應該儘可能地

原创 二叉樹的層序、前序、中序、後序遍歷實現(遞歸與非遞歸的C++實現)

二叉樹這種數據結構想必大家都已經非常熟悉了,他的獨特的三種遍歷方式也廣爲人知,接下來我們就來解析如何用代碼實現對二叉樹的遍歷 首先我們錄入一下二叉樹結構體和後面四種遍歷實現所需要的頭文件 #include <iostream> #inc

原创 Linux語音助手——Lewis小精靈(簡陋版小度小度)

最近看一個綜藝《嚮往的生活》被百度的產品小精靈小度所吸引,春招的時候百度來線下宣講我怎麼沒舉手回答問題拿到這等福利,失手了失手了。本人之前做過一個基於網絡通信的Linux聊天室,可能因爲做的太挫了,也沒人和我用,受這個激發在百度上搜了搜居

原创 關於多態實現的一些問題

多態實現的原理 首先多態實現必須依賴於兩個條件: 1)子類重寫父類的虛函數 2)必須通過基類的指針或者引用來調用虛函數 實現多態的機制是通過虛函數表(函數指針的指針數組)來實現的,虛表的最後是一個nullptr 虛表的構建過程: 1)子類

原创 https和http有什麼區別?

https和http有什麼區別? http協議不適合傳輸一些敏感信息(密碼支付信息),https在其基礎上增加了SSL協議(依靠證書來驗證服務器身份並將通信加密)//網景設計的SSL協議   1>https協議需要到ca申請證書,一般免費

原创 new/delete和malloc/free的區別

new/delete和malloc/free的區別   maollc/free是函數,new/delete是操作符 new申請的空間可以初始化,malloc不行 malloc的返回值是void*,所以需要計算空間大小並傳遞且使用時必

原创 C++ 關於內聯函數和宏替換

inline內聯函數和宏替換   1.內聯函數只是一個建議(成員函數都是內聯函數),而宏是通過文本替換從而一定能夠實現的 2.inline函數在編譯階段處理,而宏替換在預處理階段 3.宏替換不可調試,內聯函數在少部分編譯器可以處理 4.宏

原创 關於http服務中session和cookie協議頭

首先這兩種機制出現的原因都是因爲http是無狀態協議,第一次請求與第二次請求之間沒有聯繫,所以分別在客戶端和服務器的位置引進了這兩個機制來緩存   cookies是服務器本地機器上存儲的小段文本並隨每一個請求發送至同一服務器,是客戶端保存

原创 設計模式之單例模式和觀察者模式

單例模式 定義:確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例   單例模式的優勢 由於只有一個實例,減少了內存開支,特別是一個對象需要頻繁地創建、銷燬時且進行創建和銷燬的性能又無法優化時,該模式具有絕對優勢 只有

原创 Linux 權限與命令間的關係

什麼命令在什麼樣的權限下才能夠運行   讓用戶能進入某目錄成爲“可工作目錄”的基本權限是什麼 可使用的命令:例如cd等切換工作目錄的命令 目錄所需權限:用戶對這個目錄至少需要具有x的權限 額外需求:如果用戶想要在這個目錄內利用ls查閱文件

原创 真真真硬貨——STL中的sort()函數詳解

sort()函數是STL中我們常用到的一個函數,之前好像在哪裏模模糊糊的看到過是用快速排序進行排序的 但底層究竟是怎樣進行排序的,今天我們就來進行一個探索 這裏先給出一個結論:STL中的sort()函數的排序方法是以快速排序+堆排序+插入

原创 MySQL筆記——SQL數據類型

    整型 在MySQL中,整型可以指定是有符號的和無符號的,默認是有符號的 可以通過UNSIGNED來說明某個字段是無符號的     bit類型 bit字段在顯示時,是按照ASCII碼對應的值顯示 如果我們有這樣的值,

原创 MySQL筆記——表的約束

空屬性 name varchar(20) not null   默認值 age tinyint unsigned default 0 默認值生效:數據在插入的時候不給該字段賦值,就使用默認值   列描述 sex char(2) def

原创 MySQL筆記——事務管理

事務的基本操作   開啓一個事物 start transaction   創建一個保存點 savepoint 保存點名;   回到保存點 rollback to 保存點名;   事務操作注意事項 如果沒有設置保存點,也可以回滾,只能回到

原创 MySQL筆記——SQL函數

日期函數   字符串函數   數學函數