Golang 101(Go语言101 中文版) v1.21.a
自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地 改进。 使用早期的gc编译的程序在运行的时候在每次垃圾回收的结尾常常会 有明显的停顿。 但是自从Go 1.8,使用gc编译的程序在运行时刻已经基本消除 了停顿现象。 gc支持跨平台编译。 比如,我们可以在Linux平台上编译出Windows程序,反 之亦然。 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个 尔(bool)类型。 我们将在Go类型系统概述(第14章)一文中学习到更多关于自定义类型的知 识。 零值 每种类型都有一个零值。一个类型的零值可以看作是此类型的默认值。 一个布尔类型的零值表示真假中的假。 数值类型的零值都是零(但是不同类型的零在内存中占用的空间可能不 同)。 一个字符串类型的零值是一个空字符串。 基本类型的字面量表示形式 一个值的字面形式称为一个字面量,它表示此值在代码中文字体现形式(和内 我们可以将false和true这两个 预声明的具名常量当作布尔类型的字面量形式。 但是,我们应该知道,从严 格意义上说,它们不属于字面量。具名常量声明将在下一篇文章中介绍和详细 解释。 布尔类型的零值可以使用预声明的false来表示。 整数类型值的字面量形式 整数类型值有四种字面量形式:十进制形式(decimal)、八进制形式 (octal)、十六进制形式(hex)和二进制形式(binary)。0 码力 | 821 页 | 956.82 KB | 1 年前3Golang 101(Go语言101 中文版) v1.21.a
自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地 改进。 使用早期的gc编译的程序在运行的时候在每次垃圾回收的结尾常常会有 明显的停顿。 但是自从Go 1.8,使用gc编译的程序在运行时刻已经基本消除了 停顿现象。 gc支持跨平台编译。 比如,我们可以在Linux平台上编译出Windows程序,反之 亦然。 使用Go编写的程序常常编译得非常快。 编译时间的长短是开发愉悦度的一个重 (bool)类型。 我们将在Go类型系统概述(第14章)一文中学习到更多关于自定义类型的知 识。 零值 每种类型都有一个零值。一个类型的零值可以看作是此类型的默认值。 一个布尔类型的零值表示真假中的假。 数值类型的零值都是零(但是不同类型的零在内存中占用的空间可能不 同)。 一个字符串类型的零值是一个空字符串。 基本类型的字面量表示形式 一个值的字面形式称为一个字面量,它表示此值在代码中文字体现形式(和内 我们可以将false和true这两个预 声明的具名常量当作布尔类型的字面量形式。 但是,我们应该知道,从严格意 义上说,它们不属于字面量。具名常量声明将在下一篇文章中介绍和详细解 释。 布尔类型的零值可以使用预声明的false来表示。 整数类型值的字面量形式 整 数 类 型 值 有 四 种 字 面 量 形 式 : 十 进 制 形 式 ( decimal ) 、 八 进 制 形 式 (octa0 码力 | 608 页 | 1.08 MB | 1 年前3FISCO BCOS 1.3 中文文档
区块链上的通信,计算和存储。节点入网后(加入联盟),成为区块链上的一 个共识单位。多个节点参与共识,确保了区块链上交易的一致。 节点文件目录、分类 FISCO-BCOS的节点包含了下列必要的文件。此处不列举节点在运行时生成的 文件。 node0 |-- genesis.json #创世块文件(创世块信息,god账号,创世节点) |-- config.json #节点总配置文件(IP,端口,共识算法) |-- 保存节点证书的序列号,在生成节点证书时自动生成。 A809F269BEE93DA4 日志文件 fisco-bcos.log 节点的启动日志。若节点无法启动时,查看此日志。 log文件夹 节点运行时打印出的日志,按照日志优先级,存放于此。 log/ |-- debug_log_2018081319.log |-- error_log_2018081319.log |-- fatal_log_2018081319 查看节点启动日志 说明:节点启动日志在节点每次启动时刷新,若节点无法启动,可查看此日 志。 操作: cat /mydata/node0/fisco-bcos.log 查看节点运行日志 说明:节点在运行时,在所在目录下的log文件夹里实时的打印一系列的日 志。根据日志等级的划分,可查看相应的日志输出。 操作: 查看目录下的日志 log |-- debug_log_2018081521.log |--0 码力 | 491 页 | 5.72 MB | 1 年前3百度超级链 XuperChain stable 中文文档
输入表示在执 行智能合约期间读取的数据源,即事务的输出来源。事务的输出表示事务写入 状态数据库的数据,这些数据在未来事务执行智能合约时将被引用,如下图所 示: XuperModel事务 为了在运行时获取合约的读写集,在预执行每个合约时XuperModel为其提供智 能缓存。该缓存对状态数据库是只读的,它可以为合约的预执行生成读写集和 结果。验证合约时,验证节点根据事务内容初始化缓存实例。节点将再次执行 XVM选用的是编译执行模式。 XVM编译加载流程 3.3.1. 字节码编译 用户通过c++编写智能合约,通过emcc编译器生成wasm字节码,xvm加载字节 码,生成加入了指令资源统计的代码以及一些运行时库符号查找的机制,最后 编译成本地指令来运行。 c++合约代码 1 int add(int a, int b) { 2 return a + b; 3 } 编译后的WASM文本表示 []int64{int64(argc), int64(argv)}) 13 fmt.Println(ret) 14 return err 15 } 转换后的c代码最终会编译成一个动态链接库来给XVM运行时来使用,在每个 生成的动态链接库里面都有如下初始化函数。 这个初始化函数会自动对wasm 里面的各个模块进行初始化,包括全局变量、内存、table、外部符号解析等。 1 typedef struct0 码力 | 325 页 | 26.31 MB | 1 年前3百度超级链 XuperChain 3.7 中文文档
输入表示在执 行智能合约期间读取的数据源,即事务的输出来源。事务的输出表示事务写入 状态数据库的数据,这些数据在未来事务执行智能合约时将被引用,如下图所 示: XuperModel事务 为了在运行时获取合约的读写集,在预执行每个合约时XuperModel为其提供智 能缓存。该缓存对状态数据库是只读的,它可以为合约的预执行生成读写集和 结果。验证合约时,验证节点根据事务内容初始化缓存实例。节点将再次执行 XVM选用的是编译执行模式。 XVM编译加载流程 3.3.1. 字节码编译 用户通过c++编写智能合约,通过emcc编译器生成wasm字节码,xvm加载字节 码,生成加入了指令资源统计的代码以及一些运行时库符号查找的机制,最后 编译成本地指令来运行。 c++合约代码 1 2 3 int add(int a, int b) { return a + b; } 编译后的WASM文本表示 []int64{int64(argc), int64(argv)}) fmt.Println(ret) return err } 转换后的c代码最终会编译成一个动态链接库来给XVM运行时来使用,在每个 生成的动态链接库里面都有如下初始化函数。 这个初始化函数会自动对wasm 里面的各个模块进行初始化,包括全局变量、内存、table、外部符号解析等。 1 2 3 4 5 6 7 80 码力 | 270 页 | 24.86 MB | 1 年前3百度超级链 XuperChain 3.12-a中文文档
等语言进行合约开发,我们以 golang 和 java 的 native 合约, c++ 的 wasm 合约以及 solidity 的 evm 合约为例展示 合约的基本操作。完整的语言-合约相容矩阵见 合约开发详解 开启运行时支持(可选) XuperChain 默认情况下只启用了 wasm 合约,如果想要尝试 evm 合约和 native 合约,需要修改 conf.xchain.yml 设置 native 和 evm 的 XuperChain 通过 XuperBridge 技术实现虚拟机和语言的解耦,从而支持不同 的合约开发语言和合约运行时。当前不同语言支持的合约情况为 语言 WASM evm native GO Y N Y C++ Y N N JAVA N N Y Solidity N N N 开启运行时支持 XuperChain 默认情况下只启用了 wasm 合约,如果需要在自己搭建的网络上 部署 evm 输入 表示在执行智能合约期间读取的数据源,即事务的输出来源。事务的输出表 示事务写入状态数据库的数据,这些数据在未来事务执行智能合约时将被引 用,如下图所示: XuperModel事务 为了在运行时获取合约的读写集,在预执行每个合约时XuperModel为其提供 智能缓存。该缓存对状态数据库是只读的,它可以为合约的预执行生成读写 集和结果。验证合约时,验证节点根据事务内容初始化缓存实例。节点将再0 码力 | 336 页 | 12.62 MB | 1 年前3百度超级链 XuperChain 3.12-c 中文文档
等语言进行合约开发,我们以 golang 和 java 的 native 合约, c++ 的 wasm 合约以及 solidity 的 evm 合约为例展示 合约的基本操作。完整的语言-合约相容矩阵见 合约开发详解 开启运行时支持(可选) XuperChain 默认情况下只启用了 wasm 合约,如果想要尝试 evm 合约和 native 合约,需要修改 conf.xchain.yml 设置 native 和 evm 的 XuperChain 通过 XuperBridge 技术实现虚拟机和语言的解耦,从而支持不同 的合约开发语言和合约运行时。当前不同语言支持的合约情况为 语言 WASM evm native GO Y N Y C++ Y N N JAVA N N Y Solidity N N N 开启运行时支持 XuperChain 默认情况下只启用了 wasm 合约,如果需要在自己搭建的网络上 部署 evm 输入 表示在执行智能合约期间读取的数据源,即事务的输出来源。事务的输出表 示事务写入状态数据库的数据,这些数据在未来事务执行智能合约时将被引 用,如下图所示: XuperModel事务 为了在运行时获取合约的读写集,在预执行每个合约时XuperModel为其提供 智能缓存。该缓存对状态数据库是只读的,它可以为合约的预执行生成读写 集和结果。验证合约时,验证节点根据事务内容初始化缓存实例。节点将再0 码力 | 336 页 | 12.62 MB | 1 年前3百度超级链 XuperChain 3.12 中文文档
等语言进行合约开发,我们以 golang 和 java 的 native 合约, c++ 的 wasm 合约以及 solidity 的 evm 合约为例展示 合约的基本操作。完整的语言-合约相容矩阵见 合约开发详解 开启运行时支持(可选) XuperChain 默认情况下只启用了 wasm 合约,如果想要尝试 evm 合约和 native 合约,需要修改 conf.xchain.yml 设置 native 和 evm 的 XuperChain 通过 XuperBridge 技术实现虚拟机和语言的解耦,从而支持不同 的合约开发语言和合约运行时。当前不同语言支持的合约情况为 语言 WASM evm native GO Y N Y C++ Y N N JAVA N N Y Solidity N N N 开启运行时支持 XuperChain 默认情况下只启用了 wasm 合约,如果需要在自己搭建的网络上 部署 evm 输入 表示在执行智能合约期间读取的数据源,即事务的输出来源。事务的输出表 示事务写入状态数据库的数据,这些数据在未来事务执行智能合约时将被引 用,如下图所示: XuperModel事务 为了在运行时获取合约的读写集,在预执行每个合约时XuperModel为其提供 智能缓存。该缓存对状态数据库是只读的,它可以为合约的预执行生成读写 集和结果。验证合约时,验证节点根据事务内容初始化缓存实例。节点将再0 码力 | 336 页 | 12.62 MB | 1 年前3百度超级链 XuperChain 3.12-b 中文文档
等语言进行合约开发,我们以 golang 和 java 的 native 合约, c++ 的 wasm 合约以及 solidity 的 evm 合约为例展示 合约的基本操作。完整的语言-合约相容矩阵见 合约开发详解 开启运行时支持(可选) XuperChain 默认情况下只启用了 wasm 合约,如果想要尝试 evm 合约和 native 合约,需要修改 conf.xchain.yml 设置 native 和 evm 的 XuperChain 通过 XuperBridge 技术实现虚拟机和语言的解耦,从而支持不同 的合约开发语言和合约运行时。当前不同语言支持的合约情况为 语言 WASM evm native GO Y N Y C++ Y N N JAVA N N Y Solidity N N N 开启运行时支持 XuperChain 默认情况下只启用了 wasm 合约,如果需要在自己搭建的网络上 部署 evm 输入 表示在执行智能合约期间读取的数据源,即事务的输出来源。事务的输出表 示事务写入状态数据库的数据,这些数据在未来事务执行智能合约时将被引 用,如下图所示: XuperModel事务 为了在运行时获取合约的读写集,在预执行每个合约时XuperModel为其提供 智能缓存。该缓存对状态数据库是只读的,它可以为合约的预执行生成读写 集和结果。验证合约时,验证节点根据事务内容初始化缓存实例。节点将再0 码力 | 336 页 | 12.62 MB | 1 年前3百度超级链 XuperChain latest 中文文档
输入表示在执 行智能合约期间读取的数据源,即事务的输出来源。事务的输出表示事务写入 状态数据库的数据,这些数据在未来事务执行智能合约时将被引用,如下图所 示: XuperModel事务 为了在运行时获取合约的读写集,在预执行每个合约时XuperModel为其提供智 能缓存。该缓存对状态数据库是只读的,它可以为合约的预执行生成读写集和 结果。验证合约时,验证节点根据事务内容初始化缓存实例。节点将再次执行 XVM选用的是编译执行模式。 XVM编译加载流程 3.3.1. 字节码编译 用户通过c++编写智能合约,通过emcc编译器生成wasm字节码,xvm加载字节 码,生成加入了指令资源统计的代码以及一些运行时库符号查找的机制,最后 编译成本地指令来运行。 c++合约代码 1 2 3 int add(int a, int b) { return a + b; } 编译后的WASM文本表示 []int64{int64(argc), int64(argv)}) fmt.Println(ret) return err } 转换后的c代码最终会编译成一个动态链接库来给XVM运行时来使用,在每个 生成的动态链接库里面都有如下初始化函数。 这个初始化函数会自动对wasm 里面的各个模块进行初始化,包括全局变量、内存、table、外部符号解析等。 1 2 3 4 50 码力 | 316 页 | 24.51 MB | 1 年前3
共 152 条
- 1
- 2
- 3
- 4
- 5
- 6
- 16