Netty需要心跳机制来进行重连吗?

Netty需要心跳机制来进行重连吗?客户端与服务端的连接断开之后,不是会触发ChannelInactived方法吗?在这个方法里直接重连不就行了吗?还需要心跳机制吗?不好意思,刚接触Netty不久。

2个回答

心跳机制,在一般的网络通讯中是需要的。Netty 也一样!

91program
91program 回复新young: 心跳机制,肯定是有必要的。无论 Netty 中提供什么!
4 年多之前 回复
kingsonyoung
红雨瓢泼 心跳机制是为了判断连接是否还存在。Netty中有连接断开之后会触发Channelinactived方法,不能在Channelinactived方法中进行重连吗?这就是我的疑问,谢谢
4 年多之前 回复

心跳是来保证网络存活的, tcp连接 5分钟内没有通讯 会被运营商给断开连接

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Python+OpenCV计算机视觉

Python+OpenCV计算机视觉

netty 心跳机制 netty 心跳机制 设备在线问题

我用的netty做的服务端,app是客户端,我这边使用一个flag标志标记设备是否在线,1在线,0不在线,app网络波动的情况下会重新连接我,上一个连接就没用了,然后netty的心跳机制在五秒内去监测这个连接五秒没读取到数据了就执行事件删除连接然后给我的在线标志弄成不在线,但是这个标志会影响到新连接,如果抖动之后新连接在五秒之内连接上来了,那上一个连接销毁的时候在新连接之后就会影响到这个标志位,有什么好方法改造嘛

Netty服务端如何保持稳定的长连接

有一个项目用到了netty来搭建服务端,主要是接入大量的客户端(目前有500多个客户端的接入),与服务端进行来消息的传送。但是,项目运行到一定时间后(大概10来天左右),链路channel就处于一种inactive的状态,导致客户端与服务端无法正常接收发送消息。重启netty server 后,链路又正常连接,又过一端时间后,又出现了上诉的问题。有哪位有经验的大神,能说一下这是什么情况吗?

netty 未到心跳设置超时时间自动清除通道

项目中使用netty,设置了读写和心跳的超时时间为10分钟。但是我关闭某个客户端后, 经常未满10分钟就关闭了通道。 我自己的想法:会否是内存不足,JVM自动回收了。项目暂时架构在WIn2008 Server中, 单台的连接数暂时未1000度,JVM内存被分配了3G。希望大神帮忙分析下

netty客户端连接附带信息

netty客户端连接服务端时,怎么附带一些信息,比如id等,客户端、服务端代码怎么实现啊?

netty客户端与服务端连接后的通信

最近做的项目学习netty,时间紧来不及学,希望请教大家一些问题, 1.netty的客户端与服务端建立长连接后,客户端如何与服务端通信?要随心所欲发送自定义的消息? 2.netty的自定义编码器,解码器,希望也能得到帮助, 3.第一个问题为主要问题。 数据包结构: 包头:2字节 0ddd 0fff。 消息体:全部为文本(ASCII码),汉字是GB2312编码。 包尾:2字节 0xxx 0aaa。 最后,先感谢每一位浏览解答的朋友,我会多多赠送C币给那些乐于帮助的人。 补充一些: 我是客户端,需要与服务端长连接;接通后需要发送登陆消息数据包; 每30秒发送一条链路数据 这些我熬夜两天,时间太紧张,希望大家不吝指教。

netty长连接服务器断开后,客户端如何重新连接

