path区块链 区块链币链

皕利分享 2922 0

今天给各位分享path区块链的知识,其中也会对区块链币链进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

第六章:path 模块详解

path 模块提供了一些工具函数,用于处理文件与目录的路径。由于windows和其他系统之间路径不统一, path 模块还专门做了相关处理,屏蔽了彼此之间的差异。

可移植操作系统接口(英语:Portable Operating System Interface,缩写为POSIX),是IEEE为要在各种UNIX操作系统上运行软件,而定义API的一系列互相关联的标准的总称,其正式称呼为IEEE Std 1003,而国际标准名称为ISO/IEC 9945。此标准源于一个大约开始于1985年的项目。POSIX这个名称是由理查德·斯托曼应IEEE的要求而提议的一个易于记忆的名称。它基本上是Portable Operating System Interface(可移植操作系统接口)的缩写,而X则表明其对Unix API的传承。

Linux基本上逐步实现了POSIX兼容,但并没有参加正式的POSIX认证。

微软的Windows NT声称部分实现了POSIX标准。

当前的POSIX主要分为四个部分:Base Definitions、System Interfaces、Shell and Utilities和Rationale。

综述:目前主流的类Unix操作系统:Unix、Linux都会兼容POSIX的标准,而Windows只是部分实行了POSIX标准,所以后面我们说POSIX系统是指类Unix系统

可能大家比较熟悉windows资源管理系统,windows是分不同的磁盘,然后磁盘下面都是树状结构的文件和文件夹。

而类Unix(Unix、Linux)系统中是不分盘符的,只有一个根目录 / , 都是都是这个下面的子目录或者文件,当然也是树状的机构。

Linux的目录结构

除了目录结构有区别外,路径也是有区别的。windows是用反斜杠 \ 分割目录或者文件的,而在类Unix的系统中是用的 / 。

语法: path.basename(path[, ext])

参数:

例如:

完整实例:

默认情况下,node会根据不同的系统做相关兼容处理,力保输出的结果在不同平台下是一致的,但是某些情况下还是不能完美的兼容所有的情况。所以,node提供了 win32 和 posix 各自对应path的所有的api。也就是说: path 模块的api都可以通过 path.win32 或者 path.posix 调用。

要想在任何操作系统上处理 Windows 文件路径时获得一致的结果,可以使用 path.win32

要想在任何操作系统上处理 POSIX 文件路径时获得一致的结果,可以使用 path.posix

其他api也是一致的,不再赘述。

path.dirname() 方法返回一个 path 的目录名。

语法: path.dirname(path)

参数:

path.extname() 方法返回 path 的扩展名,即从 path 的最后一部分中的最后一个 .(句号)字符到字符串结束。

如果 path 的最后一部分没有 . 或 path 的文件名的第一个字符是 . ,则返回一个空字符串。

语法: path.extname(path)

path.format() 方法会从一个对象返回一个路径字符串。

语法: path.format(pathObject)

path.parse() 方法返回一个对象,对象的属性表示 path 的元素。

parse 方法跟 format 方法正好相反,所以不赘述。直接看例子:

path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。

长度为零的 path 片段会被忽略。 如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录。

参数说明:

...paths string 一个路径片段的序列。

返回: string

path.relative() 方法返回从 from 到 to 的相对路径(基于当前工作目录)。

如果 from 和 to 各自解析到同一路径(调用 path.resolve()),则返回一个长度为零的字符串。

如果 from 或 to 传入了一个长度为零的字符串,则当前工作目录会被用于代替长度为零的字符串。

语法: path.relative(from, to)

参数:

path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。

path.normalize() 方法会规范化给定的 path,并解析 '..' 和 '.' 片段。

当发现多个连续的路径分隔符时(如 POSIX 上的 / 与 Windows 上的 \ 或 /),它们会被单个的路径分隔符(POSIX 上是 /,Windows 上是 \)替换。 末尾的多个分隔符会被保留。

如果 path 是一个长度为零的字符串,则返回 '.',表示当前工作目录。

语法: path.normalize(path)

Windows 上是 \

POSIX 上是 /

为了兼容不同平台,node提供了一个path的辅助属性 path.sep 来兼容不同平台下的路径片段分隔符。

