CN111159278B - 数据展示方法及装置、电子设备和计算机可读存储介质 - Google Patents

数据展示方法及装置、电子设备和计算机可读存储介质 Download PDF

Info

Publication number
CN111159278B
CN111159278B CN201911403482.4A CN201911403482A CN111159278B CN 111159278 B CN111159278 B CN 111159278B CN 201911403482 A CN201911403482 A CN 201911403482A CN 111159278 B CN111159278 B CN 111159278B
Authority
CN
China
Prior art keywords
data structure
data
memory
target object
pointer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201911403482.4A
Other languages
English (en)
Other versions
CN111159278A (zh
Inventor
贾永鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sina Technology China Co Ltd
Original Assignee
Sina Technology China Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sina Technology China Co Ltd filed Critical Sina Technology China Co Ltd
Priority to CN201911403482.4A priority Critical patent/CN111159278B/zh
Publication of CN111159278A publication Critical patent/CN111159278A/zh
Application granted granted Critical
Publication of CN111159278B publication Critical patent/CN111159278B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/26Visual data mining; Browsing structured data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/284Relational databases
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • User Interface Of Digital Computer (AREA)

Abstract

本发明实施例公开了一种数据展示方法及装置、电子设备和计算机可读存储介质,其中,所述方法包括:创建第一数据结构,第一数据结构的类型为Go语言中的字典Map;创建第二数据结构,第二数据结构为对形成第一数据结构的各结构体的重组,第二数据结构中的结构体和内存数据分布情况可被展示;根据第二数据结构对第一数据结构进行处理以生成目标对象,目标对象包括指向第一数据结构中的内存地址的指针和第一数据结构中的内存数据;根据目标对象对基于第一数据结构存储的待展示数据进行数据展示。通过本发明实施例中,可以对Go语言中的字典Map类型的数据结构的内部构成及其内存数据分布情况进行展示,以供用户查看。

Description

数据展示方法及装置、电子设备和计算机可读存储介质
技术领域
本发明实施例涉及数据处理技术领域,尤其涉及一种数据展示方法及装置、电子设备和计算机可读存储介质。
背景技术
目前,Go语言(The Go Programming Language,Golang)可以在不损失应用程序性能的情况下降低代码的复杂性。但是,目前Go语言标准库中只能查看Go语言中的字典(Map)的大小、判断键(Key)值(Value)对是否存在,但是无法查看其他数据,即无法查看Go语言中的Map类型的数据结构的内部构成及其内存数据分布情况。
发明内容
本发明实施例提供一种数据展示方法及装置、电子设备和计算机可读存储介质,旨在解决无法实现对Go语言中的Map类型的数据结构的内部构成及其内存数据分布情况的查看的问题。
本发明实施例采用下述技术方案:
第一方面,本发明实施例提供一种数据展示方法,包括:
创建第一数据结构,所述第一数据结构的类型为Go语言中的字典Map;
创建第二数据结构,所述第二数据结构为对形成所述第一数据结构的各结构体的重组,所述第二数据结构中的结构体和内存数据分布情况可被展示;
根据所述第二数据结构对所述第一数据结构进行处理以生成目标对象,所述目标对象包括指向所述第一数据结构中的内存地址的指针和所述第一数据结构中的内存数据;
根据所述目标对象对基于所述第一数据结构存储的待展示数据进行数据展示。
第二方面,本发明实施例提供一种数据展示装置,包括:
第一创建模块,用于创建第一数据结构,所述第一数据结构的类型为Go语言中的字典Map;
第二创建模块,创建第二数据结构,所述第二数据结构为对形成所述第一数据结构的各结构体的重组,所述第二数据结构中的结构体和内存数据分布情况可被展示;
处理模块,根据所述第二数据结构对所述第一数据结构进行处理以生成目标对象,所述目标对象包括指向所述第一数据结构中的内存地址的指针和所述第一数据结构中的内存数据;
展示模块,根据所述目标对象对基于所述第一数据结构存储的待展示数据进行数据展示。
第三方面,本发明实施例提供一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
创建第一数据结构,所述第一数据结构的类型为Go语言中的字典Map;
创建第二数据结构,所述第二数据结构为对形成所述第一数据结构的各结构体的重组,所述第二数据结构中的结构体和内存数据分布情况可被展示;
根据所述第二数据结构对所述第一数据结构进行处理以生成目标对象,所述目标对象包括指向所述第一数据结构中的内存地址的指针和所述第一数据结构中的内存数据;
根据所述目标对象对基于所述第一数据结构存储的待展示数据进行数据展示。
第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
创建第一数据结构,所述第一数据结构的类型为Go语言中的字典Map;
创建第二数据结构,所述第二数据结构为对形成所述第一数据结构的各结构体的重组,所述第二数据结构中的结构体和内存数据分布情况可被展示;
根据所述第二数据结构对所述第一数据结构进行处理以生成目标对象,所述目标对象包括指向所述第一数据结构中的内存地址的指针和所述第一数据结构中的内存数据;
根据所述目标对象对基于所述第一数据结构存储的待展示数据进行数据展示。
本发明实施例采用的上述至少一个技术方案能够达到以下有益效果:
在本发明实施例中,为了实现对类型为Go语言中的字典Map的数据结构的内部结构体构成和内存数据分布情况的查看,对于需要进行数据展示的类型为Go语言中的Map的第一数据结构,需要构建一个与该第一数据结构的结构相类似的第二数据结构,即对形成第一数据结构的各结构体进行重组处理,使得该第二数据结构能够被展示内部的结构体构成和内存数据分布情况。在此基础上,则可以根据该第二数据结构对第一数据结构进行转换生成包括指向该第一数据结构中的内存地址的指针以及其中的内存数据的目标对象,以基于该目标对象对使用第一数据结构存储的待展示数据进行数据展示,即对构成第一数据结构的结构体及内存数据分布情况进行展示。如此,实现了对Go语言中的字典Map类型的数据结构的内部构成及其内存数据分布情况的展示,便于供用户进行查看。
附图说明
此处所说明的附图用来提供对本发明实施例的进一步理解,构成本发明实施例的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明实施例的不当限定。在附图中:
图1为本发明实施例提供的数据展示方法的流程示意图;
图2为本发明实施例提供的第二数据结构的组成示意图;
图3为本发明实施例提供的数据展示装置的结构示意图;
图4为本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明具体实施例及相应的附图对本发明技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以下结合附图,详细说明本发明各实施例提供的技术方案。
参见图1所示,本发明实施例提供一种数据展示方法,该方法可包括:
步骤101:创建第一数据结构,第一数据结构的类型为Go语言中的字典Map。
可选的,该步骤101中创建的第一数据结构存储的内容为空。其中,GolangMap类型的第一数据结构主要由两个核心的结构体,即基础结构体和bmap(bucket map,通常称为bucket)结构体实现,hmap(hash map,)结构体为Golang Map的基础结构体,在Map中的bmap可以用于组成散列数组,以存储数据,每个bmap至少可以包括键keys、值values、溢出指针,其中,溢出指针指向额外的bmap,以组成链表,用于存储溢出的数据,当溢出指针指示的地址为空时,无溢出数据可存储。具体的,通过hmap下的内存地址即hmap.buckets可以指向基于bmap组成的散列数组。其中,第一数据结构中的内存数据基于构成该第一数据结构的各结构体进行分布存储。
步骤103:创建第二数据结构,第二数据结构为对形成第一数据结构的各结构体的重组,第二数据结构中的结构体和内存数据分布情况可被展示。
其中,第二数据结构中的内存数据基于构成该第二数据结构的各结构体进行分布存储。
可选的,在本发明实施例的数据展示方法中,上述第二数据结构的组成结构与第一数据结构的组成相类似。具体的,上述第一数据结构和上述第二数据结构中的结构体的类型至少可以包括hmap结构体、bmap结构体、散列数组、链表和一维数组中的至少一个。其中,链表由多个bmap组成,每个bmap对应多个一维数组。
步骤105:根据第二数据结构对第一数据结构进行处理以生成目标对象,目标对象包括指向第一数据结构中的内存地址的指针和第一数据结构中的内存数据。
可选的,上述目标对象的类型可以为hmap结构体,以及该目标对象中的指针与内存数据相互关联。可以理解,根据上述第二数据结构对第一数据结构进行处理生成目标对象的过程中,相当于将第一数据结构的组成结构和内存数据镜像到目标对象中,并转化成可以被展示的类型,从而便于实现对第一数据结构的数据展示。
步骤107:根据目标对象对基于第一数据结构存储的待展示数据进行数据展示。
在本发明实施例中,为了实现对类型为Go语言中的字典Map的数据结构的内部结构体构成和内存数据分布情况的查看,对于需要进行数据展示的类型为Go语言中的Map的第一数据结构,需要构建一个与该第一数据结构的结构相类似的第二数据结构,即对形成第一数据结构的各结构体进行重组处理,使得该第二数据结构能够被展示内部的结构体构成和内存数据分布情况。在此基础上,则可以根据该第二数据结构对第一数据结构进行转换生成包括指向该第一数据结构中的内存地址的指针以及其中的内存数据的目标对象,以基于该目标对象对使用第一数据结构存储的待展示数据进行数据展示,即对构成第一数据结构的结构体及内存数据分布情况进行展示。如此,实现了对Go语言中的字典Map类型的数据结构的内部构成及其内存数据分布情况的展示,便于供用户进行查看。
可选的,在本发明实施例的数据展示方法中,上述步骤105,可以具体执行为如下内容:
获取第一数据结构中的内存地址;
将第一数据结构中的内存地址的类型对应转化为第二数据结构中的内存地址的类型,并生成与类型转化后的内存地址对应的指针;
将生成的指针和第一数据结构中存储的待展示数据关联赋值给预设变量后生成目标对象。
可以理解,为了能够基于第二数据结构实现对Go语言中的Map内部的数据结构和内存数据分布情况的查看,需要将第一数据结构中的内存地址的类型进行转化,以与第二数据结构中对应的内存地址的类型相同,比如从int型转化为string型,即实现对第一数据结构的类型转换,并通过相应的指针指向进行类型转化后的内存地址,以建立指针与第一数据结构中的内存地址之间的对应关系;进一步将生成的指针与第一数据结构中存储的内存数据(即待展示数据)关联后一同赋值给预先准备好的变量,以得到目标对象,如此,通过第二数据结构和目标对象实现了对第一数据结构的转化和镜像,进而则可以基于该目标对象实现对第一数据结构的相关展示,即相当于该目标对象具有与第二数据结构相同的结构及类型并具有第一数据结构中存储的待展示数据。
可选的,在本发明实施例的数据展示方法中,上述步骤107可以具体执行为如下内容:
基于目标对象获取存储在第一结构体下的第一指针,第一指针指向第二结构体的首地址,其中,第一结构体的类型为hmap,第二结构体的类型散列数组;
基于第二结构体的首地址和第二结构体的大小遍历第二结构体,确定第二结构体中存储的至少一个第二指针,其中,第二结构体的大小与第一结构体下的第一字段的值有关,第二指针指向第三结构体的首地址,第三结构体的类型包括bmap和链表中的至少一个;
基于至少一个第三结构体对基于第一数据结构存储的待展示数据进行数据展示。
可以理解,通过存储在目标对象中的类型为hmap结构体的第一结构体下的第一指针,可以定位到目标对象中的类型为散列数组的第二结构体的首地址,则基于该第二结构体的首地址及其大小即可推算出该第二结构体中存储的各第二指针,具体的,该第二结构体的不同存储空间分别对应一个索引值,该索引值基于第二结构体的大小确定,而第二结构体的大小由第一结构体下的第一字段的值决定,举例来说,若第一结构体下的第一字段的值为3,则第二结构体的大小为23=8,则第二结构体的各存储空间对应的索引值可以分别依次为0~7,那么进一步地,各存储空间对应的第二指针可以为第二结构的首地址加上索引值与各存储空间的大小的乘积。其中,各第二指针对应指向用于存储数据的第三结构体的首地址,如此,基于各第二指针即可以找到相应的内存数据(即基于第一数据结构存储的待展示数据),并可以对相应的第三结构体及内存数据进行输出展示。
可选的,由上可知,在类型为hmap结构体的结构体中,存在buckets字段和oldbuckets字段,在对应的Map存在数据动态迁移的情况下,即由buckets字段对应的存储空间迁移至oldbuckets字段对应的存储空间时,为了实现对Map类型的数据结构更加全面的展示,可以按照相同流程,分别实现对buckets字段对应的存储空间和oldbuckets字段对应的存储空间内的数据分布情况及存储结构的展示。也就是说,通过上述第一指针可以实现对不同的存储空间的内存地址的指示,即:
在第一结构体下的旧桶oldbuckets字段对应的值为空时,第一指针为桶buckets字段对应的值;
在oldbuckets字段对应的值不为空时,第一指针包括oldbuckets字段对应的值和buckets字段对应的值。
可选的,在本发明实施例的数据展示方法中,对于上述第三结构体而言,当根据第二指针指向的第三结构体的首地址向下遍历至其溢出指针时,若当前指向的第三结构体的溢出指针指向的地址为空,如图2中006对应的溢出指针overflow指向空地址nil时,该第三结构体的类型为bmap结构体;若当前指向的第三结构体的溢出指针指向的地址不为空,如图2中007对应的溢出指针overflow指向下一个类型为bmap结构体的结构体的首地址,则第三结构体的类型为链表,比如图2所示的007和008组成的链表,链表结尾处对应的溢出指针指向空地址时链表终止。
进一步可选的,在本发明实施例的数据展示方法中,上述基于至少一个第三结构体对基于第一数据结构存储的待展示数据进行数据展示的步骤,具体可以执行为如下内容:
对第三结构体下的第二字段指向的第四结构体和第四结构体中存储的待展示数据进行输出展示,其中,第二字段包括头字节topbits字段、键keys字段和值values字段,第四结构体的类型为一维数组。
可以理解,基于目标对象中的各指针遍历到第一数据结构对应的内存数据后,则可以将相应的字段和各字段指向的待展示数据进行输出展示,如此即可以供用户查看数据在Map类型的数据结构中的存储位置及分布情况。
可选的,在本发明实施例的数据展示方法中,还可以包括如下内容:
在第一数据结构中存储的待展示数据发生变化的情况下,创建新的第二数据结构,并根据新的第二数据结构对新的第一数据结构和进行处理以生成新的目标对象,以及根据新的目标对象对基于新的第一数据结构存储的待展示数据进行数据展示。
可以理解,当用户在第一数据结构中已有数据的基础上进行了增加和/或删减等操作,导致第一数据结构中的内存数据发生变化时,可以执行重新对基于Map类型的第一数据结构存储的待展示数据进行数据展示的过程,如此,通过不同次的输出展示的结构体及数据之间的对比,展示第一数据结构内存储的待展示数据的动态变化情况。
换言之,在本发明实施例中,相当于通过提供命令交互功能、数据结构展示功能、插入数据功能、清空数据功能和随机生成数据功能等实现了对Map的数据展示方案。
为了通过基于Linux操作系统的电子设备可以动态的、可视化的、可交互的查看类型为Go语言中的字典Map的数据结构(即第一数据结构)的内部构成及其内存数据分布情况,需要使用基于Go语言的结构体(GolangStruct)类型构建一个如图2所示的数据结构(相当于第二数据结构),该构建的数据结构与Golang Map的数据结构相似,结构体的类型包括hmap结构体(如图2中的001,相当于第一结构体)、散列数组(如图2中的004,相当于第二结构体)、bmap结构体(如图2中的006、007和008,其中,007和008组成链表,相当于第三结构体)以及与各bmap的头字节topbits字段、关键字keys字段和值values字段分别对应的一维数组(如图2中的009、010、011)。
另外,还需要创建空的Go语言中的Map类型的数据结构。具体的,可以使用mp:=make(map[int]int,0)创建一个空的Golang Map并赋值给mp。
通过命令交互功能启动本发明实施例的数据展示方案对应的主程序,启动主程序后向用户呈现相应的选项,以根据用户的具体选择进一步调用其他功能。启动主程序后呈现的选项的一个具体示例如下:
1:输入key和value
具体的,在用户选择输入“1”时,允许用户根据自己的需求在创建的空Map类型的数据结构中输入key和value;或者允许用户根据自己的需求在原有的Map中插入新的key和value,即调用插入数据功能。
通过上述过程可以辅助完成对第一数据结构的创建。
2:随机生成一个Map
具体的,在用户选择输入“2”时,可以根据用户输入的数字,进行随机数运算生成Golang Map类型的数据结构中的value,并将基于用户输入的数字对应的索引作为key,比如,若用户输入的数字为10,则与其对应的索引包括0~9,以生成一个用户想要大小的Golang Map类型的数据结构,即调用随机生成数据功能。
通过上述过程可以辅助完成对第一数据结构的创建。
3:打印Map
具体的,在用户选择输入“3”时,可以调用数据结构展示功能,对通过上述“1”或“2”中任一种方式生成的具有内存数据的Golang Map类型的数据结构进行展示。
调用数据结构展示功能后,通过使用h:=**(**hmap)(unsafe.Pointer(&mp)),获取mp这个Golang Map的内存地址并赋值给变量h(相当于目标对象),因为hmap(图2中的001)的数据结构与mp的数据结构相似,所以相当于镜像了mp的数据结构及内存数据到h中。
使用h.buckets获取hmap(图2中的001)下buckets(图2中的002)的内存地址,此h.buckets内存地址(相当于第一指针)对应一个散列数组(图2中的004),散列数组大小由hmap(图2中的001)下的扩容常量相关字段B(图2中的003,相当于第一字段)的大小决定,具体的,该h.buckets内存地址为散列数组的头/首地址。
遍历散列数组(图2中的004),通过h.buckets内存地址加上bmap结构体的内存占用大小乘以遍历的索引值(图2中的005指示的各值:0、1、2、3、4、5、6和7,此时hmap结构体下B的取值为3),得到该散列数组中存储的bmap地址(相当于第二指针)。代码如下:b:=*(*bmap)(add(h.buckets,uintptr(i)*uintptr(bucketSize))),i为索引值。
举例来说,对于基于索引值4找到的bmap结构体(图2中的006,相当于第三结构体),其topbits字段、keys字段和values字段(相当于第二字段)分别指向对应的一维数组(相当于第四结构体),且溢出指针指向空地址,则打印输出的结构体及结构体中的数据的部分示例可以如下所示:
buckets[0]:
|__topbits:[145 222 197 74 126 137 179 0]
|__key:[7 8 36 37 39 46 51 0]
|__values:[47 64 73 68 65 124 72 0]
|__overflow:0x0
buckets[1]:
|__topbits:[127 109 190 211 25 48 121 178]
|__key:[5 53 60 63 70 79 82 93]
|__values:[23 152 111 119 133 99 119 100]
|__overflow:0x0
其中,overflow:0x0表示溢出指针指向空地址,即当前bmap结构体不会与其他bmap结构体形成链表。
举例来说,对于基于索引值6找到的链表(由bmap结构体007和bmap结构体008组成,相当于第三结构体),二者的topbits字段、keys字段和values字段(相当于第二字段)分别指向对应的一维数组(相当于第四结构体),且bmap结构体007的溢出指针指向bmap结构体008的首地址,bmap008的溢出指针指向空地址,则循环遍历的这个链表,直到overflow为空nil(图一012)的时候,即到达链表尾部,结束循环遍历。遍历过程中打印输出的结构体一维数组009、一维数组010、一维数组011及其中的数据的部分示例可以如下所示:
buckets[2]:
|__topbits:[83 29 206 139 72 122 16 185]
|__key:[2 15 18 21 23 28 30 31]
|__values:[49 89 55 87 81 118 71 39]
|__overflow:0xc0000ba900
|__topbits:[53 12 0 0 0 0 0 0]
|__key:[40 96 0 0 0 0 0 0]
|__values:[53 148 0 0 0 0 0 0]
|__overflow:0x0
其中,overflow:0xc0000ba900表示溢出指针指向的地址不为空,即当前bmap结构体会与其他bmap结构体形成链表。
同时需要考虑到Golang Map类型的数据结构中的数据动态迁移问题,在特定情况下oldbuckets(图2中的013)可能不为空,oldbuckets指向存储的历史数据,同样需要执行上述调用相应功能找到对应的散列数组以及遍历散列数组找到各bmap结构体,进而进行打印输出的过程。如此,可以保证打印输出的数据是完整的,结构是正确的。
4:清空Map
具体的,在用户选择输入“4”时,可以调用清空数据功能,重新生成一个空的Golang Map类型的数据结构,以便于用户进行新的打印输出。
5:退出
具体的,在用户选择输入“5”时,退出该主程序。
综上可知,在本发明实施例的数据展示方案中,通过对散列数组、链表、内存拷贝、计算内存偏移量、数组、结构体、内存指针等技术和数据结构的使用、二次开发及组合,实现Linux终端动态的、可视化的、可交互的查看Golang语言中Map类型的数据结构的内部构成即其内存数据分布情况。具体的,可以在Linux终端进行交互式操作:包括(输入key和value、随机生成一个Map、打印Map、清空Map、退出),可以通过命令行交互方式动态的展示Golang Map类型数据结构的内部构成及其内存数据变化,以及在无需修改Golang语言的源代码文件的同时,支持Golang Map类型的数据结构支持的数据类型。
本发明实施例还提供一种数据展示装置,参见图3所示,该装置可具体包括:第一创建模块201、第二创建模块203、处理模块205和展示模块207。
其中,第一创建模块201用于创建第一数据结构,第一数据结构的类型为Go语言中的字典Map;
第二创建模块203用于创建第二数据结构,第二数据结构为对形成第一数据结构的各结构体的重组,第二数据结构中的结构体和内存数据分布情况可被展示;
处理模块205用于根据第二数据结构对第一数据结构进行处理以生成目标对象,目标对象包括指向第一数据结构中的内存地址的指针和第一数据结构中的内存数据;
展示模块207用于根据目标对象对基于第一数据结构存储的待展示数据进行数据展示。
可选的,在本发明实施例的数据展示装置中,上述第一数据结构和上述第二数据结构中的结构体的类型包括:hmap结构体、bmap结构体、散列数组、链表和一维数组中的至少一个。
可选的,在本发明实施例的数据展示装置中,上述处理模块205,具体可以用于:
获取第一数据结构中的内存地址;
将第一数据结构中的内存地址的类型对应转化为第二数据结构中的内存地址的类型,并生成与类型转化后的内存地址对应的指针;
将生成的指针和第一数据结构中存储的待展示数据关联赋值给预设变量后生成目标对象。
可选的,在本发明实施例的数据展示装置中,上述展示模块207,具体可以用于:
基于目标对象获取存储在第一结构体下的第一指针,第一指针指向第二结构体的首地址,其中,第一结构体的类型为hmap,第二结构体的类型散列数组;
基于第二结构体的首地址和第二结构体的大小遍历第二结构体,确定第二结构体中存储的至少一个第二指针,其中,第二结构体的大小与第一结构体下的第一字段的值有关,第二指针指向第三结构体的首地址,第三结构体的类型包括bmap和链表中的至少一个;
基于至少一个第三结构体对基于第一数据结构存储的待展示数据进行数据展示。
可选的,在本发明实施例的数据展示装置中,上述展示模块207,具体还可以用于:
对各第三结构体下的第二字段指向的第四结构体和第四结构体中存储的数据进行输出展示,其中,第二字段包括头字节topbits字段、键keys字段和值values字段,第四结构体的类型为一维数组。
可选的,在本发明实施例的数据展示装置中,在上述第一结构体下的旧桶oldbuckets字段对应的值为空时,第一指针为桶buckets字段对应的值;
在上述oldbuckets字段对应的值不为空时,第一指针包括oldbuckets字段对应的值和buckets字段对应的值。
可选的,本发明实施例的数据展示装置,还可以包括:
调度模块,用于在第一数据结构中存储的待展示数据发生变化的情况下,调度第二创建模块203创建新的第二数据结构,并调度处理模块205根据新的第二数据结构对新的第一数据结构进行处理以生成新的目标对象,以及调度展示模块207根据新的目标对象对基于新的第一数据结构存储的待展示数据进行数据展示。
能够理解,本发明实施例提供的数据展示装置,能够实现前述实施例中提供的数据展示方法,关于数据展示方法的相关阐释均适用于数据展示装置,此处不再赘述。
在本发明实施例中,为了实现对类型为Go语言中的字典Map的数据结构的内部结构体构成和内存数据分布情况的查看,对于需要进行数据展示的类型为Go语言中的Map的第一数据结构,需要构建一个与该第一数据结构的结构相类似的第二数据结构,即对形成第一数据结构的各结构体进行重组处理,使得该第二数据结构能够被展示内部的结构体构成和内存数据分布情况。在此基础上,则可以根据该第二数据结构对第一数据结构进行转换生成包括指向该第一数据结构中的内存地址的指针以及其中的内存数据的目标对象,以基于该目标对象对使用第一数据结构存储的待展示数据进行数据展示,即对构成第一数据结构的结构体及内存数据分布情况进行展示。如此,实现了对Go语言中的字典Map类型的数据结构的内部构成及其内存数据分布情况的展示,便于供用户进行查看。
图4是本发明的一个实施例电子设备的结构示意图。请参考图4,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图4中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成数据展示装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
创建第一数据结构,第一数据结构的类型为Go语言中的字典Map;
创建第二数据结构,第二数据结构为对形成第一数据结构的各结构体的重组,第二数据结构中的结构体和内存数据分布情况可被展示;
根据第二数据结构对第一数据结构进行处理以生成目标对象,目标对象包括指向第一数据结构中的内存地址的指针和第一数据结构中的内存数据;
根据目标对象对基于第一数据结构存储的待展示数据进行数据展示。
上述如本发明图1所示实施例揭示的数据展示装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
在本发明实施例中,为了实现对类型为Go语言中的字典Map的数据结构的内部结构体构成和内存数据分布情况的查看,对于需要进行数据展示的类型为Go语言中的Map的第一数据结构,需要构建一个与该第一数据结构的结构相类似的第二数据结构,即对形成第一数据结构的各结构体进行重组处理,使得该第二数据结构能够被展示内部的结构体构成和内存数据分布情况。在此基础上,则可以根据该第二数据结构对第一数据结构进行转换生成包括指向该第一数据结构中的内存地址的指针以及其中的内存数据的目标对象,以基于该目标对象对使用第一数据结构存储的待展示数据进行数据展示,即对构成第一数据结构的结构体及内存数据分布情况进行展示。如此,实现了对Go语言中的字典Map类型的数据结构的内部构成及其内存数据分布情况的展示,便于供用户进行查看。
该电子设备还可执行图1中数据展示装置执行的方法,并实现数据展示装置在图1所示实施例的功能,本发明实施例在此不再赘述。
本发明实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的电子设备执行时,能够使该电子设备执行图1所示实施例中数据展示装置执行的方法,并具体用于执行:
创建第一数据结构,第一数据结构的类型为Go语言中的字典Map;
创建第二数据结构,第二数据结构为对形成第一数据结构的各结构体的重组,第二数据结构中的结构体和内存数据分布情况可被展示;
根据第二数据结构对第一数据结构进行处理以生成目标对象,目标对象包括指向第一数据结构中的内存地址的指针和第一数据结构中的内存数据;
根据目标对象对基于第一数据结构存储的待展示数据进行数据展示。
在本发明实施例中,为了实现对类型为Go语言中的字典Map的数据结构的内部结构体构成和内存数据分布情况的查看,对于需要进行数据展示的类型为Go语言中的Map的第一数据结构,需要构建一个与该第一数据结构的结构相类似的第二数据结构,即对形成第一数据结构的各结构体进行重组处理,使得该第二数据结构能够被展示内部的结构体构成和内存数据分布情况。在此基础上,则可以根据该第二数据结构对第一数据结构进行转换生成包括指向该第一数据结构中的内存地址的指针以及其中的内存数据的目标对象,以基于该目标对象对使用第一数据结构存储的待展示数据进行数据展示,即对构成第一数据结构的结构体及内存数据分布情况进行展示。如此,实现了对Go语言中的字典Map类型的数据结构的内部构成及其内存数据分布情况的展示,便于供用户进行查看。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本发明的实施例可提供为方法、系统或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本发明的实施例而已,并不用于限制本发明。对于本领域技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明实施例的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本发明实施例的权利要求范围之内。

Claims (10)

1.一种数据展示方法,其特征在于,所述方法包括:
创建第一数据结构,所述第一数据结构的类型为Go语言中的字典Map;
创建第二数据结构,所述第二数据结构为对形成所述第一数据结构的各结构体的重组,所述第二数据结构中的结构体和内存数据分布情况可被展示;
根据所述第二数据结构对所述第一数据结构进行处理以生成目标对象,所述目标对象包括指向所述第一数据结构中的内存地址的指针和所述第一数据结构中的内存数据;
根据所述目标对象对基于所述第一数据结构存储的内存数据进行数据展示。
2.根据权利要求1所述的方法,其特征在于,所述第一数据结构和第二数据结构中的结构体的类型包括:hmap结构体、bmap结构体、散列数组、链表或一维数组。
3.根据权利要求2所述的方法,其特征在于,所述根据所述第二数据结构对所述第一数据结构进行处理以生成目标对象,包括:
获取所述第一数据结构中的内存地址;
将所述第一数据结构中的内存地址的类型对应转化为所述第二数据结构中的内存地址的类型,并生成与类型转化后的内存地址对应的指针;
将生成的指针和所述第一数据结构中存储的内存数据关联赋值给预设变量后生成所述目标对象。
4.根据权利要求3所述的方法,其特征在于,所述根据所述目标对象对基于所述第一数据结构存储的内存数据进行数据展示,包括:
基于所述目标对象获取存储在第一结构体下的第一指针,所述第一指针指向第二结构体的首地址,其中,所述第一结构体的类型为hmap,所述第二结构体的类型为散列数组;
基于所述第二结构体的首地址和所述第二结构体的大小遍历所述第二结构体,确定所述第二结构体中存储的至少一个第二指针,其中,所述第二结构体的大小与所述第一结构体下的第一字段的值有关,第二指针指向第三结构体的首地址,第三结构体的类型包括bmap和链表中的至少一个;
基于至少一个第三结构体对基于所述第一数据结构存储的内存数据进行数据展示,所述第一数据结构和第二数据结构中的结构体包括所述第一结构体、所述第二结构体和所述第三结构体。
5.根据权利要求4所述的方法,其特征在于,所述基基于至少一个第三结构体对基于所述第一数据结构存储的内存数据进行数据展示,包括:
对各第三结构体下的第二字段指向的第四结构体和第四结构体中存储的待展示数据进行输出展示,其中,所述第二字段包括头字节topbits字段、键keys字段和值values字段,所述第四结构体的类型为一维数组,所述第一数据结构和第二数据结构中的结构体还包括所述第四结构体。
6.根据权利要求4所述的方法,其特征在于,在所述第一结构体下的旧桶oldbuckets字段对应的值为空时,所述第一指针为桶buckets字段对应的值;
在所述oldbuckets字段对应的值不为空时,所述第一指针包括所述oldbuckets字段对应的值和所述buckets字段对应的值。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述第一数据结构中存储的内存数据发生变化的情况下,创建新的第二数据结构,并根据所述新的第二数据结构对新的第一数据结构进行处理以生成新的目标对象,以及根据所述新的目标对象对基于所述新的第一数据结构存储的内存数据进行数据展示。
8.一种数据展示装置,其特征在于,所述装置包括:
第一创建模块,用于创建第一数据结构,所述第一数据结构的类型为Go语言中的字典Map;
第二创建模块,用于创建第二数据结构,所述第二数据结构为对形成所述第一数据结构的各结构体的重组,所述第二数据结构中的结构体和内存数据分布情况可被展示;
处理模块,用于根据所述第二数据结构对所述第一数据结构进行处理以生成目标对象,所述目标对象包括指向所述第一数据结构中的内存地址的指针和所述第一数据结构中的内存数据;
展示模块,用于根据所述目标对象对基于所述第一数据结构存储的内存数据进行数据展示。
9.一种电子设备,包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
创建第一数据结构,所述第一数据结构的类型为Go语言中的字典Map;
创建第二数据结构,所述第二数据结构为对形成所述第一数据结构的各结构体的重组,所述第二数据结构中的结构体和内存数据分布情况可被展示;
根据所述第二数据结构对所述第一数据结构进行处理以生成目标对象,所述目标对象包括指向所述第一数据结构中的内存地址的指针和所述第一数据结构中的内存数据;
根据所述目标对象对基于所述第一数据结构存储的内存数据进行数据展示。
10.一种计算机可读存储介质,所述计算机可读存储介质存储一个或多个程序,所述一个或多个程序当被包括多个应用程序的电子设备执行时,使得所述电子设备执行以下操作:
创建第一数据结构,所述第一数据结构的类型为Go语言中的字典Map;
创建第二数据结构,所述第二数据结构为对形成所述第一数据结构的各结构体的重组,所述第二数据结构中的结构体和内存数据分布情况可被展示;
根据所述第二数据结构对所述第一数据结构进行处理以生成目标对象,所述目标对象包括指向所述第一数据结构中的内存地址的指针和所述第一数据结构中的内存数据;
根据所述目标对象对基于所述第一数据结构存储的内存数据进行数据展示。
CN201911403482.4A 2019-12-30 2019-12-30 数据展示方法及装置、电子设备和计算机可读存储介质 Active CN111159278B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911403482.4A CN111159278B (zh) 2019-12-30 2019-12-30 数据展示方法及装置、电子设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911403482.4A CN111159278B (zh) 2019-12-30 2019-12-30 数据展示方法及装置、电子设备和计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN111159278A CN111159278A (zh) 2020-05-15
CN111159278B true CN111159278B (zh) 2023-07-14

Family

ID=70559651

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911403482.4A Active CN111159278B (zh) 2019-12-30 2019-12-30 数据展示方法及装置、电子设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN111159278B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114020693B (zh) * 2021-10-19 2022-07-08 北京五八信息技术有限公司 一种头文件地址的获取方法、装置、电子设备及存储介质
CN115495059B (zh) * 2022-09-23 2023-10-31 北京曼恒数字技术有限公司 一种数据结构的创建方法
CN117648391B (zh) * 2023-11-28 2024-07-05 开普勒卫星科技(武汉)有限公司 一种gnss轨迹数据存储、查询方法及数据库系统

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103514291A (zh) * 2013-09-29 2014-01-15 西安交通大学 一种文本中树形结构数据的显示方法
CN107622080A (zh) * 2017-07-28 2018-01-23 阿里巴巴集团控股有限公司 一种数据处理方法及设备
CN108153877A (zh) * 2017-12-26 2018-06-12 平安科技(深圳)有限公司 数据字典展示方法、装置、终端设备及存储介质
CN108255897A (zh) * 2017-02-17 2018-07-06 平安科技(深圳)有限公司 可视化图表数据转换处理方法和装置
CN109656923A (zh) * 2018-12-19 2019-04-19 北京字节跳动网络技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN109657103A (zh) * 2018-12-19 2019-04-19 广州天鹏计算机科技有限公司 数据结构的转换方法、装置、计算机设备和存储介质
CN110309442A (zh) * 2019-06-27 2019-10-08 百度在线网络技术(北京)有限公司 展现端数据的映射方法、装置、设备及介质

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10318544B2 (en) * 2015-08-20 2019-06-11 International Business Machines Corporation Transforming and loading data from a source data system to a target data system

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103514291A (zh) * 2013-09-29 2014-01-15 西安交通大学 一种文本中树形结构数据的显示方法
CN108255897A (zh) * 2017-02-17 2018-07-06 平安科技(深圳)有限公司 可视化图表数据转换处理方法和装置
CN107622080A (zh) * 2017-07-28 2018-01-23 阿里巴巴集团控股有限公司 一种数据处理方法及设备
CN108153877A (zh) * 2017-12-26 2018-06-12 平安科技(深圳)有限公司 数据字典展示方法、装置、终端设备及存储介质
CN109656923A (zh) * 2018-12-19 2019-04-19 北京字节跳动网络技术有限公司 一种数据处理方法、装置、电子设备及存储介质
CN109657103A (zh) * 2018-12-19 2019-04-19 广州天鹏计算机科技有限公司 数据结构的转换方法、装置、计算机设备和存储介质
CN110309442A (zh) * 2019-06-27 2019-10-08 百度在线网络技术(北京)有限公司 展现端数据的映射方法、装置、设备及介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
张龙等.Linux内存管理图形化的研究与实现.《电子设计工程》.2014,第22卷(第13期),全文. *

Also Published As

Publication number Publication date
CN111159278A (zh) 2020-05-15

Similar Documents

Publication Publication Date Title
CN111159278B (zh) 数据展示方法及装置、电子设备和计算机可读存储介质
US11144286B2 (en) Generating synchronous digital circuits from source code constructs that map to circuit implementations
AU2019101559A4 (en) Method and apparatus for generating random character string
EP3912074B1 (en) Generating a synchronous digital circuit from a source code construct defining a function call
CN110941655B (zh) 一种数据格式转换方法及装置
CN113885935A (zh) 资源打包方法、装置、电子设备及计算机可读存储介质
CN104932986A (zh) 一种数据重分布方法及装置
CN113641592B (zh) 测试序列的生成方法及装置
CN114866229A (zh) 一种基于Kubernetes的数据加解密方法和装置
CN108664505B (zh) 一种数据库表结构的导出方法及装置
CN117473949A (zh) 表单动态布局方法及系统
CN111125216A (zh) 数据导入Phoenix的方法及装置
US8359456B2 (en) Generating random addresses for verification of distributed computerized devices
CN114490651A (zh) 数据存储方法及装置
CN115437756A (zh) 计算流图调度方案的生成方法、装置、电子设备及计算机可读存储介质
CN109213821B (zh) 数据处理方法及系统
US20080216099A1 (en) System for Generating Optimized Computer Data Field Conversion Routines
CN113641872A (zh) 一种散列方法、装置、设备及介质
CN112015702A (zh) 一种报文文件名处理方法、装置及设备
CN116414378A (zh) 基于WeexSDK框架的页面打包方法、页面加载方法及装置
CN112905181B (zh) 一种模型编译、运行方法及装置
CN117271456B (zh) 数据序列化方法、反序列化方法、电子设备及存储介质
CN107451201B (zh) 一种数据访问方法及设备
CN118445371A (zh) 一种地图编译方法、装置及计算机可读存储介质
CN118445370A (zh) 一种地图编译方法、装置及计算机可读存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right
TA01 Transfer of patent application right

Effective date of registration: 20230315

Address after: Room 501-502, 5/F, Sina Headquarters Scientific Research Building, Block N-1 and N-2, Zhongguancun Software Park, Dongbei Wangxi Road, Haidian District, Beijing, 100193

Applicant after: Sina Technology (China) Co.,Ltd.

Address before: 100193 7th floor, scientific research building, Sina headquarters, plot n-1, n-2, Zhongguancun Software Park, Dongbei Wangxi Road, Haidian District, Beijing, 100193

Applicant before: Sina.com Technology (China) Co.,Ltd.

GR01 Patent grant
GR01 Patent grant