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

JDBC 初认识、速了解

目录

一. JDBC的简介

1. 数据的持久化

2. 什么是JDBC

二. JDBC中常用的类和接口

1. Driver 接口

2. DriverManager 类

3. Connection 接口

4. Statement 接口

5. PreparedStatement接口

6. ResultSet 接口

三. 总结


前言
从现在开始就来讲解JDBC的相关知识了

本文的目的是来大体的了解JDBC以及会用到的类和方法

旨在让读者更好的了解JDBC

个人主页:艺杯羹

一. JDBC的简介

1. 数据的持久化

先讲一个概念,数据的持久化(persistence)
简单来说就是将内存中的数据保存到可永久保存的设备中,例如磁盘
主要应用在将内存中的数据存储在关系型数据库中,也可以存储在磁盘文件、XML数据文件中
关系图如下:

2. 什么是JDBC

JDBC

  1. JDBC(Java DataBase Connectivity)java 数据库连接
  2. JavaEE 平台下的技术规范
  3. 定义了在 Java 语言中连接数据库,执行 SQL 语句的标准 API
  4. 可以为多种关系数据库提供统一访问

数据库驱动程序

  1. 数据库驱动就是直接操作数据库的一个程序
  2. 不同数据库产品的数据库驱动名字有差异
  3. 在程序中需要依赖数据库驱动来完成对数据库的操作

Java中访问数据库技术

  1. 基于JDBC标准访问数据库
  2. 使用第三方ORM 框架,如Hibernate, Mybatis 等访问数据库

当有了JDBC那么java程序就可以通过JDBC,操作各种数据库(MySQL,Oracle,SQLserver等)

二. JDBC中常用的类和接口

先介绍JDBC常用的类和接口,从大体上了解一下

1. Driver 接口

英文意思
driver:驱动程序
从意思就可以看出,这个接口是关于数据库驱动的

Driver 接口的作用是来定义数据库驱动对象应该具备的一些能力
比如与数据库建立连接的方法的定义,该接口是提供给数据库厂商使用的
所有支持 java 语言连接的数据库都实现了该接口,实现该接口的类我们称之为数据库驱动类

2. DriverManager 类

英文意思
Manager:管理
从意思可以看出,这个是关于数据库驱动管理的接口

DriverManager是驱动程序管理器,是负责管理数据库驱动程序的
驱动注册以后,会保存在DriverManager中的已注册列表中
DriverManager 通过实例化的数据库驱动对象,能够建立应用程序与数据库之间建立连接。并返回 Connection 接口类型的数据库连接对象。

  • getConnection(String jdbcUrl, String user, String password)
    该方法通过访问数据库的 url用户名以及密码返回对应的数据库的 Connection 对象
  • JDBC URL
    与数据库连接时,用来连接到指定数据库标识符
    在 URL 中包括了该数据库的类型、 地址、端口、库名称等信息
    注意:不同品牌数据库的连接 URL 不同

先了解一下这个URL的写法,之后会详细讲解的

Connection conn = 
DriverManager.getConnection("jdbc:mysql://host:port/database", "user", "password");

3. Connection 接口

英文意思
connection:连接
从意思可以看出,这个是连接数据库的接口

Connection 是数据库的连接(会话)对象
对数据库的一切操作都是在这个连接基础之上进行的,我们可以通过该对象执行 sql 语句并返回结果

常用方法

  • createStatement()
    创建向数据库发送 sql 语句的 Statement 接口类型的对象
  • preparedStatement(sql)
    创建向数据库发送预编译 sql 的PrepareSatement 接口类型的对象。
  • setAutoCommit(boolean autoCommit)
    设置事务是否自动提交
  • commit()
    在链接上提交事务
  • rollback()
    在此链接上回滚事务(回滚就是撤销)

4. Statement 接口

一句话:用于执行SQL语句