private final static Logger logger = LoggerFactory.getLogger(ResourceStatusReceiver.class); private static Bootstrap b = new Bootstrap(); public static void start() throws Exception { EventLoopGroup workerGroup = new NioEventLoopGroup(); try { // b = new Bootstrap(); // (1) b.group(workerGroup); // (2) b.channel(NioSocketChannel.class); // (3) b.option(ChannelOption.SO_KEEPALIVE, true); // (4) b.option(ChannelOption.ALLOW_HALF_CLOSURE,true); b.handler(new ChannelInitializer<SocketChannel>() { @Override protected void initChannel(SocketChannel ch) throws Exception { ChannelPipeline pipeline = ch.pipeline(); // 以("\n")为结尾分割的 解码器 pipeline.addLast("framer", new DelimiterBasedFrameDecoder(Integer.MAX_VALUE, Delimiters.lineDelimiter())); // 字符串解码 和 编码 pipeline.addLast("decoder", new StringDecoder()); pipeline.addLast("encoder", new StringEncoder()); // 自己的逻辑Handler pipeline.addLast("handler", new SimpleChannelInboundHandler() { @Override protected void channelRead0(ChannelHandlerContext channelHandlerContext, Object o) throws Exception { logger.debug("接收到的状态内容:" + o.toString()); } @Override public void channelRegistered(ChannelHandlerContext ctx) throws Exception { logger.debug("连接成功"); } @Override public void channelUnregistered(ChannelHandlerContext ctx) throws Exception { } @Override public void channelActive(ChannelHandlerContext ctx) throws Exception { logger.debug("======channelActive========"); } @Override public void channelInactive(ChannelHandlerContext ctx) throws Exception { logger.debug("======channelInactive========"); } @Override public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception { logger.debug("======exceptionCaught========"+cause.getMessage()); } }); } }); // Start the client. ChannelFuture f = b.connect("127.0.0.1",8060).sync(); // (5) // Wait until the connection is closed. f.channel().closeFuture().sync(); }finally{ workerGroup.shutdownGracefully(); } }

netty服务端怎么打印与其连接的客户端的id?

netty服务端怎么打印与其连接的客户端的id?netty服务端怎么打印与其连接的客户端的id?netty服务端怎么打印与其连接的客户端的id?

Netty服务端和客户端的连接保持只有一个

在实现了服务端和客户端的连接后,客户端每次重启后都和服务端进行重连,导致了一堆的channle 的出现。但是只有一个最后一次的channel是有用的,其他都在timeout的时候回收。但是本身建立这么多channel是很费资源的,我如何保证一个客户端只和服务端建立一个长连接,其他都无法建立起来呢。我现在实现的框架是netty,请高手指点

Java netty 长连接,有什么好的数据老化方案

Java netty 长连接,单机支持50万长连接 每个长连接对象,都有数据缓存,状态机,等各种数据对象; 当这个长连接对象断开连接之后,如何对这些内存中的数据进行老化?

netty4使用protubuf作为编解码框架,心跳机制怎么加进去呢?

1.xxx.proto定义后的POJO好像通信的时候挺死的,怎么能让它在通信的时候能够解码传输的各种数据呢?根据需要传输的数据类型来定义吗?比如定义个product类,实现 它的传输并没什么用啊,项目里面肯定用到各种其他数据啊。 2.实现了传输特定的对象并针对对象编解码,然而心跳机制并不知道怎么加进去。求源码求指导。。。扣首。

android中使用Netty当客户端时候出现以下错误连接不上

Caused by: io.netty.channel.ChannelException: Failed to open a socket. at io.netty.channel.socket.nio.NioSocketChannel.newSocket(NioSocketChannel.java:63) at io.netty.channel.socket.nio.NioSocketChannel.<init>(NioSocketChannel.java:80) at io.netty.channel.socket.nio.NioSocketChannel.<init>(NioSocketChannel.java:73) at java.lang.Class.newInstance(Native Method) at io.netty.channel.ReflectiveChannelFactory.newChannel(ReflectiveChannelFactory.java:38) at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:319)  at io.netty.bootstrap.Bootstrap.doResolveAndConnect(Bootstrap.java:163)  at io.netty.bootstrap.Bootstrap.connect(Bootstrap.java:119)  at com.client.Client.connect(Client.java:43)  at com.example.shx.serachnote.Main.onCreate(Main.java:43)  at android.app.Activity.performCreate(Activity.java:6664)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)  at android.app.ActivityThread.-wrap12(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6077)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)  Caused by: java.net.SocketException: Permission denied at sun.nio.ch.Net.socket0(Native Method) at sun.nio.ch.Net.socket(Net.java:433) at sun.nio.ch.Net.socket(Net.java:426) at sun.nio.ch.SocketChannelImpl.<init>(SocketChannelImpl.java:107) at sun.nio.ch.SelectorProviderImpl.openSocketChannel(SelectorProviderImpl.java:60) at io.netty.channel.socket.nio.NioSocketChannel.newSocket(NioSocketChannel.java:61) at io.netty.channel.socket.nio.NioSocketChannel.<init>(NioSocketChannel.java:80)  at io.netty.channel.socket.nio.NioSocketChannel.<init>(NioSocketChannel.java:73)  at java.lang.Class.newInstance(Native Method)  at io.netty.channel.ReflectiveChannelFactory.newChannel(ReflectiveChannelFactory.java:38)  at io.netty.bootstrap.AbstractBootstrap.initAndRegister(AbstractBootstrap.java:319)  at io.netty.bootstrap.Bootstrap.doResolveAndConnect(Bootstrap.java:163)  at io.netty.bootstrap.Bootstrap.connect(Bootstrap.java:119)  at com.client.Client.connect(Client.java:43)  at com.example.shx.serachnote.Main.onCreate(Main.java:43)  at android.app.Activity.performCreate(Activity.java:6664)  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1118)  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2599)  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707)  at android.app.ActivityThread.-wrap12(ActivityThread.java)  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1460)  at android.os.Handler.dispatchMessage(Handler.java:102)  at android.os.Looper.loop(Looper.java:154)  at android.app.ActivityThread.main(ActivityThread.java:6077)  at java.lang.reflect.Method.invoke(Native Method)  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755) 

