深度对话:从底层看Sui设计理念及网络规模扩展
近日,我们采访了George Danezis以了解Sui的交易处理系统如何促成高性能网络。他是Mysten Labs的联合创始人和首席科学家(Sui的最初贡献者),也是伦敦大学学院(University College London,UCL)安全与隐私工程领域的教授。
您来自学术领域,能介绍一下您的研究重点吗?
我是UCL的教授,研究重点从广义上说叫安全和隐私。在20世纪早期,我在点对点系统和匿名系统方面进行了相当多的研究,这些系统许多都是以存储为重点的大型分布式系统。当整个区块链变得更加注重执行,尤其是以以太坊为代表的,我对分布式账本和区块链以及如何执行智能合约产生了兴趣。其中无需许可的特性,我在早期点对点系统的工作中就非常熟悉。于是,我在UCL的研究小组开始着手研究如何构建更高性能的系统。我们创办了Chainspace公司,将我们的一些想法商业化,后来团队被Facebook收购。然后,我们帮助Facebook提出了扩展区块链Libra/Diem的解决方案。但当方案没有取得进展时,我离开了,继续寻求其他机会来实现高性能区块链的理念。
你还是一个教授,那您觉得应用和研究之间有什么区别?
实际上并没有太大的区别。当我们进行研究时,我们会考虑实现特定目标的所有可能性,比如构建一个高性能的区块链或特定的功能。当然,在构建区块链或选择要在实际系统中使用的特定功能时,我们必须选择其中一个可能。我们必须不断地做出判断,在所有这些好的想法中,哪一个实际上对人们最有用?哪个是人们正在寻求的?区块链的采用存在哪些瓶颈?是什么阻止了人们实现他们想要做的事情?在构建系统时,您仍然会考虑所有可能性,并试图从学术文献中了解可能的情况,然后选择最相关的内容。这不仅仅是知识兴趣,而是为用户创造价值。
从理论到实际应用时,您是如何确定要解决哪些问题的?
我在研究中解决的主要问题是如何扩展区块链的不同功能。我专注于区块链的系统方面,比如,如何增加交易吞吐量并降低延迟。这方面的问题是显而易见的,每当我们看到以太坊上的某个合约变得非常流行时,以太坊平台就无法承受如此大的交易量,发生交易拥堵,费用暴涨。每当区块链取得成功的时候,我们都看到它可处理的交易量都超过了现有的能力。因此,很明显,问题在于没有足够的能力来满足人们在这些区块链上想要做的事情。这不仅仅是出于我们的想法,我们一次又一次地看到这种情况发生。在一段时间内,这被认为是一项有价值的挑战,不仅仅在我的团队,实际上整个学术界都在研究区块链,大家都在用不同的方式解决这个问题。现在,已经有相当多的技术被开发出来扩展区块链的能力,以解决这些挑战。但在当时,众所周知,很多人用不同的方式来解决它。
L2网络是人们提出的解决扩展问题的一种方式,这与建立像Sui这样的新型L1网络,有什么区别和好处呢?
L2是以太坊生态系统中的扩展解决方案。但是对于应用程序开发者来说,使用L2网络有点棘手。当一个L2网络尝试与以太坊进行交互时,必须进行桥接活动,虽然对于任何L2/L1的关系都是如此。在L1中代表coin、资产或其他内容的状态必须在L2中得到镜像,反之亦然。除此之外,L2还必须有一些机制,以便L1可以验证在其中发生的一切。但这仅仅是第一部分,即存在于L1上的任何资产需要转移到L2上,L2上必须发生一些活动,然后以某种方式将资产转回L1。这是很麻烦的。
对于tokens这种可替代的资产,这种桥接活动还算顺利,因为人们拥有两个帐户和一个桥接中间件。但是对于更一般的资产来说,效果并不好。要想在以太坊上实际使用L2网络开发比tokens更复杂的应用,您需要在两边都有智能合约,一个用于铸造(mint),另一个用于销毁(burn)。它们必须在两个不同的生态系统穿梭,这是每个合约的自定义活动。您不能简单地说,我会创建一个L2网络,然后把所有资产带走,然后按照自己的意愿进行操作,将它们带回来,没有这种概念。这是一个手动的过程,非常容易出错。因此,这并不是一个很好的体验。想象一下,您在多个不同的L2网络上都有资产,而且在不同的L2网络上都有这些自定义智能合约。每次您想要对位于另一个L2网络上的某个状态进行操作时,您都必须一路桥接回到L1,然后再回到L2。您不能轻松地说,我在这个区块链上刚刚做了一些事情,然后我要在另一个区块链上做另一些事情,我不需要考虑它是在哪个L1或L2上。一切都在这里,我现在就拿在手上,已经准备好在我想要访问的任何状态上进行更多交易。这就是为什么将状态分散在L2网络中的体验不好。在不同的链之间移动资产非常棘手,对用户来说也显而易见。因此,这就是为什么L2网络从未真正引起我兴趣的原因。
还有一个例子是Cosmos,它拥有一个非常有趣的生态系统,采用了另一种方法,即通过为不同的apps使用不同的区块链来扩展。我们可以在不同的链上进行不同的交易速度,当需要在不同的apps之间进行操作时,可以在链之间桥接资产,但是它也面临同样的问题。每次您想要使用不同的apps时,您首先必须进行桥接操作,这对用户来说是微妙且显而易见的,然后您可以使用该app并桥接回来。您会发现自己花费更多的时间将资产从一条链转移到另一条链,而不是做您真正想做的事情。
在Sui上,我们的方案是建立一个大型数据库,实际上,它包含了所有被验证节点复制的状态。一旦您完成一笔交易,所有在同一个数据库中的状态都可以用于进行下一笔交易,而用户不必在L1和L2上之间不断地移动资产状态。
Sui Lutris是Sui协议的基础,它的关键创新是什么,能使得Sui具有高吞吐量和低延迟的特性?
Sui Lutris由两个关键理念组成:(1)对于区块链上的许多操作,实际上不需要进行共识;(2)当您确实需要进行共识时,有一种非常高吞吐量的方法,它将这两种方法结合在一起。Sui Lutris是Sui分布式系统的核心,确保在分布式网络上进行交易时,遵循协议的两个不同验证节点永远不会处于不一致的状态。从而不会出现一个验证节点认为您花了一个coin并将其发送给了Alice,而另一个验证节点认为同一个coin实际上发给了Bob的情况。
两条不同的路径,一条不需要共识(快速路径),另一条需要共识(共识路径)。当您要操作的对象仅属于您自己,例如您自己的NFT角色和您想要组合的帽子,以便您的角色可以戴上帽子,理论上其他人不应该对它们进行操作。在这些情况下,Sui使用了快速路径,它表示您可以操作自己的对象,您可以在没有等待共识的情况下获得交易的最终性,确保交易发生,帽子戴在了您的NFT头上。
但在某些情况下,交易不仅仅只涉及属于您自己的对象,它们由许多人共享。例如,如果有一个拍卖会出售小帽子,这种类型的拍卖会在Sui中表示为一个共享对象。人们可以竞标,出价最高的人赢得帽子。这种拍卖是一种不属于单个实体的对象,每个人都必须能够竞标、共享,并更新关于最新出价的状态,这些类型的操作需要额外的共识。Sui Lutris允许您拥有共享对象并在其上执行交易,从而您可以拥有其他对象,更改共享对象的状态,或创建新的共享对象。它允许两条路径共存,并且由特定个体拥有的独享对象或由多个人共享的共享对象之间相互作用。
这两条不同的路径具有不同的优势。独享对象的快速路径的延迟极低,需要的时间少于一秒,非常快,并且可以广泛地扩展。共识路径的延迟则较高,通常超过一秒,容量也相当高,但是,与第一条路径相比,它更难扩展。在Sui上,那些真正通过每天数百万次交易来推动链上apps的通常使用第一条路径,并且在很大程度上将其app结构化为主要在独享对象上进行最多的交易,而不是共享交易。另一方面,进行复杂工作的协议(例如DeFi)通常实行第二种类型的交易,因为它们必须将许多不同人的竞标或流动性结合在一起以执行操作。
Sui上的app开发者是否可以设计他们的apps以利用快速路径?
是的,绝对可以。我认为这是一个扩展apps设计者的核心工作。智能合约开发者完全可以控制他们在合约中操作的对象在任何特定时间内是单个实体的独享对象还是共享对象。在Sui中扩展app的一个诀窍是确保大部分操作基本上是在独享对象上进行的,因为Sui可以在非常低的延迟下管理您想要的许多操作,这是一种很好的体验。对于游戏所必需的操作应该在这个类别中进行,与需要通过共享状态和共享对象进行调解的操作相比,它们的延迟非常低。一旦点击,交易就可在网络上立刻完成。
智能合约设计者对此有完全的控制权,他们基本上可以准确的指定每个类别中的交易是什么。当然,合约的第一个版本可以将所有内容都视为共享状态,而所有内容都会通过较高延迟的共识路径进行,但随着需要进行扩展,开发者需要考虑在多大程度上可以做到不需要这些部分。
可编程交易区块在这其中如何发挥作用?
可编程交易区块可以在快速路径或共识路径上发挥作用。如果一个可编程交易区块只涉及您的独享对象,这意味着您可以在一个链上操作中执行多项操作。举个例子,假设您是一个CEX,许多人在这里买卖不同的coins,您可以在链上进行一次交易,概念上对应于人们所买卖的内容。但因为您是交易所,它们都属于您,因此可以同时结算一千个交易,这是快速路径。另一方面,如果在可编程交易区块内的一些对象是共享的,那就进入了共识路径,这时延迟会稍高一些,不是不到一秒钟而是要几秒钟。
主网上线了100多天。Sui的表现有证实您假设的研究理论吗?有没有什么让您感到惊讶的?
有几件事情证实了Sui的设计,但也有一些事情令人深思。一个是在交易量特别多的日子里,甚至是在一个特别的日子里,每天的交易量甚至超过6000万笔,其中大部分交易是处于快速路径。Sui Lutris非常可扩展且具有非常低的延迟。在那之前,尚不清楚是否会有人使用这条路径,但当需要大量交易和低延迟时,它被使用了,而且非常有效!这很容易看到,就是这个方法。在那些日子里,Sui的交易量超过了所有其他区块链的总和。这是一个有趣的验证,证明了Sui的设计是合理的。
与此同时,Sui社区发现这个快速路径有点微妙。因为对象的所有者在某种程度上必须管理他们自己对象上的操作顺序,有时可能会出错。有时他们甚至可能使用无法帮助他们的库,而库本身出错,因此有时对象被锁定。通常它们会在一天结束时,即一个epoch结束时解锁,但这并不是一个很好的体验。设计智能合约的人对此可能会感到害怕,担心可能会错误地发生这种情况,这阻止了他们充分利用低延迟和可扩展性的设施。一整套技术正在被开发,允许那些被错误地锁定对象的人在几秒钟内快速解锁它们。因此,如果您尝试使用快速路径,发生错误,您的对象被锁定,那么您可以立即使用共识路径将其解锁,而无需等到一个epoch结束。
而且,奇怪的是,这不仅仅是为了避免错误。它还允许开发人员通过快速路径来表达更多的事情,存在一些潜在的技术,其中一些对象不仅仅是由一个当事方拥有。也许有一个对象是你和我共同拥有的。因为它是共享的,通常在该对象上的交易必须通过共识路径进行。然而,如果Sui有一种快速解锁对象的方法,开发人员实际上可以尝试通过快速路径进行交易。在你和我恰好在同一时间对同一对象进行交易的情况下,系统将被锁定,无法决定哪个交易发生在下一个,然后Sui可以解锁它,并使其经过共识路径,使其变为共享并解决它。但除非人们故意试图竞争,否则这种情况是不可能发生的。一旦Sui具备了允许解锁对象的功能,它应该能够让属于多个人的对象通过快速路径。这是一种试图通过快速路径尽可能多地传递交易量的游戏,这是正在开发以帮助构建者社区的一种类型的事情。
您能更详细地分享一下当前导致对象锁定的原因吗?
当一个对象属于你时,它之所以不需要通过共识来告诉Sui发生的一系列操作的顺序,是因为没有其他人可以对你的对象进行操作。Sui依赖于你告诉系统,动作A将首先发生,动作B将其次发生,动作C将最后发生。系统仍然必须检查ABC是否被所有人以相同的顺序看到。该系统通过一个分布式协议来实现,只检查我们是否都依次看到了ABC。问题是,如果你犯了一个错误,或者你的软件犯了一个错误。例如,如果你的手机控制你的资产,你的计算机控制你的资产,你的手机表示首先发生的是A,而你的计算机表示首先发生的是B。你错误地对两件不同的事情进行了排序。这是一个矛盾。在这种情况下,Sui会说:“好吧,我委托告诉我顺序的人似乎给了我两个矛盾的事情,所以我不知道该怎么做。我不知道如何解决这个问题。”因为Sui通常通过共识路径来解决这个问题。但在这里,你正试图使用快速路径。所以Sui举起了它的手说:“好吧,在这里出现了一个错误。”
最初的假设是,这种情况不会经常出现,但事实证明它经常发生,因为人们使用不同的设备,或者试图在同一时间对相同的对象进行多次交易。目前,当这些对象被锁定时,Sui会等到epoch结束才将它们解锁,这非常令人担忧。想象一下,如果你的资产在一天内无法使用,这实际上可能是一个严重的问题。
因此,现在Sui需要发展以在某物被锁定时采取正确的行动。如果被委托提供正确顺序的实体给出了一个不明确的顺序,Sui将把整个情况通过共识来解决。这将在几秒钟内发生,而不是在一个epoch结束时发生。
您的很多研究都是围绕隐私展开的。您对公链如何最好地平衡透明度、可追溯性与隐私有何看法?
在公链中,如何平衡透明度、可追溯性和隐私,这是一个非常应用相关的问题,而我在隐私方面的观点是,什么需要保持隐私在很大程度上取决于应用本身。例如,在Sui上,让应用开发者来开发合约以保护其用户的隐私是很合理的。因为有些人只想开发游戏,可能对隐私问题的关注不是那么大。有些人想在区块链上处理金融事务,隐私可能更令人担忧,但与此同时,还会涉及到其他种类的监管问题。所以Sui的态度是,我们会提供给你一个很好的平台,你需要在这个平台上构建隐私。
为了帮助人们构建隐私,Sui提供了一些加密原生支持,这些支持在设计智能合约时可能会对他们有用。其中最重要的一个是在Sui上验证零知识证明的能力。有一个本地函数可以验证最广泛使用和理解的方案之一,即由我的同事Jens Groth开发的Groth16方案。这意味着,实际上,apps的设计者可以在链下验证某些事件,而不需要透露这些事件是什么。这是构建一整类隐私友好型应用的基本构建模块,它们将一些状态保持在链外,但在链上,您可以验证链外发生的任何事情是正确的。
应用开发者决定了他们的应用需要什么样的隐私保护,并使用这些原生支持来组合链上、链下、链上加密等策略,以应对他们可能遇到的隐私问题。
在Sui上是否有更多的隐私原生支持?
社区正在思考开发者在更加隐私友好的情况下编写智能合约所需的支持,零知识证明就是其中之一,有些人可能会认为Sui需要更多通用的数学或密码学函数在链上。我们很愿意看到智能合约的设计者就缺失的部分提供反馈,还有其他一整类的技术可以用来保护隐私,比如多方计算或可信硬件。不同的区块链已经朝着这些方向发展,这些需要非常复杂的附加系统。社区中需要足够的证据表明人们想要这些技术,因为它们代表了对Sui架构的一些基本变化。但是如果社区想朝着这个方向发展,就会有一个提出添加隐私保护方式的流程。
您认为在未来6到12个月内Sui会如何发展?
这取决于人们在Sui上开发了什么样的应用,在短期内,很多改进将针对人们实际构建的应用。从非常长远的角度来看,在区块链标准下,6到12个月可以被视为非常长的时间,我们将会改进Sui Lutris协议,以实现更低的延迟,更简单的协议,使Sui能够更好地扩展。此外,还会使经济更高效,使验证节点能够在更受限的硬件上运行,并将现有的硬件用于实际执行交易,而不是进行密码学或区块链的其他开销。这是我们预期将会看到的内容。
关于 Sui Network
Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有水平可扩展性,让开发者能够快速且低成本支持广泛的应用开发。获取更多信息:https://linktr.ee/sui_apac
官网|英文Twitter|中文Twitter|Discord|英文电报群|中文电报群
相关文章:

深度对话:从底层看Sui设计理念及网络规模扩展
近日,我们采访了George Danezis以了解Sui的交易处理系统如何促成高性能网络。他是Mysten Labs的联合创始人和首席科学家(Sui的最初贡献者),也是伦敦大学学院(University College London,UCL)安全…...

2.单链表练习
1. 链表的基本概念 链表(Linked List)是一种常见的数据结构,用于存储一系列元素,这些元素可以是任意类型的数据。链表中的每个元素被称为节点(Node),每个节点包含两部分:一个存储数…...

Wordpress 安装插件和主题报错
安装主题和插件的时候,就是这个恶心的报错, Wordpress plugin install: Could not create directory 这是权限惹的祸,如下一顿操作猛如虎,就解决了。 sudo chown -R www:www wp-content/themes sudo chown -R www:www wp-conte…...

Spring Cloud 2022.x版本使用gateway和nacos实现动态路由和负载均衡
文章目录 1、nacos下载安装1.1、启动服务器1.2、关闭服务器1.3、服务注册&发现和配置管理接口 2、代码示例2.1、app1工程代码2.2、app2工程代码2.3、gateway网关工程代码 3、动态配置网关路由3.1、配置动态路由3.2、配置为负载模式 4、gateway配置规则4.1、请求转发&#x…...

