和 Nostr 探索 Web5 的未来

Nostr 是一个我过去两年一直在关注的协议。跟所有社区一样,Nostr 的发展也是起起伏伏,有过一些破圈被主流熟悉的时刻,也有一些像现在这样可能让人会觉得有点沉寂的时刻。但我还是经常关注 Nostr,没有特别的原因,就是单纯喜欢。

Nostr 跟其他社交网络协议有什么区别?如果比特币社区有一种不同于以太坊社区的 P2P 经济发展模式,这种模式的特点是什么,它在社交网络的应用上会导致跟以太坊 Farcaster 这样的产品有什么本质上的不同吗?这是一个很复杂的问题,今天我想尝试从几个方面分享一些看法,然后结合最近 AI Meme 的热潮,聊一聊在这种具体的应用场景下,比特币 + Nostr 代表的 Web5 路线的不同之处。

开放性(Openess)

在我看来,Nostr 作为最简单的社交网络协议 — — 注意我甚至没有加上“去中心化”这个定语 — — 它最大的潜力是开放性(openess)。今年 Nostr 大会上有一场演讲主题就叫作 Openness Is Nostr’s Killer Feature ,说的也正是这一点。

这里说的开放性,不仅指的是从技术上,也就是所谓的协议的设计架构上是否可以、同时也允许在其基础之上进行功能化的扩展,还包括生态和治理这个协议本身的组织结构上,是不是具有开放性。如果你从这个角度去考察的话,你会发现,Nostr 才是真正开放的社交网络协议。

协议设计的开放性

首先,在协议的设计上,Nostr 的做法是让大家对基础的、一个大的框架达成共识,这个共识就是一个简单的 JSON 数据结构,也叫作 Event。