平台路径分隔符是不同的:

Windows 上是 ;

POSIX 上是 :

node也做了兼容处理,提供了 path.delimiter 来实现平台兼容。

例如,我们常见的path环境变量上做分割处理:

path.isAbsolute(path) 此方法接受一个字符串,返回boolean类型。

node的path模块使用非常简单,而且老马简单看了一下node的源码,写的非常精彩,对于多种情况的处理都很恰到好处,推荐大家看node的path模块源码: /lib/path.js 。

极简Grin挖矿指南(Win10)

Grin不多重复介绍了,近期很火的一个匿名币( ),而且还能用CPU、GPU挖矿(N卡。目前似乎还不支持A卡),并且支持多个平台Linux、macOS等等。官网上说不支持Windows,但实际是可以跑的。下面是Windows 10上的部署过程小结。

Windows上用WSL来部署Linux的环境最为方便。在Microsoft Store中搜索Ubuntu即可安装。

注意! 装完之后要修改一下注册表。不然因为这个内嵌的Ubuntu会带很多奇怪的Path,导致后面build会出问题,产生不了运行所需的plugin文件夹。

具体步骤是:运行regedit。在注册表项中,找到 Computer\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Lxss 将Flag的值改为 5 。

运行Ubuntu,新建用户名、并输入自己想要设置的密码

Grin是用rust编写的,安装好相关环境

再安装好其他依赖

Grin节点也和其他区块链类似,可以自己部署也可以利用矿池。两种方式选一即可。

如果要自己运行一个Grin节点,按照以下步骤:

target/release/grin 即为可运行文件

目前也有一些Grin的矿池可以链接,不想自己运行Grin的话,可以注册一个。比较有名的是GRIN-Pool( )

点右上角Login后按提示注册即可。自己需要记住用户名和密码。

另开一个Ubuntu的终端,输入:

检查你CPU是否支持avx2

如果大于0,那么输入以下:

如果是多核,可以指定挖矿的核数(build后每次运行前也可以修改)

查看有多少个可用的CPU,并输入想使用的CPU数量

如果是N卡,可以用GPU挖矿

然后输入 nvidia-smi 运行后得到的Device ID

如果用的是矿池,还要额外配置一下矿池信息:

输入在矿池里注册的用户名和密码

先build

然后运行

如果一切顺利,现在已经可以挖矿了;如果不顺利,那么我也不知道了。

swap是什么?高手帮解释下~~谢谢了~

Swap,即交换区,除了安装Linux的时候,有多少人关心过它呢?其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。

所周知,现代操作系统都实现了“虚拟内存”这一技术,不但在功能上突破了物理内存的限制,使程序可以操纵大于实际物理内存的空间,更重要的是,“虚拟内存”是隔离每个进程的安全保护网,使每个进程都不受其它程序的干扰。

Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。

计算机用户会经常遇这种现象。例如,在使用Windows系统时,可以同时运行多个程序,当你切换到一个很长时间没有理会的程序时,会听到硬盘“哗哗”直响。这是因为这个程序的内存被那些频繁运行的程序给“偷走”了,放到了Swap区中。因此,一旦此程序被放置到前端,它就会从Swap区取回自己的数据,将其放进内存,然后接着运行。

需要说明一点,并不是所有从物理内存中交换出来的数据都会被放到Swap中(如果这样的话,Swap就会不堪重负),有相当一部分数据被直接交换到文件系统。例如,有的程序会打开一些文件,对文件进行读写(其实每个程序都至少要打开一个文件,那就是运行程序本身),当需要将这些程序的内存空间交换出去时,就没有必要将文件部分的数据放到Swap空间中了,而可以直接将其放到文件里去。如果是读文件操作,那么内存数据被直接释放,不需要交换出来,因为下次需要时,可直接从文件系统恢复;如果是写文件,只需要将变化的数据保存到文件中,以便恢复。但是那些用malloc和new函数生成的对象的数据则不同,它们需要Swap空间,因为它们在文件系统中没有相应的“储备”文件,因此被称作“匿名”(Anonymous)内存数据。这类数据还包括堆栈中的一些状态和变量数据等。所以说,Swap空间是“匿名”数据的交换空间。

