Cursor配置Java环境、创建Spring Boot项目

一:配置JDK和Maven

  • cursor默认会读取环境变量JAVA_HOMEMAVEN_HOME,如果没有配置去找默认路径~/.m2/settings.xml
  • 也可以手动指定:Ctrl + Shift + P 输入"Preferences:Open User Settings(JSON)"打开settings.json文件,然后新增配置,保存后重新加载。

”java.home“:可能不同版本的key不一样,如果Cursor没有画黄线警告那就没问题。

"java.jdt.ls.java.home":"/Library/Java/JavaVirtualMachines/jdk-21.jdk/Contents/Home","java.configuration.maven.userSettings":"/Users/mengday/Softwares/apache-maven-3.9.10/conf/settings.xml",

方式二:cursor新版本

在这里插入图片描述

选择jdk版本

在这里插入图片描述


设置maven setting.xml

在这里插入图片描述

二:安装常用插件

2.1 Extension Pack for Java(必装)

Ctrl + Shift + X 搜索插件。

在这里插入图片描述
  • Language support for java™ by Red Hat:提供语法高亮、智能代码补全、代码检查、代码格式化(shift+ Alt +F(Windows/Linux)或 shift + option +F(Mac))、代码导航以及重构支持等功能,辅助高效编写和优化Java 代码。
  • Debugger for Java:实现轻量级Java 程序调试,可设置断点,调试时查看变量值、对象属性和调用栈,追踪程序执行流程以排查问题。
  • Maven for java:用于管理 Maven 项目,能创建新项目,管理项目依赖,执行 Maven 构建任务,如清理、编译、打包项目等。
  • Test Runher for java:支持JUnit 和 TestNG等测试框架,方便运行和调试Java 测试用例,展示测试结果及详细日志,助力开发者定位问题,
  • Project Manager for java:可在编辑器中管理多个java 项目,实现快速切换,导入本地Java 项目,可视化展示项目模块、包和文件结构。
  • Gradle for java:针对 Gradle 构建工具,能创建 Gradle 项目,运行 Gradle 任务,曾理项目构建、测试流程,查看 Gradle 任务和工程依赖。

2.2 Spring Boot Extension Pack

在这里插入图片描述


运行调试Spring Boot项目。

2.3 Spring Initializr Java Support

在这里插入图片描述


创建SpringBoot项目

2.4 Swithc2IDEA

一般使用使用Cursor进行AI编程,使用IDEA进行代码调试,使用快捷键alt+shfit+O 可以快速跳转到idea文件,并将代码行光标同步为cursor位置。

在这里插入图片描述


使用快捷键alt+shfit+O 可以快速跳转到cursor文件(或者右键OpenFile In Cursor),并将代码行光标同步为idea位置。

在这里插入图片描述
在这里插入图片描述


在这里插入图片描述


在这里插入图片描述

2.5 MySQL

安装MySQL插件。

在这里插入图片描述


创建数据库连接。

在这里插入图片描述


配置数据库连接。

在这里插入图片描述

执行SQL:Active选择要连接的数据库,Run sql。

在这里插入图片描述

三:创建Spring Boot项目

在这里插入图片描述
在这里插入图片描述
  1. 选择项目类型:Spring Boot
  2. 选择依赖类型:Maven Project
  3. 选择SpringBoot版本:3.5.3
  4. 选择项目语言:Java
  5. 输入mavan坐标Group Id、Artifact Id(com.example、demo)
  6. 选择打包方式:Jar包
  7. 选择JDK版本:21
  8. 选择常用maven依赖(如Spring Web、Lombok)
  9. 回车保存到一个新文件夹作为项目的跟路径
在这里插入图片描述

四:运行Spring Boot项目

运行时可能会出现java版本、spring boot版本不匹配的情况、或者maven配置有问题等,导致运行报错。

在这里插入图片描述

如果出现运行报错可以直接让cursor解决即可。右边的New Chat 通过快捷键 Ctrl + Shift + L 打开,输入”项目启动报错,请解决“。

在这里插入图片描述

五:初体验

在Chat中输入”创建一个HelloWorldController文件,写一个rest api,返回字符串”helloworld ai “。代码生成好时需要点击Accept来接收AI生成的代码。

在这里插入图片描述
在这里插入图片描述

Read more

物理模拟频繁失稳?,掌握这4种C++稳定性控制模式立刻见效

