自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Liu-Cheng Xu

温故知新

  • 博客(118)
  • 资源 (8)
  • 收藏
  • 关注

原创 区块链系列教程

区块链教程blockchain-tutorial 是我写的一个区块链教程,最初译自 Jeiwan/blockchain_go 的系列文章,这个系列主要针对 Bitcoin。随着对区块链的认识不断深入,我后续计划加入很多其他内容,比如 Ethereum,Monero,Polkadot,Iota,Cardano,Orchid 等等我感兴趣的项目。当然了,比不上 Mastering Bitcoin,...

2018-03-01 10:35:15 9553 1

翻译 用 Go 构建一个区块链 -- Part 7: 网络

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。引言到目前为止,我们所构建的原型已经具备了区块链所有的关键特性:匿名,安全,随机生成的地址;区块链数据存储;工作量证明系统;可靠地存储交易。尽管这些

2017-11-14 20:31:01 1741

翻译 用 Go 构建一个区块链 -- Part 6: 交易(2)

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。引言在这个系列文章的一开始,我们就提到了,区块链是一个分布式数据库。不过在之前的文章中,我们选择性地跳过了“分布式”这个部分,而是将注意力都放到了“

2017-11-06 21:22:55 6176 6

翻译 用 Go 构建一个区块链 -- Part 5: 地址

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。引言在上一篇文章中,我们已经初步实现了交易。相信你应该了解了交易中的一些天然属性,这些属性没有丝毫“个人”色彩的存在:在比特币中,没有用户账户,不需

2017-10-24 09:11:57 1925

翻译 用 Go 构建一个区块链 -- Part 4: 交易(1)

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。引言交易(transaction)是比特币的核心所在,而区块链的唯一目的,也正是为了能够安全可靠地存储交易。在区块链中,交易一旦被创建,就没有任何人

2017-10-14 19:32:52 3937 2

翻译 用 Go 构建一个区块链 -- Part 3: 持久化和命令行接口

引言到目前为止,我们已经构建了一个有工作量证明机制的区块链。有了工作量证明,挖矿也就有了着落。虽然目前的实现离一个有着完整功能的区块链越来越近了,但是它仍然缺少了一些重要的特性。在今天的内容中,我们会将区块链持久化到一个数据库中,然后会提供一个简单的命令行接口,用来完成一些与区块链的交互操作。本质上,区块链是一个分布式数据库,不过,我们暂时先忽略 “分布式” 这个部分,仅专注于 “存储” 这一点。选

2017-10-04 09:33:00 2461

翻译 用 Go 构建一个区块链 -- Part 2: 工作量证明

在 前面一文 中,我们构造了一个非常简单的数据结构,这个数据结构也是整个区块链数据库的核心。目前所完成的区块链原型,已经可以通过链式关系把区块相互关联起来:每个块都被连接到前一个块。但是,我们实现的区块链有一个巨大的缺点:向链中加入区块太容易和廉价了。而区块链和比特币的其中一个核心就是,要想加入新的区块,必须先完成一些非常困难的工作。在本文,我们将会解决这个缺点。工作量证明区块链的一个关键点就是,一

2017-09-26 17:16:03 3137

翻译 用 Go 构建一个区块链 ---- Part 1: 基本原型

引言区块链是 21 世纪最具革命性的技术之一,它仍然处于不断成长的阶段,而且还有很多潜力尚未显现出来。 本质上,区块链只是一个分布式数据库而已。 不过,使它独一无二的是它是一个公开的数据库,而不是一个私人数据库,也就是说,每个使用它的人都有一个完整或部分的副本。 只有经过其他数据库管理员的同意,才能向数据库中添加新的记录。 此外,正是区块链,才使得加密货币和智能合约成为现实。 在本系列文章中,我们将

2017-09-23 22:03:01 5412

原创 LaTeX 实战经验:新手须知

前言: 以下内容皆为经验之谈。资历尚浅,能力有限,您如果有更好的方案选择,期待您的分享!每个功能或是实现的每个效果,在这里可能只是一个起点,更多内容的实现想法也都是类似的,坚持使用自会贯通。如果还不知道LaTeX,看这里: LaTeX从零开始快速入门.配置LaTeX使用环境更多内容可以看这里:配置LaTeX使用环境结构化LaTeX工程更多内容可以看这里:如何有效组织LaTeX模仿专业的学术论文更多