用于执行静态 SQL 语句并返回它所生成结果的对象。 由 createStatement 创建,用于发送简单的 SQL 语句(不支持动态绑定。字符串里要保存好

常用方法

  • execute( String sql )
    有结果集返回true 没有返回false
    执行参数中的 SQL,返回是否有结果集
  • executeQuery( String sql )
    运行 select 语句,返回 ResultSet 结果集
  • executeUpdate(String sql)
    运行 insert/update/delete(DML操作) 操作,返回更新的行数
  • addBatch(String sql)
    把多条 sql 语句放到一个批处理中
    批量添加
  • executeBatch()
    向数据库发送一批 sql 语句执行

5. PreparedStatement接口

一句话:用来执行SQL语句,和Statement接口类似,但是这个接口能够避免很多问题,所以后期基本上都是用的这个接口

继承自 Statement 接口。PreparedStatement 对象比 Statement 对象的效率更高,由于实现了动态的参数绑定,所以可以防止 SQL 注入(支持动态),所以我们一般都使PreparedStatement
对Statement接口做了一个扩展

常用方法

  • addBatch()
    把当前 sql 语句加入到一个批处理中
  • execute()
    执行当前 SQL,返回个 boolean 值
  • executeUpdate()
    运行 insert/update/delete 操作,返回更新的行数。
  • executeQuery()
    执行当前的查询,返回一个结果集对象
  • setDate(int parameterIndex, Date x)
    向当前SQL语句中的指定位置绑定一个java.sql.Date值
  • setDouble(int parameterIndex, double x)
    向当前 SQL 语句中的指定位置绑定一个 double值
  • setFloat(int parameterIndex, float x)
    向当前 SQL 语句中的指定位置绑定一个 float 值
  • setInt(int parameterIndex, int x)
    向当前 SQL 语句中的指定位置绑定一个 int 值
  • setString(int parameterIndex, String x)
    向当前 SQL 语句中的指定位置绑定一个 String 值

6. ResultSet 接口

ResultSet 用来暂时存放数据库查询操作获得结果集。

注意:这个是表的指针,不是整个结果集的表

常用方法

  • getString(int index) 和 getString(String columnName)
    获得在数据库里是 varchar、char 等类型的数据对象。
  • getFloat(int index)和 getFloat(String columnName)
    获得在数据库里是 Float 类型的数据对象。
  • getDate(int index) 和 getDate(String columnName)
    获得在数据库里是 Date 类型的数据。
  • getBoolean(int index) 和 getBoolean(String columnName)
    获得在数据库里是 Boolean 类型的数据。
  • getObject(int index) 和 getObject(String columnName)
    获取在数据库里任意类型的数据。

三. 总结

这就是JDBC的初认识以及之后会用到的相关的类和方法,希望能够帮助到你😊

相关文章:

JDBC 初认识、速了解

目录 一. JDBC的简介 1. 数据的持久化 2. 什么是JDBC 二. JDBC中常用的类和接口 1. Driver 接口 2. DriverManager 类 3. Connection 接口 4. Statement 接口 5. PreparedStatement接口 6. ResultSet 接口 三. 总结 前言 从现在开始就来讲解JDBC的相关知识了 本文的…...

双指针算法

引入 双指针顾名思义,就是同时使用两个指针,在序列、链表结构上指向的是位置,在树、图结构中指向的是节点,通过或同向移动,或相向移动来维护、统计信息。 ——OI Wiki 接下来我们来看双指针的几个具体使用方法。 板子…...

关于TD算法的笔记【时间差分】

1. TD算法逻辑:TD算法即时间差分算法,结合了蒙特卡洛方法和动态规划思想,通过当前估计值和下一个时间步观测值更新状态价值估计,无需完整episode或环境完整信息。 2. 下一时刻估计值计算:下一时刻估计值为 r_{t 1}\g…...

计算斐波那契数列

1.对于斐波那契数列的理解: (1)常规 该数列由兔子繁衍的想法产生,故又“兔子数列” 其数值为:1、1、2、3、5、8、13、21、34 从数学定义上走:F(0)1,F(1)1, F(n)F(n - 1)F(n - 2)(n ≥ 2,n ∈…...

Oracle REGEXP_SUBSTR

在 Oracle 数据库中,REGEXP_SUBSTR 是一个基于正则表达式的字符串处理函数,用于从目标字符串中提取符合特定模式的子串。它比传统的 SUBSTR 函数更灵活,适用于复杂的模式匹配需求。以下是其核心原理、参数解析及实际案例详解: 一…...

无人机自主导航与路径规划技术要点!

一、自主导航与路径规划技术要点 1. 传感器融合 GPS/北斗定位:提供全局定位,但在室内或遮挡环境下易失效。 惯性测量单元(IMU)**:通过加速度计和陀螺仪实时追踪姿态,弥补GPS信号丢失时的定位空缺。 …...

DDS波形发生器仿真及技术原理

1. 引言 在现代数字信号处理、电路设计以及通信系统中,直接数字频率合成(DDS)技术因其高速、精细的频率分辨率以及连续相位输出等优点而得到广泛应用。本文主要探讨在DE2-115开发板平台上基于DDS技术实现波形发生器的设计与实践。通过该设计…...

Java使用ANTLR4解析IDL文件

文章目录 前言解析IDL文件准备两个IDL文件准备一个IDL Grammar文件maven配置生成Lexer Parser Listener Visitor代码新建实体类IDL解析遍历器单元测试 参考 前言 接着上篇:Java使用ANTLR4对Lua脚本语法校验,介绍了什么是ANTLR?/ 举了一个hel…...

04-Seata 深度解析:从分布式事务原理到 Seata 实战落地

Seata 深度解析:从分布式事务原理到 Seata 实战落地 一、分布式事务核心理论与挑战 1.1 分布式事务的本质难题 在微服务架构中,一次业务操作可能涉及多个服务的数据库操作,传统单体事务(ACID)无法跨越服务边界&…...

2025企业增长新引擎:AI Agent驱动人效跃迁|白皮书2.0发布

2025年伊始,一款名为DeepSeek-R1的国产AI大模型以其高性能、低成本等核心优势成功霸榜热搜,在全国乃至全球掀起一场以AI为核心的技术革新与管理变革。 面对这样极具颠覆性的革新命题,易路人力资源科技王天扬先生自2022年起就率团队持续专注于…...

IJCV-2025 | 深圳大学记忆增强的具身导航!ESceme:基于情景记忆的视觉语言导航

作者:Qi Zheng 1 , 2 ^{1,2} 1,2, Daqing Liu 3 ^{3} 3, Chaoyue Wang 3 ^{3} 3, Jing Zhang 2 ^{2} 2, Dadong Wang 4 ^{4} 4, Dacheng Tao 2 ^{2} 2单位: 1 ^{1} 1深圳大学电子与信息工程学院, 2 ^{2} 2悉尼大学计算机科学学院,…...

[第十六届蓝桥杯 JavaB 组] 真题 + 经验分享

A:逃离高塔(AC) 这题就是简单的签到题,按照题意枚举即可。需要注意的是不要忘记用long,用int的话会爆。 📖 代码示例: import java.io.*; import java.util.*; public class Main {public static PrintWriter pr ne…...

《分布式软总线:网络抖动下的数据传输“定海神针”》

在当下,智能设备之间的互联互通已成为生活与工作的刚需。分布式软总线作为实现这一愿景的关键技术,正日益凸显其重要性。然而,网络环境的复杂性,尤其是网络抖动频繁的情况,给分布式软总线的数据传输带来了严峻挑战。如…...

C++函数

函数 为什么要使用函数 已经有main函数,为什么还要自定义函数?:“避免重复制造轮子”,提高开发效率 函数的定义 函数的设计方法:先确定函数的功能、确定函数的参数、是否需要参数,参数的个数&#xff0c…...

FreeRTOS菜鸟入门(五)·空闲任务与阻塞延时的实现

目录 1. 实现空闲任务 1.1 定义空闲任务的栈 1.2 定义空闲任务的任务控制块 1.3 创建空闲任务 2. 实现阻塞延时 2.1 vTaskDelay()函数 2.2 修改 vTaskSwitchContext()函数 3. SysTick 中断服务函数 4. SysTick 初始化函数 通过之前我们了解知道,任…...

PCIe 学习笔记(一)

系列文章目录 【PCIe】链路测试,数字工程师也要会看高速信号眼图! 【PCIe】链路训练状态机(LTSSM) - PCIe链路建立过程概述 【PCIe】PCIe设备的BDF与系统枚举过程 文章目录 系列文章目录PCIe LTSSM**1. 链路训练状态(Training States&#…...

【正点原子STM32MP257连载】第四章 ATK-DLMP257B功能测试——LED、按键测试

1)实验平台:正点原子ATK-DLMP257B开发板 2)浏览产品:https://www.alientek.com/Product_Details/135.html 3)全套实验源码手册视频下载:正点原子资料下载中心 文章目录 第四章 ATK-DLMP257B功能测试4.1 LED…...

深度为16,位宽8bit的单端口SRAM——学习记录

链接&#xff1a; 【Verilog HDL 训练】第 13 天&#xff08;存储器、SRAM&#xff09;-云社区-华为云 module sram #(parameter ADDR_BITS4)(input clk,input [ 7:0] addr,input [ 7:0] din,input ce,input we,output reg [ 7:0] dout);localparam MEM_DEPTH 1<<ADDR_…...

面向对象编程

在面向对象编程中&#xff0c;除了通过创建类的实例来访问其属性和方法外&#xff0c;还可以通过在一个类里创建另一个类的属性&#xff08;本质上也是持有另一个类的实例引用&#xff09;的方式来访问该类的属性和方法。下面为你详细解释这两种方式&#xff1a; 1. 通过创建实…...

远程登录一个Linux系统,如何用命令快速知道该系统属于Linux的哪个发行版,以及该服务器的各种配置参数,运行状态?

远程登录一个Linux系统&#xff0c;如何用命令快速知道该系统属于Linux的哪个发行版&#xff0c;以及该服务器的各种配置参数&#xff0c;运行状态&#xff1f; 查看Linux发行版信息 查看发行版名称和版本&#xff1a; cat /etc/*-release或 lsb_release -a查看内核版本&#…...

简单socket通信,回显 服务器程序与客户端程序之间的通信。

Socket 通信编程是一种基于网络的通信方式&#xff0c;允许不同主机上的程序通过网络进行数据交换。 实现结构try catch&#xff1a; 前情了解&#xff1a; 1.如何创建服务器端 定义ServerSocket套接字&#xff0c;需要等待客户端连接&#xff0c;阻塞&#xff0c;直到接入连接…...

C# 基类型和派生类型之间的转型

1.什么是基类型和派生类 基类型&#xff1a;父类&#xff0c;所有子类都继承自它。 派生类型&#xff1a;子类&#xff0c;继承了父类的属性和方法&#xff0c;还可以添加自己的新功能。 例子&#xff1a; class Animal { }//基类型 class Dog : Animal { }//派生类型 这…...

深度学习--激活函数

激活函数通过计算加权和并加上偏置来确定神经元是否应该倍激活&#xff0c;它们将输入信号转换为输出的可微运算。大多数激活函数都是非线性的&#xff0c;由于激活函数是深度学习的基础&#xff0c;下面简要介绍一些常见的激活函数。 1 RelU函数 最受欢迎的激活函数是修正线性…...

MySQL 缓存机制全解析:从磁盘 I/O 到性能优化

MySQL 缓存机制全解析&#xff1a;从磁盘 I/O 到性能优化 MySQL 的缓存机制是提升数据库性能的关键部分&#xff0c;它通过多级缓存减少磁盘 I/O 和计算开销&#xff0c;从而提高查询和写入的效率。 1. 为什么需要缓存&#xff1f; 数据库的性能瓶颈通常集中在磁盘 I/O 上。…...

【项目管理】第17章 项目干系人管理-- 知识点整理

项目管理-相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 (一)知识总览 项目管理知识域 知识点: (项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域) 对应:第6章-第19章 第6章 项目管理概论 4分第13章 项目资源管理 3-4分第7章 项目…...

编程语言到mysql ‘\‘到数量关系

在 MySQL 的模糊查询中&#xff0c;反斜杠 \ 的转义规则需要根据 转义层级 和 SQL 模式 来确定。以下是详细说明及示例&#xff1a; 一、默认模式下&#xff08;未启用 NO_BACKSLASH_ESCAPES&#xff09; 1. 规则说明 反斜杠转义&#xff1a;\ 是 MySQL 的默认转义字符。 转义…...

本地生活服务平台搭建方案详解:同城跑腿外卖系统源码一体化开发

在数字化浪潮不断推进的今天&#xff0c;本地生活服务平台正逐渐成为人们日常生活中不可或缺的一部分。从点餐外卖到同城帮买、帮送、帮取&#xff0c;用户对即时服务的需求愈发强烈。与此同时&#xff0c;创业者和本地商家也纷纷看好“同城服务 外卖配送”的一体化平台模式&a…...

索引语法SQL性能分析索引的使用

目录 准备: 一.索引语法 1). 创建索引 2). 查看索引 3). 删除索引 4).使用索引查询和普通查询的区别 二.SQL性能分析 1.SQL执行频率 2.慢查询日志 3.profile详情 4.explain 三.索引的使用 1.最左前缀法则 2.范围查询 3.索引失效情况 索引列运算 字符串不加引号…...

