当前位置: 首页 > news >正文

IDEA中通义灵码的使用技巧

大家好,我是 V 哥。在日常写代码的过程中,通过 AI 工具辅助开发已是当下程序员惯用的方式,V 哥在使用了众多的 AI 工具后,多数情况下,选择通义灵码来辅助开发,尤其是解释代码和生成单元测试功能甚是好用,听 V 哥来详细聊聊。
V 哥推荐:2024 最适合入门的 JAVA 课程

通义灵码安装

打开你的 IDEA 开发工具,在菜单栏中选择Settings,打开设置窗口,在左侧栏中选择 Plugins,在 Marketplace 的搜索栏中输入“通义灵码”,搜索结果的第一个就是通义灵码 AI 插件了,点击 Install 安装插件后,重启 IDE 即可安装成功。

重启IDEA后,在右侧会出现通义灵码选项,此时,就可以使用通义灵码来辅助编程啦。

使用前,请先使用阿里账号进行登录,V 哥的账号是威哥爱编程。

通过通义灵码 AI 工具解释代码

V 哥写了一个 DFS 算法,代码如下:

/*** description:* author: V哥* wx:finally-weige*/
public class DFSMazeSolver {private static final int[] DX = {-1, 1, 0, 0}; // 行移动方向:上,下private static final int[] DY = {0, 0, -1, 1}; // 列移动方向:左,右public boolean dfs(int[][] maze, int x, int y, boolean[][] visited) {int rows = maze.length;int cols = maze[0].length;// 边界条件与目标判断if (x < 0 || y < 0 || x >= rows || y >= cols || maze[x][y] == 0 || visited[x][y]) {return false;}// 到达终点if (x == rows - 1 && y == cols - 1) {return true;}// 标记当前位置已访问visited[x][y] = true;// 递归地探索四个方向for (int i = 0; i < 4; i++) {int newX = x + DX[i];int newY = y + DY[i];if (dfs(maze, newX, newY, visited)) {return true;}}// 回溯visited[x][y] = false;return false;}public boolean canSolveMaze(int[][] maze) {int rows = maze.length;int cols = maze[0].length;boolean[][] visited = new boolean[rows][cols];return dfs(maze, 0, 0, visited);}public static void main(String[] args) {int[][] maze = {{1, 0, 0, 0},{1, 1, 0, 1},{0, 1, 0, 0},{1, 1, 1, 1}};DFSMazeSolver solver = new DFSMazeSolver();if (solver.canSolveMaze(maze)) {System.out.println("路径可达");} else {System.out.println("无可行路径");}}
}

从代码上看,我已经加了少量代码注释,但对于小白或者初学者来说,想要完全理解代码的含义还是有些困难,下面我们来看看通义灵码的解释代码功能如何。

我们在代码中可以看到有通义灵码的图标标识,下拉打开后,即可以非常方便的使用助手功能了。

我们选择解释代码功能,通义灵码就是会以此方法 dfs 为目标,解释此方法的代码含义,我们来试试。

我们可以看到,在右侧通义灵码的功能区里会把目标方法的代码选中,下方是 dfs 方法的具体解释,从解释来看,基本达到了代码的含义理解,如果你不满意,还可以重新生成,通常 V 哥会使用更详细的解释功能,我们点击更详细来看看。

这样生成的代码解释就很详细了,看一下解释的内容对不对,V 哥仔细查看,不放过每一个字,结果堪称完美,你可以试试。

通过通义灵码 AI 工具生成单元测试

通过通义灵码的生成单元测试功能,也是这款AI 工具的亮点,在代码的 dfs 方法的通义灵码图标,选择生成单元测试功能。

我们就可以在右侧通义灵码的功能区看到生成的测试代码了。

完整生成的测试代码如下:

