优先队列中本地存储数据的整数转换

文档序号:1821536 发布日期:2021-11-09 浏览:7次 >En<

阅读说明:本技术 优先队列中本地存储数据的整数转换 (Integer conversion of locally stored data in priority queue ) 是由 徐茂栋 阿舒·斯瓦米 于 2020-02-25 设计创作,主要内容包括:一种馈送处理器(140)被配置成从数据馈送(131)接收(510)交易条目(315),交易条目(315)至少指示浮点值金额,数据馈送(131)与交易目标(321F)相关联。馈送处理器(140)通过以下方式基于交易条目(315)修改本地存储的优先级队列:基于由交易目标(321F)指示的两个基础分量之间的比率将交易条目(315)中的浮点值金额转换(520)为整数值金额;以及将整数值金额存储(530)在本地存储的优先级队列中的对应条目中。(A feed processor (140) is configured to receive (510) a transaction entry (315) from a data feed (131), the transaction entry (315) indicating at least an amount of a floating point value, the data feed (131) being associated with a transaction target (321F). The feed processor (140) modifies the locally stored priority queue based on the transaction entry (315) by: converting (520) the floating-point value amount in the transaction entry (315) to an integer value amount based on a ratio between two base components indicated by the transaction target (321F); and storing (530) the integer value amount in a corresponding entry in a locally stored priority queue.)

优先队列中本地存储数据的整数转换

相关申请的交叉引用

本申请要求2019年2月26日提交的美国临时专利申请62/810,910和2019年7月10日提交的美国专利申请16/508,194的优先权,其内容整体通过引用方式并入本文中。

技术领域

本发明总体上涉及数据处理优化和压缩,并且具体地涉及用于优先级队列中的本地存储数据的整数转换。

背景技术

在一些联网系统中,第一计算设备(例如,馈送处理器服务器)可以从第二计算设备(例如,远程服务器)接收数据馈送。该数据馈送可以包括多个条目,这些条目包括关于不断更新的信息的数据。在更新信息时,数据馈送生成新的条目或元素,该条目或元素被传输到第一计算设备。在接收到新数据馈送条目时,第一计算设备可以处理新数据馈送条目中包含的数据并且将其本地存储在本地数据库中。此外,第一计算设备可以向各种客户端设备提供该本地数据库中包含的信息,以供一个或多个用户使用。在一些情况下,从数据馈送接收到的任何数据都应该以尽可能小的延迟提供给客户端设备。然而,当接收的数据量很大并且接收数据的速率很高时,这可能难以实现。因此,缺乏一种在本地数据库实现对从数据馈送接收的数据进行更优化数据压缩,以便减少数据馈送更新处理中的延迟并减少处理期间的资源使用的方法。

在本说明书中,单词“包括”或诸如“包含”或“含有”的变体将被理解为暗示包括所陈述的元件、整数或步骤,或元件组、整数组或步骤组,但是不排除任何其他元件、整数或步骤,或元件组、整数组或步骤组。

对本说明书中已包括的文件、行为、材料、设备、物品等的任何讨论不应被视为承认这些事项中的任何或全部形成现有技术基础的一部分或与本发明相关的领域中的公知常识,因为它存在于每个所附权利要求的优先权日之前。

发明内容

实施例涉及一种系统,该系统包括被配置成从数据馈送接收交易条目的馈送处理器。交易条目至少指示浮点值金额,并且数据馈送与交易目标相关联。馈送处理器通过以下方式基于交易条目修改本地存储的优先级队列:基于由交易目标指示的两个基础分量之间的比率将交易条目中的浮点值金额转换为整数值金额。馈送处理器将整数值存储在本地存储的优先级队列中的对应条目中。

可以从远程数据馈送服务器接收数据馈送,并且其中馈送处理器可以使用精简版本的传输控制协议/互联网协议(TCP/IP)与远程馈送服务器通信,精简TCP/IP协议避免了由于TCP/IP握手造成的延迟。

该系统还可以包括客户端设备,该客户端设备经由网络连接到馈送处理器并且被配置成:向客户端设备的用户呈现图形用户界面,该界面包括呈现来自本地存储的优先队列的数据的一个或多个网页。

本地存储的优先级队列可以是根据BST中每个条目的整数值金额索引的二叉搜索树(BST)。该系统还可以包括散列表,该散列表具有作为关键字的交易条目标识符和作为值的对BST中的对应交易条目的引用。

该比率可以是两个基础分量的第一基础分量的第一单位值与两个基础分量的第二基础分量的第二单位值之间的比率。

可以通过以下方式将浮点值转换为整数值:基于比率计算指数值;通过指数移位浮点值的小数位以生成移位的浮点值;以及通过将移位的浮点值四舍五入为整数,从移位的浮点值生成整数值。

浮点值金额可以是第一分量与第二分量之间的关系,浮点值指示用于兑换第一分量单位的第二分量的请求金额。兑换一旦被执行就可能会被记录在一个或多个区块链上。

馈送处理器可以被配置成从多个不同的数据馈送接收多个交易条目,并且将来自多个交易条目的数据组合到单个本地存储的优先级队列中。

另一实施例涉及一种计算机实现的方法。该计算机实现的方法可以包括从数据馈送接收交易条目,该交易条目至少指示浮点值金额,该数据馈送与交易目标相关联。计算机实现的方法还可以包括通过以下方式基于交易条目修改本地存储的优先级队列:通过基于由交易目标指示的两个基础分量之间的比率,将交易条目中的浮点值金额转换为整数值金额;以及将整数值金额存储在本地存储的优先级队列中的对应条目中。

可以从远程数据馈送服务器接收数据馈送,并且其中馈送处理器可以使用精简版本的传输控制协议/互联网协议(TCP/IP)与远程馈送服务器通信,精简TCP/IP协议避免了由于TCP/IP握手造成的延迟。

该方法还可以包括客户端设备,该客户端设备经由网络连接到馈送处理器并且被配置成:向客户端设备的用户呈现图形用户界面,该界面包括呈现来自本地存储的优先队列的数据的一个或多个网页。

本地存储的优先级队列可以是根据BST中每个条目的整数值金额索引的二叉搜索树(BST)。该方法还可以包括散列表,该散列表具有作为关键字的交易条目标识符和作为值的对BST中的对应交易条目的引用。

该比率可以是两个基础分量的第一基础分量的第一单位值与两个基础分量的第二基础分量的第二单位值之间的比率。

