java进程间通信的几种方式?对比总结

Java进程之间通信方式&线程之间通信的方式 进程之间通信方式 (1) 管道(PIPE) (2) 命名管道(FIFO) (3) 信号量(Semphore) (4) 消息队列(MessageQueue) (5) 共享内存(SharedMemory) (6) Socket Java如何支持进程间通信。我们把Java进程理解为JVM进程。很明显,传统的这些大部分技术是无法被我们的应用程序利用了(这些进程间通信都... 阅读详情
AI摘要

本文深入解析了进程间通信的各种方式,包括管道、信号、消息队列、共享内存、内存映射、信号量、套接口等常见机制,以及RPC、WebService、RMI、JMS等高级通信方式。详细阐述了每种通信方式的特点、应用场景和关键步骤。

目录

1、汇总:常见的进程间通信方式

2、其他通信方式

2、1 RPC

2、2 Web Service

2、3 RMI(Remote Method Invocation,RMI,远程方法调用)

2、4 JMS


Alice ---- 介质 ----- Bob

通信:端到端对象通过介质进行信息的交互。

 


1、汇总:常见的进程间通信方式

 

  1. 管道(Pipe):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。(半双工:数据传输指数据可以在一个信号载体的两个方向上传输,但是不能同时传输。)
  2. 有名管道(named pipe): 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令 mkfifo 或系统调用 mkfifo 来创建。
  3. 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生。
  4. 消息(Message)队列:消息队列是消息的链接表。有足够权限的进程可以向队列中添加消息,被赋予读权限的进程则可以读走队列中的消息。消息队列克服了信号承载信息量少,管道只能承载无格式字节流以及缓冲区大小受限等缺点。
  5. 共享内存:使得多个进程可以访问同一块内存空间,是最快的可用IPC形式。是针对其他通信机制运行效率较低而设计的。往往与其它通信机制,如信号量结合使用,来达到进程间的同步及互斥。
  6. 内存映射(mapped memory):内存映射允许任何多个进程间通信,每一个使用该机制的进程通过把一个共享的文件映射到自己的进程地址空间来实现它。
  7. 信号量(semaphore):信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。
  8. 套接口(Socket):更为一般的进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。可用于不同机器之间的进程间通信。

 


2、其他通信方式

其他通信方式有:

  • RPC(Remote Procedure Call,RPC,远程过程调用);
  • Webservice;
  • RMI(Remote Method Invocation,RMI,远程方法调用);
  • JMS等

 

2、1 RPC

概念:远程过程调用(Remote Procedure Call,缩写为RPC),是一种用于构建基于C/S(客户端/服务器)的分布式应用程序技术。调用者与被调用者可能在同一台服务器上,也可能在由网络连接的不同服务器上,对于他们来说,网络通信是透明的,就是像调用本地方法一样调用远程方法。

简单来说:RPC(remote procedure call)是指远程过程调用,比如两台服务器A和B,A服务器上部署一个应用,B服务器上部署一个应用,A服务器上的应用想调用B服务器上的应用提供的接口,由于不在一个内存空间,不能直接调用,所以需要通过网络来表达调用的语义和传达调用的数据。RPC就是用来传输这些远程调用的语义和数据的框架。请注意,RPC只是一种编程模型而非一种规范或协议,并没有规定你具体要怎样实现,你甚至都可以在你的RPC框架里面使用RMI来实现数据的传输!!!

 

 

 

关键步骤:

  • 首先,要解决通讯的问题。主要是通过客户端和服务器端之间建立TCP连接,远程过程调用的所有交换的数据都在这个连接里传输。连接可以是按需连接,调用结束后就断掉,也可以是长连接,多个远程过程调用共享一个连接。
  • 第二,要解决寻址的问题。A服务器上的应用要调用B服务器上的应用,A服务器上的应用需要通过底层RPC框架得知:如何连接到B服务器(主机或IP地址)以及特定的端口,方法的名称等信息,这样才能完成调用。(如函数对应表)
  • 第三,发起调用需要将调用语义和数据进行序列化。A服务器上的应用发起远程调用时,方法的参数需要通过底层的网络协议如TCP传递到B服务器,由于网络协议是基于二进制的,内存中的参数需要序列化成二进制形式,然后再通过寻址和传输将序列化的二进制发送给B服务器。
  • 第四:B服务器收到请求后,需要进行反序列化。恢复为内存中的表达方式,然后找到对应的方法进行本地调用并返回,序列化返回值并发送给A服务器。
  • 第五:处理返回值。A服务器收到B服务器的返回值后,进行反序列化,恢复为内存中的表达方式,然后交给A服务器上的应用进行处理。

 

其他:

1、HTTP和RPC的区别

总的来说,RPC主要用于公司内部的服务调用,性能消耗低,传输效率高,服务治理方便;HTTP主要用于对外的异构环境,浏览器接口调用,APP接口调用,第三方接口调用等。

2、服务端如何确定客户端需要调用的函数?

利用函数对应表。在远程调用中,客户端和服务端分别维护一个【ID->函数】的对应表, ID在所有进程中都是唯一确定的。客户端在做远程过程调用时,附上这个ID,服务端通过查表,来确定客户端需要调用的函数,然后执行相应函数的代码。

3、实际应用

成熟RPC框架:

dubbo:阿里开源的一款高性能RPC框架,在国内应用广泛,期间停止维护过一段时间,如今又开始了更新,并且捐献给Apache基金会。

gRPC:Google开源,具有平台无关性,基于http/2协议,支持服务追踪、负载均衡、健康检查等功能;RPC 框架是基于 HTTP 协议实现的,底层使用到了 Netty 框架的支持。

Thrift:可伸缩的跨语言服务的RPC软件框架,最早由Facebook开发,2007年捐献给了Apache基金会管理,现在是Apache的顶级项目;

Finagle:Twitter基于Netty开发的支持容错的、协议无关的RPC框架,支撑了Twitter的核心服务。
 

 


2、2 Web Service

1、概念:WebService是一种跨编程语言和跨操作系统平台的远程调用技术。


2、基础:Web Service提供的服务是基于web容器的,底层使用http协议,类似一个远程的服务提供者。比如天气预报服务,对各地客户端提供天气预报,是一种请求应答的机制,是跨系统跨平台的。就是通过一个servlet,提供服务给其他应用请求。

3、传输:WebService采用HTTP协议传输数据,采用XML格式封装数据(即XML中说明调用远程服务对象的哪个方法,传递的参数是什么,以及服务对象的返回结果是什么)。XML是WebService平台中表示数据的格式。除了易于建立和易于分析外,XML主要的优点在于它既是平台无关的,又是厂商无关的。无关性是比技术优越性更重要的:软件厂商是不会选择一个由竞争对手所发明的技术的。但是XML虽然解决了数据表达问题,却留下了数据格式类型问题,XSD(XML Schema)就是专门解决这个问题的一套标准。它定义了一套标准的数据类型,并给出了一种语言来扩展这套数据类型。

4、WebSevices三种基本元素:

  • SOAP;
  • WSDL;
  • UDDI;

1)SOAP

