chatgpt使用及辅助编程方面的体验

news2025/1/20 1:47:11

chatgpt使用及辅助编程方面的体验

文章目录

  • chatgpt使用及辅助编程方面的体验
    • 1 引言
    • 2 辅助编程体验
      • 2.1 辅助编写代码
      • 2.2 找出代码问题
      • 2.3 代码优化
      • 2.4 解释代码
      • 结束语

1 引言

最近几个月什么最火,那一定时chatgpt,虽然在国内使用存在各种限制,但是还是挡不住各行各业的热情,顺便各种梯子也火了起来,国内大厂也纷纷布局LLM,先后推出了文心一言、通义千问等基于LLM的问答式应用。chatgpt刚出来时,我以为可能和元宇宙一样炒个概念,让资本市场疯狂一次,但是当我真的接触之后,想法完全不一样了,它真的会成为一次革命,一次像互联网一样,能够改变人们生活、工作方式的革命,为什么这样说?因为它像互联网一样,给人们带来的是效率的提升和能力的延展,会让人上瘾。
相信很多人已经开始依赖chatgpt了,比如协助写作、协助知识获取、协助设计、协助编程等等,本文从辅助编程的角度来简单介绍下chatgpt的能力。

2 辅助编程体验

这里简单介绍下几个辅助编程的场景,更多玩法可自行摸索。

2.1 辅助编写代码

提问:请帮我用java swing编写markdown编辑器
chatgpt回答:好的,以下是一个简单的Java Swing Markdown编辑器的示例代码:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JToolBar;
import org.commonmark.node.Node;
import org.commonmark.parser.Parser;
import org.commonmark.renderer.html.HtmlRenderer;
public class MarkdownEditor extends JFrame implements ActionListener {
    private static final long serialVersionUID = 1L;
    private JTextArea textArea;
    private JButton previewButton;
    private JPanel previewPanel;
    private HtmlRenderer renderer;
    private Parser parser;
    public MarkdownEditor() {
        super("Markdown Editor");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        // Initialize parser and renderer
        parser = Parser.builder().build();
        renderer = HtmlRenderer.builder().build();
        // Create toolbar
        JToolBar toolbar = new JToolBar();
        // Create preview button
        previewButton = new JButton("Preview");
        previewButton.addActionListener(this);
        toolbar.add(previewButton);
        // Add toolbar to frame
        add(toolbar, BorderLayout.PAGE_START);
        // Create text area
        textArea = new JTextArea();
        textArea.setFont(new Font("Arial", Font.PLAIN, 14));
        textArea.setForeground(Color.BLACK);
        textArea.setLineWrap(true);
        textArea.setWrapStyleWord(true);
        // Add text area to scroll pane
        JScrollPane scrollPane = new JScrollPane(textArea);
        scrollPane.setPreferredSize(new Dimension(400, 400));
        // Add scroll pane to frame
        add(scrollPane, BorderLayout.CENTER);
        // Create preview panel
        previewPanel = new JPanel();
        previewPanel.setBackground(Color.WHITE);
        // Add preview panel to frame
        add(previewPanel, BorderLayout.LINE_END);
        // Set frame properties
        pack();
        setLocationRelativeTo(null);
        setVisible(true);
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // Render preview
        Node document = parser.parse(textArea.getText());
        String html = renderer.render(document);
        previewPanel.removeAll();
        previewPanel.add(new JScrollPane(new JTextArea(html)));
        previewPanel.revalidate();
        previewPanel.repaint();
    }
    public static void main(String[] args) {
        new MarkdownEditor();
    }
}

这个编辑器使用了CommonMark库来解析Markdown文本,并将其渲染为HTML。它包括一个工具栏,其中有一个预览按钮,当用户点击该按钮时,它会将Markdown文本解析为HTML,并在右侧的面板中显示预览。

生成代码方面,对于通用机器学习算法、简单逻辑、各种框架内常用代码的生成,生成的代码基本可用。

2.2 找出代码问题