CSS中如何隐藏元素但保留其占位空间(display:none vs visibility:hidden)?
聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ display: none;⭐ visibility: hidden;⭐ 如何选择⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅!这个专栏是为…...

无涯教程-机器学习 - 数据可视化
在上一章中,无涯教程讨论了数据对于机器学习算法的重要性,以了解具有统计信息的数据,还有另一种称为可视化的方式来理解数据。 借助数据可视化,可以看到数据的属性保持什么样的关联,这是查看要素是否与输出相对应的最…...

springboot设置日志输出级别
一、日志等级 trace:最低等级 debug:调试用,通常用于跟踪程序进展 info: 记录用,通常用于记录程序行为 warn:警告 error:错误 fatal:灾难性错误,最高等级 配置application.yml 实现…...

buildAdmin的使用笔记
安装buildAdmin 下载完整包,解压进入 buildadmin 的文件夹, 输入命令 composer install 启动的时候使用, php think run 就可以了 为什么启动只需要, php think run 这种启动方式, 我是头一回看见 ,后来才…...

RealVNC配置自定义分辨率(AlmaLinux 8)
RealVNC 配置自定义分辨率(AlmaLinux8) 参考RealVNC官网 how to set up resolution https://help.realvnc.com/hc/en-us/articles/360016058212-How-do-I-adjust-the-screen-resolution-of-a-virtual-desktop-under-Linux-#standard-dummy-driver-0-2 …...