突破128M Swap限制

经常看到有些Linux(国内汉化版)安装手册上有这样的说明:Swap空间不能超过128M。为什么会有这种说法?在说明“128M”这个数字的来历之前,先给问题一个回答:现在根本不存在128M的限制!现在的限制是2G!

Swap空间是分页的,每一页的大小和内存页的大小一样,方便Swap空间和内存之间的数据交换。旧版本的Linux实现Swap空间时,用Swap空间的第一页作为所有Swap空间页的一个“位映射”(Bit map)。这就是说第一页的每一位,都对应着一页Swap空间。如果这一位是1,表示此页Swap可用;如果是0,表示此页是坏块,不能使用。这么说来,第一个Swap映射位应该是0,因为,第一页Swap是映射页。另外,最后10个映射位也被占用,用来表示Swap的版本(原来的版本是Swap_space ,现在的版本是swapspace2)。那么,如果说一页的大小为s,这种Swap的实现方法共能管理“8 * ( s - 10 ) - 1”个Swap页。对于i386系统来说s=4096,则空间大小共为133890048,如果认为1 MB=2^20 Byte的话,大小正好为128M。

之所以这样来实现Swap空间的管理,是要防止Swap空间中有坏块。如果系统检查到Swap中有坏块,则在相应的位映射上标记上0,表示此页不可用。这样在使用Swap时,不至于用到坏块,而使系统产生错误。

现在的系统设计者认为:

1.现在硬盘质量很好,坏块很少。

2.就算有,也不多,只需要将坏块罗列出来,而不需要为每一页建立映射。

3.如果有很多坏块,就不应该将此硬盘作为Swap空间使用。

于是,现在的Linux取消了位映射的方法,也就取消了128M的限制。直接用地址访问,限制为2G。

Swap配置对性能的影响

分配太多的Swap空间会浪费磁盘空间,而Swap空间太少,则系统会发生错误。

如果系统的物理内存用光了,系统就会跑得很慢,但仍能运行;如果Swap空间用光了,那么系统就会发生错误。例如,Web服务器能根据不同的请求数量衍生出多个服务进程(或线程),如果Swap空间用完,则服务进程无法启动,通常会出现“application is out of memory”的错误,严重时会造成服务进程的死锁。因此Swap空间的分配是很重要的。

通常情况下,Swap空间应大于或等于物理内存的大小,最小不应小于64M,通常Swap空间的大小应是物理内存的2-2.5倍。但根据不同的应用,应有不同的配置:如果是小的桌面系统,则只需要较小的Swap空间,而大的服务器系统则视情况不同需要不同大小的Swap空间。特别是数据库服务器和Web服务器,随着访问量的增加,对Swap空间的要求也会增加,具体配置参见各服务器产品的说明。

另外,Swap分区的数量对性能也有很大的影响。因为Swap交换的操作是磁盘IO的操作,如果有多个Swap交换区,Swap空间的分配会以轮流的方式操作于所有的Swap,这样会大大均衡IO的负载,加快Swap交换的速度。如果只有一个交换区,所有的交换操作会使交换区变得很忙,使系统大多数时间处于等待状态,效率很低。用性能监视工具就会发现,此时的CPU并不很忙,而系统却慢。这说明,瓶颈在IO上,依靠提高CPU的速度是解决不了问题的。

系统性能监视

Swap空间的分配固然很重要,而系统运行时的性能监控却更加有价值。通过性能监视工具,可以检查系统的各项性能指标,找到系统性能的瓶颈。本文只介绍一下在Solaris下和Swap相关的一些命令和用途。

最常用的是Vmstat命令(在大多数Unix平台下都有这样一些命令),此命令可以查看大多数性能指标。

例如:

# vmstat 3

procs memory swap io system cpu

r b w swpd free buff cache si so bi bo in cs us sy id

0 0 0 0 93880 3304 19372 0 0 10 2 131 10 0 0 99

0 0 0 0 93880 3304 19372 0 0 0 0 109 8 0 0 100

0 0 0 0 93880 3304 19372 0 0 0 0 112 6 0 0 100

