哈希

区块链的技术核心是什么?

▼魔方 西西 提交于 2020-01-06 21:01:28
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 区块链技术核心 简单来说,区块链是一个提供了拜占庭容错、并保证了最终一致性的分布式数据库;从数据结构上看,它是基于时间序列的链式数据块结构;从节点拓扑上看,它所有的节点互为冗余备份;从操作上看,它提供了基于密码学的公私钥管理体系来管理账户。 或许以上概念过于抽象,我来举个例子,你就好理解了。 你可以想象有100台机器之间的网络是广域网,并且,这100台机器的拥有者互相不信任。那么,我们采用什么样的算法(共识机制)才能够为它提供一个可信任的环境,并且使得:节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;节点之间的数据交换过程不可篡改,并且已生成的历史记录不可被篡改;基于少数服从多数的原则,整体节点维护的数据可以客观反映交换历史。区块链就是为了解决上述问题而产生的技术方案。 散列函数 区块链技术的一个重要组件是将哈希函数用于许多操作。哈希是一种将哈希函数应用于数据的方法,其为几乎任何大小的输入(例如,文件,文本或图像)计算相对独特的输出(称为消息digest,或仅仅是digest)。它允许个人独立地获取输入数据、散列数据并得出相同的结果 - 证明数据没有变化。即使对输入的最小改变(例如,改变单个位)也将导致完全不同的输出

【论文翻译】Deep Visual-Semantic Hashing for Cross-Modal Retrieval

笑着哭i 提交于 2020-01-06 17:57:25
Deep Visual-Semantic Hashing for Cross-Modal Retrieval 用于跨模态检索的深度视觉语义哈希 摘要: 由于哈希算法具有较高的存储和检索效率,在大规模多媒体检索中被广泛应用于近似近邻搜索。跨模态哈希能够有效地检索图像以响应文本查询,反之亦然,近年来受到越来越多的关注。现有的大多数跨模态哈希研究工作都没有捕捉到图像的空间依赖性和文本句子的时间动态,从而学习强大的特征表示和跨模态嵌入,从而缓解了不同模式的异质性。摘要提出了一种新的深度视觉语义哈希(DVSH)模型,该模型在端到端深度学习体系结构中生成图像和句子的紧凑哈希码,捕捉视觉数据与自然语言之间的内在跨模态对应关系。DVSH是一种混合的深度架构,它构成了一个用于学习图像和文本句子的联合嵌入空间的可视化语义融合网络,以及两个用于学习哈希函数以生成紧凑二进制代码的特定于模态的哈希网络。我们的架构有效地统一了联合多模态嵌入和交叉模态哈希,它是基于图像上的卷积神经网络、句子上的递归神经网络和一个结构化的最大裕度目标的新组合,该目标将所有东西集成在一起,从而能够学习保持相似性和高质量的哈希码。大量的经验证据表明,我们的DVSH方法在图像-句子数据集的跨模态检索实验中,即标准的IAPR TC-12和大规模的Microsoft COCO中,得到了最先进的结果。 1.介绍 而海量

通用高效的数据修复方法:Row level repair

大憨熊 提交于 2020-01-03 19:25:23
导读:随着大数据的进一步发展,NoSQL 数据库系统迅速发展并得到了广泛的应用。其中,Apache Cassandra 是最广泛使用的数据库之一。对于 Cassandra 的优化是大家研究的热点,而 ScyllaDB 则为其提供了一个新的思路。ScyllaDB 是一个基于 C 的开源的高性能的 Cassandra 的实现,较之 Cassandra 在性能上有了很大的提升。Nodetool repair 是 Cassandra 日常维护的重要一环,今天主要和大家分享一下 ScyllaDB 在这方面的优化。 今天的介绍会围绕下面五点展开: ScyllaDB 介绍 Row level repair 介绍 Row level repair 实现 实验结果 总结 ▌ScyllaDB 介绍 首先给大家简单介绍一下 ScyllaDB: ScyllaDB 的产生背景 我们公司是一家具有较多的底层软件开发经验的公司,团队创始人是 KVM 和 OSv 的作者。对于 Cassandra 数据库的优化,我们进行了一系列尝试。最开始是从操作系统的角度,通过提高操作系统的性能来提高 Cassandra 应用的性能,其效果是提高了 Cassandra 约20%的性能而无法再获得更高的性能提升。为了更好地优化 Cassandra,团队开始思考是否可以重新实现 Cassandra。我们首先开发了一个非常高性能的 C

