哈希值

[转帖]Merkle树

核能气质少年 提交于 2019-12-03 07:00:01
Merkle树 https://www.jianshu.com/p/fc439a8fd0de 所谓比特币交易就是从一个比特币钱包向另一个中转账,每笔交易都有数字签名来保证安全。一个交易一旦发生那么就是对所有人都公开的,每个交易的历史可以最终追溯到相应的比特币最初被挖出来的那个点。 先简单回顾一下比特币交易过程。 其实比特币并不存在于任何地方。有人如果持有比特币,那么他们其实是拥有特定比特币的地址,但是所谓的币并不是直接就存在于这个地址中的,地址就相当于你的银行账户。 有的只是各个地址之间的转账记录,余额时增时减。所有的交易都存放在一个非常大的账本文件中,这个文件叫做“区块链”。一个比特币地址中的余额,不是直接存放在比特币地址中的,我们需要到区块链中去计算出来。 如果 Alice 给 Bob 发送一些比特币,那么这个交易就有三项信息: § 输入。这里面记录了最初 Alice 拥有的这些币是从哪个地址转给她的,假设她是从她的朋友 Eve 那里得到的币。 § 数目。这个就是 Alice 到底给 Bob 转了多少个比特币。 § 输出。Bob 的比特币地址。 发送交易需要两样东西,比特币地址和对应的私钥。比特币地址跟银行账号不一样,不需要签署一堆文件去申请,它们是随机生成的,就是一串由字母和数字组成的字符串。私钥也是类似的一个字符串,但是这个是要严格保密的。比特币地址就好像一个透明的存钱罐

[quartusⅡ] 使用quartusⅡ的过程中,遇到过的一些“软件上的问题”

血红的双手。 提交于 2019-12-03 02:30:34
1、USB blaster的驱动在设备管理器上点“更新驱动软件”,更新不了,说什么哈希值不在指定目录下,如下图, 解决方法是,https://blog.csdn.net/rdgfdd/article/details/79363505 看这篇博客顺利解决该问题。 该问题的产生原因是,我本来有个quartus13.1的USB blaster驱动,后来想装成quartus11.0的USB blaster,这种新的想换成旧的,就会出现哈希值问题。 来源: https://www.cnblogs.com/zf007/p/11771860.html

区块链入门教程之从比特币到以太访再到智能合约从架构概念到应用实战(DAPP)(二、比特币原理、概念讲解)

匿名 (未验证) 提交于 2019-12-03 00:18:01
作者: AlexTan CSDN: http://blog.csdn.net/alextan_ Github: https://github.com/AlexTan-b-z e-mail: alextanbz@gmail.com (ps:这是本博主撰写的第二部系列作品,第一部是写的 java入门教程 ,受到了不少读者的喜欢,如果你也喜欢的话,欢迎关注哟!) 本教程主要面向区块链新手,用通俗易懂的方式讲解区块链技术。 本章节内容是以比特币为例讲区块链技术原理。 如图所示,哈希函数,指无论输入什么值,其输出结果为固定长度的字符串的函数,这串字符串就被命名为哈希值。哈希函数它是不可逆的,即是单向的,只能通过输入计算得到输出,不能通过输出得到输入。且只要输入结果不一样,其输出结果也不一样。 SHA256 SHA: Secure Hash Algorithm(安全哈希算法),256代表无论输入什么值(可以是文件、也可以是文本),其输出结果为256位的二进制数。 比特币采用SHA256算法,该算法属于SHA-2系列,在中本聪发明比特币时(2008)被公认为最安全最先进的算法之一。除了生成地址中有一个环节使用了REPID-160算法,比特币系统中但凡有需要做Hash运算的地方都是用SHA256。随着比特币被更多人了解,大家开始好奇中本聪为何选择了SHA256

perl返回哈希和的键和值

匿名 (未验证) 提交于 2019-12-02 23:57:01
#!/usr/bin/perl #!/usr/bin/perl %data = ('google'=>'google.com', 'runoob'=>'runoob.com', 'taobao'=>'taobao.com'); @names = keys %data;#该函数返回所有哈希的所有key的数组 #注意是数组 print "$names[0]\n"; print "$names[1]\n"; print "$names[2]\n"; %data2 = ('google'=>'google.com', 'runoob'=>'runoob.com', 'taobao'=>'taobao.com'); @urls = values %data2;#该函数返回所有哈希的所有value的数组 #注意是数组 print "$urls[0]\n"; print "$urls[1]\n"; print "$urls[2]\n"; 来源:博客园 作者: 朵朵奇fa 链接:https://www.cnblogs.com/shunguo/p/11441667.html

