 RISC-V 手册 v2(一本开源指令集的指南)Corporation 2016],[ARM Ltd. 2014]。读完需要的时间按每分钟读200个单词,每周读40小时计 算。 基于[Baumann 2017]的图1的一部分。 复杂度的一个标准是文档的大小。图 1.6 显示了以页数和单词数衡量的 RISC-V、 ARM-32 和 x86-32 指令集手册的大小。如果你把读手册作为全职工作,每天 8 小时,每周 5 天,那么需要半个月读完 ARM-32 PC 高位加 上立即数(auipc)让我们仅用两条指令,便可以基于当前 PC 以任意偏移量转移控制流或 者访问数据。将 auipc 中的 20 位立即数与 jalr(参见下面)中 12 位立即数的组合,我们 可以将执行流转移到任何 32 位 PC 相对地址。而 auipc 加上普通加载或存储指令中的 12 位立即数偏移量,使我们可以访问任何 32 位 PC 相对地址的数据。 有什么不同之处?首先,RISC-V 位。在文本和无符号整数 中常用的无符号字节和半字,在写入目标寄存器之前都被无符号扩展到 32 位。 加载和存储的支持的唯一寻址模式是符号扩展 12 位立即数到基地址寄存器,这在 x86-32 中被称为位偏移寻址模式[Irvine 2014]。 有什么不同之处?RV32I 省略了 ARM-32 和 x86-32 的复杂寻址模式。另外,ARM-32 提供的寻址模式并非适用于所有数据类型,但 RV32I0 码力 | 164 页 | 8.85 MB | 1 年前3 RISC-V 手册 v2(一本开源指令集的指南)Corporation 2016],[ARM Ltd. 2014]。读完需要的时间按每分钟读200个单词,每周读40小时计 算。 基于[Baumann 2017]的图1的一部分。 复杂度的一个标准是文档的大小。图 1.6 显示了以页数和单词数衡量的 RISC-V、 ARM-32 和 x86-32 指令集手册的大小。如果你把读手册作为全职工作,每天 8 小时,每周 5 天,那么需要半个月读完 ARM-32 PC 高位加 上立即数(auipc)让我们仅用两条指令,便可以基于当前 PC 以任意偏移量转移控制流或 者访问数据。将 auipc 中的 20 位立即数与 jalr(参见下面)中 12 位立即数的组合,我们 可以将执行流转移到任何 32 位 PC 相对地址。而 auipc 加上普通加载或存储指令中的 12 位立即数偏移量,使我们可以访问任何 32 位 PC 相对地址的数据。 有什么不同之处?首先,RISC-V 位。在文本和无符号整数 中常用的无符号字节和半字,在写入目标寄存器之前都被无符号扩展到 32 位。 加载和存储的支持的唯一寻址模式是符号扩展 12 位立即数到基地址寄存器,这在 x86-32 中被称为位偏移寻址模式[Irvine 2014]。 有什么不同之处?RV32I 省略了 ARM-32 和 x86-32 的复杂寻址模式。另外,ARM-32 提供的寻址模式并非适用于所有数据类型,但 RV32I0 码力 | 164 页 | 8.85 MB | 1 年前3
 简明 X86 汇编语言教程 在保护模式中,也可以 作为内存偏移指针(此时,DS 作为段 寄存器或选择器) EBX 32-bit 宽 通用寄存器。通常作为内存偏移指针使用(相对于 EAX、ECX、EDX),DS 是默认的 段寄存器或选择器。在保护模式中,同样可以起这个作用。 ECX 32-bit 宽 通用寄存器。通常用于特定指令的计数。在保护模式中,也可以作为内存偏移指针 (此时,DS 作为 寄存器或段选择器)。 寄存器或段选择器)。 EDX 32-bit 宽 通用寄存器。在某些运算中作为 EAX 的溢出寄存器(例如乘、除)。在保护模式中, 也可以作为内存偏移指针(此时,DS 作为段 寄存器或选择器)。 上述寄存器同 EAX 一样包括对应的 16-bit 和 8-bit 分组。 用作内存指针的特殊寄存器 ESI 32-bit 宽 通常在内存操作指令中作为“源地址指针”使用。当然,ESI 们,你就可以对他们做任意的操作了。段寄存器,或选择器,在没有指定的情况下都是使用 默认的那个。这句话在现在看来可能有点稀里糊涂,不过你很快就会在后面知道如何去做。 特殊寄存器(指向到特定段或内存的偏移量): EIP 这个寄存器非常的重要。这是一个 32 位宽的寄存器 ,同 CS 一同指向即将执行的 那条指令的地址。不能够直接修改这个寄存器的值,修改它的唯一方法是跳转或分 支指令。(CS0 码力 | 63 页 | 598.28 KB | 1 年前3 简明 X86 汇编语言教程 在保护模式中,也可以 作为内存偏移指针(此时,DS 作为段 寄存器或选择器) EBX 32-bit 宽 通用寄存器。通常作为内存偏移指针使用(相对于 EAX、ECX、EDX),DS 是默认的 段寄存器或选择器。在保护模式中,同样可以起这个作用。 ECX 32-bit 宽 通用寄存器。通常用于特定指令的计数。在保护模式中,也可以作为内存偏移指针 (此时,DS 作为 寄存器或段选择器)。 寄存器或段选择器)。 EDX 32-bit 宽 通用寄存器。在某些运算中作为 EAX 的溢出寄存器(例如乘、除)。在保护模式中, 也可以作为内存偏移指针(此时,DS 作为段 寄存器或选择器)。 上述寄存器同 EAX 一样包括对应的 16-bit 和 8-bit 分组。 用作内存指针的特殊寄存器 ESI 32-bit 宽 通常在内存操作指令中作为“源地址指针”使用。当然,ESI 们,你就可以对他们做任意的操作了。段寄存器,或选择器,在没有指定的情况下都是使用 默认的那个。这句话在现在看来可能有点稀里糊涂,不过你很快就会在后面知道如何去做。 特殊寄存器(指向到特定段或内存的偏移量): EIP 这个寄存器非常的重要。这是一个 32 位宽的寄存器 ,同 CS 一同指向即将执行的 那条指令的地址。不能够直接修改这个寄存器的值,修改它的唯一方法是跳转或分 支指令。(CS0 码力 | 63 页 | 598.28 KB | 1 年前3
 RISC-V 开放架构设计之道 1.0.0f28-31 ft8-11 调用者 分类 R VCLASS rd,rs1 配置 读状态寄存器 R FRCSR rd zero 硬连线为0 设置向量寄存器类型 R VSETDCFG rd,rs1 读舍入模式 R FRRM rd ra 返回地址 抽取 R VEXTRACT rd,rs1,rs2 读异常标志 R FRFLAGS rd sp 栈指针 合并 R VMERGE Set Manual》混淆,讨论后决定在第 2 版译本中更改为《RISC-V 开放架 构设计之道》。 最 后, 我 们 也 决 定 将 第 2 版 译 本 以 电 子 版 的 形 式 发 布, 读 者 可 访 问https://ysyx.oscc.cc/books/riscv-reader.html或https://crva.ict. ac.cn/wjxz/202311/t20231103_197576 GitBook、MOBI 等多种呈现 形式,推动了第 1 版译本的传播。参加 “一生一芯” 计划的张炀杰同学和宋铸恒同学 也向助教反馈了若干错误。还有很多通过邮件、微信等方式提出宝贵意见和建议的读 xii 者,此处不一一列举。我们对这些读者表示衷心感谢,他们的反馈极大地提升了第 2 版译本的质量。正是因为他们的鞭策和鼓励,我们才能完成第 2 版译本的翻译工作。 感谢从中国科学院计算技术研究所毕业的黄成硕士对书中第0 码力 | 223 页 | 15.31 MB | 1 年前3 RISC-V 开放架构设计之道 1.0.0f28-31 ft8-11 调用者 分类 R VCLASS rd,rs1 配置 读状态寄存器 R FRCSR rd zero 硬连线为0 设置向量寄存器类型 R VSETDCFG rd,rs1 读舍入模式 R FRRM rd ra 返回地址 抽取 R VEXTRACT rd,rs1,rs2 读异常标志 R FRFLAGS rd sp 栈指针 合并 R VMERGE Set Manual》混淆,讨论后决定在第 2 版译本中更改为《RISC-V 开放架 构设计之道》。 最 后, 我 们 也 决 定 将 第 2 版 译 本 以 电 子 版 的 形 式 发 布, 读 者 可 访 问https://ysyx.oscc.cc/books/riscv-reader.html或https://crva.ict. ac.cn/wjxz/202311/t20231103_197576 GitBook、MOBI 等多种呈现 形式,推动了第 1 版译本的传播。参加 “一生一芯” 计划的张炀杰同学和宋铸恒同学 也向助教反馈了若干错误。还有很多通过邮件、微信等方式提出宝贵意见和建议的读 xii 者,此处不一一列举。我们对这些读者表示衷心感谢,他们的反馈极大地提升了第 2 版译本的质量。正是因为他们的鞭策和鼓励,我们才能完成第 2 版译本的翻译工作。 感谢从中国科学院计算技术研究所毕业的黄成硕士对书中第0 码力 | 223 页 | 15.31 MB | 1 年前3
 Object Pascal 参考手册(Ver 0.1) 之前必须进行类型转换。 只有 P 和 Q 指向相同的地址,P = Q 才是真(True),否则 P <> Q 为真。 你能使用 + 和 – 运算符来增加和减少一个字符指针的偏移量,也能使用 – 运算符来比较两个字 符指针偏移量的差。它遵循以下规则 • 若 I 是一个整数,P 是一个字符指针,那么 P + I 是把 P 的地址加上 I,也就是一个指向 P 后面 第 I 个字符处的指针(表达式 上面的代码使用同一个值调用 SomeProcedure 两次。 一个字符指针(PChar 或 PWideChar)可以像数组一样使用索引。在上面的例子中,MyPointer[0]返回 字符 H。索引实际上指定了一个偏移量(对 PWideChar 变量,索引自动乘以 2)。这样,如果 P 是一个字 符指针,P[0]和 P^是相同的,它们指的都是数组中的第 1 个字符,P[1]是数组中的第 2 个字符,依此类 推。P[-1]指的是紧靠 Variant、OleVariant、WordBool 和所有接口类型。 • 方法声明必须使用默认的 register 调用约定,它们可以是虚方法,但不能是动态方法。 • 属性声明可以包含访问限定符(读和写),但不能包含其它限定符(index、stored、default 和 nodefault)。 访问限定符指定的方法必须使用默认的 register 调用约定,并且限定符不能使用字段。 • 属0 码力 | 168 页 | 868.25 KB | 1 年前3 Object Pascal 参考手册(Ver 0.1) 之前必须进行类型转换。 只有 P 和 Q 指向相同的地址,P = Q 才是真(True),否则 P <> Q 为真。 你能使用 + 和 – 运算符来增加和减少一个字符指针的偏移量,也能使用 – 运算符来比较两个字 符指针偏移量的差。它遵循以下规则 • 若 I 是一个整数,P 是一个字符指针,那么 P + I 是把 P 的地址加上 I,也就是一个指向 P 后面 第 I 个字符处的指针(表达式 上面的代码使用同一个值调用 SomeProcedure 两次。 一个字符指针(PChar 或 PWideChar)可以像数组一样使用索引。在上面的例子中,MyPointer[0]返回 字符 H。索引实际上指定了一个偏移量(对 PWideChar 变量,索引自动乘以 2)。这样,如果 P 是一个字 符指针,P[0]和 P^是相同的,它们指的都是数组中的第 1 个字符,P[1]是数组中的第 2 个字符,依此类 推。P[-1]指的是紧靠 Variant、OleVariant、WordBool 和所有接口类型。 • 方法声明必须使用默认的 register 调用约定,它们可以是虚方法,但不能是动态方法。 • 属性声明可以包含访问限定符(读和写),但不能包含其它限定符(index、stored、default 和 nodefault)。 访问限定符指定的方法必须使用默认的 register 调用约定,并且限定符不能使用字段。 • 属0 码力 | 168 页 | 868.25 KB | 1 年前3
 美团点评2018技术年货LruCache结构图如下所示,上半部分是双向链表,下半部分是映射表(不一定有序)。双向链表中 value_1所处位置为链表头部,value_N所处位置为链表尾部。 LruCache 初始结构 LruCache读操作,通过键值在映射表中查找缓存数据是否存在。如果数据存在,则将缓存数据所处节点 从链表中当前位置取出,移动到链表头部;如果不存在,则返回查找失败,等待新数据写入。下图为通过 LruCache查找 worker把拉取到的策略数据解析,按照策略的拓扑关系,更新到当前共享内存中的写缓存区,完成更新后,切 换读写缓存区,保证最新的策略立即生效。 4. worker进程在处理请求时,从当前共享内存中的读缓存区获取策略数据。 为了解决timer worker和其它worker在读写策略数据时的竞态关系,我们采用了双buffer机制,实现了业 务层策略数据的无锁读写。另外,通过设置timer的时间为 所开启的策略名。 3. 如果是公共策略,直接根据策略名去查询策略数据。 4. 如果是私有策略,从request上下文获取Location关联的Upstream,即应用标识appkey,到共享内存读缓存区获取 具体的策略数据。 备注:公共策略以”oceanus”开头,区别于私有策略的命名。 运行时策略渲染 运行时策略渲染 查询到请求开启的策略后,Oceanus需要运行时判断是否匹配,以私有策略为例,执行流如下图所示:0 码力 | 229 页 | 61.61 MB | 1 年前3 美团点评2018技术年货LruCache结构图如下所示,上半部分是双向链表,下半部分是映射表(不一定有序)。双向链表中 value_1所处位置为链表头部,value_N所处位置为链表尾部。 LruCache 初始结构 LruCache读操作,通过键值在映射表中查找缓存数据是否存在。如果数据存在,则将缓存数据所处节点 从链表中当前位置取出,移动到链表头部;如果不存在,则返回查找失败,等待新数据写入。下图为通过 LruCache查找 worker把拉取到的策略数据解析,按照策略的拓扑关系,更新到当前共享内存中的写缓存区,完成更新后,切 换读写缓存区,保证最新的策略立即生效。 4. worker进程在处理请求时,从当前共享内存中的读缓存区获取策略数据。 为了解决timer worker和其它worker在读写策略数据时的竞态关系,我们采用了双buffer机制,实现了业 务层策略数据的无锁读写。另外,通过设置timer的时间为 所开启的策略名。 3. 如果是公共策略,直接根据策略名去查询策略数据。 4. 如果是私有策略,从request上下文获取Location关联的Upstream,即应用标识appkey,到共享内存读缓存区获取 具体的策略数据。 备注:公共策略以”oceanus”开头,区别于私有策略的命名。 运行时策略渲染 运行时策略渲染 查询到请求开启的策略后,Oceanus需要运行时判断是否匹配,以私有策略为例,执行流如下图所示:0 码力 | 229 页 | 61.61 MB | 1 年前3
 ffmpeg翻译文档这将在输出文件中第2视频流按libx264编码,第138音频流按libvorbis编码,其余都直接复 制输出。 -t duration (input/output) :限制输入/输出的时间。如果是在 -i 前面,就是限定从输入中读 取多少时间的数据;如果是用于限定输出文件,则表示写入多少时间数据后就停 止。 duration 可以是以秒为单位的数值或者 hh ss[.xxx] 格式的时间值。 注意 - to 和 xxx] 格式的时间值 -itsoffset offset (input) :设置输入文件的时间偏移。 offset 必须采用时间持续的方式指定, 即可以有 - 号的时间值(以秒为单位的数值或者 hh ss[.xxx] 格式的时间值)。偏移会附加 到输入文件的时间码上,意味着所指定的流会以时间码+偏移量作为最终输出时间码。 -timestamp date (output) :设置在容器中记录时间戳。 avoid_negative_ts 选项被指定时 已不推荐这个选项,而是用 aresample 音频滤波器代替。 -copyts :不处理输入的时间戳,保持它们而不是尝试审核。特别是不会消除启动时间偏移值。 注意根据 vsync 同步选项或者特定的混合器处理流程(例如格式选项 avoid_negative_ts 被设 置)输出时间戳会忽略匹配输入时间戳(即使这个选项被设置) -start_at_zero0 码力 | 502 页 | 3.06 MB | 1 年前3 ffmpeg翻译文档这将在输出文件中第2视频流按libx264编码,第138音频流按libvorbis编码,其余都直接复 制输出。 -t duration (input/output) :限制输入/输出的时间。如果是在 -i 前面,就是限定从输入中读 取多少时间的数据;如果是用于限定输出文件,则表示写入多少时间数据后就停 止。 duration 可以是以秒为单位的数值或者 hh ss[.xxx] 格式的时间值。 注意 - to 和 xxx] 格式的时间值 -itsoffset offset (input) :设置输入文件的时间偏移。 offset 必须采用时间持续的方式指定, 即可以有 - 号的时间值(以秒为单位的数值或者 hh ss[.xxx] 格式的时间值)。偏移会附加 到输入文件的时间码上,意味着所指定的流会以时间码+偏移量作为最终输出时间码。 -timestamp date (output) :设置在容器中记录时间戳。 avoid_negative_ts 选项被指定时 已不推荐这个选项,而是用 aresample 音频滤波器代替。 -copyts :不处理输入的时间戳,保持它们而不是尝试审核。特别是不会消除启动时间偏移值。 注意根据 vsync 同步选项或者特定的混合器处理流程(例如格式选项 avoid_negative_ts 被设 置)输出时间戳会忽略匹配输入时间戳(即使这个选项被设置) -start_at_zero0 码力 | 502 页 | 3.06 MB | 1 年前3
 FISCO BCOS 2.7.2 中文文档国密环境下统一使用了国密商用密码相关算法,在solidity中使用keccak256/sha3指令,虚拟机中 实际执行sm3算法! 10.1.2 使 使 使用 用 用KVTable合 合 合约 约 约读 读 读写 写 写接 接 接口 口 口 注 注 注解 解 解: • 为实现AMDB创建的表可被多个合约共享访问,其表名是群组内全局可见且唯一的,所以无法在 同一条链上的同一个群组中,创建多个表名相同的表 emit SetResult(count); return count; } } KVTableTest.sol调用了KVTable合约,实现的是创建用户表t_kvtest,并对t_kvtest表进行读 写的功能。t_kvtest表结构如下,该表记录某公司仓库中物资,以唯一的物资编号作为主key,保存物 资的名称和价格。 重 重 重要 要 要: 客户端需要调用转换为Java文件的合约代码,需要将KVTableTest call(gasLimit, to, value, inputOffset, inputSize, outputOffset, outputSize) 包括内置合约地址、输入参数偏移、输入参数大小、输出参数偏移和输出参数大小,对用户而言,这不 是一件简单的事情。 而FISCO BCOS的预编译合约框架,支持复杂的参数类型,支持通过AMDB读取和存储数据。每个预编 译合约地址固定,合约内可以0 码力 | 1422 页 | 91.91 MB | 1 年前3 FISCO BCOS 2.7.2 中文文档国密环境下统一使用了国密商用密码相关算法,在solidity中使用keccak256/sha3指令,虚拟机中 实际执行sm3算法! 10.1.2 使 使 使用 用 用KVTable合 合 合约 约 约读 读 读写 写 写接 接 接口 口 口 注 注 注解 解 解: • 为实现AMDB创建的表可被多个合约共享访问,其表名是群组内全局可见且唯一的,所以无法在 同一条链上的同一个群组中,创建多个表名相同的表 emit SetResult(count); return count; } } KVTableTest.sol调用了KVTable合约,实现的是创建用户表t_kvtest,并对t_kvtest表进行读 写的功能。t_kvtest表结构如下,该表记录某公司仓库中物资,以唯一的物资编号作为主key,保存物 资的名称和价格。 重 重 重要 要 要: 客户端需要调用转换为Java文件的合约代码,需要将KVTableTest call(gasLimit, to, value, inputOffset, inputSize, outputOffset, outputSize) 包括内置合约地址、输入参数偏移、输入参数大小、输出参数偏移和输出参数大小,对用户而言,这不 是一件简单的事情。 而FISCO BCOS的预编译合约框架,支持复杂的参数类型,支持通过AMDB读取和存储数据。每个预编 译合约地址固定,合约内可以0 码力 | 1422 页 | 91.91 MB | 1 年前3
 FISCO BCOS 2-dev 中文文档国密环境下统一使用了国密商用密码相关算法,在solidity中使用keccak256/sha3指令,虚拟机中 实际执行sm3算法! 8.2.2 使 使 使用 用 用KVTable合 合 合约 约 约读 读 读写 写 写接 接 接口 口 口 注 注 注解 解 解: • 为实现AMDB创建的表可被多个合约共享访问,其表名是群组内全局可见且唯一的,所以无法在 同一条链上的同一个群组中,创建多个表名相同的表 emit SetResult(count); return count; } } KVTableTest.sol调用了KVTable合约,实现的是创建用户表t_kvtest,并对t_kvtest表进行读 写的功能。t_kvtest表结构如下,该表记录某公司仓库中物资,以唯一的物资编号作为主key,保存物 资的名称和价格。 重 重 重要 要 要: 客户端需要调用转换为Java文件的合约代码,需要将KVTableTest call(gasLimit, to, value, inputOffset, inputSize, outputOffset, outputSize) 包括内置合约地址、输入参数偏移、输入参数大小、输出参数偏移和输出参数大小,对用户而言,这不 是一件简单的事情。 而FISCO BCOS的预编译合约框架,支持复杂的参数类型,支持通过AMDB读取和存储数据。每个预编 译合约地址固定,合约内可以0 码力 | 1324 页 | 85.58 MB | 1 年前3 FISCO BCOS 2-dev 中文文档国密环境下统一使用了国密商用密码相关算法,在solidity中使用keccak256/sha3指令,虚拟机中 实际执行sm3算法! 8.2.2 使 使 使用 用 用KVTable合 合 合约 约 约读 读 读写 写 写接 接 接口 口 口 注 注 注解 解 解: • 为实现AMDB创建的表可被多个合约共享访问,其表名是群组内全局可见且唯一的,所以无法在 同一条链上的同一个群组中,创建多个表名相同的表 emit SetResult(count); return count; } } KVTableTest.sol调用了KVTable合约,实现的是创建用户表t_kvtest,并对t_kvtest表进行读 写的功能。t_kvtest表结构如下,该表记录某公司仓库中物资,以唯一的物资编号作为主key,保存物 资的名称和价格。 重 重 重要 要 要: 客户端需要调用转换为Java文件的合约代码,需要将KVTableTest call(gasLimit, to, value, inputOffset, inputSize, outputOffset, outputSize) 包括内置合约地址、输入参数偏移、输入参数大小、输出参数偏移和输出参数大小,对用户而言,这不 是一件简单的事情。 而FISCO BCOS的预编译合约框架,支持复杂的参数类型,支持通过AMDB读取和存储数据。每个预编 译合约地址固定,合约内可以0 码力 | 1324 页 | 85.58 MB | 1 年前3
 C++高性能并行编程与优化 -  课件 - 17 由浅入深学习 map 容器这是通常来说,不过万一小彭老师真的这么重口味在吃答辩呢?要怎么传达这个信息? C++ 一视同仁的接口就能处理这种罕见的情况,不过 Python 用一些 if 语句套一套一样可以。 深入理解 Python 中 [] 能自动区分是读是写的原理 • 写入要创建元素,而读取则要在元素不存在时出错,确实应该是两个不同的函数。 • 为什么 Python 不用区分读取和写入两个函数?只有统一的 [] ?因为 Python 作为老牌胶水语言,为了 val) 。 • val = m[key] 实际上是 val = m.__getitem__(key) 。 • C++ 的 [] 就不论读取还是写入都是同一个运算符重载,他只是返回引用,无法区分你是读是写: • value_type &operator[](key_type key); // [] 返回引用,你 = val 写入的是这个引用, [] 是不知道的 • [] 被调用的时候根本 建立引用 ) map 中的 堆空间 • 何况 structural-binding 捕获的引用比刚刚图示的还要优化。他只会保存一个指向 pair 类 型的指针,然后在你使用 k 和 v 时再去按偏移量访问里面的 first 和 second ,所以 k , v 两个变量的 structural-binding 引用其实是一个引用,只占一个指针的空间( 8 字 节)。 • 也就是说,现在只要0 码力 | 90 页 | 8.76 MB | 1 年前3 C++高性能并行编程与优化 -  课件 - 17 由浅入深学习 map 容器这是通常来说,不过万一小彭老师真的这么重口味在吃答辩呢?要怎么传达这个信息? C++ 一视同仁的接口就能处理这种罕见的情况,不过 Python 用一些 if 语句套一套一样可以。 深入理解 Python 中 [] 能自动区分是读是写的原理 • 写入要创建元素,而读取则要在元素不存在时出错,确实应该是两个不同的函数。 • 为什么 Python 不用区分读取和写入两个函数?只有统一的 [] ?因为 Python 作为老牌胶水语言,为了 val) 。 • val = m[key] 实际上是 val = m.__getitem__(key) 。 • C++ 的 [] 就不论读取还是写入都是同一个运算符重载,他只是返回引用,无法区分你是读是写: • value_type &operator[](key_type key); // [] 返回引用,你 = val 写入的是这个引用, [] 是不知道的 • [] 被调用的时候根本 建立引用 ) map 中的 堆空间 • 何况 structural-binding 捕获的引用比刚刚图示的还要优化。他只会保存一个指向 pair 类 型的指针,然后在你使用 k 和 v 时再去按偏移量访问里面的 first 和 second ,所以 k , v 两个变量的 structural-binding 引用其实是一个引用,只占一个指针的空间( 8 字 节)。 • 也就是说,现在只要0 码力 | 90 页 | 8.76 MB | 1 年前3
 FISCO BCOS 2.9.0 中文文档确保将符合了GMT0018-2012规范的头文件和库文件安装在了动态库默认的搜索路径中。比如: 1. 确保头文件gmt0018.h在目录/usr/include中,并保证所有用户都有读权限。 2. 请将库文件libgmt0018.so放在默认的库搜索路径下,并保证用户具有读和执行权限。如,放 在Ubuntu操作系统的/usr/lib目录下,放在CentOS操作系统,/lib64或/usr/lib64目录下。 第 第 第二 二 确保将符合了GMT0018-2012规范的头文件和库文件安装在了动态库默认的搜索路径中。 1. 确保头文件gmt0018.h在目录/usr/include中,并保证所有用户都有读权限。 2. 请将库文件libgmt0018.so放在默认的库搜索路径下,并保证用户具有读和执行权限。如,放 在Ubuntu操作系统的/usr/lib目录下,放在CentOS操作系统,‘/lib64‘‘目录下。 6.15.2 使 使 使用 用 国密环境下统一使用了国密商用密码相关算法,在solidity中使用keccak256/sha3指令,虚拟机中 实际执行sm3算法! 10.1.2 使 使 使用 用 用KVTable合 合 合约 约 约读 读 读写 写 写接 接 接口 口 口 注 注 注解 解 解: • 为实现AMDB创建的表可被多个合约共享访问,其表名是群组内全局可见且唯一的,所以无法在 同一条链上的同一个群组中,创建多个表名相同的表0 码力 | 1467 页 | 97.74 MB | 1 年前3 FISCO BCOS 2.9.0 中文文档确保将符合了GMT0018-2012规范的头文件和库文件安装在了动态库默认的搜索路径中。比如: 1. 确保头文件gmt0018.h在目录/usr/include中,并保证所有用户都有读权限。 2. 请将库文件libgmt0018.so放在默认的库搜索路径下,并保证用户具有读和执行权限。如,放 在Ubuntu操作系统的/usr/lib目录下,放在CentOS操作系统,/lib64或/usr/lib64目录下。 第 第 第二 二 确保将符合了GMT0018-2012规范的头文件和库文件安装在了动态库默认的搜索路径中。 1. 确保头文件gmt0018.h在目录/usr/include中,并保证所有用户都有读权限。 2. 请将库文件libgmt0018.so放在默认的库搜索路径下,并保证用户具有读和执行权限。如,放 在Ubuntu操作系统的/usr/lib目录下,放在CentOS操作系统,‘/lib64‘‘目录下。 6.15.2 使 使 使用 用 国密环境下统一使用了国密商用密码相关算法,在solidity中使用keccak256/sha3指令,虚拟机中 实际执行sm3算法! 10.1.2 使 使 使用 用 用KVTable合 合 合约 约 约读 读 读写 写 写接 接 接口 口 口 注 注 注解 解 解: • 为实现AMDB创建的表可被多个合约共享访问,其表名是群组内全局可见且唯一的,所以无法在 同一条链上的同一个群组中,创建多个表名相同的表0 码力 | 1467 页 | 97.74 MB | 1 年前3
共 234 条
- 1
- 2
- 3
- 4
- 5
- 6
- 24














 
 