CN116795782B - Method, device, equipment and readable storage medium for generating identification - Google Patents
Method, device, equipment and readable storage medium for generating identificationInfo
- Publication number
- CN116795782B CN116795782B CN202211001074.8A CN202211001074A CN116795782B CN 116795782 B CN116795782 B CN 116795782B CN 202211001074 A CN202211001074 A CN 202211001074A CN 116795782 B CN116795782 B CN 116795782B
- Authority
- CN
- China
- Prior art keywords
- sequence
- identification
- code
- parameter
- identifier
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/137—Hash-based
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
The embodiment of the application discloses a method, a device, equipment and a computer readable storage medium for generating an identifier, wherein the method comprises the steps of receiving an identifier sequence generation request, responding to the identifier sequence generation request, and acquiring a hash code and a first parameter; the method comprises the steps of determining a first identification sequence based on hash codes and first parameters, determining a target clock callback count value corresponding to an operating system, generating a second identification sequence based on the target callback count value, obtaining a third identification sequence, and generating a target identification based on the first identification sequence, the second identification sequence and the third identification sequence. Therefore, as the first parameter has randomness, the first identification sequence is determined based on the hash code and the first parameter, the second identification sequence is determined based on the target callback count value, and the third identification sequence is irregularly and incrementally changed, the generated target identification has global uniqueness, the increment of the service data cannot be determined from the generated target identification, and the safety of the service data is improved.
Description
Technical Field
The present application relates to the field of computer application technologies, and in particular, to a method, an apparatus, a device, and a computer readable storage medium for generating an identifier.
Background
In a distributed system, a globally unique identity (Identity document, ID) is usually required to be generated to uniquely identify data, messages and the like, wherein the globally unique ID is a distributed ID, and the distributed ID makes the data, the messages and the like in the distributed system different from each other so as to ensure that the distributed system normally provides services.
In the related art, a snowflake algorithm (snowflake) is generally used to generate a distributed ID, but this method generates a duplicate ID when a clock callback occurs or when a server restart occurs again when a clock callback occurs, so that the distributed system cannot provide normal service. In addition, the ID generated by the method can expose the service data increment of the distributed system, and the security is low.
Disclosure of Invention
In order to solve the technical problems, the embodiment of the application expects to provide an identifier generating method which can generate globally unique identifiers and can improve the security of service data.
The technical scheme of the application embodiment is realized as follows:
the embodiment of the application provides a method for generating a mark, which comprises the following steps:
receiving an identification sequence generation request, and responding to the identification sequence generation request to acquire a hash code and a first parameter, wherein the first parameter has randomness;
determining a first identification sequence based on the hash code and the first parameter;
determining a target clock callback count value corresponding to an operating system, and generating a second identification sequence based on the target callback count value;
Acquiring a third identification sequence, wherein the third identification sequence is irregularly and incrementally changed;
and generating a target identifier based on the first identifier sequence, the second identifier sequence and the third identifier sequence.
The embodiment of the application provides a device for generating an identifier, which comprises the following components:
the first acquisition module is used for receiving an identification sequence generation request, responding to the identification sequence generation request and acquiring a hash code and a first parameter, wherein the first parameter has randomness;
a first determining module configured to determine a first identification sequence based on the hash code and the first parameter;
the second determining module is used for determining a target clock callback count value corresponding to the operating system and generating a second identification sequence based on the target callback count value;
The second acquisition module is used for acquiring a third identification sequence which is irregular and changes in an increasing way;
and the generation module is used for generating a target identifier based on the first identifier sequence, the second identifier sequence and the third identifier sequence.
The embodiment of the application provides an identification generation device, which comprises:
a memory for storing executable identification generation instructions;
And the processor is used for realizing the identifier generation method provided by the embodiment of the application when executing the executable identifier generation instruction stored in the memory.
The embodiment of the application provides a computer-readable storage medium, wherein a computer-executable identification generation instruction is stored in the computer-readable storage medium, and the computer-executable identification generation instruction is configured to execute the identification generation method provided by the embodiment of the application.
The embodiment of the application provides a method, a device, equipment and a computer readable storage medium for generating an identifier, and by adopting the technical scheme, firstly, an identifier sequence generation request is received, and a hash code and a first parameter are acquired in response to the identifier sequence generation request; the method comprises the steps of determining a first identification sequence based on hash codes and first parameters, determining a target clock callback count value corresponding to an operating system, generating a second identification sequence based on the target callback count value, obtaining a third identification sequence, and finally generating a target identification based on the first identification sequence, the second identification sequence and the third identification sequence. In this way, since the first parameter has randomness, the first identification sequence is determined based on the hash code and the first parameter, and the second identification sequence is determined based on the target callback count value, even if clock callback occurs or when the clock callback occurs and the server is restarted, a non-repeated identification can be generated. Further, since the first identification sequence is irregular and changes incrementally, the target identification generated based on the first identification sequence, the second identification sequence and the third identification sequence has global uniqueness, and the increment of the service data cannot be determined from the generated target identification, so that the safety of the service data is improved.
Drawings
Fig. 1 is a schematic flow chart of a method for generating a label according to an embodiment of the present application;
FIG. 2 is a schematic flow chart of a method for generating a target identifier according to an embodiment of the present application;
Fig. 3 is a flow chart of a distributed ID generation method according to an embodiment of the present application;
Fig. 4 is a schematic diagram of a composition structure of a label generating device according to an embodiment of the present application;
Fig. 5 is a schematic diagram of a composition structure of a label generating device according to an embodiment of the present application.
Detailed Description
The technical solutions in the embodiments of the present application will be clearly and completely described below with reference to the accompanying drawings in the embodiments of the present application.
The present application will be further described in detail with reference to the accompanying drawings, for the purpose of making the objects, technical solutions and advantages of the present application more apparent, and the described embodiments should not be construed as limiting the present application, and all other embodiments obtained by those skilled in the art without making any inventive effort are within the scope of the present application.
In the following description, reference is made to "some embodiments\other embodiments" which describe a subset of all possible embodiments, but it is to be understood that "some embodiments\other embodiments" can be the same subset or different subsets of all possible embodiments and can be combined with each other without conflict.
In the following description, the terms "first\second\third\fourth" are merely used to distinguish similar objects and do not represent a particular ordering for the objects, it being understood that the "first\second\third\fourth" may be interchanged in a particular order or sequencing where permitted, so that embodiments of the application described herein may be practiced in other than those illustrated or described herein.
Unless defined otherwise, all technical and scientific terms used herein have the same meaning as commonly understood by one of ordinary skill in the art to which this application belongs. The terminology used herein is for the purpose of describing embodiments of the application only and is not intended to be limiting of the application.
With the popularization of micro-services, the rapid iterative development of a distributed application system is realized, the number of middleware is increased, the generation requirement on the ID is higher and higher, the distributed ID generally has the following requirements that the ID is globally unique and not repeated, the ID generally needs to be gradually increased in global trend, the ID is associated with time, the sorting is facilitated, and the increment of service data in the distributed system cannot be determined through the ID.
In the related art, a snowflake algorithm is generally adopted to generate a distributed ID, the ID generated by the snowflake algorithm is composed of three parts, and the ID generation steps of the method are as follows:
The method comprises the steps of firstly acquiring a current system time stamp to be accurate to millisecond, recording the current system time stamp, shifting left 22 bits through binary shift, reserving the 22 bits for machine IDs and subsequence parts of the following second step and third step, forming a first part of the ID, secondly acquiring the machine ID of a current server, wherein the ID can be a parameter designated or configured at the time of starting the server, or can be acquired through other middleware, such as Redis, a database and the like, shifting left 12 bits through shift operation, reserving the 12 bits for the subsequence part, reserving the current machine ID part for forming a second part of a snowflake algorithm ID, and thirdly, generating different IDs in the same millisecond by self-increasing the subsequence part according to the step size of 1 from 0, forming a third part of the snowflake algorithm ID, and combining the 3-part numbers generated in the three steps through binary OR operation, thus obtaining the complete distributed ID.
However, snowflake algorithms have the following problems:
Firstly, because the server hardware can lead to clock callback when the current timestamp of the system is obtained by utilizing a snowflake algorithm, the obtained timestamp is smaller than the timestamp recorded last time, in this case, if the timestamp is used for generating the ID continuously, repeated IDs can appear, because the timestamp is used before, the traditional snowflake algorithm can appear abnormal when processing clock callback and can not normally provide service, secondly, when the clock callback happens, the server is restarted, because the last timestamp recorded can be lost when the server is restarted, the snowflake algorithm service starts to generate the ID from the current timestamp after the restart, but the current timestamp is already dialed in the past, the ID generated at the moment is necessarily repeated when the service is already used before the restart, and thirdly, the snowflake algorithm can analyze the service data increment of the system by analyzing the subsequence, and the service data increment is easily determined according to the increment of 1, so that the safety is lower.
Based on the problems in the related art, the embodiment of the application provides a method for generating the identifier, which can generate a globally unique identifier and can improve the security of service data.
Next, a method for generating a label according to an embodiment of the present application will be described, as shown in fig. 1, which is a schematic flowchart of a method for generating a label according to an embodiment of the present application, where the method includes the following steps:
S101, receiving an identification sequence generation request, and responding to the identification sequence generation request to acquire a hash code and a first parameter.
In some embodiments, the identifier sequence generation request may be sent to a server that provides an ID generation service when the server that operates the distributed system allocates an ID to information such as data and information after generating the information such as data and information, and the server that provides the ID generation service responds to the identifier sequence generation request after receiving the identifier sequence generation request and acquires a hash code corresponding to the identifier sequence generation request event and a first parameter corresponding to the identifier sequence generation event request.
In some embodiments, the first parameter has randomness, the first parameter may be a random integer, and the first parameter may be a random integer automatically generated by the system upon receipt of the identification sequence generation request event. In some embodiments, for each received identification sequence generation request corresponding to information such as different data, messages, etc., the hash code and the first parameter corresponding to each identification sequence generation request are different.
S102, determining a first identification sequence based on the hash code and the first parameter.
In some embodiments, after the hash code and the first parameter are obtained, the hash code and the first parameter may be further performed to determine the first identification sequence. In some embodiments, the first identification sequence may be a binary sequence, the hash code may be represented by binary data, the first parameter may be decimal data, or may be binary data, and when the first parameter is decimal data, the decimal data corresponding to the first parameter is converted into binary data. When the method is implemented, the hash code and binary data corresponding to the first parameter can be exclusive-or, and the first identification sequence is obtained.
S103, determining a target clock callback count value corresponding to the operating system, and generating a second identification sequence based on the target callback count value.
It should be noted that the target clock callback count value may be a clock callback number corresponding to an operating system running on a server providing the ID generation service, that is, a total count value of executing clock callback. In some embodiments, clock callback is associated with network time protocol (Network Time Protocol, NTP) services, and the clock corresponding to the operating system may be inaccurate for various reasons (e.g., server failure), so that time calibration may be implemented by the NTP services, and clock jump or callback may occur during time calibration.
For example, if the clock time corresponding to the operating system is 12:30:22 on month 1 of 2020 and the standard time is 12:28:25 on month 1 of 2020, it is indicated that the clock time corresponding to the operating system lags behind the standard time, and the clock corresponding to the operating system can be calibrated through the NTP service, so that the clock time corresponding to the operating system is consistent with the standard time. In practice, comparing the recorded clock time corresponding to the previous operating system with the clock time corresponding to the current operating system, and if the clock time corresponding to the current time is earlier than the clock time corresponding to the previous time, determining that a clock callback occurs. In practice, the sum of the number of clock callback times before the current time may be determined as the target clock callback count value corresponding to the target operating system.
In some embodiments, after the target clock callback count value corresponding to the operating system is obtained, the second identification sequence may be generated according to the target callback count value. In some embodiments, the second identification sequence may be binary data, and when implemented, binary data corresponding to the target callback count value may be directly determined as the second identification sequence.
S104, acquiring a third identification sequence.
In some embodiments, the third identification sequence is irregularly and incrementally varying, the third identification sequence may be a binary sequence comprising 12 bits, the first two bits comprising a first portion of the third identification sequence and the last ten bits comprising a first portion of the third identification sequence, the first portion may be any one of binary data 00,01,10,11, and the second portion may begin anywhere from 0 to 1024, self-increasing in steps 1, 2, etc., such that the third identification sequence is irregularly and incrementally varying.
S105, generating a target identifier based on the first identifier sequence, the second identifier sequence and the third identifier sequence.
In some embodiments, after the first identification sequence, the second identification sequence, and the third identification sequence are obtained, a target identification sequence may be generated based on the first identification sequence, the second identification sequence, and the third exact sequence, and the target identification sequence may be an ID corresponding to a message, information, or the like. The first, second and third identification sequences may all be binary sequences, so that the target identification sequence consisting of the first, second and third identification sequences is also a binary sequence.
The identification generation method comprises the steps of firstly, receiving an identification sequence generation request, responding to the identification sequence generation request, obtaining a hash code and a first parameter, then determining the first identification sequence based on the hash code and the first parameter, then determining a target clock callback count value corresponding to an operating system, generating a second identification sequence based on the target callback count value, obtaining a third identification sequence, and finally generating a target identification based on the first identification sequence, the second identification sequence and the third identification sequence. In this way, since the first parameter has randomness, the first identification sequence is determined based on the hash code and the first parameter, and the second identification sequence is determined based on the target callback count value, even if clock callback occurs or when the clock callback occurs and the server is restarted, a non-repeated identification can be generated. Further, since the first identification sequence is irregular and changes incrementally, the target identification generated based on the first identification sequence, the second identification sequence and the third identification sequence has global uniqueness, and the increment of the service data cannot be determined from the generated target identification, so that the safety of the service data is improved.
In some embodiments of the present application, the determination of the first identification sequence based on the hash code and the first parameter, i.e. the above step S102 may also be implemented by the following steps S1021 to S1023, each of which is described below.
S1021, determining a binary sequence corresponding to the first parameter.
It should be noted that, the first parameter has randomness, may be any positive integer, for example, the first parameter may be 5,12,16, etc., and the first parameter is a decimal number, so after the first parameter is obtained, a binary number corresponding to the first parameter may be further determined, and the binary data is a binary sequence. In some embodiments, determining the binary sequence corresponding to the first parameter may be converting the decimal number corresponding to the first parameter into a binary number, for example, if the first parameter is 5, the binary number corresponding to the first parameter is 00000101, that is, the binary sequence corresponding to the first parameter is 00000101.
S1022, performing exclusive OR processing on the hash code and the binary sequence corresponding to the first parameter to obtain a candidate identification sequence.
In some embodiments, the hash code may be represented by a binary sequence, and thus, after the hash code and the binary sequence corresponding to the first parameter are obtained, the hash code and the binary sequence corresponding to the first parameter may be subjected to exclusive-or processing, and the structure obtained after the exclusive-or processing may be determined as the candidate identification sequence. For example, if the hash code is 00011011 and the binary sequence corresponding to the first parameter is 00000101, the result of the exclusive-or processing of the hash code and the binary sequence corresponding to the first parameter is 000110110, that is, 000110110 is the candidate identification sequence.
S1023, determining the candidate identification sequence as a first identification sequence.
In some embodiments, after the candidate identification sequence is obtained, the candidate identification sequence may be determined to be the first identification sequence. In some embodiments, the first identification sequence is 32 bits, that is, the first identification sequence occupies 4 binary numbers with 8 bits, in practice, if the candidate identification sequence is 8 bits, for example, the selected identification sequence is 000110110, the high order bits corresponding to the candidate identification sequence may be zero-padded to obtain 000000000000000000000000000110110, so as to obtain the first identification sequence with 32 bits.
It can be understood that in the embodiment of the application, since the hash code and the first parameter are associated with the identifier sequence generation request event, and the hash code changes every time the server restarts, the candidate identifier sequence obtained by performing exclusive-or processing on the hash code and the binary sequence corresponding to the first parameter, that is, the first identifier sequence, has more randomness, so that the situation that the target identifier sequence determined based on the first identifier sequence is repeated is avoided, and the uniqueness of the target identifier sequence is ensured.
In some embodiments of the present application, a target clock callback count value corresponding to the operating system is determined, and the second identification sequence is generated based on the target callback count value, that is, the step S103 may be further implemented by the following steps S1031 to S1033, and each step is described below.
S1031, obtaining a first callback count value corresponding to the current moment and obtaining a reference time stamp corresponding to the operating system at the previous moment.
In some embodiments, the first callback count value is the number of times the clock callback operation is performed before the current time, that is, the total number of times the clock callback operation is performed before the current time may be the number of times the clock callback operation is performed from the initial timestamp corresponding to the operating system to the current time. The reference time stamp corresponding to the operating system at the previous time is the time stamp corresponding to the operating system at the previous time of the current time.
In some embodiments, when the clock callback is executed once, the timestamp corresponding to the operating system when the clock callback is executed may be recorded, when judging whether the clock callback occurs, the current timestamp may be compared with the timestamp record corresponding to the last timestamp, and if the last timestamp of the record is later than the current timestamp, it is determined that the clock callback occurs once. When the first callback count value is determined, starting from an initial timestamp corresponding to the operating system, wherein the clock callback count value corresponding to the initial timestamp is 0, comparing adjacent timestamps in sequence, if the clock callback count value is determined to occur, increasing the callback count value by 1, and finally obtaining the total clock callback count value, namely the first callback count value.
S1032, obtaining the time stamp corresponding to the current time of the operating system, and if the time stamp corresponding to the current time of the operating system is earlier than the reference time stamp, adding 1 to the first callback count value to obtain the callback count value of the target clock.
In some embodiments, after the timestamp corresponding to the current time of the operating system is obtained and the reference timestamp corresponding to the last time, the size relationship between the timestamp corresponding to the current time of the operating system and the reference timestamp may be further determined, if the timestamp corresponding to the current time of the operating system is earlier than the reference timestamp, for example, the timestamp corresponding to the current time is 2021, 2, 13, 14, 35, 05 and the reference timestamp is 2021, 2, 13, 14, 36, 18, then it may be determined that a clock callback occurs between the current time and the previous time, at which time the first callback count value may be incremented by 1, and the target clock callback count value is obtained.
S1033, converting the target clock callback count value into a binary sequence, and determining the binary sequence as a second identification sequence.
It should be noted that, the clock callback count value is a non-negative integer, which corresponds to a decimal number, for example 0,5,8,12, so, in some embodiments, after the target clock callback count value is obtained, the target clock callback count value may be converted into a binary number, to obtain a binary sequence, and the binary sequence is used as the first identification sequence.
In some embodiments, the second identification sequence is a 4-bit binary sequence, that is, the binary range corresponding to the second identification sequence is 0000-1111, the decimal number corresponding to the second identification sequence is 0-16, that is, the value range corresponding to the callback count value of the target clock is any non-negative integer in [0,10 ].
It can be understood that in the embodiment of the application, the total clock callback count value (the target clock callback count value) corresponding to the current time and before the current time is converted into the binary sequence, and the binary sequence is used as the first identification sequence, so that the first identification sequence contains the clock callback times, the problem of generating repeated target identifications after clock callback occurs is avoided, and the global uniqueness of the target identifications is ensured.
In some embodiments of the present application, the step S104 may be further implemented by the following steps S1041 to S1043, where each step is described below.
S1041, acquiring a preset sequence code, and determining a first sequence code based on a preset self-increasing rule.
In some embodiments, the preset sequence code may be a binary sequence of 10 bits, may be a binary sequence corresponding to any non-negative integer of decimal numbers 0-1024, and may be 0000000000 (corresponding to decimal number 0), 0000000110 (corresponding to decimal number 6), 1000000000 (corresponding to decimal number 512), and so on.
In some embodiments, the preset self-increasing rule may be to make the preset sequence code self-increase by using a changing step length, where the changing step length may be any positive integer smaller than 1024, such as 1,2,3, and the preset self-increasing rule makes the first sequence code irregularly and incrementally change. For example, if the preset sequence code is 0000000001, the preset self-increasing rule makes the preset sequence code increment alternately according to the steps 1 and 2, the continuously obtained first sequence code may be 0000000010, 0000000011, 0000000100, etc.
S1042, obtaining a third parameter, determining a sequence code corresponding to the third parameter, and combining the sequence code corresponding to the third parameter with the first sequence code to obtain a second sequence code.
In some embodiments, the third parameter has randomness, and the third parameter may be any one of 0,1,2, 3. After the third parameter is obtained, a binary number corresponding to the third parameter may be determined, where the binary number is a sequence code corresponding to the third parameter. In some embodiments, the sequence code corresponding to the third parameter occupies 2 bits, and, for example, if the obtained third parameter is 2, the sequence code corresponding to the third parameter is 10, which is only an exemplary illustration, and the application is not limited thereto.
In some embodiments, after the first sequence code and the sequence code corresponding to the third parameter are obtained, the first sequence code and the sequence code corresponding to the third parameter may be combined, so as to obtain the second sequence code. In some embodiments, the combining the first sequence code and the sequence code corresponding to the third parameter may be to combine the first sequence code and the sequence code corresponding to the third parameter to obtain the second sequence code. The bit number corresponding to the second sequence code is the sum of the bit number occupied by the first sequence code and the bit number occupied by the sequence code corresponding to the third parameter, for example, when the bit number occupied by the first sequence code is 10 and the bit number occupied by the sequence code corresponding to the third parameter is 2, the bit number corresponding to the second sequence code is 12.
In some embodiments, when the sequence code corresponding to the third parameter and the first sequence code are combined, the sequence code corresponding to the third parameter may be determined as a high order sequence, and the first sequence code may be determined as a low order sequence. For example, if the sequence code corresponding to the third parameter is 00 and the first sequence code is 0000000010, the second sequence code obtained after the merging process is 000000000010.
S1043, determining the second sequence code as a third identification sequence.
In some embodiments, after the second sequence code is obtained, the second sequence code may be determined as the third identification sequence. In some embodiments, the third identification sequence is a 12 bit binary sequence, and when the second sequence code is a 12 bit binary sequence, the second sequence code may be directly determined as the third identification sequence.
It can be understood that in the embodiment of the present application, since the first sequence code is irregular and changes incrementally, and the third parameter has randomness, the second sequence code determined based on the sequence code corresponding to the first sequence and the third parameter, that is, the third identification sequence, also has randomness, and changes irregularly and incrementally, so that the increase amount of the service data cannot be determined from the target identification determined by the third identification sequence, and the security of the service data is ensured.
In some embodiments of the present application, the "combining the sequence code corresponding to the third parameter and the first sequence code in step S1042 to obtain the second sequence code" may also be implemented by the following steps S201 to S203, and each step is described below.
S201, the sequence code corresponding to the third parameter is shifted left by a first preset bit number to obtain a reference sequence code.
It should be noted that the first preset number of bits is the number of bits of the first sequence code, that is, the number of binary bits occupied by the first sequence code. In some embodiments, when the sequence code corresponding to the third parameter and the first sequence code are combined, the sequence code corresponding to the third parameter may be shifted to the left by the number of bits of the first sequence code to obtain the reference sequence code, so that the sequence code corresponding to the third parameter is used as the high order sequence, and the first sequence code is used as the low order sequence. For example, if the sequence code corresponding to the third parameter is 01 and the bit number corresponding to the first sequence code is 10, the reference sequence code obtained by shifting the sequence code corresponding to the third parameter left by the first preset bit number is 010000000000.
S202, performing OR operation on the reference sequence code and the first sequence code to obtain candidate sequence codes.
In some embodiments, after the reference sequence code and the first sequence code are obtained, the reference sequence code and the first sequence code may be ored, and the sequence code obtained after the ored operation may be determined as a candidate sequence code. For example, if the reference sequence code is 010000000000 and the first sequence code is 0000000010, the candidate sequence code obtained by performing an or operation on the first sequence code and the first reference sequence code is 010000000010.
S203, determining the candidate sequence code as a second sequence code.
In some embodiments, after the candidate sequence code is obtained, the candidate sequence code may be determined to be a second sequence code, which in some embodiments is a 12 bit binary sequence, and the second sequence code determined from the candidate sequence code is also 12 bits.
In some embodiments of the present application, as shown in fig. 2, a flowchart of a method for generating a target identifier according to an embodiment of the present application may further be executed after receiving an identifier sequence generation request and obtaining a hash code and a first parameter in response to the identifier sequence generation request, that is, step S101, after step S301 to step S304 shown in fig. 2, which are described below.
S301, acquiring an initial time stamp corresponding to the operating system and a time stamp corresponding to the current time.
It should be noted that, the initial timestamp corresponding to the operating system may be a timestamp corresponding to a server that provides the distributed ID generation service, and the initial timestamp may be a timestamp recorded when the server starts to work. In some embodiments, when the initial timestamp corresponding to the operating system is obtained, the timestamp corresponding to the current time may also be obtained at the same time. In some embodiments, the initial timestamp corresponding to the operating system and the timestamp corresponding to the current time may be obtained through an interface function provided by the server, and in other embodiments, the initial timestamp corresponding to the operating system may also be obtained from a preset storage area, where the initial timestamp corresponding to the operating system is stored in advance.
S302, determining a time difference value between the initial time stamp and the time stamp corresponding to the current time.
In some embodiments, after the initial timestamp and the timestamp corresponding to the current time are obtained, a time difference between the initial timestamp and the timestamp corresponding to the current time may be further determined, which may be in milliseconds. Illustratively, when the initial timestamp is 2021, 10 month, 1 day, 05:20:02 and the timestamp corresponding to the current time is 2021, 10 month, 5 day, 10:25:16, the time difference between the initial timestamp and the timestamp corresponding to the current time is 4 days, 5 hours, 5 minutes, 14 seconds, and the corresponding time difference is 363914000 milliseconds when converted into milliseconds.
S303, determining a fourth identification sequence based on the time difference value.
In some embodiments, the fourth identification sequence is a binary sequence, after the time difference is obtained, the decimal number corresponding to the time difference may be converted into a binary number, and then the binary number is determined as the first identification sequence, for example, if the time difference is 32769 ms, the time difference is converted into a binary number and then 1000000000000001. In some embodiments, the first identification sequence corresponds to 64 bits, i.e., there are a total of 2-64 time stamps, and the 2-64 time stamps may provide a plurality of different distributed IDs.
S304, generating a target identifier based on the first identifier sequence, the second identifier sequence, the third identifier sequence and the fourth identifier sequence.
In some embodiments, after the first, second, third, and fourth identification sequences are obtained, a target identification may be generated based on the first, second, third, and fourth identification sequences.
It can be appreciated that, because the fourth identification sequence is determined based on the time difference between the initial time stamp and the time stamp corresponding to the current time, the time increase can be embodied in the target identification generated based on the third identification sequence, and the incremental property of the target identification is ensured.
In some embodiments of the present application, the target identifier is generated based on the first identifier sequence, the second identifier sequence, the third identifier sequence, and the fourth identifier sequence, that is, the above step S304 may also be implemented by the following steps S3041 to S3045, and each step is described below.
S3041, shifting the fourth identification sequence left by a second preset number of bits to obtain a first reference identification sequence.
The second preset number of bits is the sum of the number of bits of the first identification sequence, the number of bits of the second identification sequence, and the number of bits of the third identification sequence. In some embodiments, the fourth identification sequence may be regarded as a high order sequence of the target identification sequence by shifting the third identification sequence left by a second preset number of bits, i.e. the fourth identification sequence is determined as the first part of the target identification. Illustratively, if the number of bits of the first identification sequence, the number of bits of the second identification sequence, and the number of bits of the third identification sequence are 32, 4, and 12, respectively, the fourth identification sequence may be shifted left by 48 bits to obtain the first reference identification sequence.
S3042, shifting the first identification sequence left by a third preset number of bits to obtain a second reference identification sequence.
In some embodiments, the third predetermined number of bits is a sum of the number of bits of the second identification sequence and the number of bits of the third identification sequence, and by shifting the first identification sequence left by the third predetermined number of bits, the first identification sequence may be determined as a bit portion of the target identification. For example, if the number of bits of the second identification sequence and the number of bits of the third identification sequence are 4 and 12, respectively, the third preset number of bits is 16, in practice, the first identification sequence may be shifted left by 16 bits to obtain the second reference identification sequence, for example, if the first identification sequence is a binary sequence of 12 bits: 000000000011, the second reference identification sequence obtained by shifting the first identification sequence left by the third preset number of bits is 0000000000110000000000000000.
S3043, shifting the second identification sequence left by a fourth preset number of bits to obtain a third reference identification sequence.
In some embodiments, the fourth preset number of bits is the number of bits of the third identification sequence, and the second identification sequence may be regarded as the third portion of the target identification by shifting the second identification sequence left by the fourth preset number of bits. For example, if the second identification sequence is a binary sequence of 4 bits, 0010, and the number of bits of the third identification sequence is 12 bits, that is, the fourth preset number of bits is 12, the third reference identification sequence obtained by shifting the second identification sequence by 12 bits to the left is 0010000000000000.
S3044, performing OR operation on the first reference identification sequence, the second reference identification sequence, the third reference identification sequence and the third identification sequence to obtain a target identification sequence.
In some embodiments, after the first, second, and third reference identification sequences are obtained, the first, second, third, and third reference identification sequences may be ored to obtain the target identification sequence. By performing or operation on the first reference identification sequence, the second reference identification sequence, the third reference identification sequence and the third identification sequence, the fourth identification sequence, the first identification sequence, the second identification sequence and the third identification sequence are respectively used as a first part, a second part, a third part and a fourth part of the target identification sequence, and the first part to the fourth part are correspondingly from the high position to the low position of the target identification sequence.
S3045, determining the target identification sequence as the target identification.
In some embodiments, after the target identifier sequence is obtained, the target identifier sequence may be determined as a target identifier, where the target identifier is an ID corresponding to information such as data, a message, and the like. Illustratively, if the bit numbers corresponding to the first, second, third and fourth identification sequences are 32, 4, 12 and 64, respectively, the total bit number corresponding to the first, second, third and fourth identification sequences is 112, the target identification sequence corresponds to 112 bits, and the target identification is a 112-bit binary identification sequence.
The identification generation method comprises the steps of firstly, receiving an identification sequence generation request, responding to the identification sequence generation request, obtaining a hash code and a first parameter, then determining the first identification sequence based on the hash code and the first parameter, then determining a target clock callback count value corresponding to an operating system, generating a second identification sequence based on the target callback count value, obtaining a third identification sequence, and finally generating a target identification based on the first identification sequence, the second identification sequence and the third identification sequence. In this way, since the first parameter has randomness, the first identification sequence is determined based on the hash code and the first parameter, and the second identification sequence is determined based on the target callback count value, even if clock callback occurs or when the clock callback occurs and the server is restarted, a non-repeated identification can be generated. Further, since the first identification sequence is irregular and changes incrementally, the target identification generated based on the first identification sequence, the second identification sequence and the third identification sequence has global uniqueness, and the increment of the service data cannot be determined from the generated target identification, so that the safety of the service data is improved.
The implementation process of the embodiment of the application in the actual application scene is described below.
In some embodiments, as shown in fig. 3, a flowchart of a method for generating a distributed ID according to an embodiment of the present application is shown. The distributed ID generation method provided by the embodiment of the present application may be implemented through the following steps S401 to S405, and each step is described below.
S401, determining that an ID generation request (identification sequence generation request) is received, and acquiring a hash code and a random integer (first parameter) corresponding to the current instance.
In some embodiments, the ID generation request may be an ID generation request sent by a system that provides a distributed ID generation service by the distributed system, for example, an ID generation request sent by a server that is operated by the distributed system to a server that provides the distributed ID generation service, for allocating an ID to data generated by the distributed system. In some embodiments, the current instance may be an ID generation request event, where each ID generation request event corresponds to a different hash code, and the random integer may be any non-negative integer, and when the ID generation request is received, the system generates a random integer.
S402, determining a first identification sequence code (first identification sequence) based on hash coding and random integer.
In some embodiments, after the hash code and the random integer are obtained, the first identification sequence code may be determined based on the hash code and the random integer (the first identification sequence is determined based on the hash code and the first parameter), and when implemented, the hash code and the random integer may be subjected to exclusive-or processing, the identification sequence obtained after the exclusive-or processing is determined as the first identification sequence code (the binary sequence corresponding to the hash code and the first parameter is subjected to exclusive-or processing to obtain the candidate identification sequence, and the candidate identification sequence is determined as the first identification sequence).
In some embodiments, the random integer may be converted into a binary sequence, then the hash code and the binary sequence are subjected to an exclusive-or process, so as to obtain an exclusive-or processed binary sequence, and the exclusive-or processed binary sequence is stored, where the exclusive-or processed binary sequence may be determined as the second portion corresponding to the target identifier.
S403, acquiring a time stamp corresponding to the current time of the service system (a time stamp corresponding to the current time of the operating system), and determining a second identification sequence code (a fourth identification sequence) based on the time stamp.
It should be noted that, the timestamp corresponding to the current time of the service system may be a timestamp of the server providing the ID generation service, after the timestamp corresponding to the current time of the service system is obtained, a time difference between the timestamp corresponding to the current time of the service system and an initial timestamp (an initial timestamp corresponding to the operating system) of the server providing the ID generation service may be determined (a time difference between the initial timestamp and the timestamp corresponding to the current time is determined), and a binary sequence corresponding to the time difference is determined as the second identification sequence (a fourth identification sequence is determined based on the time difference).
In some embodiments, for example, if the initial timestamp and the current timestamp corresponding to the current time of the service system are 2021, 12, 5, 12, 35, 05, and 2021, 12, 7, 16, 57, 08 respectively, then the time difference between the initial timestamp and the current timestamp is 2 days, 4 hours, 22 minutes, 3 seconds, and when the time difference is in milliseconds, it is 188523000 milliseconds, and then the time difference may be converted into a binary sequence, so as to obtain the second identification sequence code.
S404, acquiring a clock callback count number (target clock callback count value), and determining a third identification sequence code (second identification sequence) based on the clock callback count number.
In some embodiments, the number of clock callback flags may be a total count value before the timestamp corresponding to the current time, in which, in practice, the size between two adjacent timestamps may be determined from the initial timestamp, for example, if the timestamp corresponding to the i (i=0, 1..the., N is a positive integer) time is 2021, 12 month and 5 day 12:35:05, the timestamp corresponding to the i+1 time is 2021, 12 month and 5 day 12:30:56, and it is determined that the clock callback occurs once at the i+1 time, and after traversing the timestamp corresponding to the N times, the total number of clock callback flags may be obtained. After the clock callback count number is obtained, the binary sequence corresponding to the clock callback count number may be determined as the third identification sequence code (the target clock callback count value is converted into the binary sequence, and the binary sequence is determined as the second identification sequence).
In some embodiments, the callback count bit may be set to 0000 at the beginning, corresponding to a binary number of 4 bits, and if the timestamp acquired at the current time is smaller than the timestamp corresponding to the previous time, it indicates that clock callback occurs, and the callback count bit may be +1. In practice, 16 clock callback times in a short time can be supported by the binary number of 4 bits, and in practice, if the number of clock callback times occurring in a short time exceeds 16, the clock synchronization is abnormal, and at this time, it can be determined that the hardware of the server system providing the ID generation service has failed, and manual intervention is required.
S405, a fourth identification sequence code (third identification sequence) is acquired, and a target ID (target identification) is generated based on the first identification sequence code, the second identification sequence code, the third identification sequence code, and the fourth identification sequence code.
In some embodiments, the fourth identification sequence may be a sub-sequence, which may be 12 bits, and may include two parts, and the first part may be a binary sequence of 2 bits (a sequence code corresponding to the third parameter), for example, may be any one of 00, 01, 10, and 11. In practice, the 2 bits can be started from 00, or 01, or 10, or 11 by the random number of the system every unit millisecond. The second part may be a binary sequence of 10 bits, the value of 10 bits may be set to start from any position of 0-1024 each time, then the step size of the increment is not fixed (the first sequence code is determined based on a preset self-increment rule), for example, 1,2 or other positive integer values each time, then the first part is determined to be the high order of the fourth identification sequence, the second part is determined to be the low order of the fourth identification sequence, and the fourth identification sequence is generated, so that the generated fourth identification sequence presents an increasing trend and changes irregularly.
In some embodiments, after the first identification sequence code, the second identification sequence code, the third identification sequence code, and the fourth identification sequence code are obtained, the second identification sequence code, the first identification sequence code, the third identification sequence code, and the fourth identification sequence code may be shifted left, respectively, and binary or operation may be performed to obtain a final target identification (a target identification is generated based on the first identification sequence, the second identification sequence, the third identification sequence, and the fourth identification sequence). Illustratively, if the first identification sequence code, the second identification sequence code, the third identification sequence code, and the fourth identification sequence code are represented by P1, P2, P3, and P4, respectively, and the bit numbers corresponding to P1, P2, P3, and P4 are 32, 64, 4, and 12, respectively, the target identification I determined based on P1, P2, P3, and P4 can be represented by the following formula (1):
I=(P2<<48)|(P1<<16)|(P3<<12)|P4 (1);
where < represents a left shift operator, e.g., P1< <16 represents shifting P1 left 16 bits, | represents or an operator.
It can be understood that, in the embodiment of the present application, by adding the clock callback count bit to the target identification sequence, even if clock callback occurs, an ID with a trend of increasing non-repetition can be provided, and in the case that the clock callback service is restarted, a non-repetition ID can still be provided by adding the first identification sequence corresponding to the hash code. In addition, the fourth identification sequence adopts a scheme of a random initial value in each millisecond, so that the exposure of the service data increment can be avoided, and the security of the service data is improved.
In some embodiments, the ID generation method provided by the embodiments of the present application does not need to introduce any additional component, even does not need to provide a separate distributed service, and can be integrated as a software development kit (Software Development Kit, SDK) into each distributed system to be used independently, where, of course, the solution is better in the time stamp acquisition than the trend of providing a separate service. In actual use, the SDK corresponding to the ID generation method provided by the application can be integrated into each distributed system, and meanwhile, a single service can be deployed for each distributed system to call and generate the ID, when the service has a problem, the service can be fused, each distributed system can be degenerated into the ID generated by the SDK, and the trend increment and the uniqueness can be ensured.
The present application further provides a device for generating a label, fig. 4 is a schematic diagram of a composition structure of a device for generating a label provided in an embodiment of the present application, as shown in fig. 4, where the device 500 for generating a label includes:
A first obtaining module 501, configured to receive an identifier sequence generation request, and obtain a hash code and a first parameter in response to the identifier sequence generation request, where the first parameter has randomness;
a first determining module 502, configured to determine a first identification sequence based on the hash code and the first parameter;
A second determining module 503, configured to determine a target clock callback count value corresponding to an operating system, and generate a second identification sequence based on the target callback count value;
a second obtaining module 504, configured to obtain a third identification sequence, where the third identification sequence is irregular and changes incrementally;
A generating module 505, configured to generate a target identifier based on the first identifier sequence, the second identifier sequence, and the third identifier sequence.
It should be noted that, the description of the identifier generating device in the embodiment of the present application is similar to the description of the embodiment of the method described above, and has similar beneficial effects as the embodiment of the method, so that a detailed description is omitted. For technical details not disclosed in the present apparatus embodiment, please refer to the description of the method embodiment of the present application for understanding.
It should be noted that, in the embodiment of the present application, if the control method is implemented in the form of a software functional module, and sold or used as a separate product, the control method may also be stored in a computer readable storage medium. Based on such understanding, the technical solution of the embodiments of the present application may be embodied essentially or in a part contributing to the related art in the form of a software product stored in a storage medium, including several instructions for causing a computer device (which may be a personal computer, a server, or a network device, etc.) to perform all or part of the methods described in the embodiments of the present application. The storage medium includes various media capable of storing program codes, such as a usb disk, a removable hard disk, a Read Only Memory (ROM), a magnetic disk, or an optical disk. Thus, embodiments of the application are not limited to any specific combination of hardware and software.
Accordingly, an embodiment of the present application provides a computer-readable storage medium having stored thereon a computer program which, when executed by a processor, implements the identification generation method provided in the above embodiment.
The embodiment of the application also provides an identifier generating device, and fig. 5 is a schematic diagram of the composition structure of the identifier generating device provided by the embodiment of the application, as shown in fig. 5, the identifier generating device 600 includes a memory 601, a processor 602, a communication interface 603 and a communication bus 604. The processor 602 is configured to implement the identifier generating method provided in the above embodiment when executing the executable identifier generating instruction stored in the memory.
The description of the identifier generating device and the storage medium embodiments above is similar to the description of the method embodiments above, with similar advantageous effects as the method embodiments. For technical details not disclosed in the embodiments of the identification generating device and the storage medium of the present application, please refer to the description of the method embodiments of the present application for understanding.
It should be appreciated that reference throughout this specification to "some embodiments" or "an embodiment" means that a particular feature, structure or characteristic described in connection with the embodiment is included in at least one embodiment of the present application. Thus, the appearances of the phrases "in some embodiments" or "in an embodiment" in various places throughout this specification are not necessarily all referring to the same embodiment. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments. It should be understood that, in various embodiments of the present application, the sequence numbers of the foregoing processes do not mean the order of execution, and the order of execution of the processes should be determined by the functions and internal logic thereof, and should not constitute any limitation on the implementation process of the embodiments of the present application. The foregoing embodiment numbers of the present application are merely for the purpose of description, and do not represent the advantages or disadvantages of the embodiments.
It should be noted that, in this document, 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 the element.
In the several embodiments provided by the present application, it should be understood that the disclosed apparatus and method may be implemented in other ways. The above-described embodiments of the apparatus are merely illustrative, and for example, the division of the units is merely a logical function division, and there may be additional divisions of actual implementation, such as multiple units or components may be combined or integrated into another system, or some features may be omitted or not performed. In addition, the various components shown or discussed may be coupled or directly coupled or communicatively coupled to each other via some interface, whether indirectly coupled or communicatively coupled to devices or units, whether electrically, mechanically, or otherwise.
The units described as separate components may or may not be physically separate, and components displayed as units may or may not be physical units, may be located in one place or distributed on a plurality of network units, and may select some or all of the units according to actual needs to achieve the purpose of the embodiment.
In addition, each functional unit in each embodiment of the present application may be integrated in one processing unit, or each unit may be separately used as a unit, or two or more units may be integrated in one unit, where the integrated units may be implemented in a form of hardware or a form of hardware plus a form of software functional unit.
It will be appreciated by those of ordinary skill in the art that implementing all or part of the steps of the above method embodiments may be accomplished by hardware associated with program instructions, and that the above program may be stored on a computer readable storage medium which, when executed, performs the steps comprising the above method embodiments, where the above storage medium includes various media that can store program code, such as removable storage devices, ROM, magnetic or optical disks.
Or the above-described integrated units of the application may be stored in a computer-readable storage medium if implemented in the form of software functional modules and sold or used as separate products. Based on such understanding, the technical solutions of the embodiments of the present application may be embodied essentially or in part in the form of a software product stored in a storage medium, including instructions for causing a product to perform all or part of the methods described in the various embodiments of the present application. The storage medium includes various media capable of storing program codes such as a removable storage device, a ROM, a magnetic disk, or an optical disk.
The foregoing is merely an embodiment of the present application, but the scope of the present application is not limited thereto, and any person skilled in the art can easily think about changes or substitutions within the technical scope of the present application, and the changes and substitutions are intended to be covered by the scope of the present application. Therefore, the protection scope of the present application shall be subject to the protection scope of the claims.
Claims (7)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211001074.8A CN116795782B (en) | 2022-08-19 | 2022-08-19 | Method, device, equipment and readable storage medium for generating identification |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211001074.8A CN116795782B (en) | 2022-08-19 | 2022-08-19 | Method, device, equipment and readable storage medium for generating identification |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116795782A CN116795782A (en) | 2023-09-22 |
CN116795782B true CN116795782B (en) | 2025-08-26 |
Family
ID=88033434
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211001074.8A Active CN116795782B (en) | 2022-08-19 | 2022-08-19 | Method, device, equipment and readable storage medium for generating identification |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116795782B (en) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104520440A (en) * | 2012-05-08 | 2015-04-15 | 适应生物技术公司 | Compositions and methods for measuring and calibrating amplification bias in multiplex PCR reactions |
CN111831639A (en) * | 2019-04-19 | 2020-10-27 | 北京车和家信息技术有限公司 | Global unique ID generation method and device and vehicle management system |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
AU2005307724A1 (en) * | 2004-11-19 | 2006-05-26 | Triad Biometrics, Llc | Methods and systems for use in biomeiric authentication and/or identification |
CN112423149B (en) * | 2020-11-19 | 2022-11-15 | 百果园技术(新加坡)有限公司 | Content identification generation method, device, equipment and storage medium |
-
2022
- 2022-08-19 CN CN202211001074.8A patent/CN116795782B/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104520440A (en) * | 2012-05-08 | 2015-04-15 | 适应生物技术公司 | Compositions and methods for measuring and calibrating amplification bias in multiplex PCR reactions |
CN111831639A (en) * | 2019-04-19 | 2020-10-27 | 北京车和家信息技术有限公司 | Global unique ID generation method and device and vehicle management system |
Also Published As
Publication number | Publication date |
---|---|
CN116795782A (en) | 2023-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11086825B2 (en) | Telemetry system for a cloud synchronization system | |
CN110634052A (en) | Method and device for generating order number by distributed architecture | |
CN110554732B (en) | Identification number generation method and device, electronic equipment and storage medium | |
CN108256353B (en) | Data integrity checking method and device and client | |
CN110677511B (en) | Identification generation method, device, equipment and storage medium in distributed system | |
CN110019239B (en) | Storage method and device of reported data, electronic equipment and storage medium | |
CN109672608B (en) | Method for transmitting messages according to time | |
US7770065B2 (en) | File data restoring system and method of computer operating system and software thereof | |
CN112132652B (en) | Order information acquisition method, device, computer equipment and storage medium | |
CN112579327A (en) | Fault detection method, device and equipment | |
CN114970464A (en) | Method, device, terminal equipment and storage medium for generating identification | |
CN111679978B (en) | Program testing method, program testing device, electronic equipment and storage medium | |
CN116795782B (en) | Method, device, equipment and readable storage medium for generating identification | |
CN112256700B (en) | Data storage method, device, electronic equipment and computer readable storage medium | |
CN113259694A (en) | Data slicing method and device and electronic equipment | |
CN115242872B (en) | Data processing method, device, computer equipment and readable storage medium | |
CN114691732B (en) | Method, device, non-volatile storage medium and processor for locating abnormal transactions | |
CN106210159B (en) | Domain name resolution method and device | |
CN116032869B (en) | A message identification generation method, device, electronic device and storage medium | |
CN117235817A (en) | Method and device for generating identification in cluster environment, electronic equipment and storage medium | |
CN114003566B (en) | Resource acquisition method, resource acquisition device, storage medium and electronic equipment | |
CN112132931B (en) | Processing method, device and system for templated video synthesis | |
CN113221151A (en) | Data processing method and device based on block chain and storage medium | |
CN110471922B (en) | Content extension method and device for accounting node and computer readable storage medium | |
CN107332679B (en) | Centerless information synchronization method and device |
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 |