原创 如果優雅地關閉ExecutorService提供的java線程池

ExecutorService讓我們可以優雅地在程序中使用線程池來創建和管理線程,而且性能佳、開銷小,還可以有效地控制最大併發線程數,是我們在java併發編程中會經常使用到的。 每一個線程都會佔用系統資源,因此線程池的關閉與清理同樣重要,本

原创 Callable、FutureTask和Future詳解帶你理解java併發編程

一. Callable接口與Runnable接口區別 創建java線程,我們經常使用兩種方式: 一是直接繼承Thread 另一種是實現Runnable接口 但這兩種方式有一個缺陷:在執行完任務之後無法直接獲取執行結果。 1. 接口定義

原创 ExecutorService線程池的理解和使用

一. 線程池 我們之前使用線程的時候都是使用new Thread來進行線程的創建,但是這樣會有一些問題。如: a. 每次new Thread新建對象性能差。 b. 線程缺乏統一管理,可能無限制新建線程,相互之間競爭,及可能佔用過多系統資源

原创 Go語言中的反射機制reflect

go的反射機制是要通過接口來進行的,而類似於Java的Object的空接口可以和任何類型進行交互,因此對基本數據類型等的反射也直接利用了這一特點。 package main import ( "fmt" "reflect"

原创 Go語言中日誌處理,log包的使用

Golang提供了原生日誌庫“log”,使用簡單方便,本文以代碼爲例進行說明介紹。 package main import ( "os" "log" "fmt" ) func main() { // 打開

原创 星雲鏈智能合約開發(七):Dapp開發

安裝neb.js neb.js提供javascript開發的API接口 創建一個neb文件夾,在終端命令行中進入該文件夾,克隆neb.js git clone https://github.com/nebulasio/neb.js.git

原创 通過以太坊發行代幣(token)完整版

2017年開始,區塊鏈ICO項目層出不窮,市場熱度一波更勝一波,很多ICO都是通過以太坊智能合約發行自己的代幣(token),具體怎樣才能發行代幣呢?本文進行具體詳細的介紹。 準備工作 以太坊官網ERC20標準合約代碼:https://w

原创 星雲鏈智能合約開發(六):智能合約開發與部署

編寫智能合約 Nebulas實現了NVM虛擬機來運行智能合約,NVM的實現使用了JavaScript V8引擎,所以當前的開發版,我們可以使用JavaScript、TypeScript來編寫智能合約。 編寫智能合約的簡要規範 智能合約代碼

原创 各種加密算法在Go語言中的使用

使用SHA256、MD5、RIPEMD160 import ( "fmt" "crypto/sha256" "os" "io" "crypto/md5" "golang.org/x/crypt

原创 星雲鏈智能合約開發(八):智能合約中調用內置庫

BigNumber BigNumber 模塊構建於 bignumber.js之上,用來處理任意精度的十進制和非十進制運算。合約可以直接使用 BigNumber 來處理交易和其他轉賬操作中涉及到的數值計算。 var value = new

原创 星雲鏈智能合約開發(一):Mac下安裝的準備工作

Homebrew安裝 包管理工具可以讓你安裝和更新程序變得更方便,目前在Mac系統中最受歡迎的包管理工具是 Homebrew. 我們安裝Homebrew是爲了安裝星雲鏈開發環境時更方便快捷。 安裝方法 第一步:安裝 命令行輸入 /usr/

原创 Go語言中時間函數及定時器的使用

Go語言中時間函數及定時器、休眠等功能的實現和使用,代碼如下,有需要的小夥伴直接拿去 package main import ( "time" "fmt" ) func main() { // 設置時區,如果na

原创 MyEclipse上運行比特幣全節點bitcoinj

bitcoinj是bitcoin全節點的java實現。與比特幣官方推薦的C++實現不同的是:目前它並沒有內置RPC或命令行交互。 它的功能交互是通過幾個example例子、tool、以及walletKit體現的。 對於學習或開發區塊鏈,閱讀

原创 比特幣真的安全嗎?我居然生成了一個和別人一樣的私鑰

比特幣的私鑰長度爲256位,理論上有2的256次方種情況,這是一個非常龐大的數字,科學研究宇宙中的原子個數大約爲10的80次方,2的256次方大約等於10的77次方。所以隨機生成一個私鑰,出現重複的概率是相當小的,這也是比特幣安全性的保障。

原创 搭建以太坊私有鏈完整版

可以直接下載程序進行安裝,也可以下載源碼自己進行編譯安裝,本文介紹源碼編譯方式。 源碼編譯 環境需求 正確安裝Go語言環境 正確安裝GCC:安裝GCC方法 從github下載源碼 go get github.com/ethereum/g