SOAP 基于XML 和 HTTP ,其通过XML 来实现消息描述,然后再通过 HTTP 实现消息传输。

WebService通过HTTP协议发送请求和接收结果时,发送的请求内容和结果内容都采用XML格式封装,并增加了一些特定的HTTP消息头,以说明HTTP消息的内容格式,这些特定的HTTP消息头和XML内容格式就是SOAP协议。SOAP提供了标准RPC方法来调用Web Service。

SOAP协议 = HTTP协议 + XML数据格式

  • Soap 是XML Web Service 的通信协议。
  • SOAP 是一种规范,用来定义消息的XML 格式 。包含在一对SOAP 元素中的、结构正确的XML 段就是SOAP 消息。

 

2)WSDL(Web Services Description Language,对外的服务描述语言,就是广告)

好比我们去商店买东西,首先要知道商店里有什么东西可买,然后再来购买,商家的做法就是张贴广告海报。

WebService也一样,WebService客户端要调用一个WebService服务,首先要知道这个服务的地址在哪,以及这个服务里有什么方法可以调用,所以,WebService务器端首先要通过一个WSDL文件来说明自己家里有啥服务可以对外调用,服务是什么(服务中有哪些方法,方法接受的参数是什么,返回值是什么),服务的网络地址用哪个url地址表示,服务通过什么方式来调用。

