C++的Class中的一些重點整理| Jason note
文章推薦指數: 80 %
18.6. 如何判斷C++ 物件的類別? ... 18.24. 為何Google 禁止工程師使用C++ static object? 18.25. 是否能讓C++ template 的標頭檔只含宣告不含實作?
JasonNote
1.
Command
1.1.
10條Linux
1.2.
OpenChineseConvert開放中文轉換
1.3.
CommandTips
1.4.
UsefulLinuxCommands
1.5.
Opencc使用
2.
SharedLibraries
2.1.
SharedLibrariesSetup
3.
LinuxTools
3.1.
LinuxBasic
3.1.1.
學會使用命令幫助
3.1.2.
文件及目錄管理
3.1.3.
文本處理
3.1.4.
磁盤管理
3.1.5.
進程管理工具
3.1.6.
性能監控
3.1.7.
網絡工具
3.1.8.
用戶管理工具
3.1.9.
系統管理及IPC資源管理
3.2.
Linux工具進階
3.2.1.
程序構建
3.2.2.
程序調試
3.2.3.
性能優化
3.3.
工具參考篇
3.3.1.
gdb調試利器
3.3.2.
ldd查看程序依賴庫
3.3.3.
lsof一切皆文件
3.3.4.
ps進程查看器
3.3.5.
pstack跟蹤進程棧
3.3.6.
strace跟蹤進程中的系統調用
3.3.7.
ipcs查詢進程間通信狀態
3.3.8.
toplinux下的任務管理器
3.3.9.
free查詢可用內存
3.3.10.
vmstat監視內存使用情況
3.3.11.
iostat監視I/O子系統
3.3.12.
sar找出系統瓶頸的利器
3.3.13.
readelfelf文件格式分析
3.3.14.
objdump二進制文件分析
3.3.15.
nm目標文件格式分析
3.3.16.
size查看程序內存映像大小
3.3.17.
wget文件下載
3.3.18.
scp跨機遠程拷貝
3.3.19.
crontab定時任務
3.3.20.
trace-cmd
3.4.
Doxygen
3.5.
Jdbshell
3.6.
二進位實用程式(objdump,readelf,ar,nm等)
3.7.
UNIX下繪圖面面觀
3.8.
performance分析
3.8.1.
Application效能分析有妙招—使用perf走天下
3.8.2.
藉助PERF工具分析CPU使用率
3.8.3.
linux下的內核測試工具——perf使用簡介
3.8.4.
Perf--Linux下的系統性能調優工具,第1部分
3.8.5.
Perf--Linux下的系統性能調優工具,第2部分
3.8.6.
系統級性能分析工具—Perf
3.8.7.
perf性能分析實例——使用perf優化cache利用率
3.8.8.
Linux效能分析工具:Perf-NCKU2015
3.8.9.
Linux效能分析工具:Perf-NCKU2016
3.9.
Mountingsambasharesfromaunixclient
3.10.
cppcheck靜態程式分析工具
3.11.
perf原理和實務
3.12.
gnuplot語法解說和示範
3.13.
運用gprof+graphviz學習OpenSource
3.14.
有病治病,沒病強身:Cppcheck+Valgrind
4.
Androidnote
4.1.
androidresource
4.2.
Androiddebug技巧
4.2.1.
Android下打印調試堆棧方法
4.2.2.
Android調試技巧(一)
4.2.3.
理解AndroidCrash處理流程
4.2.4.
理解NativeCrash處理流程
4.2.5.
Native進程之Trace原理
4.2.6.
debuggerd守護進程
4.3.
GDB在線調試AndroidFrameworkNativeC/C++代碼
4.4.
什麼時候用startService,什麼時候用bindService
4.5.
android的消息處理機制(圖+源碼分析)——Looper,Handler,Message
4.6.
Android中HandlerRunnable與Thread的區別詳解
4.7.
AndroidService與NativeService
4.8.
Handler,Message,Looper,MessageQueue
4.9.
Android各層中日誌打印功能的應用
4.10.
Android指令和命令參數
4.11.
Android中進程與進程、線程與線程之間如何通信
4.12.
startService的創建過程
4.13.
service組件-bindService源碼分析
4.14.
[轉]Android執行緒-Thread與Handler
4.15.
[轉]Android執行緒-Runnable與Handler
4.16.
[轉]Android非同步任務-AsyncTask
4.17.
[轉]Android.mk組織結構
4.18.
如何下載編譯Androidgoldfish(Kernel)
4.19.
自己動手編譯android源碼
4.20.
Android核心使用kgdb
4.21.
BusyBox安裝
4.22.
Android常用開發工具
4.23.
開發最佳實踐
4.24.
AnalyzingUIPerformancewithSystrace
4.25.
Android常用指令
4.26.
Android下設置CPU核心數和頻率
4.27.
Android系統的智能指針(輕量級指針、強指針和弱指針)的實現原理分析
4.28.
gradle教學
4.29.
Gradle的一些總結
4.30.
線程通信基礎流程分析Handler、Looper、Message、MessageQueue
4.31.
多執行緒-Handler和Thread的關係(2)
4.32.
jni
4.32.1.
使用JNI進行Java與C/C++語言混合編程
4.32.2.
JNIJavanativeStruct
4.33.
Android消息機制
4.33.1.
概述設計架構
4.33.2.
Message和MessageQueue
4.33.3.
Looper
4.33.4.
Handler
4.34.
關於Service
4.34.1.
Android之Service總結
4.34.2.
startService及bindService的區別
4.34.3.
androidservice之一(startservice)
4.34.4.
androidservice之二(IntentService)
4.34.5.
AndroidService之三(BindService,繼承自Binder類)
4.34.6.
AndroidService之三(BindService,使用Messenger)
4.34.7.
AndroidService之三(BindService,使用AIDL)
4.35.
關於Activity
4.35.1.
Android之Activity總結
4.36.
IPC
4.36.1.
進程通信之Messenger&AIDL使用詳解
4.36.2.
為什麼Android要採用Binder作為IPC機制?
4.37.
Carson_Ho筆記
4.37.1.
Android多線程全面解析:IntentService用法&源碼
4.37.2.
Android四大組件:Service生命週期最全面解析
4.37.3.
Android四大組件:Service服務史上最全面解析
4.37.4.
(本地、可通信的、前臺、遠程)Service使用全面介紹
4.37.5.
Android:遠程服務Service(含AIDL&IPC講解)
4.38.
反組譯apk
4.39.
如何使用篇
4.39.1.
如何瞭解Task、Thread、ThreadPool、Handler、Looper、Message、MessageQueue、AsyncTask
4.39.2.
如何使用Handler
4.39.3.
如何使用HandlerThread
4.39.4.
如何使用Thread和Handler
4.39.5.
如何使用Service
4.39.6.
如何使用IntentService
4.39.7.
如何使用AsyncTask
4.40.
androidthread
4.40.1.
Android多線程的四種方式
4.40.2.
Android的幾種多線程方式(AsyncTask,HandlerThread,IntentService,ThreadPool),使用場景以及注意事項
4.40.3.
Android多線程編程的總結
4.41.
簽署你的Android應用程式(.keystore)
4.42.
BuildingAndordi&Kernels
4.43.
Handler消息機制再梳理
4.44.
用Interface實作CallBack機制
4.45.
EventBus套件的基本用法
5.
Ubuntu
5.1.
Ubuntuinstaller
5.2.
Windows與Ubuntu雙系統,開機時偵測不到彼此的解決方法
5.3.
sshtunnel
5.4.
tmate-slave架設
6.
QEMU
6.1.
X86_QEMU
6.2.
ARM_QEMU
6.3.
Qemu_KGDB_Ftrace
6.4.
5分鐘Linux0.11快速構建實驗環境
6.5.
DebugAssemblywithGDBforARMv8onQEMU
6.6.
ARM體系結構--寄存器
6.7.
RunDebianisoonQEMUARMv8
6.8.
QEMUARM64guide
6.9.
QEMUinstall
6.10.
編譯linux0.11,並且使用QEMU+GDB調試kernel(Ubuntu11.04,GCC4.5.2)
6.11.
HowtoBuildACustomLinuxKernelForQemu(2015Edition)
6.12.
X86Kernel
6.13.
FreeNOS
6.14.
建構Linux0.11的開發環境
6.15.
KGDB+QEMU+SSH
6.16.
打造屬於自己的linux發行版
6.17.
編譯內核+BusyBox定製一個Linux提供ssh和web服務
6.18.
用Qemu模擬ARM
6.19.
qemu-arm快速驗證arm應用程式
6.20.
HowOtherPeopleUseQEMU
6.21.
buildroot&dropbear
6.22.
ARM64Linuxkernel+busyboxrootFSviaNFSoverQEMUwithGDB
6.23.
奔跑吧-linux內核-qemu調試內核
6.24.
Linuxkernelv4.0codefor
6.25.
奔跑linuxkernelGDB使用
6.26.
QEMU运行LinuxKernel环境配置
6.27.
基于QEMU的LinuxDriver开发环境的配置
6.28.
Myrunninglinuxkernel_5.0
7.
fcamel
7.1.
[轉]ld,ld.so和ldconfig的行為
7.2.
[轉]解決undefinedsymbol/reference
7.3.
[轉]列出用到的sharedlibrary
7.4.
[轉]用LD_PRELOAD替換動態連結的函式庫
7.5.
[轉]用strace和ltrace找出用到的systemcall和librarycall
7.6.
[轉]加速linkingtime
7.7.
[轉]從C呼叫C++函式的過程理解程式編譯、連結的原理
7.8.
[轉]對C++的觀感
7.9.
[轉]在Linux下開發C/C++的新手指南
7.10.
[轉]瞭解C/C++程式行為的技巧
7.10.1.
查C/C++symbol定義的方法
7.10.2.
閱讀C/C++原始碼的好幫手
7.10.3.
配合c++filt讀程式
7.10.4.
加速gdb載入symbol時間
7.10.5.
在x86-64上對systemcall使用conditionalbreak
7.10.6.
用strace找出Ubuntu如何提示未安裝的指令
7.10.7.
自行編譯含debugsymbol的套件(package)
7.10.8.
gdb顯示STLcontainer的方法
7.10.9.
善用strace、debugger從執行期間找出問題根源
7.10.10.
用pythongdb客製化backtrace的結果
7.11.
寫linuxdaemon的注意事項
7.12.
signal小知識
7.13.
gold和GNUld行為差異造成的問題
7.14.
如何在Linux上使用自行編譯的第三方函式庫
7.15.
在Ubuntu上找出第三方函式庫的程式碼
8.
ARM
8.1.
ARM彙編語言
8.2.
ARM尋址方式
8.3.
IntroductiontoARMv864-bitArchitecture
8.4.
ARM彙編指令調試方法
9.
ARMemulation
9.1.
CompilingLinuxkernelforQEMUARMemulator
9.2.
CompilingLinuxkernel3.0withEmdebianARMtoolchain
9.3.
CompileLinuxkernel3.2forARMandemulatewithQEMU
9.4.
BusyboxforARMonQEMU
9.5.
LinuxNFSRootunderQEMUARMemulator
9.6.
TryingDebianforARMonQEMU
9.7.
DebuggingARMprogramsinsideQEMU
9.8.
U-bootforARMonQEMU
9.9.
BootingLinuxwithU-BootonQEMUARM
9.10.
SimplestbaremetalprogramforARM
9.11.
HelloworldforbaremetalARMusingQEMU
9.12.
EmulatingARMPL011serialports
9.13.
ARM926interruptsinQEMU
9.14.
UsingUbuntuARMcross-compilerforbaremetalprogramming
9.15.
UsingNewlibinARMbaremetalprograms
9.16.
UsingCodeSourcerybaremetaltoolchainforCortex-M3
9.17.
QEMUARMsemihosting
9.18.
SimulatingAT91withSkyeye
10.
LinuxKernel
10.1.
MY_example
10.1.1.
sendpidtokernelbyioctlandkernelsend_sigtouserspace
10.2.
LKD
10.2.1.
核心簡介
10.2.2.
核心開發準備
10.2.3.
Linux行程
10.2.4.
行程排程
10.2.5.
系統呼叫
10.3.
我理解的邏輯地址、線性地址、物理地址和虛擬地址
10.4.
用ttyS0獲取dmesg信息
10.5.
BuddyAlgorithm
10.6.
分析oops的機器碼
10.7.
oops調試
10.8.
可搶佔
10.9.
異或的用法
10.10.
定製編譯內核模塊的GCC參數
10.11.
Linux記憶體基礎
10.12.
Linux內存管理之分頁機制
10.13.
Linux虛擬內存概述
10.14.
程序的裝載和鏈接
10.15.
IA32CPU內存管理機制
10.16.
Linux內存管理之分段機制
10.17.
邏輯地址,線性地址及物理地址的區別
10.18.
分段機制和分頁機制
10.19.
段選擇器段描述符段描述符表線性地址形成
10.20.
Linux內核的編譯系統
10.21.
如何編譯linuxkernel
10.22.
LinkedListinLinuxKernel
10.23.
LinuxKernel:強大又好用的list_head結構
10.24.
sendsignaltouser-space
10.25.
kernel發signal通知pidtask_struct->comm
10.26.
Linux內核調試方法gdbocgdboeJTAG
10.27.
Linux內核kernelpanic機制淺析
10.28.
如何在linuxkernel中加入systemcall
10.29.
查看Linux內核編譯配置
10.30.
Ubuntu更換內核方法
10.31.
調試工具ltracestraceftrace的使用
10.32.
根據內核Oops定位代碼
10.33.
內核和用戶空間共享內存的實現例程-proc和mmap
10.34.
陳鍾誠LinuxKernel
10.34.1.
簡介
10.34.2.
行程結構
10.34.3.
Linux的記憶體管理
10.34.4.
Linux的檔案系統
10.34.5.
Linux的輸出入系統
10.34.6.
Linux的目的檔
10.34.7.
Linux的動態連結與載入(DynamicLinking)
10.35.
例說linux內核與應用數據通信系列
10.35.1.
(一):添加一個系統調用
10.35.2.
(二):proc虛擬文件系統
10.35.3.
(三):讀寫內核設備驅動文件
10.35.4.
(四):映射設備內核空間到用戶態
10.36.
把握linux內核設計思想系列
10.36.1.
(一):系統調用
10.36.2.
(二):硬中斷及中斷處理
10.36.3.
(三):下半部機制之軟中斷
10.36.4.
(四):下半部機制之tasklet
10.36.5.
(五):下半部機制之工作隊列及幾種機制的選擇
10.36.6.
(六):內核時鐘中斷
10.36.7.
(七):內核定時器和定時執行
10.36.8.
(八):進程管理分析
10.36.9.
(九):進程調度
10.36.10.
(十):內核同步
10.36.11.
(十一):內存管理之頁的分配與回收
10.37.
移植LinuxKernel造成無法開機之解決方案以及除錯工具
10.38.
delay/sleep延遲函式學習筆記
10.39.
密碼學演算法實作流程
10.40.
效能工具–perf來分析探討硬體加密之瓶頸
10.41.
Linuxkernel調試打log流和斷點流
10.42.
Linuxkernelv4.0codefor
10.43.
TraceKernel程式的一些小技巧
10.44.
ModernMaker:從那些Maker的大小事看Linux核心系列
10.44.1.
Day2:「我需要perf!」「請給我eBPF!」
10.44.2.
Day3:安裝ply和perf
10.44.3.
Day4:小試身手--是誰住在Rpi的LED裡?
10.44.4.
Day5:ply語法簡介
10.44.5.
Day6:I2C(Part1)-簡介與環境設置
10.44.6.
Day7:I2C(Part2)-ftrace爽颯登場!
10.44.7.
Day8:DeviceTree(Part1)
10.44.8.
Day9:暖身運動-媽!我在核心裡面了!第一個核心模組
10.44.9.
Day10:I2CDriver(Part1)-使用DeviceTree來找Driver
10.44.10.
Day11:I2CDriver(Part2)-這是一個間諜檔案!把I2C的傳輸包成字元驅動程式
10.44.11.
Day12:I2CDriver(Part2)-細節、追蹤與驗證
10.44.12.
Day13:SPI(Part1)-原來是ShiftRegister啊!我還以為是SPI呢!
10.44.13.
Day14:SPI(Part2)-ftrace啦!哪次不ftrace?
10.44.14.
Day15:SPIDriver(Part1)-DTOverlay
10.44.15.
Day16:SPIDriver(Part2)-傳簡單的訊息!
10.44.16.
Day17:SPIDriver(Part3)--又是一個間諜檔案!
10.44.17.
Day18:spidev-辣個userspace的驅動程式
10.44.18.
Day19:GPIO(Part1)--人生的謊言:GPIO很簡單
10.44.19.
Day20:GPIO(Part2)-沒有用到GPIO子系統的GPIO
10.44.20.
Day21:GPIO(Part3)-所以我說那個裝置樹呢?
10.44.21.
Day22:GPIO(Part4)-今晚,我想來點驅動程式佐GPIO
10.44.22.
Day23:IIO(Part1)-構造改革!自動幫感測器做好介面的子系統!
10.44.23.
Day24:IIO(Part2)-基本術語與架構
10.44.24.
Day25:IIO(Part3)-變數命名大師?第一個IIO驅動程式!
10.44.25.
Day26:IIO(Part4)-幫感應器寫驅動程式!以TCRC5000為例
10.44.26.
Day27:IRQ(Part1)-斷開魂結!
10.44.27.
Day28:IRQ(Part2)-中斷突進!簡單的IRQ程式
10.44.28.
Day29:IRQ(Part3)-這是核心執行緒的味道!ThreadedIRQ
10.44.29.
Day30:賽後感言
10.45.
EmbeddedLinuxPrimer讀書筆記
10.45.1.
Chapter2:TheBigPicture
10.45.2.
Chapter4:淺談Linux核心
10.45.3.
Chapter5:KernelInitialization
10.45.4.
Chapter6:UserSpaceInitialization
10.45.5.
Chapter8:裝置驅動程式的基本知識
10.45.6.
Chapter9:Filesystem
11.
LinuxDriver
11.1.
LinuxDeviceDriverProgramming
11.1.1.
Linux裝置驅動程式的概要
11.1.2.
Linux的授權
11.1.3.
準備開發裝置驅動程式
11.1.4.
開發驅動程式的第一步
11.1.5.
開發driver需要的基礎知識
11.1.6.
實際撰寫驅動程式
11.1.7.
控制硬體
11.1.8.
記憶體
11.1.9.
計時器
11.1.10.
同步與鎖定
11.1.11.
中斷
11.1.12.
測試與除錯
11.2.
《深入Linux設備驅動程序內核機制》之MMAP內存頁面示例
11.3.
LinuxDeviceModel三角關係
11.4.
Linux設備模型(1)_基本概念
11.5.
Linux設備模型(2)_Kobject
11.6.
mmapdriverimplementation
11.7.
嵌入式Linux驅動模板精講與項目實踐
11.8.
動手寫LinuxDriver
12.
OS
12.1.
[轉]打造簡易作業系統
12.1.1.
(一)開機HelloWorld實例
12.1.2.
(二)BootLoader+作業系統載入實例(QEMU)
12.1.3.
(三)BootLoader+作業系統載入實例(CFCard)
12.1.4.
(四)由16位元真實模式(RealMode)進入32位元保護模式(ProtectMode)
12.1.5.
(五)使用LocalDescriptorTable(LDT)
12.1.6.
(六)簡介CallGate
12.1.7.
(七)利用CallGate與TSS(Task-StateSegment)實現特權等級的轉換
12.2.
PageTablesize太大之解決
13.
LinuxSystem
13.1.
事件驅動伺服器
13.2.
Multi-pthreadnote
13.2.1.
fork+pthread_create記憶體空間差異
13.2.2.
ProsandCons
13.2.3.
Linux內核中線程的實現方式
13.3.
linux系統編程
13.3.1.
文件與IO(一):文件描述符、open,close
13.3.2.
文件與IO(二):系統調用read和write
13.3.3.
文件與IO(三):利用lseek()創建空洞文件
13.3.4.
文件與IO(四):目錄訪問相關係統調用
13.3.5.
文件與IO(五):stat()系統調用獲取文件信息
13.3.6.
文件與IO(六):實現ls-l功能
13.3.7.
文件與IO(七):時間函數小結
13.3.8.
文件與IO(八):文件描述符相關操作-dup,dup2,fcntl
13.3.9.
進程(一):進程與程序
13.3.10.
進程(二):進程生命週期與PCB(進程控制塊)
13.3.11.
進程(三):進程複製fork,孤兒進程,殭屍進程
13.3.12.
進程(四):進程退出exit,_exit區別即atexit函數
13.3.13.
進程(五):exec系列函數(execl,execlp,execle,execv,execvp)使用
13.3.14.
進程(六):父進程查詢子進程的退出,wait,waitpid
13.3.15.
進程(七):system()函數使用
13.3.16.
進程(八):守護進程詳解及創建,daemon()使用
13.3.17.
信號(一):中斷與信號
13.3.18.
信號(二):信號處理流程(產生、註冊、註銷、執行)
13.3.19.
信號(三):信號安裝、signal、kill,arise講解
13.3.20.
信號(四):alarm和可重入函數
13.3.21.
信號(五):信號集操作函數,信號阻塞與未決
13.3.22.
信號(六):信號發送函數sigqueue和信號安裝函數sigaction
13.3.23.
信號(七):被信號中斷的系統調用和庫函數處理方式
13.3.24.
信號(八):三種時間結構及定時器setitimer()詳解
13.3.25.
管道(一):匿名管道(pipe)
13.3.26.
管道(二):管道讀寫規則
13.3.27.
管道(三):命令管道(FIFO)
13.3.28.
錯誤處理:perror,strerror和errno
13.3.29.
利用backtrace和backtrace_symbols函數打印調用棧信息
13.3.30.
linux系統編程:setjmp和longjmp函數用法
13.3.31.
linux新定時器:timefd及相關操作函數
13.4.
Note
13.4.1.
IPC
13.4.1.1.
PIPE
13.4.1.2.
Signal
13.5.
LinuxDebugging
13.5.1.
使用反彙編理解C++程序函數調用棧
13.5.2.
熟悉AT&T彙編語言
13.5.3.
C++函數調用的參數傳遞方法總結(通過gdb+反彙編)
13.5.4.
使用GDB來理解C++對象的內存佈局(多重繼承,虛繼承)
13.5.5.
coredump分析入門
13.5.6.
動態庫注入、ltrace、strace、Valgrind
13.5.7.
使用反彙編理解動態庫函數調用方式GOT/PLT
13.5.8.
core真的那麼難以追蹤嗎?
13.5.9.
一次生產環境下的“內存洩露”
13.6.
Linux作業系統分析
13.6.1.
破解Linux操作系統的奧祕
13.6.2.
Howprogramworks
13.6.3.
進程的創建與可執行程序的加載
13.6.4.
內核裝載ELF的過程總結
13.7.
如何更新linuxconsole畫面
13.8.
服務器進程為何通常fork()兩次
13.9.
創建Daemon程式
13.10.
Linux信號處理機制
13.11.
函數調用棧的獲取原理分析
13.12.
在Linux程序中輸出函數調用棧
13.13.
C/C++混合編程
13.14.
linux下C與C++混合編程
13.15.
Static與Shared的函式庫撰寫
13.16.
Linux的time指令
13.17.
孤兒進程與殭屍進程[總結]
13.18.
pkg-config使用及建立方法
13.19.
簡述configure、pkg-config、pkg_config_path三者的關係
13.20.
動態庫的鏈接和鏈接選項-L,-rpath-link,-rpath
13.21.
LD_LIBRARY_PATH與-L的關係
13.22.
shell環境變量以及set,env,export的區別
13.23.
用gcc自製Library
13.24.
如何使用pkg-config工具編譯鏈接第三方庫
13.25.
stdout&stderr&fflush()
13.26.
使用system()函數執行命令行命令簡述
13.27.
ldconfig及LD_LIBRARY_PATH,LD_DEBUG,LD_PRELOAD
13.28.
SIGINT後KILL自己
13.29.
my_note
13.29.1.
thread_create&signal使用技巧
13.30.
pthread_sigmask控制線程的信號掩碼
13.31.
C的ThreadPool筆記
13.32.
IPaddressesfromaCprogram
13.33.
OpenMPinlinux
13.34.
MutexesVSSemaphores大揭祕
13.35.
dlopen&dlsym用法
13.36.
pthread_create&pthread_join&pthread_exit基本用法
13.37.
LINUX下動態庫調用靜態庫的方法
13.38.
C語言互斥鎖-雙條件變量實現循環打印
13.39.
tutorial-pthreads
13.40.
《ProgrammingwithPOSIXThreads》筆記
13.41.
mmap映射空間與內存和磁盤的IO性能對比
13.42.
一個並發10k的簡易群聊天室(使用epoll)
13.43.
Mutex與Semaphore最大的差異是
13.44.
[讀書會]Linux環境編程:從應用到內核
13.45.
example
13.46.
64位x86的函數調用棧佈局
13.47.
如何手工展開函數棧來定位問題
13.48.
第3章行程(process)環境
13.49.
打印出一個完整的程序調用堆棧信息
13.50.
Linux下IPC的運作方式
13.51.
細說linuxIPC
13.51.1.
基於socket的進程間通信(上)
13.51.2.
基於socket的進程間通信(下)
13.51.3.
mmap系統調用共享內存
13.51.4.
posix共享內存
13.51.5.
systemV共享內存
13.51.6.
pipe和FIFO
13.51.7.
信號(上)
13.51.8.
信號(下)
13.51.9.
posix消息隊列
13.51.10.
systemV消息隊列
13.51.11.
細說linuxIPC:各種IPC形式比較總結
13.51.12.
補充現代Linux有兩種共享內存機制
13.52.
Linux同步與互斥應用
13.52.1.
(零):基礎概念
13.52.2.
(一):posix線程及線程間互斥
13.52.3.
(二):posix線程同步
13.52.4.
(三):posix線程實現單個生產者和單個消費者模型
13.52.5.
(四):posix信號量的互斥與同步
13.52.6.
(五):systemV信號量的互斥與同步
13.52.7.
(六):文件鎖
13.53.
Linux下利用backtrace追蹤函數調用堆棧以及定位段錯誤
13.54.
sendfile:Linux中的"零拷貝"
13.55.
LinuxNote:daemon與backgroundprocess的差異
13.56.
x86有個有個lea指令(LoadEffectiveAddress)
13.57.
Linux平臺延時之sleep、usleep、nanosleep、select比較
13.58.
linux用戶空間和內核空間延時函數
13.59.
即時系統使用排程器
13.60.
性能分析工具使用callgrind+kcachegrind
13.60.1.2(RDTSC)
13.61.
linux編程的108種奇淫巧計
13.61.1.
1(FALSESHARING)
13.61.2.
2(RDTSC)
13.61.3.
3(magic2)
13.61.4.
4(編譯展開)
13.61.5.
5(rbp寄存器)
13.61.6.
6(shellcode)
13.61.7.
7(Lock-free實驗)
13.61.8.
8(嵌入彙編的另一種寫法)
13.61.9.
PForDelta索引壓縮算法的實現
13.61.10.
11(亂序)
13.61.11.
12(存儲計算)
13.61.12.
15(減少複製)
13.61.13.
16(如何達到內存最大帶寬,複雜指令)
13.61.14.
17(如何達到內存最大帶寬,精簡指令,預取和NT)
13.61.15.
18(SIMD)
13.61.16.
關於bit操作(bit_settest_bit)
13.61.17.
putvariablesinaregsiter
13.61.18.
UserspaceI/Oschedulingformulti-fileoperations
13.61.19.
ManualFIleLocking
13.62.
Linux下fork函數及pthread函數的總結
13.63.
C++在類裡面使用多線程技術
13.64.
深入Linux多線程編程
13.65.
C/C++每線程(thread-local)變量的使用
13.66.
在pthread的線程函數中,使用類的非靜態成員函數來執行
13.67.
從pthread轉換到std::thread
13.68.
如何在運行時加載C++函數和類別
13.69.
主線程退出對子線程的影響
14.
Assembly
14.1.
myAssembly
14.2.
Linux平臺學X86組合語言
14.2.1.
現代計算機結構組成與工作過程
14.2.2.
處理器指令碼及IA-32平臺瞭解
14.2.3.
相關開發工具
14.2.4.
從“helloworld!”開始
14.2.5.
使用gdb調試彙編程序
14.2.6.
數據的傳送
14.2.7.
堆棧的使用
14.2.8.
條件跳轉
14.2.9.
循環指令
14.2.10.
整數運算
14.2.11.
字符串的傳送
14.2.12.
字符串的存儲與加載
14.2.13.
字符串的比較與搜索
14.2.14.
函數的使用
14.2.15.
使用命令行參數
14.2.16.
在彙編語言中調用C庫函數
14.2.17.
在彙編中使用linux系統調用
14.2.18.
內聯彙編
14.2.19.
C語言中調用匯編函數
14.2.20.
彙編庫的使用(結)
14.3.
[轉]如何在Linux下使用GNUAS撰寫組合語言
14.4.
在Linux下使用GNUAS編寫組合語言-使用gdb進行除錯
14.5.
linux反彙編旁門左道小技巧一則
14.6.
gas學習byJianLee
14.7.
閱讀assemblycode
14.8.
Linuxasm系統調用:32位和64位的區別
14.9.
如何在linux下編譯彙編程序,內功心法是彙編程序的結構
15.
Toolchain
15.1.
crosscompilerinstall
15.2.
buildrootinstall
15.3.
arm交叉編譯器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi區別
16.
GDB
16.1.
gdb常用指令
16.2.
Beej'sQuickGuidetoGDB
16.3.
簡易GDBScript教學,應用
16.4.
[轉]GDB的妙用
16.5.
GDB中應該知道的幾個調試方法
16.6.
KGDB
16.7.
[轉]DebugXorgwithGDBonUbuntu
16.8.
[轉]使用GDB以樹狀方式將函式流程印出
16.9.
gdb除錯技術
16.10.
gdb的multiarch
16.11.
gdb編譯
16.12.
KGDBLinuxKernelforSamsung
16.13.
用GDB追蹤glibc代碼執行過程
16.14.
使用GDB分析二進位資料
16.15.
cgdb編譯&使用
16.16.
gdbC++小技巧
16.17.
gdb展開C/C++的macro
16.18.
solib-absolute-prefix和solib-search-path的區別
16.19.
利用gdb進行sharedlibrary的除錯
16.20.
用GDB跟蹤觀察共享庫函數的地址翻譯過程
16.21.
KGDB調試LINUX內核
16.22.
GDB調試原理ptrace系統調用
16.23.
gdb遠程qemu-arm調試
16.24.
gdb顯示結構體
16.25.
GDBC++STLprinter
16.26.
GDBdashboard:debuginfoataglance
16.27.
在程式碼中使用signal()插入中斷點,讓GDB暫停程式做debugging
16.28.
只要出問題,C4炸藥gdb都能搞定
16.29.
懶人除錯法
16.30.
兩種將gdb的輸出信息存到文件的方法
16.31.
使用call命令在GDB中重複調用某函數
16.32.
通過GDB學習C語言
16.33.
用GDB反彙編調試linux內核
16.34.
GDB下查看記憶體指令(x指令)
16.35.
Howtodebugglibsourcecodeviagdb
16.36.
HowtouseGDBdebugOpenCVprogrammes?
16.37.
GDB實用教學:自動化你的debug
16.38.
GDB反向調試(ReverseDebugging)
16.39.
讓程序崩潰時產生coredump
16.40.
很經典的GDB調試命令,包括查看變量,查看內存
16.41.
gdb調試帶參數程序
16.42.
整理常用的gdb技巧
16.43.
GDB命令基礎,讓你的程序bug無處躲藏
16.44.
valgrind+gdb
16.45.
調試技巧備忘
16.46.
TraceFunctionCallsUsingGDBRevisited
16.47.
[GDB]除錯python程式thread間互相等待mutex,造成deadlock的問題
17.
Linux內核分析雲課堂學習筆記
17.1.
圖解分析彙編代碼以理解計算機是如何工作的
17.2.
基於mykernel的一個簡單的時間片輪轉多道程序內核代碼分析
17.3.
使用gdb跟蹤Linux內核啟動過程
17.4.
使用庫函數API和C代碼中嵌入彙編代碼兩種方式使用同一個系統調用
17.5.
分析system_call中斷處裡過程
17.6.
初學Linux進程的描述和進程的創建
17.7.
初學《Linux內核如何裝載和啟動一個可執行程序》
17.8.
初學Linux中進程調度與進程切換過程
17.9.
Linux內核學習總結
17.10.
小博魚筆記
17.10.1.
Linux內和分析(一)計算機是如何工作的
17.10.2.
Linux內和分析(二)操作系統是如何工作的
18.
C++
18.1.
筆記
18.1.1.
C++通過虛函數表,直接外部訪問類中的函數,並且脫離類
18.1.2.
使用gdb探究C++內存佈局
18.1.3.
C++動多態實現之虛函數與虛表指針
18.2.
[轉]C++對象的內存佈局
18.3.
[轉]C++對象模型之簡述C++對象的內存佈局
18.4.
[轉]C++對象模型之詳述C++對象的內存佈局
18.5.
[轉]C++虛函數表解析
18.6.
如何判斷C++物件的類別?
18.7.
ASimpleC++FunctionCallStackTraceUtility
18.8.
探索C++虛函數在g++中的實現
18.9.
樸實的C++設計
18.10.
C++智能指針
18.11.
Mutex::Autolockforc++
18.12.
C++STL學習總結(全面)
18.13.
學習C++:實踐者的方法(Beta1)
18.14.
STL容器(一)-基本介紹
18.15.
STL容器(二)-Iterator
18.16.
C/C++十三誡
18.17.
標準類型轉換:static_cast,dynamic_cast,reinterpret_cast,andconst_cast
18.18.
example
18.18.1.
vector用法
18.18.2.
父子類別之間函數呼叫
18.18.3.
C++:父類調用子類的成員函數
18.18.4.
StdPair用法
18.18.5.
2Dvectorarrayusingstd::vector
18.18.6.
arraycopyusingstd::vector
18.18.7.
std::vector封裝到shared_ptr
18.18.8.
shared_ptr向下轉型
18.19.
C++的Class中的一些重點整理
18.20.
LOG建構解構
18.21.
c++typeid()用法如何正確的顯示變數型態名稱的亂碼、異常
18.22.
shared_ptr使用建構解構驗證記憶體回收
18.23.
實例研討:從C++學習C高級技巧
18.24.
為何Google禁止工程師使用C++staticobject?
18.25.
是否能讓C++template的標頭檔只含宣告不含實作?
18.26.
改善C++程序的150個建議
18.27.
C++物件模型
18.27.1.
物件模式(一)
18.27.2.
物件模式(二)
18.28.
C++類對象內存結構
18.29.
C++四種繼承關係中內存分佈
18.30.
GDB來理解C++對象的內存佈局
18.31.
利用函數指針實現父類函數調用子類函數
18.32.
c++子類和父類指針的轉換
18.33.
C中調用C++與C++調用C
18.34.
C++11之多線程
18.34.1.
(一、標準庫的線程封裝類Thread和Future)
18.34.2.
(二、互斥對象和鎖)
18.34.3.
(三、條件變量)
18.35.
mutex
18.35.1.
C++11併發之std::mutex
18.35.2.
timed_mutex例子
18.36.
C++靜態成員函數訪問非靜態成員的幾種方法
18.37.
Mutex+Timer模擬時間鎖
18.38.
HowtoStoporTerminateaThread
18.39.
C++11threadrun函數不需要static
18.40.
templatec++toallocatedynamicmatrix2D
19.
GNUmake
19.1.
example
19.1.1.
好用Makefile
19.2.
CMake
19.2.1.
CMake初探
19.2.2.
CMake入門
19.2.3.
讓cmake顯示gcc/g++的編譯信息
19.2.4.
把玩CMake的第一步
19.2.5.
cmakeCFLAGSCXXFLAGS
19.2.6.
CMake入門/加入編譯選項
19.2.7.
CMakeforwindows
19.2.8.
CMake常用指令
19.3.
如何調試makefile變量
19.4.
跟我一起寫Makefile:make運行
19.5.
Makefile的常用技術總結
19.6.
Makefile語法簡介
19.7.
Makefile先編譯出so後在編譯出執行檔
19.8.
利用Autotools來建立Makefile檔案
19.9.
GNUMakefile雜項語法備忘
19.10.
SCons筆記(詳細版)
19.11.
高級Makefile技巧
19.12.
Makefile條件編譯debug版和release版
19.13.
Makefile範例教學
19.14.
LinuxC++編譯及靜態/動態鏈接庫筆記
19.15.
Makefile的基本結構
19.16.
深入學習Make命令和Makefile(上)
19.17.
深入學習Make命令和Makefile(下)
19.18.
Makefile中的$@,$^,$與設計模式之開放封閉原則OCPC++示例
25.9.
c++面向對象設計的SOLID原則
26.
OpenWrt
26.1.
OpenWRT編譯環境搭建
27.
Python
27.1.
example
27.1.1.
月營收這樣看!三種月營收選股法–Python實作教學
27.1.2.
個股年成交資訊
27.1.3.
Python基本爬蟲程式以Google新聞為例
27.1.4.
Python新聞關鍵字查詢
27.1.5.
PTTcrawler(PTT文章爬蟲)
27.1.6.
Python_by_David_Chiu
27.1.7.
googlenews爬文
27.1.8.
如何抓取廉價航空的機票價格–以酷航
27.1.9.
露天拍賣&編碼問題
27.1.10.
fb社團爬標題發文者內容
27.1.11.
Python中將打印輸出導向檔案
27.1.12.
轉換GDB調用棧到流程圖
27.1.13.
RetrievingGmailblockedattachments
27.1.14.
如何抓取上市股票交易明細
27.1.15.
臺鐵資料下載
27.1.16.
Findallfilesindirectorywithextension.txtinPython
27.1.17.
Audio利用ffmpeg編碼轉換
27.1.18.
集臺證所融資融券餘額全部資料
27.1.19.
goodinfo
27.1.20.
sqlite3技術手冊
27.1.21.
利用PYTHON+GMAILSMTP寄送EMAIL及附檔CATEGORIES
27.1.22.
Post抓取高鐵
27.1.23.
goodinfo經營績效
27.1.24.
使用Pandas函式將臺灣銀行的牌告匯率存進資料庫中
27.1.25.
抓三大法人的網頁資料
27.1.26.
讀取檔案指定的行
27.1.27.
產生曲線圖
27.1.28.
畫出Eulerangle曲線圖
27.1.29.
標準差計算
27.1.30.
畫四元數曲線圖
27.1.31.
多筆行平均總和
27.1.32.
SWIG
27.1.33.
Scrapy+Python3:PTT資料抓取與分析
27.1.34.
pttusingselenium
27.1.35.
Linenotify
27.1.36.
PTT爬文物品+line發送
27.1.37.
露天拍賣換頁
27.1.38.
ultrasoundrawdata
27.1.39.
campsaver.py
27.1.40.
選出股本50億以上的股票代號
27.1.41.
goodinfo股票篩選
27.1.42.
抓取臺股證交所每日股價資料,儲存到MongoDB
27.1.43.
音頻文件按照正常語句,斷句拆分的處理方法
27.1.44.
台股大盤季線計算
27.2.
pandas
27.2.1.
pandas入門
27.2.2.
PythonPandasDataFrame的iloc[0]與iloc[[0]]
27.2.3.
PandasDataframesto_html:Highlightingtablerows
27.2.4.
openHTML網頁分析
27.2.5.
Pandas無法處理HTML透過Soup輔助
27.2.6.
pandascreatedataframeexample
27.2.7.
Convertlistofnumpy.float64tofloatandConvertingstringstofloatsinaDataFrame
27.2.8.
PandasExcelexample
27.2.9.
十分鐘快速入門Pandas
27.2.10.
Addarowtodataframe
27.2.11.
PandasDataFrame的iloc[0]與iloc[[0]]
27.2.12.
數據操作(Pandas)完整
27.2.13.
pandasreadcsv
27.2.14.
readhtml
27.3.
編碼
27.3.1.
Python-瞭解bytes、str與unicode的區別
27.3.2.
淺談python2及python3處理中文字串編碼的差異
27.3.3.
立即停止使用setdefaultencoding('utf-8'),以及為什麼
27.3.4.
Python+Requests編碼問題
27.3.5.
Python的編碼
27.3.6.
瞭解Unicode
27.3.7.
pythonstringandunicodestring
27.3.8.
python2與python3編碼差異
27.4.
django
27.4.1.
使用heroku部署django應用測試
27.4.2.
PythonDjango快速入門教學
27.4.3.
Django基本命令
27.5.
正則Regex
27.5.1.Python的re模塊
27.6.
BeautifulSoup
27.6.1.
removescripttagswithBeautifulSoup
27.6.2.
使用BeautifulSoup
27.6.3.
Python使用beautifulsoup解析HTML、XML
27.6.4.
python爬蟲之BeautifulSoup
27.7.
爬蟲
27.7.1.
Python爬蟲模擬登錄的黑魔法
27.7.2.
Selenium使用CSSlocator定位HTMLelement
27.8.
常見錯誤訊息
27.9.
安裝Jupyter
27.10.
編譯python&安裝pip
27.11.
pip使用詳解
27.12.
5個很好的Python面試題
27.13.
Python-網頁爬蟲-&-文本處理-&-科學計算-&-機器學習-&-數據挖掘兵器譜
27.14.
選擇Python科學計算發行版
27.15.
Python常用的數學函數
27.16.
pythondebug入門
27.17.
Python直譯器如何處理字串編碼
27.18.
Python--線性代數篇
27.19.
python字符串連接的N種方式
27.20.
Python調用Linux下的動態庫(so)
27.21.
python堆棧回溯示例代碼
27.22.
Generatec/c++headerfilefromaCSVfile(forarraydeclaration)
27.23.
觀察技巧withChrome開發人員工具
27.24.
steepandcheapalerts
27.25.
Anaconda使用總結
27.26.
pythonsetup.pyuninstall
27.27.
Python原始碼使用gdbtrace
27.28.
DebuggingCPythonwithgdb
27.29.
PTTgamesale板的買賣文
27.30.
Howtodefinetwo-dimensionalarrayinpython
27.31.
Python技巧(漂亮又通順的程式碼)
27.32.
DB
27.32.1.
SQLite-Python安裝
27.33.
Python讀取csv的某行
27.34.
用Anaconda完美解決Python2和python3共存問題
27.35.
Embedpython/numpyinC++
27.36.
practice
27.37.
Selenium
27.38.
utctimetolocaltime
27.39.
區塊鏈
27.39.1.
50行Python代碼構建一個區塊鏈
28.
Vim
28.1.
HOWTO-vi,vim
28.2.
編譯vim8並添加對lua,python,ruby的支持
28.3.
NVIM
29.
TDD
29.1.
程式設計師升級必練內功:TDDKata
30.
Raspberry_Pi
30.1.
燒錄新版系統
30.2.
HelloworldonqemuRaspberryPi
30.3.
自己動手編譯RaspberryPi的Kernel
30.4.
BuildingandDeployingRaspberryPIKernel
30.5.
PreparingRaspberryPIforJTAGDebugging
30.6.
RaspberryPi2BareMetalMulticoreJTAGDebugging
30.7.
rpi,serialandkgdb
30.8.
[RaspberryPiProject]HowdoesRaspberryPiboot?
30.9.
[RaspberryPiProject]CompileandupdateRaspbiankernel
30.10.
[RaspberryPiProject]kernel啟動參數
30.11.
RaspberryPi編譯Linux核心
30.12.
用Raspberrypi寫驅動程式--基本觀念
30.13.
用Raspberrypi寫驅動程式--範例1:LED
30.14.
在Raspberrypi上建立自己的systemcall
30.15.
RaspberrypiGPIO控制
30.16.
RaspberryPi的開始流程
30.17.
consilefullscreen
30.18.
RaspberryPi:Raspbian增加deb套件的下載來源
30.19.
使用C++讀取MPU-6050加速度計與陀螺儀感測資料
30.20.
使用MPU-6050的DMP來取得更精準的運動感測資料
30.21.
kgdbforRPI
30.22.
telnetforraspberry
30.23.
DebuggingRaspberryPiLinuxkernelwithJTAGandGDB
30.24.
raspberrypi2_kernel_debug
30.25.
fichugh
30.25.1.
buildRootstudy-建立自己的作業系統
30.25.2.
u-boot組態研究-raspberrypi2
30.25.3.
HowtoBuildaGCCCross-Compiler
30.26.
ARMassemblerinRaspberryPi
30.26.1.
Tableofcontents
30.26.2.
Introduction
30.26.3.
Registersandbasicarithmetic
30.26.4.
Memory,addresses.Loadandstore.
30.26.5.
GDB
30.26.6.
Branching
30.26.7.
Controlstructures
30.26.8.
Indexingmodes
30.26.9.
Arraysandstructures
30.26.10.
Functions(I)
30.26.11.
Functions(II).Thestack
30.26.12.
Predication
30.26.13.
Loopsandthestatusregister
30.26.14.
Floatingpointnumbers
30.26.15.
Matrixmultiply
30.26.16.
Integerdivision
30.26.17.
Switchcontrolstructure
30.26.18.
Passingdatatofunctions
30.26.19.
Localdataandtheframepointer
30.26.20.
Theoperatingsystem
30.26.21.
Indirectcalls
30.26.22.
Subworddata
30.26.23.
TheThumbinstructionset
30.26.24.
Nestedfunctions
30.26.25.
Trampolines
30.26.26.
IntegerSIMD
30.26.27.
Aprimeraboutlinking
30.26.28.
Objectsandlibraries
30.27.
ExploringAArch64assembler
30.27.1.
Chapter1
30.27.2.
Chapter2
30.27.3.
Chapter3
30.27.4.
Chapter4
30.27.5.
Chapter5
30.27.6.
Chapter6
30.27.7.
Chapter7
30.27.8.
Chapter8
30.28.
raspberry3b64bit系統安裝,以及交叉編譯環境、調試環境的搭建
30.29.
樹莓派autossh反向隧道
30.30.
KernelInitialization
30.31.
DebuggingRaspberryPi3withJTAG
30.32.
pi3設定
30.33.
兩種方式教你編譯更新RaspberryPi3的內核
31.
OpenGL
31.1.
opengl(mesa)forubuntu14.04
31.2.
ubuntu14.04安裝OpenGL(基於freeglut)
31.3.
Ubuntu下安裝OpenGL圖形庫
31.4.
OpenGL,glx,glaux,glut,freeglut,glew,glfw,mesa
32.
arduino
32.1.
ProcessingcommunicationwithArduinoviaserial
32.2.
使用gdb實時調式arduino
32.3.
ArduinoUNO控制板簡介
32.4.
時脈算換
32.4.1.I2Cprotocol原理及應用
32.5.
邱小新8051
32.5.1.
I2Cprotocol時間計算
32.5.2.
8051clock
32.5.3.
I2Cprotocol原理及應用
32.6.
I2C
32.7.
讓arduino不需要使用sudo
33.
edb
33.1.
EDB(Evan'sDebugger)
34.
DebugTips
34.1.
分析問題想法筆記
34.2.
gcc/g++-instrument-functions參數
34.3.
coredump之前的frame
34.4.
使用valgrind檢查cache命中率,提高程序性能
34.5.
GDB調試技巧:gdbatpid無法調試的問題
34.6.
GDB調試技巧:調試複雜的宏定義
34.7.
使用valgrind檢查內存問題
34.8.
GDB技巧:使用checkpoint解決難以復現的Bug
34.9.
強制進程產生coredump,檢測死鎖以及進程快照
34.10.
如何快速地在每個函數入口處加入相同的語句?
34.11.
C++源碼的調用圖生成
35.
thinker_note
35.1.
如果有人要求你改善系統
35.2.
閱讀程式碼的心理層面
35.3.
學習程式設計的方法?!
35.4.
讀code和讀文章應該差不多
35.5.
程式碼要清的多乾淨?
35.6.
GDB追蹤memorycorruption
35.7.
GDB自動化debug
35.8.
unittest與pdb改善開發效率
35.9.
程式註解如何寫
35.10.
程式碼的可讀性比較
35.11.
軟體元件的使用
36.
GCC_and_Clang
36.1.
GCC
36.1.1.
__thread關鍵字
36.1.2.
gcc中-pthread和-lpthread的區別
36.1.3.
memorylayoutC++objectsforg++
36.1.4.
gcc-E-P
36.1.5.
g++參數介紹
36.1.6.
gcc編譯,ld連接
36.1.7.
編譯步驟-組譯連結測試
36.1.8.
LinuxGCC編譯4個過程
36.1.9.
dlopen()與GCC-rdynamic選項
36.2.
Clang
36.2.1.
memorylayoutC++objectsforclang
37.
FreeRTOS
37.1.
FreeRTOS-GCC-ARM926ejs_QEMU
37.2.
[STM32]4.移植FreeRTOS
38.
tinyclub
38.1.
源碼分析
38.1.1.
靜態分析C程序函數調用關係圖
38.1.2.
動態分析C程序函數調用關係
38.1.3.
函數調用關係繪製方法與逆向建模
38.1.4.
動態分析Linux內核函數調用關係
38.2.
Linux彙編語言快速上手:4大架構一塊學
39.
VR
39.1.
LinuxBuildInstructions
39.2.
kalmanfilter
39.3.
MPU6050
39.4.
卡爾曼濾波配合程式講解
39.5.
MPU6050數據輕鬆分析
39.6.
QuatEuler互轉
39.7.
四元數diff
40.
Treacecode
40.1.
[轉]閱讀程式碼的心理層面
40.2.
我的原始碼閱讀之道
40.3.
磨練閱讀程式技巧,不受黑盒限制
40.4.
閱讀他人的程式碼
40.4.1.
讀懂程式碼,使心法皆為我所用
40.4.2.
摸清架構,便可輕鬆掌握全貌
40.4.3.
優質工具在手,讀懂程式非難事
40.4.4.
望文生義,進而推敲組件的作用
40.4.5.
找到程式入口,再由上而下抽絲剝繭
40.4.6.
閱讀的樂趣:透過程式碼認識作者
41.
Log
41.1.
打印log
41.2.
如何在Android各level(包含userspace與kernelspace)使用dumpcallstack的方法
42.
embedded
42.1.
JTAG是把屠龍刀,說說其作用和原理
42.2.
TQ210
42.2.1.
TQ210成功使用JLinkdebugkernel
43.
LinuxNetwork
43.1.
LinuxSocket入門
43.2.
Socketprogramming筆記
43.3.
TCPSocketProgramming學習筆記
43.4.
ntohs,ntohl,htons,htonl的比較
43.5.
AF_INET和PF_INET的區別
44.
node.js
44.1.
安裝NodeJS、NPM
44.2.
JavaScript快速入門[轉]
44.2.1.
JavaScript快速入門(序)
44.2.2.
JavaScript快速入門(1/10)-訊息輸出
44.2.3.
JavaScript快速入門(2/10)-變數與資料型別
44.2.4.
JavaScript快速入門(3/10)-數字/字串/布林值
44.2.5.
JavaScript快速入門(4/10)-運算子
44.2.6.
JavaScript快速入門(5/10)-敘述句if/switch
44.2.7.
JavaScript快速入門(6/10)-迴圈
44.2.8.
JavaScript快速入門(7/10)-函式
44.2.9.
JavaScript快速入門(8/10)-物件
44.2.10.
JavaScript快速入門(9/10)-陣列
44.2.11.
JavaScript快速入門(10/10)-使用內建物件
45.
100gdbtips
45.1.
信息顯示
45.1.1.
顯示gdb版本信息
45.1.2.
顯示gdb版權相關信息
45.1.3.
輸出信息多時不會暫停輸出
45.1.4.
啟動時不顯示提示信息
45.1.5.
退出時不顯示提示信息
45.2.
函數
45.2.1.
列出函數的名字
45.2.2.
是否進入帶調試信息的函數
45.2.3.
進入不帶調試信息的函數
45.2.4.
退出正在調試的函數
45.2.5.
直接執行函數
45.2.6.
打印函數堆棧幀信息
45.2.7.
打印尾調用堆棧幀信息
45.2.8.
選擇函數堆棧幀
45.2.9.
向上或向下切換函數堆棧幀
45.3.
斷點
45.3.1.
在匿名空間設置斷點
45.3.2.
在程序地址上打斷點
45.3.3.
在程序入口處打斷點
45.3.4.
在文件行號上打斷點
45.3.5.
保存已經設置的斷點
45.3.6.
設置臨時斷點
45.3.7.
設置條件斷點
45.3.8.
忽略斷點
45.4.
觀察點
45.4.1.
設置觀察點
45.4.2.
設置觀察點只針對特定線程生效
45.4.3.
設置讀觀察點
45.4.4.
設置讀寫觀察點
45.5.
Catchpoint
45.5.1.
讓catchpoint只觸發一次
45.5.2.
為fork調用設置catchpoint
45.5.3.
為vfork調用設置catchpoint
45.5.4.
為exec調用設置catchpoint
45.5.5.
為系統調用設置catchpoint
45.5.6.
通過為ptrace調用設置catchpoint破解anti-debugging的程序
45.6.
打印
45.6.1.
打印ASCII和寬字符字符串
45.6.2.
打印STL容器中的內容
45.6.3.
打印大數組中的內容
45.6.4.
打印數組中任意連續元素值
45.6.5.
打印數組的索引下標
45.6.6.
打印函數局部變量的值
45.6.7.
打印進程內存信息
45.6.8.
打印靜態變量的值
45.6.9.
打印變量的類型和所在文件
45.6.10.
打印內存的值
45.6.11.
打印源代碼行
45.6.12.
每行打印一個結構體成員
45.6.13.
按照派生類型打印對象
45.6.14.
指定程序的輸入輸出設備
45.6.15.
使用“$\\_”和“$\\__”變量
45.6.16.
打印程序動態分配內存的信息
45.6.17.
打印調用棧幀中變量的值
45.7.
多進程/線程
45.7.1.
調試已經運行的進程
45.7.2.
調試子進程
45.7.3.
同時調試父進程和子進程
45.7.4.
查看線程信息
45.7.5.
在Solaris上使用maintenance命令查看線程信息
45.7.6.
不顯示線程啟動和退出信息
45.7.7.
只允許一個線程運行
45.7.8.
使用“$_thread”變量
45.7.9.
一個gdb會話中同時調試多個程序
45.7.10.
打印程序進程空間信息
45.7.11.
使用“$_exitcode”變量
45.8.
coredump文件
45.8.1.
為調試進程產生coredump文件
45.8.2.
加載可執行程序和coredump文件
45.9.
彙編
45.9.1.
設置彙編指令格式
45.9.2.
在函數的第一條彙編指令打斷點
45.9.3.
自動反彙編後面要執行的代碼
45.9.4.
將源程序和彙編指令映射起來
45.9.5.
顯示將要執行的彙編指令
45.9.6.
打印寄存器的值
45.9.7.
顯示程序原始機器碼
45.10.
改變程序的執行
45.10.1.
改變字符串的值
45.10.2.
設置變量的值
45.10.3.
修改PC寄存器的值
45.10.4.
跳轉到指定位置執行
45.10.5.
使用斷點命令改變程序的執行
45.10.6.
修改被調試程序的二進制文件
45.11.
信號
45.11.1.
查看信號處理信息
45.11.2.
信號發生時是否暫停程序
45.11.3.
信號發生時是否打印信號信息
45.11.4.
信號發生時是否把信號丟給程序處理
45.11.5.
給程序發送信號
45.11.6.
使用“$_siginfo”變量
45.12.
共享庫
45.12.1.
顯示共享鏈接庫信息
45.13.
腳本
45.13.1.
配置gdbinit文件
45.13.2.
按何種方式解析腳本文件
45.13.3.
保存歷史命令
45.14.
源文件
45.14.1.
設置源文件查找路徑
45.14.2.
替換查找源文件的目錄
45.15.
圖形化界面
45.15.1.
進入和退出圖形化調試界面
45.15.2.
顯示彙編代碼窗口
45.15.3.
顯示寄存器窗口
45.15.4.
調整窗口大小
45.16.
其它
45.16.1.
命令行選項的格式
45.16.2.
支持預處理器宏信息
45.16.3.
使用命令的縮寫形式
45.16.4.
在gdb中執行shell命令和make
45.16.5.
在gdb中執行cd和pwd命令
45.16.6.
設置命令提示符
45.16.7.
設置被調試程序的參數
45.16.8.
設置被調試程序的環境變量
45.16.9.
得到命令的幫助信息
45.16.10.
記錄執行gdb的過程
46.
compiler
46.1.
手把手教你構建C語言編譯器
46.1.1.
前言
46.1.2.
設計
46.1.3.
虛擬機
46.1.4.
詞法分析器
46.1.5.
遞歸下降
46.1.6.
變量定義
46.1.7.
函數定義
46.1.8.
語句
46.1.9.
表達式
46.1.10.
總結
46.2.
自己動手寫編譯器、鏈接器
46.3.
深入淺出教你寫編譯器
46.4.
C-compiler-optimizations
46.5.
tcc原始碼分析技巧
47.
linked_and_loader
47.1.
基礎範例
47.1.1.
LIBRARY_PATH和LD_LIBRARY_PATH環境變量的區別
47.1.2.
sofilecrashusingaddr2line
47.2.
把共享庫(SO)加載到指定的內存地址
47.3.
LinuxGOT與PLT
47.4.
GOT和PLT原理簡析
47.5.
Linux動態連結資料庫
47.6.
通過GDB調試理解GOT/PLT
47.7.
ELF文件的加載
47.8.
再議PLT與GOT
47.9.
Linuxgcc鏈接動態庫出錯:LIBRARY_PATH和LD_LIBRARY_PATH的區別
47.10.
Linux靜態庫與共享庫的使用
47.11.
linux下動態鏈接實現原理
47.12.
Linux共用程式庫的組織
47.13.
動態載入函式庫(DynamicallyLodadedLibraries)
47.14.
gcc編譯參數-fPIC的一些問題
47.15.
Linux下怎樣判斷一個binary是否可以debug
47.16.
查看正在運行的動態鏈接的程序中,某個動態庫中函數的虛擬地址
47.17.
使用另一個版本的glibc
47.18.
linux動態裝載動態庫ldd,ldconfig,ld.so.conf,ld.so.cache
47.19.
Linux的動態連結與載入(DynamicLinking)
47.20.
ld-linux.so.X查找和加載共享動態庫的順序
47.21.
-L,-rpath-link,-rpath動態庫的鏈接和鏈接選項
47.22.
gcc-rpath動態庫路徑
47.23.
動態庫及靜態庫的製作步驟講解
47.24.
動態鏈接庫的搜索路徑
47.25.
Linux添加環境變量與GCC編譯器添加INCLUDE與LIB環境變量
47.26.
linux下運行時連結庫的路徑順序
47.27.
gcc/g++鏈接時.o文件以及庫的順序問題
47.28.
程式設計師的自我修養
47.28.1.
介紹
47.28.2.
編譯和連結
47.28.3.
目的檔
47.28.4.
靜態連結
47.28.5.
鏈接、裝載、與庫_讀書筆記
47.29.
gcc編譯順序問題
47.30.
C編譯鏈接
47.31.
C加載過程
48.
Bochs
48.1.
OSdev的Bochs調試
49.
Nginx
49.1.
nginx模塊使用gdb調試nginx源碼
50.
Other
50.1.
練寫作可以讓你成為「神級程式設計師」,但不是不二法門
50.2.
編程的智慧
50.3.
為什麼thread(執行緒、線程)越少越好?
50.4.
頂尖程序員不同於常人的5個區別
50.5.
認知學習法byxdite
50.6.
認知學習法-自學篇byxdite
50.7.
笨方法學語言
50.8.
我是如何學一門新技術的
50.9.
測試的道理
50.10.
快速掌握一個語言最常用的50%
51.
DS_ALGO
51.1.
內核雙向鏈表的使用
51.2.
Linuxkernellinkedlistimpl.foruserspace
51.3.
Linux的container_of與offsetof巨集
51.4.
linuxlist.hforuserspace
51.5.
Linuxkerneldoublylinked-listimplementation
52.
C
52.1.
offsetof與container_of
52.2.
readcsvinc
52.3.
QFormatNumberinC
52.4.
IEEE764usingC
52.5.
structpointertoarray
52.6.
gyrorawdatafilter
52.7.
TemplateinC
52.8.
signed跟unsigned高位元差別
52.9.
21stCenturyC/21世紀C語言筆記
52.10.
你所不知道的C語言
52.10.1.
為何要深入學習C語言
52.10.2.
指標篇
52.10.3.
編譯器和最佳化原理篇
52.10.4.
函式呼叫篇
52.10.5.
物件導向程式設計篇
52.10.6.
前置處理器應用篇
52.10.7.
動態連結器篇
52.10.8.
遞迴呼叫篇
52.10.9.
數值系統篇
52.10.10.
技巧篇
52.10.11.
server-framework
52.10.12.
開發工具和規格標準
52.10.13.
goto和流程控制篇
52.10.14.
linkedlist和非連續記憶體操作
52.10.15.
StreamI/O和EOF
52.10.16.
未定義行為篇
52.10.17.
記憶體管理、對齊及硬體特性
52.11.
幫C語言加上GarbageCollector
52.12.
memcpyalignment
52.13.
如何得知malloc/free的呼叫次數
52.14.
HowtouseLD_PRELOADanddlsymhook
52.15.
CStyle
52.16.
C語言的奇技淫巧
53.
OpenSoruce
53.1.
開源網絡庫的分析libeventmuduonginx
53.2.
libevent專案分析
53.3.
使用gdb研究libevent
53.4.
15款值得學習的小型開源項目,帶你快速步入開源世界
53.5.
最值得閱讀學習的10個C語言開源項目代碼
54.
STM32
54.1.
STM32的FPU體驗
55.
hacker
55.1.
c9s
55.1.1.
快速進入工作狀況的十個要點
55.1.2.
API設計 — 建構之道:類別建構子設計
55.1.3.
架構之必要
55.1.4.
談設計模式之迷思
55.1.5.
想創業?再想想吧
55.1.6.
健康的泡沫
55.1.7.
API設計—命名之術
56.
Saleae
56.1.
ARMCM4Pratice(3):USART初探
57.
Docker
57.1.
構建docker開發環境
57.2.
門外漢的Docker小試身手
57.3.
OpenKoreinDockerDockerfile
57.4.
利用iptables給Docker綁定一個外網IP
57.5.
Docker修改默認存儲位置
57.6.
Docker安裝使用
57.7.
快速刪除多個docker容器的方法
57.8.
ubuntudocker開啟ssh
57.9.
QEMU+GDB+LK4onDocker
58.
Javascript
58.1.
14款基於javascript的數據可視化工具
59.
ncku嵌入式課程(Jserv)
59.1.
2016
59.1.1.
利用gprof2dot工具,將最耗時的函式與呼叫的路徑視覺化
59.1.2.
GDBcommand開發說明(usePython)
59.1.3.
GPIO
59.1.4.
重新理解數值
59.1.5.
類似C++template來實做呢?C11有_Generic關鍵字
59.1.6.
mergesort-concurrent
59.1.7.
A01:phonebook
59.1.8.
A02:raytracing
59.1.9.
A03:compute-pi
59.1.10.
A04:clz
59.1.11.
A05:introspect
59.1.12.
A06:phonebook-concurrent
59.1.13.
MatrixMultiplicationusingSIMD
60.
逆向工程
60.1.
Linux逆向工程的工具介紹
61.
Git
61.1.
Keepingaforkuptodate
61.2.
CloneallreposfromaGitHuborganization
61.3.
Git倉庫遷移而不丟失log的方法
61.4.
如何將GIT存儲庫從一個服務器遷移到新服務器
61.5.
git文件夾內容過大的解決方法
61.6.
gitcommittree保留最新20筆
62.
Interview
62.1.
DS_Algo
62.1.1.
LinkedList的複習總結
62.1.2.
面試精選:鏈表問題集錦
62.1.3.
鏈表面試常見合集
62.1.4.
編程判斷兩個鏈表是否相交
62.2.
面試經驗談-C語言篇
62.3.
CHT
62.3.1.
筆試
63.
Java
63.1.
開檔讀檔&正則範例
63.2.
Thread和Runnable的區別
63.3.
用javac命令行編譯多個java文件
63.4.
Java-jar選項與-cp/-classpath
63.5.
打印函數/callstack
63.6.
Ubuntu16.04安裝Eclipse
63.7.
java命令行編譯運行多個java文件
63.8.
Java中變數有效的範圍(VariableScope)
63.9.
JavaThread之間記憶體空間分析
63.10.
java中如何給Runnable線程傳遞參數?
63.11.
Java的兩種多線程實現方式
63.12.
gradleinit--typejava-application
63.13.
Unittest
63.14.
Java併發程式設計-Future系列之Future的介紹和基本用法
63.15.
Java_Gossip
63.15.1.
例外處理
63.15.1.1.
要抓還是要拋?
63.15.1.2.
貼心還是造成麻煩?
64.
LinearAlgebra
64.1.
理解矩陣
64.2.
旋轉矩陣與四元數
65.
Redis
66.
OpenCV
66.1.
安裝OpenCV
66.2.
ubuntu下多版本opencv切換
66.3.
IplImage和Mat互轉
66.4.
通過C++wrapper實現存取圖像像素
66.5.
如何把OpenCVPython獲取的圖像傳遞到C層處理
66.6.
ubuntu18.04安裝OpenCV3.4contrib編譯C++
66.7.
Opencv讀寫圖檔基本操作
66.8.
Opencv3.4+gdb
66.9.
gdb-imagewatch
66.10.
OpencvMakefile
67.
Qt
67.1.
ubuntu編譯安裝qt5.8
67.2.
在QT官網下載最新的版本
67.3.
環境安裝&第一個Qt程式
67.4.
花了6年才找到的bug?
68.
SlickEdit
69.
Kotlin
69.1.
Kotlin?!!這些符號到底什麼意思
69.2.
簡介Kotlin:run,let,with,also和apply
69.3.
與Java的比較
70.
Rust
70.1.
RustNote
70.2.
給C++使用者的Rust簡介
70.3.
Rust概念
70.4.
Rust筆記
70.5.
Rust與記憶體
70.6.
給C++使用者的Rust簡介:智慧指標
70.7.
給C++使用者的Rust簡介:字串與陣列
70.8.
給C++使用者的Rust簡介:參考型別與BorrowChecker
70.9.
給C++使用者的Rust簡介
70.10.
給C++使用者的Rust簡介:物件導向篇
70.11.
物件導向程式設計
70.12.
Linux核心採納Rust的狀況
70.13.
30天深入淺出Rust
70.13.1.
Overview
70.13.2.
安裝環境
70.13.3.
Rust的套件管理工具Cargo與套件倉庫
70.13.4.
Rust基礎
70.13.5.
變數的所有權與借出變數
71.
DeepLearning
71.1.
人工智慧、機器學習與深度學習間有什麼區別?
71.2.
機器學習(MachineLearning)介紹
71.3.
深度學習開發環境配置:Ubuntu16.04+NvidiaGTX1080+CUDA8.0
71.4.
在LinuxUbuntu安裝Tensorflow與Keras
72.
ParallelComputing
72.1.
並行計算工具的選擇
73.
Cuda
73.1.
CUDA----HelloWorldFromGPU
74.
Math
74.1.
三角函數
74.2.
AngleBetweenTwo3DVectors
74.3.
FINDINGOPTIMALROTATIONANDTRANSLATIONBETWEENCORRESPONDING3DPOINTS
74.4.
以矩陣來表示轉換
74.5.
NumPy矩陣乘法
74.6.
奇異值分解(SVD)---幾何意義
74.7.
NumPy中array和matrix用於矩陣乘法時的區別
74.8.
OpenGLAnglestoAxes
75.
Third-party
75.1.
Eigen使用
75.2.
C++矩陣處理庫--Eigen初步使用
75.3.
C++矩陣庫Eigen快速入門
75.4.
Vector3dQuaterniondAffine3dMatrixXdforEigen
75.5.
GoogleProtocolBuffers
75.5.1.
GoogleProtocolBuffers學習筆記
75.6.
openh264在ubuntu下的android版編譯
76.
BigData
76.1.
Spark與Hadoop關係
76.2.
TensorFlow和SparkMLlib有什麼區別?
77.
IOT
77.1.
ESP8266&NodeMCU開發入門
77.2.
在NODEMCU上執行MICROPYTHON
78.
mediaplayer
78.1.
vlc-android編譯forubuntu18.04
78.2.
C++影像串流RaspberryPicameraRTSP影像串流
78.3.
流媒體與直播技術學習筆記
78.4.
Streaming通訊協定RTPRTCPRTSPRTMPHLS介紹
79.
投資
79.1.
ubuntuTA-lib的安裝
79.2.
talibBBands+twstock
79.3.
finviz篩選
80.
Golang
PublishedwithGitBook
Jasonnote
C++的Class中的一些重點整理
class與struct有很明顯的的差別是,class可以定義memberfunction,但struct不行。
另外,class預設的member權限是private,而struct預設則是public。
以下是我看螞蟻書的重點整理。
另外,也有參考這篇。
friendfunction:簡單來說就是你在class裡面定義了一個friendfunction,這個function是在class的外面,同時這個function可以修改privatedata。
constfunction:在function後面如果加了const的話,就表示它不會修改任何的menberdata,所以,constobject不能夠呼叫nonconstfunction。
以下講權限範圍,如果沒有定義的話,則預設表示private。
其實跟java很類似,差別在於java沒有friendclass,而且java的預設權限是packagescope。
private:只有自己或者是friendclass看得到(其實就是可不可以直接存取的意思啦)。
protected:只有自己,friendclass或者子類別才可以看得到。
public:任何可以看到這個class的地方都可以使用。
建構子跟解構子也很重要,以前不太清楚解構子可以幹嘛,只知道物件被回收的時候解構子會自動被呼叫。
以下這個例子我覺得很好,應該是說當物件內部有動態配置的時候,可以一起把動態
//exampleonconstructorsanddestructorsrectarea:12
#include
延伸文章資訊
- 1C++的Class中的一些重點整理| Jason note
18.6. 如何判斷C++ 物件的類別? ... 18.24. 為何Google 禁止工程師使用C++ static object? 18.25. 是否能讓C++ template 的標頭檔只含...
- 2C++ 類型系統
類型的一些範例包括 int 儲存整數值、 double 儲存浮點值(也稱為純量資料類型) ,或標準程式庫類別std::basic_string 來儲存文字。 您可以藉由定義 ...
- 3[物件導向Ep. 1] 類別與物件 - CodiMD
會建議使用C++ 或是Java 當作基底語言去學習,C++ 的原因是他有完整的物件導向特性;Java 也有(甚至有時候還比C++ 更好理解些),只是他的開發環境比較囉嗦;Python 本身是 ...
- 4C++ 類別class 簡介 - 程式語言教學- 痞客邦
C++完整教學目錄> * 朋友們若是覺得本教學對您有幫助,請點個讚~ 類別(class)和結構(struct)很相像,是用來改善結構在使用上容易出現的.
- 55. 類別(Classes) — Google C++ 開源專案風格指南
類別是C++ 中程式碼的基本單元。想當然爾,在程式中類別將被廣泛使用。本節列舉了在撰寫一個類別時該做的和不該做的事項。