通过以下方式将浮点值转换为整数值:基于比率计算指数值;通过指数移位浮点值的小数位以生成移位的浮点值;并且通过将移位的浮点值四舍五入为整数,从移位的浮点值生成整数值。

浮点值金额可以是第一分量和第二分量之间的关系,浮点值可以指示用于兑换第一分量单位的第二分量的请求金额。兑换一旦被执行就可能会被记录在一个或多个区块链上。

该方法还可以包括从多个不同的数据馈送接收多个交易条目;并且将来自多个交易条目的数据组合到单个本地存储的优先级队列中。

另一实施例涉及作为计算机可读指令(暂时性或非暂时性)的软件,该计算机可读指令在被执行时使得执行上述方法。

附图说明

附图(图)1示出了根据实施例的包括数据馈送和馈送处理器服务器的示例系统。

图2是示出根据实施例的图1的馈送处理器服务器的组件的方框图。

图3是示出根据实施例的优化计算机数据结构的示例的方框图,其中存储来自远程数据馈送的数据馈送条目。

图4是示出根据实施例的从数据馈送接收的数据的示例转换以增加数据压缩的方框图和流程图。

图5是示出根据实施例的用于对从远程数据馈送接收的数据进行数据压缩的示例过程的流程图。

图6A是示出根据实施例的可以在图1中描述的系统中使用的被记录在区块链上的交易链的方框图。

图6B是示出根据实施例的可以在图1中描述的系统中使用的区块链中的多个区块的连接的方框图。

图7是示出根据实施例的示例计算设备的方框图。

仅出于说明的目的,附图描绘并且详细描述描述了各种非限制性实施例。

具体实施方式

附图(图)和以下描述仅通过说明的方式涉及优选实施例。本领域技术人员可以将本文公开的结构和方法的替代实施例识别为可以在不脱离所公开的原理的情况下采用的可行替代方案。

现在将详细参考几个实施例,在附图中示出其示例。应注意,只要可行,相似或相同的附图标记可以在图中使用并且可以指示相似或相同的功能。附图仅出于说明的目的描绘所公开的系统(或方法)的实施例。本领域技术人员将从以下描述中容易地认识到,在不脱离本文描述的原理的情况下,可以采用本文所示的结构和方法的替代实施例。

系统概述

图1示出了根据实施例的包括数据馈送和馈送处理器服务器的示例系统100。系统100包括网络110、一个或多个客户端设备120(称为多个客户端设备120或一个客户端设备120)、远程数据馈送服务器135、一个或多个远程数据源服务器135和馈送处理器服务器140。在各种实施例中,系统100可以包括不同的、更少的或附加的组件。系统100中的组件可以各自对应于单独且独立的实体或可以由同一实体控制。

系统100中的元件之间的通信可以经由网络110传输,该网络可以是例如互联网、局域网等。一些元件可以通过一个网络进行通信,而其他元件可以使用单独的网络进行通信。这些单独网络中的每一个都可以类似于网络110。在一个实施例中,网络110使用标准通信技术和/或协议。因此,网络110可以包括使用诸如以太网、702.11、直接微波点对点连接、微波接入全球互操作性(WiMAX)、3G、数字用户线(DSL)、异步传输模式(ATM)、InfiniBand、PCI快速高级交换等。类似地,网络110上使用的网络协议可以包括多协议标签交换(MPLS)、传输控制协议/互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、文件传输协议(FTP)等。通过网络110交换的数据可以使用包括超文本标记语言(HTML)、可扩展的标记语言(XML)等技术和/或格式来表示。此外,所有或一些链接可以使用常规加密技术进行加密,诸如安全套接字层(SSL)、传输层安全(TLS)、虚拟专用网络(VPN)、互联网协议安全(IPsec)等。在另一实施例中,代替上述技术或除上述技术之外,系统110中的元件可以使用定制和/或专用数据通信技术。例如,网络110可以使用避免元件之间的TCP/IP握手惩罚的精简TCP/IP协议以减少通信延迟。

一个或多个客户端设备120是可以由用户操作并且由用户用作前端设备的计算设备,用户可以利用该前端设备访问馈送处理器服务器140处的数据。客户端设备110可以是任何计算设备。客户端设备110的示例包括个人计算机(PC)、台式计算机、膝上型计算机、平板计算机、智能电话、诸如智能手表的可穿戴电子设备或任何其他合适的电子设备。

用户设备110可以各自包括界面125,其可以由馈送处理器服务器140或由客户端设备120执行的计算机可读指令提供。用户能够经由界面125访问数据或者在馈送处理器服务器140处可用。此外,用户还能够经由界面125提交交易请求。界面125可以采取不同的形式。在一个实施例中,界面125是可以由馈送处理器服务器140提供的软件应用程序的组件。例如,软件应用程序可以提供可在客户端设备120处提供的前端用户界面。软件应用程序可以是可以在客户端设备120处获取(例如,下载)并安装或执行的计算机可执行代码包。在另一实施例中,界面125可以是经由馈送处理器服务器140或其他服务器直接提供的界面。例如,界面125可以是一个或多个网页。界面125可以包括显示各种信息和图形元素的图形用户界面(GUI)。在另一实施例中,界面125可以不包括图形元素但可以经由诸如应用程序界面(API)之类的其他合适的方式与馈送处理器服务器140通信。

远程数据馈送服务器130(本文中称为远程数据馈送服务器130或远程数据馈送服务器130)可以是一个或多个计算系统,每个计算系统各自将一个或多个数据馈送131(本文中称为数据馈送131或统称为数据馈送131)提供到馈送处理器服务器140。数据馈送131包括关于特定数据源或数据源(诸如远程数据源服务器135)的持续更新的信息。数据源可以含有关于在数据馈送131中描述的一些元素的信息,诸如交易(例如,在金融市场上的订单、在零售组织的采购订单、物流更新、运输信息)、新闻(例如,突发新闻)、预测(例如,天气报告)、当前状态(例如,设备状态、公共交通、卫星位置)等。可以使用诸如CSV(逗号分隔值)、XML(可扩展标记语言)等的各种数据格式来提供数据馈送131。可以使用自定义格式提供数据馈送,诸如使用扩展字符集或使用二进制字符,并且可以在传输之前对其中的数据进行加密。

