从 ArcBlock DevCon 2020 徽章谈起:什么是通证
作者: 冒志鸿(ArcBlock 首席执行官、首席架构师)、陈俊(ArcBlock 副总裁)
端午节快乐!
ArcBlock DevCon 2020 的门票徽章引发了用户的极大热情、业界的极大关注,上面是 ArcBlock 社区用户用他们贵宾票领到的 NFT 徽章自制的视频。我们借花献佛,为所有关注支持 ArcBlock 的朋友伙伴送上节日的祝福。与此同时,参加网上黑客马拉松的开发者朋友和我们团队则加班加点、用自己参赛 DApps 创意为节日献礼,为大会划上圆满的句号。我们这次大会发行的门票徽章证书,以及即将颁发的黑客马拉松徽章证书,都属于 NFT(Non-Fungible Token,非同质通证)。那么什么是 NFT?通证是什么?和大家耳熟能详的比特币、以太坊等加密货币有何联系和区别?由冒志鸿与陈俊撰写的、中信出版集团出版、今天才印刷出厂的新书**《区块链实战:从技术创新到商业模式》在第 2 部分《破除迷思,深入了解区块链的能力与局限》第 7 章《加密货币、加密资产和通证》**专门做了概念介绍和辨析。
毋庸讳言,这几年来以比特币为主的各种加密资产及其带来的财富效应,才是吸引全世界的普通大众关注了解区块链技术的最大动力,在此之前可能还从未有任何一种计算机技术让如此多的行外人士如此着迷。
误解一:区块链就是比特币或数字货币。这是一种对区块链技术缺乏基本认识的典型误解。比特币、各种加密数字货币只是区块链的一种应用,而区块链支持很多种其他的应用。
误解二:区块链的作用就是用来“发币”。与误解一类似,区块链除了用于“发币”、发通证之外有很多种用途。“发币”的说法常来自炒作加密货币时代的产物。
误解三:“币”或“通证”除了用于炒作没有别的作用。“通证” 有相当多的用途,非常广范的应用场景,绝大部分区块链应用的设计都离不开使用某种形式的通证,即使这些应用不需要使用虚拟货币。加密货币交易虽然在过去可能是加密货币的主要用途,但已经有越来越多的实用项目采用区块链和通证技术。
误解四:政府要发国家数字货币就必须使用区块链。这也是一种误解,设计和实现一个 Token 并不是非需要区块链不可,完全可以不采用区块链技术。不过在技术发展的今天,采用区块链是一个比较有利的选择。
误解五:企业政府必须使用“无币区块链”。“无币区块链” 是一种“名词之争”,是一些人用于把“区块链技术” 和“币”划清界限而炮制的一种不科学的说法,误导性较强。某种角度而言,几乎不太存在无币(通证)的区块链应用场景。 “无币区块链”就好比是“无数据的数据库”一样荒唐可笑。
区块链和“币”
比特币是世界上第一个区块链,因此毫无疑问,谈到区块链是无法回避数字货币的。为了能更好地理解区块链上的币、通证、数字资产的关系,我们有必要首先深入理解区块链的一些设计以及历史成因。
在目前流行的区块链设计里,有两类常见的设计:UTXO 模型和账户模型。 无论加密货币、通证,还是加密资产等都离不开一个核心问题——在区块链上它们归属于谁。而这两种设计模型就是回答这个问题的基础。
UTXO 模型
中本聪在比特币白皮书一开始就引入了“电子硬币( Electronic Coin)”概念,并把它定义为“一连串的数字签名(a chain of digital signatures)”,这就是比特币交易的基础,可能也是比特币之所以成为“币”的原因。
比特币里采用了称为 UTXO(未花费的交易输出)的交易模型,你可能有所耳闻并在本书其他部分读到。作为一本非技术的读物我们不打算仔细讲解这一交易模式,但是可将它类比成日常使用的硬币、纸钞等现金支付这样的方式以帮助理解。
假设买一杯奶茶需要支付 32 元,如果用微信钱包、支付宝或银联等电子支付的话,那么非常简单直接扣除 32 元即可,完全不用担心零头的问题,但是拿出现金支付时,就有以下几种付款找零的情形:
- 32 枚 1 元的硬币,这时候正好不用找零,但大部分时候我们没带这么多硬币在身上
- 3 张 10 元钞票,外加 2 枚 1 元硬币,这样也不需要找零
- 4 张 10 元钞票,店家会给我们 8 枚 1 元硬币作为找零
- 1 张 100 元钞票,店家给我们 1 张 50 元钞票,外加一张 10 元钞票,外加 8 枚 1 元硬币
……
UTXO 就是类似于上述现金支付找零这样的方式,只不过并不是硬币本身,而是一个“找零”记录,这个“找零”记录就被称为 UTXO。
比特币这一设计思路是:只记录交易,不记录最终状态,其一个最大的好处就是验证比较容易,我们仍然用现金消费来理解一下:当我们要买上面那杯 32 元的奶茶的时候,我们看下钱包如果发现所有钞票硬币加起来也不足 32 元,我们马上就知道自己钱不够,而要知道一圈购买下来还剩多少钱,把钱包里没花掉的钱加一下即可。
因此比特币里的交易里不是大家想象的转账方式,把 A 的账户余额减少一点,对应把 B 的账户余额增加一点。比特币的系统里面并没有一个“账户余额”的东西存在,你每次在比特币钱包里看到的余额其实是数字钱包根据区块链上的数据(UTXO)计算出来的。从某种角度上来说,在比特币的系统里并不真正存在“币”本身,而只存在 UTXO,“币”仅仅是计量上的概念。
UTXO 和账户余额的体系相比更复杂,可以表达的状态和附加信息更少,扩展性不足。 但对于比特币这样一个以点对点的电子现金为设计目标的系统来说已经足够,而其高效率、灵活、防止双花攻击更容易等优点更为重要。大量基于比特币代码分叉的区块链都是采用了类似做法,而在更关注应用和扩展能力的区块链,例如以太坊、Hyperledger Fabric、ArcBlock 等都无一例外还是采用了账户模型的设计方式。
账户模型
账户模型和我们常用的互联网账户、银行账户这些账户模型非常接近,因此比较容易理解。你可以把一个用户的账户模型理解成为一组通用的“容器”,其中一种常见的 “容器”叫“计数器”, 这最容易被用来实现“账户余额”。在这种“账户余额”下的交易,就是我们常规理解中的转账——每次转账交易实际上就是多个参与账户之间的数额变化,当然区块链需要保证这些数额是正确的,不会出现双花攻击等,以太坊里的以太币(ETH)就是这样实现的。
账户就像一组通用容器,意味着账户模式非常灵活,一个账户可以包含多种不同的“容器”,用来保存不同的数据,这就意味着一个账户里完全可以有多种不同的“币种”, 除了这种可以任意分拆按“账户余额”计数的,还可以保存那些不可分拆的,也可以组合地保存多种不同的。这就不难理解在以太坊之上,一个账户除了有 ETH 余额,还可以有各种各样 ERC20 Token 的余额,实际上还可以保存各种各样的数据形态。可编程的区块链系统,如以太坊、Hyperledger Fabric、ArcBlock 等账户系统都可以支持几乎可以被应用无限扩展的区块链上的数据。
账户模型和 UTXO 模型并不矛盾,实际上完全可以直接在账户模型下实现和 UTXO 类似的机制,也有一些区块链尝试把两者结合起来。不过在 UTXO 模型下想实现类似账户的机制也相当麻烦。
Token 命名考源
既然账户体系可以保存如此众多灵活的数据,开发者按照用途作出一些约定(称为协议、数据规范、数据格式等)用来表述各种各样的需求。最先出现的称呼当然是沿用习惯的 Coin,但由于 Coin 本身在比特币体系里已有特定含义,而且在实现机制上又有所不同,因此早期开发者采用了 Token 这个词。
早期还曾有人用 Asset(资产)来指称过,比较著名的有染色币时代的“开放资产协议”(Open Assets Protocol)中使用了 Asset 这个词。但由于 Asset 这个词本身表示的“资产”有特定含义,以太坊著名的 ERC20 标准出现时,其规范文档中使用了 Token 来描述这套标准定义。随着以太坊和 ERC20 标准的流行,Token 成为最为主流的命名。
其实 Token 在英文语境下,尤其在计算机领域里,是一个经常拿来指代“一团不知道究竟该如何命名的数据”的“万精油”名词,因此早期开发者用 Token 来命名一点不奇怪。
Token 这个词汇在计算机领域常被用于不同的场合表达不同含义:上图中所示是一个早期著名的网络架构–令牌环网(Token Ring)里 Token 控制发送数据的权力。很多计算机应用场合都还有被称为 Token 的东西,比如 Session Token,Security Token,Access Token、JSON Web Token,CSRF Token 等等,注意他们其实都是不相关的概念,其共性就是一种表示“有特定用处的、独特不重复的、一小块的数据”。
Token 这个词汇在中文世界首先被翻译成了“代币”,这基本抹杀了当初英文世界命名者称其为 Token 的“良苦用心”,不过后来有人建议把它翻译为“通证”,避免其和“币”有直接的字面联系。
Token 翻译的“代币”、“通证”的之争
区块链语境中,这些权益的英语表达还是都用 Token。当中文要进行翻译的时候,显然,“令牌”一词不能满足更丰富的含义,加之区块链项目投机蔚然成风,Token 被许多人翻译成了“代币”,但是显然这个翻译并没有反映出 Token 一词在区块链项目里所代表的准确含义。2018 年,经过国内区块链行业的热烈讨论之后,Token 开始被更多的文章翻译成“通证”。
2018 年,中关村区块链联盟理事长元道与 CSDN 副总孟岩认为,Token 应该翻译成“通证”更为合适。他们认为 Token 就是一种“可流通的加密数字权益证明”。在一个可以运行 Token 的平台上发行加密数字货币,是一件易如反掌的事情。但是直接把 Token 译为代币,肯定是错误的。因为 Token 所代表的,可以是一切权益证明,甚至是一切凭证,不仅仅是货币。但是无论是使用令牌也好,还是代币也罢,都不能很好的体现出 ICO 之后 Token 处于新阶段的角色转换,因为其拥有了更多的作用,所以创造了一个新词“通证”。
Token 区块链语境下的翻译从“代币”改成“通证” 也都是“名词之争”。从 Token 究竟翻译成什么,我们也可以看出人们根据自己立场观察技术的心态,虽然 Token 还是那些作用,也仍然是那个英文单词,但如何称呼它,其实是根据每个人的看法而不同。喜欢以代币来称呼 Token 的,可能更认可更强调 Token 在数字货币的价值,而喜欢使用通证这个译名的人,则认为“通证”才能更全面的反映 Token 实现的多样化功能。
走出“名词之争”
在我看来,读者完全可以认为区块链领域里的 Coin(币)、Token(通证)、Asset(资产)、Cryptocurrency(加密货币)、Crypto Token(加密通证)、Crypto Asset(加密资产)是同一类东西,不必在这些名称里陷入“名词之争”。
比如,说比特币是一种 Coin(币)、Token(通证)、Asset(资产)、Cryptocurrency(加密货币)、Crypto token(加密通证)、Crypto Asset(加密资产),无论用哪个词汇指称它,都对。
在本文的后半部分,我们将用英文的 Token、中文译名“通证”来表述上述任何一种概念。
绝大部分的区块链应用的核心都围绕通证
一个数据库应用的核心是什么?毫无疑问是“数据”,虽然在偶尔极个别应用场景下,数据库会用在和数据本身不相关的地方,例如当年著名的互联网项目 Flickr 曾介绍他们用数据库来作为一个分布式序号计数器的经验。一个电子表格应用,比如微软的 Excel 的核心是什么? 毫无疑问是“电子表格”,虽然有人用 Excel 来作画,并且在网上引起过小小的轰动。 一个区块链应用的核心是什么,答案就是“通证”。
所有数字货币类型的区块链应用,如比特币等,毫无疑问作为币的通证就是其全部。而在著名的企业联盟链 Hyperledger Fabric 设计里,排列其“资产-参与方-交易”模型之首的就是数字资产,一种通证的典型形态,或者另一种叫法。任何使用 DID、可验证证书技术的应用,本质上都是在使用作为身份的通证和作为证书的通证。读完本书,你可能会发现通证技术有非常广范的应用场景,绝大部分区块链应用设计都离不开使用某种形式的通证,即使这些应用不需要使用虚拟货币。
实际上,基于通证的各种应用是区块链未来最令人激动的地方。正如我在序言里展望的那样,未来 10 年里,区块链技术可能将释放其巨大的威力,区块链网络将成为像今天的电信网和互联网一样的社会基础架构,基于区块链的各种数字通证会如同今天电子邮件一样无处不在,以区块链为基础的应用会如今天的万维网站点和移动应用一样成为每个人生活中不可缺少的一部分。
为什么设计实现 Token 需要使用区块链?
首先设计和实现一个 Token 并不是非需要区块链不可。
你没有看错,区块链并不是必要的,在区块链诞生和流行之前,人们已经用很多种方式实现了各种各样类似的数字币、数字通证的各种功能,被成千上万人使用。看一看现在的网上银行、各种航空公司、酒店或商家的里程积分系统、游戏点卡等等,这些业务已经成熟使用了很多年,这就充分说明没有区块链不影响这些通证业务成功开展。
那么,现在需要设计一个使用 Token 的应用需不需要使用区块链技术呢?答案是:Yes!为什么?因为用区块链技术来定义 Token 是最新的技术进展,比用传统数据库的方式更安全、高效、架构成熟。
很多人因为比特币而知道加密货币和通证。在比特币之前,数字化的货币就是密码学的一个研究分支。密码学界一直有个梦想:手里的实物现金能否数字化,通过数字加密技术像发一封电子邮件那样,直接从某一个数字身份转移到另外一个数字身份名下?读者在第一部分第二章“区块链诞生之前”部分了解到的各种密码学的进步及其应用在 eCash、B-money、BitGold 等探索发明各种数字货币。这些创新突破分别通过签名技术解决了数字货币发行者、持有者的身份问题,非对称加密技术则部分解决了数字货币的流通问题,留下的核心难题“双重花费”问题被 2009 年横空出世的比特币用点对点交易、全网记账和 UTXO 账户设计加以解决。
过去使用中心化的系统来实现数字货币或通证的功能,需要为安全性、可靠性、可审计性付出巨大的代价。那些小规模移动游戏里的积分、虚拟币系统之所以似乎并没有花费巨大,只是因为其本身价值还不够大。
区块链必须有 Token 吗?
虽然大部分区块链系统都默认设计有 Token,但并不是必须的。区块链系统完全可以不设计 Token。例如一些联盟链系统,比如 Hyperledger Fabric、R3 Corda 等通常就没有包含默认 Token。
我们已经知道 Token 其实只是用来表征链上某种实体的数据而已,那么区块链作为一种数据库,只要里面有数据存在就一定是表征某个实体,因此这个区块链系统即使不设计 Token,应用如果需要的话也可以在此基础上再创建出 Token 来。在数字货币概念比较受排斥的时候,有一些人提出了所谓“无币区块链”,可以认为这是另外一种名词之争。当你读完本章或本书对区块链及其应用有更多理解后,会发现绝大部分区块链应用设计都离不开使用某种形式的通证,即使这些应用不需要使用虚拟货币,因此**“无币区块链”纯属于无稽之谈**。
比特币设计时采用了一个有趣的激励机制,就是给每轮里成功产生区块的“矿工”一定数量的比特币作为奖励。后来的很多区块链的激励机制,也使用类似的“挖矿”奖励 Token 的形式,因此有人认为 Token 和激励机制是必然的对应关系。其实,这并非必然,只不过在一个区块链上采用链上 Token 作为奖励惩罚机制比较容易实现。区块链上可以设计 Token 但不用于激励机制,也完全可以设计或使用一个区块链而没有激励机制,或者使用其他的方式来作为激励机制而不使用通证。
同质通证(FT)和非同质通证(NFT)
还有一种划分方式是按照 Token 是否同质、是否可拆分来区分出两类不同的 Token:同质通证( Fungible Token,缩写 FT)和非同质通证(Non-fungible Token,缩写 NFT)。
同质通证
所谓同质通证就是可以切分,只要数额相等的就意义相同的这种通证。常见的加密货币,如比以太币(ETH),或者各种 ERC20 Token 都属于同质通证。
举例而言,我的以太坊账户里原来有 10 枚 ETH,无论经过多少次转账后,只要我账户里仍然还有 10 枚 ETH,那么对我而言这个账户余额就没有任何变化。也就是任何进进出出的 ETH 都是同质的,用户在意的仅仅是数量。
非同质通证
非同质通证是独一无二的,也是不可替代的。例如一张证书、一张门票等,即使他们有同类,甚至非常类似,但每一个都是独一无二的,而且他们通常也无法被切割拆分。
比如著名的以太坊游戏加密猫(Cryptokitty)就是使用了 ERC721 标准在以太坊上发行的非同质通证,每只猫都对应着一个独一无二的非同质通证。
非质通证有各种各样的形态,从徽章、证书、会员卡、门票等等都是典型的非同质通证,有着非常丰富的场景
其实如果再细分非质通证的话,还可以有一些更有趣的分类。比如有些通证虽然独一无二,但属于同一类型,因此可以为这些通证定义出一个“类”或“模版”,免得每个通证都需要包含相同的信息浪费区块链资源。比如电影票,大部分票的样子都差不多,因此可以定义一个电影票公用模版的通证,然后每张票只需要很少的独特信息(如场次、座位等)。以太坊上的 ERC1155 标准在 ERC721 上作出延伸,就是解决这样的非同质但有类和模版的标准。
多个不同的非同质通证有时候也许有需求组合成另外一个通证,一个典型的例子,例如一个情人节的礼物促销,一个礼包的通证里包含了两张电影票,一张停车券,还有一张餐厅消费卡。 在以太坊上也有 ERC998 来提供这种组合型的非同质通证的标准。
上面提到的 ERC 标准都是以太坊上的通证标准,需要注意在不同的区块链上通证的格式、协议等目前没有统一标准。例如在 ArcBlock 的区块链上和非同质通证相关的协议称为 ABBA 协议(ArcBlock Blockchain Assets Protocol,ArcBlock 区块链资产协议),而在 Algorand 区块链上称为 ASA(Algorand Standard Assets,Algorand 标准资产)标准。可以预见在未来 Token 协议标准方面的不同会是一个挑战。
在这个定义下,细心和喜欢思考的读者可能会想,那么比特币和那些使用 UTXO 的币应该算哪一种呢?我觉得在概念上可以认为符合同质通证,但在其具体实现上又更接近非同质通证,因为每一个 UTXO 都是独一无二的。这其实也不难理解,想象一下现实中的钞票,其实每张钞票都有独一无二的编号,从钞票个体而言是非同质的,而对大多数使用钞票的人而言,大家关心的只是钞票上的面值数字而已,因此又是同质的。
我们可以看到,很多概念并不是非黑即白,而是要看从哪一个角度去考虑,“中心化”还是“去中心化”、 “同质”还是“非同质”都是如此。
应用通证(Utility Token)和证券通证(Security Token)
另外一种分类方式按照通证的应用属性来划分,即应用通证(Utility Token)和证券通证(Security Token)。
应用通证
应用通证是设计赋予持有者某种使用权利的通证。例如,电影票可以认为是一种典型的应用通证的例子,持有某张电影票,就可以让持有者在特定的时间在特定的场次特定的座位上观看电影。类似这样具有应用特性的通证不胜枚举,除了门票之外,还有如会员卡、礼品卡、身份证、学历证明等等。
应用通证由于可以承载和应用相关的信息、规则、甚至业务逻辑,因此应用通证可以大幅度地提高生产效率,甚至革新商业模式。以上面的电影票为例,读者可以思考一下,为什么电影院需要有卖票这个步骤,而不是让人拿着等值的钱入场? 原因非常简单,因为票上含有场次、座位等信息,有了这些信息,电影院可以更好地规划自己的场次,更可预料管理自己的票房收入,而持有票的人可以更有预期了解自己获得什么样的体验,这是比拿现金临时入场不可能具备的优势。 正是如此,今天的电影、演唱会、飞机、火车等等都采用票券这样的应用通证体系。
应用通证的形态和使用场合是千变万化的,并可进行组合,因此应用通证是一种最常用的区块链应用开发形式。我们前面介绍 DID 的时候提到的可验证证书(Verifiable Cresidentials)可以认为是一类典型的应用通证。
一些有可能被认为是数字货币的区块链通证实际上也是应用通证,因为这些通证被设计出来使用的目的是用来作为使用特定区块链或网络服务的权利通证,但是由于数字货币交易所的存在,使得这些通证被交易从而具有了一些货币和证券的形态。正是因为这种复杂性,使得越来越多的有识之士呼吁各国政府应该对通证制定新的法律,因为证券是一个已经有百年历史的古老事物,很多国家的证券法出现远远早于通证这样的新生事物。
证券通证
证券通证可以用于作为代表公司或项目收入的某种权益,如拥有权、股权、收益权等;证券通证还可以代表传统的证券,即作为任何一种可交易资产的广义分类,从房子等不动产,贵重金属到代币都算是可交易资产。
用通证技术来升级传统的证券有非常多的优势,更为安全可靠,还可以结合智能合约等实现更多自动化和先进的功能。
由于各国政府的监管因素,一旦通证被认为属于“证券(Security)”就往往面临更多严格的监管要求,因此很多时候,区块链的应用开发者在设计通证的时候需要仔细规划和考虑其属性。通证是否属于证券,目前还没有定论,本书不打算就这一法律问题展开,而是专注于介绍通证在技术上的特性和功能。
新书已在京东、当当、天猫上架,欢迎点击购买。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- javascript之promise基础篇
目录promisepromise的链式编程一个简单的GET请求(结合ajax和peomise)fetch()fetch中一个简单的GET请求fetch中的POST请求async和await详情且看 promise promise的链式编程<div class="box"></div><div class="box"></div><di…...
2024/4/29 13:08:10 - 计算机基础知识
计算机基础知识 一、 (一)、计算机计算机(Computer)全称:电子计算机,俗称电脑。是一种能够按照程序运行,自动、高速处理数据的现代化智能电子设备。由硬件和软件所组成,没有安装任何软件的计算机称为裸机。常见的形式有台式计算机、笔记本计算机。按照规模分为微型机、…...
2024/5/7 13:30:16 - MySql 分组后获取每组的最大值、最小值
文章优先发表在个人博客:https://www.xdx97.com/article/733451395906142208假设这样一个场景我们需要获取每个班分数最高的人全部信息(或者最低的人)最后结果如下:一、思路先找到每个班的最高分,然后再连接查询。1-1、获取每个班最高分的sql SELECT MIN(score) score FRO…...
2024/4/18 13:26:10 - 排序之选择排序
简单选择排序 基本操作 1.首先通过n-1次关键字比较,从n个记录中找出关键字最小的记录,将它与第一个记录交换 2.再通过n-2次比较,从剩余的n-1个记录中找出关键字次序最小的记录,将它与第二个记录交换 3.重复上面操作,共进行n-1趟排序后,排序结束 代码 void Select_Sort(Sq…...
2024/4/29 3:18:47 - Python爬虫:Selenium+BeautifulSoup爬取微博头条保存到Mysql
Python爬虫:Selenium+BeautifulSoup爬取微博头条保存到Mysql一、微博网页分析二、完整代码及代码分析三、图片辅助理解 一、微博网页分析可以看见微博数据加载需要滑动滚轮,想要更多数据那么就需要使用到Selenium操纵滑轮二、完整代码及代码分析 from selenium import webdri…...
2024/5/3 6:33:39 - 俺啥也不懂-不知道什么时候才会编写操作系统-一个hello world写一年-操作系统层面的hello
俺啥也不懂-不知道什么时候才会编写操作系统-一个hello world写一年-为什么能输出hello world有时候想啊,自己要是写一个操作系统也不赖,看着网上那些讲解都太糙了,不适合我这种啥都不懂的人,如果给我来写,一个hello world能写一年先贴一个hello world的代码org 07c00h …...
2024/4/26 12:10:15 - 【译】GraalVM—下一代JVM介绍
原标题:GraalVM – an introduction to the next level JVM 随着Red Hat宣布Quarkus作为…为GraalVM和HotSpot量身定制的下一代Kubernetes原生Java框架,使用一流的Java库和标准构建 https://quarkus.ioRed Hat展示的Quarkus示例项目的启动速度和内存消耗给我留下了深刻的印象…...
2024/4/28 7:51:02 - python from skimage.measure import compare_ssim, DLL load failed: 找不到指定的程序
在执行vscode中 按F5调试python脚本时报以下错误 Exception has occurred: ImportError DLL load failed: 找不到指定的程序。 File "F:\Github\ImageDiff\PythonDemo\main.py", line 3, in <module> from skimage.measure import compare_ssim但是检查python包…...
2024/4/29 9:47:38 - Window安装JAVA
JAVA下载 https://www.oracle.com/java/technologies/javase-downloads.html 系统变量配置JAVA_HOME 设置 JAVA_HOME的设置一是为了方便引用,比如,JDK安装在C:\jdk1.8.0目录里,则设置JAVA_HOME为该目录路径,那么以后要使用这个路径的时候,只需输入%JAVA_HOME%即可,避免每次引…...
2024/4/28 2:35:59 - java面试之ConcurrentHashMap
ConcurrentHashMap Segment段 ConcurrentHashMap和HashMap思路差不多的,但是因为他支持并发操作,所以要复杂一些,整个ConcurrentHashMap由一个个Segment组成,Segment代表“部分” 或者“一段”的意思,所以很多地方都会将其描述为 分段锁。 线程安全(Segment继承ReentrantL…...
2024/4/27 11:49:11 - 日志管理journalctl
日志管理journalctl查看所有日志查看内核日志(不显示应用日志)查看系统本次启动的日志查看上一次启动的日志(需更改设置)查看指定时间的日志显示尾部的最新10行日志显示尾部指定行数的日志实时滚动显示最新日志查看指定服务的日志查看指定进程的日志查看某个路径的脚本的日…...
2024/4/25 6:43:17 - golang 分析调试高阶技巧
layout: post title: “golang 调试高阶技巧” date: 2020-6-03 1:44:09 +0800 categories: golang GC 垃圾回收golang 高阶调试Golang toolsnm compile objdump pprof trace单元测试执行单元测试go test 运行 编译,运行统计代码覆盖率程序 Debugdlv 调试用法调试二进制 调试进…...
2024/5/5 6:36:21 - 前端跨域的原则
前端跨域的原则与避免途径 1.跨域跨域资源共享(Cross-Origin Resource Sharing, CORS)是为解决 Ajax 技术难实现跨域问题而提出的一个规范,这个规范试着从根本上解决安全的跨域资源共享问题。 2.option请求option请求是一种探测性的请求,通过这个方法,客户端可以在采取具体资…...
2024/4/9 0:38:06 - shiro 深入学习 (下)
指路:上篇博客目录授权(Authorization)授权的核心权限(permission)角色(role)用户(user)为 Subject 授权(Authorizing Subjects)授权顺序(Authorization Sequence)RealmRealm AuthenticationAuthorizingRealm 抽象类Realm Credentials MatchingSimpleCredentialsM…...
2024/4/19 10:15:40 - 前端学习笔记(五)HTML+CSS静态页面实战案例:幸福西饼首页和百度首页
按照知乎上面汪小黑推荐的前端学习路径,在自学了HTML和CSS之后,开始尝试实战制作静态页面小项目。 幸福西饼首页制作 首先我在网上下载到了千锋教育提供的的幸福西饼官网静态页面的教学视频和图片素材、源码等。我是先看一集视频,然后关掉视频自己敲一遍代码。然后再和源码进…...
2024/4/24 20:00:19 - 蓝桥杯摔手机测试次数
题目:标题:测试次数 x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机。 各大厂商也就纷纷推出各种耐摔型手机。x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来,之后才允许上市流通。 x星球有很多高耸入云的高塔,刚好可以用来做…...
2024/4/28 11:03:29 - mongo的建立库和查询
如何使用mongo,创建数据库use,查询库,寻找表,增删改建立在查的基础上...
2024/4/9 0:38:01 - 自我记录:Python学习之OpenCV 11 模板匹配
https://blog.csdn.net/qq_43660987/article/details/91039495...
2024/4/21 20:16:25 - Spring Boot系列:application.xml配置文件的使用
Spring Boot系列:application.properties配置文件的使用...
2024/4/9 0:37:59 - Java比较器
Java中的比较器 自然排序是实现Comparable接口,重写CompareTo(obj)方法 /*一、说明:Java中的对象,正常情况下,只能进行比较:== 或 != .不能使用 > 或 <但是在开发的场景中,我们需要比较对象中的大小。如何实现? 实现两个接口中的任何一个 Comparable 或 Comparator…...
2024/4/26 13:16:35
最新文章
- Qt---day2-信号与槽
1、思维导图 2、 拖拽式 源文件 #include "mywidget.h" #include "ui_mywidget.h" MyWidget::MyWidget(QWidget *parent) : QWidget(parent) , ui(new Ui::MyWidget) { ui->setupUi(this); //按钮2 this->btn2new QPushButton("按钮2",th…...
2024/5/7 23:47:17 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 机器学习——模型融合:平均法
机器学习——模型融合:平均法 在机器学习领域,模型融合是一种通过结合多个基本模型的预测结果来提高整体模型性能的技术。模型融合技术通常能够降低预测的方差,提高模型的鲁棒性,并在一定程度上提高预测的准确性。本文将重点介绍…...
2024/5/5 9:25:05 - Ubuntu磁盘扩容
使用 df -h命令查看系统磁盘控件的使用情况: [samspobosrv:~]$ df -h Filesystem Size Used Avail Use% Mounted on udev 7.8G 0 7.8G 0% /dev tmpfs 1.6G 1.7M 1.…...
2024/5/6 17:45:24 - 解决npm install安装node-sass包容易失败的问题
具体问题如下: npm ERR! code ERESOLVE npm ERR! ERESOLVE unable to resolve dependency tree npm ERR! npm ERR! While resolving: XXX3.4.0 npm ERR! Found: webpack5.31.2 npm ERR! node_modules/webpack npm ERR! peer webpack”^4.0.0 || ^5.0.0″ from html-…...
2024/5/6 13:31:08 - 416. 分割等和子集问题(动态规划)
题目 题解 class Solution:def canPartition(self, nums: List[int]) -> bool:# badcaseif not nums:return True# 不能被2整除if sum(nums) % 2 ! 0:return False# 状态定义:dp[i][j]表示当背包容量为j,用前i个物品是否正好可以将背包填满ÿ…...
2024/5/7 19:05:20 - 【Java】ExcelWriter自适应宽度工具类(支持中文)
工具类 import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellType; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet;/*** Excel工具类** author xiaoming* date 2023/11/17 10:40*/ public class ExcelUti…...
2024/5/7 22:31:36 - Spring cloud负载均衡@LoadBalanced LoadBalancerClient
LoadBalance vs Ribbon 由于Spring cloud2020之后移除了Ribbon,直接使用Spring Cloud LoadBalancer作为客户端负载均衡组件,我们讨论Spring负载均衡以Spring Cloud2020之后版本为主,学习Spring Cloud LoadBalance,暂不讨论Ribbon…...
2024/5/6 23:37:19 - TSINGSEE青犀AI智能分析+视频监控工业园区周界安全防范方案
一、背景需求分析 在工业产业园、化工园或生产制造园区中,周界防范意义重大,对园区的安全起到重要的作用。常规的安防方式是采用人员巡查,人力投入成本大而且效率低。周界一旦被破坏或入侵,会影响园区人员和资产安全,…...
2024/5/7 14:19:30 - VB.net WebBrowser网页元素抓取分析方法
在用WebBrowser编程实现网页操作自动化时,常要分析网页Html,例如网页在加载数据时,常会显示“系统处理中,请稍候..”,我们需要在数据加载完成后才能继续下一步操作,如何抓取这个信息的网页html元素变化&…...
2024/5/7 0:32:52 - 【Objective-C】Objective-C汇总
方法定义 参考:https://www.yiibai.com/objective_c/objective_c_functions.html Objective-C编程语言中方法定义的一般形式如下 - (return_type) method_name:( argumentType1 )argumentName1 joiningArgument2:( argumentType2 )argumentName2 ... joiningArgu…...
2024/5/7 16:57:02 - 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】
👨💻博客主页:花无缺 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 花无缺 原创 收录于专栏 【洛谷算法题】 文章目录 【洛谷算法题】P5713-洛谷团队系统【入门2分支结构】🌏题目描述🌏输入格…...
2024/5/7 14:58:59 - 【ES6.0】- 扩展运算符(...)
【ES6.0】- 扩展运算符... 文章目录 【ES6.0】- 扩展运算符...一、概述二、拷贝数组对象三、合并操作四、参数传递五、数组去重六、字符串转字符数组七、NodeList转数组八、解构变量九、打印日志十、总结 一、概述 **扩展运算符(...)**允许一个表达式在期望多个参数࿰…...
2024/5/7 1:54:46 - 摩根看好的前智能硬件头部品牌双11交易数据极度异常!——是模式创新还是饮鸩止渴?
文 | 螳螂观察 作者 | 李燃 双11狂欢已落下帷幕,各大品牌纷纷晒出优异的成绩单,摩根士丹利投资的智能硬件头部品牌凯迪仕也不例外。然而有爆料称,在自媒体平台发布霸榜各大榜单喜讯的凯迪仕智能锁,多个平台数据都表现出极度异常…...
2024/5/7 21:15:55 - Go语言常用命令详解(二)
文章目录 前言常用命令go bug示例参数说明 go doc示例参数说明 go env示例 go fix示例 go fmt示例 go generate示例 总结写在最后 前言 接着上一篇继续介绍Go语言的常用命令 常用命令 以下是一些常用的Go命令,这些命令可以帮助您在Go开发中进行编译、测试、运行和…...
2024/5/7 0:32:51 - 用欧拉路径判断图同构推出reverse合法性:1116T4
http://cplusoj.com/d/senior/p/SS231116D 假设我们要把 a a a 变成 b b b,我们在 a i a_i ai 和 a i 1 a_{i1} ai1 之间连边, b b b 同理,则 a a a 能变成 b b b 的充要条件是两图 A , B A,B A,B 同构。 必要性显然࿰…...
2024/5/7 16:05:05 - 【NGINX--1】基础知识
1、在 Debian/Ubuntu 上安装 NGINX 在 Debian 或 Ubuntu 机器上安装 NGINX 开源版。 更新已配置源的软件包信息,并安装一些有助于配置官方 NGINX 软件包仓库的软件包: apt-get update apt install -y curl gnupg2 ca-certificates lsb-release debian-…...
2024/5/7 16:04:58 - Hive默认分割符、存储格式与数据压缩
目录 1、Hive默认分割符2、Hive存储格式3、Hive数据压缩 1、Hive默认分割符 Hive创建表时指定的行受限(ROW FORMAT)配置标准HQL为: ... ROW FORMAT DELIMITED FIELDS TERMINATED BY \u0001 COLLECTION ITEMS TERMINATED BY , MAP KEYS TERMI…...
2024/5/6 19:38:16 - 【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法
文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中,传感器和控制器产生大量周…...
2024/5/7 16:05:05 - --max-old-space-size=8192报错
vue项目运行时,如果经常运行慢,崩溃停止服务,报如下错误 FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 因为在 Node 中,通过JavaScript使用内存时只能使用部分内存(64位系统&…...
2024/5/7 0:32:49 - 基于深度学习的恶意软件检测
恶意软件是指恶意软件犯罪者用来感染个人计算机或整个组织的网络的软件。 它利用目标系统漏洞,例如可以被劫持的合法软件(例如浏览器或 Web 应用程序插件)中的错误。 恶意软件渗透可能会造成灾难性的后果,包括数据被盗、勒索或网…...
2024/5/6 21:25:34 - JS原型对象prototype
让我简单的为大家介绍一下原型对象prototype吧! 使用原型实现方法共享 1.构造函数通过原型分配的函数是所有对象所 共享的。 2.JavaScript 规定,每一个构造函数都有一个 prototype 属性,指向另一个对象,所以我们也称为原型对象…...
2024/5/7 11:08:22 - C++中只能有一个实例的单例类
C中只能有一个实例的单例类 前面讨论的 President 类很不错,但存在一个缺陷:无法禁止通过实例化多个对象来创建多名总统: President One, Two, Three; 由于复制构造函数是私有的,其中每个对象都是不可复制的,但您的目…...
2024/5/7 7:26:29 - python django 小程序图书借阅源码
开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图࿰…...
2024/5/7 0:32:47 - 电子学会C/C++编程等级考试2022年03月(一级)真题解析
C/C++等级考试(1~8级)全部真题・点这里 第1题:双精度浮点数的输入输出 输入一个双精度浮点数,保留8位小数,输出这个浮点数。 时间限制:1000 内存限制:65536输入 只有一行,一个双精度浮点数。输出 一行,保留8位小数的浮点数。样例输入 3.1415926535798932样例输出 3.1…...
2024/5/7 17:09:45 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57