0%

什么是MVCC

MVCC全称为Multi-Version Concurrency Control,即多版本并发控制。多版本并发控制,提供并发访问数据库时,对事务内读取的到的内存做处理,用来避免写操作堵塞读操作的并发问题。

举个例子,程序员A正在读取数据库中的某些内容,而程序员B正在给这些内容做修改(假设是在一个事务内修改,大概持续10s左右),A在这10s内 则可能看到一个不一致的数据,在B没有提交前,如何让A能够一直读到的数据都是一致的呢?

Read more »

背景

最近开发的时候,需要使用MySQL的数据库,在使用group by的时候,生产环境使用的是5.6版本,但是开发机上面装的docker版本是5.7,在调用接口的时候,发现报错了,通过查询对应的资料,是因为mysql 5.7版本,默认开启了ONLY_FULL_GROUP_BY,所以在使用group by的时候,不能存在多余的字段信息。

Read more »

发布智能合约指的就是把智能合约发布到以太坊公链上。但是如果一旦发布到了公链上,那么智能合约就不能再更改了,这里值的更改,含义是修改已经发布的智能合约的代码。所以,这是一个不可逆的过程。

一般来说,编写完智能合约,会先发布到以太坊测试网络的公链上,经过反复的测试,然后再发布到以太坊公链上。

Read more »

上一节实现了智能合约的基本编写以及solidity的基本的函数修饰关键字。这一节开始进行合约的授权和余额的转账。

代币授权

首先,代币的授权与余额是一个map,对应key是以太坊钱包的地址,value是对应的授权额度,查询的时间复杂度是O(1),查询效率会比较高。现在需要实现的是代币余额查询(balanceOf),代币的额度申请(approve)和授权额度查询(allowance)这三个函数。

Read more »

以太坊发布的大多数代币的智能合约,都是参照了“ERC20”的标准协议,本节也主要是根据“ERC20”开发一份代币的智能合约,根据上一节的步骤,提前创建一个FeilongToken.sol的文件

Read more »

智能合约

说到以太坊开发,就肯定绕不开智能合约。

智能合约,其实是一种协议,就相当于是一种规则,他规定了交易、转账等。智能合约也可以理解成是“一段代码”,开发在通过执行“这段代码”,获得一个结果,这个结果可能是转账结果,或者其他等等。

在开发以太坊的时候,开发者需要先编写智能合约,然后将智能合约部署到对应的以太坊节点,以太坊被部署到不同的服务器上,节点共同维护以太坊公链,调用者通过调用以太坊接口,访问智能合约,获得对应的结果。

Read more »

安装devtools报错

想要开发以太坊,就需要开发智能合约,需要安装aligen,Mac版本需要通过安装devtools的方式安装abigen

1
2
3
4
5
6
$ make devtools
env GOBIN= go install golang.org/x/tools/cmd/stringer@latest
env GOBIN= go install github.com/kevinburke/go-bindata/go-bindata@latest
go: downloading github.com/kevinburke/go-bindata v3.11.0

go install github.com/kevinburke/go-bindata/go-bindata@latest: zip for github.com/kevinburke/go-bindata@v3.11.0 has unexpected file github.com/kevinburke/go-bindata@v0.0.0-20180804232615-06af60a4461b/.gitignore
Read more »

今天在更新brew update的时候,提示了报错信息:

1
2
3
4
5
6
7
8
9
10
11
$ brew update
fatal: It seems that there is already a rebase-apply directory, and
I wonder if you are in the middle of another rebase. If that is the
case, please try
git rebase (--continue --abort --skip)
If that is not the case, please
rm -fr ".git/rebase-apply"
and run me again. I am stopping in case you still have something
valuable there.

Already up-to-date.
Read more »

程序员的苦恼

作为程序员,我们经常会面临一个比较痛苦的事情,那就是环境版本的问题。以PHP为例,有些框架或者工具,会对PHP版本有不同的要求。举个例子,我在公司开发使用的是PHP-7.3版本。但是周末在家,想做些其他有意思的事情,这个时候,发现有些框架或者工具的语言要求是>=PHP-7.0和<PHP-7.3。

有些同学会说,用docker啊!

没错,docker可以解决,但是有没有更加方便的工具来解决PHP版本切换的问题呢?当然有,那就是phpbrew!

Read more »

疑问

有些事情其实是比较让我感到疑惑的,就是关于使用empty和count函数,对数组判空,哪个性能会更好?

一般来说,我们对数组判空,常用的就是empty和count。即:

1
2
3
4
5
6
7
if (empty($arr)) {

}

if (count($arr) == 0) {

}
Read more »