【AI+编程】AI工具(通义灵码)编写yaml转换properties工具类思考

需求背景:由于公司安装的apollo比较老,虽然新版本已经支持yaml格式了,但升级apollo代价比较大,有个项目配置文件之前放在项目里基于yaml编写的,最近想切换到apollo存储配置文件。

先百度了下,找了一个在线网站 https://www.toyaml.com/ , 想了想 配置文件涉及到一些隐私,使用在线网站转码不是太安全。萌生写一个yaml转 properties的工具类想法。 这里以JAVA为例

【人工智能】为啥我最近很少写python编程文章了,浅谈AI+编程+RPA提升工作效率 在这篇文章中, 我已经在IntelliJ IDEA2023.3.4 中安装好通义灵码,下面就以idea中的通义灵码为例。

最初我不假思索直接提问: 请用java语言生成yaml转换properties工具类, 最后的结果可想而知,没达到自己想要的效果。

问题1、properties生成格式不正确。期望yaml包含多层树形结构,要求生成的properties也要使用多层。

问题2、properties生成的顺序杂乱无章,期望按照yaml的顺序

问题3:yaml里包含注释,AI没考虑到注释情况

通过一步一步调教,最后得到可运行的代码。示例如下:

import org.yaml.snakeyaml.Yaml;
import java.io.;
import java.nio.charset.StandardCharsets;
import java.util.
;
import org.yaml.snakeyaml.Yaml;