package com.example.mazesolver;import java.util.*;
import java.math.*;import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.assertFalse;public class DFSMazeSolverTest {private DFSMazeSolver solver;@Beforepublic void setUp() {solver = new DFSMazeSolver();}@Testpublic void testDfs_SimplePath_ReturnsTrue() {int[][] maze = {{1, 0, 0},{1, 1, 0},{1, 1, 1}};boolean[][] visited = new boolean[maze.length][maze[0].length];assertTrue(solver.dfs(maze, 0, 0, visited));}@Testpublic void testDfs_NoPath_ReturnsFalse() {int[][] maze = {{0, 0, 0},{0, 0, 0},{0, 0, 0}};boolean[][] visited = new boolean[maze.length][maze[0].length];assertFalse(solver.dfs(maze, 0, 0, visited));}@Testpublic void testDfs_AlreadyVisitedCell_ReturnsFalse() {int[][] maze = {{1, 0, 0},{1, 1, 0},{1, 1, 1}};boolean[][] visited = new boolean[maze.length][maze[0].length];visited[0][0] = true;assertFalse(solver.dfs(maze, 0, 0, visited));}@Testpublic void testDfs_MazeTooSmall_ReturnsFalse() {int[][] maze = {{0}};boolean[][] visited = new boolean[maze.length][maze[0].length];assertFalse(solver.dfs(maze, 0, 0, visited));}@Testpublic void testDfs_MazeWithMultiplePaths_ReturnsTrue() {int[][] maze = {{1, 1, 0},{0, 1, 1},{0, 0, 1}};boolean[][] visited = new boolean[maze.length][maze[0].length];assertTrue(solver.dfs(maze, 0, 0, visited));}@Testpublic void testDfs_MazeWithDeadEnd_ReturnsFalse() {int[][] maze = {{1, 0, 0},{0, 0, 0},{0, 0, 1}};boolean[][] visited = new boolean[maze.length][maze[0].length];assertFalse(solver.dfs(maze, 0, 0, visited));}
}

哇塞,看到代码你是不是跟 V 哥一样的惊叹,我们还可以通过下方的解释代码来帮助你理解测试代码的逻辑和含义。

把测试代码拿过来,测试一下看是否可以正常测试代码,结果是没有问题的,在测试中,可以根据自己的需求修改修改就OK 了。

通义灵码生成代码注释功能

通过代码解释功能的使用可以看出,生成代码注释肯定也是 OK 的,功能上貌似有些重复了,这里建议两个功能可以合并一下,比如把类注释的内容也加到解释代码中,把解释好的代码可以在右侧栏中直接一键插入即可。个人建议,当然官方估计看不到我的建议。

完整的代码注注释如下:

/*** 使用深度优先搜索(DFS)在迷宫中寻找从起点到终点的路径* * @param maze    表示迷宫的二维数组,其中0代表墙壁,1代表可以通行的路径* @param x       当前位置的x坐标* @param y       当前位置的y坐标* @param visited 一个二维布尔数组,用于标记迷宫中哪些位置已经被访问过* @return 如果找到了从当前位置到迷宫终点的路径,则返回true;否则返回false*/
public boolean dfs(int[][] maze, int x, int y, boolean[][] visited) {// 获取迷宫的行数和列数int rows = maze.length;int cols = maze[0].length;// 边界条件与目标判断// 如果当前位置超出迷宫边界、是墙壁或是已经访问过的位置,则返回falseif (x < 0 || y < 0 || x >= rows || y >= cols || maze[x][y] == 0 || visited[x][y]) {return false;}// 到达终点// 如果当前位置是迷宫的终点,则返回trueif (x == rows - 1 && y == cols - 1) {return true;}// 标记当前位置已访问visited[x][y] = true;// 递归地探索四个方向// 尝试向四个可能的方向移动,并递归调用DFS如果找到一条路径,则返回truefor (int i = 0; i < 4; i++) {int newX = x + DX[i];int newY = y + DY[i];if (dfs(maze, newX, newY, visited)) {return true;}}// 回溯// 如果四个方向都无法到达终点,回溯标记当前位置为未访问,撤销之前的访问标记visited[x][y] = false;return false;
}

