原创 C語言中變長參數實例

#include <stdarg.h> #include <stdio.h> #define SUM(arg...) sum("My name is", ##arg) char *sum(char *a, ...); /******

原创 內存管理算法介紹

        內存是計算機系統中除了處理器以外最爲重要的資源,任何一個程序的運行都離不開內存資源的有效使用。前面兩小節介紹了硬件支持的內存管理機制,尤其是如何將虛擬地址或者邏輯地址轉譯成物理內存地址。這

原创 關於Mysql中的三種日期類型

最近遇到兩次插入日期類型後,數值爲 0000-00-00 00:00:00 的情況,於是查了一下官方文檔,找到了原因。 Mysql中我們經常用來存儲日期的數據類型有三種:Date、Datetime、Timestamp。 Date數據類型用

原创 PHP內核中重要的兩個全局變量

在閱讀PHP源碼的時候,會遇到很多諸如:CG(),EG() 這樣的宏,如果不瞭解這些宏的意義,會給理解源碼造成很大困難。 Zend引擎中有兩個重要的全局變量結構體,就是Zend引擎關閉之前都會存在的變量:typedef struct _z

原创 關於Apache服務器的訪問控制

Apache的訪問控制指對任何資源的任何方式的訪問控制。 一、基於主機或者IP地址的控制 這種訪問控制基於訪問者的主機名或者IP地址,通過使用 Deny 和 Allow 指令,實現允許或者禁止某個主機訪問我們的服務器資源。通常 Order

原创 #(井號),##(雙井號), #@在C/C++的#define宏定義中的特殊用法

    1. #:在宏展開的時候會將#後面的參數替換成字符串,如:           #define p(exp) printf(#exp);        調用p(test)的時候會將#exp換成"t

原创 無意間創建的一個閉包,以及解決辦法

閉包的本質是作用域鏈,我們在工作中經常無意間就會創建一個閉包,比如: <input type="button" id="id1" value="1"></input> <input type="button" id="id2" value

原创 PHP內核兩大流程之啓動PHP的核心代碼段

Step 1: Start the sapi extern zend_module_entry php_apache_module; static int php_apache2_startup(sapi_module_struct

原创 一張遊覽PHP內核迷宮的藏寶圖

PHP內核就像一個迷宮,如果沒有一個縱覽全局的圖,只是面對其中的一個點,就會像進了迷宮一樣,走着走着就走到了死衚衕。在這個迷宮裏轉悠了很久之後,最近得到了一張PHP藏寶圖,然後看着這張圖去遊覽PHP內核,頓時覺得這個景區的面貌清晰了許多。

原创 PHP中用下標符號[]去讀取字符串的邏輯

PHP中 [(下標)] 符號不僅可以應用於數組和對象,還可以應用於字符串,如果不注意很容易出錯。 比如獲取一個網絡接口,正常情況下會返回一個數組結構的json,經過解析之後結果爲: array( 'content' => 'This i

原创 關於Javascript的prototype

Javascript中的每個對象(object)都會有 prototype 。試一下: var Richard = new Object(); alert(typeof(Richard.prototype)); 結果令人鬱悶,瀏覽器彈出來

原创 GDB在調試Zend引擎時的幾個重要的用法

使用GDB在調試諸如PHP內核這樣的大型項目時,有幾個命令特別有用: 1、bt 這個命令可以打印出程序調用的路徑 2、watch 變量 這個命令可以跟蹤變量的變化 3、step/next 當找到問題大概的位置時,可以用這兩個命令實現微調,

原创 關於PHP中的自增、自減操作的奧祕

首先看一道面試題: $a = 1; $b = &$a; if ($b == $a++) echo "true"; else echo "false"; 首先,創建了一個變量