2016-04-25 19:18:37 53481 4

原创 vim-clap: 高性能的现代化模糊查找插件 -- v0.6 更新

今天分享一下我至今为止写的最满意的一个 Vim 插件:https://github.com/liuchengxu/vim-clap, 它是一个用于模糊查找和搜索的 Vim 插件,在同类插件中最早同时支持 neovim 的floating_win和 vim 的popup, 这也是我造这个轮子的初衷之一。在早期,作为一个纯 vimscript 实现的 Vim 插件,vim-clap 在进行大规模搜索...

2020-01-27 13:31:13 4848

原创 vim-clap: 高颜值高性能的通用型模糊查找 Vim/NeoVim 插件

https://github.com/liuchengxu/vim-clap 是一个基于 Vim/NeoVim 最新特性 popup/floating_win 的高颜值高性能模糊查找插件:所谓高颜值,是指基于 popup/floating_win 弹出一个类似 Alfred 的窗口,不再分割(split)窗口,不会扰动当前的窗口布局。自从有了 popup/floating_win 以后,其实...

2020-01-05 12:32:19 4199

原创 使用 neovim 的浮动窗口让你再次爱上 fzf

fzf 是一个非常高效实用且美观的命令行工具,并且配置有对应的 vim 插件 fzf.vim, 相信很多人都用过。这里就不在赘述,如果你还没有用过,很推荐一试。自从 neovim 的浮动窗口 PR https://github.com/neovim/neovim/pull/6619 被合到 master 以后,很多插件都利用了这个特性实现了很多很酷的功能,比如 coc.nvim,另外 vim-w...

2019-04-13 11:31:32 5374 3

翻译 5 个非常有用的 Rust 小技巧

自从做了 https://github.com/chainx-org/ChainX项目以后,主力语言就转到了 Rust,今天刚好这个文章,比较剪短,跟大家分享一下。在开始之前,跟大家简单介绍 ChainX 项目。ChainX 是一个基于 substrate 专注于区块链资产跨链项目,目前已经实现了 BTC 跨链, 可以在我们的测试网进行充值体验,如何参与测试网请点击这里。我们将会在最近上线主...

2019-03-31 10:13:06 3202

原创 Vim 主题:space-vim-theme -- 支持 dark 和 light 两种背景

自从接触过 spacemacs 以后,就非常喜欢它的主题:spacemacs-theme,后来照葫芦画瓢移植了一个深色背景下的 space-vim-dark。不过用了一段时间以后发现,如果白天光线非常好,使用黑色背景可能会出现反光的情况,所以就基于 vim-colortemplate 重新移植了 spacemacs-theme,这次同时支持深色和浅色背景。按照 vim-colortemplate...

2019-02-02 12:17:18 5494 2

原创 在 Vim 中使用 graphviz.vim 画图

本文主要介绍 graphviz.vim, fork 自 wmgraphviz.vim,但是除了复用补全数据,我几乎重写了所有内容,并做了很多改进。可能很多人没用过 graphviz,它是一个开源的图可视化工具,使用 DOT 语言进行绘制,优点是可以自动布局,尤其适用于复杂的流程图,结构图等等。官方有很多示例,使用时也可以参考一些其他的优秀案例,比如:本文并不会对 graphviz 本身做太多...

2019-01-13 10:37:03 1832

原创 Boot Camp 安装失败: 拷贝 Windows 文件时出错

出于某些原因需要在 mac 上装个 Windows,很自然地就会想到用 Boot Camp 安装。步骤很简单,先下载 Windows 镜像,然后打开转换助理程序,无脑一路点击继续即可。这里 是官方教程。但是,在安装过程中却出现下面这个错误:Boot Camp 安装失败: 拷贝 Windows 文件时出错一番 Google ,才发现这个问题居然是由于下载的 windows 镜像超过了 4 ...

2018-12-15 08:50:53 78982 3

原创 Vim 插件: vim-which-key

从 emacs-which-key 到 vim-which-keyemacs 用户相信应该对于 emacs-which-key 很熟悉,如果你在一定时间没有输入下一个按键,它会自动显示接下来可能的所有快捷键映射,这对于常常需要多组合键的 emacs 来说很是方便。我在一开始使用 spacemacs 的时候,就被这个功能所吸引。不过一直以来 vim 中都缺少像 emacs-which-key 这...

2018-10-12 13:30:47 2080

