自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(73)
  • 收藏
  • 关注

原创 基于ai工具(DeepSeek+Cursor+Devbox+Sealos)零代码项目开发--用ai实现简单项目的完整开发流程(数据库设计,前端,后端)

本文介绍了作者学习AI工具Cursor的实践过程,通过一个简单的员工管理系统项目进行演示。首先使用DeepSeek分析页面原型,确定需要创建部门表、员工表和员工工作经历表三张数据表。然后分析表间关系,设计各表字段结构,并生成完整的MySQL建表语句。最后为每张表添加了15条测试数据。整个过程展示了如何利用AI工具辅助完成数据库设计.

2025-12-20 19:00:34 925

原创 RabbitMQ(RabbitMQ的消息收发的模板工具:SpringAMQP)

本文摘要: SpringAMQP是Spring框架对RabbitMQ的封装,简化了消息队列操作。它提供自动声明队列/交换机、异步监听消息和RabbitTemplate发送消息三大功能。核心组件包括RabbitTemplate(消息收发)、MessageConverter(消息转换)、@RabbitListener(消息监听)等。文章详细介绍了四种交换机类型(Fanout、Direct、Topic、Headers)的特点和使用场景,并通过代码示例演示了如何声明Fanout和Direct类型交换机。最后展示了基

2025-12-06 16:18:20 1149

原创 RabbitMQ(简单介绍,快速入门)

摘要:本文介绍了RabbitMQ的基本概念及其在异步通信中的应用。RabbitMQ是一个基于AMQP协议的开源消息代理,通过生产者-消费者模型实现应用程序间的解耦。文章通过餐厅点餐的类比解释了同步与异步调用的区别,并详细说明了RabbitMQ的核心组件(交换机、队列、绑定等)。最后提供了一个Spring Boot整合RabbitMQ的Java示例,展示了如何使用RabbitTemplate发送消息和@RabbitListener接收消息,帮助开发者快速上手RabbitMQ的异步通信实现。

2025-12-01 13:30:00 958

原创 Java基础面试题(10)—Java(反射使用,常见应用场景)

Java反射机制:运行时动态操作类的核心能力 摘要:Java反射是一种强大的运行时自省机制,允许程序在运行期间动态获取类信息、创建对象、调用方法和访问字段,而无需在编译时知晓具体类结构。反射操作始于获取Class对象,主要通过类名、对象实例或全限定类名三种方式实现。反射的四大核心功能包括:1)通过构造器创建对象替代new操作;2)动态调用方法(包括私有方法);3)读写字段值(突破访问限制);4)获取完整的类结构信息。该机制广泛应用于主流框架中,如Spring的依赖注入和AOP实现、MyBatis等ORM框架

2025-11-30 12:29:41 702 2

原创 Java基础面试题(11)—Java(泛型)

本文介绍了Java泛型的基本概念与使用方法。泛型通过"参数化类型"实现类型安全,避免强制转换和运行时错误。文章详细讲解了泛型类、泛型方法和泛型接口的语法,以及通配符的使用场景。同时指出了泛型的三大限制:不能使用基本类型、存在类型擦除现象以及不能创建泛型数组。作者通过具体代码示例展示了泛型带来的编译期类型检查优势,并反思了学习过程中应注重思考而非简单复制的重要性。文章采用生活化比喻和幽默口吻,使技术内容更易理解。

2025-11-30 12:28:12 401

原创 黑马点评学习笔记11(Redission)

Redission是一个基于Java的Redis客户端,提供分布式对象和服务,简化分布式系统开发。文章介绍了在优惠券秒杀系统中使用Redission实现分布式锁的步骤:1)引入Redission依赖;2)配置Redisson客户端;3)用Redission的RLock替换自定义锁。通过tryLock方法获取锁,使用AopContext获取代理对象确保事务生效,最后释放锁。相比手动实现分布式锁,Redission提供了更简单可靠的解决方案,适合高并发场景。

2025-11-14 16:37:57 610

原创 黑马点评学习笔记10(优惠券秒杀下单优化(分布式锁的优化,Lua脚本))

本文介绍了基于Redis实现分布式锁来解决优惠券秒杀系统中的高并发问题。通过SET key value NX PX命令实现互斥锁,结合Spring的setIfAbsent方法封装锁获取逻辑。核心代码展示了SimpleRedisLock类的实现,包含获取锁(tryLock)和释放锁(unLock)方法。在业务层面,通过分布式锁确保"一人一单"的约束,防止用户重复下单。实现中需要注意锁的过期时间设置以避免死锁,以及事务处理保证数据一致性。该方案有效解决了JVM单机锁在分布式环境下的局限性。

