原创 學習《TCP/IP詳解》遇到的問題與疑惑

1、第二章中提到在RFC893中描述了以太網幀的尾部封裝,這種封裝可以使數據直接對應硬件頁,從而節省了內存到內存的複製,但是這種封裝方式被廢止了,它有什麼缺點呢? 爲什麼被廢止? 待續..

原创 表單form的enctype="multipart/form-data"

給表單設置了enctype="multipart/form-data"後,不能直接使用request.getParameter()方法獲取表單提交的

原创 malloc()與 alloc()等內存分配方式

C語言跟內存分配方式 (1) 從靜態存儲區域分配。內存在程序編譯的時候就已經分配好,這塊內存在程序的整個運行期間都存在。例如全局變量,static變量。 (2) 在棧上創建。在執行函數時,函數內局部變量的存儲單元都可以在棧上創建,函數執

原创 手機屏幕類型分析

時下主流的屏幕都可歸結爲LCD與OLED兩類。LCD的採用已經比較久遠了,他就是指普通的液晶顯示屏幕。有時LCD也可與TFT的名稱通用,這裏談到的TFT屬於LCD的一個子分類。通常認爲,OLED在技術上比LCD是要更爲先進的,不過OLED

原创 DatagramSocket的學習

使用DatagramSocket發送、接收數據 DatagramSocket本身只是碼頭,不維護狀態,不能產生IO流,它的唯一作用就是接收和發送數據報,Java使用DatagramPacket來代表數據報,DatagramSocke

原创 Java版本的有趣代號

Java各個版本的代號。 VERSION 版本 CODE NAME代號   RELEASE DATE發佈時間 JDK 1.1.4 Sparkler閃光的東西 Sept 12, 1997 JDK 1.1.5 Pumpkin南瓜

原创 stdcall, cdecl, fastcall, thiscall

在C語言中,假設我們有這樣的一個函數: int function(int a,int b) 調用時只要用result = function(1,2)這樣的方式就可以使用這個函數。但是,當高級 語言被編譯成計算機可以識別的機器碼時,有一個

原创 explicit構造函數

按照默認規定,只有一個參數的構造函數也定義了一個隱式轉換,將該構造函數對應數據類型的數據轉換爲該類對象,如下面所示: class String { String ( const char* p ); // 用C風格的字符串p作爲初始化值

原创 算法導論Ch2.1-4習題

題目:  有兩個各存放在數組A和B中的n位二進制整數,考慮它們的相加問題。兩個整數的和以二進制形式存放在具有(n+1)個元素的數組C中。請給出這個問題的形式化描述,並寫出僞代碼。 分析:二進制整數的編碼,此處考慮原碼和補碼,原碼可以通過

原创 X86系列處理器中的寄存器

一個80X86 CPU有16個應用寄存器。 數據寄存器:EAX、EBX、ECX、EDX,又稱通用寄存器。EAX有時也叫累加器,因爲它用於存儲許多計算的結果。 其中字母E表示Extend,原因是相對於早期16位寄存器來說,32位的寄存器是A

原创 Placing Global Variables in a Register

GCC allows programmers to place global variables in a specific machine register, where the variables will then reside

原创 算法導論第二章習題的一些思考

2.3-6   題目大意是結合二分查找來改進插入排序,能否使插入排序的最壞運行時間改善至O(nlgn)? 在插入排序中,將數據插入已排序的序列中使用的是反向遍歷,最壞情況是完全遍歷,使用二分查找可以減少搜索應該插入位置的時間。而二分查找的

原创 Link-local Multicast Name Resolution

LLMNR 是一種在子網域提供域名解析的方案。利用多播的方式,使得子網內的節點可以將主機名解析成IP地址。 使用的多播地址爲224.0.0.252。 詳見RFC4795。

原创 c++類構造函數理解

記錄一下我對C++類構造函數的理解。 首先,構造函數分成兩種,默認構造函數和非默認構造函數(好吧,就這麼叫它)。 默認構造函數只能有一個,如果沒有自定義構造函數,那麼編譯器將自動生成一個默認構造函數,當然這個構造函數不會做任何事情。如果程

原创 char* 和char[] 內存分配的區別

char * s1 = "abcd"; s1[0] = 'm';//segment fault 上面代碼在gcc下編譯運行將報段錯誤。 然而, char s1[] = "abcd"; s1[0] = 'm'; 這段代碼則能夠正確運行。