原创 統計二進制數組中1的個數--variable-precision SWAR算法解析

統計一個32位數字的二進制表示中,1的個數(把這個32位數字當做一個長度爲32的二進制數組)。 如0xffc1, 其二進制爲1111 1111 1100 0001, 那麼1的個數爲11個。 算法如下: unsigned int s

原创 淺談delete[]如何處理數組

測試是否在數組周圍存放數組大小 運行結果: 可見,在數組周圍並沒有記錄數組的大小。 使用delete釋放數組和釋放單個元素空間應該是沒有區別的。 如delete[] arr, delete e; 釋放單個元素不用解釋,那麼釋放數

原创 操作系統內核寫後感

  最近用的幾個月的時間,大體寫了一個簡單的微內核的操作系統內核,還是想繼續寫下去,關於一個簡單的內核開發有一些思考。   首先要選定好語言,我剛開始想用C來寫,但是一想現在很多書都是用C來教學寫內核的,如果我也用C,那我那容易就由於慣性

原创 Eclipse配置Tomcat常見問題及運行第一個項目

常見問題: install new software異常緩慢: 解決:不要勾選Contact Update …(最下方) Server中沒有Tomcat: 解決:去install new software下載JST Serve

原创 TLS抓包分析

TLS(Transport Layer Security, 傳輸層安全):用於保證Web通信以及其他流行協議的安全。 TLS的前身是安全套接字層(SSL)。 TLSv1.2版本運行在面向流的協議(如TCP)之上。 記錄協議提供分

原创 鏈表的“二分查找”--跳躍表

二分查找是一種效率很高的查找方法,但是二分查找要求數據結構必須是順序表,也就是類似於數組的連續存儲,因爲只有這樣才能一下定位出數組的中間位置(直接使用類似a[len / 2]),然後就可以把數組一分爲二,進行後面的操作。 但是對於

原创 Redis字符串(SDS)與C字符串比較

Redis並不是直接使用C的原生字符串,而是對char*進行了簡單的包裝,但是經過包裝後會避免很多缺陷。 C原生字符串的缺點: 使用API時不安全:比如調用strcat()進行字符串拼接時,strcat(str1, “extend

原创 讀取CMOS時間並轉爲十進制

CMOS字節信息(僅列出比較常用的字節) 偏移值 描述 0 當前秒數 2 當前分鐘 4 當前小時 6 星期幾 7 一個月中的第幾天 8 幾月 9 年(僅表示後兩位,如2021年,存放的數據爲2

原创 TCP四次揮手特殊情況--同時發送FIN

數據包如下: 過程如下: 數據包解析:

原创 複製構造函數重載

先看代碼: 以下代碼編譯時要加:-fno-elide-constructors 來關閉編譯器優化,否則可能看不到複製構造函數的調用。 #include <iostream> using std::cout; using std:

原创 c3p0配置常見問題

1、c3p0-config.xml要放在src目錄下,而不是WEB-INF目錄下 2、在測試時 PreparedStatement pstmt = (PreparedStatement)conn.prepareStatemen

原创 解決C++重定義問題--匿名命名空間

今天遇到一個命名空間重定義的問題,程序框架大體如下: interface中定義的是一個namespace, 形式如下: namespade np { int a = 1; int b = 2; }; 並且三個m

原创 優雅地移除節點

先來看一個不優雅的寫法: remove_list_entry(entry) { prev = NULL; walk = head; while (walk != entry) { prev

原创 解決Access denied for user 'root'@'%' to database 'xxx'

jdbc連接mysql出現 Access denied for user ‘root’@’%’ to database ‘xxx’ 查看授權情況:SELECT host,user,password,Grant_priv,Super

原创 Python 對象底層實現分析

PyObject PyObject對象是一切python對象共有的部分,包含以下內容: typedef struct _object{     int refcnt;  // 用於保存一個對象的引用計數,當一個對象引用減爲0時,將會對這個