2025-11-11 20:23:37 955

原创 黑马点评学习笔记09(优惠券秒杀下单优化(多线程安全问题))

本文讨论了Redis实现优惠券秒杀系统中的线程安全问题及解决方案。主要内容包括: 线程安全概念:多线程操作共享数据时需保证结果正确,通过互斥锁和原子操作实现。 超卖问题:多个线程同时查询并修改库存导致负数库存。解决方案: 悲观锁:加锁阻塞其他线程 乐观锁:版本号控制或CAS(比较并交换)实现库存扣减 一人一单限制:确保每个用户只能购买一次,通过查询用户订单记录实现。 代码示例展示了: 乐观锁实现库存扣减(CAS方式) 用户订单数量检查 订单创建流程 整个系统通过线程安全机制保证了高并发场景下的数据一致性。

2025-11-10 02:00:00 482

原创 黑马点评学习笔记08(分布式ID生成器)生成订单ID,优惠券秒杀下单

本文介绍了基于Redis实现的优惠券秒杀系统中全局唯一ID生成器的设计。针对普通优惠券和秒杀优惠券的业务需求,分析了传统自增ID存在的安全性问题和数据量限制问题,提出采用分布式ID解决方案。 文章重点讲解了RedisIdWorker类的实现,采用时间戳+序列号+数据库自增的方式生成全局唯一ID:首先计算相对于自定义起始时间的秒级时间戳,然后利用Redis的原子自增操作生成每日递增的序列号,最后将两者按位运算拼接。该方法保证了ID的全局唯一性、时间有序性和高并发性能。 该方案相较于UUID和数据库自增ID,在

2025-11-07 12:35:20 954

原创 黑马点评学习笔记07(缓存工具封装)

摘要 本文介绍了如何利用Redis和Java泛型封装工具类来解决缓存穿透、雪崩和击穿问题。通过创建CacheClient工具类,实现了两种核心方法:queryWithPassThrough处理普通缓存穿透问题,queryWithLogicalExpire处理热点数据缓存击穿问题。文章还解释了Java泛型的概念及其在工具类中的应用,展示了如何通过泛型方法实现类型安全的缓存操作。该工具类整合了数据缓存、逻辑过期处理、互斥锁获取等功能,显著简化了业务代码中的缓存处理逻辑,提高了开发效率。

2025-11-05 18:44:22 693

原创 黑马点评学习笔记06(缓存穿透,缓存雪崩,缓存击穿)

本文介绍了Redis在店铺查询功能中的应用,重点分析了缓存穿透、雪崩和击穿三大并发问题及其解决方案。通过黑马点评项目案例,展示了如何利用Redis缓存提升查询效率,并通过设置缓存超时时间、主动更新策略和缓存空对象等方法解决缓存一致性和穿透问题。文章还对比了缓存更新策略的优缺点,并给出了具体的Java代码实现,帮助开发者理解如何在高并发场景下合理使用Redis缓存,避免数据库过载风险。

2025-11-05 15:45:17 1028

原创 Java基础面试题(07)—Java(线程)

本文介绍了Java线程的基础知识,包括线程的概念、创建方式及常用方法。线程是进程中的执行单元,共享进程资源但拥有独立栈空间。Java提供了三种创建线程的方法:继承Thread类、实现Runnable接口和实现Callable接口。文章通过代码示例详细展示了每种方法的实现,并分析了它们的优缺点。此外,还列举了线程的常用方法如start()、run()、sleep()等,帮助开发者掌握线程的基本操作。最后提醒开发者学习技术时应注重思考而非简单复制,为后续学习和面试做好准备。

2025-11-03 12:06:54 826

原创 Java基础面试题(08)—Java(ArrayList)

本文分享了Java学习过程中的反思与ArrayList集合的总结。作者意识到学习不应急功近利,要边学边思考,并记录了ArrayList的核心特性:基于数组实现、动态扩容、有序存储、允许重复和null值、非线程安全等。文章详细介绍了ArrayList的常用方法(添加、获取、修改、删除元素等)和时间复杂度分析,并提供了简单示例代码。作者强调学习要注重思考而非简单复制,并建议打好基础再进阶学习。

2025-11-01 14:00:00 749