数据馈送131在被提供时可以在一次或多次更新中传输。每次更新都可能随着数据的生成而发生,或者也可能会定期生成。例如,在交易的情况下,可以为检测、生成、记录等的每个新交易提供数据馈送131中的条目。每次更新可以具有关于数据馈送131本身的信息(例如,标识符),以及有关所描述元素的信息。例如,在交易的情况下,对应的数据馈送条目可以包括关于交易类型、价值金额、交易时间戳等的信息。通过接收数据馈送更新,诸如馈送处理器服务器140之类的接收者计算设备能够确定在数据馈送131中描述的元素的当前状态。例如,在数据馈送131包括关于交易的信息的情况下,数据馈送131的接收允许系统确定由数据馈送描述的交易的完整状态,即,确定包括这些交易的市场/交易所的当前状态。下面将参考图2至图5描述关于数据馈送131的格式的附加细节。

包括一个或多个计算系统的馈送处理器服务器140从数据馈送131接收更新并且生成数据馈送131中的信息的本地版本141。馈送处理器服务器140可以使用减少处理对数据馈送131的更新所需的处理时间并且通过减少用于存储本地版本141的资源需求的方法来处理数据馈送131。在一个实施例中,为了减少处理时间,馈送处理器服务器140可以使用精简TCP/IP协议,使用自定义网络硬件,以便从远程数据馈送服务器130接收数据馈送131。馈送处理器服务器140还可以使用直接存储器访问来在接收到数据馈送131之后存储该数据馈送。

此外,馈送处理器服务器140在将本地版本141的信息存储在数据馈送131中时,可以使用本地版本141的最佳数据结构并且使用优化的过程将来自数据馈送131的数据转换成本地版本141。在一个实施例中,本地版本141可以包括多个优先级队列,其根据接收到更新的时间(或通过在更新中的数据馈送条目内的时间戳)按优先级存储来自数据馈送131的更新,并且可以根据每个更新内的一些其他信息进一步存储数据,诸如在更新的每个数据馈送条目中指示的价值金额。

此外,馈送处理器服务器140可以压缩来自数据馈送更新的数据以减小数据在馈送处理器服务器140的存储器内占据的大小。特别地,在一些情况下,数据馈送131包括具有占用大量存储器占用的浮点或十进制值的条目,并且为这些值分配的存储器必须适应这些值的大范围更改。这些数字可以表示数据馈送131条目包括关于其的信息的两个值之间的比率。例如,该值可以指示温室气体排放总量与全球温度变化之间的比率。作为另一示例,该值可以指示两种不同货币之间的比率(即,使用一种货币购买另一种货币的价格或成本)。在许多这些情况下,由于被比较的两个值之间的幅度差很大,因此该比率可能是非常大或非常小的数字。继续前面的示例,可能会排放大量温室气体,以便发生微小的温度变化。作为另一示例,两种货币之间的汇率可能非常大,因为一个单位的一种货币可以兑换大量的另一种货币。此外,在一些情况下,这些比率可能会随时间在规模上发生巨大变化。例如,由于市场不稳定,两种货币之间的汇率可能会剧烈波动。作为另一示例,网络上的设备计数与总网络使用量之间的比率可能会具体取决于网络使用量的峰值而随时间发生显著变化。

因此,为了存储这些值,本地版本141可必须分配大量存储器空间来存储这些值中的每一个,因为它们可能是非常大或非常小的数字,而且因为它们在规模上可能在许多数量级上变化。资源的这种使用不一定是最佳的,因为它可能导致本地版本141的存储器大小超过可用存储器,尤其是在数据馈送131非常频繁地更新的情况下。

更确切而言,为了避免这些问题,可以修改值以便减少它们使用的空间,同时仍然保持值中数据的准确性。如下文关于图2至图5更详细地描述,馈送处理器服务器140通过用指数值修改这些值来修改(即,缩小或压缩)这些值,该指数值源自构成由该值指示的比率的两个分量之间的差。继续前面的示例,可以基于用于生成货币兑换比率值的两种货币之间的比率来计算指数值。该指数可以用于修改货币兑换值以减小其大小,同时仍以刻度大小的形式保留适当的交易分辨率。

使用优化资源使用和修改接收数据的组合,负载处理服务器140可以减少处理来自数据馈送131的更新所需的延迟和资源,并且使这些更新反映在本地版本141中。虽然上面的描述主要是关于单个数据馈送131,但在一些情况下,馈送处理器服务器140可以处理来自多个源(例如,多个场所)的多个数据馈送131的更新,并且将来自这些多个数据馈送的数据馈送条目组合到本地版本141中以形成本地版本141处的所有数据馈送131的组合版本或聚合版本。这允许访问本地版本141的用户能够查看来自多个数据馈送131的数据,并且基于多个数据馈送而不是单个数据馈送做出决定、请求交易等。

系统100还可以可选地包括一个或多个区块链(未示出),其可以被网络110上的元件访问以在区块链上记录执行的交易。例如,数据馈送131可以包括关于具有记录在各种区块链上的交易账本的各种加密货币之间的汇率的数据。由于如上所述的本地版本141和馈送处理器服务器140的特性,客户端设备120通过访问馈送处理器服务器140上的本地版本141,可能能够在没有显著延迟的情况下实时查看关于所有数据馈送131的信息。随后,用户可能能够使用客户端设备120,例如,经由界面125,来执行交易以兑换这些各种加密货币。在交易完成时,馈送处理器服务器140或一些其他实体可以将交易提交到对应的区块链以实现交易的完成。区块链可以是公共区块链。公共区块链网络可以包括多个节点,这些节点协作以验证交易并且生成新区块(可以记录有关加密货币的交易信息)。在区块链的一些实现方式中,新区块的生成也可以称为挖矿过程。区块链可以支持智能合约,智能合约是当满足一个或多个条件时可执行的一组代码指令。当被触发时,这组代码指令可以由诸如区块链的虚拟机之类的计算机执行。此处,计算机可以是常规意义上的单个操作单元(例如,单个个人计算机),或者可以是一组协作以执行代码指令的分布式计算设备(例如,虚拟机或分布式计算系统)。此类公共区块链平台的示例包括BITCOIN、ETHEREUM、EOS、NEO、CARDANO、STELLER等。

示例馈送处理器服务器