LA@特征值和特征向量的性质
文章目录 方阵特征值和特征向量的性质👺特征值之和特征值之积推论:特征值判定方阵的可逆性 证明小结 导出性质可逆矩阵的特征值性质转置矩阵和特征值矩阵多项式的特征值不同特征值的特征向量线性无关定理推论推广 特征向量线性组合特征值的重数性质 方阵特征值和特征…...

Springboot使用kafka事务-生产者方
前言 在上一篇文章中,我们使用了springboot的AOP功能实现了kafka的分布式事务,但是那样实现的kafka事务是不完美的,因为请求进来之后分配的是不同线程,但不同线程使用的kafka事务却是同一个,这样会造成多请求情况下的…...

您的计算机已被.halo勒索病毒感染?恢复您的数据的方法在这里!
导言: 在当今数字时代,网络安全已经成为了我们生活和工作中不可或缺的一部分。然而, .Halo 勒索病毒的出现,使网络威胁变得更加真切和具体。本文91数据恢复将深入介绍 .Halo 勒索病毒的危害,详细探讨如何高效地恢复被其…...

生成式AI颠覆传统数据库的十种方式
对于生成式AI的所有闪光点,这个新时代最大的转变可能深埋在软件堆栈中。AI算法正在不易觉察地改变一个又一个数据库。他们正在用复杂、自适应且看似更直观的AI新功能颠覆传统数据库。 与此同时,数据库制造商正在改变我们存储信息的方式,以便…...

