原创 MySQL視圖

在MySQL中,視圖是一張虛擬表,但是它本身並不存儲任何數據。當使用 SQL語句訪問視圖時,它每次返回的數據是從其他表中臨時生成的。在大多數情況下,MySQL中視圖和普通表是被同等對待的,不過,視圖和表還是有差別,比如視圖不能創建觸發器,

原创 C 語言的內存分區

C/C++ 將內存劃分爲四個區 1、棧區(stacksegment)—自動分配區,由編譯器來維護,申請的方式是棧指針減四(一條指令通常爲四個字節),而釋放的方式是將棧指針加四。 現假設過程P調用過程Q,並且假設P是主函數,則P的棧區保

原创 MySQL創建自定義函數時 Error Code: 1418 的解決方法

今天在MySQL中創建函數時,報了以下錯誤: Error Code: 1418. This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its dec

原创 PHP匿名函數

匿名函數,允許臨時創建一個沒有名稱的函數。大多數情況下是作爲回調函數的參數使用。當然,也有其它應用的場景。 匿名函數的使用 在 PHP 中,匿名函數實際上就是一個 Closure對象: var_dump(function () {});

原创 PDO之綁定變量

用綁定變量 SQL時,客戶端向服務器發送了一個 SQL語句的原型,服務器端收到了這個 SQL語句“框架”後,經過解析、預處理、生成並存儲該部分的執行計劃,然後返回給客戶端一個句柄,之後每次執行這類查詢,都應使用這個句柄,之後的每次查詢,只

原创 MySQL 二進制日誌

作爲 MySQL服務器層日誌,MySQL二進制日誌按照事務提交的順序,記錄了所有事件,用戶可以通過它完成 point_in_time 的恢復工作,並且 MySQL的複製也需要它。 默認情況下,二進制日誌是關閉的,如果要開啓,則要在 MyS

原创 PHP 錯誤機制

錯誤級別 PHP中總共設置了 16種錯誤級別,常見的有下面幾種: E_ALL 包含所有的錯誤級別 E_ERROR 這種級別的錯誤會顯示 Fatal Error,是最嚴重的錯誤級別。產生這種錯誤後,程序將不會繼續執行。比如調用了不存在的函數

原创 Ubuntu 16.04 下快速搭建 LNMP環境

在 Ubuntu 系統中,可以使用 apt-get 命令來搭建 LNMP環境。這種方式較編譯方式安裝更加簡便,因此選擇使用該方式來搭建環境以供學習。 安裝Nginx 使用 sudo apt-get install nginx 就能自動安

原创 PHP中的ob_start()等函數

PHP中常用的幾個 Output Control 函數爲: 1.ob_start() // 開啓緩衝區 2.ob_flush() // 送出緩衝區內容 3.ob_end_flush() //

原创 PHP處理密碼的幾種方式

在 PHP中,經常會對用戶身份進行認證。本文意在討論對密碼的處理,也就是對密碼的加密處理。 MD5 相信很多PHP開發者在最先接觸PHP的時候,處理密碼的首選加密函數可能就是MD5了,我當時就是這樣的: $password = md5($

原创 MySQL臨時表

MySQL在執行SQL查詢時可能會用到臨時表,一般情況下,用到臨時表就意味着性能較低。 1.臨時表 MySQL臨時表分爲“內存臨時表”和“磁盤臨時表”,並且任何臨時表都是沒有索引的。 其中內存臨時表默認使用MySQL的MEMORY存儲引擎

原创 SQL語句之CASE WHEN

CASE WHEN 基本概念 Case具有兩種格式:簡單Case函數和Case搜索函數。 簡單Case函數: CASE sex WHEN ‘1’ THEN ‘男’ WHEN ‘0’ THEN ‘女’ ELSE ‘其他’ END C

原创 一次MySQL查詢的大致過程

如果想儘可能地優化 MySQL 的性能,那麼必須對 MySQL 查詢的全過程有個大體上的瞭解,爲後續的優化工作打下基礎。 第一步:發送 SQL 語句 客戶端與 MySQL 服務器建立 TCP 連接後發送一條 SQL 語句給 MySQL 服