Docker技术基础新手入门教程

Docker技术深度解析:从架构到实战的运维指南 一、Docker核心架构与组件详解1. 什么是Docker?1. Docker引擎(Docker Engine)2. Docker对象模型二、关键技术深度剖析1. 容器隔离机制2. 容器网络模型网络驱动类型自定义网络实战3. 存储卷与数据持久化三种挂载方式对比示例:My…...

NO.93十六届蓝桥杯备战|图论基础-拓扑排序|有向无环图|AOV网|摄像头|最大食物链计数|杂物(C++)

有向⽆环图 若⼀个有向图中不存在回路&#xff0c;则称为有向⽆环图(directed acycline graph)&#xff0c;简称 DAG 图 AOV⽹ 举⼀个现实中的例⼦&#xff1a;课程的学习是有优先次序的&#xff0c;如果规划不当会严重影响学习效果。课程间的先后次序可以⽤有向图表⽰ 在…...

Rust泛型与特性

文章目录 泛型函数中的泛型结构体与枚举中的泛型特性&#xff08;trait&#xff09;默认特性Trait作为参数特性做返回值 给结构体实现方法 泛型 泛型编程是现代编程语言中重要的机制 C是通过模板来实现泛型的&#xff0c;而C语言中是没有泛型的 泛型是用来表达抽象类型的机制…...

