原创 詳解模板參數推導、引用摺疊和完美轉發

在前面的2篇博文中,分別介紹了左值右值和右值引用。 本文意在介紹模板參數推導規則、引用摺疊和完美轉發。 右值引用(準確地說,是萬能型引用,即universal reference),模板參數推導規則和引用摺疊,這三者的結合,實現了

原创 實現正則中的通配符匹配及編程感想

很久以前,剛接觸正則表達式的時候,驚訝於它有如此強大的匹配功能;也略微想了一下應該如何實現正則表達式的匹配功能,當時就覺得頭大,連個星號的匹配也沒想清楚,就放棄了。 現在很偶爾地刷刷LeetCode上的題。這兩天剛好碰到一個通配符

原创 【譯】Linus有禮貌地批評了一位開發者關於spinlock

聽說最近Linus耐心而又禮貌地批評了一個開發者。原文在這裏:https://www.realworldtech.com/forum/?threadid=189711&curpostid=189723 今天比較有興趣地把原文翻譯了

原创 shell的一些文件操作

合併2個文件 a在上,b在下 cat a.txt b.txt > c.txt a在左,b在右 paste a.txt b.txt > c.txt split分割文件 split [-d] [-l l

原创 gcc 的 __attribute__ 關鍵字簡介

gcc 的 __attribute__ 關鍵字簡介 參考文檔見: https://gcc.gnu.org/onlinedocs/gcc-4.0.0/gcc/Variable-Attributes.html#Variable-At

原创 git clone與git pull的時候不拉大文件

很多時候,人們需要在git倉庫裏存儲一些巨大的動輒數百MB甚至數GB的二進制文件以幫助編譯或部署用。git 通過 lfs 支持大文件存儲。 而這些大文件呢,往往也經常被更新。這就帶來一個問題 - 開發人員並不需要這些巨大的二進制文

原创 使用strip, eu-strip, objcopy等剝離與導回符號表及調試信息

1.符號表信息和調試信息 符號表信息(symbols)和調試信息(debug info)是由不同段區分的。 使用 readelf -S binfile 可以查看ELF文件的所有段。 調試信息相關的段: # readelf -S a

原创 gdb的non-stop模式

All-Stop模式: 調試多線程程序時,如果某個線程斷在一個斷點上,調試器會讓整個程序freeze,直到continue這個線程,程序中的其他線程纔會繼續運行。 這個限制使得被調試的程序不能夠像真實環境中那樣運行–當某個線程斷在

原创 從右值到完美轉發

C++11中明確了右值的概念,引入了右值引用、引用摺疊、完美轉發等概念及功能。這一系列的概念及功能是一脈相承,由淺入深的。筆者爲此寫了三篇文章來逐步介紹這些。現集中在此文中,作爲一個專輯。 簡介C++11中的左值、純右值及將亡值

原创 談談右值引用

左值與右值 這在之前的一篇博文中有詳細介紹,這裏再簡單說一下。 左值: 可使用&符號取地址 可位於賦值操作符=的左側,也可位於右側 右值: 不能使用&符號取地址 只能位於賦值操作符的右側 老式的swap函數 templ

原创 C++11多線程之std::unique_lock

奇怪,幾年前寫的,不知道爲何最近一年始終放在草稿箱了。拿出來曬曬。如有錯漏之處,再修正吧。 原文如下: http://en.cppreference.com/w/cpp/thread/unique_lock http://en.c

原创 VSS, RSS, PSS, USS

轉載自”超超Boy“: https://www.cnblogs.com/jycboy/p/5453533.html   VSS:Virtual Set Size,虛擬耗用內存 它是一個進程能訪問的所有內存空間地址的大小。這個大小包含了一些

原创 多維vector去重

對於二維數組,比如 vector<vector<int>> 這樣的,如何去重呢? 和shell腳本很像。 shell腳本是 xxx | sort | uniq ; C++代碼要記住3個關鍵詞: sort, unique, era

原创 實現正則中的通配符比較及編程感想

實現正則中的通配符比較及編程感想 很久以前,剛接觸正則表達式的時候,驚訝於它有如此強大的匹配功能;也略微想了一下應該如何實現正則表達式的匹配功能,當時就覺得頭大,連個星號的匹配也沒想清楚,就放棄了。 現在很偶爾地刷刷LeetCod

原创 自定義gdb命令打印STL容器與數據成員的

前面2篇博客分別介紹了gdb腳本的語法及應用以及使用Python API自定義gdb命令,而在gdb中打印STL容器的一些信息,仍不是非常方便,最好也能自定義一些命令進行處理。 有高人推薦了GitHub上的一篇博客,裏面記述了這樣