最近有点背...

以太坊学习1—搭建以太坊私有链

关于以太坊

关于以太坊,我刚开始是从区块链的一些开源项目得知的。我们知道,比特币仅是作为数字货币的功能,是最开始区块链技术的应用(区块链1.0)。而以太坊作为公共的区块链平台,是一个去中心化的分布式账本技术的应用平台。智能合约的编写,让它可以实现更多元化的服务,所以我们更愿意称它为区块链2.0。

搭建环境

  • CentOS7.2
  • 以太坊客户端go-ethereum

    安装以太坊

    安装yum源

    1
    rpm -ivh http://ftp.riken.jp/Linux/fedora/epel/6/i386/epel-release-6-8.noarch.rpm

线程安全的单例模式

单例模式

单例模式(Singleton Pattern)是 Java中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。它有以下三个特点:

  • 单例类只能有一个实例。
  • 单例类必须自己创建自己的唯一实例。
  • 单例类必须给所有其他对象提供这一实例。

    创建单例模式

  • 懒汉式(线程不安全)

    所谓的懒汉式就是需要使用的时候才去创建实例。这种非线程安全的创建模式,懒加载很明显,不能够满足多线程条件下使用。

数据结构之堆

前言

堆也是一种特殊的数据结构,是一种特殊形式的完全二叉树。

堆分为两种:大顶堆(每个节点的值都不大于其父节点的值,也就是根节点的值是最大的)和小顶堆(每个节点的值都不小于其父节点的值,也就是根节点的值是最小的)。

堆的基本操作(以大顶堆为例)

既然堆本身是完全二叉树,所以我们可以使用一维数组的方式进行储存。0位置用来存储元素的个数,1~n用来存储元素。

所以对于任意一个元素i来说 ,如果它有左孩子,那么它的左孩子值可以是2i;如果它有右孩子,那么右孩子可以是2i+1。

  • 创建堆

数据结构之二叉树

二叉树概念

二叉树是指每个父节点最多有两个子节点的树。二叉树的定义是一个递归的定义,它很明确地区分了一个根节点的两个子树,分别是左子树和右子树。

这里写图片描述

数据结构之链表

前言

链表与之前所讲的数据结构有一些不同。
栈与队列是申请一段连续的空间,然后按顺序来存储数据;
链表是一种物理上非连续、非顺序的存储结构,数据元素之间的顺序是通过每个元素的指针来关联的。

链表结构

链表的每一个节点都包含两部分信息:元素数据本身和指向下一个元素地址的指针。
这里写图片描述