原创 記錄一次用sourcetree: 查找誰把git中文件刪除的實戰(正確操作見下面)

發現問題過程 1)有人把別人的場景不小心刪除了,一頭霧水,不知道誰刪除的都刪除了什麼文件 2)查找辦法: 選擇一個沒有問題的版本A + 按照command按鍵 + 選擇附近的版本B 挨個比對 最終查找到原來是11:41分有人操作git錯

原创 ExecutorService + synchronized + 對象所 實現生產者消費者模式

package Demo06_Productor_Consumer; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors

原创 利用break 標籤跳出for select循環

package main import ( "fmt" "time" ) func main() { strChan := make(chan int, 1) n := 0 // 生產者不停的生產,如果通道有數據,就會

原创 對象的創建 和 理解go中的鴨子類型

1)player.go package player type Player struct { id int name string } func (self *Player) GetId() int { return s

原创 阻塞隊列BlockingQueue + Runnable接口共享數據 實現 生產者消費者 模式

1)產品 package juc.blockingqueue; public class Product { public Product() { } @Override public String

原创 java、go、node.js 對於遞歸程序(如麻將胡牌算法)併發性能對比測試

1)java package Demo07_recursive; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;

原创 阻塞在for或者listen上不讓go程序立馬退出

package main import ( "fmt" "strconv" "time" ) var exit = make(chan int) var strChan = make(chan string) func m

原创 for select 阻塞着等待生產者生產的東西

package main import ( "fmt" "time" ) func main() { strChan := make(chan int, 1) n := 0 // 生產者不停的生產,如果通道有數據,就會

原创 以node.js v10.5.0 的net模塊爲例子,深刻理解粘包問題(4.x不行, 對Buffer.from等api不支持,解析Buffer錯誤)

--------------------------有問題的寫法(故意發送很長的字符串,讓客戶端多次接收)--------------------------- 1)Server.js(注意必須實現 "error"的監聽, 不然客戶端斷開

原创 靜態語言: 從編譯到生成可執行文件 的流程

1)詞法分析   2)語法分析   3)語義分析   4)編譯   5)鏈接

原创 一個協程向其它協程發送通知

package main import ( "fmt" "time" ) func main() { N := 10 exit := make(chan struct{}) done := make(chan struct

原创 defer + recover 捕獲所有異常

1)說明 go的異常捕獲需要延遲函數defer + recover實現,在函數返回前,就可以捕獲到, 這樣其實比java的try catch更加優雅一點; 比如: web服務器程序崩潰前,需要做一些清理,那麼就可以這樣搞定; 還可以在捕獲

原创 channel實現future + promise類似的機制

package main import ( "io/ioutil" "log" "net/http" ) func RequestFuture(url string) <-chan []byte { c := make(ch

原创 channel實現 pthread_cond_signal() 等待通知機制

package main import ( "fmt" "time" ) func main() { ch := make(chan struct{}) nums := make([]int, 10) go func(

原创 (win下)使用GOROOT和GOPATH管理go項目(在goland中配置這個應該更方便 )

1)下載go的安裝包,像QQ一樣安裝一下 2)環境變量設置(注意不要開啓gomod) win下設置環境變量 GOPATH  E:\coding_now\other\jvmgo-book\v1\code\go  自己將要建立go工程的地