【ChatGPT应用篇】助力Beauty代码的初体验 | 京东云技术团队

思考过程:

案例1:项目里面有Excel文件的解析场景,试着与ChatGPT进行了交互,现将问题整理如下:

1.给我写一个Java版本的excel导入解析代码 (毫不客气的分配任务)

2.需要支持100000000数据量 (业务需求变更)

3.优化代码需要支持10000000数据量 (降低数量级,减轻难度)

4.请采用面向对象的思想给做一下封装 (初级工程师 -> 中级工程师)

5.进一步面向接口编程,抽离业务 (中级晋升应该加一点泛型诉求,代码更Beauty)

6.替换掉 poi 采用EasyExcel (替换原始的默认技术选型,替换三方包)

7.进一步优化,能支持EasyExcel、POI自由切换 (问题没问好!本意是想让他进一步抽象,能基于SPI支持扩展点)

8.采用控制反转方式优化 (与问题5有重复)

9.提升解析性能,采用多线程并行解析优化 (中级工程->高级工程师)

10.提升程序效率,把解析性能在提升10倍 (架构师的成本意识,这个问题的回答有点意思)

11.采用Spring IOC 控制反转方式进一步封装 (与问题8有重复)

12.添加异常 logger 打印 (优化细节)

13.添加更多的中文代码注释 (增强易读性,优化细节)

14.将中文注释替换成英文注释 (_ 开始走向国际化)

15.日志错误信息支持 国际化 资源文件 (国际化的开始……)

16.把上面Excel解析的代码在给来个单元测试吧

17.…

案例2:项目里面一个ES深度分页优化的场景,问题整理如下:

1.Elasticsearch 深度分页问题

2.Elasticsearch 深度分页Java代码

3.以上代码采用面向IOC优化

4.进一步面向对象优化

5.基于泛型进行抽象

6.将 scroll API 替换为 searchafter

7.使用 spring data elasticsearch 优化并实现 search After

8.以上代码请采用jmeter 生成一个压测脚本

9.上面Spring Data Elasticsearch 实现 search after 的示例代码请采用 groovy 语言生成测试用例

案例2的代码就不贴出来了,大家感兴趣可以自行输入以上问题进行体验!

个人体会:程序领域问问题要采用专业术语,专业术语越强越能精准给予反馈!)

说明: 对于ChatGPT输出的代码没有做仔细的Review及调试,但是看代码风格基本上是改改就能用于生产的,对于代码规范、命名还是很认可的!

案例过程:

Happy Coding!Beauty Code!