下面这段与解释代码是一致的:

通义灵码的生成优化建议功能

生成优化建议功能让 V 哥很好奇,通义灵码会给出怎样的建议呢,我们一起来看一下,通义灵码给出了如下建议,并提供了优化后的代码:

建议修改后的代码如下:

public class MazeSolver {// 定义方向数组private static final int[] DX = {1, -1, 0, 0};private static final int[] DY = {0, 0, 1, -1};public boolean dfs(int[][] maze, int x, int y, boolean[][] visited) {// 输入验证if (maze == null || visited == null || maze.length == 0 || maze[0].length == 0) {throw new IllegalArgumentException("Invalid input: maze or visited array is null or empty");}if (visited.length != maze.length || visited[0].length != maze[0].length) {throw new IllegalArgumentException("Invalid input: visited array size does not match maze array size");}int rows = maze.length;int cols = maze[0].length;// 边界条件与目标判断if (x < 0 || y < 0 || x >= rows || y >= cols || maze[x][y] == 0 || visited[x][y]) {return false;}// 到达终点if (x == rows - 1 && y == cols - 1) {return true;}// 标记当前位置已访问visited[x][y] = true;// 递归地探索四个方向for (int i = 0; i < 4; i++) {int newX = x + DX[i];int newY = y + DY[i];if (dfs(maze, newX, newY, visited)) {return true;}}// 回溯visited[x][y] = false;return false;}
}

给出的解释是:

输入验证:在方法开始时添加了对 maze 和 visited 的验证,确保它们不为空且大小一致。

常量定义:将方向数组 DX 和 DY 定义为类的静态常量,提高代码的可读性和可维护性。

注释:增加了注释,使代码更易读。

这些修改不仅提高了代码的安全性和健壮性,还增强了代码的可读性和可维护性。

在通义灵码给出的代码中修改了三处地方,输入验证、常量定义和注释,输入验证和常量定义让 V 哥的代码更加严谨了,在算法实现上没有给出建议,V哥大胆猜测,要不就是V 哥的算法实现已经比较完美了,或者灵码也没有更好的算法优化建议了,哈哈。

通义灵码自动联想代码功能

在编码区写代码时,通义灵码还提供了语义级的自动代码联想功能,这个功能有点奇怪,比如我们在 main 方法中就会建议输出 Hello world:


也许通义灵码想做到想我所想,帮我写代码,由于通义灵码基于通义大模型实现,此功能应该会在学习你的编码习惯和代码意图,如果完全学会了,难道要变成你的克隆吗,还会根据项目中的代码结构来联想,这个功能一旦成熟,那可不得了,期待吧,暂时,V 哥觉得用的还很少。

最后小结一下

总的来说,V 哥在使用通义灵码的过程中,最常用的是解释代码和单元测试的生成,这两部分让我在代码逻辑和测试上大大提高了效率。通义灵码,你有在用吗,欢迎一起交流心得体会。关注威哥爱编程,编码路上我们结伴同行。

相关文章:

IDEA中通义灵码的使用技巧

大家好&#xff0c;我是 V 哥。在日常写代码的过程中&#xff0c;通过 AI 工具辅助开发已是当下程序员惯用的方式&#xff0c;V 哥在使用了众多的 AI 工具后&#xff0c;多数情况下&#xff0c;选择通义灵码来辅助开发&#xff0c;尤其是解释代码和生成单元测试功能甚是好用&am…...

JS中let var 和const区别

在JavaScript中&#xff0c;let、var 和 const 都是用来声明变量的关键字&#xff0c;但它们之间有几个关键的区别&#xff1a; 作用域&#xff08;Scope&#xff09;: var 声明的变量拥有函数作用域&#xff08;function scope&#xff09;&#xff0c;这意味着如果 var 变量在…...