提问:

package main

myvar := 1 //error

func main() {  

}
以上golang代码问题出在哪里

chatgpt回答:
111

2.3 代码优化

提问:

func ReadFLVTag(r io.Reader) (t byte, timestamp uint32, payload []byte, err error) {
    head := make([]byte, 11)
    if _, err = io.ReadFull(r, head); err != nil {
        return
    }
    t = head[0]
    dataSize := util.ReadBEint
    timestamp = (uint32(head[7]) << 24) | (uint32(head[4]) << 16) | (uint32(head[5]) << 8) | uint32(head[6])
    payload = make([]byte, dataSize)
    if _, err = io.ReadFull(r, payload); err == nil {
        _, err = io.ReadFull(r, head[:4])
    }
    return
}请对以上代码进行优化,并给出优化前后的对比

chatgpt回答:
test

2.4 解释代码

提问:

func WriteFLVTag(w io.Writer, t byte, timestamp uint32, payload net.Buffers) (err error) {
    head := make([]byte, 11)
    tail := make([]byte, 4)
    head[0] = t
    dataSize := uint32(util.SizeOfBuffers(payload))
    util.PutBE(tail, dataSize+11)
    util.PutBE(head[1:4], dataSize)
    head[4] = byte(timestamp >> 16)
    head[5] = byte(timestamp >> 8)
    head[6] = byte(timestamp)
    head[7] = byte(timestamp >> 24)
    var tag = net.Buffers{head}
    tag = append(tag, payload...)
    tag = append(tag, tail)
    // Tag Data
    _, err = tag.WriteTo(w)
    return
}请对以上代码进行解释,并添加注释

chatgpt回答:

以下是对WriteFLVTag函数的注释:
func WriteFLVTag(w io.Writer, t byte, timestamp uint32, payload net.Buffers) (err error) {
    // 创建长度为11的头部和长度为4的尾部
    head := make([]byte, 11)
    tail := make([]byte, 4)
    // 头部第一个字节表示标签类型
    head[0] = t
    // 数据长度为有效负载长度加上11个字节的头部长度
    dataSize := uint32(util.SizeOfBuffers(payload))
    util.PutBE(tail, dataSize+11) // 将标签长度放入尾部中
    util.PutBE(head[1:4], dataSize) // 将数据长度放入头部中
    // 时间戳占用3个字节,需要进行位移和按位或运算
    head[4] = byte(timestamp >> 16)
    head[5] = byte(timestamp >> 8)
    head[6] = byte(timestamp)
    head[7] = byte(timestamp >> 24)
    // 将头部和有效负载合并为一个net.Buffers对象
    var tag = net.Buffers{head}
    tag = append(tag, payload...)
    tag = append(tag, tail)
    // 将合并后的数据写入io.Writer中
    _, err = tag.WriteTo(w)
    return
}
这个函数的作用是将FLV标签写入一个io.Writer对象中。函数接受标签的类型、时间戳和有效负载,然后创建一个FLV标签,包括一个长度为11的头部、有效负载和一个长度为4的尾部。头部包括标签类型、数据长度和时间戳,尾部包括数据长度。然后将这个标签写入io.Writer对象中。
这个函数的核心是构建FLV标签,首先计算标签的长度和各个字段的值,然后将它们放入标签的头部和尾部。最后,将头部、有效负载和尾部合并到一个net.Buffers对象中,并将这个对象写入io.Writer中。

结束语

通过这几个月对chatgpt的使用,发现自己已经非常依赖它了,查资料用它,系统架构设计用它,写代码用它,编写文档也用它,虽然国内还没有城市的类似的产品,但是相信不久的将来基于LLM的应用会无处不在。


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

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

相关文章

el-select和el-checkBox实现下拉菜单全选功能

el-select 和 el-checkbox 实现下拉菜单全选功能 示例代码&#xff1a; <el-selectpopper-class"select-container"v-model"ids"placeholder"请选择目标":multiple-limit"20"multiplefilterablecollapse-tagsclass"wd400&qu…

