程序员AI提效案例:统计B站课程耗时情况

文章目录

  • 一,时长统计需求
  • 二,一波三折
  • 三,终极方案 AI+Java
  • 总结

今天为了写一篇博客,这篇博客介绍了B站的一个Java项目,这个项目分为三个阶段:

  • 初级篇
  • 高级篇
  • 运维篇

一,时长统计需求

我想根据每个阶段的总时长制定学习计划,B站只有每一集的时长,格式如下。

在这里插入图片描述

思路很简单:

  • 首先找到每一阶段的起止集数;
  • 然后把每个阶段的每集的时间加起来就可以算出每一阶段总耗时了。

第一个步骤很简单啊,从内容上可以区分。

  • P1~P101 是初级篇
  • P102~P338 是高级篇
  • P339到最后 是运维篇

二,一波三折

我的想法是把视频选集的内容copy出来,和算法以前丢给大模型,让它给我统计出来。

拷贝出来之后粘贴到文本文件,格式有点意外,但还算是格式化文本。

在这里插入图片描述
如上,一行信息变三行了。

我把这个文档提交给大模型,把算法写在提示词里。

这个文档的规则如下:
1,每三行是一个单元;
2,每个单元第三行表示一个视频的时长,如11:30表示11分钟30秒,
3,美格单元第一行表示集数,如P1表示第一集;请分别统计:
1,P1~P101的总时长;
2,P102~P338的总时长;
3,P339到最后一集的总时长。最后的结果请以[小时:分钟:秒]给出,并给出这三部分的总时长。

我惊奇的发现,大模型搞不定这个,虽然我不知道原因,或许是我用的姿势不对。

首先看看Kimi的表现。

在这里插入图片描述
Kimi貌似是异步的处理,但是我等了很久,一直不给我结果。

我追问,它回答马上开始,似乎也不是异步执行。
在这里插入图片描述

最后我强制要求它给出结果,不要让我等待。

来来回回纠缠了好多次,终于给出了统计结果,结果却是错的。

在这里插入图片描述
然后又试了通义千问,它倒是能爽快的给出结果,可惜也是错的。

最后又试了智谱清言,它的计算速度最快,结果秒出,可惜还是错的。

在这里插入图片描述
这也太不靠谱了。

在这里插入图片描述

三,终极方案 AI+Java

最后,我觉得不要让它直接算,让它给我写个Java程序,我自己来跑这个程序,这样即便错了,我也能知道是哪里错的。