WSDL(Web Services Description Language)就是这样一个基于XML的语言,用于描述Web Service及其函数、参数和返回值。它是WebService客户端和服务器端都能理解的标准格式。因为是基于XML的,所以WSDL既是机器可阅读的,又是人可阅读的,这将是一个很大的好处。一些最新的开发工具既能根据你的Web service生成WSDL文档(生成广告),又能导入WSDL文档(阅读广告),生成调用相应WebService的代理类代码。

WSDL文件保存在Web服务器上,通过一个url地址就可以访问到它。客户端要调用一个WebService服务之前,要知道该服务的WSDL文件的地址。WebService服务提供商可以通过两种方式来暴露它的WSDL文件地址:

  1. 注册到UDDI服务器,以便被人查找;
  2. 直接告诉给客户端调用者。

 

3)UDDI(介绍)

UDDI 目录条目是介绍所提供的业务和服务的XML 文件。UDDI 目录条目包括三个部分。

“白页”介绍提供服务的公司:名称、地址、联系方式等等;

“黄页”包括基于标准分类法的行业类别;

“绿页”详细介绍了访问服务的接口,以便用户能够编写应用程序以使用 Web 服务。

服务的定义是通过一个称为类型模型(或 tModel)的 UDDI文档来完成的。多数情况下,tModel包含一个WSDL 文件,用于说明访问 XMLWeb Service 的SOAP 接口,但是tModel非常灵活,可以说明几乎所有类型的服务。


2、3 RMI(Remote Method Invocation,RMI,远程方法调用)

Java RMI,一种用于实现远程过程调用(RPC)的Java API.

特点: 能直接传输序列化后的Java对象和分布式垃圾收集。它的实现依赖于Java虚拟机(JVM),因此它仅支持从一个JVM到另一个JVM的调用。甚至,它可以直接看成RPC的java版本。

总结起来,RMI的工作原理大致可以理解为:

1、服务器端提供服务,服务中要暴露可以调用的远程方法,以接口的形式表现。这样在客户端可以通过服务接口来调用远程方法,实现复杂的业务逻辑。在服务器端,首先要对接口中提供的方法实现,以便客户端调用能够完成一定的业务逻辑;

2、接着需要生成Skeleton,在Skeleton中真正地实现了对商业方法的调用,完成了客户请求的调用的过程,将获取到的调用方法的结果通过序列化机制返回给客户端,进行应答。

3、在客户端,通过Stub来接收服务器返回的数据(对象),即在这里进行了反序列化,也就是读取网络传输的字节流,进而进行重构。在Skeleton和Stub中,都对网络通信进行了处理,例如建立套接字,建立网络连接,为实际的业务需要做好准备。 

 


2、4 JMS


JMS是Java的消息服务,JMS的客户端之间可以通过JMS服务进行异步的消息传输。JMS支持两种消息模型:Point-to-Point(P2P)和Publish/Subscribe(Pub/Sub),即点对点和发布订阅模型。

Java中进程间通信(IPC)的7种主要方式及原理剖析 在Java开发中,进程间通信(Inter-Process Communication, IPC)是实现不同Java虚拟机(JVM)或本地进程间数据交换的关键技术。本文将介绍7种常见的IPC方式,结合时序图和代码示例,深入剖析其原理与适用场景。 阅读详情

相关推荐

Android进程间通信的四种方式实践指南

