原创 MYSQL死鎖之路 - 常見SQL語句的加鎖分析

這篇博客將對一些常見的 SQL 語句進行加鎖分析,看看我們平時執行的那些 SQL 都會加什麼鎖。只有對我們所寫的 SQL 語句加鎖過程瞭如指掌,才能在遇到死鎖問題時倒推出是什麼鎖導致的問題。在前面的博客中我們已經學習了 MySQL

原创 Composer基本使用

Composer基本使用 1、composer update、composer install 與 composer require的區別 Composer update: 根據composer.json文件的包依賴關係將包

原创 PHP編譯支持SQLite3加密擴展

自PHP 5.3.0起默認啓用SQLite3擴展,但是由於SQLite 3 開源版不帶加密功能,如果想使用加密功能需要用他的商業版本。這導致PHP默認的SQLite擴展本身是不支持加密功能,只預留了相關的接口,詳見官方文檔介紹:

原创 Window環境PHP7使用Protobuf開發詳解

安裝Protoc 用於生成PHP代碼 下載地址: https://github.com/protocolbuffers/protobuf/releases 選擇Window平臺下載地址 這裏選擇最新版 https://githu

原创 外部網絡SSH訪問公司內網服務器終極解決方案(實現SFTP直連內網)

最近工作中中遇到了這樣的情況,公司內部搭建了一臺測試服務器作爲測試環境使用。 某天請假回家,公司測試服務器出了問題,公司的小夥伴無法使用測試環境測試。 這個時候就想,能否在外部也能訪問公司的服務器。 解決辦法 利用外網服務器以及反

原创 PhpStorm配置自動同步Web服務器

1、首先創建需要創建SFTP用戶,具體可參考其他網絡教程,這裏以www爲例 2、在webstom編輯器依次選擇 Tools => Deployment => Configuration 3、添加一個遠程主機,協議選擇SFTP/填

原创 Go編程入門詳細例子-協程/管道

協程 package main import ( "fmt" "strconv" "time" ) // 在主線程(可以理解成進程)中,開啓一個goroutine, 該協程每隔1秒輸出 "hello,world" // 在

原创 PHP中使用gRPC客戶端

因爲工作需要使用gRPC,本人使用的是windows10,不過linux的操作流程基本一樣。 直接進入主題,分爲了幾部分 1、下載Protoc 下載地址:https://github.com/google/protobuf/rel

原创 PHP過濾輸入的emoji表情

1.過濾emoji表情的原因 在我們的項目開發中,emoji表情是個麻煩的東西,即使我們可以能存儲,也不一定能完美顯示,因爲它的更新速度很快:在iOS以外的平臺上,例如PC或者android。如果你需要顯示emoji,就得準備一大

原创 Linux下安裝Composer及下載問題

Linux安裝 Composer 要真正獲取 Composer,我們需要做兩件事。首先安裝 Composer (同樣的,這意味着它將下載到你的項目中): curl -sS https://getcomposer.org/insta

原创 Redis持久化-數據丟失及解決方案總結

Redis大部分應用場景是純緩存服務,請求後端有Primary Storage的組件,如MySQL,HBase;請求Redis的鍵未命中,會從primary Storage中獲取數據返回,同時更新Redis緩存。如果少量數據丟失,

原创 Go編程入門詳細例子-TCP

服務器 package main import ( "fmt" "net" //做網絡socket開發時,net包含有我們需要所有的方法和函數 _"io" ) func process(conn net.Conn) {

原创 Go編程入門詳細例子-反射

反射入門 package main import ( "reflect" "fmt" ) //專門演示反射 func reflectTest01(b interface{}) { //通過反射獲取的傳入的變量的 typ

原创 Go編程入門詳細例子-面向對象

結構體 package main import ( "fmt" ) //定義一個Cat結構體,將Cat的各個字段/屬性信息,放入到Cat結構體進行管理 type Cat struct { Name string Age

原创 Go編程入門詳細例子

變量 //golang的變量使用方式1 //第一種:指定變量類型,聲明後若不賦值,使用默認值 // int 的默認值是0 , 其它數據類型的默認值後面馬上介紹 var i int fmt.Println("i=", i