…………

命令说明:

vmstat 后面的参数指定了性能指标捕获的时间间隔。3表示每三秒钟捕获一次。第一行数据不用看,没有价值,它仅反映开机以来的平均性能。从第二行开始,反映每三秒钟之内的系统性能指标。这些性能指标中和Swap有关的包括以下几项:

procs下的w

它表示当前(三秒钟之内)需要释放内存、交换出去的进程数量。

memory下的swpd

它表示使用的Swap空间的大小。

Swap下的si,so

si表示当前(三秒钟之内)每秒交换回内存(Swap in)的总量,单位为kbytes;so表示当前(三秒钟之内)每秒交换出内存(Swap out)的总量,单位为kbytes。

以上的指标数量越大,表示系统越忙。这些指标所表现的系统繁忙程度,与系统具体的配置有关。系统管理员应该在平时系统正常运行时,记下这些指标的数值,在系统发生问题的时候,再进行比较,就会很快发现问题,并制定本系统正常运行的标准指标值,以供性能监控使用。

另外,使用Swapon-s也能简单地查看当前Swap资源的使用情况。例如:

# swapon -s

Filename Type Size Used Priority

/dev/hda9 partition 361420 0 3

能够方便地看出Swap空间的已用和未用资源的大小。

应该使Swap负载保持在30%以下,这样才能保证系统的良好性能。

有关Swap操作的系统命令

增加Swap空间,分以下几步:

1)成为超级用户

$su - root

2)创建Swap文件

# dd if=/dev/zero of=swapfile bs=1024 count=65536

创建一个有连续空间的交换文件。

3)激活Swap文件

#/usr/sbin/swapon swapfile

swapfile指的是上一步创建的交换文件。 4)现在新加的Swap文件已经起作用了,但系统重新启动以后,并不会记住前几步的操作。因此要在/etc/fstab文件中记录文件的名字,和Swap类型,如:

/path/swapfile none Swap sw,pri=3 0 0

5)检验Swap文件是否加上

/usr/sbin/swapon -s

删除多余的Swap空间。

1)成为超级用户

2)使用Swapoff命令收回Swap空间。

#/usr/sbin/swapoff swapfile

3)编辑/etc/fstab文件,去掉此Swap文件的实体。

4)从文件系统中回收此文件。

#rm swapfile

5)当然,如果此Swap空间不是一个文件,而是一个分区,则需创建一个新的文件系统,再挂接到原来的文件系统上。

人人公司收购Trucker Path,意味着什么?

12月29日path区块链,人人公司(纽交所股票代码:RENN)正式对外公布,全资收购美国最大path区块链的卡车社区平台Trucker Path,暂未透露收购金额。

Trucker Path是一款帮助卡车司机的行程规划产品,使得庞大的卡车司机社区中的司机能够协助彼此,实时更新并分享他们在路途中的相关关键点信息。司机可以通过该产品寻找卡车商店、停车场、服务区、DOT称重点、洗车场和其他卡车相关场所。凭借Trucker Path应用软件取得的成功,又进一步推出了Truckloads应用软件,它是一个将卡车司机与发货方进行匹配的移动货运平台,每月发货量在300万单以上。目前Trucker Path拥有全美33%的卡车司机,60万以上月活跃用户且保持稳步增长中。

在美国,卡车运输是一个巨大的产业,行业规模7300亿美金,存在信息不对称、定价不透明、中间商较多等痛点,30%的里程是空驶,使得该行业的运营非常低效。Trucker Path的创业团队抓住了这些商业机会。

对于人人公司的全球化业务而言,收购Trucker Path意味着人人在交通板块的布局迈出了重要的一步。未来,人人会在智能交通方案或无人车领域继续探索突破。人人公司董事长兼CEO陈一舟先生表示“全球无人驾驶的大规模使用最有可能在美国率先发生,而美国的无人驾驶最有可能首先在长途卡车上批量使用。目前,两个主要的科技新兴领域是人工智能和区块链。收购Trucker Path卡车司机平台和 Truckloads货运平台使公司在这个重要的行业具备完善的技术从而推进创新。”

node常用模块之path