ansible详细介绍和具体步骤

Ansible简介 1.1 Ansible的基本概念 Ansible是一款开源的自动化工具&#xff0c;旨在简化IT操作的复杂性。它由Michael DeHaan创建&#xff0c;并于2012年发布&#xff0c;随后在2015年被Red Hat收购。Ansible的核心理念是“简单即美”&#xff0c;它通过使用YAML&#xff08…...

利用LangChain与LLM打造个性化私有文档搜索系统

我们知道LLM&#xff08;大语言模型&#xff09;的底模是基于已经过期的公开数据训练出来的&#xff0c;对于新的知识或者私有化的数据LLM一般无法作答&#xff0c;此时LLM会出现“幻觉”。针对“幻觉”问题&#xff0c;一般的解决方案是采用RAG做检索增强。 但是我们不可能把…...

linux中的软、硬链接

目录 引言 简单介绍 如何理解软硬链接 链接的应用 环路问题 引言 在Linux操作系统的广阔天地中&#xff0c;文件管理是其核心功能之一。而软链接和硬链接作为Linux文件系统中的两种特殊链接方式&#xff0c;它们为用户提供了灵活的文件访问途径和高效的磁盘空间利用手段。…...

Ubuntu 系统、Docker配置、Docker的常用软件配置(下)

前言 书接上文&#xff0c;现在操作系统已经有了&#xff0c;作为程序的载体Docker也安装配置好了&#xff0c;接下来我们需要让Docker发挥它的法力了。 Docker常用软件的安装 1.Redis 缓存安装 1.1 下载 docker pull redis:7.4.1 #可改为自己需要的版本 1.2 创建本地目录存储…...

jdk,openjdk,oraclejdk

Java是开发语言&#xff0c;不是软件。JDK是软件&#xff0c;使用OpenJDK是免费的&#xff0c;一直免费。而且OpenJDK正儿巴经的Java社区推出来的JDK。 Oracle JDK主要是面向付费能力强的企业用户&#xff0c;收费已经好多年了&#xff0c;不是一两年的事&#xff0c;JDK8是JDK…...

Docker Hub 镜像加速器

零、参考资料 https://gist.github.com/y0ngb1n/7e8f16af3242c7815e7ca2f0833d3ea6Daemon proxy configuration | Docker Docs 一、解决方案 1、问题现象 Error response from daemon: Get "https://index.docker.io/v1/search?qcarlasim%2Fcarla&n25": dia…...

DevOps赋能:优化业务价值流的实战策略与路径(上)

上篇&#xff1a;价值流引领与可视化体系构建 一、前言 在快速迭代的软件项目和产品开发生态中&#xff0c;我们始终围绕两个核心目标&#xff1a;一是确保每一项工作都能为客户创造实际价值&#xff0c;这是产品团队的核心使命&#xff1b;二是确保这些有价值的工作能够高效…...

int的取值范围

原码&#xff08;True form&#xff09;&#xff1a;原码是一种计算机中对数字的二进制表示方法&#xff0c;数码序列中最高位为符号位&#xff0c;符号位为0表示正数&#xff0c;符号位为&#xff11;表示负数&#xff1b;其余有效值部分用二进制的绝对值表示。 反码&#xf…...

图文检索(16):IDC: Boost Text-to-Image Retrieval via Indirect and Direct Connections

IDC: Boost Text-to-Image Retrieval via Indirect and Direct Connections 摘要3 方法3.1 直接连接3.2 间接连接3.3 DLB 正则化 结论 发布时间&#xff08;2024 LREC-COLING&#xff09; 标题&#xff1a;IDC&#xff1a;通过间接和直接连接增强文本到图像的检索 摘要 本文&…...

企业数字化转型:重识、深思、重启新征程-亿发

