超越代码能力!一个编程菜鸟用AI“组装”本地聊天应用的奇幻之旅

前言

         作为一名刚入门的编程小白,本篇文章将告诉你,即使你什么都不会,也能轻松利用ai做出超出自身能力水平的软件。在DeepSeek的帮助下,没想到我仅有的贫瘠的编程知识也能在一天多的时间成功实现了一款本地聊天应用——FlashChat。本文将简单介绍该软件,也会分享在开发过程中遇到的问题,以及如何解决;优化和改进;如何高效利用AI解决远超自身能力的问题,特别适合编程初学者参考。

我的软件——FlashChat

        我将对我的软件进行一定内容的介绍:

1.整体架构

软件架构
软件架构

 2.核心功能展示 

登录界面
登录界面
用户注册界面
用户注册界面

聊天界面展示
聊天界面

3.功能介绍 

        从展示图中可以看到,我的软件实现了用户登录注册功能,用户注册时支持用户上传本地图片为头像;圆形头像裁剪;聊天界面支持调节左右边框大小,聊天框可以显示消息发送的日期;联系人列表可以显示用户是否在线的状态,也有未读消息提示。

4.数据库展示

用户表
用户表
消息表
消息表
用户在线状态存储表
用户在线状态存储表

开发中的“惊险”时刻

1.头像上传崩溃

        如上图所示在初次完成注册对话框测试时导入本地图片当头像后出现错误,直接分析错误提示可知为数据库表用户头像类型定义为BLOB字段大小不足,将头像类型修改为mediumblob后注册测试成功。

2.未读状态不更新

        测试未读消息显示状态时,发现就算点击了对话框未读标志也不会消失,而是在用户发消息后才会更新状态。

        问题分析:
1.未读状态更新仅发生在消息加载时,而不是在用户查看对话框时
2.未读计数更新逻辑不够及时
3.用户列表刷新机制需要优化
        代码修复:
1.修改markMessagesAsRead方法,在更新数据库后,直接更新本地用户列表模型,将未读计数清零。
2. 在updateConversations中,不再调用loadUserList,而是通过updateUnreadCount来增加非当前联系人的未读计数。
3. 删除updateConversations方法末尾的loadUserList调用。
4. 删除sendMessage方法中的loadUserList()调用。
        现在,当用户点击联系人时,未读计数应该会立即清零并更新显示。
文章绑定源码,有兴趣者可观看,这里只是记录开发过程中解决问题的过程。

 解决问题的方法

        作为程序员遇到Bug是家常便饭,我们做不到绝对避免问题发生,但是我们可以学习遇到这种问题时应该如何解决,这里我给小白编程学者三条自己的见解。

1.向AI请教

        没错,AI不光能帮你写代码,他在解决编程问题方面更是一把好手,不过前提是你要会正确提问。

AI辅助编程的正确打开方式

有效提问模式

[上下文]
我正在开发Java聊天程序,使用Swing实现GUI界面

[问题描述]
用户选择图片作为头像时,注册过程抛出以下异常:
com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: 
Data truncation: Data too long for column 'photo'

[环境信息]
- MySQL 8.0
- JDBC驱动
- 图片大小:约2MB

[已尝试方案]
已确认数据库连接正常,小图片可以正常上传

[需求]
请分析可能原因并提供解决方案

2.文艺复兴式补刀

        但是相信很多编程小白和我一样经常发现ai有时解决不了问题,智能ai变成智障。这个时候就得使用“文艺复兴”的办法:上网查询。哈哈,虽然这个只是几年前或者说现在仍然是很多人解决各种问题的途径,但是在现在的AI时代来看说是文艺复兴也是一种别样的风趣。可以全网搜,程序员社区搜,b站搜,浏览器搜······

3.源码调试绝招

  • 定位到具体报错行再提问

  • Ctrl+左键进入源码

  • 利用AI插件解释复杂代码块(如JDBC连接池机制)

         如果这个时候还是不能解决问题,就只能使用对编程小白来说最难但是也是编程小白必经之路,通过调试,逐步找出问题所在,在出现问题的地方可以通过Ctrl+鼠标点击进入出现问题的方法里面查看源码,这对编程新手是个挑战,进入源码后光是长长的一个个方法名,变量名就会让人头疼了。这时编程小白可以利用ai插件的代码解释功能,快速理解复杂代码的含义。这个方法能很大程度上解决问题,绝招虽然强大,学习难度也大。

优化方向与功能扩展 

        接下来是由于没时间做想做但未实现的进步空间

1. UI/UX优化

问题点现状优化方案
窗口缩放固定尺寸实现ComponentListener响应式布局
头像显示模糊失真双线性插值算法优化
消息气泡纯文本添加CSS样式消息气泡

2.功能强化

  1. 消息管理扩展

    • 消息撤回功能(添加状态字段)

    • 消息分页加载(LIMIT优化)

  2. 多媒体支持 实现群聊效果,删除或撤回消息,表情支持,语言发送等。

  3. AI集成方案

    • 情绪分析(调用NLP API)

    • 智能回复建议

    • 聊天内容摘要

AI使用心得 

        尽管现在的ai十分强大,但是你要正确使用ai需要做到的是给ai提供尽可能详细的消息

低效提示

"帮我写个Java消息发送功能"

高效提示

我需要一个Java消息发送函数,要求:
1. 使用Swing作为GUI框架
2. 输入区域为JTextArea
3. 使用MySQL存储消息
4. 避免SQL注入风险
5. 消息发送后清空输入框
6. 消息显示区域自动滚动到底部
7. 添加发送按钮事件监听
请用基础Java语法实现,避免Lambda表达式

当AI反复给出错误方案时:

  1. 切换问题表述方式

  2. 提供更具体的错误日志

  3. 要求AI分步骤思考

  4. 切换不同AI模型尝试

       

        另外有一点就是不要完全依赖AI,即使我提供了高质量的提示词,AI仍然会犯低级错误如:前代码与后代码牛头不对马嘴;又如代码中使用了未定义的方法,但是没有说明出来等。

        对于编程小白来说,使用AI来辅助写代码时常会觉得AI写的代码晦涩难懂,这时你可以明确告诉AI使用简单的方法实现特定的功能,不必要实现高效的代码,低效代码有时更方便初学者观看以及学习。

开发心得

        本次开发经历使我利用AI快速掌握了:

  • Swing高级组件应用

    • JSplitPane分栏布局

    • 自定义ListCellRenderer

    • Timer定时任务调度

  • JDBC最佳实践

    • PreparedStatement防注入

    • 二进制数据存储

    • 事务管理基础

  • 多线程控制

    • 事件分发线程(EDT)规则

    • 线程安全数据访问

实践经验教训

  1. 数据库设计需预留扩展字段
  2. 通信协议需定义严格版本控制
  3. UI线程必须与业务线程隔离

         本次开发也让我学习到了利用ai快速实现编程需求,bug查询等,我也相信这是适应ai时代的一种表现。对于未来:我将继续我的编程学习之路,由文章可见我在使用ai的情况下仍然只做了一个十分简陋的软件,可见我确实是个纯小白,接下来也将继续学习。 

本次开发的AI助手:DeepSeek

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值