path 模块提供了一些工具函数,用于处理文件与目录的路径。可以通过以下方式使用:

path.basename() 方法返回一个 path 的最后一部分,类似于Unix中的 basename 命令。

例子:

如果 path 不是一个字符串或提供了 ext 但不是一个字符串,则抛出TypeError。

提供平台特定的路径分隔符:

例如,在POSIX上:

在Windows上:

path.dirname() 方法返回一个 path 的目录名,类似于Unix中的 dirname 命令。

例子:

如果 path 不是一个字符串,则抛出TypeError。

path.extname() 方法返回 path 的扩展名,即从 path 的最后一部分中的最后一个 . 字符到字符串结束。如果 path 的最后一部分没有 . 或 path 的文件名的第一个字符是 . ,则返回一个空字符串。

例子:

如果 path 不是一个字符串,则抛出TypeError。

path.format() 方法会从一个对象返回一个路径字符串。与 path.parse() 相反。

当 parhObject 提供的属性有组合时,有些属性的优先级比其他的高:

例如,在POSIX上:

在Windows上:

path.isAbsolute() 方法会判定 path 是否为一个绝对路径。

如果给定的 path 是一个长度为零的字符串,则返回 false 。

例如,在POSIX上:

在Windows上:

如果 path不是一个字符串,则抛出 TypeError

path.join() 方法使用平台特定的分隔符把全部给定的 path 片段连接到一起,并规范化生成的路径。

长度为零的 path 片段会被忽略。 如果连接后的路径字符串是一个长度为零的字符串,则返回 '.',表示当前工作目录。

例子:

如果任一路径片段不是一个字符串,则抛出 TypeError。

path.normalize() 方法会规范化给定的 path ,并解析 .. 和 . 片段。

当发现多个连续的路径分隔符时(如 POSIX 上的 / 与 Windows 上的 \),它们会被单一的路径分隔符替换。 末尾的多个分隔符会被保留。

如果 path 是一个长度为零的字符串,则返回 '.',表示当前工作目录。

例如,在 POSIX 上:

在 Windows 上:

如果 path不是一个字符串,则抛出 TypeError。

path.parse() 方法返回一个对象,对象的属性表示 path 的元素。

返回的对象有以下属性:

例如,在 POSIX 上:

在 Windows 上:

如果 path 不是一个字符串,则抛出TypeError。

path.relative() 方法返回从 from 到 to 的相对路径。 如果 from 和 to 各自解析到同一路径(调用 path.resolve()),则返回一个长度为零的字符串。

如果 from 或 to 传入了一个长度为零的字符串,则当前工作目录会被用于代替长度为零的字符串。

例如,在 POSIX 上:

在 Windows 上:

如果 from 或 to 不是一个字符串,则抛出 TypeError。

path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。

给定的路径的序列是从右往左被处理的,后面每个 path 被依次解析,直到构造完成一个绝对路径。 例如,给定的路径片段的序列为:/foo、/bar、baz,则调用 path.resolve('/foo', '/bar', 'baz') 会返回 /bar/baz。

如果处理完全部给定的 path 片段后还未生成一个绝对路径,则当前工作目录会被用上。

生成的路径是规范化后的,且末尾的斜杠会被删除,除非路径被解析为根目录。

长度为零的 path 片段会被忽略。

如果没有传入 path 片段,则 path.resolve() 会返回当前工作目录的绝对路径。

例子:

如果任何参数不是一个字符串,则抛出TypeError。

提供了平台特定的路径片段分隔符:

例如,在 POSIX 上:

在 Windows 上:

path.win32 属性提供了 path 方法针对 Windows 的实现。

注意:在 Windows 上,斜杠字符(/)和反斜杠字符(\)都可作为路径分隔符; 但返回值中只用到反斜杠(\)。

一学就会,手把手教你用Go语言调用智能合约

智能合约调用是实现一个 DApp path区块链的关键path区块链,一个完整的 DApp 包括前端、后端、智能合约及区块 链系统path区块链,智能合约的调用是连接区块链与前后端的关键。

path区块链我们先来path区块链了解一下智能合约调用的基础原理。智能合约运行在以太坊节点的 EVM 中。因此要 想调用合约必须要访问某个节点。