原创 区块链技术阅读列表

有很多值得学习的区块链技术资源,在这里稍微总结了一下。因为不想再多一个 markdown repo,所以把它放在了 blockchain-tutorial 的 wiki 。目前只有英文链接,实际上有很多内容已经有了中文翻译,有时间我会慢慢补充进来,也欢迎大家贡献,编辑 wiki 即可。熊市更是积累技术的时候,代码强的可以直接从源码学习,GitHub 上项目很多, 从 Bitcoin, Ethe...

2018-08-18 09:45:21 1349

原创 如何让 Vim 美观又实用(1)

我学习计算机不久就开始用了 vim,到现在也三四年了,且算是对 vim 有了一定的控制力。在这里分享一下使用过程中的一些“心路历程”,说实话,要留意的小地方有很多,但是由于很多不可抗(懒)因素,本系列并不保证还有后续 :)以下内容适用于对 vim 有一定使用经验的用户,相关的具体配置参见 space-vim。有些内容我虽然给出了链接,但是可能并没有完整贴出代码,需要你自行查找,理解并抽取整合对...

2018-08-11 09:03:53 3566

翻译 PoW 本质上是个去中心化的时钟

原文:Blockchain Proof-of-Work Is a Decentralized Clock 原文从区块链如何保持交易有序的基本问题出发,对该问题进行了详细阐述,并提出 PoW 本质上是实现了一个“时钟”的观点,这个时钟的一个滴答对应的就是 PoW 算出一次的解。本文解释了比特币 PoW(Proof-of-Work, 工作量证明) 的关键要素,尤其对 PoW 来说...

2018-04-22 15:40:18 737 1

翻译 DPOS 共识算法 - 缺失的白皮书

原文:https://steemit.com/dpos/@dantheman/dpos-consensus-algorithm-this-missing-white-paper 网络上已经有了好几个版本的译文,可能是原文写的没那么“平易近人”,这些译文我都看得不太懂 :)这篇“缺失的白皮书”是对委托权益证明(Delegated Proof of Stake, DPOS)的...

2018-03-21 22:53:08 903

原创 用 Parity 发送 ERC20 Token

Parity 是以太坊的 Rust 实现,它也内置了一个钱包。用过 Parity 的人都知道,用它发送 ETH 非常简单,点几下就行。但是可能不少人还不知道如何发送 ETH 以外的 ERC20 Token,或者说不知道怎么发送钱包里面没有显示出来的 token。一个以太坊地址上实际上可能有很多 token,因为币圈链圈天上掉馅饼的事情时有发生,不知道什么时候就会有 token 空投到你的地址。...

2018-02-12 10:21:25 964

翻译 为什么去中心化兑换协议很重要

原文:https://medium.com/@FEhrsam/why-decentralized-exchange-protocols-matter-58fb5e08b320今天,去中心化兑换(decentralized exchange)仍处于早期,但是几年后,它很可能会是区块链生态中不可或缺的一环。首先,去中心化兑换与中心化兑换协议的区别:去中心化兑换(decentralii

2018-01-15 13:35:23 1958

翻译 以太坊分片:overview and finality

在 Ethereum Casper 101[1] 中,Jon Choi 对 Casper 做了一个很棒很清晰的综述,并解释了为什么显式最终确定性(explicit finality)对于可扩展性(scalability)大有裨益。本文旨在给出一个以太坊分片的设计概览,并阐释显式最终确定性如何有助于区块链分片。为了完全理解以太坊分片机制提案的技术规范,我强烈推荐深入研究 Vitalik 写的 sha

2017-12-28 21:31:35 1702

翻译 STARKs, Part II: Thank Goodness It's FRI-day

在本系列的上一篇文章中,我们谈到了,如何能够做出一些非常有意思且简洁的计算证明,比如通过利用多项式复合和除法技术,证明你算出了第一百万个斐波那契数。但是,它依托于一个非常重要的元素:给定一个集合,里面有很多的点,你必须能够证明集合里的大部分点都在同一个低次多项式上(译者注:本文所译的多项式度数或次数,皆对应 degree 一词)。这个叫做“低次测试”的问题,可能是协议中最为复杂的部分。首先,再次回顾

2017-12-23 09:45:10 627

原创 卡尔达诺入门必备