Kimi完成了这个任务。

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;public class VideoDurationStatistics {public static void main(String[] args) {String filePath = "path/to/your/document.txt"; // 替换为文档的实际路径try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {String line;int totalDuration = 0;Pattern durationPattern = Pattern.compile("^(\\d{1,2}):(\\d{2})$");while ((line = reader.readLine()) != null) {// 检查是否是时长行(每三行的第三行)if (line.matches(durationPattern)) {Matcher matcher = durationPattern.matcher(line);if (matcher.find()) {int minutes = Integer.parseInt(matcher.group(1));int seconds = Integer.parseInt(matcher.group(2));totalDuration += (minutes * 60) + seconds;}}}// 将总时长转换为小时、分钟、秒long hours = totalDuration / 3600;totalDuration %= 3600;long minutes = totalDuration / 60;long seconds = totalDuration % 60;System.out.printf("Total Duration: %d hours, %d minutes, %d seconds%n", hours, minutes, seconds);} catch (IOException e) {e.printStackTrace();}}
}

我把这段代码放到Idea,稍微改吧改吧,很快结果就出来了。

在这里插入图片描述

我验证了总的时间,和B站基本吻合,说明程序跑出来的结果是正确的。

总结

现在的AI能力有限,有些工作它很擅长,有些它不擅长。

其中很大的问题是AI大模型是个黑盒,你不知道它是怎么得出结果的,很难去纠正它,只能不断尝试,但或许它永远也不能给出正确的结果。

但是把它作为辅助工具还是非常不错的,比如让它写一段代码,不到一分钟就写出来了,要是纯人工码,可能得个把小时,如果是要边查API边写代码,那就更慢了。

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

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

相关文章

Spring+SpringMVC+MyBatis整合

目录 1.SSM介绍1.1 什么是SSM?1.2 SSM框架1.2.1 Spring1.2.2 SpringMVC1.2.3 MyBatis 2.SSM框架整合2.1 建库建表2.2 创建工程2.3 pom.xml2.4 log4j.properties2.5 db.properties2.6 applicationContext-dao.xml2.7.applicationContext-tx.xml2.8 applicationContex…

昇思25天学习打卡营第9天|静态图模式的深度剖析与应用指南

目录 背景介绍 动态图模式 静态图模式 静态图模式的使用场景 静态图模式开启方式 基于装饰器的开启方式 基于context的开启方式 静态图的语法约束 JitConfig配置选项 静态图高级编程技巧 背景介绍 AI 编译框架主要包含两种运行模式,即动态图模式与静态图模…

Docker(八)-Docker运行mysql8容器实例

1.运行mysql8容器实例并挂载数据卷 -e:配置环境变量 --lower_case_table_names1 设置忽略表名大小写一定要放在镜像之后运行mysql8容器实例之前,先查看是否存在mysql8镜像以及是否存在已运行的mysql实例docker run -d -p 3306:3306 --privilegedtrue -v 【宿主机日…

【windows】电脑如何关闭Bitlocker硬盘锁

如果你的硬盘显示这样的一把锁,说明开启了Bitlocker硬盘加密。 Bitlocker硬盘锁,可以保护硬盘被盗,加密防止打开查看数据。 方法一:进入“控制面板->BitLocker 驱动器加密”进行设置。或者“控制面板\系统和安全->BitLocke…

数据库对比脚本,java如何对比两个数据库的表字段的不同

因为有时候开发环境和 测试环境,有时候会有不同的数据库表,比如有些加字段了,所以这个脚本就实现了对比两个数据库连接的数据库到底哪里不一样,输出到控制台 package com.junfun.pms;import lombok.extern.slf4j.Slf4j;import ja…

SQL执行慢排查以及优化思路

数据库服务器的优化步骤 当我们遇到数据库调优问题的时候,该如何思考呢?我把思考的流程整理成了下面这张图。 整个流程划分成了观察(Show status)和行动(Action)两个部分。字母 S 的部分代表观察&#xf…

Android常用加解密算法总结

Android开发中对于数据的传输和保存一定会使用加密技术,加密算法是最普遍的安保手段,多数情况数据加密后在需要使用源数据时需要再进行解密,但凡是都有例外。下面从可逆加密、不可逆、不纯粹加密三种方式记录一下常见的加解密算法。 加密技术…

HDFS学习

3.5 HDFS存储原理 3.5.1 冗余数据保存 作为一个分布式文件系统,为了保证系统的容错性和可用性,HDFS采用了多副本方式对数据进行冗余存储,通常一个数据块的多个副本会被分布到不同的数据节点上。 如图所示,数据块1被分别存放到…

Eslint与Prettier搭配使用

目录 前置准备 Eslint配置 Prettier配置 解决冲突 前置准备 首先需要安装对应的插件 然后配置settings.json 点开之后就会进入settings.json文件里,加上这两个配置 // 保存的时候自动格式化 "editor.formatOnSave": true, // 保存的时候使用prettier进…

【Qt之·类QTableWidget】

系列文章目录 文章目录 前言一、常用属性二、成员函数2.1 左上角空白区域 三、实例演示总结 前言 一、常用属性 二、成员函数 方法描述selectRow选中行removeRow移除行insertRow插入行rowCount总行数 2.1 左上角空白区域 QTableCornerButton即不属于列表头,也不…

像学Excel 一样学 Pandas系列-创建数据分析维度

嗨,小伙伴们。又到喜闻乐见的Python 数据分析王牌库 Pandas 的学习时间。按照数据分析处理过程,这次轮到了新增维度的部分了。 老样子,我们先来回忆一下,一个完整数据分析的过程,包含哪些部分内容。 其中&#xff0c…

【Python】成功解决TypeError: ‘float‘ object cannot be interpreted as an integer

【Python】成功解决TypeError: ‘float’ object cannot be interpreted as an integer 下滑即可查看博客内容 🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地!🎇 🎓 博主…

【Web3项目案例】Ethers.js极简入门+实战案例:实现ERC20协议代币查询、交易

苏泽 大家好 这里是苏泽 一个钟爱区块链技术的后端开发者 本篇专栏 ←持续记录本人自学智能合约学习笔记和经验总结 如果喜欢拜托三连支持~ 目录 简介 前景科普-ERC20 Ethers极简入门教程:HelloVitalik(非小白可跳) 教程概览 开发工具 V…

vue3开发过程中遇到的一些问题记录

问题: vue3在使用 defineProps、defineEmits、defineExpose 时不需要import,但是 eslint会报错error defineProps is not defined no-undef 解决方法: 安装 vue-eslint-parser 插件,在 .eslintrc.js 文件中添加配置 parser: vue-e…

开发者聊科学作息时间表

非常有幸对科学作息时间表app的开发者做一次采访。 问:你对科学作息时间表app满意么? 答:非常不满意,我们的设想是让他更智能,更多的提醒方式,更好的交互体验。如果作为一个闹钟他是非常不合格的&#xff0…

DataX数据迁移

DataX数据迁移 访问DataX Web管理页面: http://ip:9527/index.html 用户名:admin,密码:123456 本文中示例将SqlServer数据增量同步到MySql中。 增量同步同步时,MySql中的新字段设置默认值 1. 查看执行器是否注册成…

平衡二叉查找树和多路查找树

平衡二叉查找树 普通平衡二叉查找树 平衡二叉树定义是按照有序排列成树状,左子树数据大于右子树,任意节点的左右子树高度不能大于1 优点:可以保证绝对的平衡 缺点:当进行删除节点和新增节点,树进行自平衡的时候&…

jenkins 发布服务到linux服务器

1.环境准备 1.1 需要一台已经部署了jenkins的服务器,上面已经集成好了,jdk、maven、nodejs、git等基础的服务。 1.2 需要安装插件 pusblish over ssh 1.3 准备一台额外的linux服务器,安装好jdk 2.流程描述 2.1 配置jenkins,包括p…

[leetcode hot 150]第四百五十二题,用最少数量的箭引爆气球

题目: 有一些球形气球贴在一堵用 XY 平面表示的墙面上。墙面上的气球记录在整数数组 points ,其中points[i] [xstart, xend] 表示水平直径在 xstart 和 xend之间的气球。你不知道气球的确切 y 坐标。 一支弓箭可以沿着 x 轴从不同点 完全垂直 地射出。…

《昇思25天学习打卡营第6天 | 函数式自动微分》

《昇思25天学习打卡营第6天 | 函数式自动微分》 目录 《昇思25天学习打卡营第6天 | 函数式自动微分》函数式自动微分简单的单层线性变换模型函数与计算图微分函数与梯度计算Stop Gradient 函数式自动微分 神经网络的训练主要使用反向传播算法,模型预测值&#xff0…