能快速理解Java_集合类_的文章

落花浮王杯 提交于 2020-01-03 15:14:05
这篇文章是我学习完Java集合类做的笔记和总结,也是用来记录自己从大一开始的IT生涯,如果你想认真细读这篇文章,请做好受虐的准备(建议电脑看),因为这篇文章有点长,ヽ(ー_ー)ノ。 如果在看我这篇文章过程中,发现了错误,望指点。 一、什么是集合? 举个例子:当你有很多书时,你会考虑买一个书柜,将你的书分门别类摆放进入。使用了书柜不仅仅使房间变得整洁,也便于以后使用书时方便查找。在计算机中管理对象亦是如此,当获得多个对象后,也需要一个容器将它们管理起来,这个容器就是集合。 集合本质是基于某种数据结构数据容器。常见的数据结构:数组(Array)、集(Set)、队列(Queue)、链表(Linkedlist)、树(Tree)、堆(Heap)、栈(Stack)和映射(Map)等结构。 下面便 一 . 一 介绍: 其中在两大接口中会有框架图,以方便大家学前、学后在大脑里可以形成一个思维导图,也方便大家检查自己对各各知识点的熟悉程度。 注意: 由于在集合中是有一个参数化类型的,所以在下面的代码里我会 指定成Object 。为什么我要指定为Object呢?因为Java中的Object类是所有类的超类。 先涉及一下泛型的定义:集合类 对象 = new 集合类 (); 也可以先前往 四、泛型,了解U•ェ•*U 二、Collection接口 1、集合类中Collection接口的介绍

《Python核心编程》笔记

十年热恋 提交于 2020-01-01 22:56:47
1 python是大小写敏感的 2 遍历一个字典的键值: for a in dict_obj.keys(): print a 3 列表解析功能可以让代码很简洁,比如: squared = [x ** 2 for i in range(0, 3)] 还可以加上筛选条件: squared = [x ** 2 for i in range(0, 3) if not x % 2] 4 python的一些命名风格: __xxx__:系统定义的名字 __xxx:类中的私有变量名 5 在python程序中,我们经常看到 if __name__ == '__main__'这样的语句,这条语句一般写为顶级执行代码,__name__是一个系统变量,当程序是被其它模块导入时,该值为模块名字,当直接执行该文件时该值为'__main__' 6 del语句能够直接释放资源 7 python的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器,循环垃圾收集器是指会尝试清理未引用的循环 8 使用局部变量替换模块变量,可以加快查找速度,因为省去了名字查询,举例: ls = os.linesep os.linesep返回的是当前系统的行终止符,比如linux系统的是'\n',windows系统的是'\r\n',Mac系统的是'\r' 如果每次都使用os.linesep则解释器需要先确认os是一个模块

Coursera: Internet History, Technology, and Security

北城余情 提交于 2020-01-01 14:31:51
课程网址:https://www.coursera.org/learn/internet-history 学习笔记: Week 1: History - Dawn of Early Computing (1940 - 1960) War Time Computing and Conmmunication — High Stakes Research in Computing, and Communication 二战刺激了政府对各种科技的研究投入,由此促进了计算机技术的发展,其中就包括电子计算机的诞生。 为了解密德国的无线电情报,英国布莱切利园( Bletchley Park )内以艾伦·图灵( Alan Turing )为代表的跨学科( cross-disciplinary )团队为电子通信和计算( electronic communication and computation )技术打下了基础。 — Alan Turing and Bletchley Park 在二战期间,布莱切利园是英国政府进行密码解读的主要场所,各行各业的上万名人员在此处工作,轴心国的密码与密码文件,都会送到那里进行解码。布莱切利园是最早的跨学科合作部门。 Bombe 是一台英国机械计算机,致敬波兰密码破译机 Bomba ,对破译德国 Enigma 密码机起到了重要作用,一个 Bombe 可以模拟36个

区块链研究实验室|基于Substrate实现比特币UTXO支付模型

