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

12.vue整合springboot首页显示数据库表-实现按钮:【添加修改删除查询】

vue整合springboot首页显示数据库表:【添加修改删除查询】

提示:帮帮志会陆续更新非常多的IT技术知识,希望分享的内容对您有用。本章分享的是node.js和vue的使用。前后每一小节的内容是存在的有:学习and理解的关联性。【帮帮志系列文章】:每个知识点,都是写出代码和运行结果且前后关联上的去分析和说明(能大量节约您的时间)。

所有文章都*不会*直接把代码放那里,让您自己去看去理解。我希望我的内容对您有用而努力~


文章目录

  • vue整合springboot首页显示数据库表:【添加修改删除查询】
  • 前言
  • 一、后端
  • 二、前端
    • 查询
    • 添加
    • 修改
    • 删除
  • 三、总结
  • 总结


本文章是系列文章,技术栈内容为:【springboot+vue】【前后分离】
【详细图文,实操步骤分享,节约时间版】。最终完成一个商业化项目。内容有:
springboot知识
mybatisPlus知识
vue知识
node.js知识

本小节的内容是
vue篇章 之 : 12.vue3实现与springboot交互【完成登陆及页面跳转】



每一个文章小节都会把 标题 说的很清楚。前后关联看,可以快速实现:前后分离。本质上,额外文章链接和文章自己标题内容关系不大。

=附01=:前面小节文章已经实现springboot的创建,springboot关联前端数据swagger和springboot通过mybatisplus操作数据库
【2025年】基于电脑的jdk1.8通过idea创建springboot2.x版本(非常简洁快速)
【上榜文章,一文搞定】现在springboot是3.x以上版本,jdk版本至少要求17.但是很多时候我们电脑是jdk1.8(求稳定性和安全性)。文本分享本机电脑1.8的jdk。idea如何非常简洁快速的创建springboot
文章里面也有 为什么只能是jdk17起和地址指定为阿里云报错的解决办法

=附02=:前面小节已经安装好node.js和分享了一些vue语法,及RESTful风格及安装配置swagger使用,和:
如何启动vue项目和vue语法组件化不同标签应对的作用说明
通过工具生成的vue案例(工具生成vue项目工程结构,里面有一个欢迎界面网页)为切入点,逐步逐步修改分享讲解,完成vue项目如何启动。及自行编写一些标签和样式来替换默认的内容,帮助理解包括里面的标签,js代码,样式如何配合的

=附03=:这个文章是 Axios 详细语法和实现步骤,其实整个 系列 干脆快速,很多上榜的
vue实现与后台springboot传递数据【传值/取值 Axios 】
在这里插入图片描述
实现Axios的案例解决方案(代码实例),代码已经直接解决了跨域,当然也标注了注释。

我为啥放链接。因为本文章的内容 本质上 是把前面很多的内容串起来了


前言

完成 前端 vue.js工程结构准备
前端能启动vue项目(vue项目的工程结构及vue语法分享在前面章节)。当前已经分享完毕的进度:vue项目里面网页写Axios取后台的值和发送数据到后台。已完成实现点击不同链接显示不同页面内容,vue-router路由配置,把Axios和router路由整合起来
登陆验证成功跳转到其他页面(登陆逻辑实现就是序号10)
完成首页数据表显示(序号11)

完成 后台 springboot工程结构准备
包括springboot项目(dao、service、controller、pojo实体类)。controller类里面的方法能拿实现不同提交方式(get post put delete) 去调用service/dao。 dao通过mybatisPlus操作mysql数据库(前面章节有分享)

本小节是 显示完毕数据库表之后,点击不同按钮,实现:添加修改删除查询
上一节
11.vue网页开启自动提交springboot后台查询-首页显示数据库表
已经显示出全部数据表里面的内容,前端后端代码都有

从0到现在,内容拆开了。实现前后分离。
拆开:力求 每一篇文章 单独把主题 分享清楚:本小节是 在表格基础上:增删改查


一、后端