Android作为一款以Linux为基础的开源操作系统,拥有丰富的进程间通信(IPC)机制,使得不同的组件之间能够有效地交换数据和协同工作。在这一章中,我们将探讨Android IPC的多种实现方式,以及它们在应用开发中的实际运用。Intent在Android中是一种用于进程间通信的机制,它允许一个组件请求另一个组件(通常是Activity)执行操作。它作为一种消息传递机制,可以传递数据、调用特定的操作以及启动相应的服务。一个Intent可以分为两种类型:显示Intent和隐式Intent。

weixin_42511832的博客 1399

Java进程间的通信技术有哪些?

在Java中,进程间通信(Inter-Process Communication,简称 IPC)是不同进程之间交换数据和信息的技术。3.Socket:基于网络套接字的通信方式,可以实现在不同主机之间的进程通信。1.管道(Pipes):管道是一种半双工的通信方式,可以在两个进程之间传递数据。注意:在代码演示中,我使用了简单的字符串传递作为示例,实际应用中可以根据需求传递更复杂的数据结构。以上只是进程间通信的几种常见方式,还有其他更复杂的方式如远程过程调用(RPC)和共享内存等。

zy1992As的博客 1806

java 进程通信 实例(直接运行)

本人写了一个java进程通信的工具jar,方便大家简单的使用java进程通信。 开启守护进程,获取消息: package com.test; import org.msun.process.ProcessMonitor; import org.msun.process.ProcessMonitor.NewMsgListener; /** * 开启守护进程 */ public class StartService { public static void main(String[] args) { // 开启守护进程 ProcessMonitor.getProcessMonitorTypeSWING().lockMe(); ProcessMonitor.getProcessMonitorTypeSWING().addNewMsgListener(new NewMsgListener(){ @Override public void handler(String data) { System.out.println("收到消息:" + data); } }); // 另一端程序,通过ProcessMonitor.getProcessMonitorTypeWEB() 即可开启守护进程 } } 发送消息测试: package com.test; import org.msun.process.SendMsgUtil; /** * 发送消息 */ public class SendMsg { public static void main(String[] args) { SendMsgUtil.sendMsgToWeb("111"); } }

Java-进程 / 线程间通讯方式

本文主要介绍了Java中进程 / 线程间通讯方式共享内存、管道、消息队列、信号量、Socket以及示例,欢迎各位大佬给出指导意见。

向诸位大佬虚心学习 1889

不用买机械臂!用Python+ROS仿真实现RGB-D物体抓取全流程(Gazebo/MoveIt教程)

本文详细介绍了如何利用Python和ROS仿真环境(Gazebo/MoveIt)实现RGB-D物体抓取全流程,无需购买昂贵机械臂硬件。从环境搭建、机械臂模型导入、深度视觉系统配置到MoveIt运动规划,提供完整的实战指南,特别适合个人开发者和学生团队进行机械臂抓取算法验证与开发。

weixin_29061041的博客 340

HC32F460 FPU实战:从零开启硬件浮点加速

本文详细介绍了如何在HC32F460开发板上启用和优化FPU(浮点运算单元),以显著提升硬件浮点运算性能。从工程配置、关键代码修改到实战优化技巧,全面解析FPU加速的实现方法,并分享常见问题的解决方案,帮助开发者避免常见陷阱,充分发挥HC32F460的硬件潜力。

weixin_42620340的博客 348

java进程间通信的几种方式? 对比总结

管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的同步手段。 消息队列( message queu

soulofball的博客 793

PyTorch实战:5步搞定Res2Net图像分类模型(附完整代码)

本文详细介绍了如何使用PyTorch在5步内构建高性能Res2Net图像分类模型,包括环境配置、核心模块实现、完整网络架构搭建、训练流程优化及模型部署技巧。Res2Net通过多尺度特征融合机制显著提升图像分类性能,附完整代码帮助开发者快速实践。

java5的博客 1024

JAVA内存模型和多线程

先了解一下java内存模型 IBM:http://www.ibm.com/developerworks/cn/java/j-jtp03304/ http://www.ibm.com/developerworks/cn/java/j-jtp02244/ 百度文库: http://wenku.baidu.com/view/bc890df5f61fb7360b4c654b.html ...

moneyisfrist的专栏 132

ubuntu20.04开机黑屏卡在/dev/sda1:clean,***files,***blocks,解决心得记录

这个问题如果你百度,会发现目前有很多种解决方法。 有更新显卡驱动的,有卸载上一次安装软件的,还有各种奇奇怪怪的故障原因。 如果你是属于上述情况,那么按照百度和论坛的各种指引操作一般都能解决。 但我这里主要说一种特殊情况,就是我什么也没有操作,我什么也没干。就是正常使用系统关了机突然就报错了。 这也是自己亲自遇到的问题,做个小记录方便以后自己回顾。 上一次出现这种情况我重装系统了,这次用了两个月又出现了,重装成本太高,我接受不了,于是找到解决办法。 首先找个终端进入,进入终端的方法很多,用安装u盘

qq_41517017的博客 2万+

基于STM32的智能垃圾分类机器人

垃圾分类是城市管理的重要环节,传统人工分拣效率低、成本高。本文设计了一款基于STM32的智能垃圾分类机器人,通过视觉识别与机械臂协同作业,实现垃圾自动分类与投放,适用于社区、公共场所等场景,可显著提升垃圾分类效率。:STM32H743(480MHz Cortex-M7,支持AI加速)本系统实现了垃圾分拣的自动化,显著提升了分类效率。OV5640摄像头(500万像素,支持JPEG输出)支持4类垃圾识别(可回收/厨余/有害/其他)问题讨论,stm32的资料领取可以私信!超声波避障(探测距离0.1-4m)

stm32d1219的博客 1820

Android进程间通信的几种方式

定义多进程 Android应用中使用多进程只有一个办法(用NDK的fork来做除外),就是在AndroidManifest.xml中声明组件时,用android:process属性来指定。 不知定process属性,则默认运行在主进程中,主进程名字为包名。 android:process = package:remote,将运行在package:remote进程中,属于全局进程,其他具有相同...

augfun的博客 1万+

错误代码:11300001 数据集 [xxx] 配置错误“=”附近有语法错误(原理分析)

错误代码:11300001 数据集 [1_Workshift] 配置错误“=”附近有语法错误。

码农研究僧的博客 915

面试题:进程间通信方式,线程间通信方式

一、进程间通信(IPC,Inter-Process Communication)是指在不同进程间传播或交换信息 1. 无名管道 特点 半双工(数据流向仅有一个方向),具有固定的读端和写端 只能用于父进程或兄弟线程之间通信(具有血缘关系的线程之间) 一种特殊文件,可以用普通的read、write函数进行读写,但又不是普通文件,不属于任何其它文件系统,仅存在于内存之中 通信的数据是无格式的流并且大小受限 2. 命名管道(先进先出队列) 特点 不同于无名管道之处在于它提供一个与之关联的路径名,以F

燕然一勒的博客 5538

高质量文献综述原来这么写!借助Gemini 3 Pro+四步法,手把手教你写出有逻辑深度的综述

总结与展望先总结现状,说明前人已经做到什么地步了,再指出缺口,前人没解决什么问题、方法有什么局限等等,最后再在这个缺口的基础上,提出你的未来研究方向。当你有个复杂的研究题目,但没办法拆解出关键词,就可以让Gemini 3 Pro来辅助帮你拆解,并帮你写专业的检索式,若是找英文文献,还能帮你将中文关键词翻译成地道的专业术语。做文献笔记,可以建立文献笔记矩阵,可以用Excel建个表格,横向是文献,纵向是关键要素,包括作者/年份、研究问题/假设、理论框架/模型、研究方法/数据来源、核心结论、局限性/Gap。

智能AI让学术科研更容易 992

UE5接入在线直播视频源,如hls(m3u8)格式

UE5接入在线直播视频源

专注GIS开发 9501

理解几种常见的进程间通信方式

什么是进程间通信广义上讲,进程间通信(Inter-Process Communication, IPC)是指运行在不同进程(不论是否在同一台机器)中的若干线程间的数据交换。从上面的定义可以得出两点: 参与通信的进程即可以运行在同一台机器上,也可以运行在各自的设备环境中(Remote Procedure Call Protocol, RPC)。如果进程是跨机器运行的,则通常是由网络连接在一起。 实现方

pcsxk的专栏 6120

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Android 进程间通信的几种实现方式

一、概述        由于应用程序之间不能共享内存。在不同应用程序之间交互数据(跨进程通讯),在android SDK中提供了4种用于跨进程通讯的方式。这4种方式正好对应于android系统中4种应用程序组件:Activity、Content Provider、Broadcast和Service。其中Activity可以跨进程调用其他应用程序的Activity;Content Provid

zhuangyalei的专栏 3万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

微服务之间的相互调用的几种常见实现方式对比

微服务之间的相互调用的几种常见实现方式对比

水w的博客 8140

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Android 多进程、进程间通信(IPC)的几种方式

在一个应用中启动多个进程 例如:将自己封装的CommonWebViewActivity在一个单独的进程中启动 使用android:process <activity android:name=".activity.CommonWebViewActivity" android:process=":webview" android:screenOrientation="portrait" /> 需要特别说

张雨的博客 2956

进程和线程的几种通信方式

进程之间通信的几种方式和线程之间的通信方式,以及Java中创建多线程的几种方式

weixin_40701758的博客 7430

Android IPC的几种方式

IPC全称为Inter-Process Communication,含义为进程间通信,指的是两个进程之间进行数据交换的过程。 方式一:Bundle实现 用于android四大组件直接的进程间通信 应用一的Activity public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.o

万子的博客 5515

java进程间通信方式

http://bbs.youkuaiyun.com/topics/40407223 看到楼主提到进程间通信,又想起了以前使用C编程的时光。 :) 先看看传统的进程间通信的手段有什么,上面的各位都说了不少了,无外乎还是以下的这些手段: (1) 管道(PIPE) (2) 命名管道(FIFO) (3) 信号灯(Semphore) (4) 消息队列(MessageQueue) (5) 共享内存(

Torreson 3618

Linux 使用的进程间通信方式?思维导图 代码示例(java 架构)

Linux 提供了多种进程间通信(Inter-Process Communication, IPC)的方式,这些机制允许不同进程之间交换数据和同步操作。理解这些IPC方法对于开发高效、可靠的多进程应用程序至关重要。

qq_33240556的博客 1034

Android 进阶13:几种进程通信方式的对比总结

不花时间打基础,你将会花更多时间解决那些不必要的问题。 读完本文你将了解: RPC 是什么 IDL 是什么 IPC 是什么 Android 几种进程通信方式 如何选择这几种通信方式 ThanksRPC 是什么RPC 即 Remote Procedure Call (远程过程调用) 是一种计算机通讯协议,它为我们定义了计算机 C 中的程序如何调用另外一台计算机 S 的程序,让程序员不需要操心底层网络协

张拭心的博客 shixinzhang 4万+

进程间通信(IPC)的各种方式与比较

在Unix/Linux系统中通过msgget()、msgsnd()、msgrcv()等函数实现,Windows系统也有类似的消息队列机制。在Unix/Linux系统中通过shmget()、shmat()、shmdt()等函数实现,Windows系统也提供了类似的机制。进程间通信是操作系统和分布式系统中的重要概念,不同的IPC方式适用于不同的场景和需求。选择合适的IPC方式可以提高系统的效率和稳定性,从而更好地支持复杂的应用程序和系统架构设计。:信号量用于进程间的同步和互斥,可以控制对共享资源的访问。

微赚淘客系统开发者博客 788
上一篇: 每日算法 - 组合(数学公式 -------- c(n,k))
下一篇: Spring MVC 简介及工作流程
Longtermevolution
博客等级 码龄9年 113粉丝 249原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值