关于==、equals和hashCode详解

青春壹個敷衍的年華 提交于 2019-12-02 06:32:57
这几天在尝试手撸一个类似Lombok的注解式代码生成工具,用过Lombok的小伙伴知道,Lombok可以通过注解自动帮我们生产equals()和hashCode()方法,因此我也想实现这个功能,但是随着工作的深入,我发现其实自己对于equals()和hashCode()的理解,也处在一个很低级的阶段。 因此痛定思痛,进行了一番深入学习,才敢来写这篇博客。 文章目录 1、equals在Java中含义 2、hashCode在Java中的作用 3、为什么hashCode和equals要一起重写 4、扩展:实现科学的哈希函数 1、equals在Java中含义 首先要解释清楚这个,equals方法在Java中代表逻辑上的相等,什么叫逻辑上的相等?这个就涉及到Java本身的语法特性。 我们知道,Java中存在着==来判断基本数据类型的相等,但是对于对象,==只能判断内存地址是否相等,也就是说是否是同一个对象: int a = 10000; int b = 10000; // 对于基本数据类型, == 可以判断逻辑上的相等 System.out.println(a == b); Integer objA = 10000; Integer objB = 10000; Integer objA1 = objA; // 对于类实例, == 只能判断是否为同一个实例(可以视为内存地址是否相等)

区块链比特币科普

微笑、不失礼 提交于 2019-12-02 02:51:18
引言 比特币和区块链总是让人感觉高深莫测,网上一搜总会搜到各种:去中心化、分布式、甚至无政府等更让人摸不清方向的东西。哪些是对的,哪些是错的,接下来我们就来探讨下。 区块链技术诞生于比特币,所以一切都还得从比特币谈起! 什么是比特币? 比特币是一个虚拟货币,就像QQ币、游戏币等等,而比特币底层产用的技术被称作区块链技术,这个技术的神秘之处就在于:它让比特币在没有第三方担保情况下在网上交易了7年多。而游戏币和QQ币是由游戏和腾讯公司来管理控制,每一笔交易都得通过服务器的审核。 比特币的由来 2008年10月31日,中本聪给密码学邮件列表发了一封邮件,邮件里说:“我一直在研究一个新的电子现金系统,完全点对点,无需任何可信的第三方”。 2009年1月11日,中本聪发布了比特币钱包第一个版本0.1版本,右边是比特币其中一个版本的客户端0.10.1版本。 从此中本聪就再也没有出现过,谁也不知道中本聪是谁。 比特币为什么会火起来? 比特币第一笔交易 2010年5月22日,一位美国程序员用10000个比特币在论坛上购买了两个披萨。现在一个比特币已经快被炒到了40000了,这可真是世界上最贵的披萨了。这也是比特币的第一笔交易。 比特币的奖励制度 不管中本聪多了解金融货币和经济学,不管比特币钱包涵盖了多少密码学和技术增加信任的方法,但是在普通人看来这就是一个很简单甚至简陋的小软件。你把电脑一打开

IPFS技术浅析

[亡魂溺海] 提交于 2019-12-01 12:15:44
一、IPFS是什么? 星际文件系统IPFS(Inter-Planetary File System)是一个面向全球的、点对点的分布式版本文件系统,致力于创建持久且分布式存储和共享文件的网络传输协议。目标是为了补充(甚至是取代)目前统治互联网的超文本传输协议(HTTP),将所有具有相同文件系统的计算设备连接在一起。 简单来说IPFS是一个可以永远存在的、由多个节点组成且没有中心化的文件存储和共享系统。 二、IPFS的起源 IPFS是一个开放源代码项目,在2014年开始由Protocol Labs在开源社区的帮助下发展。其最初由Juan Benet设计,他建立实验室开发IPFS初衷正是为了通过设计一个协议建立更加安全、高效、开放的网络。他进入斯坦福大学后,学习计算机技术方面的知识,从事对分布式存储网络技术的研究开发。 三、IPFS原理 原理用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是储存在某个地方的内容,不需要验证发送者的身份,而只需要验证内容的哈希,通过这样可以让网页的速度更快、更安全、更健壮、更持久。 IPFS中文件通常不会都存在.一个节点上,.而是分片存在其他一些子节点上。提取.文件时IPFS把这些节点列表全部并行抓取,最后在本地拼成完整的.文件。并行的速度远远大于直接下载完整⽂文件的速度,用户很快就能在本地获得文件,还可以继续分享给其他人