第一章:物理模拟稳定性问题的根源剖析 在开发游戏引擎、仿真系统或计算机动画时,物理模拟的稳定性是决定用户体验与计算可靠性的核心因素。不稳定的模拟可能导致物体穿模、异常抖动甚至程序崩溃。其根本原因通常可归结为数值积分误差、碰撞响应不合理以及刚体动力学参数设置不当。 数值积分方法的选择影响显著 物理引擎普遍采用数值积分方法更新物体状态,如位置和速度。其中欧拉法因实现简单被广泛使用,但其精度低、易发散。 // 简单欧拉法示例:易导致能量累积,引发不稳定 func eulerStep(pos, vel float64, dt, acc float64) (float64, float64) { vel += acc * dt // 速度更新 pos += vel * dt // 位置更新 return pos, vel } 相比之下,中点法或Verlet积分能提供更高稳定性,尤其在大时间步长下表现更优。 碰撞检测与响应中的隐患 当两个物体穿透后未能正确分离,连续帧中反复触发碰撞,将导致“振荡效应”。常见缓解策略包括: * 引入穿透补偿偏移(position

By Ne0inhk
【C++】类的默认成员函数下(内含日期类的实现)

【C++】类的默认成员函数下(内含日期类的实现)

文章目录 * 4.拷贝构造函数 * 5.赋值运算符重载 * 5.1 运算符重载 * 5.2 赋值运算符重载 * 6.取地址运算符重载 * 6.1 const成员函数 * 6.2 取地址运算符重载 * 7. 日期类实现 4.拷贝构造函数 如果一个构造函数的第一个参数是自身类类型的引用,且任何额外的参数都有默认值,则此构造函数也叫做拷贝构造函数,也就是说拷贝构造是一个特殊的构造函数。 拷贝构造的特点: 1.拷贝构造函数是构造函数的一个重载(无返回值)。 2.拷贝构造函数的第一个参数必须是当前类类型对象的引用(最好加上const,防止权限放大的问题),使用传值方式编译器直接报错,因为语法逻辑上会引发无穷递归调用。 拷贝构造函数也可以多个参数,但是第一个参数必须是类类型对象的引用,后面的参数必须有缺省值。 3.C++规定自定义类型对象进行拷贝行为必须调用拷贝构造,所以这里自定义类型传值传参和传值返回都会调用拷贝构造函数。 4.若未显式定义拷贝构造,编译器会自动生成拷贝构造函数。自动生成的拷贝构造对内置类型成员变量会完成值拷贝/浅拷贝

By Ne0inhk

C++ 中的 string

文章目录 * 核心概念 * 初始化与构造 * 容量与属性 * 元素访问与遍历 * 访问单个字符 * C 风格字符串 * 遍历 * 修改与操作 * 查找与子串 * 类型转换 * 数值转字符串 `std::to_string(value)` * 字符串转数值 * 现代化特性 * C++17:`std::string_view` * C++20 * 底层原理 * SSO(Small String Optimization) * COW(Copy-On-Write) * 最佳实践 * 参数传递 * 性能优化 * 安全性 本文首发于我的个人博客:Better Mistakes 版权声明:本文为原创文章,转载请附上原文出处链接及本声明。 由于技术迭代较快,文章内容可能随时更新(含勘误及补充)。为了确保您看到的是最新版本,并获得更好的代码阅读体验,请访问: 🍭 原文链接:

By Ne0inhk

【C++26重大更新】:反射驱动的类型检查将如何重塑代码质量?

第一章:C++26反射驱动类型检查的背景与意义 现代C++的发展持续聚焦于提升类型安全与编译时元编程能力。C++26引入的反射驱动类型检查机制,标志着语言在静态分析和泛型编程领域迈出了关键一步。该特性允许开发者在不依赖运行时类型信息(RTTI)的前提下,通过编译时反射获取类型的结构化属性,并执行精细的类型约束验证。 类型检查的演进需求 传统模板编程中,类型约束依赖SFINAE或concepts,但这些方法难以深入类型内部成员进行动态查询。例如,无法直接判断某个类是否含有特定命名的成员函数或字段。C++26的反射机制结合std::reflect等设施,使此类查询成为可能。 反射与类型安全的融合 借助编译时反射,开发者可编写如下代码: // 检查类型T是否具有名为'value'的公共数据成员 template <typename T> consteval bool has_value_member() { for (auto member : reflexpr(T).members()) { // 反射获取成员列表 if (member.

By Ne0inhk