最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

想自建區塊鏈不可不知物件導向的hashcode基本概念

XAMPP下载 admin 751浏览 0评论
 最近都在思考如何應用spark來應付未來公司方向的需求以及被空降的急案壓榨,好久沒有發文刷存在感了!

今天手邊工作到一段落又湊巧看到fysh711426大大發的使用 Token 進行 API 授權驗證
流程跟 『區塊鏈』 「分散式電子帳本」技術中帳本間的串接原理類似,所以來分享一下物件導向
hashcode的一些基本概念。

String s1 = “abc”;
String s2 = “abc”;
Integer a = 123;
Integer b = 123;
System.out.println(s1.equals(s2));
System.out.println(a.equals(b));
上面這段程式沒啥特別的地方結果當然都是輸出true !

public class BlockChain {

Integer page;
Date date;
List<String> transations;

// BlockChain的建構子
public BlockChain(Integer page,
Date date,
List<String> transations) {
this.page = page;
this.date = date;
this.transations = transations;
}
}
那如果我們有一個 BlockChain 的物件,包含整數的page、日期的date、List的交易
三個屬性; 然後我們創建兩個物件b1跟b2且b1與b2的三個屬性值均相等

public static void main(String[] args) {

List<String> trans4Darwin = new ArrayList<String>();
trans4Darwin.add(“Darwin2Joe”);
Date now = new Date();
BlockChain b1 = new BlockChain(1, now, trans4Darwin);
BlockChain b2 = new BlockChain(1, now, trans4Darwin);

System.out.println(b1.equals(b2));
}
這時執行反而會印出false。Why ? 如果認為是List.class跟Date.class造成的
可以只留page,但結果還是false !
不賣關子公佈答案了:
其實原因出在當我們自建物件時,編譯器會很貼心的幫我們創建物件對應的hashcode!
以 Java 為例

System.out.println(b1.hashcode());
System.out.println(b1);
會輸出1627674070
而在toString()後則會跑出com.company.BlockChain@610455d6
上面這串鬼東西就是依據編譯器幫我們建的hashcode產出的b1代表字串。
在物件導向中,hashcode就是一個物件的代表。
所以如果我們有一個物件是老百姓,那最簡單的hashcode就可設定為身分證字號!
其實在SCJP Java 5.0專業認證手冊(台中國資圖有2本可借)的第七章中,有強調
『當你改寫hashcode()這個方法時,equals()這個方法也要一併改寫的鐵則。』
個人還滿私心推薦 Kathy Sierra 的程式相關書籍 XD !

講了這麼多,那這跟區塊鏈分散式電子帳本技術有啥關聯?

QQ截图20180912152506
 基本上區塊鏈分散式電子帳本最主要就是紀錄:
公鏈hashcode、時間戳、交易明細(挖到的比特幣跟買毒交易的比特幣)
而公鏈hashcode的產生過程不精確的簡單說就是把
fysh711426大大文章中的header、payload、signature替換成帳本的每一頁。
而實際存在 nosql DB 或者 spark、hadoop等平台的就是這些加密後的公鏈hashcode !

而目前的瓶頸在於FILO堆疊檢索的極限以及配合獎勵機制及其他零零總總確保交易的
程式碼,是否因為不當的公鏈hashcode而系統崩潰!
總而言之言而總之,當你設計的區塊鏈加密貨幣可在其他國家發行時,
別忘了寫篇論文分享公鏈技術,賺了裡子也賺了面子 XD !

最後,誰說電腦沒極限,認為沒極限的可幫忙幫我把下面這個數字作因數分解,感謝!
64397501735471938465017354627948578301837045820347501927402947850284756

转载请注明:XAMPP中文组官网 » 想自建區塊鏈不可不知物件導向的hashcode基本概念

您必须 登录 才能发表评论!