自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

转载 Idea控制台日志乱码解决(实测有效)

记得配置好后,一定要重启idea操作引用如下:https://www.cnblogs.com/liaoyanglong/p/6639039.html

2019-01-30 11:24:25 6256

转载 以太坊源码学习(六)geth源码debug以及遇到的问题记录

1.debug使用的idea是golang 参考https://blog.csdn.net/KeenCryp/article/details/811035662.win7环境执行debug时遇到的问题cc1.exe: sorry, unimplemented: 64-bit mode not compiled in参考https://blog.csdn.net/mecho/ar...

2019-01-24 09:59:52 112

原创 以太坊源码学习(五)提交交易之交易池

/internet/ethapi/api.go// submitTransaction is a helper function that submits tx to txPool and logs a message.func submitTransaction(ctx context.Context, b Backend, tx *types.Transaction) (common....

2019-01-20 16:10:44 174

原创 以太坊源码学习(四)账户

accounts/accounts.go// Account represents an Ethereum account located at a specific location defined// by the optional URL field.type Account struct { Address common.Address `json:"address"` /...

2019-01-20 10:14:58 96

原创 以太坊源码学习(三)交易

internal/ethapi/api.go// SendTransaction will create a transaction from the given arguments and// tries to sign it with the key associated with args.To. If the given passwd isn't// able to decryp...

2019-01-20 09:44:25 165

原创 以太坊源码学习(二)geth启动