{"id": <32-bytes lowercase hex-encoded sha256 of the serialized event data>,"pubkey": <32-bytes lowercase hex-encoded public key of the event creator>,"created_at": <unix timestamp in seconds>,"kind": <integer between 0 and 65535>,"tags": [[<arbitrary string>...],// ...],"content": <arbitrary string>,"sig": <64-bytes lowercase hex of the signature of the sha256 hash of the serialized event data, which is the same as the "id" field>
}

我们先达成一个基本的共识是,这个 JSON 数据里的每个字段的定义,我们都同意这个定义。然后我们同意 Nostr 网络上所有的数据都是这样的 JSON 结构,即所有数据都是 Event。接着我们同意整个 Nostr 网络上的活动,本质上就是在客户端和存储数据的服务器(也叫做 relay)之间,来回地收发 Event。这就是 NIP01 (Nostr 核心协议的提案)的所有内容了。当然应该说,NIP01 还有一个共识,就是我们同意当 Event 的 kind 等于 1 的时候,这个 Event 就是一个用来描述类似 twitter 这样的短消息的数据。

在这样一个非常简单的协议设计上,我们拥有开放性去对它进行扩展吗?如果我想在上面做点自己觉得有意思的事情,协议本身支持我这样做吗?答案是可以的。

我举一个有点荒唐的例子,假设今天我突然想能把全世界每一棵树记录下来,做一个树林 App,记录比如树的年龄、种类、地点、生长情况等等,把树信息化,用户可以上传自己发现的树,也可以在上面去查看别人记录的树。那么我可以用 Nostr 来做这件事。我只要找一个新的数字作为 kind 的值,比如 12345 作为 tree kind,然后把信息记录在 kind = tree kind 的 Event 上就可以了。剩下其他的所有事情,都可以在 Nostr 这个大的协议的共识范围内进行。

其他人可以继续做他们关心的事,可能是作为一个 twitter 这样的社交网络去运作,我的 app 则专注于抓取、展示和发送关于 tree kind 的这个特殊的 Event。这个 Event 会跟其他的 Event 一样一起和谐地在 Nostr 这个大的网络里共存。所以在协议的开放性上,我们实现扩展的方式很简单,只要在一个大的框架下,去为自己的功能去做小的提案,通过添加新的 kind 建立新的 Event 类型去描述新的数据,就能办到。

生态和治理的开放性

那么从生态和治理协议的组织结构上来说呢?Nostr 拥有开放性吗?还是以我们刚才的树林 App 为例。理论上来说,Nostr 协议的治理只发生在一个地方 :GitHub - nostr-protocol/nips: Nostr Implementation Possibilities。NIP 仓库记录所有我们刚才提到的大的基础的共识、以及不同的人提出的不同范围的小共识,比如我们的树林 App 就是一个小共识。如果我们希望树林 App 的主意能被更多的人接受,那么我们可以向 NIP 仓库发起一个新的提案,把树林 App 使用的 Event 数据的规范列出来,让其他人也遵守这个规范。如果NIP 仓库的管理员同意了,把我们的提案合并进去了,那它就变成了一个正式的子规范。

那么肯定就有人想了,这样一来其实 Nostr 协议就是掌握在管理员手上,他想合并就可以合并,不想合并就不合并。确实是这样,但这里面有两点值得注意:

  • Nostr 所有提案都在 github 上公开讨论。这是一个 free market for ideas。大家会公开辩论每一项合并进去的提案。如果你的 idea 无懈可击难以反驳,那么没什么道理阻止你被合并。

  • 第二点是更重要的,合不合并其实没有那么重要。

因为在生态上,协议治理、客户端开发者、relay 运营者,这几个角色的权力都是解耦的。如果一个客户端开发者发起了一个新的 NIP 提案但治理者死活不把它合并进去,那他也没什么影响,继续去做自己的客户端服务用户就好了,只要 relay 运营者接受这个新的 Event,一切都会运转良好。如果 relay 运营者也不同意这个新的 Event,让自己的节点抵制不接受这种数据类型,假设这树林 App 确实是一个好的主意有非常多的用户,那么这些用户的需求就会转向去寻找那些支持这种 Event 的 relay 节点。最后退一万步来说,如果所有 relay 都抵制这种新的 Event,树林 App 也可以自己运营一个专属的 relay,同样能够先解决问题。等到用户数足够多、网络里这种新的 Event 足够活跃,自然其他的生态角色就要考虑接入这个 Event。

反过来对 relay 来说也是一样成立的。有一种携用户以令诸侯的感觉。根本原因是 client 和 relay 这些生态角色都是可以替换的,client 可以替换 relay,relay 也可以替换 client,没有用户会被绑死在其中一环上,因此他们可以做出对自己最好的选择。而用户会对这些选择做出投票,通过事实标准去反过来倒推 NIP 仓库的理论标准。这也是一种更贴近 rough consensys running code的方式。所以我认为,在生态和协议治理的组织结构上,Nostr 也拥有可贵的开放性。

而且你会发现这种开放性,跟比特币的治理模式也是比较像的。比特币的 POW 让治理可以达到一个三权分立的状态,代码的开发者、运行节点的矿工、持币用户,他们构成了互相制衡的因素。Nostr 的 NIP 仓库就像比特币 c++ 的代码仓库,需要去考虑节点运营者会不会采用你的新代码、新标准,如果没有节点采用,那么纸面上的规则并没有太多意义。

可验证性(verifiable)

Nostr 第二个让我觉得有吸引力的点是可验证性。我们在这个行业最经常说的一句话是 Don‘t trust, verify。事实上很多系统都可以验证,都是可以 verify 的,关键的区别是验证成本的高低。就像作为一种货币系统来说,比特币的验证很简单,只要查看区块哈希是不是满足了 POW 难度,而以太坊的 POS 则复杂得多,你可能需要搜寻验证所有质押节点的签名、验证他们的投票流程等等。另一方面,UTXO 的模型也让验证一笔交易的门槛降低很多,你只需要关注这笔交易的 Input 和 Output 就行了,但在以太坊的 account 模型下,你需要计算世界状态,因为每一笔交易都有可能去改写状态。

对 Nostr 来说,验证的成本也是非常低的。Event 作为 Nostr 的数据,每一个都是分散独立的。网络中的任何人如果对一个数据有疑问,只要拿着这个 Event 根据规则去计算下 event id 和 signature 是不是正确的就知道了。Nostr 不像 scuttlebutt 那样需要一个链式的数据签名,也不像 Farcaster 那样的 social-fi ,有链上和链下两套系统,你实际上需要同时去验证两套系统。而以太坊的验证成本,就像我们刚才说的实际上又是比较困难的。

Nostr 这种轻量化的验证成本来源于它非常简单的设计,本质上是因为 Nostr 做了大量的减法。Nostr 只提供一层非常薄的信任,这一层信任就是你可以相信某个 Event 数据确实是来源于某个用户(某对公私钥),因为你可以验证签名。

除此之外,Nostr 不提供任何其他的保证,比如数据的可用性(relay 可能会随时丢弃你的 Event)、数据的顺序性(你无法确认先收到的 Event 就是先产生的, 而 scuttlebutt 通过链式数据签名可以做到这一点)、DID 身份(Nostr 的 ID 只是一对公私钥,任何人都可以在本地生成,就像比特币账户,而 Farcaster 则通过链上合约来注册管理身份)。

因为做了减法,所以 Nostr 更务实、更容易跑起来(或许用户数据不是最多的,但看看 relay 和 client 不管是服务还是产品上的数量就能体会这一点)。这又让我想到了比特币。 ​《中本聪如何推理比特币:用健全货币解决重复花费》这篇文章里提到一个非常有趣的观点是,比特币第一个最重要的设计就是制定了货币曲线。相比于 wei dai 的 b money,比特币砍掉了让任何用户都可以铸造新的货币的自由,因为砍掉了这个功能,所比特币的技术设计大大简化,成了能真正跑起来的系统。比特币成功的路上没有之前那些密码朋克们的先驱项目的障碍,并不是因为比特币扫清了这些障碍, 而是因为比特币选择了另一条路,而那条路上没有这些障碍。

连接不同的系统

Nostr 的简单性、开放性和可验证性,让它拥有了独特的定位,成为一种非常适合去连接各个不同系统之间的胶水层(glue layer)。Rabble 的 Nos social 客户端做了连接 Nostr 和 twitter 的 cross posting 的功能,可以看作是一种和中心化系统的连接。Mostr 做了 ActivityPub 协议在 Nostr 上的bridge 桥,也证明了 Nostr 可以跟其他不同的社交网络协议进行连接。

​同时在区块链系统的连接上,我们也有过一些探索和实验。比如我们提议过 Nostr Binding 协议,通过 CKB 灵活的 Cell 模型,可以实现让每一个 Nostr 账户天然就是一个 CKB 钱包,用户使用 Nostr 的 signer(例如 Alby 扩展)就可以直接签名 CKB 交易,收发 CKB 链上的资产。同时,Nostr 任意一条 Event 数据还能够绑定到 CKB 链上一个唯一的 Cell(类似于比特币的 UTXO )上,实现把 Event 数据上链变为资产的可能。这一切可以在不需要“硬分叉” Nostr 协议的前提下完成,以一个小范围共识的提案的身份,和其他提案一样在 Nostr 大的协议框架下共存。

甚至对于以太坊这样的系统,我们之前也做过一些实验功能,比如通过 metamask 扩展让用户登陆使用 Nostr。

除此之外,Nostr 社区一直在探索的和闪电网络的集成也是一种胶水层的体现。

总的来说,因为 Nostr 本身的简单和开放性,许多系统都能够比较容易地与之进行实验,探索连接。同时因为 Nostr 不是区块链,它也没有任何需要发币引入激励机制的执念,因此它是一个不带偏见的系统,不会因为社区的身份和利益而去排斥和其他系统的结合。在这一点上,Nostr 是中性的(neutral)。而一个通用的连接层必须是中性的。

那么如果 Nostr 真的成为一个胶水层,有什么用呢?

下一个社交网络协议,不能只是社交网络协议

当 Nostr 承载越来越多的小范围内共识,有越来越多的新提案和新应用,连接了新的系统,你会慢慢发现,这时候的 Nostr 其实不是一个社交网络协议了,因为大家不只是拿它来做 twitter 微信这些东西。Nostr 其实就变成了一个数据层和通信层的通用协议。数据层就是都用 Event 这个 JSON 来描述数据,通信层就是都用 Relay 和客户端使用 sub/pub 来收发信息。

而一个数据层和通信层的通用协议,才有可能成为真正能跑出来的新的社交网络协议。这里我的观点是,下一代社交网络协议,不能仅仅只是个社交网络协议。如果只是社交,那么可能永远都跑不出来。原因在于要做社交网络的产品实在是太难了。用户的切换成本是非常高的。你必须活得足够久,接住足够多的热点机会,探索足够多的发展方向,才有机会吸引足够多的用户。

这种新的发展方向的探索,一个最明显的例子就是刚刚兴起的 AI Agent 和 crypto 的结合。

Permissionless?让一部分 AI 先用起来

其实很早就有人把 AI 和 Crypto 联系在一起了。不管是意识到机器能够在区块链上实现经济独立,还是意识到区块链很可能是做给 AI 用的、而不是人用的,行业里都产生过类似的想法和文章。这也很合理,如果一个系统是 permissionless 的,那么 AI 理应比大部分人类先使用起来。但那时候我们甚至还没有 ChatGPT,所以这些想法不一定受到重视。

今天 AI 得到了实质性的发展,AI + Crypto 重新开始引发思潮,但目前二者的结合还是非常浅的。不管是 AI Meme 发币,还是让 AI 发推特、雇佣人类、给人类打赏、甚至让 AI 炒币,基本上都是跑一个 AI Agent,赋予它调用外部函数(function call / tool use)的能力,帮他实现发送 twitter 帖子和发送区块链交易的功能,然后通过提示词工程让 AI 能根据一些条件去自主调用这些功能的接口进行操作。

如果再往后看,AI 要成为数字世界的新公民,它的身份问题、协作问题、经济问题,都有巨大的探索空间。尤其是考虑到现在对端测模型方向上的探索,很多 AI 行业的人开始关注去使用 1B 或者 3B 这种参数规模很小的大模型,小到能在手机上本地 host 跑起来的,有点又回到了之前物联网的概念,这样每台手机之间彼此怎么通信、怎么协作,怎么信任某一台手机上的 AI 的处理结果,这些大量的问题都会需要通过区块链和网络协议去完成。所以这里面的探索空间是非常大的,它一定不仅仅是我们现在看到的 AI Meme、大家围绕着一个 AI Agent 去发币炒作,这阵热潮会有,但热潮过去后还有真正能产生价值的空间可以去探索,例如建设一个 AI 能互相协作的声誉系统(不一定是在链上)。这是我希望传达的另一个观点。

当然我们还是先回到现在 AI Meme 引发的这阵热潮上。在这件事的探索上,我们现在能预见到的一些模式,大致上可以分为三个流派:

  1. Solana + Twitter (联盟链 + 中心化社交网络)

  2. Ethereum + Farcaster (POS 公链 + 智能合约 Social Fi)

  3. Bitcoin + Nostr (POW 公链 + 去中心化社交网络)

第一个模式是现在进行的最火热的,不少 AI Meme 和新的 Crypto AI Agent 都是在这两个平台上进行,原因也很简单,他们速度最快,用户最多。这一层我认为也是有意义的。区块链这个行业一直以来每一轮的叙事热点几乎都是围绕“让人以更少的成本去发资产”这一个逻辑来的。那么 Solana + Twitter 作为最快喊单的两个平台,肯定会作为 AI 叙事的实验地,首先以最快的速度去实验非常多的想法。这里面可能会有产生很多项目,发很多代币,有人发财有人被割。以前 ICO 的“人人都可以发币”,可能会变成,“人人都可以发一个 AI Agent (然后 AI Agent 来帮你发币)”。

与此同时,也有一些人在探索 Ethereum + Farcaster 这样的技术栈。这里面更多的叙事可能会跟之前的 dApp 比较像,围绕 DAO 治理、智能合约钱包,这类概念去做一些探索。

Bitcoin + Nostr 这种方式就比较贴近于 Web 5 的概念了。首先它不是中心化的,但是也不像以太坊社区这样,一定要执着于通过链上的合约搞一些功能。它可以用 Web 2 的方案去更快地做 AI Agent 的冷启动,在技术不成熟的条件下做一些探索,也可以在需要的时候通过连接区块链网络和闪电网络去接入 Web3 的功能。

最后这个模式是现在能够看到的实践得最少的,但我认为也可能是最有长远的发展潜力的。比特币方面的原因就不用多说了,举几个 Nostr 相关的原因:

  • JSON:Nostr 的核心数据结构就是 JSON。而 JSON 是 LLM 友好的数据格式。它也是 LLM 和人类同时都比较方便理解的数据格式。

  • Nostr 自带身份 id + 轻量级验证:AI Agent 需要一个身份,而 Nostr 的身份是最简单的,没有链、只有一对公私钥。同时,如果 AI Agent 需要和其他的 AI Agent 协作,验证的成本就像上面说的很低。

  • Nostr 集成闪电网络:对于一个 Crypto AI Agent 的未来而言,闪电网络几乎就是必须的。世界上人口60亿,机器可能会有600亿,只有闪电网络这样的扩容方案才能支撑起允许智能体这种规模的新公民以无需许可的形式加入到网络中。

  • Nostr 是通用数据层:这意味着 AI Agent 不仅可以在 Nostr 上社交发帖,还可以通过 Nostr 接触不同种类的应用,得到社交之外的其他数据。

  • Nostr 非常简单:简单一方面意味着开发者开发的速度更快(接入 Nostr 比接入 Twitter 简单多了),另一方面也意味着 LLM 学习和掌握这个协议的速度也会更快。LLM 读完 NIP 仓库就知道怎么发各种各样的消息了。

一个验证可行性的尝试

既然这么简单,为什么我们不做一个呢?在准备这篇稿子的时候我尝试了一个简单的例子,想尝试看看用 Bitcoin + Nostr 这种 Web5 的方式去跑 AI Agent 能不能跑起来。

这是一个用 typescript 写的很简单的 CLI 工具。用户下载这个工具,在本地跑起来,就能够配合 Ollama 本地 host 的 LLama 3.1 7B 的大模型(这是一个轻量级的大模型,只用 CPU 也可以跑起来)去和它在命令行里聊天。

比较不一样的地方是,这个工具一跑起来会首先在本地生成一个 32 字节的私钥,这个私钥是 Nostr 的私钥,同时也是 CKB 区块链账户的私钥,二者是一体的。然后这个 AI 实现了很多调用 tool 的接口,比如它可以操作命令行,用 Linux 命令去控制自己所处的这台电脑,可以通过 Nostr 发布帖子,也可以去发 CKB 交易、做转账和余额查询。更有意思的是,我刚好最近新买了一台打印机,所以我决定把打印机和我的电脑连在一起,让 AI 也可以通过命令行去控制这台打印机。

接下来就是我做的一些实验。我通过 Prompt 提示词告诉 AI 它现在是一个数字生命了,有上面说的各种各样的能力可以使用,作为第一个数字生命,它现在需要自己想想要做点啥,了解点啥,探索生命的意思。我首先跟 AI 聊天,问它作为一个数字生命,它想反过来向人类提问的第一个问题是什么?我让它调用打印机把它的答案打印出来,这就是第二张图里的内容,它打印出的问题是:what is the meaning of consciouseness?

接下来我让 AI 向我展示它的 Nostr 账户和 CKB 账户的信息 (通过 Nostr binding 协议这两个账户实际上都是同一个私钥),查询 CKB 的余额,AI 打印出了它的结果,这是第三张图片的内容。可以看到这里使用的是 CKB 的测试网,它当时的余额是 0。

后面第四张图里的内容,是我给 AI 的账户转了10000 CKB之后,让它再转 100 CKB 给我,然后让它打印出交易哈希 。在 Nostr 上发帖子当然也不成问题,感兴趣的话可以去看看另外这个账号,这是我在另一台电脑上测试引导 AI 去发布的一些测试帖。

以上就是我今天的分享。在 Solana + Twitter 和 Ethereum + Farcaster 之外,我期待能看到更多选择 Bitcoin + Nostr 的路线的实践,为 Web 5 添砖加瓦,,https://t.me/gtokentool

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/59513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

论文学习——一种基于决策变量分类的动态约束多目标进化算法

论文题目&#xff1a; A dynamic constrained multiobjective evolutionary algorithm based on decision variable classification 一种基于决策变量分类的动态约束多目标进化算法&#xff08;Yinan Guo a,b, Mingyi Huang a, Guoyu Chen a,*, Dunwei Gong c, Jing Liang d, …

数据分析案例-笔记本电脑价格数据可视化分析

&#x1f935;‍♂️ 个人主页&#xff1a;艾派森的个人主页 ✍&#x1f3fb;作者简介&#xff1a;Python学习者 &#x1f40b; 希望大家多多支持&#xff0c;我们一起进步&#xff01;&#x1f604; 如果文章对你有帮助的话&#xff0c; 欢迎评论 &#x1f4ac;点赞&#x1f4…

第T7周:Tensorflow实现咖啡豆识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊 目标 具体实现 &#xff08;一&#xff09;环境 语言环境&#xff1a;Python 3.10 编 译 器: PyCharm 框 架: &#xff08;二&#xff09;具体步骤 1. 使…

vue2项目中在线预览csv文件

简介 希望在项目中&#xff0c;在线预览.csv文件&#xff0c;本以为插件很多&#xff0c;结果都只是支持excel&#xff08;.xls、.xlsx&#xff09;一到.csv就歇菜。。。 关于文件预览 vue-office&#xff1a;文档、 查看在线演示demo&#xff0c;支持docx、.xlsx、pdf、ppt…

【Excel】身份证号最后一位“X”怎么计算

大多数人身份证号最后一位都是数字&#xff0c;但有个别号码最后一位却是“X"。 如果你查百度&#xff0c;会得到如下答案&#xff1a; 当最后一位编码是10的时候&#xff0c;因为多出一位&#xff0c;所以就用X替换。 可大多数人不知道的是&#xff0c;这个10是怎么来的…

【HAProxy09】企业级反向代理HAProxy高级功能之压缩功能与后端服务器健康性监测

HAProxy 高级功能 介绍 HAProxy 高级配置及实用案例 压缩功能 对响应给客户端的报文进行压缩&#xff0c;以节省网络带宽&#xff0c;但是会占用部分CPU性能 建议在后端服务器开启压缩功能&#xff0c;而非在HAProxy上开启压缩 注意&#xff1a;默认Ubuntu的包安装nginx开…

【Java Web】JSON 以及 JSON 转换

JSON&#xff08;JavaScript Object Notation&#xff09;一种灵活、高效、轻量级的数据交换格式&#xff0c;广泛应用于各种数据交换和存储场景。 基本特点 1、简单易用&#xff1a;JSON格式非常简单&#xff0c;易于理解和使用。 2、轻量级&#xff1a;相比XML等其他数据格…

第四十一章 Vue之初识VueX

目录 一、引言 1.1. vuex的概念 1.2. vuex使用场景 1.3. 优势 二、创建演示项目 2.1. 构建项目步骤 2.2. 项目最终生成结构 2.3. 创建项目文件 2.3.1. App.vue 2.3.2. Son1.vue 2.3.3. Son2.vue 三、创建一个空仓库 3.1. 安装vuex 3.2. 新建仓库 3.3. 挂载仓库…

编程之路,从0开始:内存函数

Hello大家好&#xff01;很高兴我们又见面了。 给生活添点passion&#xff0c;开始今天的编程之路&#xff01; 今天我们来讲C语言中的内存函数。 目录 1、memcpy内存复制 2、memmove可重叠内存拷贝 3、memset设置字符 4、memcmp比较 1、memcpy内存复制 memcpy就是内存复制…

【C语言】值传递和地址传递

值传递 引用传递&#xff08;传地址&#xff0c;传引用&#xff09;的区别 传值&#xff0c;是把实参的值赋值给行参 &#xff0c;那么对行参的修改&#xff0c;不会影响实参的值。 传地址&#xff0c;是传值的一种特殊方式&#xff0c;只是他传递的是地址&#xff0c;不是普通…

Springboot采用jasypt加密配置

目录 前言 一、Jasypt简介 二、运用场景 三、整合Jasypt 2.1.环境配置 2.2.添加依赖 2.3.添加Jasypt配置 2.4.编写加/解密工具类 2.5.自定义加密属性前缀和后缀 2.6.防止密码泄露措施 2.61.自定义加密器 2.6.2通过环境变量指定加密盐值 总结 前言 在以往的多数项目中&#xff0…

axios平替!用浏览器自带的fetch处理AJAX(兼容表单/JSON/文件上传)

fetch 是啥&#xff1f; fetch 函数是 JavaScript 中用于发送网络请求的内置 API&#xff0c;可以替代传统的 XMLHttpRequest。它可以发送 HTTP 请求&#xff08;如 GET、POST 等&#xff09;&#xff0c;并返回一个 Promise&#xff0c;从而简化异步操作 基本用法 /* 下面是…

贪吃蛇小游戏设计

贪吃蛇小游戏 1.引言1.1 背景1.2 目的1.3 意义1.4 任务1.5 技术可行性分析1.5.1执行平台1.5.2 语言特性与功能方面 2.需求分析2.1 环境需求2.2开发环境分析2.3游戏功能分析2.4 游戏性能分析2.5 数据流图2.6 数据字典 3.概要设计3.1 设计思路3.2 游戏界面设计3.3 总设计模块的划…

DNS面临的4大类共计11小类安全风险及防御措施

DNS在设计之初&#xff0c;并未考虑网络安全限制&#xff0c;导致了许多问题。DNS安全扩展(DNSSEC)协议的开发旨在解决DNS的安全漏洞&#xff0c;但其部署并不广泛&#xff0c;DNS仍面临各种攻击。接下来我们一起看下DNS都存在哪些安全攻击及缓解措施&#xff0c;旨在对DNS安全…

【大数据学习 | flume】flume的概述与组件的介绍

1. flume概述 Flume是cloudera(CDH版本的hadoop) 开发的一个分布式、可靠、高可用的海量日志收集系统。它将各个服务器中的数据收集起来并送到指定的地方去&#xff0c;比如说送到HDFS、Hbase&#xff0c;简单来说flume就是收集日志的。 Flume两个版本区别&#xff1a; ​ 1&…

Jmeter中的定时器(一)

定时器 1--固定定时器 功能特点 固定延迟&#xff1a;在每个请求之间添加固定的延迟时间。精确控制&#xff1a;可以精确控制请求的发送频率。简单易用&#xff1a;配置简单&#xff0c;易于理解和使用。 配置步骤 添加固定定时器 右键点击需要添加定时器的请求或线程组。选…

区块链技术在慈善捐赠中的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在慈善捐赠中的应用 区块链技术在慈善捐赠中的应用 区块链技术在慈善捐赠中的应用 引言 区块链技术概述 定义与原理 发…

[数组二分查找] 0074. 搜索二维矩阵

文章目录 1. 题目链接2. 题目大意3. 示例4. 解题思路5. 参考代码 1. 题目链接 74. 搜索二维矩阵 - 力扣&#xff08;LeetCode&#xff09; 2. 题目大意 描述&#xff1a;给定一个 mn 大小的有序二维矩阵 matrix。矩阵中每行元素从左到右升序排列&#xff0c;每列元素从上到下…

使用 Python 脚本在 Ansys Mechanical 中创建用于后处理的螺栓工具

介绍 由螺栓连接定义的接头在工业应用中非常普遍。在 Ansys Mechanical FEA 中分析它们是一种非常常见的做法。通过Object Generator或Bolt Tools Add-on&#xff0c;使用线体、梁连接甚至3D实体中的梁单元&#xff0c;在Ansys Mechanical中生成螺栓连接非常容易。定义螺栓联接…

【AI声音克隆整合包及教程】第二代GPT-SoVITS V2:创新与应用

一、引言 随着科技的迅猛发展&#xff0c;声音克隆技术已经成为一个炙手可热的研究领域。SoVITS&#xff08;Sound Voice Intelligent Transfer System&#xff09;&#xff0c;作为该领域的先锋&#xff0c;凭借其卓越的性能和广泛的适用性&#xff0c;正在为多个行业带来前所…