原创 數據庫抽象層 PDO 原

數據庫抽象層 PDO 鏈接與鏈接管理 如果有任何連接錯誤,將拋出一個 PDOException 異常對象。如果想處理錯誤狀態,可以捕獲異常,或者選擇留給通過 set_exception_handler() 設置的應用程序全局異常處理程序。

原创 使用golang寫一個redis-cli 頂 原 薦

使用golang寫一個redis-cli 0. redis通信協議 redis的客戶端(redis-cli)和服務端(redis-server)的通信是建立在tcp連接之上, 兩者之間數據傳輸的編碼解碼方式就是所謂的redis通信協議。所以

原创 golang中bufio包的實現原理 頂 原 薦

最近用golang寫了一個處理文件的腳本,由於其中涉及到了文件讀寫,開始使用golang中的 io 包,後來發現golang 中提供了一個bufio的包,使用這個包可以大幅提高文件讀寫的效率,於是在網上搜索同樣的文件讀寫爲什麼bufio 要

原创 使用DOM解析來實現PHP模版引擎 原

0. 前言: 傳統模版語法的不利之處 目前市面上有很多PHP的模版引擎,如smarty、blade等。其中大部分都是基於正則表達式將其中的模版語法轉換成PHP代碼,並進行緩存。模版代碼所經歷的過程如下: template -> php ->

原创 靜態延遲綁定:static 關鍵字 原

靜態延遲綁定:static 關鍵字 靜態方法可以作爲工廠方法,工廠方法是生成包含類的實例的一種方法,例如如下代碼 abstract class DomainObject{ } class User extends DomainObject

原创 Thinkphp中使用JQuery插件Uploadify 原

Thinkphp中使用JQuery插件Uploadify 標籤(空格分隔): JQuery 前端的html代碼 <link rel="stylesheet" type="text/css" href="__PUBLIC__/Uploadi

原创 實現純手寫的進度條 原

最近在網上看到有人用python寫了一個進度條,突發奇想也用jquery寫了個,全部代碼如下 <!DOCTYPE html> <html> <head> <title>progress-bar</title> <script type=

原创 docker 學習系列(一)--docker-machine 原

先講解一下如何創建一個machine 1. 打開命令行 2. 使用 docker-machine ls 命令,默認情況下如下 $ docker-machine ls NAME ACTIVE DRIVER STATE UR

原创 使用拉鍊法解決衝突的簡單hash表 原

 Hash函數的作用是把任意長度的輸入,通過hash算法變換成固定長度的輸出,該輸出就是hash值,hash表的複雜度爲O(1)。 <?php /** * 一個簡單的hash表 * 使用拉鍊法解決衝突 */ class hashta

原创 深入瞭解net/http 原

http包提供了HTTP客戶端和服務端的實現。 最簡單Web服務 package main import ( "fmt" "log" "net/http" ) func main() { http.HandleFunc("/

原创 PHPUnit單元測試模擬與樁 原

#PHPUnit單元測試模擬與樁 創建測試用例 <?php //單元測試 class UserStore { private $users = aray(); function addUser($name,$mail,

原创 try catch 之後是否會繼續執行 原

前幾天的一個面試題目,涉及到了當catch到一個Exception時,try之後的代碼是否還會執行,簡單寫個測試試一下 <?php function test($n) { try { if ($n == 0) {

原创 js實現顏色隨機的標籤列表 原

效果圖如下圖: html 的代碼如下 <html> <body> <p class="blog-post-meta"> <span class="label">no.1</span> <span class="label

原创 Thinkphp 模型中關於增刪改查的的應用 原

Thinkphp 模型中關於增刪改查的的應用 數據庫對象的創建 令牌驗證、自動驗證和自動完成功能,其實都必須通過create方法才能生效。 $user->create(); 對於使用了自動驗證的情況可以使用下面 $user = D('Us

原创 字符串化中雙重宏定義的用法 原

字符串化運算符 (#) 使用# 你可以定義一個字符串常量的宏。當一個宏參數使用#開頭,預處理器會把文本原有當內容當作是一個字符串常量替換。 例如: #define WARN_IF(EXP) \ do { if (EXP) \ fp