Detailed Description
In order to make the objects, technical solutions and advantages of the present application more clear, embodiments of the present application will be described in further detail below with reference to the accompanying drawings.
It should be understood that the embodiments described are only a few embodiments of the present application, and not all embodiments. All other embodiments, which can be derived by a person skilled in the art from the embodiments given herein without making any creative effort, shall fall within the protection scope of the present application.
When the following description refers to the accompanying drawings, like numbers in different drawings represent the same or similar elements unless otherwise indicated.
In the description of the present application, it is to be understood that the terms "first," "second," "third," and the like are used solely to distinguish one from another and are not necessarily used to describe a particular order or sequence, nor are they to be construed as indicating or implying relative importance. The specific meaning of the above terms in the present application can be understood by those of ordinary skill in the art as appropriate. As used in this application and the appended claims, the singular forms "a", "an", and "the" are intended to include the plural forms as well, unless the context clearly indicates otherwise. The word "if/if" as used herein may be interpreted as "at … …" or "when … …" or "in response to a determination". Further, in the description of the present application, "a plurality" means two or more unless otherwise specified. "and/or" describes the association relationship of the associated objects, meaning that there may be three relationships, e.g., a and/or B, which may mean: a exists alone, A and B exist simultaneously, and B exists alone. The character "/" generally indicates that the former and latter associated objects are in an "or" relationship.
Please refer to fig. 1, which is a schematic block diagram illustrating an application environment of a method for dynamically configuring a service according to an embodiment of the present application. As shown in fig. 1, an application environment of the method of dynamically configuring a service includes acloud server 1000 and a plurality ofclients 2000; thecloud server 1000 includes aprocessing unit 1100 and adatabase 1200; theprocessing unit 1100 runs aservice platform 1110, and theprocessing unit 1100 runs the method for dynamically configuring the service according to the present application. One of theclients 2000 accesses theservice platform 1110 through a browser according to a website input by a user, and then displays an interface of theservice platform 1110 on the browser of theclient 2000. Theservice platform 1110 has a first access page provided on its interface for the user to use the service, and also has a second access page provided on its interface for the user to create or modify the service, and the user can submit the service configuration information on the second access page. Thecloud server 1000 receives the service configuration information of theclient 2000, generates a corresponding service according to the method for dynamically configuring the service, and feeds the generated service back to theclient 2000 for display. Theother clients 2000 may obtain the generated service through a query and add the service through an interface of theservice platform 1100 of the respective browser, thereby using the service. Thedatabase 1200 is provided for storing data generated by eachclient 2000 using each service of theservice platform 1110.
Example 1
A method for dynamically configuring a service according to an embodiment of the present application will be described in detail below with reference to fig. 2.
Referring to fig. 2, the method for dynamically configuring the service includes the following steps:
s101: and receiving service configuration information submitted by a client on the service platform when the service platform runs.
The service platform is an application program which is used for providing user service and runs on cloud computing infrastructure. In the embodiment of the present application, the Service platforms include a SaaS (Software-as-a-Service, SaaS for short) Platform and a PaaS (Platform-as-a-Service, PaaS for short) Platform. The services provided by the SaaS platform to the user are application programs running on the cloud computing infrastructure, the user can access the application programs through a client interface on various devices, such as a browser, and the user does not need to manage or control any cloud computing infrastructure, including a network, a server, an operating system, storage and the like. The PaaS platform provides services for users by deploying applications developed or purchased by the users using provided development languages and tools (e.g., Java, python,. Net, etc.) to the cloud computing infrastructure of the provider, and the users do not need to manage or control the underlying cloud infrastructure, including networks, servers, operating systems, storage, etc., but the users can control the deployed applications and possibly the configuration of the hosting environment running the applications.
The service platform is provided with a first access page for the user to use the service at the client side, and is also provided with a second access page for the user to create or modify the service, and the user can submit service configuration information on the second access page. The service configuration information is used for creating or modifying the service of the service platform; the service configuration information comprises information for changing a data table structure of a database in the service platform, information for generating a service matched with the changed data table structure of the database, service operation interface information and the like. The data table structure is used for determining a file name of a data table, fields contained in the data table, field names of the fields, field types and field lengths, and the information of the data table structure of the change database comprises a change data table name, fields contained in the change data table, field names of the fields, field types of the fields, field lengths of the fields and the like, wherein the change comprises new addition, modification or deletion. In the embodiment of the application, the data table of the database of the service platform is changed into the data table corresponding to the service in the service configuration information, where the service may be an existing service of the service platform or a service to be created according to the service configuration information. The service generation request can be a code written by a user, or a code automatically generated by the service platform through operations such as graphical dragging on a service platform interface by the user. The information for generating the service matched with the data table structure of the changed database is specifically information for performing services such as query, addition, modification and deletion on the data table structure of the changed database. The service operation interface information is interface information displayed to the user in the service generated on the client according to the service configuration information and an operation component for providing interaction between the user and the service platform, for example, a service page is provided on the client, and an operation button, a search box and the like are provided on the service page, so that the user can inquire, add, modify and delete data of a data table of a database corresponding to the service.
S102: and generating metadata according to the service configuration information.
The metadata is data describing information for changing a data table structure of a database in the service platform and is used for supporting functions such as indicating storage positions, historical data, resource searching, file recording and the like.
S103: and changing the data table structure of the database in the service platform according to the metadata.
Wherein the step of changing the data table structure of the database in the service platform comprises: and newly adding, modifying or deleting a data table structure of a database in the service platform.
S104: and generating a byte code matched with the data table structure of the changed database through a dynamic proxy technology according to the service configuration information and a preset service generation template.
The preset service generation template comprises services for providing data which are correspondingly stored in a data table structure of the query, the addition, the modification and the deletion database. When the data stored in the data table of the changed database is inquired, added, modified and deleted, the database statement is generated through the framework according to the parameters input by the user.
The dynamic proxy technology is a proxy class created during program operation, wherein the proxy class is mainly responsible for preprocessing messages for the delegation class, filtering messages, forwarding messages to the delegation class, processing messages after events, and the like. There is usually an association relationship between the proxy class and the proxy class, and an object of a proxy class is associated with an object of a proxy class, and the object of the proxy class does not actually implement a service, but provides a specific service by calling a related method of the object of the proxy class. The service platform of the exemplary embodiment of the present application is developed based on JAVA language technology, and the bytecode is code that can be recognized and executed by a virtual machine in JAVA.
S105: and loading and running the bytecode generation service, and controlling a service platform of the client to display the service.
The bytecode is a binary file that contains the execution program and consists of a sequence of operation codes or data pairs. The service provides functions of querying, adding, modifying and deleting data and the like for the user.
Referring to fig. 3, in an exemplary embodiment of the present application, when a service platform runs, service configuration information submitted by a client on the service platform is received through a data resource module, metadata is generated according to the service configuration information, and the metadata is converted into a byte code data stream. Changing a data table structure of a database in the service platform according to the metadata through a dynamic model module; generating a template according to the service configuration information and a preset service through a dynamic model module, and generating a byte code matched with a data table structure of a changed database through a dynamic proxy technology; loading the byte codes through the class loader, feeding the byte codes back to the dynamic model module, and operating the byte code generation service through the dynamic model module; and sending the service to a service platform of the client for display through a data resource module.
When a service platform runs, receiving service configuration information submitted by a client on the service platform, and generating metadata according to the service configuration information; changing a data table structure of a database in the service platform according to the metadata; generating a bytecode which is matched with a data table structure of a changed database through a dynamic proxy technology according to the service configuration information and a preset service generation template, loading and running the bytecode generation service, and controlling a service platform at the client to display the service, so that the data table structure of the database can be changed according to the service configuration information provided by the client without restarting the service platform, and then the corresponding service is generated according to the preset service generation template, thereby not affecting the normal operation of the service platform and improving the user experience.
In practical use, the service platform inevitably needs to be upgraded or migrated, that is, the service platform inevitably needs to be restarted, in order to prevent the loss of the dynamically generated service, and meanwhile, in a case that the service platform is a cluster service, in order to enable other servers to share the service, in an exemplary embodiment of the present application, after the step of generating a bytecode adapted to a data table structure of a changed database by using a dynamic proxy technology according to the service configuration information and a preset service generation template, the method further includes the following steps: saving the bytecode to a database to persist the bytecode. The persistence is a mechanism for converting program data between a persistent state and an instantaneous state, and bytecodes are stored in a database which can be permanently stored, so that when the service platform is closed and the service platform is restarted, the bytecodes can be loaded from the database to generate service, and the service cannot disappear after the service is restarted. The method for dynamically configuring the service further comprises the following steps: and after the service platform is restarted, loading the bytecode from the database to generate service, and controlling the service platform at the client to display the service. Referring to fig. 4, in an exemplary embodiment of the present application, the bytecode is saved to a database by a dynamic model module to persist the bytecode; after the service platform is restarted, loading the byte codes from the database through a dynamic model module; loading the byte codes through the class loader, feeding the byte codes back to the dynamic model module, and operating the byte code generation service through the dynamic model module; and sending the service to a service platform of the client for display through a data resource module. By saving the bytecode to the database, persistence of the newly added or modified service data can be realized. In order to implement the subsequent operation of executing the delete service, preferably, a plurality of custom class loaders are preset, and one custom class loader is correspondingly used for each bytecode for loading. When the user needs to delete the service, the whole service can be deleted by deleting the byte code and the corresponding class loader.
In practical use, the service platform inevitably needs to be upgraded or migrated, that is, the service platform inevitably needs to be restarted, in order to prevent the loss of the dynamically generated service, and meanwhile, in a case that the service platform is a cluster service, in order to enable other servers to also share the service, in another exemplary embodiment of the present application, after the step of generating metadata according to the service configuration information, the following steps are further included: saving the metadata to a database to persist the metadata. The persistence is a mechanism for converting program data between a persistent state and an instantaneous state, and the metadata is stored in a database which can be permanently stored, so that when the service platform is closed and the service platform is restarted, the metadata can be loaded from the database to further generate the service, and the service cannot disappear after the service is restarted. The method for dynamically configuring the service further comprises the following steps: after the service platform is restarted, loading the metadata from the database; changing a data table structure of a database in the service platform according to the metadata; generating a bytecode which is matched with a data table structure of a changed database through a dynamic proxy technology according to the service configuration information and a preset service generation template; and loading and running the bytecode generation service, and controlling a service platform of the client to display the service. Referring to fig. 5, in an exemplary embodiment of the present application, the metadata is saved to a database by a data resource module. After the service platform is restarted, loading the metadata from the database through a data resource module, and changing a data table structure of the database in the service platform according to the metadata; generating a template according to the service configuration information and a preset service through a dynamic model module, and generating a byte code matched with a data table structure of a changed database through a dynamic proxy technology; loading the byte codes through the class loader, feeding the byte codes back to the dynamic model module, and operating the byte code generation service through the dynamic model module; and sending the service to a service platform of the client for display through a data resource module. By saving the metadata to the database, persistence of the service data can be achieved, and the storage space of the database can be reduced by saving the metadata compared to a manner of saving the bytecode. In order to implement the subsequent operation of executing the delete service, preferably, a plurality of custom class loaders are preset, and one custom class loader is correspondingly used for each bytecode for loading. When the user needs to delete the service, the whole service can be deleted by deleting the byte code and the corresponding class loader.
In an exemplary embodiment, referring to fig. 3 to 5, the step of loading and running the bytecode generation service includes: and loading the bytecode to a virtual machine, and operating the bytecode generation service. In another exemplary embodiment, referring to fig. 6, the step of loading and running the bytecode generation service includes: saving the byte codes as binary files, and saving the binary files of the byte codes to a disk; and loading the binary file of the bytecode from the disk, and operating the binary file generation service of the bytecode. Specifically, the bytecode is stored as a binary file by the dynamic model module, the binary file of the bytecode is stored in the disk, the binary file of the bytecode in the disk is loaded by the class loader, the bytecode generation service is operated, and the bytecode is stored as the binary file and stored in the disk, so that the class loader can directly load the binary file of the bytecode from the disk, and the implementation of the class loader can be changed and rewritten. In order to implement the subsequent operation of executing the delete service, preferably, a plurality of custom class loaders are preset, and one custom class loader is correspondingly used for each bytecode for loading. When the user needs to delete the service, the whole service can be deleted by deleting the byte code and the corresponding class loader.
Example 2
The following are embodiments of the apparatus of the present application that may be used to perform embodiments of the method of the present application. For details which are not disclosed in the embodiments of the apparatus of the present application, reference is made to the embodiments of the method of the present application.
Please refer to fig. 7, which illustrates a schematic structural diagram of an apparatus for dynamically configuring a service according to an embodiment of the present application. Theapparatus 200 for dynamically configuring a service includes:
theinformation receiving module 201 is configured to receive service configuration information submitted by a client on a service platform when the service platform runs;
ametadata generation module 202, configured to generate metadata according to the service configuration information;
a changingmodule 203, configured to change a data table structure of a database in the service platform according to the metadata;
abytecode generation module 204, configured to generate, according to the service configuration information and a preset service generation template, a bytecode adapted to a data table structure of the changed database through a dynamic proxy technology;
and theservice generation module 205 is configured to load and run the bytecode generation service, and control a service platform at the client to display the service.
When a service platform runs, receiving service configuration information submitted by a client on the service platform, and generating metadata according to the service configuration information; changing a data table structure of a database in the service platform according to the metadata; generating a bytecode which is matched with a data table structure of a changed database through a dynamic proxy technology according to the service configuration information and a preset service generation template, loading and running the bytecode generation service, and controlling a service platform at the client to display the service, so that the data table structure of the database can be changed according to the service configuration information provided by the client without restarting the service platform, and then the corresponding service is generated according to the preset service generation template, thereby not affecting the normal operation of the service platform and improving the user experience.
In actual use, the service platform inevitably needs to be upgraded or migrated, that is, the service platform inevitably needs to be restarted, in order to prevent the loss of the dynamically generated service, and meanwhile, in a case that the service platform is a cluster service, in order to enable other servers to also share the service, in an exemplary embodiment of the present application, the apparatus for dynamically configuring the service further includes a first saving module; the first storage module is used for storing the byte codes to a database. The device for dynamically configuring the service further comprises a first loading operation module; and the first loading operation module is used for loading and executing the bytecode generation service from the database after the service platform is restarted, and controlling the service platform of the client to display the service. By saving the bytecode to the database, persistence of the newly added or modified service data can be realized.
In practical use, the service platform inevitably needs to be upgraded or migrated, that is, the service platform inevitably needs to be restarted, in order to prevent the loss of the dynamically generated service, and meanwhile, in a case that the service platform is a cluster service, in order to enable other servers to share the service, in another exemplary embodiment of the present application, the apparatus for dynamically configuring a service further includes a second saving module, where the second saving module is configured to save the metadata to the database. The device for dynamically configuring the service also comprises a second loading operation module; the second loading operation module is used for loading the metadata from the database after the service platform is restarted; changing a data table structure of a database in the service platform according to the metadata; generating a bytecode which is matched with a data table structure of a changed database through a dynamic proxy technology according to the service configuration information and a preset service generation template; and loading and running the bytecode generation service, and controlling a service platform of the client to display the service. By saving the metadata to the database, persistence of the service data can be achieved, and the storage space of the database can be reduced by saving the metadata compared to a manner of saving the bytecode.
In an exemplary embodiment, the apparatus for dynamically configuring a service further includes a third load run module; the third loading operation module is used for loading the byte codes to a virtual machine and operating the byte code generation service. In another exemplary embodiment, the apparatus for dynamically configuring a service further comprises a fourth load run module; the fourth loading operation module is used for saving the byte codes as binary files and saving the binary files of the byte codes to a disk; and loading the binary file of the bytecode from the disk, operating the binary file generation service of the bytecode, and saving the bytecode as the binary file and storing the binary file into the disk, so that the class loader can directly load the binary file of the bytecode from the disk and can change and rewrite the binary file.
Example 3
The following are embodiments of the apparatus of the present application that may be used to perform embodiments of the methods of the present application. For details which are not disclosed in the embodiments of the apparatus of the present application, reference is made to the embodiments of the method of the present application.
Referring to fig. 8, the present application further provides aserver 300, where theserver 300 may be embodied as a computer, a mobile phone, a tablet computer, an interactive smart tablet, or other hardware as a support. Theserver 300 may include: at least oneprocessor 301, at least onememory 302, at least onenetwork interface 303, auser interface 304, and at least onecommunication bus 305.
Theuser interface 304 is mainly used for providing an input interface for a user, acquiring data input by the user, and may include a display terminal. Optionally, theuser interface 304 may also include a standard wired interface, a wireless interface.
Thenetwork interface 303 may optionally include a standard wired interface or a wireless interface (e.g., WI-FI interface).
Wherein thecommunication bus 305 is used to enable connection communication between these components.
Theprocessor 301 may include one or more processing cores. Theprocessor 301, using various interfaces and lines to connect various parts throughout theelectronic device 300, performs various functions of theelectronic device 300 and processes data by executing or executing instructions, programs, code sets, or instruction sets stored in thememory 302, and calling data stored in thememory 302. Optionally, theprocessor 301 may be implemented in at least one hardware form of Digital Signal Processing (DSP), Field-Programmable Gate Array (FPGA), and Programmable Logic Array (PLA). Theprocessor 301 may integrate one or more of a Central Processing Unit (CPU), a Graphics Processing Unit (GPU), a modem, and the like. Wherein, the CPU mainly processes an operating system, a user interface, an application program and the like; the GPU is used for rendering and drawing the content required to be displayed by the display screen; the modem is used to handle wireless communications. It is understood that the modem may not be integrated into theprocessor 301, but may be implemented by a single chip.
TheMemory 302 may include a Random Access Memory (RAM) or a Read-Only Memory (Read-Only Memory). Optionally, thememory 302 includes a non-transitory computer-readable medium. Thememory 302 may be used to store instructions, programs, code, sets of codes, or sets of instructions. Thememory 302 may include a program storage area and a data storage area, wherein the program storage area may store instructions for implementing an operating system, instructions for at least one function (such as a touch function, a sound playing function, an image playing function, etc.), instructions for implementing the above-described method embodiments, and the like; the storage data area may store data and the like referred to in the above respective method embodiments. Thememory 302 may alternatively be at least one storage device located remotely from theprocessor 301. As shown in fig. 8, thememory 302, which is a kind of computer storage medium, may include an operating system, a network communication module, and a user therein.
Theprocessor 301 may be configured to invoke a method of the dynamic configuration service stored in thememory 302, and specifically perform the following operations: when a service platform runs, receiving service configuration information submitted by a client on the service platform; generating metadata according to the service configuration information; changing a data table structure of a database in the service platform according to the metadata; generating a bytecode which is matched with a data table structure of a changed database through a dynamic proxy technology according to the service configuration information and a preset service generation template; and loading and running the bytecode generation service, and controlling a service platform of the client to display the service.
When a service platform runs, receiving service configuration information submitted by a client on the service platform, and generating metadata according to the service configuration information; changing a data table structure of a database in the service platform according to the metadata; generating a bytecode which is matched with a data table structure of a changed database through a dynamic proxy technology according to the service configuration information and a preset service generation template, loading and running the bytecode generation service, and controlling a service platform at the client to display the service, so that the data table structure of the database can be changed according to the service configuration information provided by the client without restarting the service platform, and then the corresponding service is generated according to the preset service generation template, thereby not affecting the normal operation of the service platform and improving the user experience.
In practical use, the service platform inevitably needs to be upgraded or migrated, that is, the service platform inevitably needs to be restarted, in order to prevent the loss of the dynamically generated service, and meanwhile, in a case that the service platform is a cluster service, in order to enable other servers to also share the service, in an exemplary embodiment of the present application, theprocessor 301 may be configured to invoke a method of dynamically configuring a service stored in thememory 302, and further specifically perform the following operations: saving the bytecode to a database; and after the service platform is restarted, loading the bytecode from the database to generate service, and controlling the service platform at the client to display the service. By saving the bytecode to the database, persistence of the newly added or modified service data can be realized.
In practical use, the service platform inevitably needs to be upgraded or migrated, that is, the service platform inevitably needs to be restarted, in order to prevent the loss of the dynamically generated service, and meanwhile, in a case that the service platform is a cluster service, in order to enable other servers to also share the service, in another exemplary embodiment of the present application, theprocessor 301 may be configured to invoke a method of dynamically configuring a service stored in thememory 302, and further specifically perform the following operations: saving the metadata to a database; after the service platform is restarted, loading the metadata from the database; changing a data table structure of a database in the service platform according to the metadata; generating a bytecode which is matched with a data table structure of a changed database through a dynamic proxy technology according to the service configuration information and a preset service generation template; and loading and running the bytecode generation service, and controlling a service platform of the client to display the service. By saving the metadata to the database, persistence of the service data can be achieved, and the storage space of the database can be reduced by saving the metadata compared to a manner of saving the bytecode.
In an exemplary embodiment, when the method for calling the dynamic configuration service stored in thememory 302 is executed to load and run the bytecode generation service, theprocessor 301 specifically executes: and loading the bytecode to a virtual machine, and operating the bytecode generation service. In another exemplary embodiment, when the method for calling the dynamic configuration service stored in thememory 302 is executed to load and run the bytecode generation service, theprocessor 301 specifically executes: saving the byte codes as binary files, and saving the binary files of the byte codes to a disk; and loading the binary file of the bytecode from the disk, operating the binary file generation service of the bytecode, and saving the bytecode as the binary file and storing the binary file into the disk, so that the class loader can directly load the binary file of the bytecode from the disk and can change and rewrite the binary file.
Example 4
The present application further provides a computer-readable storage medium, on which a computer program is stored, where the instructions are suitable for being loaded by a processor and executing the method steps of the foregoing illustrated embodiments, and specific execution processes may refer to specific descriptions shown in embodiment 1, which are not described herein again. The device where the storage medium is located can be an electronic device such as a personal computer, a notebook computer, a smart phone and a tablet computer.
For the apparatus embodiment, since it basically corresponds to the method embodiment, reference may be made to the partial description of the method embodiment for relevant points. The above-described device embodiments are merely illustrative, wherein the components described as separate parts may or may not be physically separate, and the parts displayed as units may or may not be physical units, may be located in one place, or may be distributed on a plurality of network units. Some or all of the modules can be selected according to actual needs to achieve the purpose of the scheme of the application. One of ordinary skill in the art can understand and implement it without inventive effort.
As will be appreciated by one skilled in the art, embodiments of the present application may be provided as a method, system, or computer program product. Accordingly, the present application may take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment combining software and hardware aspects. Furthermore, the present application may take the form of a computer program product embodied on one or more computer-usable storage media (including, but not limited to, disk storage, CD-ROM, optical storage, and the like) having computer-usable program code embodied therein.
The present application is described with reference to flowchart illustrations and/or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the application. It will be understood that each flow and/or block of the flow diagrams and/or block diagrams, and combinations of flows and/or blocks in the flow diagrams and/or block diagrams, can be implemented by computer program instructions. These computer program instructions may be provided to a processor of a general purpose computer, special purpose computer, embedded processor, or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions specified in the flowchart block or blocks and/or flowchart block or blocks. These computer program instructions may also be stored in a computer-readable memory that can direct a computer or other programmable data processing apparatus to function in a particular manner, such that the instructions stored in the computer-readable memory produce an article of manufacture including instruction means which implement the function specified in the flowchart flow or flows and/or block diagram block or blocks.
These computer program instructions may also be loaded onto a computer or other programmable data processing apparatus to cause a series of operational steps to be performed on the computer or other programmable apparatus to produce a computer implemented process such that the instructions which execute on the computer or other programmable apparatus provide steps for implementing the functions specified in the flowchart flow or flows and/or block diagram block or blocks.
In a typical configuration, a computing device includes one or more processors (CPUs), input/output interfaces, network interfaces, and memory.
The memory may include forms of volatile memory in a computer readable medium, Random Access Memory (RAM) and/or non-volatile memory, such as Read Only Memory (ROM) or flash memory (flash RAM). The memory is an example of a computer-readable medium.
Computer-readable media, including both non-transitory and non-transitory, removable and non-removable media, may implement information storage by any method or technology. The information may be computer readable instructions, data structures, modules of a program, or other data. Examples of computer storage media include, but are not limited to, phase change memory (PRAM), Static Random Access Memory (SRAM), Dynamic Random Access Memory (DRAM), other types of Random Access Memory (RAM), Read Only Memory (ROM), Electrically Erasable Programmable Read Only Memory (EEPROM), flash memory or other memory technology, compact disc read only memory (CD-ROM), Digital Versatile Discs (DVD) or other optical storage, magnetic cassettes, magnetic tape magnetic disk storage or other magnetic storage devices, or any other non-transmission medium that can be used to store information that can be accessed by a computing device. As defined herein, a computer readable medium does not include a transitory computer readable medium, such as a modulated data signal and a carrier wave
It should also be noted that the terms "comprises," "comprising," or any other variation thereof, are intended to cover a non-exclusive inclusion, such that a process, method, article, or apparatus that comprises a list of elements does not include only those elements but may include other elements not expressly listed or inherent to such process, method, article, or apparatus. Without further limitation, an element defined by the phrase "comprising an … …" does not exclude the presence of other identical elements in the process, method, article, or apparatus that comprises the element.
The above are merely examples of the present application and are not intended to limit the present application. Various modifications and changes may occur to those skilled in the art. Any modification, equivalent replacement, improvement, etc. made within the spirit and principle of the present application should be included in the scope of the claims of the present application.