dlopen() 與 ..
memory layo..
软件开发平台及语言笔记大全(超详细)
Clang
书籍推荐
嵌入式 Linux 知识库
泰晓科技
•
linux
•
402页
•
2018年5月30日
97
操作系统思考
wizardforcel
•
linux
•
15页
•
2018年5月3日
74
Linux秘传心法
trimstray
•
linux
•
81页
•
2019年5月26日
20277
区块链技术指南
ayamefing
•
blockchain
•
102页
•
2018年5月3日
34
Java 编码规范
waylau
•
java
•
12页
•
2018年5月3日
127
程序员的自我修养
leohxj
•
code
•
136页
•
2018年7月1日
130
小字
大字
宋体
黑体
白天
护眼
夜晚
封面
简介
Jason Note
Command
10 條 Linux
Open Chinese Convert 開放中文轉換
Command Tips
Useful Linux Commands
Opencc 使用
Shared Libraries
Shared Libraries Setup
Linux Tools
Linux Basic
學會使用命令幫助
文件及目錄管理
文本處理
磁盤管理
進程管理工具
性能監控
網絡工具
用戶管理工具
系統管理及IPC資源管理
Linux工具進階
程序構建
程序調試
性能優化
工具參考篇
gdb 調試利器
ldd 查看程序依賴庫
lsof 一切皆文件
ps 進程查看器
pstack 跟蹤進程棧
strace 跟蹤進程中的系統調用
ipcs 查詢進程間通信狀態
top linux下的任務管理器
free 查詢可用內存
vmstat 監視內存使用情況
iostat 監視I/O子系統
sar 找出系統瓶頸的利器
readelf elf文件格式分析
objdump 二進制文件分析
nm 目標文件格式分析
size 查看程序內存映像大小
wget 文件下載
scp 跨機遠程拷貝
crontab 定時任務
trace-cmd
Doxygen
Jdbshell
二進位實用程式(objdump, readelf,ar, nm等)
UNIX 下繪圖面面觀
performance 分析
Application 效能分析有妙招 — 使用 perf 走天下
藉助PERF工具分析CPU使用率
linux下的內核測試工具——perf使用簡介
Perf -- Linux下的系統性能調優工具,第 1 部分
Perf -- Linux下的系統性能調優工具,第 2 部分
系統級性能分析工具 — Perf
perf 性能分析實例——使用perf優化cache利用率
Linux 效能分析工具: Perf - NCKU 2015
Linux 效能分析工具: Perf - NCKU 2016
Mounting samba shares from a unix client
cppcheck 靜態程式分析工具
perf 原理和實務
gnuplot 語法解說和示範
運用 gprof + graphviz 學習 Open Source
有病治病,沒病強身: Cppcheck + Valgrind
Android note
android resource
Android debug 技巧
Android下打印調試堆棧方法
Android調試技巧(一)
理解Android Crash處理流程
理解Native Crash處理流程
Native進程之Trace原理
debuggerd守護進程
GDB在線調試Android Framework Native C/C++代碼
什麼時候用startService,什麼時候用bindService
android的消息處理機制(圖+源碼分析)——Looper,Handler,Message
Android中Handler Runnable與Thread的區別詳解
Android Service與Native Service
Handler, Message, Looper, MessageQueue
Android 各層中日誌打印功能的應用
Android指令和命令參數
Android中進程與進程、線程與線程之間如何通信
startService的創建過程
service組件-bindService源碼分析
[轉]Android 執行緒 - Thread 與 Handler
[轉] Android 執行緒 - Runnable 與 Handler
[轉] Android 非同步任務 - AsyncTask
[轉]Android.mk 組織結構
如何下載編譯Android goldfish(Kernel)
自己動手編譯android源碼
Android 核心使用 kgdb
BusyBox 安裝
Android 常用開發工具
開發最佳實踐
Analyzing UI Performance with Systrace
Android 常用指令
Android下設置CPU核心數和頻率
Android系統的智能指針(輕量級指針、強指針和弱指針)的實現原理分析
gradle 教學
Gradle的一些總結
線程通信基礎流程分析 Handler、Looper、Message、MessageQueue
多執行緒-Handler和Thread的關係 (2)
jni
使用JNI進行Java與C/C++語言混合編程
JNI Java <-> native Struct
Android消息機制
概述設計架構
Message和MessageQueue
Looper
Handler
關於Service
Android之Service總結
startService及bindService的區別
android service 之一 (start service)
android service 之二(IntentService)
Android Service 之三(Bind Service, 繼承自 Binder 類)
Android Service 之三(Bind Service,使用 Messenger)
Android Service 之三(Bind Service,使用 AIDL)
關於Activity
Android之Activity總結
IPC
進程通信之Messenger&AIDL使用詳解
為什麼 Android 要採用 Binder 作為 IPC 機制?
Carson_Ho筆記
Android多線程全面解析:IntentService用法&源碼
Android四大組件:Service生命週期最全面解析
Android四大組件:Service服務史上最全面解析
(本地、可通信的、前臺、遠程)Service使用全面介紹
Android:遠程服務Service(含AIDL & IPC講解)
反組譯 apk
如何使用篇
如何瞭解Task、Thread、ThreadPool、Handler、Looper、Message、MessageQueue、AsyncTask
如何使用Handler
如何使用HandlerThread
如何使用Thread和Handler
如何使用Service
如何使用IntentService
如何使用AsyncTask
android thread
Android多線程的四種方式
Android的幾種多線程方式(AsyncTask,HandlerThread,IntentService,ThreadPool),使用場景以及注意事項
Android 多線程編程的總結
簽署你的Android應用程式(.keystore)
Ubuntu
Ubuntu installer
Windows與Ubuntu雙系統,開機時偵測不到彼此的解決方法
ssh tunnel
QEMU
X86_QEMU
ARM_QEMU
Qemu_KGDB_Ftrace
5 分鐘 Linux 0.11 快速構建實驗環境
Debug Assembly with GDB for ARMv8 on QEMU
ARM體系結構--寄存器
Run Debian iso on QEMU ARMv8
QEMU ARM64 guide
QEMU install
編譯 linux 0.11,並且使用 QEMU + GDB 調試 kernel ( Ubuntu 11.04, GCC 4.5.2)
How to Build A Custom Linux Kernel For Qemu (2015 Edition)
X86 Kernel
FreeNOS
建構 Linux 0.11 的開發環境
KGDB + QEMU + SSH
打造屬於自己的linux發行版
編譯內核+BusyBox定製一個Linux提供ssh和web服務
用Qemu模擬ARM
qemu-arm 快速驗證arm應用程式
How Other People Use QEMU
buildroot & dropbear
ARM64 Linux kernel + busybox rootFS via NFS over QEMU with GDB
奔跑吧-linux內核-qemu調試內核
Linux kernel v4.0 code for <奔跑吧Linux內核>
fcamel
[轉]ld, ld.so 和 ldconfig 的行為
[轉]解決 undefined symbol / reference
[轉] 列出用到的 shared library
[轉]用 LD_PRELOAD 替換動態連結的函式庫
[轉] 用 strace 和 ltrace 找出用到的 system call 和 library call
[轉] 加速 linking time
[轉] 從 C 呼叫 C++ 函式的過程理解程式編譯、連結的原理
[轉] 對 C++ 的觀感
[轉]在 Linux 下開發 C/C++ 的新手指南
[轉]瞭解 C/C++ 程式行為的技巧
查 C/C++ symbol 定義的方法
閱讀 C/C++ 原始碼的好幫手
配合 c++filt 讀程式
加速 gdb 載入 symbol 時間
在 x86-64 上對 system call 使用 conditional break
用 strace 找出 Ubuntu 如何提示未安裝的指令
自行編譯含 debug symbol 的套件 (package)
gdb 顯示 STL container 的方法
善用 strace、debugger 從執行期間找出問題根源
用 python gdb 客製化 backtrace 的結果
寫 linux daemon 的注意事項
signal 小知識
gold 和 GNU ld 行為差異造成的問題
如何在 Linux 上使用自行編譯的第三方函式庫
在 Ubuntu 上找出第三方函式庫的程式碼
ARM
ARM彙編語言
ARM尋址方式
Introduction to ARMv8 64-bit Architecture
ARM彙編指令調試方法
ARM emulation
Compiling Linux kernel for QEMU ARM emulator
Compiling Linux kernel 3.0 with Emdebian ARM toolchain
Compile Linux kernel 3.2 for ARM and emulate with QEMU
Busybox for ARM on QEMU
Linux NFS Root under QEMU ARM emulator
Trying Debian for ARM on QEMU
Debugging ARM programs inside QEMU
U-boot for ARM on QEMU
Booting Linux with U-Boot on QEMU ARM
Simplest bare metal program for ARM
Hello world for bare metal ARM using QEMU
Emulating ARM PL011 serial ports
ARM926 interrupts in QEMU
Using Ubuntu ARM cross-compiler for bare metal programming
Using Newlib in ARM bare metal programs
Using CodeSourcery bare metal toolchain for Cortex-M3
QEMU ARM semihosting
Simulating AT91 with Skyeye
Linux Kernel
MY_example
send pid to kernel by ioctl and kernel send_sig to user space
LKD
核心簡介
核心開發準備
Linux 行程
行程排程
系統呼叫
我理解的邏輯地址、線性地址、物理地址和虛擬地址
用ttyS0獲取dmesg信息
Buddy Algorithm
分析oops的機器碼
oops調試
可搶佔
異或的用法
定製編譯內核模塊的GCC參數
Linux 記憶體基礎
Linux內存管理之分頁機制
Linux虛擬內存概述
程序的裝載和鏈接
IA32CPU內存管理機制
Linux內存管理之分段機制
邏輯地址,線性地址及物理地址的區別
分段機制和分頁機制
段選擇器 段描述符 段描述符表 線性地址形成
Linux 內核的編譯系統
如何編譯linux kernel
Linked List in Linux Kernel
Linux Kernel: 強大又好用的list_head結構
send signal to user-space
kernel 發 signal 通知 pid task_struct->comm
Linux內核調試方法 gdboc gdboe JTAG
Linux內核kernel panic機制淺析
如何在linux kernel 中加入system call
查看Linux內核編譯配置
Ubuntu更換內核方法
調試工具ltrace strace ftrace的使用
根據內核Oops 定位代碼
內核和用戶空間共享內存的實現例程-proc和mmap
陳鍾誠Linux Kernel
簡介
行程結構
Linux 的記憶體管理
Linux 的檔案系統
Linux 的輸出入系統
Linux 的目的檔
Linux 的動態連結與載入 (Dynamic Linking)
例說linux內核與應用數據通信系列
(一):添加一個系統調用
(二):proc虛擬文件系統
(三):讀寫內核設備驅動文件
(四):映射設備內核空間到用戶態
把握linux內核設計思想系列
(一):系統調用
(二):硬中斷及中斷處理
(三):下半部機制之軟中斷
(四):下半部機制之tasklet
(五):下半部機制之工作隊列及幾種機制的選擇
(六):內核時鐘中斷
(七):內核定時器和定時執行
(八):進程管理分析
(九):進程調度
(十):內核同步
(十一):內存管理之頁的分配與回收
移植 Linux Kernel 造成無法開機之解決方案以及除錯工具
delay/ sleep 延遲函式學習筆記
密碼學演算法實作流程
效能工具 – perf 來分析探討硬體加密之瓶頸
Linux kernel 調試打log流和斷點流
Linux kernel v4.0 code for <奔跑吧Linux內核>
Trace Kernel 程式的一些小技巧
Embedded Linux Primer 讀書筆記
Chapter 2: The Big Picture
Chapter 4:淺談Linux 核心
Chapter 5 : Kernel Initialization
Chapter 6 : User Space Initialization
Chapter 8: 裝置驅動程式的基本知識
Chapter 9: File system
Linux Driver
Linux Device Driver Programming
Linux 裝置驅動程式的概要
Linux 的授權
準備開發裝置驅動程式
開發驅動程式的第一步
開發 driver 需要的基礎知識
實際撰寫驅動程式
控制硬體
記憶體
計時器
同步與鎖定
中斷
測試與除錯
《深入Linux設備驅動程序內核機制》之MMAP內存頁面示例
Linux Device Model 三角關係
Linux設備模型(1)_基本概念
Linux設備模型(2)_Kobject
mmap driver implementation
嵌入式Linux驅動模板精講與項目實踐
動手寫 Linux Driver
OS
[轉]打造簡易作業系統
(一) 開機Hello World實例
(二) Boot Loader + 作業系統載入實例 (QEMU)
(三) Boot Loader + 作業系統載入實例 (CF Card)
(四) 由16位元真實模式 (Real Mode) 進入32位元保護模式 (Protect Mode)
(五) 使用Local Descriptor Table (LDT)
(六) 簡介Call Gate
(七) 利用Call Gate與TSS (Task-State Segment)實現特權等級的轉換
Page Table size太大之解決
Linux System
Multi-pthread note
fork + pthread_create 記憶體空間差異
Pros and Cons
Linux內核中線程的實現方式
linux系統編程
文件與IO(一):文件描述符、open,close
文件與IO(二):系統調用read和write
文件與IO(三):利用lseek()創建空洞文件
文件與IO(四):目錄訪問相關係統調用
文件與IO(五):stat()系統調用獲取文件信息
文件與IO(六):實現ls -l功能
文件與IO(七):時間函數小結
文件與IO(八):文件描述符相關操作-dup,dup2,fcntl
進程(一):進程與程序
進程(二):進程生命週期與PCB(進程控制塊)
進程(三):進程複製fork,孤兒進程,殭屍進程
進程(四):進程退出exit,_exit區別即atexit函數
進程(五):exec系列函數(execl,execlp,execle,execv,execvp)使用
進程(六):父進程查詢子進程的退出,wait,waitpid
進程(七):system()函數使用
進程(八):守護進程詳解及創建,daemon()使用
信號(一):中斷與信號
信號(二):信號處理流程(產生、註冊、註銷、執行)
信號(三):信號安裝、signal、kill,arise講解
信號(四):alarm和可重入函數
信號(五):信號集操作函數,信號阻塞與未決
信號(六):信號發送函數sigqueue和信號安裝函數sigaction
信號(七):被信號中斷的系統調用和庫函數處理方式
信號(八):三種時間結構及定時器setitimer()詳解
管道(一):匿名管道(pipe)
管道(二):管道讀寫規則
管道(三):命令管道(FIFO)
錯誤處理:perror,strerror和errno
利用backtrace和backtrace_symbols函數打印調用棧信息
linux系統編程:setjmp和longjmp函數用法
linux新定時器:timefd及相關操作函數
Note
IPC
PIPE
Signal
Linux Debugging
使用反彙編理解C++程序函數調用棧
熟悉AT&T彙編語言
C++函數調用的參數傳遞方法總結(通過gdb+反彙編)
使用GDB來理解C++ 對象的內存佈局(多重繼承,虛繼承)
coredump 分析入門
動態庫注入、ltrace、strace、Valgrind
使用反彙編理解動態庫函數調用方式GOT/PLT
core真的那麼難以追蹤嗎?
一次生產環境下的“內存洩露”
Linux 作業系統分析
破解Linux操作系統的奧祕
How program works
進程的創建與可執行程序的加載
內核裝載ELF的過程總結
如何更新linux console畫面
服務器進程為何通常fork()兩次
創建 Daemon 程式
Linux信號處理機制
函數調用棧的獲取原理分析
在Linux程序中輸出函數調用棧
C/C++混合編程
linux下C與C++混合編程
Static 與 Shared 的函式庫撰寫
Linux 的 time 指令
孤兒進程與殭屍進程[總結]
pkg-config 使用及建立方法
簡述configure、pkg-config、pkg_config_path三者的關係
動態庫的鏈接和鏈接選項-L,-rpath-link,-rpath
LD_LIBRARY_PATH與-L的關係
shell環境變量以及set,env,export的區別
用gcc 自製 Library
如何使用pkg-config工具編譯鏈接第三方庫
stdout & stderr & fflush()
使用system()函數執行命令行命令簡述
ldconfig及 LD_LIBRARY_PATH,LD_DEBUG ,LD_PRELOAD
SIGINT 後 KILL 自己
my_note
thread_create & signal 使用技巧
pthread_sigmask 控制線程的信號掩碼
C 的 Thread Pool 筆記
IP addresses from a C program
OpenMP in linux
Mutexes VS Semaphores 大揭祕
dlopen & dlsym 用法
pthread_create & pthread_join & pthread_exit 基本用法
LINUX下動態庫調用靜態庫的方法
C語言互斥鎖-雙條件變量實現循環打印
tutorial-pthreads
《Programming with POSIX Threads》筆記
mmap映射空間與內存和磁盤的IO性能對比
一個並發10k的簡易群聊天室(使用epoll)
Mutex 與 Semaphore 最大的差異是
[讀書會] Linux環境編程:從應用到內核
example
64位x86的函數調用棧佈局
如何手工展開函數棧來定位問題
第3章 行程(process)環境
打印出一個完整的程序調用堆棧信息
Linux 下 IPC 的運作方式
細說linux IPC
基於socket的進程間通信(上)
基於socket的進程間通信(下)
mmap系統調用共享內存
posix 共享內存
system V共享內存
pipe和FIFO
信號(上)
信號(下)
posix消息隊列
system V 消息隊列
細說linux IPC:各種IPC形式比較總結
補充 現代Linux有兩種共享內存機制
Linux同步與互斥應用
(零):基礎概念
(一):posix線程及線程間互斥
(二):posix線程同步
(三):posix線程實現單個生產者和單個消費者模型
(四):posix信號量的互斥與同步
(五):system V信號量的互斥與同步
(六):文件鎖
Linux下利用backtrace追蹤函數調用堆棧以及定位段錯誤
sendfile:Linux中的"零拷貝"
Linux Note: daemon 與 background process 的差異
x86 有個有個 lea 指令 (Load Effective Address)
Linux平臺延時之sleep、usleep、nanosleep、select比較
linux 用戶空間 和 內核空間 延時函數
即時系統 使用排程器
性能分析工具使用 callgrind+kcachegrind
linux編程的108種奇淫巧計
1(FALSE SHARING)
2(RDTSC)
3(magic 2)
4(編譯展開)
5(rbp寄存器)
6(shellcode)
7(Lock-free實驗)
8(嵌入彙編的另一種寫法)
PForDelta索引壓縮算法的實現
11(亂序)
12(存儲計算)
15(減少複製)
16(如何達到內存最大帶寬,複雜指令)
17(如何達到內存最大帶寬,精簡指令,預取和NT)
18(SIMD)
關於bit操作(bit_set test_bit)
put variables in a regsiter
Userspace I/O scheduling for multi-file operations
Manual FIle Locking
Linux下fork函數及pthread函數的總結
C++ 在類裡面使用多線程技術
深入 Linux 多線程編程
C/C++每線程(thread-local)變量的使用
在pthread的線程函數中,使用類的非靜態成員函數來執行
從 pthread 轉換到 std::thread
Assembly
myAssembly
Linux 平臺學X86組合語言
現代計算機結構組成與工作過程
處理器指令碼及IA-32平臺瞭解
相關開發工具
從“hello world!”開始
使用gdb調試彙編程序
數據的傳送
堆棧的使用
條件跳轉
循環指令
整數運算
字符串的傳送
字符串的存儲與加載
字符串的比較與搜索
函數的使用
使用命令行參數
在彙編語言中調用C庫函數
在彙編中使用linux系統調用
內聯彙編
C語言中調用匯編函數
彙編庫的使用(結)
[轉]如何在 Linux 下使用 GNU AS 撰寫組合語言
在 Linux 下使用 GNU AS 編寫組合語言 - 使用 gdb 進行除錯
linux反彙編旁門左道小技巧一則
gas學習 by Jian Lee
閱讀assembly code
Linux asm系統調用:32位和64位的區別
如何在linux下編譯彙編程序,內功心法是彙編程序的結構
Toolchain
cross compiler install
buildroot install
arm交叉編譯器gnueabi、none-eabi、arm-eabi、gnueabihf、gnueabi區別
GDB
gdb常用指令
Beej's Quick Guide to GDB
簡易 GDB Script 教學,應用
[轉]GDB的妙用
GDB中應該知道的幾個調試方法
KGDB
[轉]Debug Xorg with GDB on Ubuntu
[轉]使用 GDB 以樹狀方式將函式流程印出
gdb 除錯技術
gdb 的 multiarch
gdb 編譯
KGDB Linux Kernel for Samsung
用GDB追蹤glibc代碼執行過程
使用GDB分析二進位資料
cgdb 編譯&使用
gdb C++ 小技巧
gdb 展開 C/C++ 的 macro
solib-absolute-prefix 和solib-search-path的區別
利用gdb進行shared library的除錯
用GDB跟蹤觀察共享庫函數的地址翻譯過程
KGDB調試LINUX內核
GDB調試原理 ptrace系統調用
gdb 遠程qemu-arm調試
gdb顯示結構體
GDB C++ STL printer
GDB dashboard: debug info at a glance
在程式碼中使用 signal() 插入中斷點,讓 GDB 暫停程式做 debugging
只要出問題,
C4炸藥
gdb 都能搞定
懶人除錯法
兩種將gdb的輸出信息存到文件的方法
使用call命令在GDB中重複調用某函數
通過 GDB 學習 C 語言
用GDB反彙編調試linux內核
GDB下查看記憶體指令(x指令)
How to debug glib source code via gdb
How to use GDB debug OpenCV programmes?
GDB實用教學:自動化你的debug
GDB 反向調試(Reverse Debugging)
讓程序崩潰時產生coredump
很經典的GDB調試命令,包括查看變量,查看內存
gdb調試帶參數程序
整理常用的gdb技巧
GDB命令基礎,讓你的程序bug無處躲藏
valgrind + gdb
調試技巧備忘
Trace Function Calls Using GDB Revisited
[GDB] 除錯 python 程式 thread 間互相等待 mutex,造成 deadlock 的問題
Linux內核分析雲課堂學習筆記
圖解分析彙編代碼以理解計算機是如何工作的
基於mykernel的一個簡單的時間片輪轉多道程序內核代碼分析
使用gdb跟蹤Linux內核啟動過程
使用庫函數API和C代碼中嵌入彙編代碼兩種方式使用同一個系統調用
分析system_call中斷處裡過程
初學Linux進程的描述和進程的創建
初學《Linux內核如何裝載和啟動一個可執行程序》
初學Linux中進程調度與進程切換過程
Linux內核學習總結
小博魚筆記
Linux內和分析(一)計算機是如何工作的
Linux內和分析(二)操作系統是如何工作的
C++
[轉]C++ 對象的內存佈局
[轉] C++對象模型之簡述C++對象的內存佈局
[轉]C++對象模型之詳述C++對象的內存佈局
[轉]C++ 虛函數表解析
如何判斷 C++ 物件的類別?
A Simple C++ Function Call Stack Trace Utility
探索C++虛函數在g++中的實現
樸實的C++設計
C++ 智能指針
Mutex::Autolock for c++
C++ STL 學習總結(全面)
學習C++:實踐者的方法(Beta1)
STL 容器 (一) - 基本介紹
STL 容器 (二) - Iterator
C/C++ 十三誡
標準類型轉換:static_cast, dynamic_cast, reinterpret_cast, and const_cast
example
vector 用法
父子類別之間函數呼叫
C++: 父類調用子類的成員函數
Std Pair 用法
2D vector array using std::vector
arraycopy using std::vector
std::vector 封裝到 shared_ptr
shared_ptr 向下轉型
C++的Class中的一些重點整理
LOG 建構解構
c++ typeid() 用法 如何正確的顯示 變數型態名稱的亂碼、異常
shared_ptr 使用建構解構驗證記憶體回收
實例研討: 從 C++ 學習 C 高級技巧
為何 Google 禁止工程師使用 C++ static object?
是否能讓 C++ template 的標頭檔只含宣告不含實作?
改善C++程序的150個建議
C++物件模型
物件模式(一)
物件模式(二)
C++類對象內存結構
C++四种继承关系中内存分布
GNU make
example
好用 Makefile
CMake
CMake 初探
CMake 入門
讓cmake顯示gcc/g++的編譯信息
把玩 CMake 的第一步
cmake CFLAGS CXXFLAGS
CMake 入門/加入編譯選項
CMake for windows
CMake 常用指令
如何調試makefile變量
跟我一起寫Makefile:make運行
Makefile的常用技術總結
Makefile 語法簡介
Makefile 先編譯出so 後在編譯出執行檔
利用 Autotools 來建立 Makefile 檔案
GNU Makefile 雜項語法備忘
SCons筆記(詳細版)
高級Makefile技巧
Makefile條件編譯debug版和release版
Makefile範例教學
Linux C++編譯及 靜態/動態 鏈接庫 筆記
Makefile的基本結構
深入學習Make命令和Makefile(上)
深入學習Make命令和Makefile(下)
Makefile 中的 $@, $^, $< , $? 符號
從頭開始寫項目Makefile
(零):前言
(一):基本規則
(二): 隱含規則自動推導
(三):變量的使用
(四):偽目標
(五):嵌套執行
(六):參數傳遞、條件判斷、include
(七):統一目標輸出目錄
(八):模式規則
(九):目錄搜索
(十):make內嵌函數及make命令顯示
Makefile 語法和示範 by Jserv
Makefile 好範例
[轉]國王的耳朵是驢耳朵
Linker script初探 - GNU linker ld手冊略讀
GNU ld初探
系統函式庫的debug 資訊放在那邊?
Nm 的欄位說明
Objdump -t 的欄位說明
C語言在Linux下組裝經驗分享
Hello World
Using as 手冊筆記
Hello Linux ARM 組合語言
談談.git 目錄
Linux下面快速搜尋PDF的方式
from-source-to-binary-how-gnu-toolchain-works
使用strace找出程式缺少的檔案路徑
GNU LD 手冊略讀
GNU LD 手冊略讀 (0): 目錄和簡介
GNU LD 手冊略讀 (1): Chapter 3 ~ Chapter 3.5
GNU LD 手冊略讀 (2): Chapter 3.6 SETCIONS
GNU LD 手冊略讀 (3): Chapter 3.7 ~ Chapter 3.11
C語言
談談strip
C 語言的潛規則型態轉換
C 語言的format string
C 語言的逗號
系統函式庫的debug 資訊放在那邊?
C語言archive 明明有symbol卻link時出現unsolved Symbol錯誤
Gcc的幾個參數筆記
Linux中誰來呼叫C語言中的main?
Linux下面的C語言使用getopt Parse Command Line參數
談談autotools 的 Build, Target, 和host
GNU: The C Preprocessor 導讀
Linux 檔案的hole
Linux中使用C語言載入data object 檔案資料
Rtenv的linker Script解釋
尋找"Hello Worldn"
談談C語言的全域變數和 Linux Object 檔案的關係
抓漏 - gdb 和 valgrind 合體技
抓漏 - 使用valgrind檢查C語言memory Leak
C99的inline Function
Linux Kernel Pratice 0: Buildroot (1/2)
Linux Kernel Pratice 0: Buildroot (2/2) - 自行編譯kernel
使用gdb 靜態分析C 語言名稱和參數相同函數的原始檔位置
Linux Kernel Pratice 0.5: 使用gdb 加 Qemu Trace Linux Kernel Runtime 行為
Shell
shell十三問
何為shell
shell prompt(PS1)與Carriage Return(CR)關係
別人echo、你也echo,是問echo知多少?
""(雙引號)與''(單引號)差在哪?
問var=value 在export前後的差在哪?
exec跟source差在哪?
()與{}差在哪?
$(())與$()還有${}差在哪?
$@與$*差在哪?
&& 與 || 差在哪?
>與< 差在哪?
你要if還是case呢?
for what? while與until差在哪?
MY_script
選單
AutoROM_new.sh
script 執行自己log 的紀錄
批次Audio編碼轉換
Bash的陷阱
simplelinux
照妖鏡和火眼金睛
局部變量
全局變量
值傳遞
數組與指針
字符串
結構體
奇怪的宏
內存對齊
函數幀
函數幀應用一:誰調用了main?
函數幀應用二:所有遞歸都可以變循環
未初始化全局變量
進程內存分佈
編譯優化
static變量 及 作用域控制
變量名、函數名
函數指針
可變參數
C語言的棧是靜態的
內聯彙編
彙編實現的動態棧
linux0.01進程時間片的消耗和再生
linux2.6.XX進程切換和時間片再生
OpenSource
C/C++開源程式碼
免費的編程中文書籍索引
wirelessr
Linux Shell
Expect妙用無窮
C Design Pattern
Template Method
Observer
Strategy
Polymorphism in C
設計模式
23種設計模式的趣味解釋
設計模式經驗談
設計模式整理列表
物件導向程式設計五大原則:SOLID
如何正確地寫出單例模式
如何正確地使用設計模式?
Design Pattern 與 Double Dispatching
<總結> 設計模式之 開放封閉原則OCP C++示例
c++面向對象設計的SOLID原則
OpenWrt
OpenWRT 編譯環境搭建
Python
example
個股年成交資訊
Python 基本爬蟲程式 以 Google 新聞為例
Python 新聞關鍵字查詢
PTTcrawler (PTT文章爬蟲)
Python_by_David_Chiu
google news 爬文
如何抓取廉價航空的機票價格 – 以酷航
露天拍賣 & 編碼問題
fb 社團爬標題發文者內容
Python中將打印輸出導向檔案
轉換GDB調用棧到流程圖
Retrieving Gmail blocked attachments
如何抓取上市股票交易明細
臺鐵資料下載
Find all files in directory with extension .txt in Python
Audio 利用ffmpeg 編碼轉換
集臺證所融資融券餘額全部資料
goodinfo
sqlite3 技術手冊
利用PYTHON + GMAIL SMTP 寄送EMAIL及附檔 CATEGORIES
Post 抓取高鐵
goodinfo 經營績效
使用Pandas 函式將臺灣銀行的牌告匯率存進資料庫中
抓三大法人的網頁資料
讀取檔案指定的行
產生曲線圖
畫出Euler angle 曲線圖
標準差計算
畫四元數曲線圖
多筆行平均總和
SWIG
Scrapy + Python 3: PTT 資料抓取與分析
ptt using selenium
Line notify
PTT爬文物品 + line 發送
露天拍賣 換頁
ultrasound raw data
campsaver.py
pandas
pandas 入門
Python Pandas DataFrame 的 iloc[0] 與 iloc[[0]]
Pandas Dataframes to_html: Highlighting table rows
open HTML 網頁分析
Pandas 無法處理HTML 透過Soup 輔助
pandas create dataframe example
Convert list of numpy.float64 to float and Converting strings to floats in a DataFrame
Pandas Excel example
十分鐘快速入門 Pandas
Add a row to dataframe
Pandas DataFrame 的 iloc[0] 與 iloc[[0]]
數據操作(Pandas) 完整
pandas read csv
編碼
Python - 瞭解bytes、str與unicode的區別
淺談 python2及 python3處理中文字串編碼的差異
立即停止使用 setdefaultencoding('utf-8'), 以及為什麼
Python + Requests 編碼問題
Python 的編碼
瞭解Unicode
python string and unicode string
python2 與 python3 編碼差異
django
使用heroku部署django應用測試
Python Django 快速入門教學
Django 基本命令
正則 Regex
BeautifulSoup
remove script tags with BeautifulSoup
使用BeautifulSoup
Python使用beautifulsoup解析HTML、XML
爬蟲
Python爬蟲模擬登錄的黑魔法
Selenium 使用 CSS locator 定位 HTML element
常見錯誤訊息
安裝 Jupyter
編譯python & 安裝pip
pip 使用詳解
5個很好的Python面試題
Python-網頁爬蟲-&-文本處理-&-科學計算-&-機器學習-&-數據挖掘兵器譜
選擇Python科學計算發行版
Python常用的數學函數
python debug 入門
Python 直譯器如何處理字串編碼
Python--線性代數篇
python字符串連接的N種方式
Python調用Linux下的動態庫(so)
python堆棧回溯示例代碼
Generate c/c++ header file from a CSV file (for array declaration)
觀察技巧 with Chrome開發人員工具
steepandcheap alerts
Anaconda使用總結
python setup.py uninstall
Python 原始碼 使用 gdb trace
Debugging CPython with gdb
PTT gamesale 板的買賣文
How to define two-dimensional array in python
Python技巧(漂亮又通順的程式碼)
DB
SQLite - Python 安裝
Python 讀取csv的某行
用 Anaconda 完美解決 Python2 和 python3 共存問題
Embed python / numpy in C++
practice
Selenium
區塊鏈
50 行 Python 代碼構建一個區塊鏈
Vim
HOWTO - vi, vim
編譯vim8並添加對lua,python,ruby的支持
TDD
程式設計師升級必練內功:TDD Kata
Raspberry_Pi
燒錄新版系統
Hello world on qemu Raspberry Pi
自己動手編譯 Raspberry Pi 的 Kernel
Building and Deploying Raspberry PI Kernel
Preparing Raspberry PI for JTAG Debugging
Raspberry Pi 2 Bare Metal Multicore JTAG Debugging
rpi, serial and kgdb
[Raspberry Pi Project] How does Raspberry Pi boot?
[Raspberry Pi Project] Compile and update Raspbian kernel
[Raspberry Pi Project] kernel啟動參數
Raspberry Pi 編譯 Linux 核心
用 Raspberry pi 寫驅動程式 -- 基本觀念
用 Raspberry pi 寫驅動程式 -- 範例1:LED
在Raspberry pi 上建立自己的system call
Raspberry pi GPIO 控制
Raspberry Pi的開始流程
consile fullscreen
Raspberry Pi:Raspbian增加deb套件的下載來源
使用 C++ 讀取 MPU-6050 加速度計與陀螺儀感測資料
使用 MPU-6050 的 DMP 來取得更精準的運動感測資料
kgdb for RPI
telnet for raspberry
Debugging Raspberry Pi Linux kernel with JTAG and GDB
raspberrypi2_kernel_debug
fichugh
buildRoot study - 建立自己的作業系統
u-boot 組態研究- raspberry pi 2
How to Build a GCC Cross-Compiler
ARM assembler in Raspberry Pi
Table of contents
Introduction
Registers and basic arithmetic
Memory, addresses. Load and store.
GDB
Branching
Control structures
Indexing modes
Arrays and structures
Functions (I)
Functions (II). The stack
Predication
Loops and the status register
Floating point numbers
Matrix multiply
Integer division
Switch control structure
Passing data to functions
Local data and the frame pointer
The operating system
Indirect calls
Subword data
The Thumb instruction set
Nested functions
Trampolines
Integer SIMD
A primer about linking
Objects and libraries
Exploring AArch64 assembler
Chapter 1
Chapter 2
Chapter 3
Chapter 4
Chapter 5
Chapter 6
Chapter 7
Chapter 8
raspberry 3b 64bit 系統安裝,以及交叉編譯環境、調試環境的搭建
樹莓派autossh反向隧道
Kernel Initialization
OpenGL
opengl(mesa) for ubuntu14.04
ubuntu 14.04 安裝OpenGL(基於freeglut)
Ubuntu下安裝OpenGL圖形庫
OpenGL,glx,glaux,glut,freeglut,glew,glfw,mesa
arduino
Processing communication with Arduino via serial
使用gdb實時調式arduino
Arduino UNO控制板簡介
時脈算換
邱小新8051
I2C protocol 時間計算
8051 clock
I2C protocol 原理及應用
I2C
讓 arduino 不需要使用 sudo
edb
EDB (Evan's Debugger)
Debug Tips
分析問題想法筆記
gcc/g++ -instrument-functions 參數
core dump 之前的 frame
使用valgrind檢查cache命中率,提高程序性能
GDB調試技巧:gdb at pid無法調試的問題
GDB調試技巧:調試複雜的宏定義
使用valgrind檢查內存問題
GDB技巧:使用checkpoint解決難以復現的Bug
強制進程產生coredump,檢測死鎖以及進程快照
如何快速地在每個函數入口處加入相同的語句?
C++源碼的調用圖生成
thinker_note
如果有人要求你改善系統
閱讀程式碼的心理層面
學習程式設計的方法?!
讀 code 和讀文章應該差不多
程式碼要清的多乾淨?
GDB 追蹤 memory corruption
GDB 自動化 debug
unittest 與 pdb 改善開發效率
程式註解如何寫
程式碼的可讀性比較
軟體元件的使用
GCC_and_Clang
GCC
__thread關鍵字
gcc中-pthread和-lpthread的區別
memory layout C++ objects for g++
gcc -E -P
g++參數介紹
gcc編譯,ld連接
編譯步驟 - 組譯 連結 測試
Linux GCC 編譯4個過程
dlopen() 與 GCC -rdynamic 選項
Clang
memory layout C++ objects for clang
FreeRTOS
FreeRTOS-GCC-ARM926ejs_QEMU
[STM32] 4. 移植 FreeRTOS
tinyclub
源碼分析
靜態分析 C 程序函數調用關係圖
動態分析 C 程序函數調用關係
函數調用關係繪製方法與逆向建模
動態分析 Linux 內核函數調用關係
Linux 彙編語言快速上手:4大架構一塊學
VR
Linux Build Instructions
kalman filter
MPU6050
卡爾曼濾波 配合程式 講解
MPU6050數據輕鬆分析
Quat Euler 互轉
四元數 diff
Treace code
[轉]閱讀程式碼的心理層面
我的原始碼閱讀之道
磨練閱讀程式技巧,不受黑盒限制
閱讀他人的程式碼
讀懂程式碼,使心法皆為我所用
摸清架構,便可輕鬆掌握全貌
優質工具在手,讀懂程式非難事
望文生義,進而推敲組件的作用
找到程式入口,再由上而下抽絲剝繭
閱讀的樂趣:透過程式碼認識作者
Log
打印log
如何在 Android 各 level ( 包含 user space 與 kernel space ) 使用dump call stack的方法
embedded
JTAG是把屠龍刀,說說其作用和原理
TQ210
TQ210 成功使用 JLink debug kernel
Linux Network
Linux Socket 入門
Socket programming 筆記
node.js
安裝 NodeJS、NPM
JavaScript 快速入門[轉]
JavaScript 快速入門(序)
JavaScript 快速入門(1/10)- 訊息輸出
JavaScript 快速入門(2/10)- 變數與資料型別
JavaScript 快速入門(3/10)- 數字/ 字串/ 布林值
JavaScript 快速入門(4/10)- 運算子
JavaScript 快速入門(5/10)- 敘述句 if / switch
JavaScript 快速入門(6/10)- 迴圈
JavaScript 快速入門(7/10)- 函式
JavaScript 快速入門(8/10)- 物件
JavaScript 快速入門(9/10)- 陣列
JavaScript 快速入門(10/10)- 使用內建物件
100 gdb tips
信息顯示
顯示gdb版本信息
顯示gdb版權相關信息
輸出信息多時不會暫停輸出
啟動時不顯示提示信息
退出時不顯示提示信息
函數
列出函數的名字
是否進入帶調試信息的函數
進入不帶調試信息的函數
退出正在調試的函數
直接執行函數
打印函數堆棧幀信息
打印尾調用堆棧幀信息
選擇函數堆棧幀
向上或向下切換函數堆棧幀
斷點
在匿名空間設置斷點
在程序地址上打斷點
在程序入口處打斷點
在文件行號上打斷點
保存已經設置的斷點
設置臨時斷點
設置條件斷點
忽略斷點
觀察點
設置觀察點
設置觀察點只針對特定線程生效
設置讀觀察點
設置讀寫觀察點
Catchpoint
讓catchpoint只觸發一次
為fork調用設置catchpoint
為vfork調用設置catchpoint
為exec調用設置catchpoint
為系統調用設置catchpoint
通過為ptrace調用設置catchpoint破解anti-debugging的程序
打印
打印ASCII和寬字符字符串
打印STL容器中的內容
打印大數組中的內容
打印數組中任意連續元素值
打印數組的索引下標
打印函數局部變量的值
打印進程內存信息
打印靜態變量的值
打印變量的類型和所在文件
打印內存的值
打印源代碼行
每行打印一個結構體成員
按照派生類型打印對象
指定程序的輸入輸出設備
使用“$\_”和“$\__”變量
打印程序動態分配內存的信息
打印調用棧幀中變量的值
多進程/線程
調試已經運行的進程
調試子進程
同時調試父進程和子進程
查看線程信息
在Solaris上使用maintenance命令查看線程信息
不顯示線程啟動和退出信息
只允許一個線程運行
使用“$_thread”變量
一個gdb會話中同時調試多個程序
打印程序進程空間信息
使用“$_exitcode”變量
core dump文件
為調試進程產生core dump文件
加載可執行程序和core dump文件
彙編
設置彙編指令格式
在函數的第一條彙編指令打斷點
自動反彙編後面要執行的代碼
將源程序和彙編指令映射起來
顯示將要執行的彙編指令
打印寄存器的值
顯示程序原始機器碼
改變程序的執行
改變字符串的值
設置變量的值
修改PC寄存器的值
跳轉到指定位置執行
使用斷點命令改變程序的執行
修改被調試程序的二進制文件
信號
查看信號處理信息
信號發生時是否暫停程序
信號發生時是否打印信號信息
信號發生時是否把信號丟給程序處理
給程序發送信號
使用“$_siginfo”變量
共享庫
顯示共享鏈接庫信息
腳本
配置gdb init文件
按何種方式解析腳本文件
保存歷史命令
源文件
設置源文件查找路徑
替換查找源文件的目錄
圖形化界面
進入和退出圖形化調試界面
顯示彙編代碼窗口
顯示寄存器窗口
調整窗口大小
其它
命令行選項的格式
支持預處理器宏信息
使用命令的縮寫形式
在gdb中執行shell命令和make
在gdb中執行cd和pwd命令
設置命令提示符
設置被調試程序的參數
設置被調試程序的環境變量
得到命令的幫助信息
記錄執行gdb的過程
compiler
手把手教你構建 C 語言編譯器
前言
設計
虛擬機
詞法分析器
遞歸下降
變量定義
函數定義
語句
表達式
總結
自己動手寫編譯器、鏈接器
深入淺出教你寫編譯器
C-compiler-optimizations
tcc 原始碼分析技巧
linked_and_loader
基礎範例
LIBRARY_PATH和LD_LIBRARY_PATH環境變量的區別
so file crash using addr2line
把共享庫(SO)加載到指定的內存地址
Linux GOT與PLT
GOT和PLT原理簡析
Linux 動態連結資料庫
通過 GDB 調試理解 GOT/PLT
ELF文件的加載
再議PLT與GOT
Linux gcc鏈接動態庫出錯:LIBRARY_PATH和LD_LIBRARY_PATH的區別
Linux 靜態庫與共享庫的使用
linux 下動態鏈接實現原理
Linux 共用程式庫的組織
動態載入函式庫 (Dynamically Lodaded Libraries)
gcc編譯參數-fPIC的一些問題
Linux下怎樣判斷一個binary是否可以debug
查看正在運行的動態鏈接的程序中,某個動態庫中函數的虛擬地址
使用另一個版本的glibc
linux 動態裝載動態庫 ldd,ldconfig,ld.so.conf, ld.so.cache
Linux 的動態連結與載入 (Dynamic Linking)
ld-linux.so.X查找和加載共享動態庫的順序
-L,-rpath-link,-rpath 動態庫的鏈接和鏈接選項
gcc -rpath 動態庫路徑
動態庫及靜態庫的製作步驟講解
動態鏈接庫的搜索路徑
Linux添加環境變量與GCC編譯器添加INCLUDE與LIB環境變量
linux下運行時連結庫的路徑順序
gcc/g++鏈接時.o文件以及庫的順序問題
程式設計師的自我修養
介紹
編譯和連結
目的檔
靜態連結
鏈接、裝載、與庫_讀書筆記
gcc 編譯順序問題
C 編譯鏈接
C 加載過程
Bochs
OS dev的Bochs調試
Nginx
nginx 模塊 使用gdb調試nginx源碼
Other
練寫作可以讓你成為「神級程式設計師」,但不是不二法門
編程的智慧
為什麼 thread (執行緒、線程)越少越好?
頂尖程序員不同於常人的5個區別
認知學習法 by xdite
認知學習法 - 自學篇 by xdite
笨方法學語言
我是如何學一門新技術的
測試的道理
快速掌握一個語言最常用的50%
DS_ALGO
內核雙向鏈表的使用
Linux kernel linked list impl. for user space
Linux的container_of 與 offsetof巨集
linux list.h for userspace
Linux kernel doubly linked-list implementation
C
offsetof與container_of
read csv in c
Q Format Number in C
IEEE764 using C
struct pointer to array
gyro raw data filter
Template in C
signed 跟 unsigned 高位元差別
21st Century C / 21世紀 C 語言 筆記
你所不知道的 C 語言
為何要深入學習C語言
指標篇
編譯器和最佳化原理篇
函式呼叫篇
物件導向程式設計篇
前置處理器應用篇
動態連結器篇
遞迴呼叫篇
數值系統篇
技巧篇
server-framework
開發工具和規格標準
goto 和流程控制篇
linked list 和非連續記憶體操作
Stream I/O 和 EOF
幫 C 語言加上 Garbage Collector
memcpy alignment
如何得知 malloc/free 的呼叫次數
How to use LD_PRELOAD and dlsym hook
C Style
C 語言的奇技淫巧
OpenSoruce
開源網絡庫的分析libevent muduo nginx
libevent 專案分析
使用 gdb 研究 libevent
15款值得學習的小型開源項目,帶你快速步入開源世界
最值得閱讀學習的 10 個 C 語言開源項目代碼
STM32
STM32的FPU體驗
hacker
c9s
快速進入工作狀況的十個要點
API 設計 — 建構之道: 類別建構子設計
架構之必要
談設計模式之迷思
想創業?再想想吧
健康的泡沫
API 設計— 命名之術
Saleae
ARM CM4 Pratice (3): USART 初探
Docker
構建docker開發環境
門外漢的 Docker 小試身手
OpenKore in Docker Dockerfile
利用iptables給Docker綁定一個外網IP
Docker 修改默認存儲位置
Docker 安裝使用
快速刪除多個 docker 容器的方法
Javascript
14款基於javascript的數據可視化工具
ncku 嵌入式課程 (Jserv)
2016
利用 gprof2dot 工具,將最耗時的函式與呼叫的路徑視覺化
GDB command開發說明(use Python)
GPIO
重新理解數值
類似 C++ template 來實做呢?C11 有 _Generic 關鍵字
mergesort-concurrent
A01: phonebook
A02: raytracing
A03: compute-pi
A04: clz
A05: introspect
A06: phonebook-concurrent
Matrix Multiplication using SIMD
逆向工程
Linux 逆向工程的工具介紹
Git
Keeping a fork up to date
Clone all repos from a GitHub organization
Git倉庫遷移而不丟失log的方法
如何將GIT存儲庫從一個服務器遷移到新服務器
git文件夾內容過大的解決方法
git commit tree 保留最新20筆
Interview
DS_Algo
Linked List的複習總結
面試精選:鏈表問題集錦
鏈表面試常見合集
編程判斷兩個鏈表是否相交
面試經驗談 - C 語言篇
Java
開檔讀檔 & 正則範例
Thread和Runnable的區別
用javac命令行編譯多個java文件
Java -jar 選項與 -cp/-classpath
打印函數 / call stack
Ubuntu 16.04 安裝 Eclipse
java命令行編譯運行多個java文件
Java中變數有效的範圍(Variable Scope)
Java Thread 之間 記憶體空間分析
java中如何給Runnable線程傳遞參數?
Java的兩種多線程實現方式
Linear Algebra
理解矩陣
旋轉矩陣與四元數
Redis
OpenCV
安裝 OpenCV
ubuntu下多版本opencv切換
IplImage 和 Mat 互轉
通過C++ wrapper 實現存取圖像像素
如何把OpenCV Python獲取的圖像傳遞到C層處理
Qt
ubuntu編譯安裝 qt 5.8
在QT官網下載最新的版本
環境安裝 & 第一個 Qt 程式
花了 6 年才找到的 bug?
SlickEdit
Deep Learning
人工智慧、機器學習與深度學習間有什麼區別?
機器學習(Machine Learning) 介紹
深度學習開發環境配置:Ubuntu1 6.04+Nvidia GTX 1080+CUDA 8.0
在Linux Ubuntu 安裝 Tensorflow 與Keras
Parallel Computing
並行計算工具的選擇
Cuda
CUDA ---- Hello World From GPU
Math
三角函數
Angle Between Two 3D Vectors
FINDING OPTIMAL ROTATION AND TRANSLATION BETWEEN CORRESPONDING 3D POINTS
以矩陣來表示轉換
NumPy 矩陣乘法
奇異值分解(SVD) --- 幾何意義
NumPy中array和matrix用於矩陣乘法時的區別
OpenGL Angles to Axes
Third-party
Eigen 使用
C++矩陣處理庫--Eigen初步使用
C++矩陣庫 Eigen 快速入門
Vector3d Quaterniond Affine3d MatrixXd for Eigen
Google Protocol Buffers
Google Protocol Buffers 學習筆記