以后端程序为例,后端服务若想连接节点有两种可能,一种是双 方在同一主机,此时后端连接节点可以采用 本地 IPC(Inter-Process Communication,进 程间通信)机制,也可以采用 RPC(Remote Procedure Call,远程过程调用)机制;另 一种情况是双方不在同一台主机,此时只能采用 RPC 机制进行通信。

提到 RPC, 读者应该对 Geth 启动参数有点印象,Geth 启动时可以选择开启 RPC 服务,对应的 默认服务端口是 8545。。

接着,我们来了解一下智能合约运行的过程。

智能合约的运行过程是后端服务连接某节点,将 智能合约的调用(交易)发送给节点,节点在验证了交易的合法性后进行全网广播,被矿工打包到 区块中代表此交易得到确认,至此交易才算完成。

就像数据库一样,每个区块链平台都会提供主流 开发语言的 SDK(Software Development Kit,软件开发工具包),由于 Geth 本身就是用 Go 语言 编写的,因此若想使用 Go 语言连接节点、发交易,直接在工程内导入 go-ethereum(Geth 源码) 包就可以了,剩下的问题就是流程和 API 的事情了。

总结一下,智能合约被调用的两个关键点是节点和 SDK。

由于 IPC 要求后端与节点必须在同一主机,所以很多时候开发者都会采用 RPC 模式。除了 RPC,以太坊也为开发者提供了 json- rpc 接口,本文就不展开讨论了。

接下来介绍如何使用 Go 语言,借助 go-ethereum 源码库来实现智能合约的调用。这是有固定 步骤的,我们先来说一下总体步骤,以下面的合约为例。

步骤 01:编译合约,获取合约 ABI(Application Binary Interface,应用二进制接口)。 单击【ABI】按钮拷贝合约 ABI 信息,将其粘贴到文件 calldemo.abi 中(可使用 Go 语言IDE 创建该文件,文件名可自定义,后缀最好使用 abi)。

最好能将 calldemo.abi 单独保存在一个目录下,输入“ls”命令只能看到 calldemo.abi 文件,参 考效果如下:

步骤 02:获得合约地址。注意要将合约部署到 Geth 节点。因此 Environment 选择为 Web3 Provider。

在【Environment】选项框中选择“Web3 Provider”,然后单击【Deploy】按钮。

部署后,获得合约地址为:0xa09209c28AEf59a4653b905792a9a910E78E7407。

步骤 03:利用 abigen 工具(Geth 工具包内的可执行程序)编译智能合约为 Go 代码。abigen 工具的作用是将 abi 文件转换为 Go 代码,命令如下:

其中各参数的含义如下。 (1)abi:是指定传入的 abi 文件。 (2)type:是指定输出文件中的基本结构类型。 (3)pkg:指定输出文件 package 名称。 (4)out:指定输出文件名。 执行后,将在代码目录下看到 funcdemo.go 文件,读者可以打开该文件欣赏一下,注意不要修改它。

步骤 04:创建 main.go,填入如下代码。 注意代码中 HexToAddress 函数内要传入该合约部署后的地址,此地址在步骤 01 中获得。

步骤 04:设置 go mod,以便工程自动识别。

前面有所提及,若要使用 Go 语言调用智能合约,需要下载 go-ethereum 工程,可以使用下面 的指令:

该指令会自动将 go-ethereum 下载到“$GOPATH/src/github.com/ethereum/go-ethereum”,这样还算 不错。不过,Go 语言自 1.11 版本后,增加了 module 管理工程的模式。只要设置好了 go mod,下载 依赖工程的事情就不必关心了。

接下来设置 module 生效和 GOPROXY,命令如下:

在项目工程内,执行初始化,calldemo 可以自定义名称。

步骤 05:运行代码。执行代码,将看到下面的效果,以及最终输出的 2020。

上述输出信息中,可以看到 Go 语言会自动下载依赖文件,这就是 go mod 的神奇之处。看到 2020,相信读者也知道运行结果是正确的了。

path区块链的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于区块链币链、path区块链的信息别忘了在本站进行查找喔。

标签: #path区块链

  • 评论列表

留言评论