Day08【基于预训练模型分词器实现交互型文本匹配】

基于预训练模型分词器实现交互型文本匹配 目标数据准备参数配置数据处理模型构建主程序测试与评估总结 目标 本文基于预训练模型bert分词器BertTokenizer&#xff0c;将输入的文本以文本对的形式&#xff0c;送入到分词器中得到文本对的词嵌入向量&#xff0c;之后经过若干网络…...

基于uniapp 实现画板签字

直接上效果图 代码 <template><view class"container"><!-- 签名画布 --><view class"canvas-container"><canvas canvas-id"signCanvas" class"sign-canvas"touchstart"handleTouchStart"touc…...

5.跳表(skiplist)

1. 什么是跳表 -skiplist skiplist 本质上也是一种查找结构&#xff0c;用于解决算法中的查找问题&#xff0c;跟平衡搜索树和哈希表的价值是一样的&#xff0c;可以作为key 或者 key/value 的查找模型。 skiplist &#xff0c;顾名思义&#xff0c;首先它是一个 list 。实际上…...

GitHub 封禁中国 IP:影响、原因及应对

在技术全球化的当下&#xff0c;代码托管平台如同开发者的 “数字仓库”&#xff0c;而 GitHub 无疑是其中最广为人知的一座。但在 2025 年 4 月 13 日&#xff0c;一则令人震惊的消息在国内开发者社群中炸开了锅 ——GitHub 疑似封禁中国 IP。一时间&#xff0c;这一事件迅速成…...

