原创 後臺方式運行php 腳本
nohup /usr/bin/php7.2 think simulate
原创 clickhouse rpm方式安裝
1.把安裝包從本地上傳到服務器 scp ./ck_rpm.tar.gz [email protected]:/root 2.文件如下 clickhouse-client-20.3.9.70-2.noarch.rpm cli
原创 mqtt研究
參考資料 lnmp+swoole+mosquitto搭建 https://www.kancloud.cn/xiaodo/note1/533022 https://www.cnblogs.com/zjfree/p/11428
原创 redis 限流
protected function queue() { //生成下一分鐘的redis隊列 $nextMinute = date("Y-m-d H:i", strtotime("+1
原创 php 正則函數preg_replace_callback
$str = '<p>在有意思了!</p><p><img src="https://taoke168.oss-cn-beijing.aliyuncs.com/uploads/20200529/d023b6c447ac4c77274a29f
原创 php 生成指定範圍內不重複的隨機數
<?php /* * array unique_rand( int $min, int $max, int $num ) * 生成一定數量的不重複隨機數,指定的範圍內整數的數量必須 * 比要生成的隨機數數量大 * $min 和 $
原创 Go多協程併發環境下的錯誤處理
引言 在Go語言中,我們通常會用到panic和recover來拋出錯誤和捕獲錯誤,這一對操作在單協程環境下我們正常用就好了,並不會踩到什麼坑。但是在多協程併發環境下,我們常常會碰到以下兩個問題。假設我們現在有2個協程,我們叫它們協程A和B好
原创 go 協程之WaitGroup超時控制
package main import ( "fmt" "sync" "time" ) // 調用示例 func main() { var w = sync.WaitGroup{} var ch = make(chan bo
原创 go 協程控制之sync.Once{}
package main import ( "fmt" "sync" "time" ) //協程併發控制,只執行一次 var num = 0 var once = sync.Once{} func main(
原创 go 協程控制之context.WithTimeout的使用
簡言 1. context包的WithTimeout()函數接受一個 Context 和超時時間作爲參數,返回其子Context和取消函數cancel 2. 新創建協程中傳入子Context做參數,且需監控子Context的Done通道,若
原创 go 轉義字符
package main import ( "fmt" ) func main() { fmt.Println("姓名\t年齡\t籍貫\t地址\njohn\t20\t河北\t北京") //\t 一個製表位,實現對齊的功能 fm
原创 go 數據結構與算法之二分查找
package main import ( "fmt" ) //在有序的切片中查找指定的值。每次都需要從中間位置開始, //如果索引對應的值和目標值一致就返回,如果中間位置的值大於目標值那下次就需要從0~(索引-1)尋找 //
原创 go 算法之選擇排序算法
package main import ( "fmt" "strings" ) //字符串選擇排序 //思路:每次選擇一個相應的元素,然後將其放到指定的位置 //1. 假定最小的值得索引是i並賦值給min, //索引i對應的值和後
原创 go 算法之冒泡算法
package main import "fmt" //冒泡排序 升序 //每輪都是相鄰的兩個元素兩兩比較,把最大的元素升到最後 func maopao(arr []int) []int { //列表長度 len :
原创 go 算法之插入排序算法
package main import "fmt" //把切片分成兩部分,左邊部分是排好序的,右邊部分是未排序的 //假定第一個元素是已經排好的區域,然後從未排好序的區域裏面最左邊選一個和已排好序的區域的最後一個元素依次向前開始比較,