public class YamlToProps {

public static void main(String[] args) throws IOException {String inputPath = "xxxx.yml";String outputPath = "xxxx.properties";convertYamlToProperties(inputPath, outputPath);}public static void convertYamlToProperties(String inputPath, String outputPath) throws IOException {// 读取 YAML 文件Yaml yaml = new Yaml();FileInputStream fis = new FileInputStream(inputPath);Reader reader = new InputStreamReader(fis, StandardCharsets.UTF_8);Map<String, Object> yamlContent = yaml.load(reader);// 使用扩展的 Properties 类存储结构化数据OrderedProperties props = new OrderedProperties();// 遍历 YAML 内容并转换到 Properties 中convertToProperties(yamlContent, "", props);// 保存到 properties 文件try (OutputStream output = new FileOutputStream(outputPath)) {props.store(output, null);}
}private static void convertToProperties(Map<String, Object> content, String prefix, OrderedProperties props) {for (Map.Entry<String, Object> entry : content.entrySet()) {String key = prefix.isEmpty() ? entry.getKey() : prefix + "." + entry.getKey();Object value = entry.getValue();if (value instanceof Map) {// 处理内嵌 Map 结构convertToProperties((Map<String, Object>) value, key, props);} else if (value instanceof List) {// 如果值是列表,这里可以根据需求转换为逗号分隔的字符串或其他适合Properties的形式// 示例:props.put(key, String.join(",", (List<String>) value));} else {// 添加常规键值对props.put(key, value.toString());}}
}// 自定义扩展 Properties 类以保持顺序
static class OrderedProperties extends LinkedHashMap<String, String> {public synchronized Enumeration<Object> keys() {return Collections.enumeration(new ArrayList<>(keySet()));}public void store(OutputStream out, String comments) throws IOException {BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(out,  StandardCharsets.UTF_8));if (comments != null && !comments.isEmpty()) {bw.write("# " + comments.replace("\n", "\n# "));bw.newLine();}for (Map.Entry<String, String> entry : this.entrySet()) {bw.write(entry.getKey() + "=" + entry.getValue());bw.newLine();}bw.flush();}
}

}

代码生成好后,代码执行得到自己想要的工具类。

其实我们会发现, AI需要我们提供准确的话术才能一步步达到自己想要的结果,我们要对它提要求 和验收标准。 这就和产品经理给程序员提需求一样, 我们好比一个产品经理,AI工具相当于开发工程师, 如果产品经理提需求不具体,由于每个人的思维理解不一致(包括产品经理、开发工程师、测试工程师),可能做出来的东西和需求方不一样。需求细节沟通在项目整个过程中,真的很重要。

我最后想说,AI工具只是辅助, 我们的大脑思维才是 解决问题的关键。

原文链接:https://mp.weixin.qq.com/s?__biz=MzI5NDAzNzExNw==&mid=2247484322&idx=1&sn=bc8d3f2cfdee902875cfb4a82e31598b&chksm=ec69b0b0db1e39a62c271cf9e41bf4aa71d0468cad339880461763f5833deaa5afb83fa6bd76&token=2090601571&lang=zh_CN#rd

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/786657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

plasmo内容UI组件层级过高导致页面展示错乱

我使用plasmo写了一个行内样式的UI组件&#xff0c;但是放到页面上之后&#xff0c;会和下拉组件出现层级错乱&#xff0c;看了一下样式&#xff0c;吓我一跳&#xff1a;层级竟然设置的如此之高 所以就需要将层级设置低一点&#xff1a; #plasmo-shadow-container {z-index: …

使用node更加方便的操作mysql数据库的小工具

这是一个自己封装的小工具,能够更加方便的操作数据库 地址: 工具首页 git仓库地址 功能还在继续开发当中… 安装 npm install mysqinfo已经引入mysql工具包,无需在项目中再次引入mysql工具包 导入 const db require(mysqinfo)获取数据库对象 // db.dbconnect(mysql地址,mys…

HTTPS ECDHE 握手解析(计算机网络)

使用了 ECDHE&#xff0c;在 TLS 第四次握手前&#xff0c;客户端就已经发送了加密的 HTTP 数据&#xff0c;而对于 RSA 握手过程&#xff0c;必须要完成 TLS 四次握手&#xff0c;才能传输应用数据。 所以&#xff0c;ECDHE 相比 RSA 握手过程省去了一个消息往返的时间&#…

【计算机网络】select/poll

多路转接 - select/poll 一、I/O 多路转接之 select1. select 接口2. select 的使用3. select 的优缺点 二、I/O 多路转接之 poll1. poll 接口2. poll 的使用3. poll 与 select 的对比 一、I/O 多路转接之 select 多路转接属于 IO 复用方式的一种。系统提供 select() 函数来实…

Pinia的数据持久化

Pinia的数据持久化可以通过多种方式实现&#xff0c;例如使用vuex-persistedstate插件或专门为Pinia设计的插件如pinia-plugin-persist。下面我将通过一个简单的例子来说明如何使用Pinia及其数据持久化功能。 假设我们有一个简单的Vue 3应用程序&#xff0c;其中包含一个用户模…

R语言,数据类型转换

原文链接&#xff1a;R语言技能 | 不同数据类型的转换 本期教程 写在前面 今天是4月份的第一天&#xff0c;再过2天后再一次迎来清明小假期。木鸡大家是否正常放假呢&#xff1f; 我们在使用R语言做数据分析时&#xff0c;会一直对数据进行不同类型的转换&#xff0c;有时候…

【阅读笔记】《博物馆之眼》

笔记 “不论你踏进哪一所博物馆之前&#xff0c;适当地了解它的历史和藏品内容会给你极大的帮助&#xff0c;正如一份好的攻略会让你的旅途大大增值。” 上篇 博物馆文化现象 大英博物馆的第一批藏品由一个医生在死前捐给英国王室&#xff0c;王室随机修建了大英博物馆。 明长…

百度网站收录提交入口

百度网站收录提交入口 在网站刚建立或者更新内容后&#xff0c;及时将网站提交给搜索引擎是提高网站曝光和获取流量的重要步骤之一。百度作为中国最大的搜索引擎之一&#xff0c;网站在百度中的收录情况尤为重要。下面介绍一下如何通过百度的网站收录提交入口提交网站。 1. 百…

代码随想录算法训练营第39天|62.不同路径 |63. 不同路径 II

代码随想录算法训练营第39天|62.不同路径 |63. 不同路径 II 详细布置 62.不同路径 本题大家掌握动态规划的方法就可以。 数论方法 有点非主流&#xff0c;很难想到。 https://programmercarl.com/0062.%E4%B8%8D%E5%90%8C%E8%B7%AF%E5%BE%84.html 视频讲解&#xff1a;https…

封装表格组件,最后一列动态生成 vue3子组件通过slot传值向父组件

将表格二次封装&#xff0c;方便以后开发中的复用。每次只需调用表格组件后&#xff0c;在父组件中往子组件标签上写入dataSource&#xff08;表格数据&#xff09;和columns&#xff08;表格列标题&#xff09;即可。 此案例中最后一列是删除按钮&#xff0c;动态生成&#xf…

DFS2 C++

一、指数型枚举 1、题目&#xff1a; 从 1∼n1∼ 这 n 个整数中随机选取任意多个&#xff0c;输出所有可能的选择方案。 输入格式 输入一个整数 n。 输出格式 每行输出一种方案。 同一行内的数必须升序排列&#xff0c;相邻两个数用恰好 11 个空格隔开。 对于没有选任何…

Day29 多线程

Day29 多线程 一、什么是进程 进程是系统进行资源分配和调用的独立单元&#xff0c;每一个进程都有它的独立内存空间和系统资源。 二、单进程操作系统和多进程操作系统的区别 单进程操作系统&#xff1a;dos&#xff08;一瞬间只能执行一个任务&#xff09; 多进程单用户操作系…

Spire.PDF for .NET【文档操作】演示:合并 PDF 文件并添加页码

搜索了这么多有关 PDF 合并的信息后&#xff0c;很容易发现&#xff0c;无论您在线合并 PDF 文件还是使用 C#/VB.NET 来实现此任务&#xff0c;您都无法逃避对 PDF 文件安全等一些重要问题的担忧&#xff0c;因此需要花费多少时间或者合并后的文件是否支持打印页码等等。不过&a…

Python深度学习033:Python、PyTorch、CUDA和显卡驱动之间的关系

Python、PyTorch、CUDA和显卡驱动之间的关系相当紧密,它们共同构成了一个能够执行深度学习模型的高效计算环境。下面是它们之间关系的简要概述: Python Python 是一种编程语言,广泛用于科学计算、数据分析和机器学习。它是开发和运行PyTorch代码的基础环境。PyTorch PyTorc…

VSCode中6个AI顶级插件

Visual Studio Code (VSCode) 是通往一系列 AI 驱动的编码支持的门户。探索精心挑选的 VSCode 顶级扩展&#xff0c;这些扩展利用人工智能的强大功能&#xff0c;包括 GitHub Copilot、TabNine 等著名工具。 1. GitHub Copilot&#xff1a;你的强人工智能结对程序员 GitHub Co…

【Frida】【Android】 07_爬虫之网络通信库HttpURLConnection

&#x1f6eb; 系列文章导航 【Frida】【Android】01_手把手教你环境搭建 https://blog.csdn.net/kinghzking/article/details/136986950【Frida】【Android】02_JAVA层HOOK https://blog.csdn.net/kinghzking/article/details/137008446【Frida】【Android】03_RPC https://bl…

Word、Excel、PPT文件转PDF文件(C#)

一、添加依赖 为wpf项目引用Microsoft.Office.Interop.Excel、Microsoft.Office.Interop.PowerPoint、Microsoft.Office.Interop.Word、Office&#xff0c;依赖文件已经打到源代码包里了。 二、先定义一些命名空间 using Word Microsoft.Office.Interop.Word;using Excel M…

零基础入门转录组数据分析——DESeq2差异分析

零基础入门转录组数据分析——DESeq2差异分析 目录 零基础入门转录组数据分析——DESeq2差异分析1. 转录组分析基础知识2. DESeq2差异分析&#xff08;Rstudio&#xff09;3. 结语 1. 转录组分析基础知识 1.1 什么是转录组&#xff1f; 转录组&#xff08;transcriptome&#…

n1.线性表及其实现

1.引入—多项式表示 对于多项式&#xff0c;如何使用程序进行编写呢&#xff1f; 方法一&#xff1a;一维数组。下标对应未知数的指数&#xff0c;元素个体对应系数。缺点就是都得全部表示&#xff0c;系数为0项的存在浪费空间。例如&#xff0c;x只有一次方和2000次方&#…