原创 黑马点评学习笔记05(拦截器改进)

本文介绍了如何优化拦截器配置,通过分离登录校验和Token刷新功能提升系统安全性。原方案仅配置一个拦截器存在安全隐患,现拆分为两个拦截器:RefreshTokenInterceptor负责所有请求的Token刷新(order=0优先执行),LoginInterceptor仅拦截需登录校验的路径(order=1)。前者会从Redis验证并刷新Token有效期,后者检查ThreadLocal中的用户信息。配置类MvcConfig通过excludePathPatterns排除公开路径(如登录、首页等),实现无需登

2025-11-01 14:00:00 294

原创 黑马点评学习笔记03(Hutool工具库)

本文介绍了基于Session实现的登录功能开发过程,重点总结了Hutool工具类库的应用。项目首先采用Session存储方式实现登录验证,为后续Redis和JWT实现做铺垫。关键点包括:1) Hutool的RandomUtil生成6位随机验证码;2) BeanUtil进行对象属性拷贝,避免敏感信息暴露;3) 使用正则校验手机号格式。通过Session存储验证码和用户信息,实现了基础的登录流程,后续将升级为更安全的Redis+JWT方案。文中还提供了Hutool核心功能简介及其在项目中的具体应用场景。

2025-10-31 14:00:00 611

原创 黑马点评学习笔记04(Redis 实现登陆界面)

本文探讨了传统Session方式在登录验证中的局限性,并介绍了基于Redis的实现方案。传统Session存在集群环境不兼容、移动端不支持、用户禁用Cookie等问题。文章通过对比流程图展示了两种方案的差异,并提供了完整的代码实现,包括发送验证码、登录验证等功能。Redis方案通过存储验证码和用户信息到Redis,解决了Session的固有缺陷,同时使用随机生成的token作为登录凭证,提高了系统的可扩展性和兼容性。拦截器部分代码未完整展示,但整体方案已清晰呈现了Redis在登录验证中的优势。

2025-10-31 02:15:00 256

原创 黑马点评学习笔记02(Mabatis—plus)

文章摘要 本文介绍了基于Session实现的登录界面功能,并重点讲解了MyBatis-Plus的使用。登录功能通过HttpSession存储验证码和用户信息,包含手机号验证、验证码校验、用户查询与创建等流程。文章详细展示了Controller、Service接口及实现类代码,并介绍了MyBatis-Plus作为MyBatis增强工具的特性,包括简化CRUD操作的优势。最后提供了项目搭建的基本步骤,包括依赖配置、启动类注解和YAML文件设置,为快速实现登录功能提供了完整的技术方案。

2025-10-16 17:02:36 721

原创 数据结构08(Java)-- 哈希表(HashMap和HashSet)有序表(TreeMap和TreeSet)的简单介绍

本文介绍了哈希表和有序表的基本概念及其实现。哈希表通过哈希函数实现快速查找(O(1)时间复杂度),包括键值对存储的HashMap和去重集合HashSet。有序表则按key顺序组织数据,提供O(logN)复杂度的操作,包括TreeMap和TreeSet。文章还通过代码示例展示了它们的常用方法,并对比了它们的区别。最后强调非基础类型存储时需提供比较器来保证有序性。适合数据结构初学者参考学习。

2025-10-14 11:21:35 428

原创 Java基础面试题(06)—— 内部类,匿名内部类,Lambda表达式

本文介绍了Java内部类的类型与使用场景,包括成员内部类、静态内部类、局部内部类和匿名内部类的特点与语法示例。特别讲解了Lambda表达式如何简化函数式接口的匿名内部类实现,使代码更简洁。作者结合自身学习经验,强调项目开发中要注重思考而非机械复制,并分享了技术学习的方法论。文章采用问答形式,既可作为学习笔记,也能为面试准备提供参考,最后以幽默语气邀请读者指正交流。

2025-10-14 10:56:24 435

原创 黑马点评学习笔记01(手机号校验(正则表达式))

本文介绍了基于Session的登录验证实现流程,重点讲解了正则表达式在手机号验证中的应用。通过代码示例展示了用户注册、发送验证码、登录验证等核心功能,包括Session存储验证码、用户信息等关键步骤。文章还提供了正则表达式常用符号速查表,并附有流程图说明整体实现流程。该方案作为过渡实现,为后续Redis和JWT技术的学习奠定了基础,同时展示了正则表达式在项目中的实际应用场景。