狂风中的少年 提交于 2019-12-31 21:30:44
前段时间,Gavin Wood要求我研究基于Substrate实施UTXO链的可能性,Substrate是目前最有前景的区块链技术底层架构,而且目前Polkadot是基于substrate进行开发的。 我们想知道Substrate的灵活性,而UTXO链似乎是进行测试的一个不错的选择,因为它与我们过去在实施Substrate时所考虑的完全不同。如果可行,则表明Substrate确实非常灵活且通用。我们可以更有信心,把Substrate应该到不同领域的区块链项目中。 与以太坊类似,Substrate保留一定数量的可用资金。从某种意义上讲,它类似于普通的银行系统,其中帐户余额用数字表示,并存储在数据库或计算机内存中的某个位置。 从历史上看,第一个成功的加密货币是比特币,它使用完全不同的方法。在比特币中,本身没有账户,余额也不是作为一个数字存储的。取而代之的是,可用资金是根据一组所谓的未用交易输出来定义的,简称为UTXO,这是一个非常简单的主意。 简而言之是UTXO 简而言之,UTXO非常类似于现金,或者更确切地说,是旅行支票。 当你用现金支付某人时,你通常会想到要支付的总价值,但是你用一组独特的、不可分割的单位(代币或钞票)来表示这个价值。例如如果Alice希望付给Bob$250美元,她可以给Bob2张价值$100美元的钞票和1张价值50美元的钞票,或五张面值$50的钞票

小白之路由浅入深之------day15

余生长醉 提交于 2019-12-30 23:37:02
小白之路由浅入深之------day14Set集合 目录 1.Set集合 1.1Set集合概述和特点【应用】 1.2哈希值【理解】 1.3HashSet集合概述和特点【应用】 1.4HashSet集合保证元素唯一性源码分析【理解】 1.5常见数据结构之哈希表【理解】 1.6HashSet集合存储学生对象并遍历【应用】 1.7LinkedHashSet集合概述和特点【应用】 2.Set集合排序 2.1TreeSet集合概述和特点【应用】 2.2自然排序Comparable的使用【应用】 2.3比较器排序Comparator的使用【应用】 2.4成绩排序案例【应用】 2.5不重复的随机数案例【应用】 3.泛型 3.1泛型概述和好处【理解】 3.2泛型类【应用】 3.3泛型方法【应用】 3.4泛型接口【应用】 3.5类型通配符【应用】 4.可变参数 4.1可变参数【应用】 4.2可变参数的使用【应用】 1.Set集合 1.1Set集合概述和特点【应用】 Set集合的特点 元素存取无序 没有索引、只能通过迭代器或增强for循环遍历 不能存储重复元素 Set集合的基本使用 public class SetDemo { public static void main ( String [ ] args ) { //创建集合对象 Set < String > set = new HashSet

区块链之哈希函数

馋奶兔 提交于 2019-12-30 00:12:15
区块链的特点之一就是绝对性、防篡改,是利用了哈希函数生成的一串固定长度的哈希值来保证记录的绝对性和可靠性,防止记录被篡改。待续…… ------20191229闪🚶 来源: https://www.cnblogs.com/bien94/p/12117220.html

彩虹表

坚强是说给别人听的谎言 提交于 2019-12-29 23:42:55
彩虹表就是一个庞大的、针对各种可能的字母组合预先计算好的哈希值的集合,不一定是针对MD5算法的,各种算法的都有,有了它可以快速的破解各类密码。越是复杂的密码,需要的彩虹表就越大,现在主流的彩虹表都是100G以上。 背景 为了保证后台数据安全,现在的做法都是使用哈希算法对明文密码进行加密存储。由于 哈希算法不可逆向 ,因此由密码逆向出明文运算就成了不可能。 起初黑客们通过字典穷举的方法进行破解,这对简单的密码和简单的密码系统是可行的,但对于复杂的密码和密码系统,则会产生无穷大的字典,为了解决逆向破解的难题,黑客们就产生了彩虹表的技术。 为了解决所需要字典大小,减少产生和查找字典的时间,黑客选择性存储一个较小的可逆向的长链的密码的哈希值。虽然在破解单个密文,使用哈希链接的方式需要更多的计算时间的反向查找,但字典要小得多,因此可以存储更长的密码的哈希值。彩虹表是此链接技术的一种改进,并提供一种称为碰撞链的解决方案,其基于Martin Hellman理论(基于内存与时间的权重理论)。 参考: http://baike.baidu.com/view/2143893.htm 来源: https://www.cnblogs.com/adforce/archive/2012/12/19/2824968.html