本文为卡尔达诺(Cardano)的入门读物,主要内容为卡尔达诺的整个项目概览:卡尔达诺是什么,为什么,有何独特之处,以及团队组织。ADA 是什么,乌洛波罗斯(Ouroboros)共识。卡尔达诺是什么,为什么卡尔达诺是一个去中心化的公有区块链和加密货币项目,它目前正在开发一个智能合约平台,该平台旨在提供更多超越以往任何协议的高级功能。它是第一个衍生自科学哲学的区块链平台,主要以研究驱动,开发团队

2017-12-17 20:02:34 4698

原创 书单分享

了解一个新的领域,其中一个方法就是大量的阅读,进而产生一个基本的认识。之前研究过推荐系统,机器学习,一路走来也积累了一些书单,丢失了一些,如今还剩这些。在此分享给大家,里面有不少有关机器学习和数据挖掘,还有 Python,Spark,设计类等等。Theory 部分大部分是经典书籍,对于发论文可能显性的帮助没那么大,属于“内功”。书单 GitHub 地址:books我目前专注的是区块链,blockch

2017-12-07 19:32:48 856 1

原创 使用 Vim 的 jump list 看代码

完整 Vim 配置见:space-vimjumplistVim 可以记录我们最近访问的位置(location)。每个位置(position)(position 包括了文件名,列号,行号)会被一个 jump list (跳转表)中,每个窗口(window)都有一个单独的 jump list,它可以记录最近 100 个访问的位置。像搜索(search), 替换(substitue)和标记(mark)的命

2017-11-18 11:33:01 1458

翻译 STARKs, Part I: 多项式证明