基于工业操作系统构建企业数字化生态的实践指南

一、工业操作系统选型策略 工业操作系统&#xff08;IIoT OS&#xff09;的选型需从功能适配性、技术成熟度、生态兼容性三个维度综合评估。以玉麟科技DIOS平台为例&#xff0c;其 "云端 终端" 架构支持全球设备管理&#xff0c;通过工业知识模型实现设备健康度预测…...

金能电力领跑京东工业安全工器具赛道 2025年首季度数据诠释“头部效应”

金能电力领跑京东工业安全工器具赛道 2025年首季度数据诠释“头部效应” 在2025年第一季度京东工业平台“电料辅件-安全工器具”热销品牌的激烈竞争中&#xff0c;金能电力以一组极具说服力的数据&#xff0c;向行业展示了何为“绝对头部”。从成交金额、销量到流量、客群覆…...

基于大模型的反流食管炎手术全流程风险预测与治疗方案研究报告

目录 一、引言 1.1 研究背景 1.2 研究目的 1.3 研究方法与创新点 二、反流食管炎概述 2.1 定义与发病机制 2.2 临床症状与诊断标准 2.3 流行病学现状 三、大模型技术原理与应用现状 3.1 大模型基本原理 3.2 在医疗领域的应用案例 3.3 用于反流食管炎预测的优势 四…...

探索 C 与 Java/Kotlin 的语言差异:从指针到高阶函数

作为一名熟悉 Java 和 Kotlin 的开发者&#xff0c;初次接触 C/C 时常会遇到一系列概念上的“文化冲击”。本文将从几个关键点出发&#xff0c;帮助你更好地理解 C/C 与 Java/Kotlin 在语言设计上的核心区别。 1. 指向未知类型的指针 void*、结构体指针访问 ->、空指针常量 …...

Redis之缓存过期淘汰策略