geth命令cmd/main/main.gofunc main() { if err := app.Run(os.Args); err != nil { // app是三方包,用于接收客户端命令 fmt.Fprintln(os.Stderr, err) os.Exit(1) }}func init() { // init方法先于main方法执行...

2019-01-19 15:51:22 164

原创 以太坊源码学习(一)区块结构

区块结构type Block struct { header *Header //区块头 uncles []*Header //防止攻击的 transactions Transactions //交易列表 // caches hash atomic.Value size atomic.Value // Td is us...

2019-01-13 21:40:52 159

原创 solidity学习笔记(十八)动态、固定字节数组以及string之间的转化

1.固定大小的数组之间的转化pragma solidity ^0.4.6;contract TestCharge{    bytes2 public b = 0x6c11;    // bytes 大小使用bytes32的32决定    function bLength() returns(uint){        return b.length;    }    funct...

2019-01-05 10:22:32 343

原创 solidity学习笔记(十七)可变数组push

pragma solidity ^0.4.6;contract TestPush{    bytes public name = new bytes(2);    // 会增加长度    function pushName(byte b) public{        name.push(b);    }}

2019-01-04 07:38:19 504

原创 solidity学习笔记(十六)可变长度字节数据

长度和内容都可以修改pragma solidity ^0.4.6;contract TestCreateBytes{    bytes public b = new bytes(1);        function getLength() constant returns(uint){        return b.length;    }        function ...

2019-01-04 07:36:21 152

原创 solidity学习笔记(十五)特殊字符或者汉字字节大小

pragma solidity ^0.4.6;contract TestTeShu{    string public name="@!$F";    string public name2 = "小吴";//0x40212446    function getBytes() returns(bytes){        return bytes(name);    }      ...

2019-01-04 07:36:08 149

原创 solidity学习笔记(十四)string转化bytes

pragma solidity ^0.4.6;contract TestString2Bytes{    string public _name="xiaowu";        function getLength() returns(uint){        return bytes(_name).length;    }        function setFirstBy...

2019-01-04 07:35:55 821

原创 solidity学习笔记(十三)动态大小字节数组

不知道大小时使用string或者bytes在知道大小时使用bytes1-bytes32,降低存储成本 

2019-01-04 07:35:45 60

原创 solidity学习笔记(十二)固定长度字节数组

一个字节八位pragma solidity ^0.4.6;contract TestFixBytes{    // 一个字节 八位 固定大小数组内容和长度都不可修改     bytes9 a = 0x6c111122ab9;//    bytes1 b = 0x69;//105    function test1() constant returns(bool){         r...

2018-12-31 16:41:44 90

原创 solidity学习笔记(十一)string

string使用“”或者‘’表示,是可变长度的字节数组一个汉字对应三个字节数据或者字符对应一个字节不能通过length获取长度或者修改,需要先转化为数组再做修改pragma solidity ^0.4.6;contract TestString{    string _name;    function TestString() {        _name = "xiao...

2018-12-31 15:25:26 98

原创 solidity学习笔记(十)sender转账

transfer转账余额不足,会异常sender转账余额不足返回false使用send要检查转账结果,深度限制1024所以使用tansfer更安全pragma solidity ^0.4.6;contract TestSender{    function deposit() payable returns(bool) {        // 消息发送人的地址       ...

2018-12-31 15:15:24 191

原创 solidity学习笔记(九)transfer转账

转账方法需要申明payabletransfer转账pragma solidity ^0.4.6;contract TestTransaction{    function deposit() payable {        address acc = 0x15Ee9687310EF47b59F2e6060d3b7AD90e6a09E5;        acc.transfer(...

2018-12-31 11:37:57 1194

原创 solidity学习笔记(八)钱包地址余额查看

address.balancepragma solidity ^0.4.6;contract TestBalance{    function getBalance(address addr) constant returns(uint){        return addr.balance;    }        function getCurrentBalance() co...

2018-12-31 11:12:49 694

原创 solidity学习笔记(七)地址支持的运算符

支持<= ,<,==,>=,>pragma solidity ^0.4.6;contract TestYunSun{    address address1=0x692a70d2e424a56d2c6c27aa97d1a86395877b3a;    address address2=0x692a70d2e424a56d2c6c27aa97d1a86395877b...

2018-12-31 11:03:46 58

原创 solidity学习笔记(六)this和指针

this指的是当前的合约对象

2018-12-31 10:55:25 378

原创 solidity学习笔记(五)sender

msg.sender 消息的发送者,对应当前交易里面的from pragma solidity ^0.4.6;contract TestMsg{ address public _owner; uint public _number; function TestMsg(){ _owner = msg.sender; _nu...

2018-12-31 10:41:16 53

原创 solidity学习笔记(四)地址

地址20字节,每个字节8位地址是40个十六进制字符,以0x开头地址二进制为160位,可以用uint160存储二进制,比如F=15=1111二进制pragma solidity ^0.4.6;contract Test{ address _owner; uint160 _ownerUnit160; function Test(){ //_o...

2018-12-31 10:28:17 53

原创 solidity学习笔记(三)参数传递

值类型:布尔boolean、  整型Integer、 地址address、  定长字节数组byte、枚举 Enums 、函数 指针类型:不定长字节数组 bytes 、字符串string 、数组array 、结构体Struts参数类型:stroage和memory 方法形参默认是memory(值传递),可使用stroage(指针传递),在使用stroage修饰形参时方法必须是intern...

2018-12-31 09:42:51 502

原创 solidity学习笔记(二)布尔型

 boool型很好理解,会简单运算即可pragma solidity ^0.4.4;contract Bool {    bool _f;       constructor() public{       _f = false;   }       function testB() constant public returns(bool){       if(!_f){...

2018-12-28 07:32:04 37

转载 以太坊原理分析(二)以太坊区块结构和账户体系

1、引言       区块链的本质是一个分布式的数据库。因此不同时刻的用户数据的写入对应着不同的状态。比特币使用UTXO来表示状态的转移,而以太坊使用账来表示状态的转移。2、账户       以太坊中存在两种账户,分别是外部账户和合约账户。外部账户EOA:一般自然人分配的账户,被私钥控制且没有任何代码与之关联。合约账户CA:给智能合约分配的账户,被合约代码控制且有代码与之关联。...

2018-12-27 11:01:24 503

转载 以太坊原理分析(一)以太坊工作(交易)原理

简介不管你们知不知道以太坊(Ethereum blockchain)是什么,但是你们大概都听说过以太坊。最近在新闻里出现过很多次,包括一些专业杂志的封面,但是如果你们对以太坊到底是什么没有一个基本的了解的话,看这些文章就会感觉跟看天书一样。 所以,什么是以太坊?本质上,就是一个保存数字交易永久记录的公共数据库。重要的是,这个数据库不需要任何中央权威机构来维持和保护它。相反的它以一个“无信任”的...

2018-12-25 15:25:50 871

原创 solidity学习笔记(一)类

 solidity语言类java,面向对象,相同的特性和方法抽象出来,放在一起,简单的类如下:// constaract 合约,相当于class ConstaractDemo extend Constractcontract ContractDemo { uint public _age; string _name; address _owner; ...

2018-12-25 14:42:46 75 1

原创 比特币原理分析(三)布隆过滤器在比特币中的应用

布隆过滤器在比特币中的应用比特币中布隆过滤器是在BIP-0037中提到。下面我们通过“比特币钱包如何知道有多少钱”的问题来介绍布隆过滤器在比特币中的应用。这个问题其实就是“比特币钱包如何知道有多少UTXO比特币网络中主要有两种节点类型:全节点:存放所有区块数据和交易 SPV节点:只存放区块头(Block Header)我们假设,比特币钱包最开始值存储了私钥,没有任何其他数据。那么它...

2018-12-04 10:58:38 321

转载 比特币原理分析(二)如何证明交易的真实性

如何证明交易的真实性?比特币网络中的交易,只有已经被记录到区块链,并且已经得到6个确认的,才被认为是真实的,只有基于这些真实交易发起的新交易(输入与输出的概念),才是合法的。我们询问一个交易是否真实,往往基于以下前提:我们在问一个交易是否已被记录到区块链中 而且这个交易所在的区块链是最长的哪一条,没有在分叉链上 当每个节点接收到一条交易广播时,我们要查询作为一笔新交易的输入的真实性...

2018-12-03 17:13:09 723

原创 比特币原理分析(一)公钥、私钥以及币地址的由来

前言:    讨论这个话题前,先普及基本知识        1.对称加密是加密和解密的密钥相同(DES等),非对称是加密和解密的密钥不同(RSA等)    2.哈希算任意长度的信息转化为固定长度的值,且不可逆(MD5)    3.数字签名信息后面追加一段hash值,和信息一起发送出去,证明信息没有被修改    4.公钥和私钥是成对存在的    5.公钥加密私钥解密,私钥签名公钥验签...

2018-12-03 15:08:00 282

转载 fabric学习纪要(一) 1.0.0环境搭建(各种环境问题,弄了两周才跑起来)

fabric 环境问题很多,弄了好久,按步骤来这篇文章可行,记录下还有一点心得:如果你遇到问题,实在解决不了,环境初始化重来,fabric要求比较干净的环境一、装GO语言下载最新版的go打开Terminal,输入命令(以下命令都是以root管理员的角色进行的)su输入密码:*****wget https://storage.googleapis.com/golang/go1...

2018-12-03 10:28:13 175

原创 Fork/Join框架

核心算法是双端队列和工作密取public class CountTask extends RecursiveTask<Integer>{ /** * */ private static final long serialVersionUID = -6510809705660346699L; private static final...

2018-08-23 15:15:39 43

原创 单例模式与线程安全

package com.thinkgem.jeesite.test;import java.util.concurrent.CountDownLatch;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors; */public class SingletonTest ...

2018-08-16 15:13:24 64

原创 怎么设计一个好的接口(一)

1.要找到相同的点,不同的点,不变的点,变化的点,相同的不变的抽象出来,变化的单独处理

2018-08-15 17:56:42 189

原创 this关键字理解

代码:public class Test implements Runnable { private int b = 100; public static void main(String[] args) throws InterruptedException { Test task = new Test(); Thread thread =...

2018-08-15 17:48:07 74

转载 对static关键字的理解

static关键字修饰的方法和变量是全局唯一的,不会因为new而新创建一个,jvm类加载的时,为静态的提前初始化:Class文件中的“类”从加载到JVM内存中,到卸载出内存过程有七个生命周期阶段。类加载机制包括了前五个阶段。如下图所示:其中,加载、验证、准备、初始化、卸载的开始顺序是确定的,注意,只是按顺序开始,进行与结束的顺序并不一定。解析阶段可能在初始化之后开始。 另外...

2018-08-15 17:08:47 913

原创 关于面向对象的理解(二)

面向对象是将相同的特征的东西抽象出作为有个对象,这样做是为了使用者更好的跟方便的使用,便于使用者理解维护,面向对象是一种指导思想。之所以称为高级语言,就是对使用者友好。java是面向对象设计的,你写出来的代码一定面向对象了吗?js不是面向对象设计的,你写出的代码一定不是面向对象的吗?不是,语言只是工具,只要你熟悉了js语法,使用面向对象思想,你可写出很漂亮的代码总结:学习一门语言,...

2018-08-09 11:13:43 42

原创 业务功能设计时关于扩展性和最小功能原则的思考

最近遇到一个迷惑,产品的需求是已配货,已发货,已签收的订单可以售后退款,在实现接口的时候,我做了check,只能是已配货,已发货,已签收的才能退款,后来又在思考,这样写死,shib是不是没有扩展性,虽然符合了最小功能设计了,但是有一天产品说,配货中的也能退货,是不是就是需求修改代码,扩展性就不好了?是不是把这个可以退货的状态放在字典里面。找我们架构师说了这事,架构给出的是:这个变化的概率有多大...

2018-08-08 15:35:18 207

原创 关于面向对象的理解

今天看同事代码,发现在做一个订单状态记录查询的功能时,将功能的做到支付流水的业务模块中去了,问理由是:就一个查询,单独建一个类,还不如放一起,看似有理,其实:1.违背了面向对象的思想,对具有相同特征的事物抽象出一个是模型,并定义在这个模型上的操作,也就要求属于一个对象的东西要在一起2.违背接口设计原则,单一职责 ...

2018-08-08 15:22:18 49

原创 ReentrantLock的lockInterruptibly和lock响应中断区别以及常见的锁汇总

java.util.concurrent.locks.ReentrantLock1.lock.lockInterruptibly();立即响应中断:public class TestLockInterruptibly {    static ReentrantLock lock = new ReentrantLock();    public static void main(St...

2018-08-07 16:44:49 3744

提示
确定要删除当前文章?
取消 删除