CN106844062B - 一种在C++与Python模块间实现实时双向协助的通信方法 - Google Patents
一种在C++与Python模块间实现实时双向协助的通信方法 Download PDFInfo
- Publication number
- CN106844062B CN106844062B CN201611202438.3A CN201611202438A CN106844062B CN 106844062 B CN106844062 B CN 106844062B CN 201611202438 A CN201611202438 A CN 201611202438A CN 106844062 B CN106844062 B CN 106844062B
- Authority
- CN
- China
- Prior art keywords
- module
- python
- socket
- server
- service
- 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.)
- Expired - Fee Related
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种在C++与Python模块间实现实时双向协助的通信方法,该方法通过利用socket实现了通信的实时性,将C++模块作为服务端,Python模块作为客户端,从而实现了通信的双向性,并且客户端可以创建多个socket,使得Python模块与C++模块的交互更加灵活;同时,利用多线程技术实现了通信的协助性,Python模块的主线程用来接收C++模块的命令请求,Python模块的子线程用来处理相应的命令请求,而C++模块接收到这些命令请求后,根据预定义的命令处理表做出相应的处理。本发明的方法实现了C++模块和Python模块之间的相互的灵活调用,避免了使用SWIG来实现Python模块调用C++模块所带来的额外工作,可以大大提高程序的开发效率,适用于程序开发、测试等领域。
Description
技术领域
本发明属于计算机应用程序转换研究领域,特别涉及一种在C++与Python模块间实现实时双向协助的通信方法。
背景技术
目前,由于C++支持面向对象机制、泛型编程机制、异常处理、运算符重载,具有成熟可靠高效的标准模板库(STL),并且开发的程序执行效率高,所以C++被广泛地应用于计算机应用程序的开发。另外,Python是一种面向对象、解释型的计算机程序设计语言,它具有语法简单、跨平台、公用库多等特点,因此Python也得到了广泛的使用。但是,C++和Python均存在一定的缺点,例如C++语言本身复杂,学习周期比较长,公用库没有Python的公用库多,而Python是一门解释性语言,执行效率没有C++开发的程序高。通过Python的公用库,可灵活的获得大量的数据信息;将信息传递给C++程序,能具有更高的数据处理效率。
就目前的技术而言,C++能够单方面地调用Python功能模块,但是Python却不能单方面、直接地调用C++功能模块,Python可以通过间接的方法调用C++模块,但是这种间接调用是需要利用SWIG或者boost将C++功能模块封装为可以被Python调用的功能模块,这就增加了额外的工作量,不利于应用程序的开发。
因此,如果提供一种能够在C++功能模块和Python功能模块之间进行实时双向协助的通信方法,将大大提高程序开发的周期,具有重要的研究意义。
发明内容
本发明的目的在于克服现有技术的缺点与不足,提供一种在C++与Python模块间实现实时双向协助的通信方法,该方法能够将C++的高效执行效率和Python的高效开发效率结合起来,大大地提高程序的开发效率,具有实时性、双向性、协助性和灵活性的优点。
本发明的目的通过以下的技术方案实现:一种在C++与Python模块间实现实时双向协助的通信方法,包括步骤:
(1)初始化阶段:将C++模块设定为服务端,Python模块设定为客户端,在C++模块内创建若干个socket实例;在Python模块内创建若干个socket实例,其中一个socket实例位于主线程,其中若干个socket实例位于子线程,C++模块和Python模块之间的通信通过socket实现,同时在服务端预定义一对应Python模块反馈信息的命令处理表;
(2)在Python模块里面,位于主线程的socket实例实时接收C++模块的命令请求,并在接收到命令请求后唤醒相应的子线程,位于子线程的socket实例对命令请求做出处理;如果处理过程中需要做出信息反馈或者调用C++内某功能模块,则通过socket实例发送反馈信息到C++模块,否则子线程继续等待下次被唤醒;
(3)C++模块接收到上述反馈信息后,根据命令处理表做出响应;如果在做出响应过程中需要做出信息反馈或调用Python内某功能模块,则返回重复执行步骤(2),否则处理结束,结束二者之间的通信;
(4)利用守护进程对服务端以及客户端进行状态监控,分别注册两个服务处理函数,用以对服务端和客户端的状态进行监控以及处理。
本发明的方法实现了C++模块和Python模块之间的相互的灵活调用,避免了使用SWIG来实现Python模块调用C++模块所带来的额外工作。
优选的,所述Python模块内创建有两个socket实例,一个socket实例位于主线程,用于接收C++模块的命令请求,另一个socket用于向C++模块做出信息反馈,其可嵌入到主线程外的任意需要反馈信息的函数里面。
更进一步的,对于Python模块,当位于主线程的socket实例还没有接收到命令请求时,该socket处于等待状态,子线程也处于等待状态,子线程的等待利用threading模块的Condition类来实现。
优选的,所述Python模块中socket实例发送或者接收的命令请求都是按照预定义格式的字符串,对于Python模块的socket接收的命令的格式是:“类名;函数名”或者“类名;函数名;字符串实参”。
更进一步的,在Python模块里面,子线程通过调用getattr()函数来进行命令处理,对于命令格式为“类名;函数名”的命令,其调用方式是getattr(object,name)(),对于命令格式为“类名;函数名;字符串实参”的命令,其调用方式是getattr(object,name)(param),其中object是类的实例,name是对应类的实例的成员函数,param是调用函数所需要的参数。
更进一步的,所述类的实例object是预先添加到字典类型里面的,并且该字典是一个全局类型的字典,其键-值的类型是:类名的字符串-对应类的实例。
更进一步的,Python模块的socket接收的命令利用了Queue模块里面的Queue类来装载的。
优选的,所述C++模块中socket实例发送或者接收的命令请求都是按照预定义格式的字符串,对于C++模块的socket接收的命令的格式是:“操作标识符;”或者“操作标识符;字符串实参”。
优选的,所述预定义的对应Python模块反馈信息的命令处理表相当于switch-case的条件分支处理模块,不同的条件分支对应着预定义的不同的处理函数段,根据命令的不同而选择不同的处理函数段。
优选的,所述的守护进程是利用服务以及服务控制管理器来实现,处理步骤如下:
(4-1)将服务端和客户端创建为服务,将这两个服务与服务控制管理器关联,服务控制管理器对这两个服务的状态进行实时监控;
(4-2)分别设置服务端和客户端的服务处理函数;
(4-3)当服务控制管理器发现服务的状态发生改变的时候,会把对应的服务状态传输给对应的服务,并触发相应的服务处理函数。
守护进程是为了解决发现问题和异常处理问题的进程,分别的处理过程是:
对于发现问题的进程,当客户端请求开启服务端,在客户端中设置相应的服务状态,服务控制管理器检测到状态发生了改变,就触发服务端的服务处理函数,从而开启服务端;
对于异常处理问题的进程,服务控制管理器进行如下处理:
a、自定义相关的服务状态值,这些值是一些异常状态值;
b、对于服务端有可能发生异常的地方以及相关的异常处理块用try-catch括起来;
c、当发生异常的时候,会触发catch内部的代码,在catch内部代码中,设置上述的异常状态值;
d、服务控制管理器检测到这些异常状态值,会触发服务端的服务处理函数,在这个函数内部做相应的异常处理。
本发明与现有技术相比,具有如下优点和有益效果:
1、本发明通过利用socket实现了通信的实时性,将C++模块作为服务端,Python模块作为客户端,能够在C++功能模块和Python功能模块之间建立实时的通信机制,并且这种通信是双向的,C++模块能够向Python模块传递信息,同时Python模块也可以向C++模块传递信息,能够将C++的高效执行效率和Python的高效开发效率结合起来,大大地提高了程序的开发效率。
2、本发明能够在客户端多创建几个socket,以满足不同的信息反馈的需求,使得Python模块与C++模块的交互更加灵活。
3、本发明利用多线程技术实现了通信的协助性,Python模块的主线程用来接收C++模块的命令请求,Python模块的子线程用来处理相应的命令请求,而C++模块接收到这些命令请求后,根据预定义的命令处理表做出相应的处理,能够使得程序更加稳定
4、本发明的方法实现了C++模块和Python模块之间的相互的灵活调用,避免了使用SWIG来实现Python模块调用C++模块所带来的额外工作。
5、本发明通过利用守护进程对服务端和客户端的状态进行监控,解决了发现问题以及异常处理问题,提高了模块之间的可靠性。
附图说明
图1是本发明方法的运作流程图。
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
实施例1
本实施例一种在C++与Python模块间实现实时双向协助的通信方法中,将C++模块设定为服务端,Python模块设定为客户端,二者内部均创建有socket实例,之间的通信通过socket实现,二者之间的状态监控是通过守护进程实现的,下面对服务端、客户端以及守护进程的工作流程分别进行具体说明。
服务端:
即C++模块,只创建一个socket,而且命令的接收和发送都位于主线程,命令的处理也位于主线程中,服务端的socket创建以及相关处理步骤如下:
1、创建一个socket实例,绑定端口号,绑定处理函数function1,设置处理标记为接入标记,也就是当Python模块请求接入的时候,处理函数function1将会调用;
2、当Python模块请求接入,步骤1的处理函数将被调用,在该处理函数里面,接受Python模块的请求接入,并且绑定另一个处理函数function2,设置处理标记为输入标记和关闭标记,也就是当Python模块向C++模块发送输入命令或者请求关闭连接的时候,处理函数function2将会被调用;当Python模块没有请求接入的时候,处理函数function2等待Python模块的命令请求;
3、当Python模块请求接入的时候,步骤2的处理函数function2将会被调用,在处理函数function2内部预先定义了一个命令处理表,该命令处理表类似于条件分支的处理结构,判定函数根据请求命令的不同而做出不同的条件分支的选择,不同的条件分支对应着预定义的不同的处理函数段;
4、在步骤3里面的不同条件分支处理函数段里面,根据不同的需求,可以利用socket向Python模块发送信息反馈。
客户端:
即Python模块,内部创建了两个socket,一个socket位于主线程,用于接收C++模块发送的命令请求,另一个socket用于向C++模块反馈信息。对于位于主线程的socket以及子线程对命令的处理,其处理步骤如下:
1、主线程的socket位于一个处于无限循环的while循环中,并且调用socket的recv()函数,由于recv()函数是阻塞型的函数,也就是当recv()函数还没有接收到命令请求的时候,它会一直等待;
2、当主线程的socket接收到BREAK命令的时候,唤醒并退出子线程,同时也退出主线程,并关闭两个socket;
3、当主线程的socket接收到非BREAK命令的时候,将命令放入到类型为Queue的命令队列里面,并且唤醒子线程,让子线程从命令队列里面取出一个命令,并对这个命令进行处理;
4、子线程利用getattr()函数对命令的进行处理,其处理步骤如下:
1)以英文模式的分号“;”为分界线对命令进行分开;
2)判断被分开后命令的个数,如果命令个数为2个,则以getattr(object,name)()的调用形式处理该命令;如果命令的个数为3个,则以getattr(object,name)(param)的调用形式处理该命令,其中object是类的实例,也是被分开的命令的第一个命令,name是对应类的实例的成员函数,也是被分开的命令的第二个命令,param是调用函数所需要的参数,也是被分开的命令的第三个命令;
3)子线程在处理命令的时候,根据是否需要对C++模块进行反馈,可以利用另一个socket发送命令;
4)当子线程处理完命令后,继续等待下一条命令。
为了提高模块之间的稳定性,在客户端接收服务端发送过来的命令之前,设置一个传输监控功能,其实现原理如下:
1、在服务端与客户端之间设置一个共享状态变量;
2、在服务端准备向客户端发送命令之前,改变上述的共享状态变量;
3、在客户端中时刻检测共享状态变量,当发现共享状态变量被改变之后,等待一段时间,等待结束后,检测命令队列里面是否存在命令,如果不存命令,则要求服务端重新发送命令。
守护进程:
守护进程是为了解决发现问题和异常处理问题的进程,在Windows上是利用服务以及服务控制管理器(Service Control Manager)来实现,其处理步骤如下:
1、将服务端和客户端创建为服务,将这两个服务与服务控制管理器关联,服务控制管理器对这两个服务的状态进行实时监控;
2、分别设置服务端和客户端的服务处理函数;
3、当服务控制管理器发现服务的状态发生改变的时候,会把对应的服务状态传输给对应的服务,并触发相应的服务处理函数。
对于发现问题,当客户端请求开启服务端,在客户端中设置相应的服务状态,服务控制管理器检测到状态发生了改变,就会触发服务端的服务处理函数,从而开启服务端。
对于异常处理问题,服务控制管理器仍然可以触发服务处理函数,其处理步骤如下:
1、自定义相关的服务状态值,这些值是一些异常状态值;
2、对于服务端有可能发生异常的地方以及相关的异常处理块用try-catch括起来;
3、当发生异常的时候,会触发catch内部的代码,在catch内部代码中,设置上述的异常状态值;
4、服务控制管理器检测到这些异常状态值,会触发服务端的服务处理函数,在这个函数内部做相应的异常处理。
本实施例方法利用socket实现了通信的实时性,实现了C++模块和Python模块之间的相互的灵活调用,避免了使用SWIG来实现Python模块调用C++模块所带来的额外工作,在程序开发过程中,由于兼具了C++的高效执行效率和Python的高效开发效率,因此开发效率更高,可应用于软件开发设备、测试设备等场合。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
Claims (10)
1.一种在C++与Python模块间实现实时双向协助的通信方法,其特征在于,包括步骤:
(1)初始化阶段:将C++模块设定为服务端,Python模块设定为客户端,在C++模块内创建若干个socket实例;在Python模块内创建若干个socket实例,其中一个socket实例位于主线程,其中若干个socket实例位于子线程,C++模块和Python模块之间的通信通过socket实现,同时在服务端预定义一对应Python模块反馈信息的命令处理表;
(2)在Python模块里面,位于主线程的socket实例实时接收C++模块的命令请求,并在接收到命令请求后唤醒相应的子线程,位于子线程的socket实例对命令请求做出处理;如果处理过程中需要做出信息反馈或者调用C++内某功能模块,则通过socket实例发送反馈信息到C++模块,否则子线程继续等待下次被唤醒;
(3)C++模块接收到上述反馈信息后,根据命令处理表做出响应;如果在做出响应过程中需要做出信息反馈或调用Python内某功能模块,则返回重复执行步骤(2),否则处理结束,结束二者之间的通信;
(4)利用守护进程对服务端以及客户端进行状态监控,分别注册两个服务处理函数,用以对服务端和客户端的状态进行监控以及处理。
2.根据权利要求1所述的通信方法,其特征在于,所述Python模块内创建有两个socket实例,一个socket实例位于主线程,用于接收C++模块的命令请求,另一个socket用于向C++模块做出信息反馈,其可嵌入到主线程外的任意需要反馈信息的函数里面。
3.根据权利要求2所述的通信方法,其特征在于,对于Python模块,当位于主线程的socket实例还没有接收到命令请求时,该socket处于等待状态,子线程也处于等待状态,子线程的等待利用threading模块的Condition类来实现。
4.根据权利要求3所述的通信方法,其特征在于,所述Python模块中socket实例发送或者接收的命令请求都是按照预定义格式的字符串,对于Python模块的socket接收的命令的格式是:“类名;函数名”或者“类名;函数名;字符串实参”。
5.根据权利要求4所述的通信方法,其特征在于,在Python模块里面,子线程通过调用getattr()函数来进行命令处理,对于命令格式为“类名;函数名”的命令,其调用方式是getattr(object,name)(),对于命令格式为“类名;函数名;字符串实参”的命令,其调用方式是getattr(object,name)(param),其中object是类的实例,name是对应类的实例的成员函数,param是调用函数所需要的参数。
6.根据权利要求5所述的通信方法,其特征在于,所述类的实例object是预先添加到字典类型里面的,并且该字典是一个全局类型的字典,其键-值的类型是:类名的字符串-对应类的实例。
7.根据权利要求2所述的通信方法,其特征在于,Python模块的socket接收的命令利用了Queue模块里面的Queue类来装载的。
8.根据权利要求1所述的通信方法,其特征在于,C++模块中socket实例发送或者接收的命令请求都是按照预定义格式的字符串,对于C++模块的socket接收的命令的格式是:“操作标识符;”或者“操作标识符;字符串实参”。
9.根据权利要求1所述的通信方法,其特征在于,所述预定义的对应Python模块反馈信息的命令处理表相当于switch-case的条件分支处理模块,不同的条件分支对应着预定义的不同的处理函数段,根据命令的不同而选择不同的处理函数段。
10.根据权利要求1所述的通信方法,其特征在于,所述的守护进程是利用服务以及服务控制管理器来实现,处理步骤如下:
(4-1)将服务端和客户端创建为服务,将这两个服务与服务控制管理器关联,服务控制管理器对这两个服务的状态进行实时监控;
(4-2)分别设置服务端和客户端的服务处理函数;
(4-3)当服务控制管理器发现服务的状态发生改变的时候,会把对应的服务状态传输给对应的服务,并触发相应的服务处理函数;
对于发现问题的进程,当客户端请求开启服务端,在客户端中设置相应的服务状态,服务控制管理器检测到状态发生了改变,就触发服务端的服务处理函数,从而开启服务端;
对于异常处理问题的进程,服务控制管理器进行如下处理:
a、自定义相关的服务状态值,这些值是一些异常状态值;
b、对于服务端有可能发生异常的地方以及相关的异常处理块用try-catch括起来;
c、当发生异常的时候,会触发catch内部的代码,在catch内部代码中,设置上述的异常状态值;
d、服务控制管理器检测到这些异常状态值,会触发服务端的服务处理函数,在这个函数内部做相应的异常处理。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611202438.3A CN106844062B (zh) | 2016-12-23 | 2016-12-23 | 一种在C++与Python模块间实现实时双向协助的通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611202438.3A CN106844062B (zh) | 2016-12-23 | 2016-12-23 | 一种在C++与Python模块间实现实时双向协助的通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106844062A CN106844062A (zh) | 2017-06-13 |
CN106844062B true CN106844062B (zh) | 2019-06-18 |
Family
ID=59135671
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611202438.3A Expired - Fee Related CN106844062B (zh) | 2016-12-23 | 2016-12-23 | 一种在C++与Python模块间实现实时双向协助的通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106844062B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107729073A (zh) * | 2017-09-22 | 2018-02-23 | 郑州云海信息技术有限公司 | 一种基于Python多进程库创建systemd服务的方法 |
CN109379337B (zh) * | 2018-09-18 | 2021-01-26 | 四川长虹电器股份有限公司 | 一种安卓平台下应用进程的保活方法 |
CN113672402B (zh) * | 2021-07-22 | 2024-06-04 | 杭州未名信科科技有限公司 | 一种基于Py4j服务的在线数据处理方法、装置、存储介质及终端 |
CN114301891B (zh) * | 2021-12-27 | 2023-10-13 | 北京睿芯高通量科技有限公司 | 一种基于Python的Web服务和Socket客户端交互方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN201773507U (zh) * | 2010-04-30 | 2011-03-23 | 大连海事大学 | 一种基于c/c++及matlab软件的交互式教学实验系统 |
US8037202B2 (en) * | 2002-10-31 | 2011-10-11 | Oracle America, Inc. | Presence detection using mobile agents in peer-to-peer networks |
CN103312790A (zh) * | 2013-05-20 | 2013-09-18 | 东莞中融电子科技有限公司 | B/s模式下的客户机数据交互系统及方法 |
CN103595820A (zh) * | 2013-11-28 | 2014-02-19 | 深圳英飞拓科技股份有限公司 | 嵌入式前端设备后台控制调试方法及装置 |
CN105573903A (zh) * | 2014-10-11 | 2016-05-11 | 中兴通讯股份有限公司 | 一种自动化测试方法、装置、系统及访问代理 |
CN106095601A (zh) * | 2016-06-16 | 2016-11-09 | 广东工业大学 | 一种多进程并发解算差分服务器系统及其实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9207982B2 (en) * | 2012-10-11 | 2015-12-08 | American Express Travel Related Services Company, Inc. | Method and system for managing processing resources |
-
2016
- 2016-12-23 CN CN201611202438.3A patent/CN106844062B/zh not_active Expired - Fee Related
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8037202B2 (en) * | 2002-10-31 | 2011-10-11 | Oracle America, Inc. | Presence detection using mobile agents in peer-to-peer networks |
CN201773507U (zh) * | 2010-04-30 | 2011-03-23 | 大连海事大学 | 一种基于c/c++及matlab软件的交互式教学实验系统 |
CN103312790A (zh) * | 2013-05-20 | 2013-09-18 | 东莞中融电子科技有限公司 | B/s模式下的客户机数据交互系统及方法 |
CN103595820A (zh) * | 2013-11-28 | 2014-02-19 | 深圳英飞拓科技股份有限公司 | 嵌入式前端设备后台控制调试方法及装置 |
CN105573903A (zh) * | 2014-10-11 | 2016-05-11 | 中兴通讯股份有限公司 | 一种自动化测试方法、装置、系统及访问代理 |
CN106095601A (zh) * | 2016-06-16 | 2016-11-09 | 广东工业大学 | 一种多进程并发解算差分服务器系统及其实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106844062A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106844062B (zh) | 一种在C++与Python模块间实现实时双向协助的通信方法 | |
CN107210931B (zh) | 控制基础架构 | |
US7665064B2 (en) | Systems and methods for web service function, definition, implementation, and/or execution | |
US20110231592A1 (en) | Mashup Infrastructure with Learning Mechanism | |
CN107943577A (zh) | 用于调度任务的方法和装置 | |
CN109240688A (zh) | 界面开发方法、电子装置及可读存储介质 | |
CN106648816A (zh) | 多线程处理系统及方法 | |
CN105610819B (zh) | 提供服务器信息的查询服务的方法和装置 | |
CN103257852B (zh) | 一种分布式应用系统的开发环境搭建的方法和装置 | |
CN107622006B (zh) | 移动装置测试系统和用于测试移动装置的方法 | |
CN108984549A (zh) | 一种基于动态配置数据库的分库分表数据抽取方法和装置 | |
WO2018000878A1 (zh) | 分布式任务处理方法和装置 | |
CN110147397A (zh) | 系统对接方法、装置、管理系统及终端设备、存储介质 | |
CN109905263A (zh) | 一种自动化运维部署系统 | |
CN108920575A (zh) | 基于动态感知的日志数据分析方法、装置及可读存储介质 | |
CN104660435A (zh) | 面向智能管道的事务型网管引擎及其网管事务处理方法 | |
CN109995758A (zh) | 数据并行处理方法及装置 | |
WO2024169392A1 (zh) | 开发方法、装置、电子设备和存储介质 | |
CN110471716A (zh) | 在OA系统中非嵌入式使用Office的方法 | |
CN113157523B (zh) | 服务监控方法、装置、计算机设备及存储介质 | |
US20150227381A1 (en) | Transmitting encapsulated snmp commands to virtual machines | |
CN104598250B (zh) | 一种系统管理架构及其实现管理的方法 | |
CN110297748A (zh) | 一种定位调用出错的方法、装置和计算机可读存储介质 | |
CN111797297B (zh) | 页面数据处理方法、装置、计算机设备及存储介质 | |
CN108881213A (zh) | 基于内外网安全交互的jms实时消息服务系统 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20190618 Termination date: 20201223 |