用Python从零开始创建区块链
本文主要内容翻译自Learn Blockchains by Building One
作者认为最快的学习区块链的方式是自己创建一个,本文就跟随作者用Python来创建一个区块链。
对数字货币的崛起感到新奇的我们,并且想知道其背后的技术——区块链是怎样实现的。
但是完全搞懂区块链并非易事,我喜欢在实践中学习,通过写代码来学习技术会掌握得更牢固。通过构建一个区块链可以加深对区块链的理解。
准备工作本文要求读者对Python有基本的理解,能读写基本的Python,并且需要对HTTP请求有基本的了解。
我们知道区块链是由区块的记录构成的不可变、有序的链结构,记录可以是交易、文件或任何你想要的数据,重要的是它们是通过哈希值(hashes)链接起来的。
如果你还不是很了解哈希,可以查看这篇文章
环境准备环境准备,确保已经安装Python3.6+, pip , Flask, requests安装方法:
1pip install Flask==0.12.2 requests==2.18.4
同时还需要一个HTTP客户端,比如Postman,cURL或其它客户端。
参考源代码
开始创建Blockchai ...
区块链记账原理
区块链(1.0)是一个基于密码学安全的分布式账本,是一个方便验证,不可篡改的账本。通常认为与智能合约相结合的区块链为区块链2.0, 如以太坊是典型的区块链2.0很多人只了解过比特币,不知道区块链,比特币实际是一个使用了区块链技术的应用,只是比特币当前太热,把区块链技术的光芒给掩盖了。区块链才是未来,期望各位开发人员少关心币价,多关心技术。本文将讲解区块链1.0技术是如何实现的。
哈希函数在讲区块链记账之前,先说明一下哈希函数。哈希函数:Hash(原始信息) = 摘要信息原始信息可以是任意的信息, hash之后会得到一个简短的摘要信息
哈希函数有几个特点:
同样的原始信息用同一个哈希函数总能得到相同的摘要信息
原始信息任何微小的变化都会哈希出面目全非的摘要信息
从摘要信息无法逆向推算出原始信息
举例说明:Hash(张三借给李四100万,利息1%,1年后还本息 …..) = AC4635D34DEF账本上记录了AC4635D34DEF这样一条记录。
可以看出哈希函数有4个作用:
简化信息很好理解,哈希后的信息变短了。
标识信息可以使用AC4635D34DEF来标识 ...
比特币是什么
对于比特币也许一千个人有一千种理解。本文作为入门篇(写给完全没有了解过比特币概念的新手,老手可忽略),我尽量用简单易懂的语言来介绍比特币。到底什么是比特币,它到底是怎么运行的呢。
比特币是什么
比特币是一种基于分布式网络的数字货币。比特币系统(广义的比特币)则是用来构建这种数字货币的网络系统,是一个分布式的点对点网络系统。
本文主要讲解狭义的比特币概念。
数字货币是什么凯恩斯在《货币论》上讲,货币可以承载债务,价格的一般等价物。货币的本质是等价物,它可以是任何东西,如:一张纸,一个数字,只要人们认可它的价值。人民币,美元等作为国家信用货币,其价值由国家主权背书。而数字货币是一种不依赖信用和实物的新型货币,它的价值由大家的共识决定。比特币就是一种数字货币。(我们在网银,微信,支付宝的金额,准确来讲,它是信用货币的数字化,不是数字货币,不过央行也在研究比特币,准备发行数字货币)
运行原理大家知道,在银行系统的数据库里记录着跟我们身份id对应的财产,下文称这样的记录为账本,如张三的卡10月1日转入1w, 余额10w。比特币系统也同样有这样的账本,不同银行由单一的组织负责记录,比特币的记账由 ...
如何学习区块链
区块链未来3到5年应该会出现行业井喷式发展,相应所需的人才必定水涨船高,每一个开发人员都不应该错过这样的机会。区块链涉及的技术很多,很多开发人员看了一些资料后,感觉好像懂了,又好像没懂。如何系统的学习区块链技术,是很多想从事区块链开发的程序员的问题,我们来一起讨论下,希望可以帮助更多的人掌握区块链开发技术。
确定方向从事区块链开发也有很多方向,如:区块链应用开发人员、区块链架构师、底层核心开发、共识算法研究等等。
方向不同,需要学习的内容就不一样,如果做基于区块链应用开发,只需要了解一门编程语言(nodejs, Go, Python, C++ 等), 大概了解区块链的原理,不一定要深入,当能理解越深入开发应用就越顺。如果做区块链基础开发,就需要了解加密算法,P2P通信,共识算法等等。
投入时间学习-动手实践由于区块链涉及的技术很多,可以相对各个技术有一个概念了解,再逐步深入原理。
当你在学习了解概念的时候,必定会产生很多疑问, 例如我们经常可以看到一句: 比特币的共识机制是通过工作量证明(POW)来实现的。就有了新疑问:什么是工作量证明,进一步了解,它是通过验证的一个特定结果,就能确认 ...
《机器学习有意思! 03》- 深度学习与卷积神经网络
《机器学习有意思! 03》- 深度学习与卷积神经网络
原文:Machine Learning is Fun! Part 3 – Deep Learning and Convolutional Neural Networks 作者:Adam Geitgey
你是否厌倦了每天被深度学习相关的新闻轰炸却不明所以?此诚求变之机。
这一次我们将学习如何用深度学习来写程序识别图像中的物体。也可以说我们是要解释Google图片搜索背后的黑科技:Google可以通过描述搜索图片——即使图片没有事先打上标签!这是如何实现的?
就像Part 1和Part 2一样,本指南仍然面向所有对机器学习感兴趣却不知如何开始的朋友们。我们的目标是所有人都读得懂——因而势必无法照顾到每个细节。但那又如何呢?只要能让一位读者对ML感兴趣,那就是功德一件了!
深度学习识别物体
产品:每当一名用户拍了照片,APP应该检测他们是否在国家公园……
开发:当然了,不过是简单的GIS查询而已,给我几个小时。
产品:……以及拍的是不是一只鸟。
开发:那我需要一个研究小组和五年时间。
旁白:在计算机科学中,有时很 ...
《机器学习有意思! 02》- 使用机器学习生成超级玛丽关卡
《机器学习有意思! 02》- 使用机器学习生成超级玛丽关卡
原文:Machine Learning is Fun! Part 2 – Using Machine Learning to generate Super Mario Maker levels 作者:Adam Geitgey
在系列的*Part 1*中我们已经讲过,机器学习是用普适的算法从数据中挖掘出有趣的东西,而无需针对具体问题写代码。
这次我们将见识一种普适算法的炫酷表现——创造乱真的游戏关卡。我们将建立一个神经网络,导入已有的超级马里奥数据,然后创造新的关卡。
正如Part 1一样,本系列教程适合所有对机器学习感兴趣、但却不知从何开始的读者。希望所有人都能读懂——所以难免会有些粗疏。不过但凡能把一个人带进ML的坑里,也就算没白写。
猜得更机智在Part 1中,我们写了一个简单的算法来根据房产的属性预测价格,数据如下表所示:
预测函数是这样的:
12345678910111213def estimate_house_sales_price(num_of_bedrooms, sqft, neighborhood): ...
ConstraintLayout 完全解析
ConstraintLayout 完全解析
原文链接:ConstraintLayout 完全解析 快来优化你的布局吧
作者:张鸿洋
一、概述ConstraintLayout出现有一段时间了,不过一直没有特别去关注,也多多少少看了一些文字介绍,多数都是对使用可视化布局拖拽,个人对拖拽一直不看好,直到前段时间看到该文:
解析ConstraintLayout的性能优势
非常详尽的介绍了ConstraintLayout的性能优势,于是乎开始学习了一下ConstraintLayout。
本文的重点不在与可视化界面的学习,而在于如何手写各类约束布局属性。对于可视化界面学习推荐:
Android新特性介绍,ConstraintLayout完全解析
下面开始进入正题,大家都知道,当布局嵌套深入比较深的时候,往往会伴随着一些性能问题。所以很多时候我们建议使用RelativeLayout或者GridLayout来简化掉布局的深度。
而对于简化布局深度,ConstraintLayout几乎可以做到极致,接下来我们通过实例来尽可能将所有常见的属性一步步的介绍清楚。
首先需要引入我们的Constr ...
《机器学习有意思! 01》- 世界上最简单的机器学习入门
《机器学习有意思! 01》- 世界上最简单的机器学习入门
原文:Machine Learning is Fun! Part 1 —— The world’s easiest introduction to Machine Learning 作者:Adam Geitgey
你是否也曾听人们谈起机器学习但是只有一个朦胧的概念?你是否厌倦了在同事的高谈阔论中颓然欲睡?此诚求变之机。
本教程适合所有对机器学习感到好奇,却不知从何下手的读者。我想应该有很多人试着读了维基百科页面,然后愈发迷惘、沉沦,盼望着有人能够提供一个high-level的解释,那你找对地方了。
我们的目标是让所有人都能读懂——这就难免有些泛泛而谈。但是无妨,但凡本文能让一个人真正对机器学习感兴趣,那么目的就算达到了。
什么是机器学习?机器学习的核心思想是创造一种普适的算法,它能从数据中挖掘出有趣的东西,而不需要针对某个问题去写代码。你需要做的只是把数据“投喂”给普适算法,然后它会在数据上建立自己的逻辑。
比如说有一种算法,叫分类算法,它可以把数据分到不同的组别当中。一个识别手写数字的分类算法,也可以用作判断垃圾邮件, ...
区块链技术学习指引
本文为博客文章索引,小白必看。有新文章时会更新本文,建议大家加入收藏夹中,如果你觉得本站不错,欢迎你转发给朋友。
引言给迷失在如何学习区块链技术的同学一个指引,区块链技术是随比特币诞生,因此要搞明白区块链技术,应该先了解下比特币。但区块链技术不单应用于比特币,还有非常多的现实应用场景,想做区块链应用开发,可进一步阅读以太坊系列。
比特币如果你是还不知比特币是什么,那就看看比特币是什么
基础入门接下来可以通过下面这几篇文章了解比特币大概的运行原理:
区块链记账原理通过这篇可以了解到区块链是一个怎样的结构
比特币所有权及隐私问题通过这篇可以了解到地址私钥 非对称加密应用 等概念
比特币如何挖矿通过这篇了解工作量证明
比特币如何达成共识 - 最长链的选择通过这篇可以了解共识机制。
补充阅读
什么是拜占庭将军问题
进阶在基础入门之后,可以进一步阅读以下几篇,理解分布式网络,交易验证。
分析比特币网络:一种去中心化、点对点的网络架构
比特币区块结构 Merkle 树及简单支付验证分析
比特币脚本及交易分析 - 智能合约雏形
看完上面这些,区块链应该理解差不多了,就可以尝试实现一个简单的 ...
【机器学习】先搞懂这八大基础概念,再谈机器学习入门
【机器学习】先搞懂这八大基础概念,再谈机器学习入门
准备好开始AI了吗?可能你已经开始了在机器学习领域的实践学习,但是依然想要扩展你的知识并进一步了解那些你听过却没有时间了解的话题。
这些机器学习的专业术语能够简要地介绍最重要的机器学习概念—包括商业界和科技界都感兴趣的话题。在你遇到一位AI指导者之前,这是一份不详尽,但清楚易懂又方便在工作、面试前快速浏览的内容。
概览:
自然语言处理
数据库
计算机视觉
监督学习
无监督学习
强化学习
神经网络###### 概览:
过拟合
1. 自然语言处理自然语言处理对于许多机器学习方法来说是一个常用的概念,它使得计算机理解并使用人所读或所写的语言来执行操作成为了可能。
自然语言处理最重要的最有用的实例:
文本分类和排序
这项任务的目标是对一个文本进行预测标签(类别)或对列表中相关联的文本进行排序。它能够用于过滤垃圾邮件(预测一封电子邮件是否是垃圾邮件),或进行文本内容分类(从网络上筛选出那些与你的竞争者相关的文章)。
情感分析
句子分析是为了确定一个人对某个主题的看法或情感反应,如正面或负面情绪,生气,讽刺等。它广 ...