JSR 235: Service Data Objects

SDO是Java平台的一种数据编程架构和API,它统一了不同数据源类型的数据编程,提供了对通用应用程序模式的支持。SDO简化了对多种企业信息系统的数据访问,包括数据库、遗留应用程序、XML或Web服务数据源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        JSR 235 服务数据对象(SDO)。SDO是Java平台的一种数据编程架构和API,它统一了不同数据源类型的数据编程,提供了对通用应用程序模式的健壮支持,并使应用程序、工具和框架更容易查询、读取、更新和检查数据。

http://jcp.org/en/jsr/detail?id=235

这个规范最初是由BEA和IBM共同提出的,时间是在2003年12月份。SDO是OSOA 三个规范中的一个,也是提出比较早,发展的比较成熟的一个规范。那个时候OSOA的规范就在几个IT巨头内部进行协商。直到2005年11月,规范才正式启动。到了2006年7月,OSOA的合作商正式敲定为包括普元在内的18家IT厂商。

SDO 的目标

  SDO 的目标有很多,从某种程度上讲 SDO 看起来好像是 J2EE 的一把多功能“瑞士军刀”,因为它包含的特性可实现多种不同种类的功能,基本来讲,SDO 及其相关的技术设计有以下五大主要专题:

  简化数据访问:第一个目标是提供对多种企业信息系统 (EIS) 的统一的数据访问,包括数据库、遗留应用程序(使用 JCA)、XML 或者是 Web 服务数据源。通过使用 SDO 的一种独特而简单的模型,应用程序摆脱了使用多种 API 和框架进行数据访问的复杂工作。

  数据提取:使用 SDO 后,数据的表示是独立于其数据源的,它采用了一种叫做 Domain Store 的 J2EE 模式,这种级别的数据提取有很多优点,例如使数据操作变得更容易,实现了不同层之间的松耦合。

  数据操作:一旦检索到信息后,SDO 会提供一种统一的编程语言进行数据操作,简单的说,就是通过使用 API 及其接口,SDO 客户机可以读取数据和修改数据。SDO 为此提供了连接和断开连接的两种模型,下文中将对此做详尽的介绍。

  数据传输:SDO 有一部分概念是关于传输对象 (Transfer Object) 和传输对象组装程序 (Transfer Object Assembler) 模式的。数据封装到 SDO 对象中后,它就可以在 J2EE 层间高效地传输。

  设计模式的采用:SDO 的一个关键目标是鼓励大家采用公用的 J2EE 模式,这也是 SDO 体系结构以一些广为人知的模式为基础的原因,例如传输对象 (Transfer Object)、数据访问对象 (Data Access Object)、传输对象组装程序和 Domain Store等。如果使用了 SDO,应用程序就可以从这些经过了验证的设计策略中受益,从而可以推动分层技术和松耦合的发展。 

