ChatGPT体验,能为后端开发做什么?

简介: ChatGPT体验,能为后端开发做什么?

ChatGPT作为人工智能技术都火了一段时间,各种评价都有,有说好的,也有说不好的,更有说ChatGPT要代替程序员工作(程序员要失业了),在网上引起了一大波讨论。

从我使用ChatGPT的过程中,我觉得ChatGPT短期是无法替代技术人员的工作,虽然ChatGPT 也会编写代码,但它目前还只能编写一些功能单一、通用化、工具化、业务无关性的程序。很多商业软件(系统)的开发过程是非常复杂,需要进行完整的需求分析、设计、集成、测试、调优和反复迭代才能成功交付,在迭代的过程中,需求的多变性与多样性,业务逻辑错综复杂,再把它形成代码就更难了,ChatGPT 是绝对无法胜任的。

不可否认,ChatGPT作为一个很火的工具,用好它可以极大地提升开发的效率,帮助技术人员降低入门的难度。在开发的过程中,如果对某个技术实现不清楚或者对某些API不熟悉、或者对某些中间件的配置不熟悉,都可以请ChatGPT来帮忙,它能快速帮我们查找资料(比百度好)、编写算法/或者代码块,然后只要进行集成修改就可以集成到项目中。这样我们就可以集中精力去思考客户需求、考虑架构设计、优化等工作。

那么ChatGPT能帮助技术人员做什么?

作为一名开发者,我也很早就去关注它,对它能帮助“我做什么”比较感兴趣,因此也进行了研究,比如我是一名架构师,那么ChatGPT能帮助我做什么呢?来看看ChatGPT的回答:
image.png

从这个回答的内容来看,还是和架构师要做的工作很匹配。ChatGPT的出现,能帮助在搜索时,得到更加精确的回答,比使用百度/google的搜索结果好太多,不太需要自己进行过滤。
以下是我根据ChatGPT的特点和使用过程做的一些使用的总结。

1、学习新技术或者开源组件的资料

作为技术人员,经常需要学习及了解一些新的技术/或者某些技术的细节(API),以前的话,需要经常上百度等搜索引擎进行查找,然后对搜出来的结果进行筛选及过滤,效率会比较低。而ChatGPT可以一下帮你筛出结果,给你提供有用的参考。比如我想学习Flink,可以向ChatGPT提问:
image.png

比如我想知道nginx location的用法:
image.png
image.png
image.png

等等, ChatGPT可以很快的回答你想要的内容,省去网上搜索的过程,而且给出的答案都是比较准确。

2、理解代码及注释代码

有时候在开发地过程中,对某些代码或者框架的源代码不是很理解,上网搜索又很麻烦,这时就可以通过ChatGPT来帮助理解,或者某些代码没有注释,可以让ChatGPT来帮你注释。

比如下面这一段从eureka-client包中找的一段代码,源码上面不好理解,可以让ChatGPT来帮你解决,它的解决还是详细,对每一行代码都会进行说明。
image.png

比如以下这段代码,上面是没有加注释说明,让ChatGPT来帮忙,看看效果:
image.png

/** 
* 获取指定instance id的所有InstanceInfo对象
 * @param id instance id
 * @return 包含所有匹配InstanceInfo对象的列表
 */
public List<InstanceInfo> getInstancesById(String id) {
   
   
    List<InstanceInfo> instancesList = new ArrayList();
    // 创建一个存储InstanceInfo对象的空列表
    Iterator var3 = this.getApplications().getRegisteredApplications().iterator(); 
    // 获取注册的所有应用程序
    while(var3.hasNext()) {
   
   // 遍历每个应用程序
        Application app = (Application)var3.next();
        InstanceInfo instanceInfo = app.getByInstanceId(id); // 检查当前应用程序是否包含与输入的instance id相对应的InstanceInfo对象 
        if (instanceInfo != null) {
   
    // 如果找到了,则将其添加到列表中
            instancesList.add(instanceInfo);
        }
    }
    return instancesList; // 返回包含所有匹配InstanceInfo对象的列表
}

ChatGPT还是能给出比较好的注释,是不是觉得开发简单了呢,编写的过程中可以不要写注释,写完后让ChatGPT来帮忙。 接手旧代码时,没有注释,可以让ChatGPT来帮忙。

3、 查找程序报错原因给出解决办法

在程序开发及运行过程中,都会遇到各种问题,有些问题可以很快地定位到,但有些问题可能涉及到开源的框架/中间件,那这时就需要上网查找,看看别人遇到时是怎么解决的,但这个过程可能很繁锁,因为网站的资料很多都是重复的,而且大部分都是不正确,还是需要你一个个去试,这时也可以借助ChatGPT来解决。
image.png

更多的错误异常,大家可以自行尝试。

4、根据伪语言或者具体格式来生成代码

比如有时候在做接口对接时,需要去定义接口的输入输出的DTO,一般现在的很多接口都是基于json格式的,传统都是要一个属性一个属性的打上去,现在有了ChatGPT,可以让它直接帮你生成,比如在对接微信的支付接口时,需要有一堆参数。
image.png