2025-09-26 22:07:37 795

原创 JavaWeb项目部署02(Docker)

摘要:Docker简化了项目部署流程,通过容器化技术实现环境一致性。与传统方式不同,Docker将应用及其依赖打包成镜像(如"全自动汉堡制作箱"),可跨平台运行。以MySQL为例,只需一条命令即可下载镜像并运行容器,包含所有配置和环境。常用命令包括pull、run、stop等,通过端口映射实现外部访问。Docker镜像存储在官方仓库,大幅降低运维复杂度,实现"一次构建,到处运行"。(148字)

2025-09-26 10:29:23 587

原创 JavaWeb项目部署01(Linux目录结构,常用命令 )

文章摘要 本文介绍了Linux操作系统的基础知识及常用命令,适合JavaWeb项目部署初学者。主要内容包括:主流操作系统分类(桌面、服务器、移动设备),重点讲解Linux作为服务器操作系统的优势;Linux目录结构及各目录功能;常用命令详解(目录操作、文件操作、拷贝移动、文本编辑、查找命令),并附实用快捷键提示。文章建议学生可通过阿里云免费服务器实践,并推荐了相关学习资源。掌握这些Linux基础命令是进行JavaWeb项目部署的重要前提。

2025-09-25 15:16:46 603

原创 JavaWeb前端06(ElementPlus快速构建网页)

本文介绍了如何基于Vue3使用ElementPlus组件库快速构建美观的网页界面。作者分享了自己学习过程中补全前端知识的经历,详细说明了ElementPlus的安装配置方法,并通过一个员工信息查询案例展示了常用组件的使用,包括表单(el-form)、输入框(el-input)、下拉选择框(el-select)、按钮(el-button)和表格(el-table)等。案例代码完整展示了如何实现数据绑定、条件渲染和样式控制,为初学者提供了实用的参考示例。文章强调ElementPlus能帮助开发者快速构建出专业美

2025-08-30 10:32:11 1058

原创 数据结构07(Java)-- (堆,大根堆,堆排序)

本文介绍了数据结构中的堆及其应用。堆是用数组实现的完全二叉树结构,分为大根堆(父节点值大于子节点)和小根堆(父节点值小于子节点)。通过heapInsert和heapify方法实现堆的构建和调整,时间复杂度为O(logN)。堆排序结合这两种方法,先将数组转换为大根堆,再通过交换堆顶元素与末尾元素实现排序,时间复杂度为O(N*logN)。文章以Java代码示例展示了堆的实现和堆排序算法。

2025-08-26 20:35:52 510

原创 Java基础面试题(04)—Java(Java中String StringBuffer 和 StringBuilder的区别)

本文对比分析了Java中String、StringBuffer和StringBuilder的特性与使用场景。String是不可变类,适合少量字符串操作;StringBuffer是线程安全的可变字符串,适用于多线程环境;StringBuilder是非线程安全的可变字符串,性能更高,适合单线程场景。文章还详细介绍了三者的常见用法,包括String的格式化输出和分割、StringBuilder的追加和反转操作,以及StringBuffer在多线程中的应用。最后作者以幽默口吻表示这是学习笔记,欢迎指正并求点赞。

2025-08-23 17:26:14 552

原创 JavaWeb前端05(Vue工程化,Vue组件两种风格:组合式API 和 选项式API)及简单案例)

本文介绍了Vue工程化开发的基本流程和优势。主要内容包括:1)Vue项目创建步骤和环境准备;2)Vue工程化特点(模块化、组件化、规范化、自动化);3)通过员工列表案例展示Vue工程化的实际应用,包括响应式数据管理、API调用和组件开发。与传统开发方式相比,Vue工程化能提高开发效率、降低维护难度,并增强代码复用性。文章还提供了完整的员工列表查询功能实现代码,涵盖模板、脚本和样式三部分。

2025-08-22 20:26:42 991

原创 JavaWeb前端04(Vue生命周期,钩子函数)

本文介绍了Vue生命周期和钩子函数的概念,通过一个员工管理系统案例展示了mounted钩子函数的实际应用。Vue生命周期指Vue对象从创建到销毁的过程,期间会自动执行特定阶段的钩子方法。示例中在页面加载后通过mounted钩子函数立即调用search()方法获取数据并渲染到页面。案例代码包含完整的HTML结构和样式,实现了员工信息展示、搜索和清空功能,其中使用v-if和v-for等Vue指令处理数据绑定和条件渲染。文章适合前端初学者理解Vue生命周期的实际应用场景。