六月 10, 2025 9:27:11 上午 org.apache.karaf.main.Main$KarafLockCallback lockAcquired 信息: Lock acquired. Setting startlevel to 100 六月 10, 2025 9:27:11 上午 org.apache.felix.fileinstall.internal.Util$DefaultLogger log 信息: Updating configuration {org.ops4j.pax.web} from D:\kettle9.3_77552\kettle9.3\system\karaf\etc\org.ops4j.pax.web.cfg 六月 10, 2025 9:27:11 上午 org.apache.felix.fileinstall.internal.Util$DefaultLogger log 信息: Updating configuration {org.ops4j.pax.web} from D:\kettle9.3_77552\kettle9.3\system\karaf\etc-spoon\org.ops4j.pax.web.cfg 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.http.Http1FieldPreEncoder of service org.eclipse.jetty.http.HttpFieldPreEncoder in bundle org.eclipse.jetty.http 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.security.jaspi.JaspiAuthenticatorFactory of service org.eclipse.jetty.security.Authenticator$Factory in bundle org.eclipse.jetty.security.jaspi 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.websocket.common.extensions.identity.IdentityExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.websocket.common.extensions.fragment.FragmentExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.PerMessageDeflateExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.DeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.websocket.common.extensions.compress.XWebkitDeflateFrameExtension of service org.eclipse.jetty.websocket.api.extensions.Extension in bundle org.eclipse.jetty.websocket.common 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.websocket.jsr356.JettyClientContainerProvider of service javax.websocket.ContainerProvider in bundle org.eclipse.jetty.websocket.javax.websocket 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.websocket.jsr356.server.deploy.WebSocketServerContainerInitializer of service javax.servlet.ServletContainerInitializer in bundle org.eclipse.jetty.websocket.javax.websocket.server 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.websocket.jsr356.server.ContainerDefaultConfigurator of service javax.websocket.server.ServerEndpointConfig$Configurator in bundle org.eclipse.jetty.websocket.javax.websocket.server 六月 10, 2025 9:27:13 上午 org.apache.aries.spifly.BaseActivator log 信息: Registered provider org.eclipse.jetty.websocket.server.NativeWebSocketServletContainerInitializer of service javax.servlet.ServletContainerInitializer in bundle org.eclipse.jetty.websocket.server 2025-06-10 09:27:13.941:INFO::FelixStartLevel: Logging initialized @10744ms to org.eclipse.jetty.util.log.StdErrLog 六月 10, 2025 9:27:14 上午 org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions 信息: Adding the extensions from bundle org.apache.cxf.cxf-rt-management (154) [org.apache.cxf.management.InstrumentationManager] 六月 10, 2025 9:27:14 上午 org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions 信息: Adding the extensions from bundle org.apache.cxf.cxf-rt-rs-service-description (159) [org.apache.cxf.jaxrs.model.wadl.WadlGenerator] 六月 10, 2025 9:27:14 上午 org.apache.cxf.bus.osgi.CXFExtensionBundleListener addExtensions 信息: Adding the extensions from bundle org.apache.cxf.cxf-rt-transports-http (161) [org.apache.cxf.transport.http.HTTPTransportFactory, org.apache.cxf.transport.http.HTTPWSDLExtensionLoader, org.apache.cxf.transport.http.policy.HTTPClientAssertionBuilder, org.apache.cxf.transport.http.policy.HTTPServerAssertionBuilder, org.apache.cxf.transport.http.policy.NoOpPolicyInterceptorProvider] 六月 10, 2025 9:27:14 上午 org.pentaho.caching.impl.PentahoCacheManagerFactory$RegistrationHandler$1 onSuccess 信息: New Caching Service registered 六月 10, 2025 9:27:14 上午 org.apache.cxf.transport.http.osgi.ServletExporter updated 信息: Registering new instance of "/cxf" servlet 2025-06-10 09:27:15.097:INFO:oejws.WebSocketServerFactory:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 六月 10, 2025 9:27:15 上午 org.apache.cxf.endpoint.ServerImpl initDestination 信息: Setting the server's publish address to be /i18n 2025-06-10 09:27:15.235:INFO:oejs.session:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): DefaultSessionIdManager workerName=node0 2025-06-10 09:27:15.235:INFO:oejs.session:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): No SessionScavenger set, using defaults 2025-06-10 09:27:15.237:INFO:oejs.session:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): node0 Scavenging every 660000ms 2025-06-10 09:27:15.275:INFO:oejsh.ContextHandler:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=org.apache.cxf.cxf-rt-transports-http [161], contextID=default]} 2025-06-10 09:27:15.286:INFO:oejs.Server:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): jetty-9.4.18.v20190429; built: 2021-06-30T11:07:22.254Z; git: 526006ecfa3af7f1a27ef3a288e2bef7ea9dd7e8; jvm 1.8.0_201-b09 2025-06-10 09:27:15.373:INFO:oejs.AbstractConnector:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): Started default@38cb3a36{HTTP/1.1, (http/1.1)}{0.0.0.0:9051} 2025-06-10 09:27:15.374:INFO:oejs.Server:CM Configuration Updater (ManagedService Update: pid=[org.apache.cxf.osgi]): Started @12178ms 2025-06-10 09:27:15.419:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:15.424:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-i18n-webservice-bundle [173], contextID=default]} 2025-06-10 09:27:16.466:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:16.478:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-pdi-platform [243], contextID=default]} 2025-06-10 09:27:17.578:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.582:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=core-ui [260], contextID=default]} 2025-06-10 09:27:17.641:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.645:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=org.pentaho.requirejs-manager-impl [261], contextID=default]} 2025-06-10 09:27:17.657:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.659:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular [262], contextID=default]} 2025-06-10 09:27:17.671:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.675:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-animate [263], contextID=default]} 2025-06-10 09:27:17.692:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.700:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-i18n [264], contextID=default]} 2025-06-10 09:27:17.712:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.715:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-sanitize [265], contextID=default]} 2025-06-10 09:27:17.727:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.730:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-translate [266], contextID=default]} 2025-06-10 09:27:17.744:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.748:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-dojo [267], contextID=default]} 2025-06-10 09:27:17.760:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.762:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-require-css [268], contextID=default]} 2025-06-10 09:27:17.773:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.775:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-requirejs-text [269], contextID=default]} 2025-06-10 09:27:17.785:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.787:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-uirouter__angularjs [270], contextID=default]} 2025-06-10 09:27:17.845:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:17.849:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-uirouter__core [271], contextID=default]} 六月 10, 2025 9:27:17 上午 org.apache.cxf.endpoint.ServerImpl initDestination 信息: Setting the server's publish address to be /repositories 六月 10, 2025 9:27:17 上午 org.apache.cxf.endpoint.ServerImpl initDestination 信息: Setting the server's publish address to be /browser 六月 10, 2025 9:27:18 上午 org.apache.cxf.endpoint.ServerImpl initDestination 信息: Setting the server's publish address to be /browser-new 六月 10, 2025 9:27:18 上午 org.apache.cxf.endpoint.ServerImpl initDestination 信息: Setting the server's publish address to be /get-fields 六月 10, 2025 9:27:18 上午 org.apache.cxf.endpoint.ServerImpl initDestination 信息: Setting the server's publish address to be /connection 2025-06-10 09:27:18.269:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:18.281:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=repositories-plugin-core [272], contextID=default]} 2025-06-10 09:27:18.460:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:18.466:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=file-open-save-core [274], contextID=default]} 六月 10, 2025 9:27:18 上午 org.apache.cxf.endpoint.ServerImpl initDestination 信息: Setting the server's publish address to be /marketplace 2025-06-10 09:27:18.756:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:18.759:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:18.762:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=file-open-save-new-core [276], contextID=default]} 2025-06-10 09:27:18.762:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-route [280], contextID=default]} 2025-06-10 09:27:18.934:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:18.937:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:18.939:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=get-fields-core [277], contextID=default]} 2025-06-10 09:27:18.939:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-angular-ui-bootstrap-bower [281], contextID=default]} 2025-06-10 09:27:19.321:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:19.324:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:19.325:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=connections-ui [278], contextID=default]} 2025-06-10 09:27:19.328:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-jquery [282], contextID=default]} 2025-06-10 09:27:19.613:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:19.617:INFO:oejws.WebSocketServerFactory:FelixStartLevel: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:19.619:INFO:oejsh.ContextHandler:FelixStartLevel: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-webjars-underscore [283], contextID=default]} 2025-06-10 09:27:19.620:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-marketplace-di [279], contextID=default]} 2025-06-10 09:27:19.652:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:19.656:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-big-data-impl-connections-s3 [286], contextID=default]} 六月 10, 2025 9:27:19 上午 org.apache.cxf.endpoint.ServerImpl initDestination 信息: Setting the server's publish address to be /hadoop-cluster 2025-06-10 09:27:19.705:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:19.708:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=pentaho-big-data-kettle-plugins-browse [287], contextID=default]} 2025-06-10 09:27:22.492:INFO:oejws.WebSocketServerFactory:FelixDispatchQueue: No DecoratedObjectFactory provided, using new org.eclipse.jetty.util.DecoratedObjectFactory[decorators=1] 2025-06-10 09:27:22.500:INFO:oejsh.ContextHandler:FelixDispatchQueue: Started HttpServiceContext{httpContext=DefaultHttpContext [bundle=hadoop-cluster-ui [288], contextID=default]} Graphics2D from BufferedImage lacks BUFFERED_IMAGE hint 2025/06/10 09:27:27 - Carte - Installing timer to purge stale objects after 1440 minutes. 2025/06/10 09:27:46 - Spoon - Running transformation using the Kettle execution engine 2025/06/10 09:27:46 - Spoon - 转换已经打开. 2025/06/10 09:27:46 - Spoon - 正在打开转换 [DM_TO_MYSQL-T_MDJSGJZTK_C0402201]... 2025/06/10 09:27:46 - Spoon - 开始执行转换. 2025/06/10 09:27:47 - DM_TO_MYSQL-T_MDJSGJZTK_C0402201 - 为了转换解除补丁开始 [DM_TO_MYSQL-T_MDJSGJZTK_C0402201] 2025/06/10 09:27:48 - MySQL数据库表输出 9.0 - Connected to database [mysql] (commit=1000)
最新发布
06-11
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值