开发环境搭建
配置开发环境是高效学习的第一步。并配置JDK11。安装Maven 3.8.6,配置本地仓库与阿里云镜像。安装Git并配置用户信息,在IDEA中集成。Fork黑马商城项目至个人Gitee仓库并克隆到本地。使用DataGrip创建hmall数据库,导入SQL脚本,修改application-dev.yaml中的数据库配置。前端通过nginx运行,进入hmall-nginx目录,用命令行启动nginx(start nginx.exe)。访问http://localhost:18080,登录测试系统。确保各服务正常运行,为后续开发打好基础。
容器化部署引擎Docker
Docker是一种轻量级容器化技术,通过镜像打包应用及依赖,实现跨环境一致运行。它利用沙箱机制隔离容器,解决开发、测试、生产环境差异与依赖冲突问题。相比虚拟机,Docker启动更快、资源占用更少。结合Docker Compose可一键部署微服务集群,提升交付效率。
持久层框架MyBatisPlus
MyBatisPlus是MyBatis的增强工具,简化单表CRUD操作,支持条件构造器、分页、逻辑删除等功能,提升开发效率,广泛应用于企业级Java项目中。
开发环境搭建
配置开发环境是项目学习的第一步。建议电脑内存16G以上,推荐32G,可搭配便携显示器提升效率。下载并安装虚拟机(CentOS 7,IP:192.168.101.68)、IDEA、Maven、Git等工具,导入课程资料中的虚拟机文件,配置网络与SSH连接。使用FinalShell远程操作,启动Docker、MySQL等服务。IDEA中设置编码、自动导包、Java 11编译级别,并配置Maven本地仓库。通过Gitee Fork黑马商城项目,克隆到本地,创建hmall数据库并导入SQL。修改配置文件中的数据库地址与密码,启动后端服务。前端使用nginx部署,命令行启动。
OAuth2.0实战案例
本项目基于Spring Boot与Spring Cloud构建,实现OAuth2四种授权模式。通过父工程统一版本管理,分别搭建授权服务器(9001端口)与资源服务器(9002端口),集成Spring Security、MyBatis及MySQL,完成认证授权流程。支持授权码、简化、密码及客户端四种模式,实现安全的分布式权限控制。
持久层框架MyBatisPlus
MyBatisPlus是MyBatis的增强工具,简化单表CRUD操作,无需编写XML,通过BaseMapper、条件构造器、分页插件等实现高效开发,支持自定义SQL、逻辑删除、枚举与JSON处理,提升开发效率。
Ribbon负载均衡
本节深入讲解Ribbon实现客户端负载均衡的原理,解析@LoadBalanced注解的作用机制,剖析其通过拦截器、服务选取、URL重构实现负载均衡的全流程,并介绍自定义策略与饥饿加载优化方法,帮助读者全面掌握Ribbon核心知识。(238字)
SpringCloud工程部署启动
本课程介绍SpringCloud微服务工程搭建与部署,涵盖完整工程导入与从零搭建两种方案,完成user-service和order-service模块开发,实现数据库配置、业务代码编写及服务间远程调用,通过RestTemplate解决跨服务数据获取问题,帮助理解微服务拆分与协作机制。
Eureka服务注册与发现
本章介绍Eureka服务注册中心的搭建与使用,完成user-service和order-service的服务注册,实现多实例部署。虽Eureka已被SpringCloud逐步淘汰,但其核心思想仍具参考价值,后续将用Nacos替代并深入探讨。
@RefreshScope热更新原理
@RefreshScope实现配置热更新,核心在于@Scope("refresh")与动态代理。该注解使Bean纳入自定义缓存,配置变更时清空缓存,触发Spring重新创建Bean实例,结合Environment更新,实现@Value属性的动态刷新。本质是缓存失效+Bean重建机制。
认证源码分析与自定义后端认证逻辑
本文深入分析Spring Security认证流程,从UsernamePasswordAuthenticationFilter到AuthenticationManager、ProviderManager,最终到UserDetailsService的实现原理,揭示了自定义数据库认证的关键点:通过实现UserDetailsService接口并重写loadUserByUsername方法,返回包含用户信息和权限的UserDetails对象,并在配置类中注册该服务,即可完成自定义认证。全过程涵盖过滤器链、认证管理、权限封装及安全上下文存储机制。
RememberMe简介及用法
RememberMe功能通过令牌保持用户登录状态,避免重复登录。其原理是在用户勾选后下发remember-me Cookie,后续请求凭此令牌验证身份。但默认实现存在安全风险,令牌泄露可导致非法访问。可通过持久化Token至数据库并增加二次校验提升安全性,保障系统稳定与用户数据安全。(238字)
认识SpringSecurity
Spring Security 是 Spring 的安全框架,提供认证、授权及安全防护功能。支持表单、OAuth2、JWT 等多种认证方式,基于过滤器链实现请求鉴权,可防御 CSRF 等攻击,灵活扩展,保障 Web 应用安全。
@Configuration
被@Configuration标注的类会被Spring容器识别为配置类,作用等同于XML配置文件。通过@Bean注解可注册Bean实例,配合AnnotationConfigApplicationContext可启动IOC容器并加载配置类及其中的Bean,实现基于Java的配置管理。
Eclipse运行SSM/SSH项目教程
本教程介绍如何在Eclipse中配置Java Web开发环境,包括JDK、Tomcat安装与版本匹配,项目导入(支持Maven/非Maven),以及服务器绑定和启动访问。附常见问题如数据库配置修改提示,助你快速搭建并运行项目。(239字符)
如何做好SQL质量监控
SLS推出用户级SQL质量监控功能,集成于CloudLens for SLS,提供健康分、服务指标、运行明细、SQL Pattern分析及优化建议五大维度,帮助用户全面掌握SQL使用情况,识别异常、优化性能,提升日志分析效率与资源管理能力。
领域模型图(数据架构/ER图)
数据架构核心输出为ER图,包含实体、关系与属性。通过四色原型法进行领域建模:红色MI表时标事件,绿色PPT为业务对象,黄色Role示参与角色,蓝色DESC提供描述信息。以风控系统为例,从业务流程提炼MI,补充PPT实体与Role角色,添加DESC属性,最终提取绿色PPT为实体、红色MI为关系,构建ER图,明确一对一、一对多、多对多约束,形成清晰数据模型。(239字)
ArrayList扩容机制
ArrayList 添加元素时,先调用 `ensureCapacityInternal()` 确保容量,首次添加时默认扩容至 10。`grow()` 方法实现扩容,新容量为原容量的 1.5 倍(位运算优化)。当元素数超当前容量时触发扩容,保证添加高效。length 是数组属性,length() 是字符串方法,size() 是集合元素个数获取方法。
-MongoDB相关概念
MongoDB是一款高性能、无模式的文档型数据库,适用于高并发、海量数据、高扩展性场景。适用于社交、游戏、物联网等写频繁、事务要求低的应用。支持JSON风格BSON存储,灵活数据模型,具备丰富查询、索引、分片、副本集等特性,易扩展,开发运维成本低,是Web2.0及大数据时代的优选数据库。
Java泛型类型擦除以及类型擦除带来的问题
Java泛型在编译时会进行类型擦除,所有泛型信息被移除,替换为原始类型(如Object或限定类型)。例如,List<String>和List<Integer>在运行时均为List,导致无法通过instanceof判断泛型类型。类型检查在编译期完成,基于引用而非实际对象。擦除后,getter方法自动插入强转,保证类型安全。但静态成员不能使用类的泛型参数,因类未实例化时泛型类型未知。泛型方法可独立声明类型参数,与类泛型无关。
让智能家居“听懂人话”:我用4B模型+万条数据,教会了它理解复杂指令
通用大模型在面对复杂的物联网(IoT)指令时,常因无法理解“半小时后”、“稍微调低一点”等模糊语义而“翻车”。本文将分享如何通过高质量的数据清洗与精准的超参调优,将轻量级的 Qwen-3-4B-Instruct 模型训练成一个懂逻辑、会推理的智能家居专家。从数据治理到参数内幕,干货全公开!
告别深夜批改:用Qwen3-VL大模型打造会“理解”的作文阅卷助手
基于Qwen3-VL打造作文阅卷助手,通过对300篇高中作文进行LoRA微调,将教师从繁重批改中解放,更通过即时、客观的反馈助力学生写作能力提升,展现了垂直领域大模型应用的实用价值与高效落地路径。
API调用实现财政票据真伪查验-电子医疗发票清单查验-发票查验接口
财政票据真伪查验接口,支持医疗发票等多类票据在线核验。通过发票代码、号码、日期、校验码等要素,快速获取全国票据信息,实现高效防伪与合规审查,助力医保、财务系统防范虚假报销,保障财税数据真实完整。
CAXA 电子图板 2025 下载安装指南:小白也能轻松搞定
CAXA电子图板2025是一款专为电子工程师设计的电路设计与PCB布局软件,提供高效、精准的电子设计解决方案,适用于专业电路开发与工程制图。
Oracle 窗口函数
想在看员工薪水的同时,还能在同一行看到他所在部门的平均薪水吗?或者想给每个部门的产品按销量排名?这就是窗口函数的魔力。它不像GROUP BY会把数据压缩成一行,而是为每一行都进行一次“开窗”计算。通过OVER(PARTITION BY ...),你可以轻松实现分组排名、累计求和、或是与前后行数据对比等高级分析,代码比复杂的自连接和子查询要优雅得多。
【赵渝强老师】MongoDB的数据类型
本文介绍MongoDB中常用的数据类型,包括ObjectId、String、Boolean、Number、Array、Object、Date等,通过代码示例演示其用法与区别,帮助理解文档型数据库的数据存储机制。
【ClickHouse 线下Meetup—西安站】活动来袭!
邀您参加ClickHouse 线下Meetup—西安站,聚焦核心技术和实战案例,邀您共探未来新机遇,还有精美伴手礼等你来拿。
数据库
数据库领域前沿技术分享与交流