再比如有以下表结构,让ChatGPT帮我生成Java对象。
image.png
image.png

public class AdInfo {
   
   
    private Integer id;
    private String title;
    private String path;
    private String imgPath;
    private Integer pos;
    private Integer status;
    private LocalDateTime createdTime;
    private LocalDateTime revisedTime;
    // 无参构造函数
    public AdInfo() {
   
   }
    // 带参构造函数
    public AdInfo(Integer id, String title, String path, String imgPath, Integer pos, Integer status, LocalDateTime createdTime, LocalDateTime revisedTime) {
   
   
        this.id = id;
        this.title = title;
        this.path = path;
        this.imgPath = imgPath;
        this.pos = pos;
        this.status = status;
        this.createdTime = createdTime;
        this.revisedTime = revisedTime;
    }
    // Getter和Setter方法
    public Integer getId() {
   
   
        return id;
    }
    public void setId(Integer id) {
   
   
        this.id = id;
    }
    public String getTitle() {
   
   
        return title;
    }
    public void setTitle(String title) {
   
   
        this.title = title;
    }
    public String getPath() {
   
   
        return path;
    }
    public void setPath(String path) {
   
   
        this.path = path;
    } 
    public String getImgPath() {
   
   
        return imgPath;
    }
    public void setImgPath(String imgPath) {
   
   
        this.imgPath = imgPath;
    }
    public Integer getPos() {
   
   
        return pos;
    }
    public void setPos(Integer pos) {
   
   
        this.pos = pos;
    }
    public Integer getStatus() {
   
   
        return status;
    }
    public void setStatus(Integer status) {
   
   
        this.status = status;
    }
    public LocalDateTime getCreatedTime() {
   
   
        return createdTime;
    }
    public void setCreatedTime(LocalDateTime createdTime) {
   
   
        this.createdTime = createdTime;
    }
    public LocalDateTime getRevisedTime() {
   
   
        return revisedTime;
    }
    public void setRevisedTime(LocalDateTime revisedTime) {
   
   
        this.revisedTime = revisedTime;
    }
    // toString方法
    @Override
    public String toString() {
   
   
        return "AdInfo{" +
                "id=" + id +
                ", title='" + title + '\'' +
                ", path='" + path + '\'' +
                ", imgPath='" + imgPath + '\'' +
                ", pos=" + pos +
                ", status=" + status +
                ", createdTime=" + createdTime +
                ", revisedTime=" + revisedTime +
                '}';
    }
}

看吧,ChatGPT还是一个不错的代码生成器。

5、代码重构

在系统的版本迭代开发过程中,随着业务的增加、可能会出现冗余的代码(方法/代码块),那这时可以通过 ChatGPT来帮你进行重构,它会帮你抽出公共部分,然后将方法在重新组合,形成更好的代码结构。

6、API文档生成

现在的程序开发与对接过程中,基本上都是使用swagger-ui这个在线API文档的形式,对于内部开发来说,是可以直接使用的,但是当程序部署到生产环境上,这些入口是要关闭的,别人不可能直接输入网址就可能访问到你的API的详细信息,这样太危险了。那么,有时候需要对外提供API文档,一般的做法是使用Word或者MarkDown文档来进行编写,需要手工一个个打上去,还是很费时间。现在也可以交给ChatGPT来做。

image.png
image.png
image.png
image.png

7、 设计方案

有时在设计新系统时,对这块又没有接触过,要怎么对设计这个系统,有没有可以参考的,这时一般也是上网搜索,然后在一堆结果中去查找,去学习。有了ChatGPT后,可以更好的去学习。
image.png
image.png

等等内容.

以上的内容,当作一个引子,其实还有其他方面的内容,比如数据模型设计、设计方案,方案比对、优化等等。ChatGPT是一个不错的工具,只要善加利用,还是能够获得更多的收益和好处。