相信很多人都听过 ZK-SNARKS,一个通用而简洁的零知识证明技术,从可验证计算到需要隐私保护的加密货币,它可以被应用于各类场景。不过,可能你还不知道现在 ZK-SNARKs 有了一个新兄弟:ZK-STARKs. 这里的 T 表示 “transparent”,“透明的”,ZK-STARKs 解决了 ZK-SNARKs 的一个主要的缺点,即 ZK-SNARKs 依赖于“可信启动(trusted se

2017-11-12 13:07:19 2111

原创 怎么写一个好的 Git commit message

网络上很多关于 commit message 的想法都来源于 tpope,在他看来,一个好的 Git commit messge 应该是这样的: Capitalized, short (50 chars or less) summary More detailed explanatory text, if necessary. Wrap it to about 72 chara

2017-10-10 08:46:33 5812

翻译 在 Golang 中开发中使用 Makefile

使用 Golang 已经有一阵了,在 Golang 的开发过程中,我已经习惯于不断重复地手动执行 go build 和 go test 这两个命令. 不过,现在我已经摆脱了这个习惯。如果只用到了不带参数的简单命令,直接这么操作可能并不可怕。但是在一些复杂的任务中,如果依旧是手动执行 go build 和 go test ,就可能会成为一个让人头疼的事情。我们可以通过其他方式解决这个问题。比如,可以

2017-09-23 10:45:20 8342

原创 使用 Shell 脚本进行 Hadoop Spark 集群的批量安装

虽然有一些自动化安装的工具,但是功能越多,越专业的工具,可能也需要越高的学习成本,而我们并非专业运维,但是又必须做这些事情的话,不妨选择用 Shell 脚本来完成集群的安装。当然了,现在也有很多使用 docker 的做法,安装与部署也非常方便。整个过程其实很简单,就是对安装过程中的一些手动操作使用 Shell 脚本进行替代。对脚本比较熟悉的话,应该很容易看懂。推荐一个网站,explainshell,

2017-08-30 21:52:49 1096

翻译 可移植的 Makefile 教程

在我写 Makefile 的头 10 年里,我养成了一个非常不好的习惯 – 完全严格使用 GNU Make 的扩展名。过去我并不知道, GNU Make 与 POSIX 所保证的可移植特性之间的区别与联系。通常情况,它并不十分重要,但是当在非 Linux 系统上进行构建时,比如在各种 BSD 系统上,就会变成一件麻烦事儿。我不得不指定安装 GNU Make,然后在心里记住不要使用系统自带的 ma

2017-08-23 19:21:03 1094

翻译 Tendermint: 共识概览

Tendermint 是一个易于理解,大部分操作为异步的 BFT 共识协议。下图是一个简单的状态机,它展示了协议遵循的规则:协议中的参与者叫着 “验证人”(validator)。他们轮流对交易区块进行提议,并对这些区块进行投票。区块会被提交到链上,每一个块占据一个“高度”(height)。提交块可能会失败,如果失败,协议就会开始下一轮的提交,并且一个新的验证人会继续提交那个高度的区块。要想成功提交一

2017-08-15 19:20:27 8859

翻译 编译器入门

编译器(compiler)就是一个翻译其他程序的程序而已。传统的编译器将源代码翻译为计算机能够理解的可执行机器代码(有一些编译器将源代码翻译为另一种编程语言。这些编译器叫做从源码到源码的翻译器,source-to-source translators or transpilers)。LLVM 是一个广泛使用的编译器项目,它包含了许多模块化的编译器工具。传统编译器涉及包含了三个部分:前端(front

2017-08-14 22:21:46 7259

翻译 Tendermint: 什么是 ABCI (应用区块链接口)

区块链应用接口(Application BlockChain Interface,ABCI)允许应用的拜占庭容错复制可以由任意一种编程语言编写。Motivation至今为止,所有的区块链“栈”(比如,比特币)都有着大一统的设计。这就是说,每个区块链栈都是一个单一的程序,这个程序处理了去中心化账本的所有事务。它还包括了 P2P 连接,交易的“内存池”广播,在最新块上的共识,账户余额,图灵完备的合约,用

2017-08-13 15:01:48 8419

原创 设置 jupyter notebook 可远程访问

首先是要 安装 Anaconda 。默认情况下,安装好 Anaconda 后打开 jupyter notebook, 访问本地 localhost:8888 即可。但是如果要访问另一台机器,比如远端服务器上的 notebook, 即默认是不支持 172.104.105.119:8888 这样的访问,需要额外配置。设置 jupyter notebook 可远程访问的官方指南在这里 .1. 生成一个

2017-08-09 17:08:08 80979 11

翻译 Tendermint 与其他技术的比较

Tendermint 大体上与两类软件很类似。第一类包含了分布式的键值存储,比如 Zookeeper,etcd 和 consul,它们都使用了非拜占庭容错共识。第二类就是 “区块链技术”,它既包括了像比特币和以太坊这样的加密货币,也包括了像 Hyperledger Burrow 这样的分布式账本设计。Zookeeper, etcd, consulZookeeper,etcd 和 consul 都是在

2017-08-07 09:52:05 1123

翻译 什么是 Tendermint?

Tenermint 是一个软件,用于在多台机器安全一致地复制一个应用。所谓安全,指的是即使有多达 1/3 的机器出现任意故障的情况下, Tendermint 仍然能够正常工作。所谓一致,指的是每一个正常工作的机器都会有着同样的交易日志,计算相同的状态。安全一致的复制是分布式系统中一个至关重要的问题:从货币到选举,到基础设施规划,它在广泛应用的容错中承担了一个极其重要的角色。能够容忍机器以任何一种,甚

2017-08-06 18:13:05 2979

原创 在 Shell 脚本中调用另一个 Shell 脚本的三种方式

先来说一下主要以下有几种方式:fork: path/to/foo.shexec: exec path/to/foo.shsource: source path/to/foo.shforkfork 是最普通的, 就是直接在脚本里面用 path/to/foo.sh 来调用 foo.sh 这个脚本,比如如果是 foo.sh 在当前目录下,就是 ./foo.sh。运行的时候 terminal 会

2017-07-28 23:38:09 101302 7

机器学习实战.mobi

mobi版本,使用kindle软件看效果很好,之前电子书打折的时候买的,看得很清晰。

2016-01-26

统计学习方法-李航

统计学习方法-李航,是一本不错的入门的机器学习或者是统计相关的书,非常适合经验没那么丰富的人。

2015-11-10

Kali渗透测试技术实战

Kali渗透测试技术实战,对于有兴趣的人来说是个不错的选择。

2015-11-10

LaTex入门与提高 第二版

对于一些专业人士来说,LaTeX是不可或缺的工具。这本书是LaTeX的入门与提高不错的教程。

2015-09-25

操作系统设计与实现 第3版 上

主要的研究对象为minix3。minix是一种Unix操作系统,不过更小巧,常用来当做研究操作系统的Unix系统。

2015-08-27

python参考手册(第4版)

Python参考手册(第4版),比较适合Python的初学者

2015-08-02

深度优先搜索

数据结构,深度优先搜索,有关键注释,使用cpp编程实现。

2015-06-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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