图2是示出根据实施例的图1的馈送处理器服务器140的组件的方框图。在图2所示的实施例中,馈送处理器服务器140包括具有远程馈送缓存215、入站列表220和出站列表225的高速存储器210。馈送处理器服务器140还包括精简联网接口控制器(NIC)230、直接存储器访问(DMA)模块240、馈送解密器245、整数转换引擎250、列表修改器255和UI生成器260。馈送处理器服务器140的功能可以以不同于所描述的方式分布在不同的组件中。此外,在各种实施例中,馈送处理器服务器140可以包括不同的、更少的和/或附加的组件。

高速存储器210的功能可以类似于图7中的主存储器604,并且可以被选择用于低延迟特性和高带宽吞吐量。高速存储器210可以包括以多通道配置而布置的多个存储器模块。此外,高速存储器210可以包括跨多个计算设备的存储器。高速存储器210可以存储远程馈送缓存215以及本地版本141的数据馈送131,其可以使用多个单独的列表来表示,诸如用于入站交易的入站列表220和用于出站交易的出站列表225,如图所示。

远程馈送缓存215存储从远程数据馈送服务器130接收的针对数据馈送131的任何更新的临时副本。当更新由馈送处理器服务器140处理时,它们从远程馈送缓存215中清除。

入站列表220存储来自数据馈送131的指示入站交易的条目。这些指示特定交易流向的交易,指示谁发起交易,以及交易针对谁。入站交易的交易流向与出站列表225中存储的交易相反。在一个实施例中,入站交易是证券的购买订单,诸如以特定价格和单位数量列出的购买加密货币以兑换另一种加密货币的开放请求。

出站列表225存储来自数据馈送131的指示出站交易的条目。如入站列表220所述,出站交易具有与入站交易相反的交易流向。在一个实施例中,入站交易是证券的卖出订单,诸如以特定价格和单位数量列出的用于出售加密货币以兑换另一种加密货币的开放订单。

如下文关于图3和图4进一步详细描述,入站列表220和出站列表230可以以减少添加、移除和/或修改每个列表内的条目所需的时间的方式构造,同时使列表中的条目保持按各种特性排序,诸如时间戳。在一个实施例中,入站列表220和出站列表230可以存储为二叉搜索树,如图3中所示。

入站列表220或出站列表230的每个条目可以包括指示交易的值的条目,其指示两个基础分量之间的比率或其他组合(例如,平均、加权平均、差、乘积)。例如,该值可以指示两种货币之间的汇率价格。替代地,如上所述,该值可以指示两个测量值或值之间的某个其他比率。由于该值可以基于基础分量的变化而发生剧烈变化,因此该值的存储可能会占用大量空间。例如,两个基础分量A与B之间的差可能会在100次到一百万次的范围内波动。在这种情况下,A与B之间的比率的存储要求将需要足够的空间来存储一系列值,以容纳A与B之间的整个差范围,例如,达1000万。由于该值的范围很大,因此不能简单地通过删除有效数字来缩放该值。例如,当数值接近100时,从数字中删除超过3个有效数字可能会导致数字被注册为零。然而,这会消耗大量存储器空间,并且在数据馈送131非常频繁地更新的情况下,可能导致负载处理服务器140耗尽存储器空间。确切而言,如下所述,基于用于计算该值的基础分量之间的差,将修改程序应用于动态更改的值。这可以减少存储该值的存储器需求,并且因此减少入站列表220和出站列表225的存储器占用。

尽管本文示出了两个列表220和225,但在其他实施例中,负载处理服务器140基于在列表中表示的基础数据的类型来维护附加列表。例如,在列表指示货币汇率的情况下,负载处理服务器140可以为每个被观察的货币对组合或从数据馈送131接收到的数据来维护入站列表和出站列表。

精简联网接口控制器(NIC)230是如下网络接口控制器,其使用修改的联网协议来减少馈送处理器服务器140与远程数据馈送服务器130之间的通信延迟。在一个实施例中,精简NIC 230利用微波或其他无线通信与远程数据馈送服务130通信以减少延迟。精简NIC230可以被耦合到微波发射器/接收器(例如,抛物面天线)以便发射和接收微波信号。在一个实施例中,精简NIC 230还利用精简版本的标准联网协议来与远程数据馈送服务器130通信。精简版本的标准联网协议,诸如TCP/IP,可以去除该协议的某些特征,诸如确认(ACK)、握手协议等,以便进一步减少由标准联网协议的要求产生的开销引起的延迟。一旦精简NIC230从远程数据馈送服务器130接收到关于数据馈送131的更新的信息,精简NIC 230就可以将该信息传输到直接存储器访问(DMA)模块240以暂时存储在远程馈送缓存215中。

DMA模块240提供对高速存储器210的直接访问,绕过在馈送处理器服务器140上执行的操作系统的存储器管理系统(并且还绕过中央处理单元(CPU)的使用以读取和写入存储器)。通常,操作系统(OS)包括各种存储器管理系统,诸如虚拟存储器管理、存储器保护系统(例如,防止缓冲区溢出)等。这些增加了读取和写入存储器的开销和处理时间。确切而言,DMA模块240可以是OS的存储器管理系统内的定制组件、OS内核内的特殊模块、设备驱动程序或允许直接访问物理存储器(例如,高速存储器210)的一些其他组件。

在建立初始会话以接收数据馈送131之前,馈送解密器245可以可选地用于解密从数据馈送131接收的数据或执行与远程数据馈送服务器130的初始认证。由馈送处理器服务器140接收的数据馈送131的更新可以被加密以防止未经授权的实体访问数据馈送131中的信息,因为它们可能包含敏感或专有信息。馈送解密器245因此可以使用诸如公钥密码术之类的标准解密过程来解密更新。馈送解密器245可以在数据被写入高速存储器210之前和在它被精简NIC 230接收之后在线解密数据,或者该馈送解密器可以在数据被写入高速存储器210之后解密数据,例如,当它在远程馈送缓存215中时。

整数转换引擎250将从数据馈送131的更新接收的数据条目中的一些值从浮点或更大的存储器占用格式转换为具有更小的存储器占用的整数数据类型。如上所述,从数据馈送131接收的更新可以包括基于可以随时间按数量级改变的比率的值。这需要分配更大的存储器区域来存储这些值。因此,需要对这些值进行数据压缩。为了减少存储这些值所需的空间,整数转换引擎250可以计算指数值,该指数值基于用于生成该值的基础分量的比率。在一个实施例中,使用以下算法生成该指数:

