精华内容
下载资源
问答
  • 互联网大佬用IMABCDE这七个字母总结归纳了当今最流行前沿技术,他们分别IoT物联网、Mobile移动计算、AI人工智能、Blockchain区块链、Cloud云...
        

    有互联网大佬用IMABCDE这七个字母总结归纳了当今最流行的前沿技术,他们分别是IoT物联网、Mobile移动计算、AI人工智能、Blockchain区块链、Cloud云计算、Data大数据、Edge边缘计算

    乍一眼看上去眼花缭乱,给人无穷的学习压力,但其实,我想说,这七大技术全都是以分布式技术为基石的。

     

    在全球经济增速趋缓的大背景下,与许多应用业务大量裁人形成鲜明对比的是,各大巨头的中间件团队、实验室等基础部门,依然在大规模地招兵买马。随着业务扩展,以及IMABCDE等新兴技术领域的布局,分布式技术人才已然成为巨头们争夺的焦点。

    我认为,谁更好地掌握了分布式技术,谁就更容易在新一轮技术浪潮中获得主动。

     

    一方面是各大厂商的求贤若渴,一方面是分布式专业技术人才的一将难求。在多年的技术面试中,我发现不少面试者积极主动,表现出来的水平却无法通过面试,比如:

     

    • 各种分布式概念、名词学了一大堆,但经常张冠李戴,傻傻分不清楚;

    • 做了多年技术,也参与了很多分布式技术实践,却无法回答工作中各种分布式技术、组件、框架选型背后的根源;

    • 在一个分布式技术配套的典型场景往往能驾轻就熟,但一旦稍微变更考察业务场景、业务目标后,就变得毫无头绪。

    分布式技术人才市场的供应与需求,俨然一首冰与火之歌。究其原因,主要是知识碎片化、不成体系、见树不见林。

    在工作、面试、演讲等多种场合,也经常会有人问我:分布式领域的新概念繁多、各种框架五花八门、各种组件层出不穷,应该如何应对啊?

     

    你可以看看这份脉络清晰、4纵4横的分布式核心技术知识体系,由前华为分布式Lab资深技术专家聂鹏程整理

           640?wx_fmt=png      

     这个体系出自《分布式技术原理与算法解析》专栏,聂鹏程根据这个纵横的技术体系,抽取最核心、最普适的技术思想以及概念,结合各种适用场景进行一一解析。

    这样的设计,旨在帮助你找到核心知识点,并将这些知识点联系起来,快速形成分布式核心技术的知识网络,从而形成自己的技术判断力,规划出自己的技术路线。

     

    640?wx_fmt=png

    ?扫描二维码,免费试看

    结算时输入优惠口令「fenbu1234」

    再减¥5,仅限前500名

    聂鹏程是谁?

    聂鹏程,西安电子科技大学计算机博士,智载云帆CTO,前华为分布式Lab资深技术专家,前后深入研究分布式技术10余年。

    2007年,他在西安电子科技大学攻读博士期间,就开始研究并行与分布式计算;毕业后,在IBM做过HPC大规模负载管理系统LSF相关的设计和研发工作,在华为负责过分布式IoT相关项目架构设计,以及电信级业务微服务框架、函数服务框架的设计工作,也从事过区块链相关研究工作。现在,他在智载云帆负责技术体系的构建,专注于无服务器Serverless架构实践

    他说:“有一次听到任正非的讲话,他提到了基础教育、孩子是一个社会的未来,这让我感触良多。我想,一个行业的兴盛,同样也离不开一个广泛的从业者基础。

    做好《分布式技术原理与算法解析》这个专栏,既可以对自己这些年的经验做一次系统梳理,又能帮助更多人系统理解并掌握分布式核心技术,为整个行业的兴盛略尽绵薄之力,何乐而不为呢?”

    学完这门课,你能收获什么?

    接下来的三个月时间里,他会带你学习26个分布式核心原理及对应算法解析,掌握6大分布式核心技术,原理+场景+案例,多角度解读,构建出一套完整的分布式核心知识体系。专栏共34讲,包括8个模块:

     

    • 分布式技术之初体验:通过对分布式起源与分布式指标的介绍,帮助你搞懂分布式的本质,以及不同类型分布式系统的业务目标与特点。

    • 分布式协调与同步:通过对分布式互斥、分布式选举、分布式共识等知识点的对比讲解,让你掌握如何让分布式系统中的不同进程通力协作、具有“团队精神”。

    • 分布式资源管理与负载调度:通过对不同的分布式体系架构、资源管理以及任务调度框架的对比介绍,让你掌握如何在“狼多肉少”的计算机集群里,进行高效的资源管理和任务匹配。

    • 分布式计算技术:通过对MR、Actor、Stream等经典计算模式的讲解和对比,让你学会如何利用分布式这个强大的武器去加速自己的业务。

    • 分布式通信技术:通过对常见的分布式通信技术的对比学习,让你搞懂如何在不同通信方式之间进行选型,并理解这些高效通信技术背后的原理。

    • 分布式数据存储:通过对CAP、数据分布、数据复制等知识点的讲解,让你理解并掌握分布式数据管理及访问最基础、最核心的技术。

    • 分布式高可靠:通过对负载均衡、流量控制、故障隔离、故障恢复等方法的讲解,让你掌握常用的分布式可靠性保障手段及原理。

    • 分布式核心知识串讲:用一个购买火车票的流程,贯串起分布式技术的核心概念和基础知识,让你进一步学会如何体系化地掌握并运用这些知识点。纸上得来终觉浅,最后结合容器技术帮助你搭建一个分布式实验环境,让你理论能与实践相结合,持续催熟自己的分布式知识运用能力。

    掌握了这套体系后,相信你面对新技术时,就可以快速判断其是一个颠覆性的技术,还是“新瓶装旧酒”。从而,最终帮助你真正能够在分布式技术领域纵横驰骋。

     

    总的来说,学完这门课,你会有下面4大收获:

     

    △ 掌握6大分布式核心技术

    △ 26个核心原理及对应算法解析

    △ 原理+场景+案例,多角度解读

    △ 构建完整的分布式核心知识体系

     

    花1分钟看一下专栏目录,即可了解分布式核心技术全貌:

    640?wx_fmt=jpeg

    现在订阅有什么福利?

    1. 早鸟优惠 ¥68,原价 ¥99,输入优惠口令「fenbu1234」再减¥5~

    640?wx_fmt=png

    ?扫描二维码,免费试看

    结算时输入优惠口令「fenbu1234」

    再减¥5,仅限前500名

    2. 订阅课程后,可获得作者亲自整理的高清版「分布式技术核心知识图谱」,获取方式:公众号后台回复「后端」。

     

    640?wx_fmt=jpeg

    ?订阅专栏即可免费领取

    3.部落发言有机会免费得专栏

    9月23日(周一)极客时间部落发表任意动态,我们会在当天21:00任选3名发布动态的用户,报销购买本专栏的全部费用。 

     

    ?点击「阅读原文」,解锁分布式技术核心知识,优惠口令「fenbu1234」再减¥5~

    展开全文
  • ——比特币的诞生及比特币的底层技术区块链的初步理解 文章目录区块链基础一.比特币的诞生数字货币的难题二.什么是区块链第一种区块链的定义(比较通俗)第二种区块链的定义比特币及区块链系统:三.去中心化第一种...

    比特币的诞生及比特币的底层技术区块链的初步认识

    一.比特币的诞生

    数字货币的难题

    在物理世界中,现金可以非常简单,它需要的是防伪功能。现金是一张纸条,我可以在一张纸条上写“拿到这张纸条的人可以找我领取一只羊”,然后签上自己的名字。签名就是防伪措施。我把纸条拿给你,纸条到你手中,我就没有了。

    在数字世界中,情况开始变得复杂:这张纸条和上面的签名是一个数字文件,而电子文件可以被无数次地完美复制。把这个电子文件给你之后,我还可以再把这个电子文件给第三个人。这就是所谓的双重支付(double spending)问题。

    解决办法:

    1. 1983年,大卫·乔姆(David Chaum)最早提出把加密技术用在数字现金上

    选择一个只有你知道的序列号,然后我在上面签名。由于我不知道这个序列号,因此我没法再复制一份这张纸条给另一个人。这就是密码学上所谓的盲签(blind signature)。这个思路形成了“第一个真正意义上的电子货币方案”。

    缺点:它要运转起来,就必须有一个所有参与者都信任的中心化服务器来进行这些“数字纸条”的验证。

    1. 1997~1998年,亚当·贝克(Adam Back)与哈希现金(HashCash)、戴伟(Wei Dai)与B币(B-Money)、尼克·萨博(Nick Szabo)与比特黄金(bit gold)、哈尔·芬尼(Hal Finney)与工作量证明(POW)

    在比特币白皮书中,中本聪引用了1997年亚当·贝克设计的哈希现金、1998年华裔密码学家戴伟设计的B币等前人的成果。

    萨博是“智能合约”(smart contract)的提出者,1993年他写出了“智能合约”论文。智能合约是区块链处理交易的核心方式,区块链应用的实质可被看成是一个个智能合约的组合。

    知名密码学家哈尔·芬尼在2004年推出了自己版本的采用工作量证明(POW)机制的电子货币。在比特币开发过程中,哈尔·芬尼与中本聪有很多互动,比特币的第一笔转账就是中本聪转了10个比特币给哈尔·芬尼。

    他们四人的具体设想各有不同,但有一个共同点,即都是让计算机进行计算,从而“创造”电子现金,它们是比特币系统让计算机进行加密计算的工作量证明和挖矿的创意来源。这非常重要,有了这个想法,中心化服务器才可以被去中心网络所取代,困扰数字货币的难题被解决了。

    比特币:一个点对点电子现金系统

    一种在发行和交易上都中心化的电子现金。去中心网络一定是非基于信任的(因为没有中心网络可以进行确认)。

    2009年,一个去中心化的货币第一次被中本聪实现,它通过已有公钥加密方式来管理所有权,并用一个名为工作量证明的共识算法来记录谁拥有货币。

    二.什么是区块链

    第一种区块链的定义(比较通俗)

    比特币:一种加密数字货币;区块链:一种基础技术。

    区块链是一种源自于“比特币”的底层技术。换句话说,比特币是区块链技术的第一个大获成功的应用。

    第二种区块链的定义

    区块链是数字世界中进行“价值表示”和“价值转移”的技术。区块链硬币一面是表示价值的加密数字货币或通证,另一面是进行价值转移的分布式账本与去中心网络。

    比特币及区块链系统:

    在这里插入图片描述
    比特币系统包括三层:比特币、比特币协议、比特币区块链,即比特币的分布式账本与去中心网络。

    大众在提及区块链时,常指的是第四种最大的范围,即“账本+网络+协议+货币”。在产业中,人们在提到区块链时,通常指的是第三种范围,即“账本+网络+协议”。而很多软件开发者在说起区块链时通常指的是第二种范围“账本+网络”,即分布式账本加去中心网络。

    三.去中心化

    一直以来,数字世界中的“货币”有三种形式(见下图):
    在这里插入图片描述

    第一种形式:中心化的在线支付

    我们常用的 PayPal、支付宝、微信支付都是中心化的在线支付,在这些支付系统中流转的是映射到数字世界的各国的法定货币(也称法币)。

    第二种形式:中心化的计算机点数或互联网积分

    中心化的互联网积分/计算机点数是指 Q 币、游戏币、航空里程等,它们还曾有一个更为大众所熟知的名字——虚拟货币。通常,它们不与物理世界的法币对应,而是由商业公司中心化发行,仅可以在一家公司的体系中使用。

    第三种形式:去中心化的电子现金

    去中心化的电子现金已经被计算机密码学家探索了多年,沿着前人的探索路径,中本聪最终将这条路径变成了现实。中本聪设计和开发了比特币系统,并催生了众多加密数字货币和区块链技术项目。
    在这里插入图片描述
    对照前文图表,与现有中心化的电子现金系统(在线支付系统)相比,比特币是与之完全相反的:

    • 在线支付系统的货币发行是中心化的,比特币的发行是去中心化的;
    • 在线支付系统的货币流动是中心化的,比特币的交易是去中心化的;
    • 在线支付系统映射物理世界中的货币,比特币不映射任何现有的货币;
    • 在线支付系统自己不进行货币的发行,比特币是在数字世界中凭空发行出来的。

    比特币实现了极致的“去中心化”

    在去中心化的程度上,比特币系统达到了极致。去中心化的初级阶段是自动化(automatic),即根据人设定的规则自动运行,而去中心化的高级阶段是自治(autonomous),也就是完全自治、自发。而比特币系统作为一个电子现金系统,达到了极致的去中心化状态:

    • 作为一个货币应用,它不只交易是自治的,它的发行也是自治的。
    • 作为一个计算机网络,它是完全去中心化的,而不仅仅是分布式网络。
    • 作为一个组织,它是完全的社群自治,不需要有一个领导者居中协调。

    去中心化处于区块链的思维模式的最内核,而比特币实现了极致的去中心化。

    比特币系统设计的五个要点:比特币的区块链系统是由分布式账本(即狭义的区块链)和去中心网络(点对点网络)组成的,形成链条的方式是工作量证明共识机制。最长链是由网络中的算力共同决定的,因而它是可信的,节点离开和加入依据的是最长链是可信的这一原则。这些组合起来形成了比特币系统。

    1.去中心化的点对点电子现金系统

    比特币要做的是一个“点对点的电子现金系统”,发送方和接收方直接交易,它们之间不需要中介机构的介入。

    要去掉可信第三方等中介机构,就需要解决“双花问题”。在摘要中,中本聪给出了点对点网络的解决方案,并介绍了这个方案的核心——区块链。他并没有提到区块链(blockchain)这个词,但在论文中分别提到了区块(block)和链(chain)这两个概念。

    2.分布式账本

    比特币的区块链是基于工作量证明形成的带时间戳、存储数据的数据块和由哈希指针连接成的链条。

    这个链条或者说账本以分布式的方式存储在比特币网络的各个节点上,因而也被称为分布式账本。

    这个账本是一个不断增长的由数据块组成的链条,这个数据块组成的链条是狭义的“区块链”。比特币账本可被认为同时存储在所有的全节点之中。

    3.工作量证明

    比特币网络中的节点按照规则进行加密哈希计算,以竞争获得生成新区块的权利。节点在竞争获胜后就获得记账权,它生成区块成为最新区块后,就获得与新区块对应的挖矿奖励。

    工作量证明也是区块链账本的安全机制。如果不重做“工作量证明”所需的大量计算则此链条不可修改,这一共识机制保证了区块链上的数据的可靠性。

    4.最长链原则

    在任何时刻,最长的链条是所有人都接受的最终记录。

    由于最长链是由网络中的主要算力完成的,因而只要它们不都与攻击者合作,那么它们生成的最长链就是可信的。这个原则被称为“最长链原则”。

    5.去中心网络

    比特币的去中心网络的架构非常简洁,本身需要的基础设施很少。它可以在互联网网络上运行。计算机节点可以随时离开或加入这个去中心网络,在加入时它们只需遵守最长链原则即可。

    注:

    所有的区块链系统都包括“分布式账本和去中心网络”这一对必备要素。基于分布式账本与去中心网络,比特币系统实现了去中心化的价值表示和价值转移,
    在这里插入图片描述

    四.UTXO

    UTXO 是 unspent transaction outputs(未使用的交易输出)的缩写,每一个比特币其实都是 UTXO,它是比特币的最核心概念之一。

    UTXO的理解

    我们来看一个两个人进行转账交易的过程,以深入理解UTXO:

    假设我有 12.5 个比特币,这其实意味着,之前有一个交易把这些比特币转入我的地址,这个交易的输出(即 8 个比特币)未被使用,我拥有了这 12.5 个比特币。

    现在,我要发起一个转账交易,这个交易中的输入是让我拥有这些比特币的上一个交易。

    我要转账给你,我做的是,对让我拥有这些 12.5 个比特币的上一个交易进行签名,把这一新转账交易的输出地址设为你的钱包地址。

    这样,我就发起了一个转账支付交易。等矿工将这一交易打包进新的区块,转账交易完成,这 12.5 个比特币就属于你了。你拥有的是你我这个交易的未使用的交易输出。

    既从我(甲)到你(乙)的一笔比特币转账,是从我的一个钱包地址转到你的一个钱包地址上去。
    在这里插入图片描述
    不存在比特币,只有未使用的交易输出(UTXO)。每一笔比特币都源自上一个交易,可以一直向上追溯上去。而一直向上追溯,在每一笔比特币的源头,都有一种特殊的交易,即比特币矿工因挖矿获得奖励的创币交易,每一个比特币都是通过挖矿被创造出来的。假设我作为比特币矿工挖矿成功赢得了 25 个比特币,那么这个特殊交易是,它的输入是 0,而输出是 25 个比特币进到矿工的钱包地址中。当甲要把一笔比特币转给乙时,这个过程是把甲的钱包地址中之前的一个 UTXO,用私钥进行签名,发送到乙的地址。这个过程是一个新的交易,而乙得到的是一个新的 UTXO。

    UTXO的形式

    UTXO 与我们熟悉的账户概念的差别很大。我们日常接触最多的是账户,比如,我在银行开设一个账户,账户里的余额就是我的钱。

    但在比特币网络中没有账户的概念,你可以有多个钱包地址,每个钱包地址中都有着多个 UTXO,你的钱是所有这些地址中的 UTXO 加起来的总和。

    五.比特币区块链的数据结构

    每个区块由两个部分组成——区块头部和区块数据。其中,区块头部中有一个哈希指针指向上一个区块,这个哈希指针包含前一个数据块的哈希值。哈希值可以被看成是数据块的指纹,即在后一个区块的头部中均存储有上一个区块数据的指纹。如果上一个区块中的数据被篡改了,那么数据和指纹就对不上号,篡改行为就被发现了。要改变一个区块中的数据,对其后的每个区块都必须相应地进行修改。
    在这里插入图片描述

    六.工作量证明

    比特币的工作量证明的关键特点是,它巧妙地融合技术和经济因素,不只是纯粹通过技术本身来达到这一点,而是纳入了与自身作为一个数字现金系统相关的挖矿奖励,既奖励机制。

    它包含了随机性的概念:比特币系统形成的共识不是完全可靠的,但是在等待了 6 个区块约 1 个小时之后,出问题的概率呈指数级下降。

    七.挖矿

    众多比特币矿工(即挖矿节点)在竞争获得记账的权利,矿工每增加一个新的区块能获得对应的记账奖励。

    挖矿节点计算机在挖矿时要做两个任务:

    • 第一个任务是把比特币网络中未确认的交易按梅克尔树组装成候选区块,未被纳入的交易则往下顺延。

    • 在创建候选区块时,除了普通的交易之外,矿工在其中增加一个特殊的交易:币基交易(coinbase transaction)。如果挖矿成功,则币基交易会凭空转出新区块的奖励比特币到矿工的钱包地址中,从而发行这些比特币出来。这个特殊交易也被叫作“创币交易”,新的比特币是在这一交易中被创造出来的。

      比特币的经济系统是以“竞争-记账-奖励”循环为核心的
      在这里插入图片描述

    八.区块链的应用及变革

    信息传递 VS 价值转移

    之前,互联网处理的是“信息”;现在,互联网可以处理“价值”。区块链提供了在数字世界中处理价值所需的两个基础功能:价值表示与价值转移,让互联网跃迁到价值互联网(见下图)。
    在这里插入图片描述

    报纸 VS 纸币

    在线下物理世界中,信息的典型代表是报纸,而价值的典型代表是纸币。每一张报纸都是一样的,报纸编辑完成后,印刷机复制它,然后它被送到我们的手中。

    对比而言,虽然纸币也是由印刷机印制的,每一张 100 美元纸币代表的价值是相等的,但每一张纸币都是不一样的,每一张都有唯一的序列号。

    信息是可复制的,我可以复印一份报纸给你。价值不可以复制,我必须把100美元现金真的给你,而不能复印了给你。

    到了互联网上,数字化的信息可以完美复制,这加快了信息的流动。而和价值有关的事物在互联网中没有发生同样倍数的变化。
    在这里插入图片描述

    数字世界中的价值表示与价值转移

    信息传递的主要方式是复制。在互联网中不管是最基础的 TCP/IP 协议,还是 WWW(万维网)协议,都是专为信息传递设计的。并且,数字化的信息复制可以复制出一模一样的副本,复制效率更高,互联网给信息传递带来了巨变。

    价值转移的主要方式是记录。从物理世界到数字世界,价值转移的方式都是记录。但是,用数据文件进行价值表示会遇到很多困难,可完美复制的数据文件和需要唯一性的价值表示形成冲突。如果表示价值的数据文件可以完美复制,那么我就可能把它支付给你,再复制一份支付给另一个人,造成双花问题。在数字世界中进行价值转移时,为了防止双花问题,我们要依赖可信第三方作为中介,由它作为交易中心进行记录。
    在这里插入图片描述

    价值转移功能:区块链成为互联网的价值基础协议

    区块链渐渐展现出对互联网的变革性意义:互联网在协议层有了价值表示和价值转移的功能,区块链成为互联网的价值基础协议。
    在这里插入图片描述

    • 最上层,是普通用户看到网站与移动App等应用。
    • 中间层,是协议层,这一层过去主要是信息传递的 WWW 等协议。
    • 最底层,是网络传输硬件和网络传输协议如TCP/IP等

    价值表示物:数字世界中表示价值的通证

    比特币是区块链技术的第一个应用,也是到目前为止最重要的应用,虽然它还只是一个完成了概念验证的系统,比特币系统完成关于价值的两个功能的验证:价值表示和价值转移。
    在这里插入图片描述
    区块链信用层协议进行记录的价值表示功能可类比为统一资源定位符 URL,进行价值转移的功能可类比为文档传输协议 HTTP,而区块链上的价值表示物(通证)可看成文本标记语言HTML。

    总的来说,现在在数字世界中,类似于 HTML 的代表价值的语言(通证)已经准备好了。“怎么用通证,通证有什么用”等问题等待着创造性的回答。

    区块链将成为互联网基础协议,类似于TCP/IP、HTTP

    网络中的协议在技术上指的是,网络硬件、操作系统在进行通信时要遵守一些规则,这些规则被称为协议(protocol)。

    互联网通信用的协议是所谓 TCP/IP 协议族。通常认为 TCP/IP 协议族包括四层:应用层、传输层、网络层、链路层。链路层将一些数据放在电线上;网络层对数据进行路由;传输层将数据持久化;应用层以应用的形式提供数据抽象。
    在这里插入图片描述
    如果从网络通信的应用层、传输层、网络层、链路层的分层逻辑上看,我们还可以有另一种看法:区块链可能从原应用层分离出来,形成一个价值层。当然,对网络通信协议的分层,在短期内还难以形成一致的修订意见。
    在这里插入图片描述
    也有人认为,区块链给互联网带来的是与信用相关的功能,它担任的角色是过去的可信第三方的角色,这个从应用层分离出来的层次也可称为“可信层”。

    之前我们尝试性地提出了“区块链信用层协议”的说法,以说明区块链给互联网带来了类似 WWW 协议的重大变化。这里我们又从网络通信层次的角度,尝试性地提出“价值层”的说法,因为这是互联网第一次可能在通信协议层次直接处理价值表示和价值转移。以上都是尝试性的提议,提出来供进一步探讨。

    展开全文
  • 区块链的核心技术是什么?区块链的核心技术能带来什么改变,区块链是一项全新技术,去中心化,不可篡改,个人主权掌控 (账号,资产,数据),这是区别于传统互联网技术的特点。区块链是全新的革命技术,有着全新...

    在这里插入图片描述

    区块链的核心技术是什么?区块链的核心技术能带来什么改变,区块链是一项全新技术,去中心化,不可篡改,个人主权掌控 (账号,资产,数据),这是区别于传统互联网技术的特点。区块链是全新的革命技术,有着全新的底层技术,上层应用原理,除了互联网,历史上就没有过,而且区块链应用场景,在一定程度上可以解决教育资源的资产确权和价值评估问题,实现资产数字化。

    链动精灵科技目前与数百家企业达成深度合作,

    为合作方提供设备硬件,服务器托管,运营维护等全方位技术服务。

    据区块浏览器数据核算得出

    链动精灵科技 封装效率高达:9.73G/ 小时 / 万元。

    在市场公开数据中遥遥领先!

    区块链的核心技术:没有中心化的中介机构,实现了数据的高安全性和高可靠性。区块链的技术主要表现在以下四个方面:

    第一个叫分布式账本,就是交易记账由分布在不同地方的多个节点共同完成,而且每一个节点都记录的是完整的账目,因此它们都可以参与监督交易合法性,同时也可以共同为其作证。

    第二个叫做非对称加密和授权技术,存储在区块链上的交易信息是公开的,但是账户身份信息是高度加密的,只有在数据拥有者授权的情况下才能访问到,从而保证了数据的安全和个人的隐私。

    第三个叫做共识机制,就是所有记账节点之间怎么达成共识,去认定一个记录的有效性,这既是认定的手段,也是防止篡改的手段。区块链提出了四种不同的共识机制,适用于不同的应用场景,在效率和安全性之间取得平衡。

    第四个技术特点叫智能合约,智能合约是基于这些可信的不可篡改的数据,可以自动化的执行一些预先定义好的规则和条款。以保险为例,如果说每个人的信息 (包括医疗信息和风险发生的信息) 都是真实可信的,那就很容易的在一些标准化的保险产品中,去进行自动化的理赔。

    区块链的出现使投资者参与热潮,目前国家政策不明确,数字资产价值波动大,投资风险相对大,参与者缺乏市场经验。

    西班牙最大银行桑坦德发布一份报告:2020 年左右,如果全世界银行内部使用区块链的话,每年大概能省下 200 亿美元的成本,这样的数据足以说明区块链给传统金融领域带来巨大变革和突破。

    展开全文
  • 011:利用反编译技术深入理解枚举单例底层实现原理1 枚举单例源码课程介绍2 Java反射技术简单...4、序列化技术是如何实现防止破解单例 4、精讲设计模式课后内容总结 2 Java反射技术简单回顾 什么是反射技术 动态获取

    1 枚举单例源码课程介绍

    课题内容:
    1、为什么枚举单例能够防止反射破解?
    2、为什么枚举单例无法无参构造函数初始化?
    3、利用反编译技术查看枚举底层实现原理
    4、序列化技术是如何实现防止破解单例的
    4、精讲设计模式课后内容总结

    2 Java反射技术简单回顾

    什么是反射技术
    动态获取当前类的信息,比如属性、方法等。forName()

    反射技术使用场景
    1、jdbc加载驱动 2、SpringIOC容器 3、初始化对象 4.提供扩展功能

    反射技术代码演示
    使用反射初始化无参对象

    @Data
    public class UserEntity {
    
        private String userName;
        private Integer age;
    
        private UserEntity() {
            System.out.println("无参构造函数执行..");
        }
    
        public UserEntity(String userName, Integer age) {
            this.userName = userName;
            this.age = age;
        }
    }
    
    public class ReflexUtils {
    
        public static UserEntity reflexUser() throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
            Class<?> classInfo = Class.forName("com.mayikt.singletonPattern.enumsingleton.reflect.UserEntity");
            // 1.使用java反射技术初始化对象 默认执行无参构造函数
            Constructor<?> declaredConstructor = classInfo.getDeclaredConstructor();
            declaredConstructor.setAccessible(true); // 无参构造函数为私有,拿到构造器设置权限
            UserEntity userEntity = (UserEntity) declaredConstructor.newInstance();
            return userEntity;
        }
    
        public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException {
            UserEntity userEntity = ReflexUtils.reflexUser();
            userEntity.setAge(11);
            userEntity.setUserName("zhangsan");
            System.out.println(userEntity.toString());
    
        }
    }
    

    在这里插入图片描述
    如果注释掉实体类UserEntity中的无参构造函数再执行:
    在这里插入图片描述
    报错内容和枚举类反射报错一致,可大概推测枚举单例就是因为没有无参构造函数才不能被反射破解。

    使用反射初始化有参对象

    public class ReflexUtils {
    
        public static UserEntity reflexUser(String userName, Integer age) throws ClassNotFoundException, IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException {
            Class<?> classInfo = Class.forName("com.mayikt.singletonPattern.enumsingleton.reflect.UserEntity");
            // 1.使用java反射技术初始化对象 默认执行无参构造函数
            Constructor<?> declaredConstructor = classInfo.getDeclaredConstructor(String.class, Integer.class);
            declaredConstructor.setAccessible(true); // 无参构造函数为私有,拿到构造器设置权限
            UserEntity userEntity = (UserEntity) declaredConstructor.newInstance(userName, age);
            return userEntity;
        }
    
        public static void main(String[] args) throws IllegalAccessException, InstantiationException, ClassNotFoundException, NoSuchMethodException, InvocationTargetException {
            UserEntity userEntity = ReflexUtils.reflexUser("lisi",12);
            System.out.println(userEntity.toString());
        }
    }
    

    在这里插入图片描述

    3 使用反射技术破解枚举单例

    public enum EnumSingleton {
        INSTANCE, MAYIKT;
    
        // 枚举能够绝对有效的防止实例化多次,和防止反射和序列化破解
        public void add() {
            System.out.println("add方法...");
        }
    
        EnumSingleton() {
    
        }
    }
    
    public class EnumSingletonTest {
        public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
            EnumSingleton instance1 = EnumSingleton.INSTANCE;
            EnumSingleton instance2 = EnumSingleton.INSTANCE;
            System.out.println(instance1 == instance2);
            // 单例有7种,为什么枚举是最好的?防止java的反射和序列化破解
            Class<EnumSingleton> enumSingletonClass = EnumSingleton.class;
            // 枚举没有无参构造函数..就算在类体中手动添加也会报错
            Constructor<EnumSingleton> declaredConstructor = enumSingletonClass.getDeclaredConstructor();
            EnumSingleton enumSingleton = declaredConstructor.newInstance();
            enumSingleton.add();
    
        }
    }
    

    枚举单例使用无参构造函数是不能破解的,枚举底层里面是有有参构造函数,那么使用java的反射技术是否可以破解有参构造函数呢?

    4 使用Java反编译技术分析枚举源码

    由EnumSingleton.class反编译成的EnumSingleton.java文件

    package com.mayikt.singletonPattern.enumsingleton.v7;
    
    import java.io.PrintStream;
    
    public final class EnumSingleton extends Enum
    {
    
        public static EnumSingleton[] values()
        {
            return (EnumSingleton[])$VALUES.clone();
        }
    
        public static EnumSingleton valueOf(String name)
        {
            return (EnumSingleton)Enum.valueOf(com/mayikt/singletonPattern/enumsingleton/v7/EnumSingleton, name);
        }
    
        public void add()
        {
            System.out.println("add\u65B9\u6CD5...");
        }
    
        private EnumSingleton(String s, int i)
        {
            super(s, i);
        }
    
        public static final EnumSingleton INSTANCE;
        public static final EnumSingleton MAYIKT;
        private static final EnumSingleton $VALUES[];
    
        static
        {
            INSTANCE = new EnumSingleton("INSTANCE", 0);
            MAYIKT = new EnumSingleton("MAYIKT", 1);
            $VALUES = (new EnumSingleton[] {
                INSTANCE, MAYIKT
            });
        }
    }
    

    枚举底层实现源码分析
    1.通过反编译后的代码可以得知,定义的枚举类底层转换成类继承Enum
    在这里插入图片描述
    2.枚举中定义的对象都是在静态代码块中初始化的
    在这里插入图片描述
    3.枚举中转换的类,是没有无参构造函数的,默认的是一个有参数的构造函数,调用父类构造函数
    在这里插入图片描述
    在这里插入图片描述
    s表示为对象的名称、i表示对象的序号,数组$VALUES存放当前枚举类的所有对象。
    4.valueOf方法,通过名称获取枚举类对象
    在这里插入图片描述

    5 分析枚举单例为什么不能反射

    尝试用有参构造函数反射创建枚举对象

    public class EnumSingletonTest02 {
        public static void main(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
            // 枚举底层是如何实现的?
            EnumSingleton.INSTANCE.add();
    
            /*
             * EnumSingleton.INSTANCE是一个对象  如何初始化呢?
             * 定义的枚举最终底层肯定是一个类 枚举在底层肯定转换成类 编译器实现优化,底层转换类
             */
            // 存放枚举中的所有对象
            EnumSingleton[] values = EnumSingleton.values();
    
            // 1.使用java的反射技术执行枚举的有参构造函数..
            Class<EnumSingleton> enumSingletonClass = EnumSingleton.class;
            // 2.查找当前类是否有该构造函数
            Constructor<EnumSingleton> declaredConstructor = enumSingletonClass.getDeclaredConstructor(String.class, Integer.class);
            declaredConstructor.setAccessible(true);
            // 3.调用反射方法初始化对象
            EnumSingleton enumSingleton = declaredConstructor.newInstance("zhangsan", 11);
            enumSingleton.add();
    
        }
    }
    

    在这里插入图片描述
    使用java的反射技术执行枚举类的有参数构造函数,反射的newInstance()方法强制限制如果是枚举类型,会抛出该异常。
    在这里插入图片描述

    6 每特教育精讲设计模式总结

    设计模式总结

    策略模式:
    官方描述(定义一系列算法,把他们封装起来,并且使它们可以相互替换)
    白话文描述:有共同的抽象行为,具体不同的行为称为不同的策略,最终可以使用Context上下文获取对应策略。
    应用场景:解决多重if判断问题、聚合支付平台、第三方联合登陆、调用多个不同短信接口等。

    责任链模式:
    官方描述:(将请求的发送者和接收者解耦,使的多个对象都有处理这个请求的机会。)
    白话文描述:每一个业务模块之间相互依赖有关联,每个关联模块称作为handler(处理器),使用上一个handler引用到下一个hanlder实现一个链表。
    应用场景: 权限控制、网关权限控制、审批、风控系统等。

    模版方法:
    官方描述:定义一个算法结构,而将一些步骤延迟到子类实现。
    白话文描述: 提前定义好整体的骨架,共同抽象的行为定义在父类中,不同的行为让子类实现。(重复代码抽取到父类里面,不同业务的具体实现交给子类进行处理)
    应用场景:支付异步回调重构、Servlet实现

    装饰模式:
    官方描述:动态的给对象添加新的功能。
    白话文描述: 在不改变原有对象的基础上附加功能,相比生成子类更灵活。
    应用场景:IO流

    代理模式:
    官方描述:为其他对象提供一个代理以便控制这个对象的访问。
    白话文描述: 通过代理控制对象的访问,调用对象中的方法,在方法调用之前或之后可以做其他操作
    应用场景:AOP、事务、日志、权限控制

    观察者模式:
    官方描述: 对象间的一对多的依赖关系。
    白话文描述:在对象之间定义一对多的依赖,当一个对象改变状态时,依赖它的对象收到通知并自动更新。 其实就是发布订阅模式,发布者发布消息,订阅者获取消息,订阅了就能收到消息,没订阅就收不到消息。
    应用场景:发布订阅、事件通知、 Zookeeper、事件监听操作

    门面(外观)模式:
    官方描述: 对外提供一个统一的方法,来访问子系统中的一群接口。
    白话文描述:把一些复杂的流程封装成一个接口供给外部用户更简单的使用。

    状态模式:
    官方描述: 允许一个对象在其对象内部状态改变时改变它的行为。
    注意:状态模式与策略模式本质上没有很大区别,主要根据行为划分,如果有共同抽象行为使用策略模式,没有共同行为就使用状态模式。

    适配器模式:
    官方描述: 将一个类的方法接口转换成客户所希望的另一个接口。
    应用场景:mybatis日志收集、提供接口转换。

    单例模式
    官方描述: 保证在一个jvm中只能有一个实例。

    什么是单例–>单例中有七种写法–>七种写法对比–>反射机制可以破解单例–>最靠谱单例 枚举–>枚举底层是如何实现–>为什么反射不能破解枚举

    展开全文
  • 什么是区块链技术

    2021-01-07 22:15:03
    1948年第一张人民币问世,70...区块链技术是虚拟数字货币的底层技术,它可能带来互联网的第二次革命,让“信息互联网”转向“价值互联网”。变革即将发生,未来已来,学习区块链就是抓住了世界发展的浪潮。 区块链是一
  • 区块链技术是什么

    2021-03-13 15:13:03
    当前,随着比特币的知名度不断攀升,其底层技术——区块链技术也经常出现在大众的视野。区块链作为一种去中心化的分布式计算技术,将在互联网发展中占据重要地位,很可能从根本上改变互联网的运行模式,其重要性...
  • 【TechWeb】近日,由中科院孵化高科技机构在北京发布了第一款基于龙芯芯片国产域名服务器,...从技术来讲,突破了全球13个根服务器数量限制,对于我国底层互联网技术的发展意义非凡。 什么是根服务器呢?根服...
  • IPFS一直一个备受关注项目,它到底能为世界带来哪些改变,互联网又为什么需要IPFS呢? 如上个世纪90年代的互联网,当今区块链也处在发展初期。区块链技术必将带来一场变革,成为改变我们日常生活的技术。HTTP...
  • 吕宏利,来自硅谷SRE,多年国内外大型互联网公司运维开发经验,专注于分布式系统设计、监控、容量规划,数据中心技术以及生产环境最佳实践。 GSLB是什么 GSLB 一种常见解释是 Global Server Load Balancing ...
  • 云计算描述了一种基于互联网的新的IT服务增加、使用和交付模式,通常涉及通过互联网来提供动态易扩展而且经常虚拟化的资源。云其实网络、互联网的一种比喻说法。因为过去在图中往往用云来表示电信网,后来也用来...
  • 对于“区块链”的狂热追逐好似一场大风迅猛而过,最终沉淀下来的企业和开发者也许才真正执着于其...作为首家达到百万 TPS 性能的底层区块链技术平台,迅雷链(ThunderChain)已经运行一整年,其卓越的技术性能和开放...
  • 哈哈,大家好,我又来了,我他妈就是打不死小强,公众号被封了,前面57篇日记普及了很多...如果要弄个微信公众号卖毒面膜,或者网络直播卖笑,对于底层技术一无所知也不影响使用。 所以吧,这个怎么说呢,...
  • 通过深入了解比特币系统我们已经知道,区块链源自比特币的底层技术,它让我们可以无须借助任何第三方中介直接进行价值表示和价值转移,它还给数字世界带来了价值表示物——通证。区块链将使互联网从“信息互联网”...
  •  区块链(Blockchain)的底层逻辑以共同竞争记账方式存储信息,每一页加密账本相当于“区块”,而交易审核结果盖上了不可篡改的时间戳,遍布存储于整个网络。这种“分布式总账技术”带来了权益归属和陌生人的互信,...
  • 1. 什么是远程调用 远程调用: 一个项目调用另外一个项目模块(功能) 调用过程: 模拟浏览器过程 2.常见远程调用方式 RPC: 自定义数据格式远程调用方式。 更偏向于底层,通信速度快, 效率高。 常见框架: ...
  • 然而也必须说明一点,不论Android开发还是iOS开发,虽然都出现了相关程序员供大于求情况,但市场仍然有需求,特别对资深开发人员及拥有相关底层开发知识应用程序员市场及发展还是很多;这里所讲...
  • 到了数字化业务竞争时代,获客方式和服务模式改变,越来越多客户数据洞察机会、新客户接触点...容器技术贯穿底层基础设施资源管理、上层应用生命周期管理,一个使用场景极为丰富、回报价值很高新兴技术。但容器...
  • XFS Labs 意旨在探索互联网底层技术革新,为全人类分布式存储提供更具完善、成熟解决方案 XFS 项目内置了文件切片加密、冗余多副本、动态存储等相关底层设计,目标成为全球最大分布式云盘和边缘云存储基础设施...
  • 通证经济区块链产业提出的一个新概念。很多人不明白什么是通证经济,通证经济的前景如何。...区块链作为比特币的底层技术而被人们熟知,并不因为技术本身,而是因为比特币在金融价值上的实现,
  • 互联网架构,很多时候面临这样需求: ...58 生产环境上,唯一性 ID 生成用的是什么方案? 往期回顾:互联网数据库“跨库分页”架构技术实践 当前内容版权归码字科技所有并授权显示,盗版必究。阅读原文
  • 区块链技术改变的是现有底层的互联网逻辑,可以更新整个底层商业操作系统。 HTTP协议为基础古典互联网是信息传递为主,但信息传递和价值传递不能划等号,信息传递中可以作假或者创造信息不对等。 中国互联网...
  • Spring底层原理探究

    千次阅读 2020-10-11 19:03:28
    Spring底层原理 前言   离上一篇文章记录差不多过了半年左右时间吧,这段时间很多面试准备,知识点学习基本被我转移到了书面笔记上,秋招仍在...互联网时代软件行业技术开源精神普及,分享技术是一件有助于自己
  • 随着互联网的普及率增高,我国程序员的数量也在逐年增多,但是你知道一位高薪程序员,最需要掌握的技术是什么吗? 是数据结构和算法! 算法作为编程的内功,因为枯燥/有难度很多人,并不重视,或者逃避,应付...
  • 随着国家信息中心主导区块链服务网络(BSN)项目自10月15日... 目前,区块链一种处于初期阶段网络底层技术,普通人本来就不容易理解,加之这些年虚拟货币市场炒作和误导性宣传,导致公众普遍对区块链核心技术逻
  • 测量阶段是什么遍历方式? 描述下Handler机制实现流程? Handler如何进行跨线程发送消息? ThreadLocal原理? Handler消息队列如果为空会怎么处理? Handler死循环为什么不会ANR? ANR是怎么产生底层是怎么实现ANR...
  • 技术、业务和商业关系

    千次阅读 2018-12-01 18:18:21
    大家都在IT互联网行业工作,不知道思考过这个问题没有,那就是技术、业务和商业关系。我们在平时工作中,难免会...3、公司领导只看重商业能力,对底层技术好像不是特别在意,我们开发人员如何在老板那里汇报,...
  • IP 是什么

    2020-10-12 09:44:33
    最近看到 IP 出现频率很高,一直不知道一站式 IP 是什么意思。 IP不就是IP地址吗?192.168.0.1类似于这样冬子呗?...二是分割顶层网络应用和底层网络技术之间耦合关系,以利于两者独立发展。根
  • android 10年了,已经积累了太多的技术,知识点,技巧,思路,这些前人都会了,并且正在创造新的思路出来,对于广大的底层 coder 来说,仅仅追赶就很难了,更别提去自己创造了,但是现实时我们尝尝学习了很多开源...
  • 什么真正区块链+农业?

    千次阅读 2018-11-29 13:20:46
    尽管政府态度很明确:要与产业结合,服务生产与消费,但是区块链底层技术,具体怎么服务,尤其Token背后与产业结合算法怎么做?具体技术如何落实到产业上,至今所有专业人士都在绞尽脑汁解决问题事...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 621
精华内容 248
关键字:

互联网的底层技术是什么