-
public boolean createBucket() throws IOException { obsClient = new ObsClient(ak, sk, endPoint); // 创建桶 try{ // 创建桶成功 HeaderResponse response = obsClient.createBucket("firstbucket"); System.out.println(response.getRequestId()); return true; } catch (ObsException e) { // 创建桶失败 System.out.println("HTTP Code: " + e.getResponseCode()); System.out.println("Error Code:" + e.getErrorCode()); System.out.println("Error Message: " + e.getErrorMessage()); System.out.println("Request ID:" + e.getErrorRequestId()); System.out.println("Host ID:" + e.getErrorHostId()); return false; } finally { obsClient.close(); } }ak, sk, endPoint都是没错的,不知道为什么连接不上,测试结果如下HTTP Code: 400Error Code:IllegalLocationConstraintExceptionError Message: The location constraint is incompatible for the region specific endpoint this request was sent to.Request ID:0000017208EA47DF920DA8829674D2DBHost ID:HmKupNVtqgLvkFicnTaJ2LANlSVV0odHMZh0AYj3rGtSU5vMp7TldJpBZeQNgz/b2020-05-12 20:44:31.341 INFO 21790 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor'
-
如下图,有一个http的抓包信息,为啥平均请求次数和执行时间显示为0呢?
-
看下面图,在GC回收时间,堆也下降了,有点不太看,连在一起了,看看怎么优化一下
-
当鼠标放上去以后,出现断线了,这个还是不太友好看看怎么优化一下。
-
这几个参数到底是什么意思? 怎么还有个nigix?我们服务器上没有nigix不能用了吗 ?
-
如下文档中,安装java性能优化工具的服务器,具体是指哪个服务器?和下面的被调试的服务器不是一样的吗 ?还有为啥要求安装open JDK 11? 如果业务用的不是这个JDK版本,要重新安装吗,会不会对业务app有冲突?
-
Response Code: 400Error Message: The location constraint is incompatible for the region specific endpoint this request was sent to.Error Code: IllegalLocationConstraintExceptionRequest ID: 00000171D44061F59011D81F3F8FC8AFHost ID: gVNXYhZIxXzQmJYAuEry2vbWxP2mbdVkv5B4mJHidhajjxwhLnnvY73GmrbiYlq7
-
使用postman调试问题:是否需要证书,以及证书应该如何配置是不是在服务器端和云平台都要配(仅用于测试阶段)?在第一步获取accetoken 时,appId和secret信息从哪里获取,我在云平台上只找了APPId,以及是否需要内网穿透?我从华为下的文件JavaSDK中的一个文件中找到了appid和secret信息输入到postman上,并且试过用内网穿透和不使用内网穿透,安装上了华为给的postman的证书,但是postman依然收不到回复关于应用测java sdk的使用,是否需要使用其他工具(如maven),从华为下的JAVA SDK文件夹中里面的,应该使用哪些jar包?我直接使用myeclipse建了一个建了一个java工程,导入 JAVA SDK 中JAR包,然后使用指导书上步骤,获取accetoken,源代码没有错,但是编译出错?请问java sdk到底该如何使用,本人专业学的本来就是偏硬件,毕设给分到了这些偏软件的题,对java懂的也不多,有哪位大佬有时间可以给我指点一下吗? 有偿。
-
java.lang.management是JDK自带的一套工具库。通过工厂类ManagementFactory对外提供一套管理接口,提供JVM和JVM所运行操作系统的各种信息,例如:内存使用情况、GC情况和操作系统版本等。基于以上信息,可以辅助我们对定位问题或者性能调优提供数据支撑。Management同时允许从本地和远程(JMX)对正在运行的JVM进行监视和管理。MXBean简介 根据ManagementFactory的javadoc,可以看出它提供了大量的工厂方法,使得我们可以通过调用这些方法来获取JVM各组件相关的JavaBean,通过这些JavaBean就可以获取到对应组件的运行状态数据。而这些JavaBean是各个服务启动时自动注册好的,运行数据也是提前计算好的,所以我们并不会因为获取相关数据,而导致额外消耗资源进行计算。 这些JavaBean被称之为MBean或者MXBean。MBean和MXBean两者的区别在于:MXBean是一个特殊的MBean,它的数据类型被限制为开放类型,基本上是原始类型、字符串及其组合。由于这些限制,MXBean可以在不加载类的情况下使用,这使得它们甚至可以与非Java客户机进行互操作。这个特性对于我们进行通用封装是十分重要的。使用案例1: JVM频繁的FullGC或者Java服务发生了OOM,但是JVM进程并没有自动退出。这种场景下,仅仅在操作系统层面对JVM进程进行监控是不能及时发现相关问题的。可以使用MemoryMXBean和GarbageCollectorMXBean来获取相关信息;并结合其他监控或者定时执行机制,实现告警等功能。实现代码:public class MemoryMXBeanTest { private static volatile MemoryMXBean memoryMBean; private static volatile List<GarbageCollectorMXBean> garbageCollectorMXBeanList; /** * 获取memoryMBean */ private static void initMemoryMXBean() { synchronized (MemoryMXBeanTest.class) { if (memoryMBean == null) { try { memoryMBean = AccessController.doPrivileged( new PrivilegedExceptionAction<MemoryMXBean>() { @Override public MemoryMXBean run() throws DrsException { return ManagementFactory.getMemoryMXBean(); } }); } catch (Exception exp) { log.error("", exp); } } } } /** * 获取GarbageCollectorMXBean */ private static void initGarbageCollectorMXBean() { synchronized (MemoryMXBeanTest.class) { if (garbageCollectorMXBeanList == null) { try { garbageCollectorMXBeanList = AccessController.doPrivileged( new PrivilegedExceptionAction<List<GarbageCollectorMXBean>>() { @Override public List<GarbageCollectorMXBean> run() throws DrsException { return ManagementFactory.getGarbageCollectorMXBeans(); } }); } catch (Exception exp) { log.error("", exp); } } } } public static MemoryMXBean getMemoryMBean() { if (memoryMBean == null) { initMemoryMXBean(); } return memoryMBean; } public static List<GarbageCollectorMXBean> getGCMXBeanList() { if (garbageCollectorMXBeanList == null) { initGarbageCollectorMXBean(); } return garbageCollectorMXBeanList; } private Map<String, Object> getMemStatus() { Map<String, Object> memStatus = new HashMap<String, Object>(); // 堆内存 memStatus.put("Heap mem Committed", getMemoryMBean().getHeapMemoryUsage().getCommitted()); memStatus.put("Heap mem Init", getMemoryMBean().getHeapMemoryUsage().getInit()); memStatus.put("Heap mem Max", getMemoryMBean().getHeapMemoryUsage().getMax()); memStatus.put("Heap mem Used", getMemoryMBean().getHeapMemoryUsage().getUsed()); // 堆内存使用率 memStatus.put("Heap mem Used Rato", (getMemoryMBean().getHeapMemoryUsage().getUsed() * 100 / getMemoryMBean().getHeapMemoryUsage().getMax()) + "%"); // 堆外内存 memStatus.put("Non-Heap mem Committed", getMemoryMBean().getNonHeapMemoryUsage().getCommitted()); memStatus.put("Non-Heap mem Init", getMemoryMBean().getNonHeapMemoryUsage().getInit()); memStatus.put("Non-Heap mem Used", getMemoryMBean().getNonHeapMemoryUsage().getUsed()); return memStatus; } private Map<String, Object> getGcStatus() { Map<String, Object> gcStatus = new HashMap<String, Object>(); if (!CollectionUtils.isEmpty(getGCMXBeanList())) { // 不同的垃圾回收器 for (GarbageCollectorMXBean gcMXBean : getGCMXBeanList()) { gcStatus.put(gcMXBean.getName() + "-" + Arrays.toString(gcMXBean.getMemoryPoolNames()) + "-count", gcMXBean.getCollectionCount()); gcStatus.put(gcMXBean.getName() + "-" + Arrays.toString(gcMXBean.getMemoryPoolNames()) + "-time", gcMXBean.getCollectionTime()); } } return gcStatus; } public void print() { log.info("jvm mem status: {}", GsonUtils.toJson(getMemStatus())); log.info("jvm gc status: {}", GsonUtils.toJson(getGcStatus())); } }运行结果:2020-03-09 08:24:30,001 jvm mem status: {"Non-Heap mem Used":201168408,"Heap mem Used":710231248,"Heap mem Used Rato":"48%","Heap mem Committed":1467482112,"Non-Heap mem Init":2555904,"Non-Heap mem Committed":207945728,"Heap mem Init":1474297856,"Heap mem Max":1467482112}2020-03-09 08:24:30,001 jvm gc status: {"PS Scavenge-[PS Eden Space, PS Survivor Space]-count":210,"PS MarkSweep-[PS Eden Space, PS Survivor Space, PS Old Gen]-time":842,"PS MarkSweep-[PS Eden Space, PS Survivor Space, PS Old Gen]-count":4,"PS Scavenge-[PS Eden Space, PS Survivor Space]-time":2213}使用案例2 有业务功能大量并发,同时占用了大量数据库连接;从而导致连接池中可用连接长时间无空闲的话,就会导致业务持久化操作异常。下面就以使用Druid数据库连接池为例,通过Druid自带的MXbean获取连接池相关信息。PS: 1、多数Java连接池都会注册MXbean并记录重要监控数据,具体实现和数据线略有差别; 2、druid自带monitor;需要配置额外的数据库进行存储,可参见:https://github.com/alibaba/druid/wiki/druid-monitor%E8%AE%BE%E8%AE%A1 通过JMX连接JVM,可以看到DruidDataSource下有两个数据源,他们的ObjectName为:com.alibaba.druid:type=DruidDataSource,id=XXX,每个数据源的MXBean中各有一组Attribute记录相关监控项。实现代码:public class DruidMXBeanTest { private static volatile MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer(); private static void initMBeanServer() { synchronized (DruidMXBeanTest.class) { if (mBeanServer == null) { try { mBeanServer = AccessController.doPrivileged( new PrivilegedExceptionAction<MBeanServer>() { @Override public MBeanServer run() throws DrsException { return ManagementFactory.getPlatformMBeanServer(); } }); } catch (Exception exp) { log.error("", exp); } } } } private static MBeanServer getMBeanServer() { if (mBeanServer == null) { initMBeanServer(); } return mBeanServer; } public static Set<ObjectInstance> queryMBeans(String objectName) { try { if (getMBeanServer() != null) { return getMBeanServer().queryMBeans(new ObjectName(objectName), null); } } catch (Exception e) { log.error("", e); } return null; } public static Map<String, Object> getAttributes(String objectName, List<String> attrNameList) { try { return getAttributes(new ObjectName(objectName), attrNameList); } catch (Exception e) { log.error("", e); } return null; } public static Map<String, Object> getAttributes(ObjectName objectName, List<String> attrNameList) { Map<String, Object> result = new HashMap<String, Object>(); if (CollectionUtils.isEmpty(attrNameList) || getMBeanServer() == null) { return result; } try { AttributeList attributeList = getMBeanServer().getAttributes(objectName, attrNameList.toArray(new String[] {})); for (int i = 0; i < attrNameList.size(); i++) { result.put(attrNameList.get(i), i < attributeList.size() ? ((Attribute) attributeList.get(i)).getValue() : ""); } return result; } catch (Exception e) { log.error("", e); } return result; } private Map<String, Map<String, Object>> getDruidDataSourceStatus() { Map<String, Map<String, Object>> druidDataSourceMap = new HashMap<String, Map<String, Object>>(); try { // 结果数量不固定并且ID每次随机,使用带通配符的ObjectName进行批量查询 Set<ObjectInstance> druidDataSourceSet = queryMBeans("com.alibaba.druid:type=DruidDataSource,id=*"); if (druidDataSourceSet != null) { // 一个数据源一组attribute druidDataSourceSet.stream().forEach(objectInstance -> { Map<String, Object> druidDataSource = new HashMap<String, Object>(); /** * 需要获取到的监控项 * * druid更多相关监控项可以在com.alibaba.druid.pool.DruidDataSource中查看(注意使用时需要大写驼峰格式) */ List<String> attrList = new ArrayList<String>() { { // 数据源用户名 add("Username"); // 最大连接池数量 add("MaxActive"); // 最小连接池数量 add("MinIdle"); // 连接池中空闲连接数 add("PoolingCount"); // 连接池中正在使用的连接数 add("ActiveCount"); } }; druidDataSource = getAttributes(objectInstance.getObjectName(), attrList); druidDataSourceMap.put(String.valueOf(druidDataSource.get("Username")), druidDataSource); }); } } catch (Exception e) { log.error("", e); } return druidDataSourceMap; } public void print() { log.info("druid dataSource status: {}", GsonUtils.toJson(getDruidDataSourceStatus())); }} 运行结果:2020-03-09 08:24:30,002 druid dataSource status: {"db1":{"Username":"db1","MaxActive":20,"MinIdle":5,"ActiveCount":0,"PoolingCount":5},"db2":{"Username":"db2","MaxActive":20,"MinIdle":10,"ActiveCount":1,"PoolingCount":9}} 总结很多开源中间件都会使用Management方式进行自定义扩展,记录相关运行状况数据;例如Kafka、logback等,都可以使用类似方式获取数据。参考资料:https://www.jianshu.com/p/5d854245051dhttps://baike.baidu.com/item/java.lang.management/5179868?fr=aladdinhttp://www.voidcn.com/article/p-cwctaeex-bsq.htmlhttps://zimt8.com/questions/16275207/https://docs.oracle.com/javase/tutorial/jmx/mbeans/mxbeans.htmlhttps://docs.oracle.com/javase/8/docs/api/java/lang/management/package-summary.html
-
listFile方法得到异常:com.obs.services.internal.ServiceException: Try to redirect, but location is null!,经过检查,发现服务端返回301,并且header中没有location,得到这个错误的概率大概是30%,请问如何解决呢
-
问题 调用 Authenticate方法返回上面的信息 是什么原因 登录方法已经拿到了cookie 问题2 二次SHA256加密的 密码 是什么 问题3 放入cookie 是httpHeaders.put("Set-Cookie",Cookie); Set-Cookie 还是cookie
-
# ServiceComb CSE Java Chassis 启动失败 > 初次使用 **ServiceComb Java Chassis** 框架 启动的时候总是发生报错. ### content held by this instance and the service center is different  这个问题一般是对 服务端 **接口** 进行了修改, 造成生成的 **契约** 发生了变化. 有以下处理方式: * 直接升级服务版本号, 修改 **microservice.yaml** 配置文件配置 **service_description.version** , 增加一个小的版本号就好, 例如从 **0.0.1** 升级为 **0.0.2**  * 也可以直接到 **服务中心** , 删除 同版本老的 契约  * 如果既不想升级版本号, 也不想去服务中心删除契约,可以设置 变量 **service_description.environment** 为 **development**  > 如果是生产环境, 确定啥都没改, 就是重启了下实例, 发现报了这个错误. 可以参考帖子 https://bbs.huaweicloud.com/forum/thread-12624-1-1.html ### 服务启动成功, 但是服务中心没找到实例. * 全局搜索关键词 `running microservice register task` 或者 `running microservice instance register task` > 如果找不到, 确定是否配置了 **local.registry.file** . 该参数控制是否使用 **本地服务中心**, 如果这个参数不为空, 就会使用本地服务中心, 而不会往远端服务中心注册. > > 如果有相关注册日志, 可以接着往下排查: * 确定 **servicecomb.service.registry.address** 是否配置的 是目标服务中心 * 确定 服务中心 的 **选中的环境** 是否 和 本服务配置 **service_description.environment** 保持一致.  ## Connection timed out > 这里要注意下, 连接配置中心 连接不上也有可能报 **Connection timed out** , 但是配置中心连接失败 不影响服务 启动 和 服务注册. > 看日志要看的细致一点, 如果同行 还有 **registry** 关键字, 那就是 注册的时候发生了 **超时** 注册时 发生超时, 要自己检查 本机 和 服务中心 **是否是连通的** . 如果你说你本地 能 **curl** 同 服务中心, 但是程序确实连不上, 请检查自己代理和网络. > 如何在ServiceComb 配置代理可参考 : https://docs.servicecomb.io/java-chassis/zh_CN/general-development/dai-li-she-zhi/#_1 > > 一般不需要主动配置代理, 程序直接使用系统代理就没问题. 反正我没主动配置过. **连接超时问题, 不要找 ServiceComb 开发人员支撑, ServiceComb 开发不懂网络** ## Must be a concrete type 服务启动失败,报错"[simple type, class xxx] is interface. Must be a concrete type". 详情可查看帖子: https://bbs.huaweicloud.com/forum/thread-50505-1-1.html 报错日志: ```log Exception in thread "main" java.lang.IllegalStateException: ServiceComb init failed. at org.apache.servicecomb.core.SCBEngine.init(SCBEngine.java:231) at org.apache.servicecomb.core.CseApplicationListener.onApplicationEvent(CseApplicationListener.java:81) at org.springframework.context.event.SimpleApplicationEventMulticaster.doInvokeListener(SimpleApplicationEventMulticaster.java:172) at org.springframework.context.event.SimpleApplicationEventMulticaster.invokeListener(SimpleApplicationEventMulticaster.java:165) at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:139) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:393) at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:347) at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:883) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:546) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139) at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:93) at org.apache.servicecomb.foundation.common.utils.BeanUtils.init(BeanUtils.java:54) at org.apache.servicecomb.foundation.common.utils.BeanUtils.init(BeanUtils.java:47) at mylearning.servicecomb.ServiceCombConsumerMain.main(ServiceCombConsumerMain.java:23) Caused by: java.lang.Error: generate operation swagger failed, mylearning.servicecomb.service.ThirdPartyService:thirdSayHello at org.apache.servicecomb.swagger.generator.core.SwaggerGenerator.scanMethods(SwaggerGenerator.java:252) at org.apache.servicecomb.swagger.generator.core.SwaggerGenerator.generate(SwaggerGenerator.java:141) at org.apache.servicecomb.core.definition.schema.AbstractSchemaFactory.generateSwagger(AbstractSchemaFactory.java:102) at org.apache.servicecomb.core.definition.schema.ProducerSchemaFactory.createSchema(ProducerSchemaFactory.java:115) at org.apache.servicecomb.core.definition.schema.ProducerSchemaFactory.createSchema(ProducerSchemaFactory.java:54) at org.apache.servicecomb.core.definition.schema.AbstractSchemaFactory.getOrCreateSchema(AbstractSchemaFactory.java:58) at org.apache.servicecomb.core.definition.schema.ProducerSchemaFactory.getOrCreateProducerSchema(ProducerSchemaFactory.java:76) at org.apache.servicecomb.provider.rest.common.RestProducerProvider.init(RestProducerProvider.java:45) at org.apache.servicecomb.core.provider.producer.ProducerProviderManager.init(ProducerProviderManager.java:54) at org.apache.servicecomb.core.SCBEngine.doInit(SCBEngine.java:264) at org.apache.servicecomb.core.SCBEngine.init(SCBEngine.java:219) ... 13 more Caused by: org.apache.servicecomb.foundation.common.exceptions.ServiceCombException: [simple type, class javax.servlet.http.HttpServletResponse] is interface. Must be a concrete type. at org.apache.servicecomb.swagger.extend.ModelResolverExt.checkType(ModelResolverExt.java:119) at org.apache.servicecomb.swagger.extend.ModelResolverExt.resolveProperty(ModelResolverExt.java:151) at io.swagger.jackson.ModelResolver.resolveProperty(ModelResolver.java:125) at io.swagger.converter.ModelConverterContextImpl.resolveProperty(ModelConverterContextImpl.java:83) at io.swagger.converter.ModelConverters.readAsProperty(ModelConverters.java:63) at io.swagger.converter.ModelConverters.readAsProperty(ModelConverters.java:57) at org.apache.servicecomb.swagger.generator.springmvc.processor.parameter.SpringmvcDefaultParameterProcessor.process(SpringmvcDefaultParameterProcessor.java:39) at org.apache.servicecomb.swagger.generator.core.OperationGenerator.scanMethodParameters(OperationGenerator.java:298) at org.apache.servicecomb.swagger.generator.core.OperationGenerator.generate(OperationGenerator.java:181) at org.apache.servicecomb.swagger.generator.core.SwaggerGenerator.scanMethods(SwaggerGenerator.java:248) ... 23 more ``` > 服务报这个错误是由于在接口定义中使用了接口类型的参数。如下面的代码,接口中使用了`HttpServletResponse`。 ```java @RequestMapping(path = "/thirdSayHello", method = RequestMethod.GET) public String thirdSayHello(@RequestParam(name = "name") String name, HttpServletResponse HttpServletResponse) { // invoke 3rd party rest service String response = commonServerIntf.sayHello(name); LOGGER.info("name: {}.", response); return response; } ``` > ServiceComb关于接口定义和数据类型的支持可参考开发者指导[接口定义和数据类型](https://docs.servicecomb.io/java-chassis/zh_CN/build-provider/interface-constraints/)
-
# ServiceComb Java Chassis CSE SDK 报错 Connection Refused > 查看服务的运行日志, 会发现运行是报错 **Connection Refused**  发送连接, 连接被拒绝, 这种通常是发送请求的时候 服务端实例 **不可用** 了. 一般是发生在如下场景: 1. 服务上下线和升级, 造成实例重启. 在重启期间 会短暂有这种报错 2. 服务实例运行期间, 实例发生重启, 也会造成这种报错. > 发生这种报错, CSE 只有以上简单建议, 无法帮助客户 debug 看日志排查问题. 如果客户可以抽出demo 复现问题, 可以找CSE 支撑人员排查
-
# RPC Server 端支持使用 POSTMAN 直接调用 > 如果服务端 是使用 Java Chassis **RPC 风格开发的**, 如果想是用 `postman` 等工具直接调用时, 需要根据 swagger 契约查找 调用路径 ### 示例 ```java @RpcSchema(schemaId = "test") @SwaggerDefinition(basePath = "/pojo/rest") public class CodeFirstPojo { public Person sayHello(Person user) { user.setName("hello " + user.getName()); return user; } public String sayHi(String name) { return "hello " + name; } } ``` ### POSTMAN 调用 要想知道调用路径, 需要查看 **契约**. > 契约可以在 `日志` 中查看, 也可以在 `服务中心` 中查找. ```yaml swagger: "2.0" info: version: "1.0.0" title: "swagger definition for org.apache.servicecomb.demo.pojo.server.CodeFirstPojo" x-java-interface: "gen.swagger.CodeFirstPojoIntf" basePath: "/pojo/rest" schemes: - "http" consumes: - "application/json" produces: - "application/json" paths: /sayHello: post: operationId: "sayHello" parameters: - in: "body" name: "user" required: false schema: $ref: "#/definitions/Person" responses: "200": description: "response of 200" schema: $ref: "#/definitions/Person" /sayHi: post: operationId: "sayHi" parameters: - in: "body" name: "name" required: false schema: $ref: "#/definitions/sayHiBody" responses: "200": description: "response of 200" schema: type: "string" definitions: Person: type: "object" properties: name: type: "string" x-java-class: "org.apache.servicecomb.demo.compute.Person" sayHiBody: type: "object" properties: name: type: "string" ``` > 根据 `basePath` 和 `path` 进行拼接. 例如 我想调用 **sayHi()** 请求路径是 `/pojo/rest/sayHi` , 调用方法是 `post`  
-
ServiceComb 官方文档地址 https://docs.servicecomb.io/java-chassis/zh_CN/question-and-answer/question_answer/详情在 二 楼
上滑加载中
推荐直播
-
华为云码道Agent集成与鸿蒙实战2026/08/11 周二 19:00-21:00
王一男-华为云码道产品规划专家;李炎-华为云码道产品专家;彭江敏-华为云鸿蒙端云一体化开发专家
本次直播带你解读华为云码道7月份产品新特性、新功能。更有专家演示码道Agent Space × 钉钉机器集成实战,从0到1打通消息通道;码道鸿蒙端云一体化实战,快速搭建员工签到系统。
回顾中 -
华为云开发者AI素养直播课·第五期2026/09/04 周五 16:00-18:00
林华鼎-华为云AI开发者运营负责人;蒋春阳-华为云AI开发者案例开发专家
本期直播内容: AI工具体验营 · 第5-8课连讲。Agent-Team 多智能体协作完成毕业设计实践
回顾中 -
华为云开发者AI素养ClassRoom·第六期2026/09/08 周二 19:00-20:00
樊渊-2026华为软件挑战赛冠军
高手来了:看软挑高手解析二维排样问题—从工业难题到算法突破
回顾中
热门标签