20230721 Essex UK, Dongbing Gu 公开讲座--机器人前沿

个人主页&#xff1a; https://www.essex.ac.uk/people/GUDON81301/dongbing-gu 机器人领域任务的特点&#xff1a;dull, dirty, dangerous tasks in remote spaces 机器鱼&#xff1a; 实时港口环境监测 机器鱼群探索算法 化学传感器 水面声呐定位系统/SLAM/通信问题 Robotic …

RocketMQ教程-安装和配置

Linux系统安装配置 64位操作系统&#xff0c;推荐 Linux/Unix/macOS 64位 JDK 1.8 Maven3.0 yum 安装jdk8 yum 安装maven 1.下载安装Apache RocketMQ RocketMQ 的安装包分为两种&#xff0c;二进制包和源码包。 点击这里 下载 Apache RocketMQ 5.1.3的源码包。你也可以从这…

网络安全 Day18-计算机网络知识03

计算机网络知识03 1. 路由器排查故障2. 设置和修改网关3. 设置修改DNS4. 私网地址5. VMware虚拟机NAT模式下上网原理6. DHCP工作原理 1. 路由器排查故障 排查网线&#xff0c;排查网卡&#xff0c;排查网卡的驱动查看网卡IP&#xff0c;没有配置IP、网关、DNS配置正确ping百度…

R语言贝叶斯METROPOLIS-HASTINGS GIBBS 吉布斯采样器估计变点指数分布分析泊松过程车站等待时间...

原文链接&#xff1a;http://tecdat.cn/?p26578 指数分布是泊松过程中事件之间时间的概率分布&#xff0c;因此它用于预测到下一个事件的等待时间&#xff0c;例如&#xff0c;您需要在公共汽车站等待的时间&#xff0c;直到下一班车到了&#xff08;点击文末“阅读原文”获取…

行为型模式 - 状态模式

概述 【例】通过按钮来控制一个电梯的状态&#xff0c;一个电梯有开门状态&#xff0c;关门状态&#xff0c;停止状态&#xff0c;运行状态。每一种状态改变&#xff0c;都有可能要根据其他状态来更新处理。例如&#xff0c;如果电梯门现在处于运行时状态&#xff0c;就不能进…

MySQL—事务

MySQL—事务 &#x1f50e;定义&#x1f50e;事务的特性原子性一致性持久性隔离性 &#x1f50e;并发执行事务可能产生的问题脏读不可重复读幻读总结 &#x1f50e;MySQL—事务的隔离级别 &#x1f50e;定义 事务的本质是将多条 SQL 语句打包成一个整体 要么全部成功, 要么全部…

html a标签换行显示

文章目录 用css display属性不用css&#xff0c;可以用<br>标签换行示例 用css display属性 可以使用CSS的display属性来实现多个a标签每行显示一个。 HTML代码&#xff1a; <div class"link-container"><a href"#">Link 1</a>…

# **基于TiDB Binlog架构的主备集群切换操作手册**

作者&#xff1a; Liuhaoao 原文来源&#xff1a; https://tidb.net/blog/dc65ef62 操作背景&#xff1a;最近手头有个系统&#xff0c;刚做完灾备建设及数据同步&#xff08; 文章链接在这 &#xff09;&#xff0c;需要进行灾备切换演练&#xff0c;验证灾备库建设是否…

HCIA静态路由综合实验(eNSP)

实验题目及要求&#xff1a; 1、分析IP地址分配。 主干IP掩码均为30&#xff1b; 环回IP掩码为28&#xff0c;方便汇总掩码27&#xff1b; 然后预留部分IP地址。 如下图&#xff1a; 2、按如上图片要求连接设备&#xff0c;并标记好IP分配信息&#xff0c;便于命令配置时一…

网页生成PDF表格诡异多出空白