netty-socket-io瞬间连接量太大

基于netty的socket-io的方式做一个客户端和服务端实时通讯的功能,当我们的系统重新部署之后,原先保持的连接肯定都断开-->重新连接服务端,那么服务端肯定有收到大量的连接请求,服务端又刚刚启动;所以有以下两个问题: 1.socket-io 基于普通的服务器最多能连接多少? 2.socket-io针对服务部署后客户端瞬时大量重新连接应该怎么处理? 3.有神没有什么预热的方式,缓解系统的一部分压力,防止系统宕机崩溃? 希望各位能够帮忙。

netty短链接高并发的问题

场景:netty服务端在高并发的情况下,由于业务逻辑的修改,需要重启netty服务端的服务,重启后,出现了一种SYN-Flood攻击的现象,Tomcat服务崩溃,远程访问不服务器的情况。 想请问一下是什么原因造成的,有什么好的解决方法吗?一开始,netty服务端未处于高并发的情况时,重启是没问题的,但是高并发以后,就不能修改业务逻辑了吗?

Netty实现连接池,同一连接2次发送消息问题,第二次失败

想要实现一个netty连接池,用于管理所有的连接,在启动程序时,new Client(),并且将这些client 缓存在map中,但是发现,当从中取一个连接进行消息发送,第一次发送成功了,发送消息时没有关闭client,当再取这个连接时,发送失败,进入到了channelInActive()中,同时发现 channel.isActive()==false.不知道这是什么原因。不知道有什么好的方式解决或实现连接池。在线等。

netty 系统空闲一段后,客户端与服务端的链接会自动断开如何处理

大伙有没有出现过这样的问题。用netty做集群服务器,包括客户端(clientBootstrap)和服务端(serverBootstrap),系统空闲3个多小时候,客户端与服务端的连接会自动断开(“远程主机强迫关闭了一个现有的连接”),系统重新后连接报异常: java.lang.IllegalArgumentException: promise already done: DefaultChannelPromise@2038329b(failure(java.util.concurrent.CancellationException) at io.netty.channel.DefaultChannelHandlerContext.validatePromise(DefaultChannelHandlerContext.java:806) at io.netty.channel.DefaultChannelHandlerContext.connect(DefaultChannelHandlerContext.java:477) at io.netty.channel.DefaultChannelHandlerContext.connect(DefaultChannelHandlerContext.java:467) at io.netty.channel.DefaultChannelPipeline.connect(DefaultChannelPipeline.java:847) at io.netty.channel.AbstractChannel.connect(AbstractChannel.java:199) at io.netty.bootstrap.Bootstrap$2.run(Bootstrap.java:165) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:354) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:353) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) at java.lang.Thread.run(Unknown Source) 最后: Caused by: java.net.NoRouteToHostException: No route to host: no further information at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(Unknown Source) at io.netty.channel.socket.nio.NioSocketChannel.doFinishConnect(NioSocketChannel.java:191) at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:279) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:511) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:461) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:378) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:350) at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) 请问这个问题如何解决,我有做心跳处理,客户端每个几秒会请求服务端,这样都还会自动断开连接,好郁闷....

netty4,异常断线的问题.

我写了个消息转发程序,也加了心跳处理,1分钟没读写操作的用户自动被踢下线. 可是现在遇到一个问题,如A用户要发送消息给B用户,通过服务器中转, 服务器在接收到A的消息时,B用户实际已经断网了(我把B用户的网线拔掉了), 这时服务器既然是不知道的. [code="java"] ChannelFuture writeFuture = channel.write(msg); final Channel sendChannel = ctx.channel(); writeFuture.addListener(new ChannelFutureListener() { @Override public void operationComplete(ChannelFuture future) throws Exception { if (future.isSuccess()){ sendChannel.write(JSONResult.getSuccess()); System.err.println("future.isSuccess()"); } if (future.isDone()){ sendChannel.write(JSONResult.getSuccess()); System.err.println("future.isDone()"); } if (future.isCancelled()){ sendChannel.write(JSONResult.getSuccess()); System.err.println("future.isCancelled()"); } } }); [/code] operationComplete都会返回成功..只有到了1分钟的时候,服务器才回把B用户踢下线.我要怎么才能在服务端判断B用户实际已经掉线了??

webSocket怎么在监听数据库更新的同时,监听客户端发送的心跳包(心跳重连机制)?

如题,我已经在@OnMessage onMessage监听数据库的变化然后发送数据给前端,现在如何监听客户端发送的心跳包?怎么配置,在哪配置? ![图片说明](https://img-ask.csdn.net/upload/201902/28/1551343346_647310.png)

关于netty

有位大侠说:“下面我要实际做一个语音视频的java组件项目,打算全部用netty来做网络层。”那么用netty来做网络层是什么意思?

netty ssl加密传输自动断开

netty的客户端和服务端已经完成ssl认证,传输数据4-5次以后自动断开,请各位帮忙看看哪有问题,下面是代码和异常 客户端: 1. 注册client的handler部分代码: SSLEngine sse = client_context.createSSLEngine(); sse.setUseClientMode(true); sc.pipeline().addLast(new ClientOutboundHandler()) .addLast(new SslHandler(sse)) // .addLast(new IdleStateHandler(30, 30, 0, // TimeUnit.SECONDS)) // .addLast(new HeartBeatHandler()) // .addLast(new ClientCodec()) .addLast(new ClientInboundHandler()) .addLast(new ClientLogicHandler()); 2. ClientInboundHandler中发送数据代码: @Override public void userEventTriggered(ChannelHandlerContext ctx, Object evt) { if (evt instanceof SslHandshakeCompletionEvent) {// 测试ssl加密传输数据 logger.info("client's ssl connection was complated"); ClientSendHeartbeatTask csht = new ClientSendHeartbeatTask(ctx); Thread heartbeatThread = new Thread(csht); heartbeatThread.start(); ClientSendDataTask csdt = new ClientSendDataTask(ctx); Thread dataThread = new Thread(csdt); dataThread.start(); } } 3. 其中ClientSendDataTask的代码如下: @Override public void run() { while (true) { ByteBuf buff = Unpooled.buffer(); String str = JSONArray.fromObject(etlservice.getEtlTablePojos()).toString(); NioMessage nm = new NioMessage(); nm.setType(Constance.DEMODATA_MSG_TYPE); nm.setJson(str); String jsonStr = JacksonUtil.getJsonStr(nm); buff.writeInt(jsonStr.getBytes().length).writeBytes(jsonStr.getBytes()); ctx.writeAndFlush(buff); // buff.clear(); // buff.release(); logger.info("client ClientSendDataTask : send data msg to server"); try { Thread.sleep(10000); } catch (InterruptedException e) { e.printStackTrace(); } } } 4. server端注册handler代码: SSLEngine sse = server_context.createSSLEngine(); sse.setNeedClientAuth(true); sse.setUseClientMode(false); sc.pipeline().addLast(new ServerOutboundHandler()) .addLast(new SslHandler(sse)) // .addLast(new IdleStateHandler(30, 30, // 0,TimeUnit.SECONDS)) // .addLast(new HeartBeatHandler()) // .addLast(new ServerCodec()) .addLast(new ServerInboundHandler()) .addLast(new ServerLogicHandler()); 5. ServerInboundHandler中处理接收的数据代码: @Override public void channelRead(ChannelHandlerContext ctx, Object msg) { NioMessage nm = NettyUtil.getNioMessage(msg); if (0 == nm.getType()) logger.warn("server channelRead : msg type is zero , throw exception"); try { if (Constance.HEARTBEAT_MSG_TYPE == nm.getType()) { logger.info("server channelRead : heartbeat msg"); HeartBeatEntity hb = JacksonUtil.getObjMapper().readValue(nm.getJson(), HeartBeatEntity.class); ctx.fireChannelRead(hb); } else if (Constance.DEMODATA_MSG_TYPE == nm.getType()) { logger.info("server channelRead : data msg"); // List<EtlTablePojo> pojoList = (List<EtlTablePojo>) // JacksonUtil.getObjMapper().readValue(nm.getJson(), // List.class); System.out.println("=====json is : " + nm.getJson()); ctx.fireChannelRead(nm.getJson()); } else if (Constance.RESULT_MSG_TYPE == nm.getType()) { logger.info("server channelRead : operation result msg"); ResultEntity re = JacksonUtil.getObjMapper().readValue(nm.getJson(), ResultEntity.class); re.toString(); } } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 6. 运行一段时间后出现错误如下: [nioEventLoopGroup-14-1] DEBUG io.netty.handler.ssl.SslHandler - Swallowing a harmless 'connection reset by peer / broken pipe' error that occurred while writing close_notify in response to the peer's close_notify java.io.IOException: Connection reset by peer at sun.nio.ch.FileDispatcher.read0(Native Method) ~[na:1.6.0_65] at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:21) ~[na:1.6.0_65] at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:198) ~[na:1.6.0_65] at sun.nio.ch.IOUtil.read(IOUtil.java:166) ~[na:1.6.0_65] at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:245) ~[na:1.6.0_65] at io.netty.buffer.UnpooledUnsafeDirectByteBuf.setBytes(UnpooledUnsafeDirectByteBuf.java:436) ~[netty-all-4.0.11.Final.jar:na] at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:870) ~[netty-all-4.0.11.Final.jar:na] at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:208) ~[netty-all-4.0.11.Final.jar:na] at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:88) ~[netty-all-4.0.11.Final.jar:na] at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:485) [netty-all-4.0.11.Final.jar:na] at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:452) [netty-all-4.0.11.Final.jar:na] at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:346) [netty-all-4.0.11.Final.jar:na] at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [netty-all-4.0.11.Final.jar:na] at java.lang.Thread.run(Thread.java:695) [na:1.6.0_65]

2019 Python开发者日-培训

2019 Python开发者日-培训

150讲轻松搞定Python网络爬虫

150讲轻松搞定Python网络爬虫

设计模式(JAVA语言实现)--20种设计模式附带源码

设计模式(JAVA语言实现)--20种设计模式附带源码

YOLOv3目标检测实战:训练自己的数据集

YOLOv3目标检测实战:训练自己的数据集

java后台+微信小程序 实现完整的点餐系统

java后台+微信小程序 实现完整的点餐系统

三个项目玩转深度学习(附1G源码)

三个项目玩转深度学习(附1G源码)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

初级玩转Linux+Ubuntu(嵌入式开发基础课程)

2019 AI开发者大会

2019 AI开发者大会

玩转Linux:常用命令实例指南

玩转Linux:常用命令实例指南

一学即懂的计算机视觉(第一季)

一学即懂的计算机视觉(第一季)

4小时玩转微信小程序——基础入门与微信支付实战

4小时玩转微信小程序——基础入门与微信支付实战

Git 实用技巧

Git 实用技巧

Python数据清洗实战入门

Python数据清洗实战入门

使用TensorFlow+keras快速构建图像分类模型

使用TensorFlow+keras快速构建图像分类模型

实用主义学Python(小白也容易上手的Python实用案例)

实用主义学Python(小白也容易上手的Python实用案例)

程序员的算法通关课:知己知彼(第一季)

程序员的算法通关课:知己知彼(第一季)

MySQL数据库从入门到实战应用

MySQL数据库从入门到实战应用

机器学习初学者必会的案例精讲

机器学习初学者必会的案例精讲

手把手实现Java图书管理系统(附源码)

手把手实现Java图书管理系统(附源码)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

极简JAVA学习营第四期(报名以后加助教微信:eduxy-1)

.net core快速开发框架

.net core快速开发框架

玩转Python-Python3基础入门

玩转Python-Python3基础入门

Python数据挖掘简易入门

Python数据挖掘简易入门

微信公众平台开发入门

微信公众平台开发入门

程序员的兼职技能课

程序员的兼职技能课

Windows版YOLOv4目标检测实战:训练自己的数据集

Windows版YOLOv4目标检测实战:训练自己的数据集

HoloLens2开发入门教程

HoloLens2开发入门教程

微信小程序开发实战

微信小程序开发实战

Java8零基础入门视频教程

Java8零基础入门视频教程

相关热词 c# 解析cad c#数字格式化万 c#int转byte c#格式化日期 c# wpf 表格 c# 实现ad域验证登录 c#心跳包机制 c#使用fmod.dll c#dll vb 调用 c# outlook
立即提问
相关内容推荐