目录
相关文章
|
4天前
|
缓存 监控 API
构建高效可扩展的RESTful API:后端开发的实践指南
【4月更文挑战第26天】在现代Web开发中,构建一个高效、可扩展且易于维护的RESTful API是后端工程师必须面对的挑战。本文将深入探讨如何利用最佳实践和流行技术,设计出符合REST架构原则的服务端接口。我们将重点讨论API版本控制、资源路由、数据库优化、缓存策略以及安全性考虑等方面,旨在为开发者提供一套综合性解决方案,帮助其提升API的性能与可靠性。
|
22天前
|
API 数据库 开发者
构建高效可靠的微服务架构:后端开发的新范式
【4月更文挑战第8天】 随着现代软件开发的复杂性日益增加,传统的单体应用架构面临着可扩展性、维护性和敏捷性的挑战。为了解决这些问题,微服务架构应运而生,并迅速成为后端开发领域的一股清流。本文将深入探讨微服务架构的设计原则、实施策略及其带来的优势与挑战,为后端开发者提供一种全新视角,以实现更加灵活、高效和稳定的系统构建。
23 0
|
10天前
|
消息中间件 监控 持续交付
构建高效微服务架构:后端开发的进阶之路
【4月更文挑战第20天】 随着现代软件开发的复杂性日益增加,传统的单体应用已难以满足快速迭代和灵活部署的需求。微服务架构作为一种新兴的分布式系统设计方式,以其独立部署、易于扩展和维护的特点,成为解决这一问题的关键。本文将深入探讨微服务的核心概念、设计原则以及在后端开发实践中如何构建一个高效的微服务架构。我们将从服务划分、通信机制、数据一致性、服务发现与注册等方面入手,提供一系列实用的策略和建议,帮助开发者优化后端系统的性能和可维护性。
|
3天前
|
监控 持续交付 数据库
构建高性能微服务架构:后端开发的新范式
【4月更文挑战第27天】 在当今快速演进的技术景观中,微服务架构已成为软件开发的一项关键策略。它允许开发团队以模块化的方式构建、部署和维护应用程序,从而提高了可伸缩性和灵活性。本文将深入探讨如何构建一个高性能的微服务架构,涵盖从选择合适的技术栈到优化服务的各个方面。通过实际案例和最佳实践的分享,我们将展示如何在保证系统稳定性的同时,提升应用的性能和响应速度。
|
1天前
|
安全 Java 开发者
构建高效微服务架构:后端开发的新范式Java中的多线程并发编程实践
【4月更文挑战第29天】在数字化转型的浪潮中,微服务架构已成为软件开发的一大趋势。它通过解耦复杂系统、提升可伸缩性和促进敏捷开发来满足现代企业不断变化的业务需求。本文将深入探讨微服务的核心概念、设计原则以及如何利用最新的后端技术栈构建和部署高效的微服务架构。我们将分析微服务带来的挑战,包括服务治理、数据一致性和网络延迟问题,并讨论相应的解决方案。通过实际案例分析和最佳实践的分享,旨在为后端开发者提供一套实施微服务的全面指导。 【4月更文挑战第29天】在现代软件开发中,多线程技术是提高程序性能和响应能力的重要手段。本文通过介绍Java语言的多线程机制,探讨了如何有效地实现线程同步和通信,以及如
|
3天前
|
监控 持续交付 数据库
构建高性能微服务架构:后端开发的新范式
【4月更文挑战第27天】 随着现代业务需求的多样化和快速迭代,传统的单体应用架构逐渐显得笨重且难以适应。本文旨在探讨一种新的后端开发范式——微服务架构,它以其灵活性、可扩展性和技术多样性成为当前软件开发的热点。我们将深入分析微服务的核心概念、实施策略以及在性能优化方面的实践技巧。通过本文,读者将获得如何构建一个既高效又稳定的微服务系统的知识,同时了解持续集成与容器化技术如何助力微服务的部署与管理。
|
3天前
|
消息中间件 存储 监控
【专栏】构建高效微服务架构:后端开发的最佳实践
【4月更文挑战第27天】本文探讨了构建高效微服务架构的后端开发最佳实践。微服务以服务独立、去中心化、自治和轻量级通信为核心原则,带来可扩展性、独立性、技术灵活性和团队协作优势。实践中,要注意服务拆分粒度、选择合适的通信协议(如RESTful、RPC、消息队列)、处理数据一致性与分布式事务、实施服务治理和监控,以及确保安全性与权限控制。随着技术发展,未来将探索服务网格、容器化和云原生技术,以提升微服务架构的效能。
|
5天前
|
Kubernetes API 持续交付
构建高效微服务架构:后端开发的最佳实践
【4月更文挑战第25天】 在当今快速演变的技术景观中,微服务架构已成为组织追求敏捷性、可扩展性和技术灵活性的重要策略。本文深入探讨了构建高效微服务架构的关键步骤和最佳实践,涵盖了服务划分原则、容器化部署、API网关设计以及持续集成与交付等方面。通过综合分析,旨在为后端开发人员提供一套实用的指南,帮助他们在面对复杂系统时能够做出明智的决策,并实现高性能、低耦合的服务架构。
|
6天前
|
消息中间件 监控 Serverless
构建高性能微服务架构:后端开发的新趋势
【4月更文挑战第24天】 在现代软件开发的浪潮中,微服务架构已经成为了企业追求敏捷、可扩展和容错性的关键解决方案。本文将深入剖析如何构建一个高性能的微服务系统,涵盖关键的设计原则、技术选型以及性能优化策略。通过实例驱动的方法,我们将探讨如何利用容器化、服务网格、API 网关等技术手段,以及无服务器架构(Serverless)的兴起,来构建一个既灵活又高效的后端系统。
|
6天前
|
持续交付 API 开发者
构建高效微服务架构:后端开发的新范式
【4月更文挑战第24天】 随着现代软件系统的复杂性日益增加,传统的单体应用已难以满足快速迭代与灵活扩展的需求。微服务架构作为一种新兴的软件开发模式,以其服务的细粒度、独立部署和弹性伸缩等优势,正在逐渐成为后端开发的重要趋势。本文将深入探讨微服务架构的设计原则、关键技术以及在实际业务中的应用实践,旨在为后端开发者提供构建和维护高效微服务架构的参考指南。