环境&#xff1a; axios: 0.27.0 egg: 2.35.0 pdf-lib: 1.17.1 puppeteer-core: 17.1.3 node: 16.20.0 element-plus: 2.3.2 vue: 3.2.47 背景&#xff1a; 一个报告页面含有多个统计表格和描述文字&#xff0c;生成PDF用于下载查看&#xff0c;页面使用vue3element-plus…

使用ffmpeg合并视频遇到的坑

下面以Linux环境介绍为主 1.ffmpeg可执行命令不同的环境是不同的&#xff0c;Linux在执行命令前还需要授权。 2.合并视频命令&#xff1a; 主要命令: {} -f concat -auto_convert 0 -safe 0 -i {} -y -c:v copy 坑一&#xff1a;其中第一个花括号替换的是可执行命令所在的…

如何计算 FPS(帧率)

FPS(Frames Per Second)&#xff0c;每秒多少帧 在 val.py 中&#xff0c;需要修改参数 batch-size1 同时别忘了修改自己数据集的 yaml 文件以及训练好的 pt 文件&#xff0c;如下图&#xff1a; 修改完成后&#xff0c;运行 val.py&#xff0c;得到结果&#xff0c;如下图&a…

Debian部署Tomcat 注册服务并设置开机启动

目录 写在前面 1.准备工作 2.在Linux下安装Tomcat 3.Tomcat注册服务并设置开机启动 3.1.使用 rc.local 配置开机启动 3.2.使用/etc/init.d 3.3.systemd配置&#xff08;通用方式&#xff09; 在Debian系统上安装Tomcat并将其注册为服务以及设置开机启动的步骤。Tomcat是一…

Android Studio 提示 Failed to initialize editor问题的解决

Android Studio 从2018的版本升级到2021年的版本后&#xff0c;无法预览xml。我查了很久&#xff0c;最后发现是Gradle的版本和工具不匹配&#xff0c;按照开发工具的提示&#xff0c;升级版本即可&#xff0c;我的是从3.2.1升级到了4.2.2

在macOS、Windows上使用VSCode + SSH实现远程Matplotlib图形显示

简介 在 macOS 上使用 VSCode SSH 环境来显示 Matplotlib 绘制的图形需要进行一些配置。因为默认情况下&#xff0c; Matplotlib 的图形是无法显示在远程计算机的桌面上的。您可以通过设置 Matplotlib 使用不同的后端(backend)来实现将图形显示在本地计算机上。 第一步&…

CentOS: $‘\r‘: command not found

一、问题 在CentOS中执行脚本deploy.sh时&#xff0c;报错$‘\r’: command not found 原因&#xff1a;shell脚本是在Windows下编写&#xff0c;通过工具软件传输到CentOS中。而Windows下行结尾符号为\r\n &#xff0c;linux下行结尾时\n&#xff0c;两者不同&#xff0c;所…

SpringBoot整合Redis和RabbitMQ练习

需求:用SpringBootRedisRabbitMQ技术,PostMan发送一个请求&#xff0c;存储到Redis中&#xff0c;并且在控制台获取打印该信息。用PostMan发送一个请求将信息存储到RabbitMQ,并且在监听该队列打印出信息。 练习1&#xff1a;SpringBootRedis PostMan发送一个请求&#xff0c;存…

【车载开发系列】AUTOSAR DemEventParameters

【车载开发系列】AUTOSAR DemEventParameters 【车载开发系列】AUTOSAR DemEventParameters 【车载开发系列】AUTOSAR DemEventParameters一. DemEventParameters的概念二. EventID三. DemEventKind1&#xff09;DEM_EVENT_KIND_SWC2&#xff09;DEM_EVENT_KIND_BSW 四. DemDTC…

Netty理论与实践(二) 创建http客户端 服务端

目录 开发实战1. 使用echo服务器模拟http2. netty http核心类3. 服务端4. 客户端 总结和源码参考 开发实战 1. 使用echo服务器模拟http 通过上一篇文章中的echo服务器程序来模拟一次HTTP请求。 接收消息的代码如下&#xff1a; public class ServerStringHandler extends S…