指数=min(8,max(0,4-integer(log10(比率(分量A的单位值分量B的单位值)……(1)

因此,为了生成该指数,整数转换引擎250确定用于生成从数据馈送131接收的原始值的基础分量的单位值。单位值是每个基础分量的单个单位的值。在原始值指示汇率的情况下,基础分量是用于生成汇率的货币,而单位价值是每种货币的单个单位的价值。这些单位值可以根据第三货币来计算,诸如法定货币(例如美元)或其他稳定货币。因此,在这种情况下,上述等式(1)中提到的“比率”是以下值:一个单位的第一货币(分量A)相对于第三货币的价值除以一个单位的第二货币(分量B)相对于第三货币。替代地,不使用第三货币并且该比率可以是第一货币与第二货币之间的当前市场比率或历史汇率。市场比率可以基于第一货币与第二货币之间的兑换的最后执行的市场订单。对计算出的比率值执行对数底10运算,然后将其转换为整数(使用舍入、下限或上限运算)。整数转换引擎250进一步确定该结果值与值4之间的差,随后确定该差结果与零值之间的最大值。最后,整数转换引擎250确定值8与来自先前最小值确定的结果之间的最小值。最大确定的结果是指数。

指数值用于通过将原始值乘以10^指数来修改原始值(即,将原始值的小数点移位指数值),并且进一步将结果四舍五入为整数以生成整数转换值。此操作减小了原始值的大小,同时如果将整数转换后的值转换回原始值,则允许有足够的最小分辨率。在货币兑换的情况下,这个最小分辨率是刻度大小。刻度大小是货币的最小价格变动。由于整数转换值的转换是动态的,并且基于两种基础货币之间的当前差,因此整数转换值将具有足够的分辨率,使得刻度大小始终可以低于某个阈值,例如,以原始值的汇率表示的一种货币的1/100。

此外,在基础分量是不同货币的情况下,两种货币的兑换可以发生在两个不同的交易流向(第一货币为第二种,或第二货币为第一种)。在这种情况下,可以确定两个不同的比率,每个方向一个,并且可以生成两个不同的指数值。在计算整数转换值之后,整数转换引擎250将整数转换值传输到列表修改器255。

整数转换引擎250可以基于更新的数据(例如,更新的汇率)周期性地重新计算指数值并且基于新的指数生成整数转换的值。当发生指数值的更新时,整数转换引擎250可以使用新指数值重新转换入站列表220和出站列表225中所有现有的整数转换值,可以指示列表修改器255保存列表中每个条目内的每个整数转换值的新指数值,或者可以包括指示整数转换值范围(例如,指示持续时间的范围)的指数值的单独列表或散列表。

列表修改器255将整数转换的值存储在本地版本141的数据馈送131内。在图2所示的示例中,本地版本141由入站列表220或出站列表225表示,其中每个列表存储一个交易流向的整数转换值。然而,在其他情况下,列表修改器255还可以取决于正在处理的数据的类型将值存储在不同的列表中。在来自数据馈送条目131的更新中的条目不对应于本地版本141内的现有条目的情况下,列表修改器255将新条目添加到本地版本141中。然而,在来自数据馈送131的条目更新现有条目的情况下,列表修改器255将通过在来自数据馈送131的条目中提供的标识符来查找现有条目,并且用来自数据馈送131的新数据来更新现有条目,包括任何新的整数转换值。

在一些情况下,来自数据馈送131的更新条目指示应该去除本地版本141中的现有条目。在这种情况下,列表修改器255根据提供的标识符从本地版本141中去除条目。此外,在交易表示订单的情况下,诸如货币兑换的订单,来自数据馈送131的更新条目可以指示订单被部分或全部填充。在这种情况下,列表修改器255可以根据由来自数据馈送131的更新提供的订单的标识符来去除或修改本地版本141中与填充的订单相对应的现有交易。

虽然上面的一些示例是关于货币兑换描述的,但相同的过程可以应用于其他场景,其中从数据馈送或其他数据源接收的值在数量级上有很大变化,因此可以转换为更小、空间效率更高的整数值,而不是更大的值或浮点值,后者需要更大的存储器占用。在这些场景中,上面所示的等式(1)中的“比率”可能是在一个单位时间内测量的原始值的基础分量之间的比率。因此,例如,如果比率是本地网络中每个唯一用户会话数的网络吞吐量,则基础分量的单位值可能是每秒钟网络吞吐量(单位时间)和每秒钟记录的唯一用户会话数。

UI生成器260生成图形用户界面,其使用本地版本的数据馈送131,例如入站列表220和出站列表225,向用户(例如,客户端设备120的用户)呈现数据馈送131。虽然UI生成器260被示为在馈送处理器服务器140处,但在其他实施例中,它可以取而代之在客户端设备120处。UI生成器260可以呈现存在于入站列表220和出站列表225中的数据的各种级别的细节。在一个实施例中,UI生成器260呈现顶级视图,其示出了来自入站列表220和出站列表225的最高排名值。在其他实施例中,UI生成器260可以呈现附加数据,诸如存在于入站列表220和出站列表225中的所有条目的列表。当呈现来自列表的信息时,UI生成器260可以使用对应的指数值将列表中的整数转换值转换回原始值(或原始值的近似值)。因此,用户看到的是原始值(或其近似值)而不是整数值。使用用户界面中呈现的信息,用户可能能够执行交易并执行其他活动。当新数据从数据馈送131更新到入站列表220和出站列表225时,UI生成器260可以实时更新用户界面。这些更新可以包括对列表的添加、删除和更新。

入站列表和出站列表的示例数据结构

图3是示出根据实施例的优化计算机数据结构的示例的方框图,其中存储来自远程数据馈送的数据馈送条目。如图所示,优化的计算机数据结构是二叉搜索树(BST)305。BST是如下数据结构,其存储数据条目,并且按排序顺序保存每个数据条目的关键字,以便查找,插入,并且删除BST中的每个条目平均花费与BST大小的对数成正比的时间(例如,O(log n))。在存储包括入站列表220和出站列表225的本地版本141的数据馈送131的情况下,可以使用两个BST,每个列表一个。如上所述,每个列表中的条目包括整数转换的值,作为节点存储在BST中。BST中的节点可以根据每个对应条目的整数转换值进行键控。每个节点可以链接到左子树和右子树,其中与节点的整数转换值相比,一个子树中的节点具有较低等级的整数转换值,而另一子树中的节点具有较高等级的整数转换值。节点或条目可以递归地添加或去除。可以通过将每个节点与要查找的值进行比较来查找或更新节点或条目。

在一个实施例中,取代在每个节点中包括列表220或225中的一个中的每个条目,BST 305的每个节点包括指示整数转换值311,可选地指示总单位计数312和交易阵列313的对象,诸如对象310。交易阵列313存储交易条目的列表,诸如交易条目315(一般称为一交易条目315或多个交易条目315)。每个交易条目315对应于从数据馈送131接收的条目。交易阵列312中的每个交易条目315具有与对象310的整数转换值311匹配的整数转换值,诸如整数转换值321D。因此,每个对象310包括来自数据馈送131的具有相同匹配整数转换值的所有条目。此外,交易阵列313中的交易条目315可以按照每个交易条目315的条目时间戳321G排序,具有最旧条目时间戳321G的条目被排序最高。因此,新条目被添加到阵列的后面,最旧的条目由于其最旧的时间戳排序最高,从而在阵列的前面。

在上述任一实现方式中,每个交易条目或节点还可以与唯一标识符相关联,诸如ID号321A,其可以是整数值。这可以在数据馈送131中提供。可以在入站列表220和出站列表225中的每一个中存储单独的散列表,该散列表对该唯一标识符进行散列处理,以进一步改进每个条目的查找以及它们的删除和修改,因为来自数据馈送131的更新可以由相同的标识符标识。因此,如果来自数据馈送131的更新使用唯一标识符来引用现有条目,则散列表可以用于快速定位该条目并修改或删除它。

此外,在一个实施例中,本文描述的BST 305可以是Red-Black BST,其进一步平衡树中的节点,使得每个节点的子树中的节点数在插入并且删除节点后近似相等。

除了ID号321A、整数转换值321D和条目时间戳321G之外,每个交易条目315还可以包括其他值。这些可以包括类型321B、单位计数321C、指数321E和交易目标321F。类型321B指示交易流向,并且可以可选地被包括在交易条目315中。如前所述,指数321E表示整数转换值321D被修改成的指数。单位计数321C指示交易的创建者希望交易的基础分量的单位数量,用以兑换另一基础分量。这些分量可以是任何单位的货币、证券或其他资产。可选交易目标321F标识交易的基础分量。因此,例如,如果交易的创建者希望使用第二货币购买50个单位的第一货币,则交易目标321F将识别这两种货币,而单位计数321C指示50个单位。对象310中的所有交易条目315中的所有单位计数321C的总和可以被存储为总单位计数312。

将参考图4描述当从数据馈送131接收更新时,关于在BST 305中插入、删除和修改条目的过程的附加细节。

从远程数据馈送进行本地版本更新的示例过程

图4是示出根据实施例的从数据馈送接收的数据的示例转换以增加数据压缩的方框图和流程图。

如先前所示,整数转换引擎220将从远程数据馈送服务器120接收的数据馈送131的条目接收的值转换为整数转换值。图4中示出具有示例性值的该过程的示例。

最初,从远程数据馈送服务器120接收条目410作为对数据馈送131的更新。该交易410可以对应于数据馈送131中的条目。交易410可以指示标识符号415A、单位计数415B和时间戳415C。这些可以分别类似于先前描述的交易条目315的分量,即,ID号321A、单位计数321C和条目时间戳321G。

此外,交易410可以包括交易类型415D,其指示交易类型。交易类型可以指示是否要添加、去除/取消、修改/修定交易条目,或者是否(完全或部分)满足交易条目中指示的请求。取决于交易类型,从远程数据馈送服务器120接收的条目410可能不指示本文指示的所有元素。

条目410还可以指示值415E,并且可选地指示交易目标416F。如上所述,值415E被转换为整数转换值。交易目标416F类似于上述交易目标321F。在一些实施例中,交易目标416F未在条目410中指定,而是由从其接收条目410的数据馈送131指示。本文中,交易目标416F中所示的符号表示货币A与货币B之间的兑换。值415E是285.614,并且如上所述,指示两个基础分量之间的比率,在该示例(根据第三货币定义的)中是两个货币A与B之间的比率。本文中,值415E不仅以浮点格式表示,与较小的整数相比,它使用更多的存储器(memory)来存储,而且还有6位数字,因此需要足够的存储(storage)来存储至少六位数字的值。

整数转换引擎250接收条目410,并且通过计算420由交易目标416F指示的单位值之间的比率来转换条目415E中的值415E。在这种情况下,该比率与值415E相同,并且是第一货币A与第二货币B之间的比率。如上所述,在其他情况下,该比率可以表示最近完成的交易的汇率。使用该比率值,等式(1)用于计算指数,在这种情况下为整数值2。整数转换引擎250使用该指数以通过将值415E乘以10^2或100而将值415E转换425为整数转换值。这导致整数转换的值28571。整数转换引擎250将该值存储430在对应的本地存储的BST中。

示例流程

图5是示出根据实施例的用于对从远程数据馈送接收的数据进行数据压缩的示例过程的流程图。在一个实施例中,可以由馈送处理器服务器140执行过程500。

馈送处理器服务器140从数据馈送(诸如数据馈送131)接收510交易条目。交易条目至少指示浮点值金额。数据馈送指示交易目标。这些可以分别是值415E和交易目标416F。可以从远程数据馈送服务器130接收数据馈送131。

馈送处理器服务器140基于由交易目标指示的两个基础分量之间的比率将交易条目中的浮点值金额转换520为整数值金额。因此,交易目标可以指示两个基础分量,诸如两种不同的货币。因此,基于这两种货币计算该比率。在一个实施例中,通过基于比率生成指数,诸如在上面的等式(1)中,将浮点值转换为整数值金额。

馈送处理器服务器140将整数值金额存储530在本地存储的优先级队列中的对应条目中。这可以对应于BST中的交易条目,诸如BST 305中的交易条目315。如果条目尚不存在,则可以创建该条目,或者可以使用新更新的整数值金额修改现有条目。

示例区块链架构

图6A是示出根据实施例的在区块链上广播和记录的交易链的方框图。如上所述,用于生成转换为整数转换值的比率的基础分量可以是两种不同的加密货币。加密货币是一种具有被存储在去中心化区块链中的账本的货币。因此,当用户使用例如馈送处理器服务器140请求执行交易并且交易是基于加密货币的时,该交易的所得执行导致不同金额的这些加密货币的所有权的变更。所有权的变更可以被记录在区块链账本中。区块链在被存储在区块链中的一个或多个区块链单元中记录使用加密货币发生的交易,但不需要中央机构来验证交易是否合法。确切而言,区块链是经由多个节点或计算系统的合作生成的。

分布式区块链网络可以包括多个节点。每个节点都是参与区块链网络的用户或服务器。在完全公共的区块链中,任何参与者都可以成为区块链的节点。这些节点可以共同用作为分布式计算系统,用作区块链的虚拟机。在一些实施例中,虚拟机或分布式计算系统可以简称为计算机。公共区块链的任何用户都可以广播交易以供区块链节点记录。每个用户的数字钱包都与加密私钥相关联,该加密私钥用于签署交易并且证明区块链单元的所有权。

区块链单元的所有权可以通过交易链进行追踪。在图6A中,交易链可以包括第一交易610、第二交易620和第三交易630等。链中的每个交易可以具有非常相似的结构。虽然每个交易都链接到图6A中的先前交易,但交易不需要被记录在区块链上的连续区块上。例如,记录交易610的区块和记录交易620的区块可以相隔数百甚至数千个区块。先前区块的追溯由当前块记录的先前区块的散列值进行跟踪。

参考图6A中的交易中的一个,为了说明,交易620可以被称为当前交易。交易610可以是先前交易,并且交易630可以被称为后续交易。每个交易包括交易数据622、接收者地址624、先前交易的散列626和当前交易的所有者的数字签名628。交易数据622记录当前交易620的实质。例如,交易数据622可以指定一数量的区块链单元(例如,电子硬币、区块链代币、BCDR等)的转移。在一些实施例中,交易数据622可以包括智能合约的代码指令。

接收者地址624是与接收者的数字钱包的私钥对应的公钥版本。在一个实施例中,接收者地址624是公钥本身。在另一实施例中,接收者地址624是通过诸如一些确定性功能之类的一个或多个功能的公钥的编码版本。例如,从公钥生成接收者地址624可以包括散列公钥、添加校验、添加一个或多个前缀或后缀、以及对结果比特进行编码。接收者地址624可以是区块链上接收者的数字钱包的唯一标识符。

先前交易626的散列是先前交易610的整个交易数据的散列。同样地,先前交易636的散列是交易620的整个交易数据的散列。可以使用诸如安全散列算法(SHA)或消息摘要算法(MD)之类的散列算法来执行先前交易610。在一些实施例中,与当前交易620相对应的所有者还可以使用所有者的公钥来生成散列。先前交易626的散列提供先前交易610的追溯,并且还保持先前交易610的数据完整性。

在生成当前交易620时,区块链单元的当前所有者的数字钱包使用其私钥对交易数据622、接收者地址624和先前交易626的散列的组合进行加密以生成所有者的数字签名628。为了生成当前交易620,当前所有者通过将接收者地址624包括在当前交易620的数字签名628中来指定接收者。区块链单元的后续所有者由接收者地址624确定。换言之,在后续区块630中生成数字签名638的后续所有者由当前交易620指定的接收者地址624固定。为了验证当前交易620的有效性,区块链网络中的任何节点可以追踪回到先前交易610(通过追踪先前交易626的散列)并且定位接收者地址614。接收者地址614对应于数字签名628的公钥。因此,区块链网络中的节点可以使用公钥来验证数字签名628。

区块链单元的所有权的转移可以由区块链单元的所有者继续。为了转移所有权,所有者可以广播包括所有者的数字签名和先前交易的散列的交易。具有可验证数字签名的有效交易和先前交易的正确散列值将通过挖矿过程被记录在区块链的新区块中。

图6B是示出根据实施例的区块链中的多个区块的连接的方框图。除了可能被称为创世区块的第一个区块之外,区块链的每个区块可以具有相似的结构。区块650、660和660可以各自包括先前区块链的散列652、随机数654和多个交易(例如,第一交易656、第二交易658等)。每个交易可以具有图6A中所示的结构。

可以通过挖矿过程生成新块。对于公共区块链,区块链系统中的任何节点都可以参与到挖矿过程中。先前区块的散列的生成可以通过试错过程进行。可以使用随机数作为输入的一部分对先前区块(或先前区块的版本,诸如简化版本)的整个数据进行散列。区块链可能需要在先前区块的散列中采用某种格式,以便节点将新区块识别为有效。例如,在一个实施例中,先前区块的散列需要以散列中的一定数量的零开始。取决于区块链的实现方式,也可以使用先前区块的其他散列标准。

作为示例,在生成先前区块的散列662时,参与挖矿过程的节点可以将先前区块650的版本与随机数(即,随机值)随机组合以生成散列。由于随机数,生成的散列在某种程度上是随机数目。节点将生成的散列与区块链系统的标准进行比较,以检查是否满足标准(例如,生成的散列是否以散列中的特定数量的零开头)。如果生成的散列不符合标准,则节点会尝试与另一不同随机数组合来生成另一散列。通过区块链网络中的不同节点重复该过程,直到其中一个节点找到满足标准的散列为止。用于生成令人满意的散列的随机数是随机数664。首先生成令人满意的散列662的节点还可以选择将广播到区块链网络的哪些交易包括在区块660中。节点可以检查交易的有效性(例如,交易是否可以追溯到之前记录的交易以及交易生成者的数字签名是否有效)。该选择还可以取决于待记录的广播交易的数量以及可以在交易中指定的费用。例如,在一些实施例中,每个交易可以与用于记录交易的费用(例如,矿工费)相关联。在选择交易并且固定区块660的数据之后,区块链网络中的节点重复试错过程,以通过尝试不同的随机数来生成先前区块的散列672。

在一些情况下,不同的节点可以选择不同的交易以包括在后续区块中,并且可以相互竞争以找到具有满足标准的生成的散列的那组交易的合适的随机数。因此,可存在为包含不同交易的区块生成多个令人满意的散列的情况。这会在区块链中创建分叉。未来的区块可能会基于该分叉的任一区块中的数据进行散列。然而,在实践中,为了避免将区块添加到多个分叉中,节点可以通过选择具有较早时间戳的块的分叉来达成共识,或者使用一些其他标准,以便选择从中对另外区块进行散列的主分叉。

可以通过挖矿过程继续生成新区块。当广播交易被记录在区块中时,完成区块链单元(例如,电子硬币、区块链代币、BCDR等)的交易。在一些实施例中,当交易被多重验证时,交易被视为已结算。当有多个后续区块生成并且链接到记录交易的区块时,交易被多重验证。

在一些实施例中,一些交易656、658、666、668、676、678等可以包括一个或多个智能合约。记录的智能合约的代码指令可被记录在区块中并且通常是不可变的。当满足条件时,触发智能合约的代码指令。代码指令可以使计算机(例如,区块链的虚拟机)执行一些动作,诸如生成区块链单元并且将记录生成的交易广播到区块链网络进行记录。

计算机器架构

图7是示出能够从计算机可读介质读取指令并且在处理器(或控制器)中执行它们的示例计算机器的组件的方框图。本文描述的计算机可以包括图8中所示的单个计算机器、虚拟机、包括图7中所示的多个计算机器节点的分布式计算系统,或计算设备的任何其他合适的布置。本文描述的计算机可以被之前图中描述的任何元件用来执行所描述的功能。

举例来说,图7示出了计算机系统700的示例形式的计算机器的图解表示,其中可以执行指令724(例如,软件、程序代码或机器代码),这些指令可以被存储在计算机可读介质中以用于使机器执行本文讨论的任何一个或多个过程。在一些实施例中,计算机器作为独立设备操作或者可以连接(例如,联网)到其他机器。在联网部署中,机器可以在服务器-客户端网络环境中作为服务器机器或客户端机器运行,或者作为对等(或分布式)网络环境中的对等机器运行。

图7中描述的计算机器的结构可以对应于上述图中所示的任何软件、硬件或组合组件。虽然图7示出了各种硬件和软件元件,但图1和图2中描述的组件中的每一个都可以包括附加或更少的元件。

举例来说,计算机器可以是个人计算机(PC)、平板电脑、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、智能手机、网络设备、网络路由器、物联网(IoT)设备、交换机或桥接器,或能够执行指令724的任何机器,该指令指定该机器要采取的动作。此外,虽然仅示出了单个机器,但术语“机器”也应被视为包括单独或联合执行指令724以执行本文讨论的任何一种或多种方法的机器的任何集合。

示例计算机系统700包括一个或多个处理器(通常为处理器702)(例如,中央处理单元(CPU)、图形处理单元(GPU)、数字信号处理器(DSP)、一个或多个专用集成电路(ASIC)、一个或多个射频集成电路(RFIC)或这些的任何组合)、主存储器704和静态存储器706,它们被配置成经由总线707相互通信。计算机系统700还可以包括图形显示单元710(例如,等离子显示面板(PDP)、液晶显示器(LCD)、投影仪或阴极射线管(CRT))。计算机系统700还可以包括字母数字输入设备712(例如,键盘)、光标控制设备714(例如,鼠标、轨迹球、操纵杆、运动传感器或其他指向仪器)、存储单元716、信号生成设备718(例如,扬声器)和网络接口设备720,它们也被配置成经由总线708进行通信。

存储单元716包括计算机可读介质722,在该计算机可读介质上存储有具体实施本文描述的任何一种或多种方法或功能的指令724。指令724在由计算机系统700执行期间也可以完全或至少部分地驻留在主存储器704内或处理器702内(例如,在处理器的高速缓冲存储器内),主存储器704和处理器702也构成计算机可读介质。可以经由网络接口设备720通过网络726传输或接收指令724。

虽然计算机可读介质722在示例实施例中被示为单个介质,但术语“计算机可读介质”应被视为包括能够存储指令(例如,指令724)的单个介质或多个介质(例如,中心化式或分布式数据库,或相关联的高速缓存和服务器)。计算机可读介质可以包括能够存储由机器执行的指令(例如,指令724)并且使机器执行本文公开的任何一种或多种方法的任何介质。计算机可读介质可以包括但不限于呈固态存储器、光学介质和磁介质形式的数据储存库。计算机可读介质不包括诸如信号或载波之类的瞬态介质。

其他配置注意事项

某些实施例在本文中被描述为包括逻辑或多个组件、引擎、模块或机构,例如,如图2中所示。引擎可以构成软件模块(例如,在计算机可读介质上具体实施的代码)或硬件模块。硬件引擎是能够执行某些操作并且可以以某种方式配置或布置的有形单元。在示例实施例中,一个或多个计算机系统(例如,独立的客户端或服务器计算机系统)或计算机系统的一个或多个硬件引擎(例如,处理器或一组处理器)可以由软件(例如,应用程序或应用程序部分)配置成硬件引擎,用于执行本文描述的某些操作。

在各种实施例中,可以机械地或电子地实现硬件引擎。例如,硬件引擎可以包括永久配置的专用电路或逻辑(例如,作为专用处理器,诸如现场可编程门阵列(FPGA)或专用集成电路(ASIC))以执行某些操作。硬件引擎还可以包括由软件临时配置以执行某些操作的可编程逻辑或电路(例如,包括在通用处理器或另一可编程处理器内)。将理解,以机械方式、在专用和永久配置的电路中或在临时配置的电路(例如,由软件配置)中实现硬件引擎的决定可能由成本和时间注意事项所驱动。

本文描述的示例方法的各种操作可以至少部分地由一个或多个处理器(例如,处理器702)执行,这些处理器被临时配置(例如,通过软件)或永久配置成执行相关操作。无论是临时配置还是永久配置,此类处理器都可以构成处理器实现的引擎,其操作以执行一个或多个操作或功能。在一些示例实施例中,本文所指的引擎可以包括处理器实现的引擎。

某些操作的执行可以被分布在一个或多个处理器之间,不仅驻留在单个机器内,而且还跨多个机器部署。在一些示例实施例中,一个或多个处理器或处理器实现的模块可以位于单个地理位置中(例如,在家庭环境、办公室环境或服务器群内)。在其他示例实施例中,一个或多个处理器或处理器实现的模块可以被分布在多个地理位置上。

在阅读本发明后,本领域技术人员将通过本文公开的原理理解用于类似系统或过程的另外的替代结构和功能设计。因此,虽然已经示出和描述了特定实施例和应用程序,但是应当理解,所公开的实施例不限于本文公开的精确构造和组件。在不脱离所附权利要求限定的精神和范围的情况下,可以对本文公开的方法和设备的布置、操作和细节进行对本领域技术人员而言显而易见的各种修改、改变和变更。

本领域技术人员将理解,在不脱离本发明的广泛一般范围的情况下,可以对上述实施例进行多种变更和/或修改。因此,本实施例在所有方面都被视为说明性的而非限制性的。

25页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:用于测试由随机数生成器生成的序列的设备和方法

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类