2025-08-22 19:47:28 333

原创 数据结构06(Java)-- ( 快速排序(原理,减小时间复杂度),荷兰国旗问题)

快速排序与分区算法解析 本文通过两个问题引入快速排序的核心思想。问题一要求将数组按给定值分成左右两部分,问题二(荷兰国旗问题)进一步扩展为三部分划分。核心思路是使用指针标记分区边界,通过交换元素实现原地排序,时间复杂度均为O(N)。快速排序本质是通过递归调用荷兰国旗算法,每次选取基准值将数组分成小于、等于和大于三部分,再对左右子数组递归处理。代码实现中,partition函数返回等于区的边界,quickSort递归处理左右子区间,最终实现O(n log n)的时间复杂度。文章附有详细代码注释和示意图,适合数

2025-08-22 03:17:52 649

原创 JavaWeb前端03(Ajax概念及在前端开发时应用)

摘要: 本文介绍了Ajax技术及其在前端开发中的应用。作者在完成苍穹外卖后端学习后,开始补足前端知识,重点学习HTML、CSS和JavaScript。Ajax(异步JavaScript和XML)用于实现前后端数据交互,支持不刷新页面更新部分内容,如搜索联想、数据校验等。文章通过实例演示了Axios库的GET/POST请求,并展示了动态加载员工列表数据的完整案例,包括前端界面设计、请求发送与响应处理。代码示例详细解析了Axios的基本用法,帮助读者快速掌握前后端数据交互的实现方法。

2025-08-21 21:29:08 1206

原创 数据结构05(Java)-- ( 归并排序实质,归并排序扩展问题:小和问题)

本文介绍了归并排序的原理及其应用扩展。首先解析了归并排序的分治递归实现,通过拆分数组和有序合并降低时间复杂度至O(nlogn),相比传统排序的重复比较更高效。然后探讨了两个经典扩展问题:小和问题(统计每个数右边比它大的数量)和逆序对问题(统计右边比它小的数量),给出了基于归并排序的优化解法。核心在于利用归并过程的有序性,避免暴力遍历,将时间复杂度从O(n²)优化到O(nlogn)。文章通过代码示例和分步图解,帮助理解归并排序的核心思想及其衍生应用。

2025-08-20 15:49:43 1019

原创 JavaWeb前端03(Vue用法及具体案例)

本文介绍了Vue.js框架的基础知识和入门实践。文章首先概述了Vue作为渐进式JavaScript框架的特点,能够灵活构建用户界面。通过一个简单的"Hello World"示例展示了Vue的基本使用方式,包括数据绑定和插值表达式。接着介绍了Vue指令的概念和常见指令类型。最后给出了一个更完整的Tlias智能学习系统前端案例,展示了Vue在实际项目中的应用,包括表单绑定(v-model)和事件处理(@click)等特性。文章适合前端初学者了解Vue基础,为后续学习工程化的Vue开发打下基础

2025-08-19 11:50:33 618

原创 数据结构04(Java)-- ( 归并排序及其时间复杂度)

本文介绍了归并排序算法的实现和时间复杂度分析。通过Java代码展示了递归分解数组和合并有序子数组的过程,指出其时间复杂度为O(NlogN),符合master公式计算结果(a=2,b=2,d=1)。文章以初学者视角,结合图示说明排序原理,强调该算法采用分治思想:先递归排序左右子数组,再通过额外空间合并实现整体有序。作为数据结构学习笔记,内容聚焦算法核心逻辑,适合编程入门者理解基础排序算法。

2025-08-18 20:34:08 159

原创 JavaWeb前端02(JavaScript)

本文介绍了JavaScript的基础知识及其在网页交互中的应用。主要内容包括:1) JavaScript的组成(ECMAScript、BOM、DOM);2) 两种引入方式(内部脚本和外部脚本);3) 基础语法(输出语句、变量/常量、函数、自定义对象);4) DOM操作步骤;5) 事件监听语法;6) 实际案例演示如何为表格行添加鼠标悬停效果。文章适合有一定HTML/CSS基础的后端开发者快速了解JavaScript的核心概念和基本用法,通过具体代码示例展示了JavaScript实现网页交互效果的方法。

2025-08-18 18:51:10 1182

原创 Java基础面试题(3)—Java(String字符串的存储方式,字面量)

