区块链 UTXO 模型

刚刚接触比特币的朋友经常会遇到这个词,官方解释是未经使用的交易输出。只从这个定义上,你能明白是什么意思吗?反正我是困惑了很久。

我们常规的理解是,账户,余额,支出,收入。比如,银行账户,我们有1万元,收入1万,则余额为2万,支出5000,余额为1万5000元。但比特币里实际上是没有账户和余额的概念的。只有一个概念叫utxo,实际上就是你能够支配的,并且还没有被使用的btc,这些btc作为一个整体(无论比特币的数值是多少,都做为一个整体)保存在比特币系统网络里,而且这个utxo能用且只能用一次。

我们可以把utxo类比成支票。支票的数额可以是1元或者1亿元。utxo的数额可以是1聪btc,也可以是1万个btc,但都是一个整体,不可分割。

假设A有一张支票,价值1万元,需要付款给B5000元,那么,B会得到一张5000元的支票,交易费用是100元,作为一张支票给第三方,A自己得到一张支票,价值4900元。原来的1万支票已经使用过,不能再次使用,A,B,第三方分别得到一张新的支票,都是未被使用过的。三个人分别对这三张支票有使用权。

同样的,A有一个utxo,价值1万个btc,需要付款给B5000个btc,那么B会得到一个utxo(价值5000个btc),矿工得到一个utxo(矿工费1btc),A也会得到一个utxo(价值4999btc)。原来的含1万个btc的utxo被系统标记过使用过,任何人不能在使用。而A,B,矿工分别得到一个utxo。他们分别对自己名下的utxo有使用权。

- 阅读剩余部分 -

What advice can you give to new programmers?

1, Write more code, than you are writing today.

2, Write more code, than count of videos you watch on youtube about programming.

3, Don’t watch videos with titles like that “Learn programming in 10 days” (Nobody can learn programming in ten days)

4, Don’t give up. You will fail many times.

5, Learn basics very well, fundamentals are everything.

6, Ask Questions !

7, Ask more questions

8, Learn problem solving, programming is not just typing.

9, Read other developers code. (You can’t write your own book, if you haven’t read any book before)

10, Don’t learn php.

48条高效率的PHP优化写法

1 字符串
1.1 少用正则表达式

能用PHP内部字符串操作函数的情况下,尽量用他们,不要用正则表达式, 因为其效率高于正则。

没得说,正则最耗性能。

str_replace函数要比preg_replace快得多,strtr函数又比str_replace来得快。

有没有你漏掉的好用的函数?

例如:strpbrk()、strncasecmp()、strpos()、strrpos()、stripos()、strripos()。

- 阅读剩余部分 -

数据库并发操作会带来哪些问题及原因

(1)丢失更新

    当两个或多个事物读入同一数据并修改,会发生丢失更新问题,即后一个事物更新的结果被前一事务所做更新覆盖 即当事务A和B同事进行时,事务A对数据已经改变但并未提交时B又对同一数据进行了修改(注意此时数据是A还未提交改变的数据),到时A做的数据改动丢失了

(2)不可重复读

  当两个数据读取某个数据后,另一事务执行了对该数据的更新,当前一事务再次读取该数据(希望与第一次读取的是相同的值)时,得到的数据与前一次的不一样,这是由于第一次读取数据后,事务B对其做了修改,导致再次读取数据时与第一次读取的数据不想同

(3)读‘脏数据’

 当一个事务修改某个数据后,另一事务对该数据进行了读取,由于某种原因前一事务撤销了对改数据的修改,即将修改过的数据恢复原值,那么后一事务读到的数据与数据可得不一致,称之为读脏数据

注意:还有一个叫“幽灵数据” 幽灵数据与脏数据类似,不过幽灵数据是指事务提交之后读到的数据,但是在读取之后又进行了对前一事务的恢复,而脏数据是指并未提交前读取的数据

数据库并发的五个问题以及四级封锁协议与事务隔离的四个级别

五类并发问题

丢失更新(第一类丢失更新)

撤销一个事务时,把其他事务已提交的更新数据覆盖(A和B事务并发执行,A事务执行更新后,提交;B事务在A事务更新后,B事务结束前也做了对该行数据的更新操作,然后回滚,则两次更新操作都丢失了)。这种并发问题是由于完全没有隔离事务造成的。只要设置隔离级别,数据库就能保证此类问题不发生。

- 阅读剩余部分 -