在当下这个日新月异的时代&#xff0c;企业数字化转型已然成为众多企业竞相追逐的发展方向&#xff0c;可真正能将其领悟透彻并有效落地实施的企业&#xff0c;却并非比比皆是。此刻&#xff0c;亿发软件针对企业数字化转型展开一次更为深入的重识、全面的深思&#xff0c;进而…...

仓颉刷题录-字符串数字转换(一)

文章目录 背景题目&#xff1a;交换后字典序最小的字符串个人感受 这是双子专栏&#xff1a; Cangjie仓颉程序设计-个人总结 本专栏还在持续更新&#xff1a; 仓颉编程cangjie刷题录 背景 报名了一个仓颉的比赛&#xff0c;感觉条件要求挺低的&#xff0c;就想上。哈哈哈。但…...

SpringBoot【实用篇】- 配置高级

文章目录 目标&#xff1a;1.ConfigurationProperties2.宽松绑定/松散绑定3. 常用计量单位绑定4.数据校验 目标&#xff1a; ConfigurationProperties宽松绑定/松散绑定常用计量单位绑定数据校验 1.ConfigurationProperties ConfigurationProperties 在学习yml的时候我们了解…...

liunx CentOs7安装MQTT服务器(mosquitto)

查找 mosquitto 软件包 yum list all | grep mosquitto出现以上两个即可进行安装&#xff0c;如果没有出现则需要安装EPEL软件库。 yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm查看 mosquitto 信息 yum info mosquitto安装 mosquitt…...

【银河麒麟高级服务器操作系统】虚拟机lvm分区丢失现象分析及解决建议

了解更多银河麒麟操作系统全新产品&#xff0c;请点击访问 麒麟软件产品专区&#xff1a;https://product.kylinos.cn 开发者专区&#xff1a;https://developer.kylinos.cn 文档中心&#xff1a;https://documentkylinos.cn 环境描述 系统环境 物理机/虚拟机/云/容器 虚拟…...

Android 原子性类型都有哪些

1. 基本类型原子类 AtomicInteger&#xff1a;用于对整数进行原子操作&#xff0c;如incrementAndGet()方法可以原子地将当前值加1并返回新值&#xff0c;getAndSet()方法可以原子地设置新值并返回旧值。AtomicLong&#xff1a;和AtomicInteger类似&#xff0c;用于长整型的原…...

MySQL(上)

一、SQL优化 1、如何定位及优化SQL语句的性能问题&#xff1f;创建的索引有没有被使用到?或者说怎么才可以知道这条语句运行很慢的原因&#xff1f; 对于性能比较低的sql语句定位&#xff0c;最重要的也是最有效的方法其实还是看sql的执行计划&#xff0c;而对于mysql来说&a…...

ffplay 实现视频流中音频的延迟

ffplay -rtsp_transport tcp -i rtsp://admin:1234qwer192.168.1.64:554/Streaming/Channels/101 -vn -af "adelay5000|5000"在这个命令中&#xff1a; -vn 参数表示只播放音频。 -af "adelay5000|5000" 参数表示将音频延迟5000毫秒&#xff08;即5秒&…...

CSDN资源变现

根据搜索结果&#xff0c;CSDN资源变现主要有以下几种方式&#xff1a; 1、上传付费资源&#xff1a; 用户可以在CSDN上上传资源并设置付费&#xff0c;其他用户支付费用下载这些资源&#xff0c;上传者则获得一部分收益。这种方式适合上传大量资源&#xff0c;通过量变达到质变…...

标准输入流,输出流,错误流 以及 重定向 的原理

标准输入流、输出流、错误流在操作系统与C语言中的表达 1. 操作系统层面&#xff08;Linux/Unix&#xff09; 在操作系统层面&#xff0c;标准输入、标准输出和标准错误流通过文件描述符&#xff08;File Descriptor&#xff09; 来标识&#xff1a;流类型文件描述符 (fd)默认设…...

