CN116383449B - 基于链表的crud数据顺序的实现方法、系统及设备 - Google Patents
基于链表的crud数据顺序的实现方法、系统及设备 Download PDFInfo
- Publication number
- CN116383449B CN116383449B CN202310393646.XA CN202310393646A CN116383449B CN 116383449 B CN116383449 B CN 116383449B CN 202310393646 A CN202310393646 A CN 202310393646A CN 116383449 B CN116383449 B CN 116383449B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- entity
- modified
- result
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 27
- 238000012986 modification Methods 0.000 claims description 41
- 230000004048 modification Effects 0.000 claims description 41
- 238000012545 processing Methods 0.000 claims description 10
- 230000005540 biological transmission Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 11
- 230000001174 ascending effect Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及数据结构技术领域,尤其涉及基于链表的CRUD数据顺序的实现方法、系统及设备。包括:利用预先得到的第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果;利用所述第一存储数据及所述第一实体类数据,按照第一预设规则和第三预设规则分别进行数据的新增和修改操作,利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果。通过链表的形式对数据进行存储,在应用系统需要按顺序对某类数据进行CRDU操作时,有助于提升链表结构效率,帮助实现精准排序,提升性能。
Description
技术领域
本申请涉及数据结构技术领域,尤其涉及基于链表的CRUD数据顺序的实现方法、系统及设备。
背景技术
当应用系统需要按顺序(升序或降序)分页展示某类数据,且支持调整数据的顺序时,一般的做法,在数据表中定义字段“当前顺序”,如sequence,用于表征数据的当前顺序;调整数据的顺序,则修改sequence值;按顺序分页展示数据,则在查询数据时按sequence值升序(或降序)排列,再进行分页。若sequence值唯一,修改某条数据的sequence值的同时,需要修改排在该数据之后的所有数据的sequence值,当数据量较大时,会严重影响性能,例如,顺序编号为1~1000的数据,若将序号1000的数据移动至首位,除了修改该数据的顺序编号,还需要将原顺序编号为1~999的数据顺序均向后移动1位,即将顺序编号加1;若sequence值允许重复,则无法对多个相同sequence值的数据进行精准排序,例如,顺序编号同为3的数据有3条,无法对这3条数据进行精准排序。
另外,目前也有采用链表结构存储数据的做法,但按顺序分页查询时,时间复杂度为O(n2),性能较低;新增数据、修改数据顺序时,支持的传参方式单一,且调整链表结构效率较低。
即现有技术中,应用系统需要按顺序对某类数据进行CRDU操作时,调整链表结构效率较低,性能较低。
发明内容
为至少在一定程度上克服相关技术中应用系统需要按顺序对某类数据进行CRDU操作时,调整链表结构效率较低,性能较低的问题,本申请提供基于链表的CRUD数据顺序的实现方法、系统及设备。
本申请的方案如下:
第一方面,本申请提供基于链表的CRUD数据顺序的实现方法,所述方法包括:
获取待操作的数据集;
利用所述数据集,采用链表结构存储所述数据集间的顺序关系,得到第一存储数据;
利用所述数据集,创建所述数据集对应的实体类,得到第一实体类数据;
利用所述第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果;
利用所述第一存储数据及所述第一实体类数据,按照第一预设规则进行数据的新增操作,得到新增数据的操作结果;
利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果;
利用所述第一存储数据及所述第一实体类数据,按照第三预设规则进行数据的修改操作,得到修改数据的操作结果。
进一步地,所述分页信息,包括:
每页数据数量信息、页码信息和排序方向信息。
进一步地,所述利用所述第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果,包括:
利用所述第一存储数据及所述第一实体类数据,定义关系列表集合;
利用所述关系列表集合及所述预先得到的分页信息,遍历所述第一存储数据中,得到末位节点实体对象、第一散列表集合及第二散列表集合;
以所述末位节点实体对象的id为初始值,以第二散列表集合的尺寸次数作为循环遍历的次数,依次从第二散列表集合中根据下节点实体id获取当前节点实体id;
利用从所述第二散列表集合中根据下节点实体id获取当前节点实体id的结果及所述分页信息中的排序方向的排列要求,将当前节点实体id和下节点实体id按照顺序或逆序以英文逗号进行拼接,将所述当前节点实体id赋值给所述下节点实体id;
利用所述当前节点实体id赋值给所述下节点实体id的结果,得到按顺序排列的实体节点id数组;
利用所述预先得到的分页信息,按照第一捕获规则,获取所述实体节点id数组中待查询的按顺序分页查询的数据id数组及所述第一散列表集合,得到按顺序分页查询数据的结果;
其中,所述第一散列表集合,包括:所述第一存储数据中实体id和与所述实体id对应的实体对象以键值对的形式存储的合集;
所述第二散列表集合,包括:所述第一存储数据中下节点实体id和当前节点实体id以键值对的形式存储的合集。
进一步地,所述第一捕获规则,如下式所示:
PresentationData=[(pageNo-1)*pageSize,pageNo*pageSize-1]
其中,PresentationData表示待查询的按顺序分页查询的数据;
pageNo表示所述分页信息中的页码;
pageSize表示分页信息中的每页数据数量。
进一步地,所述利用所述第一存储数据及所述第一实体类数据,按照第一预设规则进行数据的新增操作,得到新增数据的操作结果,包括:
利用所述第一存储数据及所述第一实体类数据,判断预先得到的待新增的数据合集中在进行数据新增时是否需要传参;
若所述预先得到的待新增的数据合集中不需要传参,则遍历所述第一存储数据,得到所述末位节点实体对象;
将所述末位节点实体对象的下节点实体id修改为待新增数据的id,得到新增数据的操作结果;
若所述预先得到的待新增的数据合集中需要传参,则得到所述待新增的数据合集中的待新增数据的位置信息及指定新增数据;
利用所述指定新增数据,新增第一数据;
利用所述第一捕获规则及所述待新增数据的位置信息,获取基于指定所述待新增数据的位置的节点实体;
利用所述节点实体,将所述待新增数据的位置信息所存在节点设置为指定新增数据所存在节点的下节点;
利用所述节点实体,判断待新增数据的位置信息是否大于1,若是,将所述待新增数据的位置信息减1所存在的节点的下节点修改为指定新增数据所存在节点,得到新增数据的操作结果。
进一步地,所述利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果,包括:
利用预先得到的待删除数据,通过查询所述第一存储数据及所述第一实体类数据,得到所述待删除数据的上节点实体对象和所述待删除数据的下节点实体id;
判断所述上节点实体对象是否为空,若所述上节点实体对象不为空,则将上节点实体对象的下一节点id修改为待删除数据的下节点id,再执行删除操作;
否则,直接执行删除操作。
进一步地,所述利用所述第一存储数据及所述第一实体类数据,按照第三预设规则进行数据的修改操作,得到修改数据的操作结果,包括:
利用所述第一存储数据及所述第一实体类数据,判断预先获取的待修改数据集;
若所述待修改数据集合中包含待修改数据id及指定节点id,则查询所述第一存储数据,分别得到所述待修改数据的节点和所述指定节点;
将所述待修改数据的节点的下节点设置为所述待修改数据的节点的上节点的下节点,得到所述待修改数据的节点的上节点的修改结果;
利用待修改数据的节点的上节点的修改结果,将所述待修改数据的节点设置为所述指定节点的上节点的下节点,得到所述指定节点的上节点的修改结果;
利用所述指定节点的上节点的修改结果,将所述指定节点设置为所述待修改的数据的节点的下节点,得到修改数据的操作结果;
若所述待修改数据集合中包含待修改数据id及位置序号,则利用所述第一捕获规则及所述位置序号,获取按顺序排列的实体节点id数组;利用所述按顺序排列的实体节点id数组,搜索与所述位置序号所对应的指定节点id;
利用所述待修改数据id及指定节点id,查询所述第一存储数据,分别得到所述待修改数据的节点和所述指定节点;
将所述待修改数据的节点的下节点设置为所述待修改数据的节点的上节点的下节点,得到所述待修改数据的节点的上节点的修改结果;
利用待修改数据的节点的上节点的修改结果,将所述待修改数据的节点设置为所述指定节点的上节点的下节点,得到所述指定节点的上节点的修改结果;
利用所述指定节点的上节点的修改结果,将所述指定节点设置为所述待修改的数据的节点的下节点,得到修改数据的操作结果;
将所述待修改的数据调整至所述位置序号处,得到待修改的数据的节点的修改结果。
第二方面,本申请提供基于链表的CRUD数据顺序的实现系统,所述系统包括:
获取模块,用于获取待操作的数据集;
第一数据处理模块,用于利用所述数据集,采用链表结构存储所述数据集间的顺序关系,得到第一存储数据;
第二数据处理模块,用于利用所述数据集,创建所述数据集对应的实体类,得到第一实体类数据;
CRUD数据处理模块,用于利用所述第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果;
利用所述第一存储数据及所述第一实体类数据,按照第一预设规则进行数据的新增操作,得到新增数据的操作结果;
利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果;
利用所述第一存储数据及所述第一实体类数据,按照第三预设规则进行数据的修改操作,得到修改数据的操作结果。
第三方面,本申请提供基于链表的CRUD数据顺序的实现设备,所述设备包括:
存储器,其上存储有可执行程序;
处理器,用于执行所述存储器中的所述可执行程序,以实现上述中任一项所述方法的步骤。
本申请提供的技术方案可以包括以下有益效果:
本申请通过利用预先得到的第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果;利用所述第一存储数据及所述第一实体类数据,按照第一预设规则和第三预设规则分别进行数据的新增和修改操作,利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果。通过链表的形式对数据进行存储,在应用系统需要按顺序对某类数据进行CRDU操作时,有助于提升链表结构效率,帮助实现精准排序,提升性能。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是本申请一个实施例提供的一种基于链表的CRUD数据顺序的实现方法流程示意图;
图2是本申请另一个实施例提供的一种基于链表的证书表结构图;
图3是本申请又一个实施例提供的一种基于链表的数据查询算法流程示意图;
图4是本申请又一个实施例提供的一种基于链表的数据指定位置新增数据流程示意图;
图5是本申请又一个实施例提供的一种基于链表的数据指定节点修改数据流程示意图;
图6是本申请又一个实施例提供的一种基于链表的数据指定id删除数据流程示意图;
图7是本申请一个实施例提供的一种基于链表的CRUD数据顺序的实现系统组成示意图;
图8是本申请一个实施例提供的一种基于链表的CRUD数据顺序的实现设备组成示意图;
图9是本申请一个实施例提供的一种基于链表的CRUD数据顺序的首页荣誉墙展示示意图;
图10是本申请一个实施例提供的一种基于链表的CRUD数据顺序的荣誉墙切换示意图;
图11是本申请一个实施例提供的一种基于链表的CRUD数据顺序的荣誉详情示意图;
图12是本申请一个实施例提供的一种基于链表的CRUD数据顺序的更换荣誉证明摆放位置及内容展示示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
实施例一请参阅图1,图1是本申请一个实施例提供的一种基于链表的CRUD数据顺序的实现方法流程示意图,所述方法包括:
S1.获取待操作的数据集;
S2.利用所述数据集,采用链表结构存储所述数据集间的顺序关系,得到第一存储数据;
S3.利用所述数据集,创建所述数据集对应的实体类,得到第一实体类数据;
S4.利用所述第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果;
S5.利用所述第一存储数据及所述第一实体类数据,按照第一预设规则进行数据的新增操作,得到新增数据的操作结果;
S6.利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果;
S7.利用所述第一存储数据及所述第一实体类数据,按照第三预设规则进行数据的修改操作,得到修改数据的操作结果。
在一个实施例中,3D荣誉墙是一个展示个人或集体证书、奖杯、奖牌等(统称为荣誉证明)荣誉的可视化系统,具备自动或手动切换荣誉墙、单击展示荣誉详情、长按拖动荣誉证明更换摆放位置等功能。特别地,该系统支持频繁更换荣誉证明摆放位置,及将荣誉证明移动至任意位置,如下图9-12所示。
在一个实施例中,采用链表结构存储荣誉证明之间的顺序关系,为荣誉证明表增加“下节点id”字段next_id,指向下一个荣誉证明的主键id,下述后文详细的操作,包括:表结构定义、实体类定义、按顺序分页查询、新增数据、修改数据、删除数据等。
在一个实施例中,如步骤S1所述,所述获取待操作的数据集,包括:
数据表,即数据库中存储的各种数据表。
在一个实施例中,如步骤S2所述,所述利用所述数据集,采用链表结构存储所述数据集间的顺序关系,得到第一存储数据,包括:采用链表结构存储数据间的顺序关系,为数据表添加“下节点id”字段:next_id,指向下一个节点的主键id。
如获奖证书表(t_certificate):
CREATE TABLE`t_certificate`(
`id`bigint unsigned NOT NULL AUTO_INCREMENT COMMENT'主键id',
`name`varchar(32)NOT NULL COMMENT'证书名称',
`next_id`bigint unsigned DEFAULT NULL COMMENT'下节点id',
PRIMARY KEY(`id`));
如上述所述,创建获奖证书表t_certificate,主键id、证书名称、下节点id字段,设置id字段为自增长;采用链表结构存储数据间的顺序关系,为数据表添加“下节点id”字段:next_id,指向下一个节点的主键id,表结构如图2所示。
再具体实施时,链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的;简单来说,线性表的链式存储结构生成的表,称作“链表”。链表中每个数据元素都由两部分组成:1、本身的信息,称为“数据域”;2、指向直接后继的指针,称为“指针域”。这两部分信息组成数据元素的存储结构,称之为“节点”;n个结点通过指针域相互链接,组成一个链表。
在一个实施例中,如步骤S3所述,所述利用所述数据集,创建所述数据集对应的实体类,得到第一实体类数据,包括:
创建数据表对应的实体类,例如Certificate:
具体的创建获奖证书实体类Certificate,声明id、name、nextId变量,创建对应的set,get方法。
在一个实施例中,如步骤S4所述,所述利用所述第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果,包括:
利用所述第一存储数据及所述第一实体类数据,定义关系列表集合;
利用所述关系列表集合及所述预先得到的分页信息,遍历所述第一存储数据中,得到末位节点实体对象、第一散列表集合及第二散列表集合;
以所述末位节点实体对象的id为初始值,以第二散列表集合的尺寸次数作为循环遍历的次数,依次从第二散列表集合中根据下节点实体id获取当前节点实体id;
利用从所述第二散列表集合中根据下节点实体id获取当前节点实体id的结果及所述分页信息中的排序方向的排列要求,将当前节点实体id和下节点实体id按照顺序或逆序以英文逗号进行拼接,将所述当前节点实体id赋值给所述下节点实体id;
利用所述当前节点实体id赋值给所述下节点实体id的结果,得到按顺序排列的实体节点id数组;
利用所述预先得到的分页信息,按照第一捕获规则,获取所述实体节点id数组中待查询的按顺序分页查询的数据id数组及所述第一散列表集合,得到按顺序分页查询数据的结果;
其中,所述第一散列表集合,包括:所述第一存储数据中实体id和与所述实体id对应的实体对象以键值对的形式存储的合集;
所述第二散列表集合,包括:所述第一存储数据中下节点实体id和当前节点实体id以键值对的形式存储的合集。
进一步地,所述第一捕获规则,如下式所示:
PresentationData=[(pageNo-1)*pageSize,pageNo*pageSize-1]
其中,PresentationData表示待查询的按顺序分页查询的数据;
pageNo表示所述分页信息中的页码;
pageSize表示分页信息中的每页数据数量。
具体的,按顺序分页查询数据,时间复杂度为O(n),步骤如下:
1.传入分页信息:每页数据数量pageSize、页码pageNo(≥1)和排序方向order(升序asc和降序desc)。
2.定义实体id和实体对象的散列表idAndObjMap即第一散列表、下节点实体id和当前节点实体id的散列表nextIdAndCurIdMap即第二散列表、末位节点实体对象endNode、按顺序排列的节点实体id数组orderedIds,如下:
Map<Long,Certificate>idAndObjMap=new HashMap<>();
Map<Long,Long>nextIdAndCurIdMap=new HashMap<>();
Certificate endNode;
Long[]orderedIds;
3.查询数据表t_certificate中的所有数据,进行遍历:找到nextId为null的节点,即末位节点实体对象endNode;将各条数据按照实体id和实体对象的键值对,存储在散列表idAndObjMap中;将各条数据按照下节点实体id和当前节点实体id的键值对,存储在散列表nextIdAndCurIdMap中。
4.如图3所示,以末位节点实体对象endNode的id为初始值,循环nextIdAndCurIdMap.size()次数,依次从nextIdAndCurIdMap中,根据下节点实体id获取当前节点实体id,从后向前,再结合排序方向order(升序asc和降序desc),按照升序或降序,构造出按顺序排列的节点实体id字符串,id之间用英文逗号分隔,最后将节点实体id字符串转化为按顺序排列的节点实体id数组orderedIds;
5.根据每页数据数量pageSize和页码pageNo,按照如下算法:[(pageNo-1)*pageSize,pageNo*pageSize-1],获取目标展示数据的id数组,进而从散列表idAndObjMap中获取目标展示数据的实体列表。
在一个实施例中,如步骤S5所述,所述利用所述第一存储数据及所述第一实体类数据,按照第一预设规则进行数据的新增操作,得到新增数据的操作结果,包括:
利用所述第一存储数据及所述第一实体类数据,判断预先得到的待新增的数据合集中在进行数据新增时是否需要传参;
若所述预先得到的待新增的数据合集中不需要传参,则遍历所述第一存储数据,得到所述末位节点实体对象;
将所述末位节点实体对象的下节点实体id修改为待新增数据的id,得到新增数据的操作结果;
若所述预先得到的待新增的数据合集中需要传参,则得到所述待新增的数据合集中的待新增数据的位置信息及指定新增数据;
利用所述指定新增数据,新增第一数据;
利用所述第一捕获规则及所述待新增数据的位置信息,获取基于指定所述待新增数据的位置的节点实体;
利用所述节点实体,将所述待新增数据的位置信息所存在节点设置为指定新增数据所存在节点的下节点;
利用所述节点实体,判断待新增数据的位置信息是否大于1,若是,将所述待新增数据的位置信息减1所存在的节点的下节点修改为指定新增数据所存在节点,得到新增数据的操作结果。
再具体实施时,调整链表结构流程示意图如图4所示,新增数据,包括插入新纪录和调整链表结构两步。具体地,在数据表插入新记录,将该记录的next_id字段设为null,成功插入后,获取新增数据的id。调整链表结构,有两种情况:
具体的,无需传参,默认为在末尾新增。遍历数据表t_certificate,找到nextId为null的节点,即末位节点实体对象,将该节点的next_id字段修改为新增数据的id。
具体的,传入待插入数据的位置pos(≥1),在指定位置新增。详细步骤如下:
1.将pos对应位置的节点设置为新增节点的下节点。按顺序分页查询数据(上述步骤4),构造出按顺序排列的节点实体id数组orderedIds,获取orderedIds[pos-1]节点实体id,将新增记录的next_id字段修改为orderedIds[pos-1]节点实体id。
2.将pos-1对应位置的节点的下节点修改为新增节点。若位置pos>1,再获取orderedIds[pos-2]节点实体id,从散列表idAndObjMap中获取对应的实体对象,再将该实体对象的next_id修改为新增节点实体id。
在一个实施例中,如步骤S6所述,所述利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果,包括:
利用预先得到的待删除数据,通过查询所述第一存储数据及所述第一实体类数据,得到所述待删除数据的上节点实体对象和所述待删除数据的下节点实体id;
判断所述上节点实体对象是否为空,若所述上节点实体对象不为空,则将上节点实体对象的下一节点id修改为待删除数据的下节点id,再执行删除操作;
否则,直接执行删除操作。
再具体实施时,调整链表结构流程示意图如图6所示,删除数据时,需要先调整链表结构。传入待删除数据的id,从数据表t_certificate中分别查询出next_id等于待删除数据id的节点,即上节点实体对象,及待删除节点实体对象的nextId字段值,即待删除节点的下节点实体id。若上节点实体对象不为null,将上节点实体对象的next_id字段修改为待删除节点的下节点id,再执行删除操作;若上节点实体为null,直接执行删除操作。
在一个实施例中,如步骤S7所述,所述利用所述第一存储数据及所述第一实体类数据,按照第三预设规则进行数据的修改操作,得到修改数据的操作结果,包括:
利用所述第一存储数据及所述第一实体类数据,判断预先获取的待修改数据集;
若所述待修改数据集合中包含待修改数据id及指定节点id,则查询所述第一存储数据,分别得到所述待修改数据的节点和所述指定节点;
将所述待修改数据的节点的下节点设置为所述待修改数据的节点的上节点的下节点,得到所述待修改数据的节点的上节点的修改结果;
利用待修改数据的节点的上节点的修改结果,将所述待修改数据的节点设置为所述指定节点的上节点的下节点,得到所述指定节点的上节点的修改结果;
利用所述指定节点的上节点的修改结果,将所述指定节点设置为所述待修改的数据的节点的下节点,得到修改数据的操作结果;
若所述待修改数据集合中包含待修改数据id及位置序号,则利用所述第一捕获规则及所述位置序号,获取按顺序排列的实体节点id数组;利用所述按顺序排列的实体节点id数组,搜索与所述位置序号所对应的指定节点id;
利用所述待修改数据id及指定节点id,查询所述第一存储数据,分别得到所述待修改数据的节点和所述指定节点;
将所述待修改数据的节点的下节点设置为所述待修改数据的节点的上节点的下节点,得到所述待修改数据的节点的上节点的修改结果;
利用待修改数据的节点的上节点的修改结果,将所述待修改数据的节点设置为所述指定节点的上节点的下节点,得到所述指定节点的上节点的修改结果;
利用所述指定节点的上节点的修改结果,将所述指定节点设置为所述待修改的数据的节点的下节点,得到修改数据的操作结果;
将所述待修改的数据调整至所述位置序号处,得到待修改的数据的节点的修改结果。
在一个实施例中,修改数据顺序,需调整链表结构,时间复杂度为O(1),有两种情况:
传入待修改数据(定义为S)id和指定节点(定义为D)id,将数据S调整至指定节点D之前。先从数据表t_certificate中根据id分别查询出S节点和D节点,再调整链表结构,详细步骤如下:
1.将S节点的下节点设置为S节点的上节点的下节点。查询出next_id为S节点id的节点,若该节点不为null,将其next_id修改为S节点的next_id。
2.将S节点设置为D节点的上节点的下节点。查询出next_id为D节点id的节点,若该节点不为null,将其next_id修改为S节点的id。
3.将D节点设置为S节点的下节点。将S节点的next_id修改为D节点id。
修改数据顺序,调整链表结构流程示意图如图5所示:
具体的,传入待修改数据(定义为S)id和位置序号(定义为pos),将数据调整至指定位置。按顺序分页查询数据(上述步骤4),构造出按顺序排列的节点实体id数组orderedIds,获取orderedIds[pos-1]节点实体(定义为D)id,若此id等于S节点的id,则无需调整链表结构;否则,按照上述第一种情况,转化为传入待修改数据id和指定节点id,调整链表结构。
在一个实施例中,以链表结构存储数据间的先后顺序,无需在数据表中记录各条数据的当前顺序,仅需记录下节点实体id。以O(n)的时间复杂度即可实现按顺序(升序或降序)分页查询数据。以O(1)的时间复杂度即可实现调整数据顺序。无需修改排列在被调整数据之后的所有数据的当前顺序,仅需修改最多三条数据的链式结构(先后顺序关系),即可实现精准排序。
实施例二
如图7所示,图7是本申请一个实施例提供的一种基于链表的CRUD数据顺序的实现系统组成示意图,所述系统包括:
获取模块101,用于获取待操作的数据集;
第一数据处理模块102,用于利用所述数据集,采用链表结构存储所述数据集间的顺序关系,得到第一存储数据;
第二数据处理模块103,用于利用所述数据集,创建所述数据集对应的实体类,得到第一实体类数据;
CRUD数据处理模块104,用于利用所述第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果;
利用所述第一存储数据及所述第一实体类数据,按照第一预设规则进行数据的新增操作,得到新增数据的操作结果;
利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果;
利用所述第一存储数据及所述第一实体类数据,按照第三预设规则进行数据的修改操作,得到修改数据的操作结果。
如图8所示,图8是本申请一个实施例提供的一种基于链表的CRUD数据顺序的实现设备组成示意图,所述设备包括:
存储器31,其上存储有可执行程序;
处理器32,用于执行所述存储器31中的所述可执行程序,以实现上述中任一项所述方法的步骤。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (6)
1.基于链表的CRUD数据顺序的实现方法,其特征在于,所述方法包括:
获取待操作的数据集;
利用所述数据集,采用链表结构存储所述数据集间的顺序关系,得到第一存储数据;
利用所述数据集,创建所述数据集对应的实体类,得到第一实体类数据;
利用所述第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果;
利用所述第一存储数据及所述第一实体类数据,按照第一预设规则进行数据的新增操作,得到新增数据的操作结果;
利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果;
利用所述第一存储数据及所述第一实体类数据,按照第三预设规则进行数据的修改操作,得到修改数据的操作结果;
所述利用所述第一存储数据及所述第一实体类数据,按照第一预设规则进行数据的新增操作,得到新增数据的操作结果,包括:
利用所述第一存储数据及所述第一实体类数据,判断预先得到的待新增的数据合集中在进行数据新增时是否需要传参;
若所述预先得到的待新增的数据合集中不需要传参,则遍历所述第一存储数据,得到末位节点实体对象;
将末位节点实体对象的下节点实体id修改为待新增数据的id,得到新增数据的操作结果;
若所述预先得到的待新增的数据合集中需要传参,则得到所述待新增的数据合集中的待新增数据的位置信息及指定新增数据;
利用所述指定新增数据,新增第一数据;
利用所述第一捕获规则及所述待新增数据的位置信息,获取基于指定所述待新增数据的位置的节点实体;
利用所述节点实体,将所述待新增数据的位置信息所存在节点设置为指定新增数据所存在节点的下节点;
利用所述节点实体,判断待新增数据的位置信息是否大于1,若是,将所述待新增数据的位置信息减1所存在的节点的下节点修改为指定新增数据所存在节点,得到新增数据的操作结果;
所述利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果,包括:
利用预先得到的待删除数据,通过查询所述第一存储数据及所述第一实体类数据,得到所述待删除数据的上节点实体对象和所述待删除数据的下节点实体id;
判断所述上节点实体对象是否为空,若所述上节点实体对象不为空,则将上节点实体对象的下一节点id修改为待删除数据的下节点id,再执行删除操作;
否则,直接执行删除操作;
所述利用所述第一存储数据及所述第一实体类数据,按照第三预设规则进行数据的修改操作,得到修改数据的操作结果,包括:
利用所述第一存储数据及所述第一实体类数据,判断预先获取的待修改数据集;
若待修改数据集合中包含待修改数据id及指定节点id,则查询所述第一存储数据,分别得到所述待修改数据的节点和所述指定节点;
将所述待修改数据的节点的下节点设置为所述待修改数据的节点的上节点的下节点,得到所述待修改数据的节点的上节点的修改结果;
利用待修改数据的节点的上节点的修改结果,将所述待修改数据的节点设置为所述指定节点的上节点的下节点,得到所述指定节点的上节点的修改结果;
利用所述指定节点的上节点的修改结果,将所述指定节点设置为所述待修改的数据的节点的下节点,得到修改数据的操作结果;
若待修改数据集合中包含待修改数据id及位置序号,则利用所述第一捕获规则及所述位置序号,获取按顺序排列的实体节点id数组;利用所述按顺序排列的实体节点id数组,搜索与所述位置序号所对应的指定节点id;
利用所述待修改数据id及指定节点id,查询所述第一存储数据,分别得到所述待修改数据的节点和所述指定节点;
将所述待修改数据的节点的下节点设置为所述待修改数据的节点的上节点的下节点,得到所述待修改数据的节点的上节点的修改结果;
利用待修改数据的节点的上节点的修改结果,将所述待修改数据的节点设置为所述指定节点的上节点的下节点,得到所述指定节点的上节点的修改结果;
利用所述指定节点的上节点的修改结果,将所述指定节点设置为所述待修改的数据的节点的下节点,得到修改数据的操作结果;
将所述待修改的数据调整至所述位置序号处,得到待修改的数据的节点的修改结果。
2.根据权利要求1所述的方法,其特征在于,所述分页信息,包括:
每页数据数量信息、页码信息和排序方向信息。
3.根据权利要求1所述的方法,其特征在于,所述利用所述第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果,包括:
利用所述第一存储数据及所述第一实体类数据,定义关系列表集合;
利用所述关系列表集合及所述预先得到的分页信息,遍历所述第一存储数据中,得到末位节点实体对象、第一散列表集合及第二散列表集合;
以所述末位节点实体对象的id为初始值,以第二散列表集合的尺寸次数作为循环遍历的次数,依次从第二散列表集合中根据下节点实体id获取当前节点实体id;
利用从所述第二散列表集合中根据下节点实体id获取当前节点实体id的结果及所述分页信息中的排序方向的排列要求,将当前节点实体id和下节点实体id按照顺序或逆序以英文逗号进行拼接,将所述当前节点实体id赋值给所述下节点实体id;
利用所述当前节点实体id赋值给所述下节点实体id的结果,得到按顺序排列的实体节点id数组;
利用所述预先得到的分页信息,按照第一捕获规则,获取所述实体节点id数组中待查询的按顺序分页查询的数据id数组及所述第一散列表集合,得到按顺序分页查询数据的结果;
其中,所述第一散列表集合,包括:所述第一存储数据中实体id和与所述实体id对应的实体对象以键值对的形式存储的合集;
所述第二散列表集合,包括:所述第一存储数据中下节点实体id和当前节点实体id以键值对的形式存储的合集。
4.根据权利要求3所述的方法,其特征在于,所述第一捕获规则,如下式所示:
PresentationData=[(pageNo-1)*pageSize,pageNo*pageSize-1]
其中,PresentationData表示待查询的按顺序分页查询的数据;
pageNo表示所述分页信息中的页码;
pageSize表示分页信息中的每页数据数量。
5.基于链表的CRUD数据顺序的实现系统,其特征在于,应用于权利要求1-4任一所述的基于链表的CRUD数据顺序的实现方法,所述系统包括:
获取模块,用于获取待操作的数据集;
第一数据处理模块,用于利用所述数据集,采用链表结构存储所述数据集间的顺序关系,得到第一存储数据;
第二数据处理模块,用于利用所述数据集,创建所述数据集对应的实体类,得到第一实体类数据;
CRUD数据处理模块,用于利用所述第一存储数据、第一实体类数据及预先得到的分页信息,依据第一捕获规则,按照顺序进行分页查询,得到按顺序分页查询数据的结果;
利用所述第一存储数据及所述第一实体类数据,按照第一预设规则进行数据的新增操作,得到新增数据的操作结果;
利用所述第一存储数据及所述第一实体类数据,按照第二预设规则进行数据的删除操作,得到删除数据的操作结果;
利用所述第一存储数据及所述第一实体类数据,按照第三预设规则进行数据的修改操作,得到修改数据的操作结果。
6.基于链表的CRUD数据顺序的实现设备,其特征在于,所述设备包括:
存储器,其上存储有可执行程序;
处理器,用于执行所述存储器中的所述可执行程序,以实现权利要求1-4中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310393646.XA CN116383449B (zh) | 2023-04-13 | 2023-04-13 | 基于链表的crud数据顺序的实现方法、系统及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310393646.XA CN116383449B (zh) | 2023-04-13 | 2023-04-13 | 基于链表的crud数据顺序的实现方法、系统及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116383449A CN116383449A (zh) | 2023-07-04 |
CN116383449B true CN116383449B (zh) | 2024-05-24 |
Family
ID=86976677
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310393646.XA Active CN116383449B (zh) | 2023-04-13 | 2023-04-13 | 基于链表的crud数据顺序的实现方法、系统及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116383449B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653611A (zh) * | 2015-12-24 | 2016-06-08 | 深圳市汇朗科技有限公司 | 分表分页排序查询方法及装置 |
CN108062422A (zh) * | 2018-01-22 | 2018-05-22 | 中国平安人寿保险股份有限公司 | 一种分页查询的排序方法、智能终端、系统及存储介质 |
CN108848244A (zh) * | 2018-04-02 | 2018-11-20 | 阿里巴巴集团控股有限公司 | 一种分页显示的方法及装置 |
CN109891406A (zh) * | 2016-11-04 | 2019-06-14 | 微软技术许可有限责任公司 | 多级数据分页 |
CN110399389A (zh) * | 2019-06-17 | 2019-11-01 | 平安科技(深圳)有限公司 | 数据分页查询方法、装置、设备及存储介质 |
CN111090649A (zh) * | 2019-12-10 | 2020-05-01 | 深圳前海环融联易信息科技服务有限公司 | 数据信息分页查询方法、装置、计算机设备及存储介质 |
WO2021031687A1 (zh) * | 2019-08-16 | 2021-02-25 | 苏宁云计算有限公司 | 数据库分库分表的分页查询方法、装置和计算机设备 |
CN112558959A (zh) * | 2020-12-23 | 2021-03-26 | 绿瘦健康产业集团有限公司 | 一种可视化的配置表联动修改方法及系统 |
CN115480800A (zh) * | 2022-09-15 | 2022-12-16 | 中银金融科技有限公司 | 一种业务数据加工处理方法、电子设备和介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9495444B2 (en) * | 2014-02-07 | 2016-11-15 | Quixey, Inc. | Rules-based generation of search results |
US20170075904A1 (en) * | 2015-09-16 | 2017-03-16 | Edgetide Llc | System and method of extracting linked node graph data structures from unstructured content |
US11520611B2 (en) * | 2018-08-20 | 2022-12-06 | Intel Corporation | Secure public cloud using extended paging and memory integrity |
US11481441B2 (en) * | 2019-04-26 | 2022-10-25 | At&T Intellectual Property I, L.P. | Graph database query pagination |
GB202009263D0 (en) * | 2020-06-17 | 2020-07-29 | Neural Tech Limited | Data reduction in a tree data structure for a wireframe |
-
2023
- 2023-04-13 CN CN202310393646.XA patent/CN116383449B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105653611A (zh) * | 2015-12-24 | 2016-06-08 | 深圳市汇朗科技有限公司 | 分表分页排序查询方法及装置 |
CN109891406A (zh) * | 2016-11-04 | 2019-06-14 | 微软技术许可有限责任公司 | 多级数据分页 |
CN108062422A (zh) * | 2018-01-22 | 2018-05-22 | 中国平安人寿保险股份有限公司 | 一种分页查询的排序方法、智能终端、系统及存储介质 |
CN108848244A (zh) * | 2018-04-02 | 2018-11-20 | 阿里巴巴集团控股有限公司 | 一种分页显示的方法及装置 |
CN110399389A (zh) * | 2019-06-17 | 2019-11-01 | 平安科技(深圳)有限公司 | 数据分页查询方法、装置、设备及存储介质 |
WO2021031687A1 (zh) * | 2019-08-16 | 2021-02-25 | 苏宁云计算有限公司 | 数据库分库分表的分页查询方法、装置和计算机设备 |
CN111090649A (zh) * | 2019-12-10 | 2020-05-01 | 深圳前海环融联易信息科技服务有限公司 | 数据信息分页查询方法、装置、计算机设备及存储介质 |
CN112558959A (zh) * | 2020-12-23 | 2021-03-26 | 绿瘦健康产业集团有限公司 | 一种可视化的配置表联动修改方法及系统 |
CN115480800A (zh) * | 2022-09-15 | 2022-12-16 | 中银金融科技有限公司 | 一种业务数据加工处理方法、电子设备和介质 |
Non-Patent Citations (1)
Title |
---|
面向超大规模计算系统的监控、调度及网络优化实践;秦晓宁;王家尧;胡梦龙;苏勇;万伟;李斌;戴荣;王志鹏;吉青;;数据与计算发展前沿;20200215(第01期);59-73 * |
Also Published As
Publication number | Publication date |
---|---|
CN116383449A (zh) | 2023-07-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103902698B (zh) | 一种数据存储系统和存储方法 | |
CN111143368B (zh) | 一种关系型数据库数据对比方法及系统 | |
CN108255972A (zh) | 一种全文检索方法及系统 | |
CN109522271B (zh) | 一种b+树节点的批量插入和删除方法及装置 | |
CN110945559B (zh) | 用于时间事件数据序列的优化视觉概要的方法和系统 | |
CN106657170A (zh) | 一种数据同步方法及装置 | |
CN103984757B (zh) | 在搜索结果页上插入新闻信息条目的方法和系统 | |
CN105760380A (zh) | 数据库查询方法、装置及系统 | |
CN110245149A (zh) | 元数据的版本管理方法及装置 | |
JP3020849B2 (ja) | データ検索装置 | |
CN103064908A (zh) | 一种通过内存快速去重名单的方法 | |
CN110765552B (zh) | 三维地质模型的属性信息展示方法及装置 | |
EP3679479A1 (en) | System for detecting data relationships based on sample data | |
CN116383449B (zh) | 基于链表的crud数据顺序的实现方法、系统及设备 | |
CN105787379A (zh) | 信息管理方法和系统、及电子设备 | |
CN108694172B (zh) | 信息输出方法和装置 | |
KR20140012377A (ko) | 인덱스 파일 생성방법, 사전 인덱스 파일을 이용한 데이터 검색 방법 및 데이터 관리 시스템, 기록매체 | |
CN109756780B (zh) | 一种视频处理的方法及装置 | |
CN114510491B (zh) | 一种动态随访量表设计方法和系统 | |
CN105354235A (zh) | 一种搜索结果处理方法及装置 | |
CN116775585A (zh) | 可见性信息文件的生成方法、设备、存储介质及程序产品 | |
JP2010250569A (ja) | 画像検索装置 | |
JP2011238118A (ja) | ファイルリストを抽出してクライアントにて表示するファイルサーバ、クライアントにて表示する方法及びファイルサーバで実行することが可能なコンピュータプログラム | |
CN105426541B (zh) | 一种通用数据的存储方法和装置 | |
CN112989769A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |