Background
In the securities industry, market data are basic data of all data analysis systems, and the quotation information of each securities is changed and represented by market change data, and the data are used as references for investors in the investment process, so that the investment behaviors of the investors are directly influenced. In such a context, how to process the market data more efficiently becomes a major problem faced by those skilled in the art.
Because the market data is large in data quantity and quick to update, in the prior art, a linked list is often used for storing the market data.
However, this way of processing the market data requires frequent memory application and release, and each time a market data is searched or modified, the linked list needs to be traversed, so that the efficiency of operating the market data is low.
Content of the application
The embodiment of the application provides a data operation method and device, which can solve the problem of low operation efficiency of market data.
In a first aspect, an embodiment of the present application provides a data transmission method, where the method includes:
Receiving an operation instruction;
acquiring quotation data based on the operation instruction, wherein the quotation data comprises first time information and a first price corresponding to the first time information;
Converting the first time information into a first index corresponding to the first time information;
and executing target operation on the data in the position corresponding to the first index in the circular buffer area based on the first time information and the first index.
Optionally, in one embodiment, the operation instruction is a read operation instruction, and the performing a target operation on the data in the position corresponding to the first index in the circular buffer based on the first time information and the first index includes acquiring a target timestamp of the data in the position corresponding to the first index in the circular buffer based on the first index, determining whether the first time information matches the target timestamp, acquiring the data in the position corresponding to the first index in the circular buffer if the first time information matches the target timestamp, and outputting the acquired data.
Optionally, in one embodiment, the operation instruction is a write operation instruction, and performing, based on the first time information and the first index, a target operation on data in a position in a circular buffer corresponding to the first index includes:
Judging whether the first time information is larger than the last updating time or not and whether the last updating time is 0 or not;
And writing the first price into a position corresponding to the first index in the circular buffer under the condition that the first time information is larger than the last updating time and the last updating time is not 0, and writing the market data corresponding to the last updating into the blank part under the condition that the blank part exists between the first index and the target index corresponding to the last updating in the circular buffer.
Optionally, in one embodiment, the performing the target operation on the data in the position corresponding to the first index in the circular buffer based on the first time information and the first index further includes writing the first price in the position corresponding to the first index in the circular buffer if the first time information is less than or equal to a last update time and the last update time is not 0.
Optionally, in one embodiment, the converting the first time information into the first index corresponding to the first time information includes obtaining a first time stamp corresponding to the first time information, obtaining a difference value between the first time stamp and a preset reference time stamp, and obtaining the first index corresponding to the first time information based on the difference value and a price cache time granularity.
Optionally, in one embodiment, the data in the circular buffer is stored in the form of an array, elements in the array each having an index, and the data manipulation method further comprises initializing the elements in the array in the circular buffer to assign values to the elements in the array prior to receiving the manipulation instruction.
In a second aspect, an embodiment of the present application provides a data manipulation device, the device including:
The receiving module is used for receiving the operation instruction;
The acquisition module is used for acquiring quotation data based on the operation instruction, wherein the quotation data comprises first time information and a first price corresponding to the first time information;
The conversion module is used for converting the first time information into a first index corresponding to the first time information;
And the processing module is used for executing target operation on the data at the position corresponding to the first index in the circular buffer area based on the first time information and the first index.
In a third aspect, an embodiment of the present application provides an electronic device, including a processor, a memory, and a program or instruction stored on the memory and executable on the processor, the program or instruction implementing the steps of the method according to the first aspect when executed by the processor.
In a fourth aspect, embodiments of the present application provide a readable storage medium having stored thereon a program or instructions which when executed by a processor perform the steps of the method according to the first aspect.
In a fifth aspect, an embodiment of the present application provides a chip, where the chip includes a processor and a communication interface, where the communication interface is coupled to the processor, and where the processor is configured to execute a program or instructions to implement a method according to the first aspect.
In the embodiment of the application, an operation instruction is received, quotation data is acquired based on the operation instruction, the quotation data comprises first time information and first price corresponding to the first time information, the first time information is converted into a first index corresponding to the first time information, and target operation is executed on data in a position corresponding to the first index in a circulation buffer zone based on the first time information and the first index. Therefore, the circulation buffer area can be utilized to realize circulation writing of the market data, and meanwhile, the time information in the market data can be converted into the general index for the circulation buffer area, so that the market data at the corresponding position in the circulation buffer area can be accessed based on the time index, or the market data is written into the corresponding position in the circulation buffer area, and the operation efficiency of the market data is improved.
Detailed Description
The following description of the embodiments of the present application will be made clearly and fully with reference to the accompanying drawings, in which it is evident that the embodiments described are some, but not all embodiments of the application. All other embodiments, which can be made by those skilled in the art based on the embodiments of the application without making any inventive effort, are intended to be within the scope of the application.
The terms first, second and the like in the description and in the claims, are used for distinguishing between similar elements and not necessarily for describing a particular sequential or chronological order. It is to be understood that the data so used may be interchanged where appropriate such that embodiments of the application may be practiced otherwise than as specifically illustrated or described herein. Furthermore, in the description and claims, "and/or" means at least one of the connected objects, and the character "/", generally means that the associated object is an "or" relationship.
The data operation method and device provided by the embodiment of the application are described in detail through specific embodiments and application scenes thereof with reference to the accompanying drawings.
Fig. 1 is a flowchart of a data operation method according to an embodiment of the present application. As shown in fig. 1, an embodiment of the present application provides a data manipulation method, and an execution body of the method may be a terminal device. The terminal device may be a computer device, and the computer device may be a single server or a server group including a plurality of servers. The data operation method provided by the embodiment of the application specifically comprises the following steps:
step 110, receiving an operation instruction;
the operation instruction may be a read operation instruction or a write operation instruction.
The operational instructions may be received by the server in step 110 in a variety of ways. For example, the server responds to updated writes from the ticker source, or the server responds to data reads requested by the client. After receiving the operation instruction, the server continues to execute the subsequent steps.
Step 120, acquiring market data based on the operation instruction, wherein the market data comprises first time information and a first price corresponding to the first time information;
Alternatively, in an embodiment of the present application, in a case where the acquired operation instruction is a write operation instruction, the server may acquire market data, where the market data includes first time information and a first price corresponding to the first time information. The market data may reflect real-time trading prices for stocks, such as the 10-yuan price per stock of stock chinese peace at 10 months 8 days 10:00:00 2020. Similarly, in the case that the acquired operation instruction is the read operation instruction, the server may acquire the market data, where the market data includes first time information and a first price corresponding to the first time information, and the first price may be a no-value, that is, the previous data is read directly through the first time information.
In the embodiment of the present application, the first time information may be current time information or historical time information.
The first time information in the embodiments of the present application may have a plurality of different formats. The first time information may be in the form of a year, month, day, time, minute, second, or a time stamp. The time stamp refers to the number of seconds that the current time passes from 1 st 1970, and regardless of leap seconds, for example, the time stamp corresponding to 0 th 7 th 2020 may be 1593532800.
Optionally, in an embodiment of the present application, the market data may further include a data identifier of an object (for example, a stock), specifically, different data identifiers may be determined for different stocks, for example, a data identifier of a stock name of the meibang clothing is determined to be a, a data identifier of a stock name of the meibang clothing is determined to be B, and the data identifier may also directly use a stock code (for example, 600910), so that it is easy to process pertinently according to which stock the market data acquired at the data identifier determination part belongs to.
Step 130, converting the first time information into a first index corresponding to the first time information;
Optionally, in the embodiment of the present application, converting the first time information into the first index corresponding to the first time information may include obtaining a first time stamp corresponding to the first time information, obtaining a difference value between the first time stamp and a preset reference time stamp, and caching time granularity based on the difference value and the price, thereby obtaining the index corresponding to the first time information. The reference time may be used to reduce the index size, the price buffering time granularity may be a preset minimum update time interval, and the preset price buffering time granularity may take 3-10 seconds, for example, 3 seconds. Of course, the price cache time granularity can be set according to the needs of the user.
Taking market data as market data for stocks as an example, specifically, since the stock is always in trade after being opened, new market data will be available once in trade, and users often pay attention to the latest stock market data, the price cache time granularity can be preset, only market data after the preset update time interval is saved, and the following explanation is given by taking the price cache time granularity as an example. Since stock is running 9:30 on a work day, it may be determined that the reference timestamp is 1628127000 (e.g., corresponding to Beijing time: 2021 month 5 day 09:30:00), the server obtains three pieces of market data of stock A, 2021 month 5 day 09:30:01 each 10.2 yuan, 2021 month 5 day 09:30:02 each 10.5 yuan, 2021 month 5 day 09:30:03 each 10.4 yuan, at which time only the 10.4 yuan piece of market data of 2021 month 5 day 09:30:03 each needs to be written into the circular buffer according to the 3 second price buffer time granularity. Obtaining a timestamp 1628127003 corresponding to the time information 2021, 8, 5, 09:30:03, subtracting the reference timestamp to obtain a difference value 3, and obtaining an index value based on a remainder of dividing the difference value by the price buffering time granularity, for example, the difference value is 3, the price buffering time granularity is 3 seconds, the remainder is 1, and continuing to execute the subsequent steps by taking 1 as the index value.
And 140, executing a target operation on the data in the position corresponding to the first index in the circular buffer area based on the first time information and the first index.
Alternatively, in embodiments of the present application, the data in the circular buffer is stored in an array, and the array elements may be accessed by non-negative integers (e.g., integers of 0, 1, 2, 3, etc.). When initializing the array, all elements in the array are uniformly assigned. After the first index corresponding to the first time information is acquired, the array element can be accessed based on the first index, or the value of the array element can be modified. In the prior art, one data is required to be searched/modified in the linked list, only the linked list can be traversed, and the operation efficiency of the data is low. The random fast read-write is an important characteristic of the array, and the data in the circular buffer can be directly accessed/modified by using the array index without traversing, so that the operation efficiency of the data can be improved.
The data operation method provided by the embodiment of the application comprises the steps of receiving an operation instruction, acquiring market data based on the operation instruction, wherein the market data comprises first time information and a first price corresponding to the first time information, converting the first time information into a first index corresponding to the first time information, and executing target operation on data in a position corresponding to the first index in a circulation buffer zone based on the first time information and the first index. Therefore, the circulation buffer area can be utilized to realize circulation writing of the market data, and meanwhile, the time information corresponding to the market data can be converted into the general index of the circulation buffer area, so that the market data at the corresponding position in the circulation buffer area can be accessed based on the time index, or the market data is written into the corresponding position in the circulation buffer area, and the operation efficiency of the market data is improved.
FIG. 2 is a flow chart of another data manipulation method according to an embodiment of the present application. Referring to fig. 2, a data manipulation method provided by an embodiment of the present application may include:
step 210, receiving a read operation instruction;
step 220, based on the read operation instruction, acquiring first time information;
step 230, converting the first time information into an index corresponding to the first time information;
Step 240, based on the first index, obtaining a target timestamp of the data at a position corresponding to the first index in the circular buffer;
step 250, determining whether the first time information matches the target timestamp;
Optionally, in the embodiment of the present application, the matching of the first time information with the target timestamp may mean that a difference between the first time information and the target timestamp is not greater than a preset price cache time granularity, and the non-matching of the first time information with the target timestamp may mean that a difference between the first time information and the target timestamp is greater than the preset price cache time granularity. Specifically, for example, it may be determined that the reference timestamp is 1628127000 (Beijing time: 2021, 8 th month, 5 th day, 09:30:00), the price buffering time granularity is 3 seconds, the market data 2021, 8 th month, 5 th day, 09:30:03 (corresponding to timestamp 1628127003, corresponding to index 1) written in the circular buffer is 10.4 yuan per strand, the first time information is 2021, 8 th month, 5 th day, 09:30:04 (corresponding to timestamp 1628127004, corresponding to index 1), 1628127004-1628127003<3 (value of price buffering time granularity), and then the first time information matches the target timestamp.
Step 260, when the first time information matches the target timestamp, acquiring data at a position corresponding to the first index in the circular buffer;
optionally, in the embodiment of the present application, matching the first time information with the target timestamp indicates that the data at the position corresponding to the first index is valid data, and the corresponding data may be obtained. The fact that the first time information is not matched with the target time stamp indicates that the data at the position corresponding to the first index is invalid data can be achieved without obtaining corresponding data.
Step 270, outputting the acquired data.
Optionally, in the embodiment of the present application, in the case where the first time information matches the target timestamp, the valid data acquired through the first index is output, and in the case where the first time information does not match the target timestamp, no data may be output or the first time information may be prompted to not match the target timestamp.
According to the embodiment of the application, whether the first time information is matched with the target time stamp is determined, whether the data stored in the circulating buffer area is effective data is determined, and under the condition that the first time information is matched with the target time stamp, the effective data at the corresponding position of the circulating buffer area is obtained through the first index obtained through the conversion of the first time information, and under the condition that the first time information is not matched with the target time stamp, no data can be output or the condition that the first time information is not matched with the target time stamp is prompted. Therefore, effective data can be obtained through the time index quickly, invalid data is prevented from being obtained, the reading operation efficiency of the data is improved, and meanwhile, the accuracy of the data is ensured.
FIG. 3 is a flowchart of another data manipulation method according to an embodiment of the present application. Referring to fig. 3, a data manipulation method provided by an embodiment of the present application may include:
step 310, receiving a write operation instruction;
Step 320, based on the write operation instruction, obtaining market data, wherein the market data comprises first time information and a first price corresponding to the first time information;
Step 330, determining whether the first time information is greater than the last update time and whether the last update time is 0;
It will be appreciated that the last update time corresponds to the time information, e.g. a time stamp, of the latest market data written by the circular buffer. If the last update time is 0, which indicates that no market data is written after initializing the circular buffer, the circular buffer is in an initial state. If the last update time is not 0, the over-market data is written after initializing the circular buffer. If the first time information is larger than the last updating time, the fact that the market data is updated needs to be written into the circulating buffer area is indicated, and if the first time information is smaller than or equal to the last updating time, the fact that the market data at the moment is old data is indicated.
And step 340, writing the first price into the position corresponding to the first index in the circular buffer area when the first time information is greater than the last update time and the last update time is not 0, and writing the market data corresponding to the last update into the blank part when the blank part exists between the first index and the target index corresponding to the last update in the circular buffer area.
In an embodiment of the present application, the blank portion may indicate that a particular object (e.g., a particular stock) has no new price present for a certain period of time, and may be filled in order to ensure that the behavior data in the circular buffer is continuous in time. And in the case of a blank part, writing the market data corresponding to the last update into the blank part, specifically, writing the price corresponding to the last update into the positions corresponding to the indexes of the blank part, and simultaneously writing the time information corresponding to the indexes of the blank part into the positions corresponding to the indexes so as to ensure the time continuity. It is noted here that the time information corresponding to each index may be different. The difference value of the time information corresponding to the two adjacent indexes can be the price cache time granularity. Specifically, if the reference timestamp is 1628127000 (Beijing time: 2021, 8, 5, 09:30:00), the price cache time granularity is 3 seconds, and the last update market data is 2021, 8, 5, 09:30:03 (corresponding to timestamp 1628127003) each 10.4 yuan, the last update time is 1628127003, and the corresponding index value is 1. The first price corresponding to the first time information is 2021, 8, 5, 09:30:12 (corresponding to the time stamp is 1628127012), 11 yuan per strand, the index value corresponding to the first time information is 4, then the market data corresponding to the first time information is written in the position with the index value of 4 in the circulation buffer, meanwhile, the market data 2021, 8, 5, 09:30:06 (corresponding to the time stamp is 1628127006, the time index is 2), 10.4 yuan per strand is written in the position with the index value of 2 in the circulation buffer, and the market data 2021, 8, 5, 09:30:09 (corresponding to the time stamp is 1628127009, the time index is 3) is written in the position with the index value of 3 in the circulation buffer every 10.4 yuan. After the writing is completed, the last update time is modified to be the time information corresponding to the latest market data (the time stamp is 1628127012 in this example).
Optionally, in the embodiment of the present application, the first price is written in a position corresponding to the first index in the circular buffer when the first time information is less than or equal to a last update time and the last update time is not 0.
Optionally, in the embodiment of the present application, the first time information is less than or equal to the last update time, and the last update time is not 0, which indicates that the market data at this time is old data before the last update time, and only the market data needs to be written into a position corresponding to the first index obtained after the conversion of the first time information. Specifically, if the last update of the market data is 2021, 8, 5, and 09:30:12 (corresponding to a time stamp of 1628127012 and a time index of 4) is 11 yuan per strand, the last update time is 1628127012, the first price corresponding to 2021, 8, 5, and 09:30:09 (corresponding to a time stamp of 1628127009 and a time index of 3) is 10.4 yuan per strand, and the market data corresponding to the first time information is directly written in the position with an index value of 3 in the circular buffer.
Optionally, in the embodiment of the present application, the last update time is 0, which indicates that the market data is written to the circular buffer for the first time. The first index obtained after the conversion of the first time information in the market data can be directly based on the first index, the market data is written into the position pointed by the first index, and the update time is modified into the first time information (for example, in the form of a time stamp).
The embodiment of the application judges whether the first time information is larger than the last updating time and whether the last updating time is 0, writes the first price into a position corresponding to the first index in the circulation buffer zone when the first time information is larger than the last updating time and the last updating time is not 0, writes the market data corresponding to the last updating into the blank part when a blank part exists between the first index and a target index corresponding to the last updating in the circulation buffer zone, and writes the first price into the position corresponding to the first index in the circulation buffer zone when the first time information is smaller than or equal to the last updating time and the last updating time is not 0. Therefore, the market data can be written into the corresponding position in the circulating buffer area through the time index, and the writing efficiency of the market data is improved. After the market data is updated, under the condition that a blank part exists in the circulation buffer zone, the price corresponding to the last update is written into the position corresponding to each index of the blank part, and meanwhile, the time information corresponding to each index can be written into the position corresponding to each index of the blank part, so that the market data stored in the circulation buffer zone is ensured to be continuous in time.
Fig. 4 is a block diagram of a data operation device according to an embodiment of the present application. Referring to fig. 4, a data manipulation device 400 according to an embodiment of the present application may include a receiving module 410, an obtaining module 420, a converting module 430, and a processing module 440.
Wherein, the receiving module 410 is configured to receive an operation instruction;
The obtaining module 420 is configured to obtain, based on the operation instruction, market data, where the market data includes first time information and a first price corresponding to the first time information;
a conversion module 430, configured to convert the first time information into a first index corresponding to the first time information;
And a processing module 440, configured to perform a target operation on the data at a location in the circular buffer corresponding to the first index based on the first time information and the first index.
The data operation device provided by the embodiment of the application receives an operation instruction, acquires market data based on the operation instruction, wherein the market data comprises first time information and a first price corresponding to the first time information, converts the first time information into a first index corresponding to the first time information, and executes target operation on data in a position corresponding to the first index in a circulation buffer zone based on the first time information and the first index. Therefore, the circulation buffer area can be utilized to realize circulation writing of the market data, and meanwhile, the time information corresponding to the market data can be converted into the general index of the circulation buffer area, so that the market data at the corresponding position in the circulation buffer area can be accessed based on the time index, or the market data is written into the corresponding position in the circulation buffer area, and the operation efficiency of the market data is improved.
Optionally, in one embodiment, the operation instruction is a read operation instruction, and in a process of executing a target operation on data in a position corresponding to the first index in the circular buffer based on the first time information and the first index, the processing module 440 is specifically configured to obtain a target timestamp of the data in the position corresponding to the first index in the circular buffer based on the first index, determine whether the first time information matches the target timestamp, obtain the data in the position corresponding to the first index in the circular buffer if the first time information matches the target timestamp, and output the obtained data.
Optionally, in one embodiment, the operation instruction is a write operation instruction, in a process of executing a target operation on data at a position corresponding to the first index in a circular buffer based on the first time information and the first index, the processing module 440 is configured to determine whether the first time information is greater than a last update time and whether the last update time is 0, write the first price to a position corresponding to the first index in the circular buffer if the first time information is greater than the last update time and the last update time is not 0, and write market data corresponding to the last update to a blank portion between the first index and a target index corresponding to the last update in the circular buffer if the blank portion exists between the first index and the target index corresponding to the last update in the circular buffer.
Optionally, in one embodiment, in executing the target operation on the data in the position corresponding to the first index in the circular buffer based on the first time information and the first index, the processing module 440 is further configured to write the first price in the position corresponding to the first index in the circular buffer if the first time information is less than or equal to a last update time and the last update time is not 0.
Optionally, in an embodiment, in the process of converting the first time information into the first index corresponding to the first time information, the conversion module 430 is specifically configured to obtain a first timestamp corresponding to the first time information, obtain a difference value between the first timestamp and a preset reference timestamp, and obtain the first index corresponding to the first time information based on the difference value and a price buffering time granularity.
Optionally, in one embodiment, the data in the circular buffer is stored in the form of an array, and elements in the array each have an index, and the processing module 440 is further configured to initialize the elements in the array in the circular buffer to assign values to the elements in the array before receiving the operation instruction.
It should be noted that, the data operation device provided in the embodiment of the present application corresponds to the above-mentioned data operation method. The relevant content can refer to the description of the data operation method, and is not repeated herein.
The embodiment of the application also provides a terminal device, which comprises a memory and a processor, wherein the memory stores a program, and any one of the data operation methods provided by the embodiment of the application is realized when the program is executed by the processor.
The embodiment of the application also provides a storage medium, which comprises a memory and a processor, wherein the memory stores a program, and any one of the data operation methods provided by the embodiment of the application is realized when the program is executed by the processor.
It will be appreciated by those skilled in the art that embodiments of the present invention may be provided as a method, system, or computer program product. Accordingly, the present invention may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present invention may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and the like) having computer-usable program code embodied therein.
The present invention is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems) and computer program products according to embodiments of the invention. It will be understood that each flow and/or block of the flowchart illustrations and/or block diagrams, and combinations of flows and/or blocks in the flowchart illustrations and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
In one typical configuration, a computing device includes one or more processors (CPUs), input/output interfaces, network interfaces, and memory.
The memory may include volatile memory in a computer-readable medium, random Access Memory (RAM) and/or nonvolatile memory, such as Read Only Memory (ROM) or flash memory (flash RAM). Memory is an example of computer-readable media.
Computer readable media, including both non-transitory and non-transitory, removable and non-removable media, may implement information storage by any method or technology. The information may be computer readable instructions, data structures, modules of a program, or other data. Examples of storage media for a computer include, but are not limited to, phase change memory (PRAM), static Random Access Memory (SRAM), dynamic Random Access Memory (DRAM), other types of Random Access Memory (RAM), read Only Memory (ROM), electrically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technology, compact disc read only memory (CD-ROM), digital Versatile Discs (DVD) or other optical storage, magnetic cassettes, magnetic tape magnetic disk storage or other magnetic storage devices, or any other non-transmission medium, which can be used to store information that can be accessed by a computing device. Computer-readable media, as defined herein, does not include transitory computer-readable media (transmission media), such as modulated data signals and carrier waves.
It should also be noted that the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising one does not exclude the presence of other like elements in a process, method, article, or apparatus that comprises an element.
The foregoing is merely exemplary of the present application and is not intended to limit the present application. Various modifications and variations of the present application will be apparent to those skilled in the art. Any modification, equivalent replacement, improvement, etc. which come within the spirit and principles of the application are to be included in the scope of the claims of the present application.