-
// Java 8 and earlier import java.io.IOException; import java.net.HttpURLConnection; import java.net.URL; public class Main { public static void main(String[] args) throws IOException { URL url = new URL("https://www.example.com"); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); int status = con.getResponseCode(); System.out.println(status); } } // 优点:简单易用。缺点:功能有限,不够灵活。 // Java 8 import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class Main { public static void main(String[] args) throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://www.example.com")) .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); } } // 优点:比Java 8和之前的版本具有更多的功能和灵活性。缺点:仍然缺少一些高级功能。 // Java 9 import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class Main { public static void main(String[] args) throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://www.example.com")) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); } } // 优点:添加了Java 8中缺少的一些功能。缺点:仍然不如Java 11功能丰富。 // Java 11 import java.io.IOException; import java.net.URI; import java.net.http.HttpClient; import java.net.http.HttpRequest; import java.net.http.HttpResponse; public class Main { public static void main(String[] args) throws IOException, InterruptedException { HttpClient client = HttpClient.newHttpClient(); HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://www.example.com")) .GET() .build(); HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString()); System.out.println(response.statusCode()); } } // 优点:HttpClient最丰富和灵活的版本。缺点:需要Java 11或更高版本。
-
部署到云上服务,现在开始跟我玩转AI绘画提示词Prompthttps://zkkis.github.io/基于预训练语言模型的研究思路通常是“pre-train, fine-tune”,即将PLM应用到下游任务上,在预训练阶段和微调阶段根据下游任务设计训练对象并对PLM本体进行调整prompt中文译为提示,它能够帮助PLM“回忆”起自己在预训练时“学习”到的东西,因此后来慢慢地被叫做Prompt了。Prompt提问模板入门:明确问题的目的:在提问之前,请确保您的问题是明确和具体的,并且您已经理解问题的背景和意义。使用清晰明了的语言:使用简单、易懂的语言提问,避免使用专业术语或行话。提供详细的信息:请提供尽可能多的信息,例如问题的原因、背景、上下文等,以便AI能够更好地理解您的问题。使用明确的问题:请使用明确的问题来表达您的意思,避免模糊或含糊不清的问题。使用合适的标点符号:在提问时,请使用合适的标点符号,例如逗号、分号或冒号,以便AI能够理解您的问题。尊重AI的隐私:请尊重AI的隐私权,不要询问AI过于私人的问题或敏感信息。等待适当的反馈:请耐心等待AI的回答,即使您的问题似乎没有得到立即响应。AI可能需要一些时间来处理您的问题。重复提问直到得到满意的答案:如果您无法得到满意的答案,请重复您的问题,直到AI给出您满意的答案为止。提供更多的信息:如果您有关于问题的更多信息,请随时提供。这可以帮助AI更好地理解您的问题,并给出更准确的答案角色扮演你是一个xxxx1.我希望你表现得像{电影名} 中的{角色名}, 我希望你像{角色名}一样使用{角色名}会使用的语气、方式和词汇来回应和回答, 不要写任何解释, 只回答像{角色名}, 你必须知道{角色名}的所有知识,我的第一句话是“嗨 {角色名}”。2.你是一位创作者。你的任务是以五一劳动节长白山三天四晚旅游攻略为主题写一份文章,笔记包含标题和正文两部分,正文需要需要包含景点详细介绍,门票价格,美食推荐,住宿酒店推荐,三天计划,分别以景点介绍, 美食推荐,三天出行计划为小标题.听众是要去旅游的游客。以小红书风格进行创作,加入适当的Emoji表情丰富正文部分,以Hello 友友们我是你们的旅游小助手花花开头,字数要求1500字3.我要你扮演哲学老师。我会提供一些与哲学研究相关的话题,你的工作就是用通俗易懂的方式解释这些概念。这可能包括提供示例、提出问题或将复杂的想法分解成更容易理解的更小的部分。我的第一个请求是“我需要帮助来理解不同的哲学理论如何应用于日常生活”。学习相关我想让你充当维基百科页面。我会给你一个主题的名称,你将以维基百科页面的格式提供该主题的摘要。您的摘要应该内容丰富且符合事实,涵盖该主题最重要的方面。以概述主题的介绍性段落开始您的摘要。我的第一个主题是“自然语言”。我想让你为说法语的人充当法语发音助手。我会给你写句子,你只会回答他们的发音,没有别的。回复不能是我的句子的翻译,而只能是发音。发音应使用法语进行注音。不要在回复上写解释。我的第一句话是"法国的浪漫之都是哪?"代码相关给出明确的语言,编写目的,输出结果,想要的示例比如用java语言写一段最短路径算法;用java语言写一个工具类,获取上个月第一天的开始时间,以yyyy-MM-dd HH:mm:ss格式返回训练AI当你在大量的对话中采用了论文的大篇幅字段,接下来的对话它将习惯性的用论文相关的语言文字知识解答,当你训练的足够多,那么他将是你强大的论文助手充当前端智能思路助手替代:百度、谷歌人工搜索我想让你充当前端开发专家。我将提供一些关于Js、Node等前端代码问题的具体信息,而你的工作就是想出为我解决问题的策略。这可能包括优化代码、代码逻辑思路策略。我的第一个请求是“我需要能够动态监听某个元素节点距离当前电脑设备屏幕的左上角的X和Y轴,通过拖拽移动位置浏览器窗口和改变大小浏览器窗口。”担任面试官示例:Java 后端开发工程师、React 前端开发工程师、全栈开发工程师、iOS 开发工程师、Android开发工程师等。 回复截图请看这里我想让你担任Android开发工程师面试官。我将成为候选人,您将向我询问Android开发工程师职位的面试问题。我希望你只作为面试官回答。不要一次写出所有的问题。我希望你只对我进行采访。问我问题,等待我的回答。不要写解释。像面试官一样一个一个问我,等我回答。我的第一句话是“面试官你好”
-
在Spring Boot应用中,有几种常见的停止方式:使用CTRL+C:这是最简单的停止方式,但不推荐在生产环境使用。因为它会立即终止进程,没有机会实现优雅关闭。使用SIGTERM信号:发送SIGTERM信号到Spring Boot进程的PID, Spring Boot会注册一个ShutdownHook来优雅关闭应用。这是生产环境推荐的停止方式。kill -SIGTERM pid调用Actuator的shutdown接口:Actuator暴露了一个/shutdown的HTTP端点来关闭应用。这也是生产环境推荐的方式之一。curl -X POST http://localhost:8080/actuator/shutdown运行应用提供的退出命令:如果在应用中提供了自定义的退出命令,也可以通过运行该命令来关闭应用。比如,在应用的入口类中提供:@Component public class ExitCommand implements CommandLineRunner { @Override public void run(String... args) throws Exception { System.exit(0); } }然后运行命令:curl -X POST http://localhost:8080/exit 调用ApplicationContext的close方法:通过在程序中直接调用applicationContext.close()方法关闭应用上下文来触发关闭。@Autowired private ConfigurableApplicationContext applicationContext; public void exit() { applicationContext.close(); }然后通过HTTP请求、JMX等方式调用该exit()方法。 总之,在生产环境中推荐使用Actuator接口的方式或发送SIGINT/SIGTERM信号的方式来关闭Spring Boot应用。这些方式能够实现优雅关闭,释放资源。而CTRL+C方式只适合在开发环境使用。正确关闭SpringBoot应用,以释放应用占用的资源,这一点在生产环境尤其重要。我们在开发和运维Spring Boot应用时,需要清楚各种停止方式的区别,选用适合的方式。
-
【问题来源】HK银行【问题摘要】ctipool组网,2个节点的ccgateway共用一套redis服务,还是每个节点ccgteway单独用各自的redis服务【问题类别】AICC 22.200 组网方案咨询【AICC解决方案版本】AICC 22.200【期望解决时间】今天【问题现象描述】ctipool组网,2个节点的ccgateway共用一套redis服务,还是每个节点ccgteway单独用各自的redis服务
-
由 Istio 社区指导委员会成员和华为云云原生团队联合编著的云原生服务网格书籍《 Istio 权威指南》重磅上市!《 Istio 权威指南》包含云原生服务网格原理、实践、架构、源码四大技术篇章,内容权威、系统、详实, 凝聚华为云云原生团队在 Istio 社区及产品领域耕耘多年的长期实践和宝贵经验。华为云 CTO、CNCF CTO 联合作序,Istio 社区技术委员会( TOC )资深成员强力推荐。Istio服务网格是 CNCF( Cloud-Native Computing Foundation,云原生计算基金会)定义的云原生技术的典型代表之一,向下与提供资源、运行环境结合,构建了一个懂应用、对应用更友好的基础设施,帮助下层基础设施感知上层应用,更有效地发挥资源的效能;向上以非侵入的方式提供面向应用的韧性、安全、动态路由、调用链、拓扑等应用管理和运维能力。作为服务网格技术中最具影响力的项目,Istio 从诞生之初就获得了技术圈和产业界的极大关注。CNCF 这几年的调查报告显示,Istio 一直是生产环境下最受欢迎和使用最多的服务网格。2022 年 9 月,CNCF正式接受 Istio 成为孵化项目,推动 Istio 与 Envoy 项目的紧密协作,一起构建云原生应用流量管理的技术栈,也将进一步促进 Istio 成为应用流量治理领域的事实标准。根据 Istio 官方的统计,Istio 项目已有 8800 名个人贡献者,超过 260 个版本,并有来自 15 家公司的 85 名维护者,可见Istio在技术圈和产业圈都获得了极大的关注和认可。两次年度 IstioCon活动每次都吸引了超过 4000 人参加。华为云云原生团队成员入选了每届Istio社区指导委员会,当前有 2 名指导委员会成员(全球仅 8 家公司 13 人),参与Istio社区的重大技术决策,持续引领了Istio项目和服务网格技术的发展。另外Maintainer 2 名,Member 10+ 名,Pull Request 位于全球TOP 3,中国第一,Contributions TOP 3(2.3w+)。《 Istio 权威指南》简介《 Istio 权威指南》由华为云云原生团队出品,旨在打造业界最系统权威的 Istio 图书。书籍分为上、下两册,上册包括原理篇、实践篇;下册包括架构篇和源码篇,总计 26 章。▍原理篇 1~7 章介绍 Istio 的相关概念、原理,并详解 Istio 丰富的流量治理、可观测性、安全等方面的原理、机制和用法细节。▍实践篇 8~14 章基于一个统一用例实践 Istio 的流量治理、灰度、韧性、安全、可观测性、多基础设施、网关等典型应用。▍架构篇 15~20 章从架构的视角详解 Istio 各控制面组件和数据面组件的设计思想、数据模型和核心工作流程。▍源码篇 21~26 章从代码的视角详解 Istio 各控制组件面和数据面组件的代码结构、代码流程和关键代码片段。书籍特色1. 权威详实内容获 Istio 社区和 Istio TOC Lin Sun 和 John Howard 代表 Istio 社区强力推荐《 Istio 权威指南》基于 Istio 最新版本和架构,通过 4 篇、26 章、近 1000 页的篇幅,全面、系统、详细、深入地解析 Istio 原理、用法、实践、架构和源码。能帮助读者从多个维度理解云原生、服务网格、Istio 等相关技术,掌握基于 Istio 实现应用流量管理、零信任安全、应用可观测性等能力的相关原理与实践。Istio 社区最资深权威的两位 TOC 委员 Lin Sun 和 John Howard 代表Istio 社区推荐书籍的权威、系统的内容,建议初学者、云原生技术专家或 Istio 社区的贡献者均可阅读、参考。2.450+ 详实原创图表解析关键原理、架构、模型和代码流程,归纳易错技术点全书运用 450+ 原创图表多维度洞察、归纳、总结Istio原理、架构、流程和易错技术要点。践行了作者著书的理念不是搬运知识,而是将自己的实际的经验总结和提炼出来,由浅入深地帮助广大从业者学习服务网格的机制,掌握Istio的用法,特别是帮助从业者理解其中容易出错,最难理解的技术细节。如图书第4章可观测性中详细介绍了Istio访问日志的内容,特别剖析了 6 个重要的可以帮助运维人员识别一个请求通过服务网格数据面的每个阶段的耗时细节、定位耗时的瓶颈时间段。考虑到大多数从业者很容易混淆这几个个时间段的细微的差别,特提供了图4-26展示了代理观测记录每个时间段的起始时间点和终止时间点。并通过表4-4对每个时间字段进行了解析。这种通过原创的细致入微的图、表和文字结合的立体表达详解易错核心技术点的方式,获得了Istio TOC成员, Director of Open Source at Solo.io Lin Sun的赞誉和强烈推荐。▲ 图4-26 访问日志中的重要时间字段解析▼ 表4-4 访问日志中的重要时间字段解析3.国内首本系统详细解析 Istio 和 Envoy 架构和源码的技术书籍,Istio 和Envoy 社区核心维护者周礼赞强力推荐此外当前服务网格的使用越来越普及,国内甚至业界介绍服务网格控制面的资料书籍已经慢慢丰富起来,但是详细介绍架构和源码实现的书籍,特别是网格数据面的资料一直较少。很多从业朋友反映业务进入深水区后网格数据面知识的欠缺阻碍了其日常的工作的开展和生产中问题定位定界。《 Istio 权威指南》下册着重介绍 Istio 的架构与源码,特别规划了4章系统详细地解析 Istio-proxy 和 Envoy 架构和源码。书籍的详实内容获得 Istio 和 Envoy 社区核心维护者周礼赞强力推荐。4. 大量原创实践内容覆盖典型应用和常见疑难问题,指导客户解决生产问题《 Istio 权威指南》内容源于华为云云原生团队在 Istio 社区及产品领域耕耘多年的长期工程实践、客户实际案例的宝贵经验积累。在全面系统、深入介绍 Istio 原理、架构的同时,更注重内容对读者具体工作的实用价值。本书规划了独立的实践篇涵盖 Istio 的典型的流量、安全和可观测性实践案例。另外,近些年用户深入使用 Istio 的过程中,访问日志的应答标记的含义对大部分资深使用者造成困扰,但是国内外的资料包括社区官方都很简单,只是一般性的简单描述。上册附录规划了原创的访问日志实践,涵盖了大部分 Istio 访问日志中典型应答标记的实际案例,帮助读者理解其用法。此外下册附录规划了多个华为云云原生团队生产中积累的有借鉴意义的疑难案例,帮助读者参照解决实际工作中碰到的类似问题。5. 华为云 CTO、CNCF CTO、信通院、IEEE/CCF Fellow 等顶级领域专家推荐《 Istio 权威指南》目标成为 Istio 技术的权威、系统的技术书籍,持续帮助读者朋友学习了解 Istio ,解答大家使用 Istio 中的具体问题,推动云原生技术的发展。该目标和成果得到了华为云 CTO 张宇昕、CNCF CTO Chris Aniszczyk 的大力支持,二位 CTO 为《 Istio 权威指南》联合作序,倾力推荐。中国信通院云计算与大数据研究所何宝宏所长、上海交通大学致远讲席教授IEEE/CCF Fellow 过敏意老师、CNCF 中国区总监 Keith Chan、华为云首席产品官方国伟分别结合研究所、学术界、CNCF和产业界的背景和技术趋势表达了对Istio和其所属的服务网格技术的观点,也给出了读者使用本书的建议 。6. Istio 社区和华为云产品专家联合出品《 Istio 权威指南》由 Istio 社区亚洲唯一的从首届至今的指导委员会成员、国内最早的 Istio 商用网格服务开发团队成员联合出品,内容涵盖 Istio 的原理、实践、架构与源码。内容来源于作者在 Istio 社区设计开发大颗粒功能的经验总结,结合华为云云原生团队在云服务开发、客户解决方案构建、生产环境运维等日常工作中的实践、思考和总结,打造国内最权威、系统、详实、实用的Istio书籍。图书是《云原生服务网格 Istio 原理、实践、架构与源码解析》核心作者张超盟、徐中虎又一力作 。作者简介张超盟华为云应用服务网格架构师,先后负责过华为云容器应用运维、微服务平台、云服务目录、云服务可靠性、服务网格等云原生产品的架构设计与开发工作,主导过多个重大项目的云原生和微服务化生产落地。在服务网格、Kubernetes容器服务、微服务架构、应用性能管理、大数据、DevOps工具等方面有深入的研究与实践。Istio社区成员,KubeCon、IstioCon及ServiceMeshCon等会议的演讲者,技术图书作者。早期曾在中铁一局从事路桥建设工作。徐中虎华为云云原生团队核心成员,开源技术专家,服务网格Istio核心维护者,Istio社区指导委员会成员,Kubernetes项目核心贡献者,批量计算项目Volcano的核心维护者,拥有丰富的开源工作经验。主要研究方向有微服务架构、服务网格、容器编排平台Kubernetes和未来的分布式云原生架构等。在分布式系统的性能优化、高可靠和可扩展方面研究深入、经验丰富。张伟华为云服务网格数据面资深专家,拥有18年架构设计与开发经验,先后就职于亿阳信通、加拿大北电网络(中国)、甲骨文、Polycom、阿里巴巴及华为等公司。作为核心开发人员开发过传输网管系统、Tuxedo交易中间件、ts-server多媒体转码服务、GTS高性能事务云服务、sc高性能注册中心、ASM数据面等多个产品,现主要负责华为云ASM服务网格数据面代理产品的设计与开发工作。冷雪西安电子科技大学杭州研究院菁英副教授,浙江大学工学博士。主要研究方向有云原生安全、性能优化和智能运维等,致力于解决云网环境下的关键问题。曾参与并主持多项科研项目,在国际顶级会议和期刊上发表多篇论文并获得多项授权专利。我们衷心地希望书中的内容能对您和您日常工作带来帮助,也很期待有机会就其中的内容和您进行技术交流。假如你需要更深入地学习服务网格及云原生相关技术,欢迎关注我们的容器魔方公众号(参见本书封面),一起学习并讨论服务网格及云原生领域最新的技术进展。行业权威著作,云原生服务网格从业白皮书华为云、CNCF CTO联合作序——华为云CTO 张宇昕《 Istio 权威指南》来源于华为云云原生团队在云服务开发、客户解决方案构建、Istio社区特性开发、生产环境运维等日常工作中的实践、思考和总结,旨在帮助技术圈的更多朋友由浅入深且系统地理解 Istio 的原理、实践、架构与源码。书中内容在描述 Istio 的功能和机制的同时,运用了大量的图表总结,并深入解析其中的概念和技术点,可以帮助读者从多个维度理解云原生、服务网格等相关技术,掌握基于 Istio 实现应用流量管理、零信任安全、应用可观测性等能力的相关实践。无论是初学者,还是对服务网格有一定了解的用户,都可以通过本书获取自己需要的信息。——CNCF CTO Chris Aniszczyk本书提供了全面且实用的 Istio 指南,涵盖了 Istio 的核心概念、特性和对 xDS 协议等主题的深入探讨,还包括对 Envoy 和 Istio 项目源码的深入解析,这对潜在贡献者非常有用。无论您是软件工程师、SRE 还是云原生开发人员,本书都将为您提供利用 Envoy 和 Istio 构建可扩展和安全的云原生应用所需的知识和技能。行业大咖倾力推荐——中国信通院云计算与大数据研究所所长 何宝宏服务网格作为一种管理服务间通信的核心技术,为服务间的调用带来了便捷且可靠的流量、安全和可观测性等能力。中国信通院作为ICT领域的国家智库,率先牵头制定了服务网格相关标准。华为作为云原生领域的中坚力量,在该标准的编写过程中发挥了重要作用。《Istio权威指南》作为关于服务网格的专业技术书籍,对国内云原生技术的普及和发展将起到极大的促进作用。——上海交通大学致远讲席教授、国家杰青、IEEE/CCF Fellow 过敏意云原生技术已经成为产业界和学术界共同关注的热点之一。Istio作为一种集成了流量、安全和可观测性等能力的透明服务治理平台,有效推动了服务网格在云生产环境下的应用和普及。《Istio权威指南》作为服务网格领域的权威书籍,凝聚了华为云云原生团队长期积累的丰富经验,深入浅出地对Istio相关技术进行了详尽解读,值得相关从业者、技术爱好者和学术研究者阅读、参考。——CNCF中国区总监、Linux Foundation亚太区战略总监Keith ChanIstio一直是云原生领域非常流行的开源项目,是CNCF组织的各类会议上的热门话题。华为一直是云原生开源活动的积极参与者,在Kubernetes和Istio等项目中都有着突出的贡献。《Istio权威指南》由华为云云原生团队倾力打造而成,其理论结合实践,深度剖析了Istio的原理、实践、架构与源码,对于企业面向云原生架构转型及践行服务网格落地都有很大的参考意义。——华为云首席产品官 方国伟云原生极大地提高了企业应用生产力,缩短了应用的上市时间,降低了应用上云的门槛。服务网格作为云原生技术栈中的关键技术之一,可以帮助用户打造“以应用为中心”的云原生基础设施。《Istio权威指南》作为系统介绍服务网格技术Istio的权威书籍,来源于在Istio社区及产品领域耕耘多年的华为云云原生团队的长期工程实践和宝贵经验积累,值得广大云原生技术爱好者阅读、参考。——Istio TOC Member、Director of Open Source at Solo.io Lin SunIstio是当今生产环境下非常流行、部署非常广泛的服务网格技术。如果您已经了解Istio并想从基本概念、API、架构、各组件的源码等方面深入研究Istio,那么《Istio权威指南》适合您阅读。本书是非常实用且有深度的Istio书籍,其涵盖的Istio组件工作流和图表的深度给我留下了特别深刻的印象。希望您喜欢本书,我代表Istio社区祝您学习Istio愉快!——Istio TOC Member、Istio SC Member、Google Staff Engineer John Howard加入CNCF,标志着Istio向服务网格的事实标准迈出了关键的一步。《Istio权威指南》由来自Istio指导委员会、Istio社区等的Istio资深开发人员编写而成,是非常全面、深入地讲解Istio技术的权威书籍,内容涵盖Istio的原理、实践、架构与源码。无论您是初学者、云原生技术专家,还是Istio社区的贡献者,都可以从中获益。——Envoy与Istio核心维护者、Tetrate.io前创始工程师 周礼赞《Istio权威指南(上)》讲解了Istio的原理、各种使用场景和优秀实践,《Istio权威指南(下)》讲解了Istio控制面和数据面Envoy的内部架构及源码实现。这两本书深入剖析了Istio的内部架构,可以帮助您更充分地理解Istio的工作原理和实现,从而更好地应用Istio并进行Istio调优。凝聚深厚实践 行业问鼎力作华为云应用服务网格华为云在2018年率先发布全球首个Istio商用服务:应用服务网格 ASM (Application Service Mesh,)。ASM 是一个拥有高性能、高可靠性和易用性的全托管服务网格。作为分布式云场景中面向应用的网络基础,ASM 对多云、混合云环境下的容器、虚拟机、Serverless、传统微服务、Proxyless 服务提供了应用健康、韧性、弹性、安全性等的全方位管理。华为云应用服务网格(ASM)也已服务于互联网、汽车、制造、物流、政府等多个行业的近千家客户,满足不同行业客户的业务诉求。华为云将在此过程中积累的丰富经验,转化为代码贡献给Istio社区,极大地推动了 Istio 技术的成熟和社区的快速发展。华为云 Istio 社区贡献作为最早一批投身云原生技术的厂商,华为云是 CNCF 在亚洲唯一的初创成员。华为云云原生团队从 2018 年开始积极参与 Istio 社区的活动,参与 Istio 社区的版本特性设计与开发,基于用户的共性需求开发了大量大颗粒特性。团队成员入选了每届 Istio 社区指导委员会,当前有2名指导委员会成员(全球仅 8 家公司 13 人),参与 Istio 社区的重大技术决策,持续引领了 Istio 项目和服务网格技术的发展。另外 Maintainer 2 名,Member 10+名,Pull Request 位于全球TOP 3,中国第一,Contributions TOP 3(2.3w+)。华为云云原生团队华为云云原生团队创建于2013年,是国内较早从事云原生研究的团队之一,也是CNCF的初创成员和白金会员。华为云在容器、服务网格、微服务等云原生技术领域都有着深厚的沉淀,拥有10多名CNCF项目维护者,对 Kubernetes、Istio 等核心项目的贡献一直位居全球前列,并向CNCF捐献了 KubeEdge、Volcano、Karmada 等知名项目。基于 CNCF 的开源生态,华为云还打造了云容器引擎、云容器实例、应用服务网格等一系列优质的商业化云原生服务。为进一步推广云原生技术,加速云原生在行业中落地,华为云联合CNCF、中国信通院及业界云原生技术精英们成立了全球云原生交流平台——创原会。创原会创原会是 CNCF、中国信通院、华为云及业界云原生技术精英们联合成立的全球云原生交流平台,旨在通过研究前沿云原生技术及共享产业落地实践,探索云原生与业务融合的无限可能。自 2020 年成立至今,创原会已在中国、东南亚、拉美、欧洲陆续成立分会并举办活动 50 余场,为全球技术精英们提供了一个优质、高端、开放的交流平台,并吸纳近 300 位 CTO、技术总监成为会员,极大地促进了云原生在全球各行业中的普及和落地。对本书感兴趣,可链接直达− 《Istio权威指南(上):云原生服务网格Istio原理与实践》(张超盟,徐中虎,张伟,冷雪) https://item.jd.com/13938046.html− 《Istio权威指南(上):云原生服务网格Istio架构与源码》(张超盟,徐中虎,张伟,冷雪)https://item.jd.com/13938046.html添加小助手k8s2222进入华为云云原生团队Istio技术交流群
-
【荷兰,阿姆斯特丹,2023年4月21日】当地时间4月21日上午,在荷兰阿姆斯特丹举办的KubeCon + CloudNativeCon Europe 2023云原生峰会上,CNCF董事、华为首席开源联络官任旭东宣布,云原生多沙箱容器运行时Kuasar正式开源。Kuasar是华为云在容器运行时层面技术积累和探索的表现,其开源标志着华为云在该层面的技术和生态布局进一步完善。该项目计划后续捐赠给 CNCF,以促进云原生技术的发展。生态合作 华为云一直积极参与并推动云原生技术发展,已先后发布云原生边缘计算项目KubeEdge、批量计算项目 Volcano、多云容器编排项目 Karmada 等一批优秀云原生开源项目,受到开源社区的广泛欢迎和肯定。Kuasar 项目由华为云、中国农业银行以及 openEuler 社区、WasmEdge 社区和Quark Containers 社区等联合发起,既有企业在容器运行时领域的技术积累和生产实践,又有开源社区在沙箱隔离技术层面的前沿探索和发展洞察,可以为企业和开发者提供详实有效的实践指导与帮助。使用 Kuasar,企业和开发者可以打破此前集群维度的沙箱壁垒,构建运维便捷、安全隔离、高效低噪的多沙箱容器资源池,满足云原生全场景下业务对容器运行时的诉求。“Kuasar的开源将为广大开发者提供更多的选择和支持,为用户带来更高效、完善、灵活的云原生场景容器解决方案。”——华为首席开源联络官任旭东“Kuasar 能同时无缝调度包括 WasmEdge 在内的多种安全应用容器。这是 WasmEdge 用户,尤其是搭建微服务、边缘应用与 AI 大模型应用的开发者一直在寻找的解决方案。”——WasmEdge项目创始人Michael Yuan“openEuler是全场景化的操作系统,但云、边、端对容器基础设施有差异化诉求。Kuasar 创新性支持多种沙箱混合部署、连接不同生态系统,满足多样化场景的要求,助力openEuler伙伴实现灵活、多样的容器化底座。”——openEuler 技术委员会主席胡欣蔚云原生多沙箱容器运行时 Kuasar 介绍随着企业数字化转型的深入,企业业务愈益关注云上创新和精益运营,“深度云化”对云原生技术提出了更高的要求。为了满足企业在云原生场景下的诉求,业界出现了多种容器隔离技术——我们统一称之为“沙箱”:包括基于内核的原生容器沙箱、基于轻量级虚拟化技术的 microVM 沙箱、基于进程级虚拟化的 App Kernel 沙箱,以及新兴的 WebAssembly 沙箱。然而,在实际的生产落地过程中,应用云原生的沙箱技术仍面临如下挑战:各类云原生场景对沙箱提出更高要求沙箱技术各有优劣,单一沙箱无法同时满足用户云上业务对安全隔离、极速低噪、标准通用等多个维度的要求,如何实现云原生业务场景全覆盖成为越来越多企业面临的问题。支持多类沙箱带来运维压力显著上升 当前业界沙箱技术对接容器运行时的实现缺乏统一开发框架,因此关键日志、重要事件、沙箱管理逻辑等均存在差异,新引入沙箱的同时运维压力陡增。Kuasar 结合了华为云多年生产业务实践以及对沙箱技术发展的思考,基于业界新兴的沙箱接口实现。在保留传统容器运行时功能的基础上,通过全面 Rust 化以及优化管理模型和框架等手段,进一步降低管理开销、简化调用链路,灵活扩展对业界主流沙箱技术的支持,实现云原生业务场景全覆盖。此外,通过支持多安全沙箱共节点部署,Kuasar可以充分利用节点资源、降本增效,为用户提供更安全高效的沙箱场景解决方案。Kuasar项目全景未来可期 目前,在南向沙箱层面,Kuasar 已经支持包括 Cloud-Hypervisor(MicroVM类)、WasmEdge(Wasm类)、StratoVirt(MicroVM类)、Quark(App Kernel)在内的多类主流安全沙箱,Kuasar 与 openEuler、WasmEdge 社区的深度合作正在进行中,Kuasar 项目也期待与更多沙箱项目或社区开展合作,持续完善对各类主流沙箱技术的支持。在北向接口层面,Kuasar 正在与业界主流容器运行时 containerd 联合构建最新的沙箱接口标准,已经加入 containerd v2.0 的版本路标;此外,openEuler 社区的轻量级容器引擎 iSulad 项目也已经完成与Kuasar项目的对接。面向未来,作为一个开放和可扩展的 多沙箱容器运行时,Kuasar 将发挥沙箱接口的优势,拥抱业界最新的 DRA(Dynamic Resource Allocation)、CDI(Container Device Interface) 等管理接口,为云原生场景带来更安全、高效、便捷的容器解决方案,为云原生应用提供更安全的保障。Kuasar官网:https://kuasar.io项目地址:cid:link_0添加社区小助手k8s2222进入社区交流群
-
[技术干货] 2023-04-20:有一堆石头,用整数数组 stones 表示 其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎 假设石头的重量分别为 x 和2023-04-20:有一堆石头,用整数数组 stones 表示 其中 stones[i] 表示第 i 块石头的重量。 每一回合,从中选出任意两块石头,然后将它们一起粉碎 假设石头的重量分别为 x 和 y,且 x <= y 那么粉碎的可能结果如下: 如果 x == y,那么两块石头都会被完全粉碎; 如果 x != y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。 最后,最多只会剩下一块 石头。 返回此石头 最小的可能重量。 如果没有石头剩下,就返回 0。答案2023-04-20:算法流程:遍历一遍所有石头,计算石头总重量 sum;计算目标重量 target = sum / 2;使用动态规划求解在限制条件下可以得到的最大重量;返回石头总重量减去两堆石子的总重量之差,即为最小重量差。动态规划过程:定义状态:设 dp[i][j] 表示前 i 个石头在限制条件下可以得到的最大重量;初始化状态:dp[0][j] = 0,表示前 0 个石头在限制条件下无法得到任何重量;dp[i][0] = 0,表示在不限制目标重量的情况下无法得到任何重量;状态转移方程:对于第 i 个石头,有两种选择:取或不取。若不取,则当前石头对总重量贡献为0,即 dp[i][j] = dp[i-1][j]。若取,则当前石头会对总重量产生贡献,贡献值为当前石头重量 stones[i-1] 加上前 i-1 个石头在目标重量为 j - stones[i-1] 下可以得到的最大重量 dp[i-1][j-stones[i-1]],即 dp[i][j] = dp[i-1][j-stones[i-1]] + stones[i-1]。因此可以得到状态转移方程:dp[i][j] = max(dp[i-1][j], dp[i-1][j-stones[i-1]]+stones[i-1])最终结果:返回 sum - 2 * dp[n][target]。其中,max 函数用于计算两个整数中的较大值。注意:由于题目要求粉碎的重量差最小,因此需要将石头分为两组,使它们的重量之差最小。因此在计算完一组石头的最大重量后,还需要用总重量减去两堆石子的总重量之差,以得到另一组石头的重量。时间复杂度:该算法使用了动态规划方法,在遍历石头和目标重量的过程中,对于每个子问题都需要计算一次最大重量,因此时间复杂度为 $O(n \times \text{half})$,其中 $n$ 是石头数量,$\text{half}$ 是目标重量的一半。空间复杂度:在使用动态规划求解最大重量的过程中,需要使用一个二维数组 dp 来保存所有子问题的计算结果。因此空间复杂度为 $O(n \times \text{half})$。但由于每次迭代只需要使用到上一次迭代的结果,因此可以使用滚动数组将空间复杂度优化到 $O(\text{half})$。go完整代码如下:package main import "fmt" func lastStoneWeightII(stones []int) int { n := len(stones) sum := 0 for _, num := range stones { sum += num } half := sum / 2 dp := make([][]int, n+1) for i := range dp { dp[i] = make([]int, half+1) } for i := n - 1; i >= 0; i-- { for rest := 0; rest <= half; rest++ { p1 := dp[i+1][rest] p2 := 0 if stones[i] <= rest { p2 = stones[i] + dp[i+1][rest-stones[i]] } dp[i][rest] = max(p1, p2) } } return sum - dp[0][half]*2 } func max(x, y int) int { if x > y { return x } return y } func main() { stones := []int{2, 7, 4, 1, 8, 1} fmt.Println(lastStoneWeightII(stones)) // expected output: 1 stones = []int{31, 26, 33, 21, 40} fmt.Println(lastStoneWeightII(stones)) // expected output: 5 }rust代码如下:fn last_stone_weight_ii(arr: Vec<i32>) -> i32 { let n = arr.len(); let sum = arr.iter().sum::<i32>(); let half = sum / 2; let mut dp = vec![vec![0; half as usize + 1]; n + 1]; for i in (0..n).rev() { for rest in 0..=half { let p1 = dp[i + 1][rest as usize]; let mut p2 = 0; if arr[i] <= rest as i32 { p2 = arr[i] + dp[i + 1][(rest - arr[i]) as usize]; } dp[i][rest as usize] = p1.max(p2); } } (sum - dp[0][half as usize] * 2) as i32 } fn main() { let stones = vec![2, 7, 4, 1, 8, 1]; let ans = last_stone_weight_ii(stones); println!("{}", ans); // 输出 1 let stones = vec![31, 26, 33, 21, 40]; let ans = last_stone_weight_ii(stones); println!("{}", ans); // 输出 5 }
-
部署3台ceph 节点,如下:[root@ceph-1 ceph]# cat ceph.conf[global]fsid = 835f6d27-8e03-4f7f-8d21-b0a26993b529mon_initial_members = ceph-1mon_host = 172.24.193.62auth_cluster_required = cephxauth_service_required = cephxauth_client_required = cephxmon_allow_pool_delete=trueosd_pool_default_size = 2[root@ceph-1 ~]# ceph -s cluster: id: 835f6d27-8e03-4f7f-8d21-b0a26993b529 health: HEALTH_OK services: mon: 1 daemons, quorum ceph-1 mgr: ceph-1(active) osd: 3 osds: 3 up, 3 in data: pools: 1 pools, 128 pgs objects: 510 objects, 1.9 GiB usage: 6.8 GiB used, 233 GiB / 240 GiB avail pgs: 128 active+clean[root@ceph-1 ~]# ceph osd status+----+--------+-------+-------+--------+---------+--------+---------+-----------+| id | host | used | avail | wr ops | wr data | rd ops | rd data | state |+----+--------+-------+-------+--------+---------+--------+---------+-----------+| 0 | ceph-1 | 2170M | 77.8G | 0 | 0 | 0 | 0 | exists,up || 1 | ceph-2 | 2376M | 77.6G | 0 | 0 | 0 | 0 | exists,up || 2 | ceph-3 | 2456M | 77.5G | 0 | 0 | 0 | 0 | exists,up |+----+--------+-------+-------+--------+---------+--------+---------+-----------+[root@ceph-1 ceph]# ceph auth lsinstalled auth entries:osd.0 key: AQDH9qNjHRvdDBAAIS8klDI+PhUUSAwlxmEhKA== caps: [mgr] allow profile osd caps: [mon] allow profile osd caps: [osd] allow *osd.1 key: AQDf9qNjNSttFRAA28htGbtUWAYBxK9kacVHXQ== caps: [mgr] allow profile osd caps: [mon] allow profile osd caps: [osd] allow *osd.2 key: AQDu9qNj43mtGRAAJ4tAU5Ie9carFkhRcwnMnQ== caps: [mgr] allow profile osd caps: [mon] allow profile osd caps: [osd] allow *client.admin key: AQC+86NjAev/HRAAD/wXEPaDVlEOWMn0H2x8ng== caps: [mds] allow * caps: [mgr] allow * caps: [mon] allow * caps: [osd] allow *client.bootstrap-mds key: AQC+86NjHAIAHhAAm0L2LXEzwRx7ijTBMlsmSQ== caps: [mon] allow profile bootstrap-mdsclient.bootstrap-mgr key: AQC+86Nj4xEAHhAADcU3pbq04mk4wK8DxNH6hA== caps: [mon] allow profile bootstrap-mgrclient.bootstrap-osd key: AQC+86NjryAAHhAAzCw13oaWl8EvdrVRCqc+wQ== caps: [mon] allow profile bootstrap-osdclient.bootstrap-rbd key: AQC+86NjEDAAHhAAWev9IkV4zd6gSoUjEEK2ZA== caps: [mon] allow profile bootstrap-rbdclient.bootstrap-rgw key: AQC+86NjXz4AHhAADlfczh0/8voJZuDWkHaJ9w== caps: [mon] allow profile bootstrap-rgwclient.libvirt key: AQDULP9jtWHCMxAAfIBCbNynpHADCYMwQr8xpg== caps: [mon] allow r caps: [osd] allow class-read object_prefix rbd_children, allow rwx pool=libvirt-poolmgr.ceph-1 key: AQAF9KNj6Io3OBAAX6koyzKcwSn+IL5IemY3xg== caps: [mds] allow * caps: [mon] allow profile mgr caps: [osd] allow *在ceph client 上创建vm ,使用ceph rbd 访问 ceph pool libvirt-pool里的qcow2 镜像: 43 <emulator>/usr/local/bin/qemu-system-x86_64</emulator> 44 <disk type='network' device='disk'> 45 <driver name='qemu' type='raw' cache='writeback'/> 46 <auth username='libvirt'> 47 <secret type='ceph' uuid='8187dd57-7e0d-4a9d-8e5a-fe5234d40e51'/> 48 </auth> 49 <source protocol='rbd' name='libvirt-pool/root-vsys_c1.qcow2'> 50 <host name='172.24.193.62' port='6789'/> 51 <host name='172.24.193.63' port='6789'/> 52 <host name='172.24.193.64' port='6789'/> 53 </source> 54 <target dev='vda' bus='virtio'/> 55 <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> 56 </disk>在ceph-client 上可以利用 client.libvirt 用户访问 ceph 上的libvirt-pool ,如下:如上图卡了,看样子是找不到启动盘了。。。libvirtd 把 root-vsys_c1 xml 中的 启动 虚拟机的命令如下:[root@ceph-client-65 ceph]# rbd --user libvirt ls libvirt-poolroot-vsys_c1.qcow2而我不通过virsh start xxx 方式启动vm,采取直接qemu 启动,则可以成功进入vm 内部,并正常引导kernel这种方式和virsh 方式的不同点,就是 qemu 没有同ceph 进行cephx 验证吧。本人怀疑是 ceph client 接入ceph 认证导致的,可是我都已经参考了此ceph 官网链接:https://docs.ceph.com/en/quincy/rbd/libvirt/ 反复检查了。在创建vm 的客户端节点上都可以访问ceph 集群内。希望有从事ceph 分布式存储这方面实战经验的高手多多指教下这个现象出现的原因及解决方法。谢谢!
-
应如何基于DME引擎搭建自己所需的企业资产管理系统呢?
-
请问这个活动奖品发放找谁啊??这么久了一直没有快递消息,私信也一直没有回复 谢谢大家【活动已结束】开发者趣味填词,赢华为FreeBuds Pro 2无线耳机_社区活动_华为云论坛 (huaweicloud.com)
-
已经完成华为云实践。
-
完成实操截图实践一:10分钟开发我的个人主页实践二:OBS自动化文件解压实践三:定时拨测场景学习笔记Serverless直译为中文是“无服务器”,但是实际上它仍需要服务器,只不过服务器的管理以及资源分配部分对用户不可见,为避免误导读者,译文中还是将英文保留。最开始,一台单用户的物理服务器便能满足我们的日常所需,它快速,可靠并且安全,只对管理员负责。但是在实际中配置和扩展都很麻烦。虚拟机的出现满足了灵活性和可扩展性的需求,之后云服务提供商为我们带来了基础架构即服务(IaaS),云平台自助服务也由此诞生。在这片肥沃的土壤中出现AWS(Amazon Web Services),编排,以及基础设施即代码(IaC),之后开始了集装箱化,带来了平台即服务(PaaS)的架构,一切看起来都很顺利......但程序员仍想要更多的功能,如独立于编程语言(language agnostic)的端点,服务器的水平伸缩能力,以及可以实时支付服务使用量的能力。为了满足这些需求,Serverless计算应运而生,Serverless计算也被称为功能即服务(FaaS)。运行时只会执行程序但不会存储数据。这意味着像AWS(Amazon Web Service),谷歌云以及微软Azure云这样的云服务提供商会动态的管理资源的分配和分布。Serverless是付完即走,基于实际的消费而不是基于预测的预付款进行收费的。这本是基础设施应该有的样子,在2018年终于出现在我们面前。
-
在2022年的年末,华为云DTSE Tech Talk迎来了年度收官圆桌π直播活动(👉 点击回看),8位DTSE技术布道师和开发者们畅谈云上创新应用,回顾盘点了今年的关键技术产品,展望2023年在新产品和技术上的新规划。作为本次圆桌π的主持人,华为云DTSE技术布道师徐毅从π的无限谈起,表达了对开发者们的新年祝福:未来有无限的可能等待着开发者探索,愿大家通过DTT与华为云在云上共成长。1、程泽:更好地支持开发者做SaaS应用构建华为云DTSE技术布道师程泽回顾总结了在前几期直播中,他是如何指导开发者选择合适的开发框架将SaaS应用系统部署在云上,并通过云上运维平台构建SaaS应用运维系统,以及企业要着重注意的SaaS应用构建安全性问题。除了SaaS架构基础设计层面的内容,程泽表示,2023年会重点关注新租户创建升级时,后端资源的平滑创建和自动化部署, 比如通过指令来实现云资源的创建、更新销毁、全生命周期管理等等,为有需要的企业和开发者提供更丰富的的技术资料,支持大家做SaaS应用的构建。2、董鑫武:零代码将释放IT产能,改变软件生产关系围绕当下火热的低代码和零代码,华为云PaaS DTSE技术布道师董鑫武总结了整体的趋势:当前低代码已经进入了组装式应用交付的新范式,零代码在未来则可以让业务人员从事相关应用的构建,让IT的产能得以释放,从而改变当前的软件生产关系。董鑫武透露,在2023年,华为云的低代码平台进行了全新的品牌升级——Astro,并推出5大产品:IOC大屏Astro Canvas、工作流Astro Flow、轻应用Astro Zero、智能助手Astro Bot、复杂应用Astro Pro。“星垂平野阔,月涌大江流,华为云邀开发者一起构建给代码璀璨的星空。”3、金云飞:明年推出数字内容的四大生产线华为云媒体DTSE技术布道师金云飞表示,当前华为云会议为企业和开发者提供服务端和客户端开发能力, 可以满足政企办公市场、行业应用市场以及一些跨界创新产品应用,诸如企业培训、在线教育、应急指挥等等场景。华为云低时延直播产品将时延降低到800ms以内,可满足电商直播、教育直播、赛事直播等时延敏感业务的诉求。从2022年下半年开始,云桌面API也正式对外开放,开发者可以便捷的接入和调用。围绕数字内容生产,华为云在明年将推出四大生产线:数字人生产线、虚拟直播生产线、企业3D空间生产线,虚实融合生产线, 具备数字内容的建模、生产、渲染、资产管理、编辑能力,让开发者得以通过开放的SDK和API来构建数字内容。4、许炳尘:APIG支持每秒50万以上的API并发调用在数字化浪潮的大背景下,API已经成为了关键的数字化转型的推动力。API既是数据交换的通道,也是研发生产的工具,同时还是企业和开发者最核心的资产。华为云PaaS DTSE技术布道师许炳尘讲到,一个API项目是否成功,最关键的还是在于API的运行的情况,这也是整个API全生命周期管理的核心。华为云API Arts通过插件的形式集成了云原生网关APIG,来实现API的运行托管和监控运维, APIG目前单集群已经能够支持每秒50万以上的API并发调用。许炳尘表示,2023年华为云会继续完善和强化API Arts和APIG,提供更完整更丰富的API全生命周期管理能力。并且通过API Arts和APIG,进一步降低API的研发使用门槛,更加契合云原生,从而满足企业和开发者越来越丰富的API管理需求。5、杜奇:提供更多行业专用算法workflow,推动AI应用落地AI的应用落地正在改变一些传统行业,华为云EI DTSE技术布道师杜奇和大家分享了两个有趣的案例:AI养牛、AI抄水表。以AI抄水表为例,为了解决伙伴遇到的人工抄表的痛点,华为云开发了一套水表识别模型的定制化和自主训练工具, 将数据导入、数据集创建、数据标注、数据处理、模型训练、模型管理、模型上线等复杂的步骤,按照业务流程封装成一个格节点,便于后续反复迭代开发,支持识别更多种类的水表。谈及明年的规划,杜奇表示华为云AI产品将会和大数据等产品服务打通,同时提供更多行业专用算法workflow,帮助开发者低门槛高效率完成AI应用开发。6、覃元元:从日志服务领域的追随者成长为领导者华为云PaaS DTSE技术布道师覃元元总结了22年日志服务方面的主要工作内容:补齐各种英文日志来源的接入场景;提供API、SDK、Android及iOS等端测的接入方式和接入场景指导; 完善整体日志管理的界面,在日志搜索页面优化搜索体验;完善仪表盘及日志告警等内容。2023年,华为云LTS日志服务会进一步去完善。在日志采集方面,补齐自研的SA采集器的日志解析能力,提供更多的SDK,完善转储能力;在日志加工方面,提供端到端的控制台面;在搜索方面,将会推出百亿级秒级搜索以及千亿级的迭代搜索,为用户提供更好地搜索体验。覃元元讲到,通过在采集、搜索、日志加工等方面的持续发力,2023年华为云LTS日志服务会成为在日服领域从追随者逐渐的演变为一个领导者。7、刘坤鹏:GaussDB(DWS)让人人都可以用好数据华为云EI DTSE技术布道师刘坤鹏分析了当前各行各业在数据处理分析方面遇到的挑战,华为云GaussDB(DWS)提供的全场景一站式分析能力,让人人可以用好数据。GaussDB(DWS)是基于share-nothing的无共享分布式架构,具有极高的扩展性,刘坤鹏从技术架构、高可用、容灾、备份体系、智能运维、迁移能力等方面,为开发者一一解读了GaussDB(DWS)背后的关键技术,核心优势等。刘坤鹏表示,2023年,华为云将配合产品版本的迭代,围绕应用场景、架构、工具以及生态等,推出更多直播课程。同时,也会分享开发者关注的数据库设计原则、SQL调优技巧、业务典型故障处理案例,让大家用好GaussDB(DWS)。最后提前祝所有开发者们新年快乐!!!在新的一年心想事成,技术更上一层楼。
-
大家一起来看吧,人工智能画作
上滑加载中
推荐直播
-
华为云码道 × 仓颉编程:工程化AI编码探索2026/05/27 周三 19:00-21:00
刘俊杰-华为云仓颉语言专家/李炎-华为云码道技术专家/王智鹏-OpenCangjie开源社区发起人
本场直播围绕华为云仓颉语言与华为云码道的深度结合,展示华为云智能编程从零基础到高效落地的完整生态能力。以华为云码道为引擎,仓颉语言为载体,带给大家日常提效、趣味创新到极速量产的开发体验。
回顾中
热门标签