面试切入点 Redis内存满了怎么办&#xff1f; redis的默认内存多少&#xff1f;在哪里查看&#xff1f;如何设置修改&#xff1f; 查看redis最大占用内存 打开redis配置文件&#xff0c;设置maxmemory参数&#xff0c;maxmemory是bytes字节类型&#xff0c;注意转换。 redi…...

Rust-引用借用规则

目录 一、概述 二、借用规则 三、详细解释 3.1 第一条规则 3.2 第二条规则 3.3 第三条规则 四、总结 Welcome to Code Blocks blog 本篇文章主要介绍了 [Rust-引用借用规则] ❤博主广交技术好友&#xff0c;喜欢文章的可以关注一下❤ 一、概述 Rust为确保程序在运行时不…...

【报错】解决pytorch出现RuntimeError: An attempt has been made to start a new process...

此错误是由于在 Windows 系统中使用多进程时&#xff0c;没有正确使用 if __name__ __main__: 语句块造成的。在 Windows 里&#xff0c;多进程的启动方式是 spawn&#xff0c;并非 fork&#xff0c;所以必须在主模块中使用 if __name__ __main__: 语句块来避免子进程重复执行…...

游戏引擎学习第228天

对上次的内容进行回顾&#xff0c;并为今天的开发环节做铺垫。 目前大部分功能我们已经完成了&#xff0c;唯一剩下的是一个我们知道存在但目前不会实际触发的 bug。这个 bug 的本质是在某些线程仍然访问一个已经被销毁的游戏模式&#xff08;mode&#xff09;之后的状态&…...

Pytorch Hook 技巧

通过 functools.partial 扩展 Pytorch Hook 机制 阅读 atom 文章源码时学习到的技巧&#xff0c;mark一下 通过 functools.partial&#xff0c;开发者无需修改原始函数或 PyTorch 的 Hook 机制&#xff0c;即可实现​​参数扩展与接口适配​​&#xff0c;这是 Python 函数式编…...

Python multiprocessing模块介绍

multiprocessing 是 Python 标准库中的一个模块&#xff0c;用于实现多进程并行计算&#xff0c;可以在多核 CPU 上显著提升程序性能&#xff0c;尤其适用于 CPU 密集型任务。Python 的多线程由于 GIL&#xff08;全局解释器锁&#xff09;限制&#xff0c;在进行 CPU 密集型任…...

[特殊字符] LoRA微调大模型实践:从MAC到Web的全流程指南

&#x1f680; 实践步骤概览 今天我们要在MAC上完成一个完整的AI项目闭环&#xff1a; 微调一个大模型 → 2. 导出模型并部署 → 3. 暴露API给web后端 → 4. 前端展示 &#x1f6e0;️ 微调模型准备 核心配置 框架&#xff1a;LLama-Factory &#x1f3ed; 算法&#xff1a…...

第二天 通过脚本控制物体移动和旋转

一、Unity脚本编程基础认知 1.1 为什么说脚本是Unity的灵魂&#xff1f; Unity引擎的核心架构采用ECS&#xff08;Entity-Component-System&#xff09;模式&#xff0c;脚本作为组件的具体实现&#xff0c;控制着游戏对象的所有行为。统计显示&#xff0c;一个中等规模的Uni…...

在SpringBoot中访问 static 与 templates 目录下的内容

目录 步骤一&#xff1a;添加 Thymeleaf 依赖 (处理 Templates 目录)步骤二&#xff1a;配置静态资源路径 (可选但建议了解)步骤三&#xff1a;访问不同目录下的 HTML 文件访问 static 目录下的 HTML 文件访问 templates 目录下的 HTML 文件 总结 在使用 Spring Boot 开发 Web …...

常见的 API 设计风格

在软件开发中&#xff0c;常见的 API 设计风格主要有以下几种&#xff0c;每种风格适用于不同的场景和需求&#xff1a; 1. RESTful API (主流) 特点&#xff1a; 基于 HTTP 协议&#xff0c;使用标准方法&#xff08;GET/POST/PUT/DELETE&#xff09;资源导向&#xff08;UR…...

Grass.io项目现状:DePIN亮眼明星,扩张中的AI数据银行

Grass.io项目现状:DePIN亮眼明星,扩张中的AI数据银行 Grass如何在DePIN项目丛林中脱颖而出? 答案在于其"零门槛"策略——用户是基石,其他一切皆为杠杆。 Grass通过"技术+模式"双轮驱动打破行业内卷:零知识证明技术与Solana Layer2架构确保数据真实…...