Time of Update: 2018-07-23
從四月份下半月開始,陸陸續續面試了幾家公司,都是golang的崗位。每一次面試,側重點都會有不同,有的會直接給過來一道試題, 然後邊解題,邊講述自己的思路,然後面試官根據你的思路和你交流溝通;有的呢,讓講述自己最近做過的項目,遇到的痛點, 自己怎麼解決的問題思路,而無專屬偶的呢,這樣的面試中,都要需要展示編碼能力。這篇文章就把自己最近面試中遇到的每一個編程問題, 分三步闡述出來:問題描述,解題思路,實際編程。1 交替列印數字和字母1.1 問題描述使用兩個 goroutine 交替列印序列,一個
Time of Update: 2018-07-23
為什麼 Goroutine 能有上百萬個,Java 線程卻只能有上千個?很多有過 JVM 相關語言工作經驗的程式員或許都遇到過如下問題:[圖片上傳失敗...(image-d56f9b-1532356059594)]額,超出 thread 限制導致記憶體溢出。在作者的筆記本的 linux 上運行,這種情況一般發生在建立了 11500 個左右的 thread 時候。但如果你用 Go 語言來做類似的嘗試,每建立一個 Goroutine ,並讓它永久的 Sleep
Time of Update: 2018-07-23
1.心跳包:發送心跳包是為了不斷監聽和發送達到長串連的效果2.處理 串連 mysql和sqlite3.KCP去這裡下載kcp-go4.protoc.exe 去這裡下載protoc-3.6.0-win32.zip5.batRegex 前面加個 REM 表示接下來才是正則匹配@echo offecho 正在產生Go代碼...REM protoc -I=./ --go_out=../PB/ .\messageid.protopause處理 串連 mysql和sqlitepackage
Time of Update: 2018-07-23
go.gifliuyuelin@liuyuelindeMacBook-Pro ⮀ ~ ⮀ brew install goUpdating Homebrew…^C⇒ Downloading [https://homebrew.bintray.com/bottles/go-1.10.3.sierra.bottle.tar.g](https://homebrew.bintray.com/bottles/go-1.10.3.sierra.bottle.tar.g)###### #############
Time of Update: 2018-07-23
00 導言 由 Linux 基金會發起建立的開源區塊鏈分散式總帳 —— Hyperledger Fabric,已經迎來了 1.2.0 版本。該項目著重於效能和可靠性,以及推動區塊鏈和分散式總帳技術的跨行業協作。Hyperledger Fabric 可用於全球供應鏈管理、金融交易、資產賬和去中心化的社交網路等情境,但無意以此來構建一種加密貨幣。 下面我們將帶著大家一步一步來搭建自己的HyperLedger Fabric開發環境。老司機已經發車,趕緊跟上。。。01 作業系統準備
Time of Update: 2018-07-23
0702曆史性的一天。一大早坐在小鐵的電動車后座上,我到了公司最後一次打卡,吃了一份早餐,去了一趟工位,看了一眼esp和w3,拿到離職證明後,剛畢業的這一年終於塵埃落定。從上海到杭州的距離很短動車也很快,我從初入社會的青澀到如今的漸漸成熟,卻已經走了不少彎路、花費了一年時光。新公司的技術氛圍很棒,有著理想的工作場所,中等規模正好適合混跡社會不久的我。隨著各行各業都重視IT技術,伺服器端、網路層的開發必然有很大的市場需求,所以在這個領域做到精通,將會讓我達到新的人生高度。0703我昨天回家後,搬行
Time of Update: 2018-07-23
go env檢查各項環境變數無誤進入shell環境(Windows為cmd環境),切換到項目工程的源碼目錄(包含main包的那個目錄)設定好環境變數,關閉CGO(交叉編譯不支援所以要關閉),將編譯目標平台的環境變數設定好,然後執行go build命令即可,具體方法如下CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go buildbash
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...在上上篇文章裡,我們還剩下一個小問題沒有解決,即前端是如何顯示一個交易的詳細資料的。先看對應的圖片:這個圖片由於太長,分成了兩個,實際上可以看作一個。那麼這個頁面是怎麼來的呢?這是在前面以列表的方式顯示交易摘要資訊後,可以點擊摘要資訊右上方的“查看詳情”連結開啟。那我們在本文看一下,比原是如何顯示這個交易
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...在前一篇文章中,我們試圖理解比原是如何交易的,但是由於內容太多,我們把它分成了幾個小問題,並在前一篇解決了“在dashboard中如何提交交易資訊”,以及“比原後台是如何操作的”。在本文我們繼續研究下一個問題:在提交的交易成功完成後,前端會以列表的方式顯示交易資訊,它是如何拿到背景資料的?也就是是如何?的
Time of Update: 2018-07-23
兄弟連區塊鏈技術培訓Fabric 1.0原始碼分析(35)Peer #EndorserServer(Endorser服務端)# Fabric 1.0原始碼筆記 之 Peer #EndorserServer(Endorser服務端)##
Time of Update: 2018-07-23
兄弟連區塊鏈技術培訓Fabric 1.0原始碼分析(48)Fabric 1.0.4 go代碼量統計# Fabric 1.0原始碼筆記 之Fabric 1.0.4 go代碼量統計## 1、概述除test、vendor、mocks、example、protos外,go核心代碼檔案341個,核心程式碼63433行。```bashfind ./ |grep -vE 'test|vendor|mocks|example|protos' | grep '\.go$' |
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...在比原的dashboard中,我們可以為一個帳戶建立地址(address),這樣就可以在兩個地址之間轉帳了。在本文,我們將結合代碼先研究一下,比原是如何建立一個地址的。首先看看我們在dashboard中的是如何操作的。我們可以點擊左側的"Accounts",在右邊顯示我的帳戶資訊。注意右上
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...在前面,我們探討了從瀏覽器的dashboard中進行註冊的時候,資料是如何從前端發到後端的,並且後端是如何建立密鑰的。而本文將繼續討論,比原是如何通過/create-account介面來建立帳戶的。在前面我們知道在API.buildHandler中配置了與建立帳戶相關的介面配置:api/api.go#L1
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...在前一篇,我們探討了從瀏覽器的dashboard中進行註冊的時候,密鑰、帳戶的別名以及密碼,是如何從前端傳到了後端。在這一篇,我們就要看一下,當比原後台收到了建立密鑰的請求之後,將會如何建立。由於本文的問題比較具體,所以就不需要再細分,我們直接從代碼開始。還記得在前一篇中,對應建立密鑰的web
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...在前面一篇文章,我們粗略的研究了一下比原的dashboard是如何做出來的,但是對裡面提到的各種細節功能,並沒有深入的去研究。那麼從本文開始,我們將在這一段時間,分別研究裡面提到的每一項功能。在前一篇文章中,當我們第一次在瀏覽器中開啟dashboard時,因為還沒有建立過密鑰,所以比原會提示我們輸入一些別
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...在前面的幾篇文章中,我們一直在研究如何與一個比原節點建立串連,並且從它那裡請求區塊資料。然而我很快就遇到了瓶頸。因為當我處理拿到的區塊資料時,發現我已經觸及到了比原鏈的核心,即區塊鏈的資料結構以及分叉的處理。如果不能完全理解這一塊,就沒有辦法正確的處理區塊資料。然而它涉及的內容太多了,在短時間之內把它理解
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...在上一篇,我們知道了比原是如何把“請求區塊資料”的資訊BlockRequestMessage發送給peer節點的,那麼本文研究的重點就是,當peer節點收到了這個資訊,它將如何應答?那麼這個問題如果細分的話,也可以分為三個小問題:比原節點是如何收到對方發過來的資訊的?收到BlockRequestMessa
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...在前一篇中,我們說到,當比原向其它節點請求區塊資料時,BlockKeeper會發送一個BlockRequestMessage把需要的區塊height告訴對方,並把該資訊對應的位元據放入ProtocolReactor對應的sendQueue通道中,等待發送。而具體的發送細節,由於邏輯比較複雜,所以在前一篇中
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...在前一篇中,我們已經知道如何連上一個比原節點的p2p連接埠,並與對方完成身分識別驗證。此時,雙方結點已經建立起來了信任,並且串連也不會斷開,下一步,兩者就可以繼續交換資料了。那麼,我首先想到的就是,如何才能讓對方把它已有的區塊資料全都發給我呢?這其實可以分為三個問題:我需要發給它什麼樣的資料?它在內部由是
Time of Update: 2018-07-23
作者:freewind比原項目倉庫:Github地址:https://github.com/Bytom/bytomGitee地址:https://gitee.com/BytomBlockc...最開始我對於這個問題一直有個疑惑:區塊鏈是一個分布式的網路,那麼一個節點啟動後,它怎麼知道去哪裡找別的節點從而加入網路呢?看到代碼之後,我才明白,原來在代碼中寫入程式碼了一些種子地址,這樣在啟動的時候,可以先通過種子地址加入網路。雖然整個網路是分布式的,但是最開始還是需要一定的中心化。預編碼內容對於設定檔