原创 Go語言的結構體

概述 與C相同,Go的結構體是零個或多個任意類型的命名變量組合在一起的聚合數據類型,每個變量叫做結構體的成員。結構體的每個成員都通過點號來訪問。 定義結構體時,成員通常一行寫一個,但相同類型的成員也可以寫在同一行上。但需要注意的是:成員的

原创 C++拷貝構造函數

定義 拷貝構造函數(copy constructor),又稱複製構造函數,是在基於同一個類的其他對象進行構造的時候(賦值初始化、參數傳遞、返回值)被編譯器調用的一種特殊構造函數。假設有一個類類型爲T,拷貝構造函數的第一個形參必須是該類類型

原创 C++默認構造函數

定義 默認構造函數是可以無實參調用(空參數列表或所有形參都提供了默認初始值)的構造函數,在沒有提供顯式初始化值時被調用。默認構造函數定義的語法如下: class classname() {} classname::class class

原创 LibROSA庫提取MFCC特徵的過程解析

目錄 源碼解析 獲取梅爾頻譜 分幀 加窗 快速傅里葉變換 梅爾濾波器 取對數 離散餘弦變換 總結 LibROSA(本文使用的版本是0.6.3)中的mfcc函數可以用來提取音頻的梅爾頻率倒譜系數(Mel-Frequency Cepstral

原创 C++斷言

斷言簡述 斷言(assertion)是編程中的一種常用手段,在通常情況下,斷言就是將一個返回值總是真(或者我們需要是真)的判別式放在語句中,用以排除在設計邏輯上不應該出現的情況。舉個例子:我們都知道除數不能爲0,那麼就可以對除數使用斷言,

原创 vim分屏

目錄 切割窗口 水平分割 調節窗口大小 垂直分割 關閉窗口 切換窗口 移動窗口 窗口批處理 分屏功能是通過分割窗口來實現的,這是提高工作效率的一大利器。無論我們想同時顯示兩個文件,或者同時顯示一個文件的兩個不同的位置,又或者並排比較兩個文

原创 macOS下SVN常見命令簡述

獲取幫助 命令格式:svn help(或svn h,或svn ?) 此命令用以獲取svn的常見命令及其書寫格式。此外,加上具體的命令名稱還可以獲取該命令的說明文檔,如:svn help status。 檢出 命令格式:svn check

原创 Go併發編程——goroutine與channel

goroutine 併發編程表現爲程序由若干個自主的執行單元組成,在Go裏,每一個併發執行的活動稱爲goroutine。從宏觀作用上看,goroutine類似於操作系統或其他編程語言中的進程/線程,但實現卻大不相同。 Go語言中,當一個程

原创 Go語言的類型斷言

類型斷言是一個作用在接口值上的操作,寫出來類似於x.(T),其中x是一個接口類型的表達式,而T是一個類型(稱爲斷言類型)。類型斷言會檢查作爲操作數的動態類型是否滿足指定的斷言類型,這有兩種可能: 1.如果T是一個具體類型,那麼類型斷言會檢

原创 Go語言的接口

概述 接口是一種抽象類型,是對其他類型行爲的概括與抽象,從語法角度來看,接口是一組方法定義的集合。很多面向對象的語言都有接口這個概念,但Go語言接口的獨特之處在於它是隱式實現。換句話說,對於一個具體的類型,無須聲明它實現了哪些接口,只要提

原创 Go語言的方法

目錄 方法概述  嵌套結構體中的方法調用 方法變量 方法表達式 封裝 方法概述 儘管Go沒有統一的面向對象編程(OOP)的定義,但依然支持方法(C++中常叫做成員函數)。因爲對我們來說,對象就是一個值或變量,並且擁有其方法,而方法是某種特

原创 結構體

概述 與C相同,Go的結構體是零個或多個任意類型的命名變量組合在一起的聚合數據類型,每個變量叫做結構體的成員。結構體的每個成員都通過點號來訪問。 定義結構體時,成員通常一行寫一個,但相同類型的成員也可以寫在同一行上。但需要注意的是:成員的

原创 Go語言的函數特性

函數聲明 Go語言的每一個函數聲明都包含一個函數名、一個形參列表、一個可選的返回列表以及函數體:func name(parameter-list) (result-list) {body} 上述函數聲明的語法通式中,若函數僅有一個或沒有返

原创 Go語言的常量

Go語言的常量是一種表達式,常量可以保證在編譯階段就計算出表達式的值。所有的長來給本質上都屬於基本類型:數字、布爾型、字符串等。Go語言的常量定義與變量類似,只不過使用了const關鍵字修飾,但不能使用短變量聲明關鍵字 := 來定義常量。

原创 Go語言變量的基本特性

變量聲明 Go語言中,用var關鍵字創建一個具體類型的變量,並設置它的初始值。通用形式爲:    var name type = expression 類型和表達式部分可以省略其中一個,但不能都省略。如果省略類型,變量的類型將由初始化表達