原创 01 字節碼初體驗 —— 從 Hello World 說起

Hello.java public class Hello { public static void main(String[] args) { System.out.println("Hello, Wor

原创 Linux 內核雙向鏈表 list_head

Linux 內核雙向鏈表 list_head舉個栗子一、雙向鏈表 list_head1.1 宏 list_entry1.2 宏 container_of1.3 宏 offsetof(type, member)二、相關操作2.1 聲

原创 switch-case 無 break 如何打印

switch-case 無 break 如何打印一、switch-case 無 break 時打印二、switch-case 有 break 時打印 一、switch-case 無 break 時打印 public class T

原创 08 匿名內部類與 lambda —— lambda 表達式背後的字節碼原理

08 匿名內部類與 lambda —— lambda 表達式背後的字節碼原理問:lambda 表達式是匿名內部類的語法糖嗎一、測試匿名內部類二、測試 lambda 表達式核心的 metafactory 定義核心的 metafact

原创 網絡編程 05_使用 TCP 進行讀寫

網絡編程 05_使用 TCP 進行讀寫目標一、發送數據常用函數發送緩衝區write 函數阻塞返回時機二、讀取數據三、TCP 通信例子服務端客戶端四、緩衝區實驗實驗一:觀察客戶端的發送行爲實驗二:讓服務端處理變慢五、小結補充:CMa

原创 網絡編程 22_非阻塞 I/O + select 多路複用

網絡編程 22_非阻塞 I/O + select 多路複用目標一、非阻塞 I/O + select 多路複用服務端二、CMake 管理當前項目① 代碼組成② 創建並進入 build 目錄③ 外部編譯三、測試總結 目標 理解阻塞和非

原创 網絡編程 11_連接關閉

網絡編程 11_連接關閉目標一、常用函數close 函數shutdown 函數二、select 多路複用客戶端服務端三、CMake 管理當前項目① 代碼組成② 創建並進入 build 目錄③ 外部編譯四、實驗實驗一:客戶端依次輸入

原创 CMake:04 使用外部共享庫和頭文件

04 使用外部共享庫和頭文件任務目標一、準備工作二、外部構建三、運行可執行程序 main小結 任務目標 編寫一個程序,使用 靜態庫與動態庫構建 構建的共享庫 libhello.so 一、準備工作 ① 進入 /home/lql/

原创 網絡編程 期中_動手編個小程序

網絡編程 期中_動手編個小程序一、題目二、開始客戶端服務端三、CMake 管理當前項目① 代碼組成② 創建並進入 build 目錄③ 外部編譯四、測試 一、題目 請分別寫一個客戶端程序和服務器程序,客戶端程序連接上服務器之後,通過

原创 CMake:03 靜態庫與動態庫構建

03 靜態庫與動態庫構建任務目標一、準備工作二、外部構建三、添加靜態庫四、安裝五、指令解釋小結 任務目標 建立一個靜態庫和動態庫,提供 HelloFunc 函數供其他程序編程使用,HelloFunc 向終端輸出 Hello Wo

原创 08 ELF 和靜態鏈接:爲什麼程序無法同時在 Linux 和 Windows 下運行?

08 ELF 和靜態鏈接:爲什麼程序無法同時在 Linux 和 Windows 下運行?一、編譯、鏈接、裝載1.1 說的簡單,具體怎麼個流程1.2 生成可執行文件二、C 語言 - 彙編代碼 - 機器碼三、ELF 格式和鏈接:理解鏈

原创 網絡編程 23_高性能 I/O 複用技術 epoll

網絡編程 23_高性能 I/O 複用技術 epoll目標一、epoll 機制的三個函數二、epoll 用法2.1 創建 epoll 對象2.2 填充 epoll_event 結構體2.3 註冊事件監聽到 epoll 對象2.4 等

原创 網絡編程 26(下)阻塞 I/O 線程池模型

網絡編程 26(下)阻塞 I/O 線程池模型目標一、線程的兩個概念二、阻塞 I/O 線程池模型服務端三、CMake 管理當前項目① 代碼組成② 創建並進入 build 目錄③ 外部編譯四、測試總結 目標 使用線程池的方式,在服務端

原创 CMake:02 外部構建以及安裝 CMake

02 外部構建以及安裝 CMake任務目標一、外部構建 CMake 的 HelloWorld二、安裝方式一:從代碼編譯後直接 make install 安裝指定 Makefile 安裝生成目錄定義前綴 PREFIX方式二:打包時的

原创 String 和它的 intern()

String 和它的 intern先做道題一、String 字符串編譯期常量池字符串常量池二、intern() 方法(JDK 1.8)三、字符串分析(JDK 1.8)先用雙引號創建字符串,再用一個 new 創建字符串JVM 啓動過