数据库
在这里插入图片描述

controller

@RestController
@CrossOrigin //跨域问题,序号8 ,联系前后端,使用axios的细节步骤,附://(文章最后 分享了 非常详细的跨域 同源策略简单/非简单)
public class UserController {@Resourceprivate UserService userService;@PostMapping("/login")public boolean login(User user){boolean b = userService.login(user); //序号10  实现登录跳转首页用的return b;}@GetMapping("/findAll")public List<User> findAll(){List<User> list = userService.findAllUser();//查询全部,显示 welcome.vue之前就调用加载  //文章序号8  axios分享的vue组件生命周期自带函数return list;}@GetMapping("/getUser")public User getUser(){User user = userDao.selectById(1);return user;}@PostMapping("/addUser") //Post 添加public int addUser(@RequestBody User user){System.out.println(user);int number = userService.insertUser(user);return number;}@PutMapping("/updateUser") //Put 修改public int updateUser(@RequestBody User user){System.out.println(user);int number = userService.updateUser(user);return number;}@DeleteMapping("/deleteUser/{uid}") //Delete 删除public int deleteUser(@PathVariable("uid") int id){int number = userService.deleteUser(id);return number;}
}

service

@Service
public class UserService {@Resourceprivate UserDao userDao;//mybatisPlus的语法   序号4分享的mybatisPlus的详细使用//序号4 文章最后面,分享了QueryWrapper的使用语法(拼接sql语句)private QueryWrapper<User> wrapper = new QueryWrapper<User>();public boolean login(User user){ //登陆用的User u = userDao.selectOne(wrapper.eq("uname",user.getUname()));if(u == null){return false;}else{if(u.getUpwd().equals(user.getUpwd())){return true;}else{return false;}}}public User findById(int id){return userDao.selectOne(wrapper.eq("uid",id));//eq 是 =  的意思//wrapper 有一套自己的语法,能非常方便的拼接sql语句}public User findByName(String name){return userDao.selectOne(wrapper.eq("uname",name));//uname=参数name//序号4 文章最后面(wrapper)    我把内容拆开,是保证文章简洁  //保证  文章仅仅是标题内容}public List<User> findAllUser(){return userDao.selectList(null); }public int insertUser(User user){return userDao.insert(user);}public int updateUser(User user){return userDao.update(user,wrapper.eq("uid",user.getUid()));}public int deleteUser(int id){return userDao.deleteById(id);}
}

dao层

@Mapper
public interface UserDao extends BaseMapper<User> {  //使用的mybatisPlus//BaseMapper这里类里面  自动有很多很多 不同逻辑的增删改查的功能  //子类继承了父类,子类直接拥有父类的一些方法  我们不写基本的//这个案例不用写复杂的 ,如果非要我们自己写,具体内容在序号4里面
}

实体类


//如果表名和实体类不一样用:
//@TableName("数据库表名")
public class User {@TableIdprivate int uid; //自带很多sql语句, 所以:告诉mybatisPlus,这个成员变量是主键private String uname;private String upwd;private int uage;构造函数get settoString略}

二、前端

使用了axios(前后数据交互) 详细的语法分享:序号8
使用了router(路由,指定跳转的页面) 序号9
使用了elementPlus(视图标签ui框架) 序号10

现在整合了几乎前面全部的 。如果看晕,还是建议:看一看前面的

进入这个界面,看到的是:
在这里插入图片描述

全部代码,配合后台能直接运行<template><div><el-button type="primary" @click="userAdd" style="margin-bottom: 20px">新增</el-button><el-table :data="list" border style="width: 100%"><el-table-column type="index" align="center" width="60" label="序号" /> <!-- 自动的序号,不是数据库表的内容 --><el-table-column prop="uid" align="center"  width="100" label="id" /><el-table-column prop="uname" align="center" width="60" label="名称" /><el-table-column prop="uage" align="center" width="60" label="年龄" /><el-table-column label="操作" width="120"><template #default="scope"><el-button size="mini" @click="userToUpdate(scope.$index, scope.row)">编辑/修改</el-button><el-button size="mini" type="danger" @click="userDelete(scope.$index, scope.row)">删除</el-button></template></el-table-column></el-table><!-- 编辑/修改对话框 --><el-dialog v-model="editDialogVisible" title="编辑/修改数据"><el-form :model="editForm"><el-form-item label="ID" label-width="80px"><el-input v-model="editForm.uid" disabled /></el-form-item><el-form-item label="名称" label-width="80px"><el-input v-model="editForm.uname" /></el-form-item><el-form-item label="年龄" label-width="80px"><el-input v-model="editForm.uage" /></el-form-item></el-form><template #footer><el-button @click="editDialogVisible = false">取消</el-button><el-button type="primary" @click="userUpdate">确认</el-button></template></el-dialog><!-- 新增对话框 --><el-dialog v-model="addDialogVisible" title="新增数据"><el-form :model="addForm"><el-form-item label="名称" label-width="80px"><el-input v-model="addForm.uname" /></el-form-item><el-form-item label="年龄" label-width="80px"><el-input v-model="addForm.uage" /></el-form-item></el-form><template #footer><el-button @click="addDialogVisible = false">取消</el-button><el-button type="primary" @click="confirmAdd">确认</el-button></template></el-dialog></div>
</template><script>
import {reactive, toRefs} from "vue";
import {useRouter} from "vue-router";
import axios from "axios";export default {name: 'welcome',data() {return {list: [], // 初始化为空数组,稍后填充数据editDialogVisible: false,  //窗口默认不显示addDialogVisible: false,  //窗口默认不显示editForm: {  //修改方法和网页标签共用的对象uid: '',uname: '',uage: ''},addForm: {  //添加方法和网页标签共用的对象uname: '',uage: ''}};},created() {this.fetchTableData(); // 组件创建时自动调用的方法},methods: {fetchTableData() { //显示表格全部数据axios.get('http://localhost:8081/findAll').then(response => {this.list = response.data; })},userToUpdate(i,row) {  //开启修改网页窗口   及  row整行数据作为参数传给窗口this.editForm = { ...row };this.editDialogVisible = true;},userUpdate() {alert(this.editForm.uname)axios.put('http://localhost:8081/updateUser', this.editForm).then(() => {this.fetchTableData(); //调用表格显示方法this.editDialogVisible = false;  //把窗口关了this.$message.success('修改成功'); })},userDelete(i,row) { //删除this.$confirm('确认删除该记录吗?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {axios.delete(`http://localhost:8081/deleteUser/${row.uid}`).then(() => {this.fetchTableData();this.$message.success('删除成功');})})},userAdd() { //开启添加网页窗口  addForm 是全局对象,清空数据this.addForm = { uname: '', uage: '' };this.addDialogVisible = true;},    confirmAdd() { //添加方法 alert(this.addForm.uname)  //看一下 有值没有axios.post('http://localhost:8081/addUser', this.addForm).then(() => {this.fetchTableData();this.addDialogVisible = false;this.$message.success('新增成功');})}}
}
</script><style>样式我没写 ,各位可以自行编辑css样式
</style>

查询

这里是上面代码的某一个部分:

<el-table :data="list" border style="width: 100%">
标签里面::data="引用一个 全局变量"   list会被表格遍历,序号11详细的表格显示

这个变量list在data()里面声明:

data() {return {list: [] //这里仅仅声明 。没有赋值  声明了 很多地方都能用 ,前面文章:vue语法有很多分享...等等其他全局声明} //created() 组件被创建 自动调用的函数created() {this.fetchTableData(); // 调用我们自己定义的函数fetchTableData//还可以用很多个 其他的函数   在组件被创建的时候自动调用},methods: {fetchTableData() {//提交后台   接收数据   赋值给全局变量list (后台返回的也是一个list)axios.get('http://localhost:8081/findAll').then(response => {this.list = response.data; })} //赋值之后,这个list就在表格里面显示

添加

定义一个按钮,点击调用userAdd方法:

<el-button type="primary" @click="userAdd" style="margin-bottom: 20px">新增</el-button>

执行:

userAdd() { this.addForm = { uname: '', uage: '' };  //全局变量里面的数据清空  里面的成员变量uname和uagethis.addDialogVisible = true;  //让模态窗口显示出来}

点击之后:
在这里插入图片描述
最上面:template标签里面:最后一段,定义了这个窗口。且表单取值
我把代码放到一堆,这个主要看 流程和点击之后,发生了什么,对应的关系:

流程:弹出的窗口里面有一个:
<el-form :model="addForm">  
这个addForm又是一个全局变量  在data里面声明的<el-input v-model="addForm.uage" />
uage对应成员变量   也对应后端实体类的名字因为:controller能直接赋值参数在窗口里面点击提交:
<el-button type="primary" @click="confirmAdd">确认</el-button>执行confirmAdd方法
刚刚userAdd方法,是弹出窗口
confirmAdd方法 是提交后台post提交confirmAdd() {alert(this.addForm.uname)axios.post('http://localhost:8081/addUser', this.addForm) //全局变量给后台.then(() => { //成功之后this.fetchTableData(); //显示首页表格的方法this.addDialogVisible = false; //窗口关掉this.$message.success('新增成功'); //网页上面中间 绿色的字 显示3秒消失})}

修改

表格里面点击修改的按钮<el-button size="mini" @click="userToUpdate(scope.$index, scope.row)">编辑/修改</el-button>
两个参数:
一个是表格的序号(我方法里没有用,这个是分享,可以获取到序号)
一个是row (整行的数据)userToUpdate 是开启窗口的方案  及  给全局变量赋值 row参数数据(窗口数据回显)
userToUpdate(i,row) {  //i可以alert看一眼 和后台内容无关,vue给的tr的序号,也能为参数this.editForm = { ...row };  //整行的数据作为参数this.editDialogVisible = true; //显示窗口}

在这里插入图片描述
改一改之后,点击确认:

执行这个方法
<el-button type="primary" @click="userUpdate">确认</el-button>userUpdate() { //put提交alert(this.editForm.uname)//可以删掉,确认一下。全局变量是否有数据给后台的axios.put('http://localhost:8081/updateUser', this.editForm) //this.editForm传给给后台.then(() => {this.fetchTableData(); //显示表格的方法this.editDialogVisible = false; //关掉窗口this.$message.success('修改成功'); //网页上面中间 绿色的字 显示3秒消失})}

删除

userDelete(i,row) {this.$confirm('确认删除该记录吗?', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => { //点击确定之后 发送delete请求 删除axios.delete(`http://localhost:8081/deleteUser/${row.uid}`).then(() => {this.fetchTableData(); //显示表格的方法this.$message.success('删除成功');})})}

三、总结

在data里面定义了很多全局变量
窗口显示 窗口不显示 是false true
表格里面 点击: 新增 修改 删除 按钮的作用是:显示某某窗口(false or true)
因为是全局变量,所以添加按钮方法里面还清空了数据: uname:"" 给了一个空值

在窗口里面操作:
数据传递 和登陆的时候 语法一样。都是在form表单里面赋值
form里面的数据用:model=“全局变量”
这个全局变量 有数据之后 给axios传递到后台。
axios成功就是.then()
.then()里面:调用表格显示的方法,关闭窗口,显示文字


总结

说明一下:整个这个系列实现前后分离的springboot+vue项目。序号文章一共也就10几篇,只有核心图文重点操作步骤来实现这个目标(基本上您边看边写:一个小时或者一上午就能跟着一起手搓一个前后分离项目,然后您可以自行添加功能和内容在您项目里面)

其他扩展细节知识点,本系列省略了(或者有链接)如:
还有一些案例,但是现在案例基本满足大部分情况,毕竟当前我们的目的是:快速手搓一个前后分离的全栈。
很多文章都有链接,除了实现前后分离步骤之外,还可以查看链接详细分享的文章,后面根据需求自行添加内容到项目里面

(会陆续更新非常多的IT技术知识及泛IT的电商知识,可以点个关注,共同交流。ღ( ´・ᴗ・` )比心)
(也欢迎评论,提问。 我会依次回答~)

相关文章:

12.vue整合springboot首页显示数据库表-实现按钮:【添加修改删除查询】

vue整合springboot首页显示数据库表&#xff1a;【添加修改删除查询】 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是node.js和vue的使用。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性。【帮帮志系…...

bisheng系列(一)- 本地部署(Docker)

目录 一、导读 二、说明 1、镜像说明 2、本节内容 三、docker部署 1、克隆代码 2、运行镜像 3、可能的错误信息 四、页面测试 1、注册用户 2、登陆成功 3、添加模型 一、导读 环境&#xff1a;Ubuntu 24.04、Windows 11、WSL 2、Python 3.10 、bisheng 1.1.1 背景…...

如何用Python批量解压ZIP文件?快速解决方案

如何用Python批量解压ZIP文件&#xff1f;快速解决方案 文章目录 **如何用Python批量解压ZIP文件&#xff1f;快速解决方案**代码结果详细解释 话不多说&#xff0c;先上干货&#xff01;&#xff01;&#xff01; 代码 import os import zipfiledef unzip_file(dir_path: str…...

DriveGenVLM:基于视觉-语言模型的自动驾驶真实世界视频生成

《DriveGenVLM: Real-world Video Generation for Vision Language Model based Autonomous Driving》2024年8月发表&#xff0c;来自哥伦比亚大学的论文。 自动驾驶技术的进步需要越来越复杂的方法来理解和预测现实世界的场景。视觉语言模型&#xff08;VLM&#xff09;正在成…...

JavaScript 中的五种继承方式进行深入对比

文章目录 前言JavaScript 五种继承方式对比原型链继承构造函数继承组合继承寄生组合继承ES6 class extends 继承五种继承方式对比表前言 对 JavaScript 中的五种继承方式进行深入对比:原型链继承、构造函数继承、组合继承、寄生组合继承、以及 ES6 的 class extends。 内容将…...

企业标准信息公共服务平台已开放标准通编辑器访问入口

标准通 数字化标准编辑器 专业、高效、便捷 企业标准信息公共服务平台 近日&#xff0c;企业标准信息公共服务平台已开放标准通编辑器访问入口&#xff0c;可进入官网指定版块使用&#xff01; 核心功能亮点 解决企业痛点 传统标准编制&#xff0c;需反复核对格式、逐条…...

[Linux]安装吧!我的软件包管理器!

一、常见安装方式 在 Linux 中&#xff0c;有 3 种常见的软件安装方式&#xff1a; &#xff08;1&#xff09;yam、apt &#xff08;2&#xff09;.rpm 安装包安装 &#xff08;3&#xff09;源码安装 二、什么是软件包 在 Linux 下安装软件&#xff0c;通常的办法是下载…...

Spring Boot 与 RabbitMQ 的深度集成实践(三)

高级特性实现 消息持久化 在实际的生产环境中&#xff0c;消息的可靠性是至关重要的。消息持久化是确保 RabbitMQ 在发生故障或重启后&#xff0c;消息不会丢失的关键机制。它涉及到消息、队列和交换机的持久化配置。 首先&#xff0c;配置队列持久化。在创建队列时&#xf…...

进阶-数据结构部分:1、数据结构入门

飞书文档https://x509p6c8to.feishu.cn/wiki/HRLkwznHiiOgZqkqhLrcZNqVnLd 一、存储结构 顺序存储 链式存储 二、常用数据结构 2.1、栈 先进后出 场景&#xff1a; 后退/前进功能&#xff1a;网页浏览器中的后退和前进按钮可以使用栈来实现。在浏览网页时&#xff0c;每次…...

React 19中useContext不需要Provider了。

文章目录 前言一、React 19中useContext移除了Provider&#xff1f;二、使用步骤总结 前言 在 React 19 中&#xff0c;useContext 的使用方式有所更新。开发者现在可以直接使用 作为提供者&#xff0c;而不再需要使用 <Context.Provider>。这一变化简化了代码结构&…...

Json schema校验json字符串(networknt/json-schema-validator库)

学习链接 json-schema官网 - 英文 jsonschemavalidator 可在线校验网站 networknt的json-schema-validator github地址 networknt的json-schema-validator 个人gitee地址 - 里面有md文档说明和代码示例 JSON Schema 入门指南&#xff1a;如何定义和验证 JSON 数据结构 JS…...

交易所开发:构建功能完备的金融基础设施全流程指南

交易所开发&#xff1a;构建功能完备的金融基础设施全流程指南 ——从技术架构到合规安全的系统性解决方案 一、开发流程&#xff1a;从需求分析到运维优化 开发一款功能完备的交易所需要遵循全生命周期管理理念&#xff0c;涵盖市场定位、技术实现、安全防护和持续迭代四大阶…...

Windows_Vs2022 C#语言开发环境构建

Windows_VisualStudio2022 C#语言开发环境构建 一、C#语言简介历史背景语言特点应用领域开发工具未来发展方向 二、Visual Studio 2022&#xff08;一&#xff09;开发语言支持&#xff08;二&#xff09;主要功能&#xff08;三&#xff09;适用场景&#xff08;四&#xff09…...

Axure疑难杂症:统计分析页面引入Echarts示例动态效果

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 课程主题:统计分析页面引入Echarts示例动态效果 主要内容:echart示例引入、大小调整、数据导入 应用场景:统计分析页面…...

展锐Android14及更新版本split_build编译方法

更改split_build.py文件内容后按照下面方法编译&#xff1a; zip -r sys/vendor/sprd/release/split_build.zip sys/vendor/sprd/release/split_build/ rm -r sys/vendor/sprd/release/split_build/ cp -r vnd/vendor/sprd/release/split_build/ sys/vendor/sprd/release/cd s…...

青少年ctf平台应急响应-应急响应2

题目&#xff1a; 当前服务器被创建了一个新的用户&#xff0c;请提交新用户的用户名&#xff0c;得到的结果 ssh rootchallenge.qsnctf.com -p 30327 这个命令用于通过 SSH 协议连接到指定的远程服务器。具体解释如下&#xff1a; ssh&#xff1a;这是在 Unix-like 系统中…...

k8s监控方案实践补充(二):使用kube-state-metrics获取资源状态指标

k8s监控方案实践补充&#xff08;二&#xff09;&#xff1a;使用kube-state-metrics获取资源状态指标 文章目录 k8s监控方案实践补充&#xff08;二&#xff09;&#xff1a;使用kube-state-metrics获取资源状态指标一、Metrics Server简介二、kube-state-metrics实战部署1. 创…...

WEB安全--SQL注入--Oracle注入

一、Oracle知识点了解 1.1、系统变量与表 版本号&#xff1a;SELECT * FROM V$VERSION 用户名&#xff1a;USER、SYS_CONTEXT(USERENV,SESSION_USER) 库名&#xff1a;ALL_USERS、USER_USERS、DBA_USERS 表名&#xff1a;ALL_TABLES、DBA_TABLES、USER_TABLES 字段名&…...

基于SpringBoot的小型民营加油站管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

每日一道leetcode(新学数据结构版)

208. 实现 Trie (前缀树) - 力扣&#xff08;LeetCode&#xff09; 题目 Trie&#xff08;发音类似 "try"&#xff09;或者说 前缀树 是一种树形数据结构&#xff0c;用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景&#xff0c;例如自动…...

深入掌握MyBatis:连接池、动态SQL、多表查询与缓存

文章目录 一、MyBatis连接池1.1 连接池的作用1.2 MyBatis连接池分类 二、动态SQL2.1 if标签2.2 where标签2.3 foreach标签2.4 SQL片段复用 三、多表查询3.1 多对一查询&#xff08;一对一&#xff09;3.2 一对多查询 四、延迟加载4.1 立即加载 vs 延迟加载4.2 配置延迟加载 五、…...

Bootstrap 5 容器与网格系统详解

一、容器 - Bootstrap的基础构建块 Bootstrap需要容器元素来包裹网站内容&#xff0c;提供两种主要选择&#xff1a; .container - 固定宽度并支持响应式布局.container-fluid - 100%宽度&#xff0c;占据全部视口 1. 固定宽度容器 .container创建固定宽度的响应式页面&…...

Java反射机制详解:原理、应用与实战

一、反射机制概述 Java反射(Reflection)是Java语言的一个强大特性&#xff0c;它允许程序在运行时(Runtime)获取类的信息并操作类或对象的属性、方法等。反射机制打破了Java的封装性&#xff0c;但也提供了极大的灵活性。 反射的核心思想&#xff1a;在运行时而非编译时动态获…...

技术架构缺乏灵活性,如何应对变化需求?

技术架构缺乏灵活性会导致企业在面临市场变化、用户需求演化或新技术出现时难以及时响应&#xff0c;直接影响产品更新速度与竞争力。要有效应对变化需求&#xff0c;需要从引入模块化架构设计、推动微服务拆分、加强架构治理与决策机制、构建中台与平台化能力等方面系统推进。…...

【AI时代】Java程序员大模型应用开发详细教程(上)

目录 一、大模型介绍 1. 大模型介绍 1.1 什么是大模型 1.2 技术储备 1.3 大模型的分类 2. 入门案例 3.Token的介绍 二、提示词工程 1. 好玩的提示词案例 1.1 翻译软件 1.2 让Deepseek绘画 1.3 生成数据 1.4 代码生成 2. 提示词介绍 3. Prompt Engineering最佳实…...

虚拟网络编辑器

vmnet1 仅主机模式 hostonly 功能&#xff1a;虚拟机只能和宿主机通过vmnet1通信&#xff0c;不可连接其他网络&#xff08;包括互联网&#xff09; vmnet8 地址转换模式 NAT 功能&#xff1a;虚拟机可以和宿主通过vmnet8通信&#xff0c;并且可以连接其他网络&#xff0c;但是…...

102. 二叉树的层序遍历递归法:深度优先搜索的巧妙应用

二叉树的层序遍历是一种经典的遍历方式&#xff0c;它要求按层级逐层访问二叉树的节点。通常我们会使用队列来实现层序遍历&#xff0c;但递归法也是一种可行且有趣的思路。本文将深入探讨递归法解决二叉树层序遍历的核心难点&#xff0c;并结合代码和模拟过程进行详细讲解。 …...

Github 2025-05-16 Java开源项目日报 Top9

根据Github Trendings的统计,今日(2025-05-16统计)共有9个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Java项目9Netty:异步事件驱动的网络应用程序框架 创建周期:5043 天开发语言:Java协议类型:Apache License 2.0Star数量:33219 个Fork数量:…...

MinerU安装(pdf转markdown、json)

在Windows上安装MinerU&#xff0c;参考以下几个文章&#xff0c;可以成功安装&#xff0c;并使用GPU解析。 整体安装教程&#xff1a; MinerU本地化部署教程——一款AI知识库建站的必备工具 MinerU本地化部署可视化界面-CSDN博客 其中安装conda的教程&#xff1a; 一步步教…...

Java卡与SSE技术融合实现企业级安全实时通讯

简介 在数字化转型浪潮中,安全与实时数据传输已成为金融、物联网等高安全性领域的核心需求。本文将深入剖析东信和平的Java卡权限分级控制技术与浪潮云基于SSE的大模型数据推送技术,探索如何将这两项创新技术进行融合,构建企业级安全实时通讯系统。通过从零到一的开发步骤,…...