Detailed Description
Exemplary embodiments of the present invention are described below with reference to the accompanying drawings, in which various details of embodiments of the invention are included to assist understanding, and which are to be considered as merely exemplary. Accordingly, those of ordinary skill in the art will recognize that various changes and modifications of the embodiments described herein can be made without departing from the scope and spirit of the invention. Also, descriptions of well-known functions and constructions are omitted in the following description for clarity and conciseness.
Fig. 1 is a schematic diagram of a main flow of a method for motivating push according to an embodiment of the present invention, as shown in fig. 1, including:
step S101, acquiring activity information corresponding to an activity instruction of a user;
step S102, determining pre-pushing time and target pushing articles according to the activity information;
and S103, when the pre-pushing time is less than the current time, pushing the target pushing object to a user.
The incentive push can be in various display forms, such as activities like ' gold-pounding ' egg ', ' big turntable ', ' scratch ' and ' rope-cutting ' on a website, and whether the user of the activity can obtain the pushed articles and what the specific body can obtain the pushed articles can be calculated by a specific calculation mode at the server side, and then the front-end display layer is informed.
The activity instruction refers to instruction information capable of indicating that a user participates in an activity.
The activity instruction can be an effective interaction behavior generated by the system when the user participates in the activity received by the system, such as a click behavior of the user on a preset effective position by using a mouse in a 'gold egg smashing' activity, or a movement behavior of the user on the effective position by pressing a left mouse button in a 'rope cutting' activity.
The target pushed item can be selected from a huge amount of items in the form of lottery tickets and can also be selected from items in the form of entities.
The method and the device determine the pre-pushing time and the target pushed article according to the acquired activity information, and push the target pushed article to the user when the pre-pushing time is less than the current time. When the articles are pushed out uniformly and completely within the activity duration time, the invention abandons the traditional mode of storing all pushing time points in a database in advance in a time axis-based pushing mode, and determines whether each user can obtain the pushed articles and which articles can be obtained in real time by a simple and efficient mode when participating in the activity, thereby not only uniformly and completely distributing the pushing time of the articles in the activity and ensuring the reasonable pushing of the articles, but also having good time complexity and space complexity, and due to the real-time property of the activity, the invention can effectively prevent cheating behaviors.
In some embodiments, determining a pre-push time from the activity information comprises:
determining an activity starting time t1 and an activity ending time t according to the activity information
2Total item quantity data N
1To do so by
As an item push time interval Δ t;
determining a first random number M using a random number generating function1Wherein M is1Is a floating point number and M1∈(0,Δt];
Determining remaining item quantity data N according to the activity information2To [ t ]1+(N1-N2)·Δt+M1]As the pre-push time.
The method has the significance that all articles are pushed out uniformly and completely in each time period of continuous activity, namely, one article is pushed out in each delta t time, and all articles are just pushed out when the activity is finished; wherein the specific push time point is random within each Δ t time, the randomness of which is determined by a first random number M1To realize the operation;
because the pre-push time is determined in real time by a simple algorithm, the time complexity and the space complexity are low, the system operation efficiency is greatly improved, and the bottleneck of system reading and writing can not be generated even under the high concurrency condition; and due to the first random number M1The pre-pushing time is randomly determined in real time, so that the pre-pushing time determined by each user is different, the rule cannot be determined, and cheating behaviors can be effectively prevented.
When a user engages in an activity, there are several situations:
if the articles in the current time period are not pushed, when the user participates in the activity, if the determined pre-pushing time is not less than the current time, the articles are not pushed to the user; if the determined pre-pushing time is less than the current time, pushing the article to the user;
if the articles in the current time period are pushed out, and the pre-pushing time determined when the user participates in the activity is certainly greater than the current time, the articles cannot be pushed to the user;
if no person participates in the activity for a long time, the number of the articles which can be pushed in the remaining time period of the activity is increased, although the overall winning probability is increased, the articles are uniformly distributed, and the defect that the articles cannot be pushed out completely when the activity time is over is avoided.
In some embodiments, determining a targeted push item from the activity information comprises:
determining the information of the remaining articles according to the activity information;
determining a second random number M using a random number generating function2;
According to the remaining article information and the second random number M2Determining the target pushed item.
And determining the pre-pushing time and simultaneously determining a target pushed article according to the activity information:
determining the information of the remaining articles according to the activity information, wherein the information of the remaining articles can comprise the types of the remaining articles and the quantity of various articles; if the types of the residual articles are as follows: the first item is nine-fold coupon, the second item is eight-fold coupon, and the third item is seven-fold coupon, wherein 156 pieces of the first item, 90 pieces of the second item and 120 pieces of the third item are remained; the remaining item information may also include each remaining item and the total number of all remaining items;
determining a second random number M by a random number generating function2,M2May be a natural number; such as 222, such as 760;
then according to the residual article information and a second random number M2Determining a target pushed article in the remaining articles;
if the total number of the current remaining articles is N2Numbering all the remaining articles in a self-incrementing manner starting from 1, obtaining 1 to N2Total N2The number is determined, and a second random number M is determined in a preset mode2Corresponding to a certain number, the remaining articles corresponding to the number are the target pushing articles.
According to a second random number M randomly determined in real time2Determining the target pushed item among all remaining items, easy to implement and computationally efficient, and due to the second random number M2The randomness of the method can not appoint the pushed articles obtained by the user in advance, and the cheating behavior is effectively prevented.
In some embodiments, the second random number M is determined based on the remaining item information and the second random number M2Determining the targeted push item, comprising:
determining the identification value of the residual article and residual article quantity data according to the residual article information;
determining the second random number M according to the remaining article quantity data2And the corresponding identification value takes the residual article determined by the corresponding identification value as the target push article.
The identification value of the remaining item may be an identification value of each type of remaining item;
a first item identification value of 202011, a second item identification value of 202012, and a third item identification value of 202013 as determined from the campaign information, wherein the remaining items quantity data is: 156 of the first item, 90 of the second item and 120 of the third item;
when the second random number M is determined2If the item is 222, determining which type of the remaining items the 222 th item is, and taking any item in the remaining item type as the target push item: based on the remaining quantity data 156 for the item identified with value 202011, M is used2-156 ═ 66, when it is determined that the first item is not the target push item, since 66 > 0; m is used further based on the remaining quantity data 90 for the article identified with value 2020122-156-90 ≦ 24, since-24 ≦ 0, when determined with the second random number M2The identification value of 222 is 202012, that is, the second item is determined to be the target push item.
The identification value of the remaining items may also be the identification value of each remaining item;
if all the remaining items are numbered from 1 according to the activity information, the data of the amount of the remaining items is 366, and the identification values of the remaining items are 366 natural numbers from 1 to 366;
when the second random number M is determined2At 760, using 760% 366 ═ 28 according to the remaining item quantity data 366, at which time the second random number M is determined2The identification value of 760 corresponds to 28, that is, the remaining item with the number of 28 is determined as the target pushed item.
In some embodiments, after pushing the targeted pushed item to the user, further comprising updating the activity information. For example, the targeted pushed item is deleted from the remaining items.
When the pre-pushing time is less than the current time, pushing the target pushing object to the user, and then updating activity information in real time, and deleting the target pushing object from the residual objects in the current database so as to ensure that the residual objects in the database when the next user participates in the activity do not have the target pushing object obtained by the current user, so that the activity system operates normally;
updating the activity information may further include: and recording the current time as the latest pushing time.
FIG. 2 is a schematic diagram 200 of a system architecture for a method of incentivizing push, in accordance with an embodiment of the present invention; the method comprises the following steps:
the database 201 can be used for storing activity information stimulated to be pushed and article information stimulated to be pushed;
the activity initialization service 202 may be a task that can be started in a preset time, for example, an activity that is to be started in the next day in a database scanned at 2 am every day may be set; if the current time is 2016-04-2202: 00:00, the activity initialization service 202 scans the activity to be started in 2016-04-23 days, generates activity information to be used in the next day, and stores the activity information in the cache 203;
a cache 203, which may be used to store the activity information generated in the activity initialization service 202;
an incentive push service 204, which may be used to determine whether to push items to the user based on the activity information;
the user 205, may be an object participating in an activity. The activity instructions are generated when the user 205 engages in the activity.
The database 201 is pre-stored with the existing activity information stimulated to be pushed and the article information actively pushed; the activity initialization service 202 reads the activity configuration in the database, generates activity information to be used in the next day, and stores the generated activity information in the cache 203; when the user 205 participates in the activity, an activity instruction is generated, the activity information corresponding to the activity instruction in the cache 203 is read by the incentive push service 204, and whether to push the item to the user 205 is judged in real time.
FIG. 3 is a schematic diagram of the main data structure of a method for stimulating push according to an embodiment of the present invention; the method comprises the following steps:
a lotterysenstance 301, a lotterayaware entry 302.
The lotterysenstance 301 may include: activeID (campaign ID), activeName (campaign name), beginTime (campaign start time), endTime (campaign end time), lotteryAwardMap (campaign pushed item information);
wherein, each element in the lotteryAwardMap is the lotteryawardnentry (item information) 302, which may specifically include: awardID (item ID), awardName (item name), awardCoupon (item information code), awardTotalAmount (total item quantity data), awardBilance (remaining item quantity data), lastUpdateTime (latest push time).
FIG. 4 is a schematic diagram of the activity information storage content of a method of incentivizing push, in accordance with an embodiment of the present invention; the method comprises the following steps:
activity information 401, item information 402.
The activity information 401 may include: activity IDs, such as: 102020, respectively;
activity names, such as: cutting a rope;
activity start times, such as: 2016-04-2210: 00: 00;
end of activity time, such as: 2016-04-2424: 00: 00;
item information for active push, such as: an article list;
each element in the item information pushed by the activity is the item information 402, and specifically may include:
item ID, such as: 202011, respectively;
item names, such as: nine-fold coupons;
an article information code, such as: SKJLKJFHUI 2342;
total item quantity data, such as: 6000;
remaining item quantity data, such as: 6000;
the latest push time, such as: NULL.
FIG. 5 is a schematic diagram of the main steps of a method of stimulating push in accordance with an embodiment of the present invention; the method comprises the following steps:
a user engaging in an activity;
obtaining activity information, including: time t of start of activity1Time of end of activity t2Total item quantity data N1Data on the amount of the remaining product N2Information of the remaining articles;
determining the number of remaining articlesAccording to N2Whether or not it is greater than 0: if N is present2If the item is 0, not pushing the item to the user, and ending the participation of the user in the activity; if N is present2If the user is more than 0, the user continues to participate in the activity;
determining an item push time interval Δ t, a first random number M
1A second random number M
2: to be provided with
Determining a first random number M as an item push time interval Δ t using a random number generation function
1A second random number M
2;
Determining the pre-pushing time and the target pushing article: by [ t ]1+(N1-N2)·Δt+M1]As the pre-pushing time, according to the residual article information and a second random number M2Determining the target pushed item;
judging whether the pre-pushing time is less than the current time: if the pre-pushing time is not less than the current time, not pushing the articles to the user, and ending the participation of the user; if the pre-pushing time is less than the current time, the user continues to participate in the activity;
pushing the target pushed item to a user;
and (3) updating activity information: deleting the target pushed article from the rest articles, and recording the current time as the latest pushing time;
the user engagement activity ends.
Fig. 6 is a schematic diagram of main modules of a device for stimulating push according to an embodiment of the present invention, and as shown in fig. 6, the device 600 for stimulating push includes:
an information obtaining module 601, configured to obtain activity information corresponding to an activity instruction of a user;
a data determining module 602, configured to determine a pre-push time and a target push item according to the activity information;
a pushing module 603, configured to push the target pushed item to a user when the pre-pushing time is less than the current time.
The incentive push can be in various display forms, such as activities like ' gold-pounding ' egg ', ' big turntable ', ' scratch ' and ' rope-cutting ' on a website, and whether the user of the activity can obtain the pushed articles and what the specific body can obtain the pushed articles can be calculated by a specific calculation mode at the server side, and then the front-end display layer is informed.
The activity instruction refers to instruction information capable of indicating that a user participates in an activity.
The activity instruction can be an effective interaction behavior generated by the system when the user participates in the activity received by the system, such as a click behavior of the user on a preset effective position by using a mouse in a 'gold egg smashing' activity, or a movement behavior of the user on the effective position by pressing a left mouse button in a 'rope cutting' activity.
The target pushed item can be selected from a huge amount of items in the form of lottery tickets and can also be selected from items in the form of entities.
The method and the device determine the pre-pushing time and the target pushed article according to the acquired activity information, and push the target pushed article to the user when the pre-pushing time is less than the current time. When the articles are pushed out uniformly and completely within the activity duration time, the invention abandons the traditional mode of storing all pushing time points in a database in advance in a time axis-based pushing mode, and determines whether each user can obtain the pushed articles and which articles can be obtained in real time by a simple and efficient mode when participating in the activity, thereby not only uniformly and completely distributing the pushing time of the articles in the activity and ensuring the reasonable pushing of the articles, but also having good time complexity and space complexity, and due to the real-time property of the activity, the invention can effectively prevent cheating behaviors.
In some embodiments, the data determination module 602 determines a pre-push time according to the activity information, including:
determining an activity start time t from the activity information
1Time of end of activity t
2Total item quantity data N
1To do so by
As an item push time interval Δ t;
determining a first random number M using a random number generating function1Wherein M is1Is a floating point number and M1∈(0,Δt];
Determining remaining item quantity data N according to the activity information2To [ t ]1+(N1-N2)·Δt+M1]As the pre-push time.
The method has the significance that all articles are pushed out uniformly and completely in each time period of continuous activity, namely, one article is pushed out in each delta t time, and all articles are just pushed out when the activity is finished; wherein the specific push time point is random within each Δ t time, the randomness of which is determined by a first random number M1To realize the operation;
because the pre-push time is determined in real time by a simple algorithm, the time complexity and the space complexity are low, the system operation efficiency is greatly improved, and the bottleneck of system reading and writing can not be generated even under the high concurrency condition; and due to the first random number M1The pre-pushing time is randomly determined in real time, so that the pre-pushing time determined by each user is different, the rule cannot be determined, and cheating behaviors can be effectively prevented.
When a user engages in an activity, there are several situations:
if the articles in the current time period are not pushed, when the user participates in the activity, if the determined pre-pushing time is not less than the current time, the articles are not pushed to the user; if the determined pre-pushing time is less than the current time, pushing the article to the user;
if the articles in the current time period are pushed out, and the pre-pushing time determined when the user participates in the activity is certainly greater than the current time, the articles cannot be pushed to the user;
if no person participates in the activity for a long time, the number of the articles which can be pushed in the remaining time period of the activity is increased, although the overall winning probability is increased, the articles are uniformly distributed, and the defect that the articles cannot be pushed out completely when the activity time is over is avoided.
In some embodiments, the data determination module 602 determines the targeted push item according to the activity information, including:
determining the information of the remaining articles according to the activity information;
determining a second random number M using a random number generating function2;
According to the remaining article information and the second random number M2Determining the target pushed item.
And determining the pre-pushing time and simultaneously determining a target pushed article according to the activity information:
determining the information of the remaining articles according to the activity information, wherein the information of the remaining articles can comprise the types of the remaining articles and the quantity of various articles; if the types of the residual articles are as follows: the first item is nine-fold coupon, the second item is eight-fold coupon, and the third item is seven-fold coupon, wherein 156 pieces of the first item, 90 pieces of the second item and 120 pieces of the third item are remained;
the remaining item information may also include each remaining item and the total number of all remaining items;
determining a second random number M by a random number generating function2,M2May be a natural number; such as 222, such as 760;
then according to the residual article information and a second random number M2Determining a target pushed article in the remaining articles;
if the total number of the current remaining articles is N2Numbering all the remaining articles from the beginning in a self-incrementing manner, obtaining 1 to N2Total N2And determining that the second random number M corresponds to a certain number in a preset mode, wherein the remaining articles corresponding to the number are the target pushed articles.
According to a second random number M randomly determined in real time2Targeting push items among all remaining items, easy to implement and computationally efficient, and due to the secondTwo random numbers M2The randomness of the method can not appoint the pushed articles obtained by the user in advance, and the cheating behavior is effectively prevented.
In some embodiments, the data determination module 602 determines the second random number M based on the remaining item information and the second random number M2Determining the targeted push item, comprising:
determining the identification value of the residual article and residual article quantity data according to the residual article information;
determining the second random number M according to the remaining article quantity data2And the corresponding identification value takes the residual article determined by the corresponding identification value as the target push article.
The identification value of the remaining item may be an identification value of each type of remaining item; a first item identification value of 202011, a second item identification value of 202012, and a third item identification value of 202013 as determined from the campaign information, wherein the remaining items quantity data is: 156 of the first item, 90 of the second item and 120 of the third item;
when the second random number M is determined2If the item is 222, determining which type of the remaining items the 222 th item is, and taking any item in the remaining item type as the target push item: based on the remaining quantity data 156 for the item identified with value 202011, M is used2-156 ═ 66, when it is determined that the first item is not the target push item, since 66 > 0; m is used further based on the remaining quantity data 90 for the article identified with value 2020122-156-90 ≦ 24, since-24 ≦ 0, when determined with the second random number M2The corresponding identification value is 202012, that is, the second item is determined to be the target push item.
The identification value of the remaining items may also be the identification value of each remaining item; if all the remaining items are numbered from 1 according to the activity information, the data of the amount of the remaining items is 366, and the identification values of the remaining items are 366 natural numbers from 1 to 366;
when the second random number M is determined2760 is according toRemaining item quantity data 366, using 760% 366 ═ 28, when determined with the second random number M2The identification value of 760 corresponds to 28, that is, the remaining item with the number of 28 is determined as the target pushed item.
In some embodiments, the pushing module 603 further comprises updating the activity information after pushing the targeted pushed item to the user. For example, the targeted pushed item is deleted from the remaining items.
When the pre-pushing time is less than the current time, pushing the target pushing object to the user, and then updating activity information in real time, and deleting the target pushing object from the residual objects in the current database so as to ensure that the residual objects in the database when the next user participates in the activity do not have the target pushing object obtained by the current user, so that the activity system operates normally;
updating the activity information may further include: and recording the current time as the latest pushing time.
Fig. 7 illustrates an exemplary system architecture 700 of a method or apparatus for incentivizing push to which embodiments of the present invention may be applied.
As shown in fig. 7, the system architecture 700 may include terminal devices 701, 702, 703, a network 704, and a server 705. The network 704 serves to provide a medium for communication links between the terminal devices 701, 702, 703 and the server 705. Network 704 may include various connection types, such as wired, wireless communication links, or fiber optic cables, to name a few.
A user may use the terminal devices 701, 702, 703 to interact with a server 705 over a network 704, to receive or send messages or the like. The terminal devices 701, 702, 703 may have installed thereon various communication client applications, such as a shopping-like application, a web browser application, a search-like application, an instant messaging tool, a mailbox client, social platform software, etc. (by way of example only).
The terminal devices 701, 702, 703 may be various electronic devices having a display screen and supporting web browsing, including but not limited to smart phones, tablet computers, laptop portable computers, desktop computers, and the like.
The server 705 may be a server providing various services, such as a background management server (for example only) providing support for shopping websites browsed by users using the terminal devices 701, 702, 703. The backend management server may analyze and perform other processing on the received data such as the product information query request, and feed back a processing result (for example, target push information, product information — just an example) to the terminal device.
It should be noted that the method for incentive push provided by the embodiment of the present invention is generally executed by the server 705, and accordingly, the apparatus for incentive push is generally disposed in the server 705.
It should be understood that the number of terminal devices, networks, and servers in fig. 7 is merely illustrative. There may be any number of terminal devices, networks, and servers, as desired for implementation.
Referring now to FIG. 8, shown is a block diagram of a computer system 800 suitable for use with a terminal device implementing an embodiment of the present invention. The terminal device shown in fig. 8 is only an example, and should not bring any limitation to the functions and the scope of use of the embodiments of the present invention.
As shown in fig. 8, the computer system 800 includes a Central Processing Unit (CPU)801 that can perform various appropriate actions and processes in accordance with a program stored in a Read Only Memory (ROM)802 or a program loaded from a storage section 808 into a Random Access Memory (RAM) 803. In the RAM 803, various programs and data necessary for the operation of the system 800 are also stored. The CPU 801, ROM 802, and RAM 803 are connected to each other via a bus 804. An input/output (I/O) interface 805 is also connected to bus 804.
The following components are connected to the I/O interface 805: an input portion 806 including a keyboard, a mouse, and the like; an output section 807 including a signal such as a Cathode Ray Tube (CRT), a Liquid Crystal Display (LCD), and the like, and a speaker; a storage portion 808 including a hard disk and the like; and a communication section 809 including a network interface card such as a LAN card, a modem, or the like. The communication section 809 performs communication processing via a network such as the internet. A drive 810 is also connected to the I/O interface 805 as necessary. A removable medium 811 such as a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory, or the like is mounted on the drive 810 as necessary, so that a computer program read out therefrom is mounted on the storage section 808 as necessary.
In particular, according to the embodiments of the present disclosure, the processes described above with reference to the flowcharts may be implemented as computer software programs. For example, embodiments of the present disclosure include a computer program product comprising a computer program embodied on a computer readable medium, the computer program comprising program code for performing the method illustrated in the flow chart. In such an embodiment, the computer program can be downloaded and installed from a network through the communication section 809 and/or installed from the removable medium 811. The computer program executes the above-described functions defined in the system of the present invention when executed by the Central Processing Unit (CPU) 801.
It should be noted that the computer readable medium shown in the present invention can be a computer readable signal medium or a computer readable storage medium or any combination of the two. A computer readable storage medium may be, for example, but not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any combination of the foregoing. More specific examples of the computer readable storage medium may include, but are not limited to: an electrical connection having one or more wires, a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing. In the present invention, a computer readable storage medium may be any tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. In the present invention, however, a computer readable signal medium may include a propagated data signal with computer readable program code embodied therein, for example, in baseband or as part of a carrier wave. Such a propagated data signal may take many forms, including, but not limited to, electro-magnetic, optical, or any suitable combination thereof. A computer readable signal medium may also be any computer readable medium that is not a computer readable storage medium and that can communicate, propagate, or transport a program for use by or in connection with an instruction execution system, apparatus, or device. Program code embodied on a computer readable medium may be transmitted using any appropriate medium, including but not limited to: wireless, wire, fiber optic cable, RF, etc., or any suitable combination of the foregoing.
The flowchart and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods and computer program products according to various embodiments of the present invention. In this regard, each block in the flowchart or block diagrams may represent a module, segment, or portion of code, which comprises one or more executable instructions for implementing the specified logical function(s). It should also be noted that, in some alternative implementations, the functions noted in the block may occur out of the order noted in the figures. For example, two blocks shown in succession may, in fact, be executed substantially concurrently, or the blocks may sometimes be executed in the reverse order, depending upon the functionality involved. It will also be noted that each block of the block diagrams or flowchart illustration, and combinations of blocks in the block diagrams or flowchart illustration, can be implemented by special purpose hardware-based systems which perform the specified functions or acts, or combinations of special purpose hardware and computer instructions.
The modules described in the embodiments of the present invention may be implemented by software or hardware. The described modules may also be provided in a processor, which may be described as: a processor includes a sending module, an obtaining module, a determining module, and a first processing module. The names of these modules do not form a limitation on the modules themselves in some cases, and for example, the sending module may also be described as a "module sending a picture acquisition request to a connected server".
As another aspect, the present invention also provides a computer-readable medium that may be contained in the apparatus described in the above embodiments; or may be separate and not incorporated into the device. The computer readable medium carries one or more programs which, when executed by a device, cause the device to comprise: step S101, acquiring activity information corresponding to an activity instruction of a user; step S102, determining pre-pushing time and target pushing articles according to the activity information; and S103, when the pre-pushing time is less than the current time, pushing the target pushing object to a user.
According to the technical scheme of the embodiment of the invention, the technical means that the pre-pushing time and the target pushing object are determined according to the acquired activity information, and when the pre-pushing time is less than the current time, the user is determined to acquire the target pushing object is adopted, so that the technical problems that the object cannot be pushed out uniformly and completely and the calculation efficiency is low in the traditional incentive pushing mode are solved, and the technical effect of pushing the object uniformly and completely with high efficiency is achieved.
The above-described embodiments should not be construed as limiting the scope of the invention. Those skilled in the art will appreciate that various modifications, combinations, sub-combinations, and substitutions can occur, depending on design requirements and other factors. Any modification, equivalent replacement, and improvement made within the spirit and principle of the present invention should be included in the protection scope of the present invention.