el-date-picker自定义只能选中当前月份和半年内月份等
需求:el-date-picker只能选中当前月期和当前月期往前半年,其他时间就禁用了不让选择了,因为没数据哈哈。当然也可以选择往前一年等。 一、效果 二、写个日期选择器 :picker-options:日期选项 value-format:选择后的格…...

Pyecharts教程(十一):使用Pyecharts绘制带有滑动数据缩放功能的K线图
Pyecharts教程(十一):使用Pyecharts绘制带有滑动数据缩放功能的K线图 作者:安静到无声 个人主页 目录 Pyecharts教程(十一):使用Pyecharts绘制带有滑动数据缩放功能的K线图前言步骤总结推荐专栏前言 K线图是金融市场分析中常见的图表类型之一,它能够直观地展示价格的变化…...

2023年高教社杯数学建模思路 - 案例:ID3-决策树分类算法
文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法,就是频繁模…...

POJ 3273 Monthly Expense 二分
我们对每个月花费的最小花费进行二分,对于每一次二分的值mid,计算能花的月份数量,如果月份数量小于等于m,我们就不断的缩小mid,直到找到月份数量小于等于m 与 月份数量大于m的临界值,取最后一次满足条件的m…...

图论(基础)
知识: 顶点,边 | 权,度数 1.图的种类: 有向图 | 无向图 有环 | 无环 联通性 基础1:图的存储(主要是邻接矩阵和邻接表) 例一:B3643 图的存储 - 洛谷 | 计算机科学教育新生态 (…...

docker的运行原理
Docker 是一个开源的容器化技术,它能够让开发者将应用及其依赖打包到一个轻量级的、可移植的容器中,这个容器可以在几乎任何机器上一致地运行。要了解 Docker 的运行原理,我们首先要理解以下几个核心概念: 容器 (Container): 容器是一个轻量级的、独立的、可执行的软件包,…...

vue自定义键盘
<template><div class"mark" click"isOver"></div><div class"mycar"><div class"mycar_list"><div class"mycar_list_con"><p class"mycar_list_p">车牌号</p>…...

k8s 安装 kubernetes安装教程 虚拟机安装k8s centos7安装k8s kuberadmin安装k8s k8s工具安装 k8s安装前配置参数
k8s采用master, node1, node2 。三台虚拟机安装的一主两从,机器已提前安装好docker。下面是机器配置,k8s安装过程,以及出现的问题与解决方法 虚拟机全部采用静态ip, master 30机器, node1 31机器, node2 32机器 机器ip 192.168.164.30 # ma…...

2023年高教社杯数学建模思路 - 案例:感知机原理剖析及实现
文章目录 1 感知机的直观理解2 感知机的数学角度3 代码实现 4 建模资料 # 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 感知机的直观理解 感知机应该属于机器学习算法中最简单的一种算法,其…...

OTFS-ISAC雷达部分最新进展(含matlab仿真+USRP验证)
OTFS基带参数设置 我将使用带宽为80MHz的OTFS波形进行设计,对应参数如下: matlab Tx仿真 Tx导频Tx功率密度谱 帧结构我使用的是经典嵌入导频帧结构,Tx信号波形的带宽从右图可以看出约为80Mhz USRP验证 测试环境 无人机位于1m处 Rx导频Rx…...

Cell | 超深度宏基因组!复原消失的肠道微生物
期刊:Cell IF:64.5 (Q1) 发表时间:2023.6 研究背景 不同的生活方式会影响微生物组组成,但目前微生物组的研究严重偏向于西方工业化人群,其中工业化人群的特点是微生物群多样性较低。为了理解工…...

Centos7 设置代理方法
针对上面变量的设置方法: 1、在/etc/profile文件 2、在~/.bashrc 3、在~/.zshrc 4、在/etc/profile.d/文件夹下新建一个文件xxx.sh 写入如下配置: export proxy"http://192.168.5.14:8118" export http_proxy$proxy export https_proxy$pro…...

Android versions (Android 版本)
Android versions (Android 版本) All Android releases https://developer.android.com/about/versions Android 1.0 G1 Android 1.5 Cupcake Android 1.6 Donut Android 2.0 Eclair Android 2.2 Froyo Android 2.3 Gingerbread Android 3.0 Honeycomb Android 4.0 Ic…...

LNMP 平台搭建(四十)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 搭建LNMP 一、安装Nginx 二、安装Mysql 三、安装PHP 四、部署应用 前言 LNMP平台指的是将Linux、Nginx、MySQL和PHP(或者其他的编程语言,如…...

pcie 6.0/7.0相对pcie 5.0的变化有哪些?
引言 话说,小编在CSDN博客跟客服机器人聊天,突然看到有个搜索热搜“pcie最全科普贴”。小编有点似曾相识呀,我就好奇点击了一下,没想到几年前写的帖子在CSDN又火了一把。 说到这里,顺带给自己打个广告哈~ …...

百度Apollo:自动驾驶技术的未来应用之路
文章目录 前言一、城市交通二、出行体验三、环境保护四、未来前景总结 前言 随着科技的不断进步,自动驾驶技术正逐渐成为现实,颠覆着我们的出行方式。作为中国领先的自动驾驶平台,百度Apollo以其卓越的技术和开放的合作精神,正在…...

C++之std::distance应用实例(一百八十八)
简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…...