Perplexity股票数据清洗SOP(含NASDAQ非标字段映射表):金融工程师内部使用的12项校验规则

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;Perplexity股票信息检索 Perplexity AI 公司尚未上市&#xff0c;因此不存在公开交易的股票代码、实时行情或交易所挂牌信息。这一事实常被开发者和投资者误读&#xff0c;尤其在使用金融数据 API 时容易触发…...

LeetCode 每日一题笔记 日期:2026.05.16 题目:154. 寻找旋转排序数组中的最小值 II

LeetCode 每日一题笔记 0. 前言 日期&#xff1a;2026.05.16题目&#xff1a;154. 寻找旋转排序数组中的最小值 II难度&#xff1a;困难标签&#xff1a;数组、二分查找 1. 题目理解 问题描述&#xff1a; 给定一个可能存在重复元素的升序数组&#xff0c;经过1~n次旋转后&…...

别再死磕PI参数了!用MATLAB/Simulink手把手教你搭建异步电机FOC仿真(附模型下载)

异步电机FOC仿真实战&#xff1a;从零搭建到参数调优全指南 在电机控制领域&#xff0c;矢量控制(FOC)技术因其优异的动态性能和效率表现&#xff0c;已成为工业应用中的主流方案。然而从理论到实践的跨越往往充满挑战——许多工程师能够理解Park变换、空间矢量调制等概念&…...

AMOS实战:从模型绘制到结果解读,手把手完成验证性因子分析

1. AMOS入门&#xff1a;验证性因子分析基础 第一次接触AMOS做验证性因子分析时&#xff0c;我盯着软件界面发呆了半小时——那些复杂的图标和术语让人望而生畏。但实际用起来你会发现&#xff0c;AMOS就像个"可视化计算器"&#xff0c;把统计公式变成了拖拽操作。验…...

AI Agent Harness Engineering 与组织结构重塑:未来公司将变成什么样

AI Agent Harness Engineering 与组织结构重塑:未来公司将变成什么样 摘要/引言 你有没有在深夜刷到过这样的“科技黑话式”创业视频?创始人拍着桌子喊:“我们公司90%的活都是AI干的!产品上线从3个月缩短到3天!利润率翻了10倍!”旁边的工位要么是空的,要么坐着手忙脚乱…...

MCUXPresso for VS Code插件实战:从零构建NXP MCU的HelloWorld项目

1. 项目概述&#xff1a;为什么选择MCUXPresso for VS Code&#xff1f;如果你是一位嵌入式开发者&#xff0c;尤其是使用恩智浦&#xff08;NXP&#xff09;MCU的工程师&#xff0c;那么你大概率对MCUXpresso IDE不陌生。它是一个功能强大的集成开发环境&#xff0c;但有时我们…...

C盘告急?手把手教你用mklink命令把Fusion 360挪到D盘(Win11保姆级教程)

拯救C盘空间&#xff1a;用符号链接将Fusion 360迁移到D盘的完整指南 当C盘空间告急时&#xff0c;很多用户会发现Fusion 360默认安装在系统盘&#xff0c;占用了大量宝贵空间。本文将详细介绍如何利用Windows的mklink命令&#xff0c;在不影响软件功能的前提下&#xff0c;将F…...

终极指南:三分钟轻松解锁《原神》60帧限制,让你的高刷显示器火力全开![特殊字符]

终极指南&#xff1a;三分钟轻松解锁《原神》60帧限制&#xff0c;让你的高刷显示器火力全开&#xff01;&#x1f3ae; 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 还在为《原神》60…...

MAA明日方舟助手:5步配置实现游戏日常全自动化

MAA明日方舟助手&#xff1a;5步配置实现游戏日常全自动化 【免费下载链接】MaaAssistantArknights 《明日方舟》小助手&#xff0c;全日常一键长草&#xff01;| A one-click tool for the daily tasks of Arknights, supporting all clients. 项目地址: https://gitcode.co…...