以下是一个与ChatGPT 结对编程的一个Excel数据解析案例,大家可以根据我的思考过程进行体验,以下放了一些截图,ChatGPT的反应速度惊人,代码版本一步步进行迭代优化,感触较深的是真正的高质量低代码平台要应运而生了!

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.read.listener.ReadListener;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet as PoiSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class ExcelParser {private ParserType parserType;public ExcelParser(ParserType parserType) {this.parserType = parserType;}public List<Map<String, String>> parse(File file, int sheetIndex) throws IOException {if (parserType == ParserType.EASY_EXCEL) {return parseWithEasyExcel(file, sheetIndex);} else if (parserType == ParserType.POI) {return parseWithPoi(file, sheetIndex);} else {throw new IllegalArgumentException("Invalid parser type");}}private List<Map<String, String>> parseWithEasyExcel(File file, int sheetIndex) {List<Map<String, String>> data = new ArrayList<>();DataListener listener = new DataListener(data);ExcelReaderBuilder readerBuilder = EasyExcel.read(file, listener);Sheet sheet = new Sheet(sheetIndex + 1, 0);readerBuilder.sheet(sheet).doRead();return data;}private List<Map<String, String>> parseWithPoi(File file, int sheetIndex) throws IOException {List<Map<String, String>> data = new ArrayList<>();FileInputStream inputStream = new FileInputStream(file);HSSFWorkbook workbook = file.getName().endsWith(".xls") ? new HSSFWorkbook(inputStream) : new XSSFWorkbook(inputStream);PoiSheet sheet = workbook.getSheetAt(sheetIndex);List<String> headers = new ArrayList<>();for (Cell cell : sheet.getRow(0)) {headers.add(cell.getStringCellValue());}for (int i = 1; i <= sheet.getLastRowNum(); i++) {Row row = sheet.getRow(i);Map<String, String> record = new HashMap<>();for (int j = 0; j < headers.size(); j++) {Cell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);String value = "";switch (cell.getCellType()) {case STRING:value = cell.getStringCellValue();break;case NUMERIC:value = Double.toString(cell.getNumericCellValue());break;default:value = cell.getStringCellValue();break;}record.put(headers.get(j), value);}data.add(record);}workbook.close();inputStream.close();return data;}public static void main(String[] args) throws IOException {File file = new File("excel_file.xlsx");ExcelParser parser = new ExcelParser(ParserType.EASY_EXCEL);List<Map<String, String>> data = parser.parse(file, 0);System.out.println(data);}
}enum ParserType {EASY_EXCEL,POI
}class DataListener extends ReadListener<Data> {private List<Map<String, String>> data;private List<String> headers;public DataListener(List<Map<String, String>> data) {this.data = data;this.headers = new ArrayList<>();}@Overridepublic void onException(Exception exception) {// 处理异常}@Overridepublic void onReadError(Exception exception) {// 处理读取错误}@Overridepublic void onSheet(int sheetIndex, Sheet sheet) {// 处理工作表信息}@Overridepublic void onReadEnd() {// 读取结束}@Overridepublic void onHeadRow(Row row) {for (Cell cell : row) {headers.add(cell.getStringCellValue());}}@Overridepublic void onRecord(Data data) {Map<String, String> record = new HashMap<>();for (int i = 0; i < headers.size(); i++) {record.put(headers.get(i), data.getField(i));}this.data.add(record);}
}class Data {@ExcelProperty(index = 0)private String name;@ExcelProperty(index = 1)private int age;

import com.alibaba.excel.annotation.ExcelProperty;
import java.util.List;
import java.util.Map;public class ExcelParser {private SheetParser sheetParser;public ExcelParser(SheetParser sheetParser) {this.sheetParser = sheetParser;}public List<Map<String, String>> parse(String fileName, int sheetIndex) throws Exception {return sheetParser.parse(fileName, sheetIndex);}public static void main(String[] args) throws Exception {String fileName = "excel_file.xlsx";SheetParser sheetParser = new EasyExcelSheetParser();ExcelParser parser = new ExcelParser(sheetParser);List<Map<String, String>> data = parser.parse(fileName, 0);System.out.println(data);}
}interface SheetParser {List<Map<String, String>> parse(String fileName, int sheetIndex) throws Exception;
}class EasyExcelSheetParser implements SheetParser {@Overridepublic List<Map<String, String>> parse(String fileName, int sheetIndex) throws Exception {List<Map<String, String>> data = new ArrayList<>();DataListener listener = new DataListener(data);ExcelReaderBuilder readerBuilder = EasyExcel.read(fileName, listener);Sheet sheet = new Sheet(sheetIndex + 1, 0);readerBuilder.sheet(sheet).doRead();return data;}
}class PoiSheetParser implements SheetParser {@Overridepublic List<Map<String, String>> parse(String fileName, int sheetIndex) throws Exception {List<Map<String, String>> data = new ArrayList<>();FileInputStream inputStream = new FileInputStream(fileName);HSSFWorkbook workbook = fileName.endsWith(".xls") ? new HSSFWorkbook(inputStream) : new XSSFWorkbook(inputStream);PoiSheet sheet = workbook.getSheetAt(sheetIndex);List<String> headers = new ArrayList<>();for (Cell cell : sheet.getRow(0)) {headers.add(cell.getStringCellValue());}for (int i = 1; i <= sheet.getLastRowNum(); i++) {Row row = sheet.getRow(i);Map<String, String> record = new HashMap<>();for (int j = 0; j < headers.size(); j++) {Cell cell = row.getCell(j, Row.MissingCellPolicy.CREATE_NULL_AS_BLANK);String value = "";switch (cell.getCellType()) {case STRING:value = cell.getStringCellValue();break;case NUMERIC:value = Double.toString(cell.getNumericCellValue());break;default:value = cell.getStringCellValue();break;}record.put(headers.get(j), value);}data.add(record);}workbook.close();inputStream.close();return data;}
}class DataListener extends ReadListener<Data> {private List<Map<String, String>> data;private List<String> headers;public DataListener(List<Map<String, String>> data) {this.data = data;this.headers = new ArrayList<>();}@Overridepublic void onException(Exception exception) {// 处理异常}@Overridepublic void onReadError(Exception exception) {// 处理读取错误}@Overridepublic void onSheet(int sheetIndex, Sheet sheet) {// 处理工作表信息}@Overridepublic void onReadEnd() {// 读取结束}@Overridepublic void onHeadRow(Row row) {for (Cell cell : row) {headers.add(cell.getStringCellValue());}}@Overridepublic void onRecord(Data data) {Map<String, String> record = new HashMap<>();for (int i = 0; i < headers.size(); i++) {record.put(headers.get(i), data.getField(i));}this.data.add(record);}
}class Data {@ExcelProperty(index = 0)private String name;@ExcelProperty(index = 1)private int age;// Getters and setters
}

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.metadata.Sheet;
import com.alibaba.excel.read.listener.ReadListener;import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.*;public class ExcelParser {private SheetParser sheetParser;public ExcelParser(SheetParser sheetParser) {this.sheetParser = sheetParser;}public List<Map<String, String>> parse(String fileName, int sheetIndex) throws ExecutionException, InterruptedException {return sheetParser.parse(fileName, sheetIndex);}public static void main(String[] args) throws ExecutionException, InterruptedException {String fileName = "excel_file.xlsx";ExecutorService executor = Executors.newFixedThreadPool(2);List<Future<List<Map<String, String>>>> futures = new ArrayList<>();for (int i = 0; i < 2; i++) {SheetParser sheetParser = new EasyExcelSheetParser();Future<List<Map<String, String>>> future = executor.submit(() -> sheetParser.parse(fileName, i));futures.add(future);}List<Map<String, String>> data = new ArrayList<>();for (Future<List<Map<String, String>>> future : futures) {data.addAll(future.get());}System.out.println(data);executor.shutdown();}
}interface SheetParser {List<Map<String, String>> parse(String fileName, int sheetIndex);
}class EasyExcelSheetParser implements SheetParser {@Overridepublic List<Map<String, String>> parse(String fileName, int sheetIndex) {List<Map<String, String>> data = new ArrayList<>();DataListener listener = new DataListener(data);ExcelReaderBuilder readerBuilder = EasyExcel.read(fileName, listener);Sheet sheet = new Sheet(sheetIndex + 1, 0);readerBuilder.sheet(sheet).doRead();return data;}
}class PoiSheetParser implements SheetParser {@Overridepublic List<Map<String, String>> parse(String fileName, int sheetIndex) throws Exception {// 实现 POI 的解析,类似于前面的示例}
}class DataListener extends ReadListener<Data> {private List<Map<String, String>> data;private List<String> headers;public DataListener(List<Map<String, String>> data) {this.data = data;this.headers = new ArrayList<>();}@Overridepublic void onHeadRow(Row row) {for (Cell cell : row) {headers.add(cell.getStringCellValue());}}@Overridepublic void onRecord(Data data) {Map<String, String> record = new HashMap<>();for (int i = 0; i < headers.size(); i++) {record.put(headers.get(i), data.getField(i));}this.data.add(record);}
}class Data {@ExcelProperty(index = 0)private String name;@ExcelProperty(index = 1)private int age;// Getters and setters
}

import java.util.List;
import java.util.Map;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;@Component
public class ExcelParser {private SheetParser sheetParser;@Autowiredpublic ExcelParser(SheetParser sheetParser) {this.sheetParser = sheetParser;}public List<Map<String, String>> parse(String fileName, int sheetIndex) throws Exception {return sheetParser.parse(fileName, sheetIndex);}
}interface SheetParser {List<Map<String, String>> parse(String fileName, int sheetIndex) throws Exception;
}@Component
class EasyExcelSheetParser implements SheetParser {@Overridepublic List<Map<String, String>> parse(String fileName, int sheetIndex) throws Exception {List<Map<String, String>> data = new ArrayList<>();DataListener listener = new DataListener(data);ExcelReaderBuilder readerBuilder = EasyExcel.read(fileName, listener);Sheet sheet = new Sheet(sheetIndex + 1, 0);readerBuilder.sheet(sheet).doRead();return data;}
}@Component
class PoiSheetParser implements SheetParser {@Overridepublic List<Map<String, String>> parse(String fileName, int sheetIndex) throws Exception {// 实现 POI 的解析,类似于前面的示例}
}class DataListener extends ReadListener<Data> {private List<Map<String, String>> data;private List<String> headers;public DataListener(List<Map<String, String>> data) {this.data = data;this.headers = new ArrayList<>();}@Overridepublic void onHeadRow(Row row) {for (Cell cell : row) {headers.add(cell.getStringCellValue());}}@Overridepublic void onRecord(Data data) {Map<String, String> record = new HashMap<>();for (int i = 0; i < headers.size(); i++) {record.put(headers.get(i), data.getField(i));}this.data.add(record);}
}class Data {@ExcelProperty(index = 0)private String name;@ExcelProperty(index = 1)private int age;// Getters and setters
}

原理学习:

知其然,并未知其所以然!直到看到下面的解惑视频……

视频号搜索: 于建国博士讲解ChatGPT的工作原理及颠覆性影响,通俗易懂 (愿学有所得)

职责有边界、思考无边界、担当无边界!!!

利用好ChatGPT一切皆有可能,用好新时代的生产力工具希望ChatGPT能助力大家更上一层楼!

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

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

相关文章

ChatGPT小型平替之ChatGLM-6B本地化部署、接入本地知识库体验 | 京东云技术团队

本文期望通过本地化部署一个基于LLM模型的应用&#xff0c;能让大家对构建一个完整的应用有一个基本认知。包括基本的软硬环境依赖、底层的LLM模型、中间的基础框架及最上层的展示组件&#xff0c;最终能达到在本地零编码体验的目的。 一、ChatGLM-6B模型介绍 https://github.…

IEEE Fellow!前京东高级副总裁入局ChatGPT!招揽合伙人

来源&#xff1a;量子位 又一技术大牛官宣入局ChatGPT。 这一回出手的&#xff0c;是被视作“京东AI开创者”的前京东高级副总裁&#xff0c;周伯文。 就在2月26日晚间&#xff0c;周伯文在朋友圈广发“英雄帖”&#xff0c;称“现不设上限诚招合伙人”&#xff0c;包括研发合伙…

【保姆级教程】如何用Rust编写一个ChatGPT桌面应用 | 京东云技术团队

为什么我们需要一个桌面应用 原因实在太多&#xff0c;我们需要便捷地导出记录&#xff0c;需要在回答长度超长的时候自动加上“继续”&#xff0c;需要收藏一些很酷很实用的prompt… &#xff08;首先我假设你是一名如我一样习惯用IDEA开发的java仔&#xff09; 为什么是用R…

关于ChatGPT前后今生学习笔记

纵观ChatGPT的发展历史&#xff0c;则要从2011年开始&#xff0c;在这一年&#xff0c;谷歌公司的谷歌大脑部门成立。2015年12月&#xff0c;OpenAI公司作为一家非营利组织在美国旧金山成立&#xff0c;以研发对人类社会有益、友好的人工智能技术为使命&#xff0c;特斯拉的创始…

【创作赢红包】ChatGPT引爆全网引发的AI算力思考

文章目录 前言AIGC时代&#xff1a;万物皆可AI生成“大厂”纷纷入局算力各位后面有AI、大数据模型学习做研究需求或购买阿里云、腾讯云、华为云 服务器部署的 可以私信我 &#xff0c;有一定的优惠&#xff01; 前言 随着 ChatGPT的强势推出&#xff0c;智能聊天机器人ChatGPT…

ChatGPT+Mermaid自然语言流程图形化产出小试 | 京东云技术团队

ChatGPTMermaid语言实现技术概念可视化 本文旨在介绍如何使用ChatGPT和Mermaid语言生成流程图的技术。在现代软件开发中&#xff0c;流程图是一种重要的工具&#xff0c;用于可视化和呈现各种流程和结构。结合ChatGPT的自然语言处理能力和Mermaid的简单语法&#xff0c;可以轻…

【AI思维空间】ChatGPT纵横编程世界,点亮智慧火花 | 京东云技术团队

作者&#xff1a;京东零售 王英杰 概述 该文档记录云交易开发小伙伴儿们在开发过程中的实际应用案例&#xff0c;记录典型案例&#xff0c;以解决开发过程中的实际问题为主&#xff0c;涵盖设计方案、编码、测试、集成、部署等等。 目的&#xff1a;贡献最佳实践&#xff0c;…

ChatGPT的原理与前端领域实践 | 京东云技术团队

一、ChatGPT 简介 ChatGPT的火爆 ChatGPT作为一个web应用&#xff0c;自22年12月发布&#xff0c;仅仅不到3个月的时间&#xff0c;月活用户就累积到1亿。在此之前&#xff0c;最快记录的保持者也需要9个月才达到月活1亿。 ChatGPT的反爬 https://chat.openai.com 因为各种政…

什么是人工智能?简单的人工智能发展史

参考资料 维基百科-人工智能史百度百科-炼金术百度百科-图灵图灵机快速入门教程百度百科-第五代计算机野心勃勃的日本第五代计算机&#xff0c;如何一步步走向失败(上)AI缘起-达特茅斯会议人工智能发展史Imagenet官网机器之心——专家系统炼金术与人工智能&#xff1a;休伯特•…

大师激辩:人工智能「性善论」——文艺复兴 or 终结者?

导读 一直以来&#xff0c;学界对于人工智能的生存性风险尚无定论&#xff0c;人工智能「性善论」是否成立&#xff1f;「超级智能」是否会脱离人类控制&#xff0c;产生伤害人类的目标&#xff1f;人类是否会从人工智能手中失去对未来的控制权&#xff1f; 上月&#xff0c;两…

14 张图表还原当前的 AI 地图和资本之争 | AIGC 101

推荐语 Newcomer是我一直订阅的付费专栏&#xff0c;作者Eric曾是科技新闻网站The Information的第一位员工&#xff0c;后来为彭博社&#xff08;Bloomberg&#xff09;写了六年关于技术行业的文章。在那段时间里&#xff0c;他大部分时间都在报道创业公司的来龙去脉&#xff…

MySQL 输了,PostgreSQL起航 !

来源&#xff1a;51CTO技术栈 在软件领域&#xff0c;数据库是毫无疑问的中流砥柱。在这片历史悠久、玩家众多的沃土上&#xff0c;流传着着无数技术和商业交织的故事。如今&#xff0c;老一代商业数据库日薄西山&#xff0c;开源数据库步步为营&#xff0c;处在浪潮之巅的我们…

工业机器人及工控系统

一、为什么要发展人形机器人&#xff1f; 中国劳动力人口数量持续下滑&#xff0c;美、德、日等多国具有同样趋势。根据国家统计局发布的数 据显示&#xff0c;2022 年我国人口从年龄构成看&#xff0c;16~59 岁的劳动年龄人口 8.76 亿人&#xff0c;占全国人口的比 重为 62.0…

AIGC令人惊叹,也令人害怕

编&#xff5c;Aeneas 源&#xff5c;新智元 ChatGPT诞生之后&#xff0c;用自己强悍的文本创作能力&#xff0c;不断刷新着我们的认知。AI即将给大学校园带来怎样的爆炸性改变&#xff1f;似乎还没人做好准备。Nature已经发文&#xff0c;担心ChatGPT会成为学生写论文的工具。…

这些你熟知的 app 和服务,都用上了人工智能

从微软在 Microsoft 365 服务中全面整合 GPT-4 能力 &#xff0c;让 PPT、Word 文档、Excel 表格的制作变成了「一句话的事」&#xff0c;到 Adobe 刚刚发布 Adobe Firefly模型集合&#xff0c;让图形设计、字体风格、视频渲染乃至 3D 建模的门槛显著降低——你我熟知的那些工…

CSDN上海城市开发者社区线下活动纪实

引言 5月27号中午&#xff0c;很高兴能和现CSDN副总裁、前微软 Azure 工程团队首席研发经理、技术畅销书《编程之美》及《构建之法》的作者邹欣邹老师&#xff0c;以及CSDN的 “上海城市开发者社区” 的部分成员齐聚一堂&#xff0c;参加CSDN上海城市开发者社区自5月初成立以来…

中国开发者薪酬集中在 20万-34万元、Vite 爆火、Angular 下行,最新 JavaScript 年度报告重磅发布!...

整理 | 苏宓 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 诞生于世纪之交的 JavaScript&#xff0c;经历了 27 年的发展&#xff0c;已成为当今世界上最受开发者欢迎的编程语言之一。 近日&#xff0c;stateofjs.com 网站正式发布了《2022 年 JavaScript 年度调…

Voice Control for ChatGPT 沉浸式的与ChatGPT进行交流学习。

Voice Control for ChatGPT 日常生活中&#xff0c;我们与亲人朋友沟通交流一般都是喜欢语音的形式来完成的&#xff0c;毕竟相对于文字来说语音就不会显的那么的苍白无力&#xff0c;同时最大的好处就是能解放我们的双手吧&#xff0c;能更快实现两者间的对话&#xff0c;沟通…

语音识别之语音控制

接上文&#xff0c;如何实现语音控制呢&#xff1f;比如当我们说天气的时候&#xff0c;界面会自动呈现的天气预报的界面&#xff0c;当我们说UC的时候&#xff0c;会自动跳转到UC浏览器上等等。其实方法很简单&#xff0c;仅仅需要对识别到的字符串进行判断&#xff0c;当它符…

ChatGPT的焦虑蔓延,暴露了企业转型的关键要素

由美国OpenAI公司研发的聊天机器人程序ChatGPT&#xff0c;可以说是火遍了全网。据瑞银集团的报告显示&#xff0c;在ChatGPT推出仅两个月后&#xff0c;它在2023年1月末的月活用户已经突破了1亿&#xff0c;成为史上用户增长速度最快的消费级应用程序。根据Sensor Tower的数据…