比特币里的计算机知识

[亡魂溺海] 提交于 2019-12-01 10:24:56
比特币里的计算机知识 一、人民币、支付宝和比特币有什么区别 (1)人民币 大家都很清楚,人民币就是中国人民银行发行的货币。这些货币流通到市场中,每个人有了钱以后可以去购买各种商品和服务,人民币就会从一个人手里转到另外一个人手里。钱流通到市场中后,具体某一个编号的纸币在某个特定的时候在谁身上是不确定的,国家也不关心。纸币在实际中是很难复制的,复制成本高、风险也很大。 (2)支付宝 支付宝,当然包括微信,里面的余额说白了就是一个数据,存储在支付宝和微信公司的服务器上。同人民币不同,数据的复制、修改是不需要成本的。这些电子货币在市场上是怎样运行的?以支付宝为例,首先你要申请一个支付宝账户,然后关联一张银行卡,这样你就可以把支付宝中的钱转出到银行卡或者将银行卡的钱充值到支付宝中。当你消费时利用支付宝付款或者营收通过支付宝收款时,对方也必须要有一个支付宝账号,这样付多少钱实际上是从你的支付宝账号上扣款,给对方支付宝账户加钱。 这其中涉及到两个方面的数据变动。一是和银行相关:支付宝在各大银行都开了一个账号,个人在用银行卡往自己的支付宝账号充值或者提现,实际上是银行中支付宝那个大账号和你的账号之间的存款变动。当然支付宝公司会将你支付宝账号上的数值进行相应的变动。二是和银行无关,支付宝内部数据转换。当你和对方之间一个用支付宝进行付钱、另一个进行收钱,这个时候就跟银行没有关系

Mysql索引笔记

邮差的信 提交于 2019-11-30 10:31:06
索引是帮助mysql高效获得数据的排好序的数据结构(使得查询数据快) Hash索引: 1、因为Hash索引比较的是经过Hash计算的值,所以只能进行等式比较,不能用于范围查询 1、每次都要全表扫描 2、由于哈希值是按照顺序排列的,但是哈希值映射的真正数据在哈希表中就不一定按照顺序排列,所以无法利用Hash索引来加速任何排序操作 3、不能用部分索引键来搜索,因为组合索引在计算哈希值的时候是一起计算的。 4、当哈希值大量重复且数据量非常大时,其检索效率并没有Btree索引高的。 树形索引:二叉树(红黑树(平衡二叉树))缺点:数据量大时,树的高度太高,效率低(树的特点:这边的字节点<根节点<右边子节点) BTree (查询速度快) (mysql索引使用)B+Tree (查询速度更快(非叶子节点之间不存数据,一次I/O可以存更多的索引列),范围查询速度快(叶子节点之间加了指针)) 原文链接:https://blog.csdn.net/u014307117/article/details/47325091 来源: https://www.cnblogs.com/czgxxwz/p/11578948.html

Java Set集合的详解

拜拜、爱过 提交于 2019-11-30 02:56:55
一,Set Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素 用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。 对象的相等性 引用到堆上同一个对象的两个引用是相等的。如果对两个引用调用hashCode方法,会得到相同的结果,如果对象所属的类没有覆盖Object的hashCode方法的话,hashCode会返回每个对象特有的序号(java是依据对象的内存地址计算出的此序号),所以两个不同的对象的hashCode值是不可能相等的。 如果想要让两个不同的Person对象视为相等的,就必须覆盖Object继下来的hashCode方法和equals方法,因为Object hashCode方法返回的是该对象的内存地址,所以必须重写hashCode方法,才能保证两个不同的对象具有相同的hashCode,同时也需要两个不同对象比较equals方法会返回true 该集合中没有特有的方法,直接继承自Collection。 ---| Itreable 接口 实现该接口可以使用增强for循环 ---| Collection 描述所有集合共性的接口 ---| List接口 可以有重复元素的集合 ---| ArrayList ---| LinkedList ---| Set接口 不可以有重复元素的集合 案例:set集合添加元素并使用迭代器迭代元素。