本文探讨了Java中字符串对象的创建机制,重点分析了new String("hhhhh")语句创建对象的两种情况:当字符串常量池不存在该字符串时创建两个对象(堆中和常量池各一个),存在时只创建堆中的一个对象。文章详细解释了字符串存储结构(堆、栈、方法区、字符串常量池)和两种创建方式(直接赋值和new关键字)的内存差异,并介绍了字面量的概念及其在Java中的存储位置。通过图示和分类说明,帮助读者理解字符串对象创建和存储的底层原理,为Java学习打下基础。

2025-08-17 20:39:09 592

原创 JavaWeb前端(HTML,CSS具体案例)

本文主要介绍了HTML和CSS的基础知识,通过具体案例演示了它们的核心概念和使用方法。HTML部分展示了如何创建网页结构,包括标题、图片等元素;CSS部分则讲解了如何通过选择器修改文本样式、颜色等外观属性。文章还详细介绍了盒子模型和flex布局两种页面布局方式,通过代码示例展示了内容区域、内边距、边框和外边距的组成,以及flex布局的灵活特性。这些前端基础知识为后续学习更高级的JavaScript、Vue等技术奠定了基础。

2025-08-17 19:07:12 900

原创 数据结构03(Java)--(递归行为和递归行为时间复杂度估算,master公式)

本文介绍了递归算法的核心思想及时间复杂度估算方法(Master公式)。通过一个递归求数组最大值的例子,展示了如何将大问题分解为小问题并合并结果。重点讲解了Master公式的应用:当子问题规模相同时,时间复杂度T(n)=a*T(n/b)+O(n^d)。案例中a=2(子问题数),b=2(子问题规模),d=0(非递归部分复杂度),经计算得出时间复杂度为O(n)。文章用通俗易懂的方式讲解了递归原理和复杂度分析的基本方法,适合算法初学者参考学习。

2025-08-17 18:53:17 483

原创 数据库基础—SQL语句总结及在开发时

本文介绍了SQL语句的基础知识,主要分为DDL、DML、DQL三大类。DDL用于数据库和表结构的定义与修改,包括创建、查询、修改和删除操作;DML用于数据的增删改操作;DQL用于数据查询,涵盖基本查询、条件查询、聚合函数、分组查询和排序查询等核心语法。文章通过具体示例演示了各类SQL语句的使用方法,并对数据类型、约束等概念进行了扩展说明,为数据库操作提供了实用指导。

2025-08-13 12:21:20 592

原创 JavaWeb(苍穹外卖)--学习笔记18(Apache POI)

本文介绍了如何使用Apache POI库在Java项目中实现Excel文件的读写操作。文章首先简要介绍了Apache POI的功能,包括处理Excel、Word等Office格式文件。然后通过测试代码演示了POI的基本使用:创建Excel文件并写入内容,以及读取已有Excel文件的内容。文中详细讲解了XSSFWorkbook、XSSFSheet、XSSFRow、XSSFCell等核心组件的使用场景。最后,文章展示了如何将POI应用到实际项目中,通过模板文件生成运营数据报表并导出Excel表格。该技术可以帮助

2025-08-10 21:01:42 1213

原创 JavaWeb(苍穹外卖)--学习笔记17(Apache Echarts)

本文记录了基于B站黑马程序员苍穹外卖项目的学习笔记,重点介绍了用户端微信小程序的开发流程和统计模块实现。文章详细讲解了使用Apache ECharts进行数据可视化的过程,并以销量排名TOP10功能为例,展示了从Controller层到Mapper层的完整代码实现,包括SQL查询语句的解析。通过订单表和订单详情表的联合查询,实现了按时间段统计商品销量并排序的功能。文中还包含了前端界面的简单介绍和后端开发的学习心得,适合Java初学者参考学习。

2025-08-10 20:41:29 750

原创 数据库基础--多表关系,多表查询

JavaWeb学习笔记:多表关系与数据库外键 本文介绍了数据库中的一对多关系实现方式,重点对比了物理外键和逻辑外键的区别。一对多关系指一个实体关联多个其他实体(如部门与员工)。物理外键通过SQL语句直接定义表间关联,但会影响性能且不适用于分布式系统。逻辑外键则在业务层维护关系,成为当前企业开发的主流方案。作者强调,现代开发规范通常建议避免使用物理外键,而采用更灵活的逻辑外键方式。

2025-08-08 19:43:36 354

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除