- 博客(118)
- 资源 (2)
- 收藏
- 关注
原创 【面向对象】面向对象七大原则
单一职责原则是最简单的面向对象设计原则,用于控制类粒度的大小;它建议一个对象应该只包含单一的职责。一旦某个类承担的职责越多,相当于这些职责被耦合在同一个类中,所以它能被复用的可能性就越小。单一职责原则旨在实现高内聚、低耦合,在很多代码重构的手法中都能见到它的身影,虽然思想简单但是却最难运用,因为只有当你有较强的分析能力后,才能将一个耦合度极高的类分离成几个单独的职责明确的类。一个软件实体应当对扩展开放,对修改关闭。也就是说设计的模块能在不被修改源代码的前提下,对其进行扩展。
2025-08-05 20:58:06
1294
转载 深入了解gradle和maven的区别
和都可以用来构建java程序,甚至在某些情况下,两者还可以互相转换,那么他们两个的共同点和不同点是什么?我们如何在项目中选择使用哪种技术呢?
2024-01-30 20:58:35
896
原创 程序员の面试题
本文整理了程序员面试常见的技术要点,主要包括: 中间件技术:列举了Tomcat、WebLogic等常用中间件 SQL优化:详细介绍了索引建立原则、使用注意事项及SQL编写规范 Java核心知识: 锁机制:对比悲观锁与乐观锁,分析synchronized和Lock的区别 多线程:线程特性、实现方式及同步问题解决方案 Java特性:封装、继承、多态的实现方式 JDK 1.8新特性:包括default方法、Lambda表达式和新的Date API Spring MVC核心流程:完整处理请求的12个步骤 Sprin
2021-07-10 15:24:21
265
原创 【MySQL】06 视图 view
视图概述 视图(view)是数据库中的虚拟表,其结构和数据依赖于基础表。视图允许用户像操作普通表一样查看和修改数据,同时具有以下作用: 简化查询语句,封装复杂查询逻辑 增强数据安全性,限制用户可见数据范围 屏蔽底层表结构变化,通过视图保持接口稳定 视图管理 创建视图 使用CREATE OR REPLACE VIEW语法创建视图,可包含查询条件和多表关联: CREATE VIEW manager_view AS SELECT id, name, salary FROM employees WHERE posi
2025-12-02 10:16:08
428
原创 【MySQL】07 数据库的高级操作
本文介绍了MySQL数据库的备份还原和用户管理操作。在备份方面,详细说明了使用mysqldump命令备份单个数据库、多个数据库和所有数据库的方法,并阐述了还原数据库的完整流程。在用户管理方面,重点讲解了mysql系统数据库中的user表结构,该表存储了用户权限信息,包含Host、User和各种权限字段(如Select_priv、Insert_priv等),这些字段决定了用户对数据库的操作权限。通过掌握这些基本操作,可以更好地维护MySQL数据库的安全性和完整性。
2025-12-02 10:14:54
701
原创 【MySQL】05 事务、存储过程
本文摘要: 数据库事务管理是保证数据安全的重要机制,通过ACID特性(原子性、一致性、隔离性、持久性)确保数据操作的可靠性。事务操作包括开启(start transaction)、提交(commit)和回滚(rollback),并提供了四种隔离级别解决并发问题。存储过程则是SQL语句的集合,可通过create procedure创建,支持变量定义、条件处理和游标操作,实现复杂业务逻辑封装和复用。文中详细演示了事务提交/回滚操作示例,并介绍了存储过程的创建、变量使用、异常处理等核心功能。
2025-11-26 19:44:02
377
原创 【MySQL】04 数据库的多表查询
外键是数据库表之间的引用约束,用于确保数据一致性。本文演示了MySQL中外键的基本操作:1)创建外键约束,将student表的gid字段关联到grade表的id字段;2)查看外键约束信息;3)删除外键约束。在系统设计初期,建议谨慎使用外键,以减少表间的强耦合关系,保持表的独立性。外键虽然能保证数据完整性,但可能影响性能并增加维护复杂度。
2025-11-25 09:30:00
560
原创 【MySQL】03 数据库的CRUD
本文介绍了MySQL中数据的增删查改操作,重点讲解了INSERT语句的多种用法:1)指定字段插入数据;2)不指定字段按顺序插入;3)使用SET语法插入;4)批量插入数据。同时展示了简单查询SELECT的基本语法和条件查询WHERE的使用方法,包括关系运算符的应用。文中通过实际SQL示例演示了如何操作table_test表,包含字段插入、多行插入以及查询结果显示等操作,为MySQL基础操作提供了实用参考。
2025-11-24 14:59:35
773
原创 【MySQL】02 数据库的基本操作
本文介绍了数据库基础操作和数据类型相关知识。主要内容包括:数据库的创建、查看、修改和删除操作;常见数据类型如整型、浮点型、日期时间类型和字符串类型的特性;数据表的基本操作(创建、查看、修改和删除);表的约束条件(主键、外键、非空、唯一性等约束);以及索引的概念、创建和删除方法。文章提供了详细的SQL语法示例,帮助读者掌握数据库基础操作技巧,适合数据库初学者学习参考。
2025-11-24 12:14:31
1087
原创 【Redis】Redis的RDS、AOF和订阅
每个 Redis 服务器进程都维持着一个表示服务器状态的 redis.h/redisServer 结构, 结构的 pubsub_channels 属性是一个字典, 这个字典就用于保存订阅频道的信息,其中,字典的键为正在被订阅的频道, 而字典的值则是一个链表, 链表中保存了所有订阅这个频道的客户端。save是同步命令,会占用Redis的主进程,若数据非常多,save的命令会很慢,阻塞所有的客户端的请求(单线程理解);bgsave 是异步进行,进行持久化的时候,redis 还可以将继续响应客户端请求;
2025-11-14 22:44:31
781
原创 【Redis】 SpringBoot集成Redis
摘要:本文介绍了SpringBoot操作Redis的最佳实践。重点分析了Spring Data Redis在SpringBoot 2.x版本中从Jedis切换到Lettuce的原因(线程安全性和NIO模式优势)。文章详细展示了如何配置Redis连接、解决序列化问题以及自定义RedisTemplate模板,包括关键代码实现和常见错误排查。通过实际项目案例,演示了字符串、数字递增和列表等基础Redis操作,为开发者提供了SpringBoot整合Redis的完整解决方案。
2025-11-13 16:00:00
349
原创 【Redis】Redis的基本使用
Redis事务操作总结:Redis通过MULTI/EXEC实现事务,保证命令顺序执行但不支持回滚,仅提供部分ACID特性。乐观锁通过WATCH实现,适用于读多写少场景;悲观锁更适用于强一致性需求。Jedis作为Java客户端,封装了Redis命令,支持单机、连接池和集群模式,事务操作通过Transaction类实现。Redis适合高性能缓存等弱一致性场景,强ACID需求应选择关系型数据库。
2025-11-11 22:33:44
858
原创 【Redis】03 特殊的数据类型
Redis支持多种高级数据结构,包括地理空间索引(Geospatial)、基数统计(HyperLogLog)和位图(Bitmaps)。Geospatial通过GeoHash编码实现经纬度存储和距离计算,适用于位置服务场景。HyperLogLog以固定空间高效统计海量数据的基数,适合UV统计等容忍误差的场景。Bitmaps利用位操作实现状态标记和统计,大幅节省存储空间,可用于用户在线状态、签到记录等二值场景。这些数据结构针对特定问题优化,在空间利用率和查询效率上具有明显优势。
2025-11-10 18:16:50
870
原创 【Redis】02 基本数据类型
本文详细介绍描述了Redis中的基本数据类型,其中包括了String、List、 Hash、Set,还有Zset有序集合。其中使用了部分的案例进行了代码的实际演练。 参考着博客园中前面博主以及官网上的一些内容进行学习,并整理的笔记。
2025-11-07 11:04:03
944
原创 【Redis】01 简述和安装
Redis是一种基于键值对的内存型非关系数据库,支持字符串、列表、集合等多种数据结构。相比关系型数据库,Redis具有灵活的数据模型和水平扩展能力,常用于高并发场景。安装方式包括Windows直接下载、Linux包管理器/源码编译以及Mac的brew安装。基本操作包括set/get/exists/del等命令,通过redis-cli可查看版本信息。Redis通过周期性持久化保证数据安全,并支持主从同步功能,是提升系统性能的重要缓存解决方案。
2025-11-05 13:25:57
829
原创 【SpringCloud】路由网关、Config
本文介绍了Spring Cloud中的路由网关和配置中心组件。路由网关部分重点讲解了Spring Cloud Gateway的核心特点和实现流程,包括基于WebFlux的高性能路由、请求过滤、限流等功能,并通过示例展示了如何配置网关服务实现请求转发。配置中心部分概述了Spring Cloud Config的作用和架构设计,说明了服务端如何连接Git仓库管理配置,但因环境问题未能完成实践部分。文章还对比了传统的Zuul网关与新一代Spring Cloud Gateway的区别,强调后者更适合现代微服务架构。
2025-10-28 14:28:39
866
原创 【SpringCloud】Hystrix、Resilience4j 简述
本文介绍了微服务架构中的服务熔断和服务降级机制。服务熔断通过Hystrix和Resilience4j实现,能够在服务调用失败率过高时自动切断请求链路,防止雪崩效应。熔断包含Closed、Open和Half-Open三种状态转换。服务降级则是在服务不可用时返回简化响应,保障系统核心功能。文章详细说明了两种实现方式:通过CircuitBreakerFactory编程式调用和@CircuitBreaker注解方式,并介绍了与Feign的集成方案。最后提到了通过Dashboard进行可视化监控的实现方法,包括Act
2025-10-27 16:36:05
845
原创 【SpringCloud】Ribbon(LoadBalancer ) 和 Feign
负载均衡与Spring Cloud实现 本文介绍了负载均衡技术及其在Spring Cloud中的实现方式。主要内容包括: 负载均衡基础:通过LVS等工具调整网络吞吐量,实现峰值调用时的流量分配。 Ribbon与LoadBalancer: Ribbon作为客户端负载均衡工具,已从最新Spring Cloud版本移除 LoadBalancer是Ribbon的替代方案,使用方式类似 详细说明了LoadBalancer的配置步骤(依赖导入、注解使用等) 负载均衡实践: 展示了多服务实例(8001/8002/8003
2025-10-25 17:25:32
877
1
原创 【SpringCloud】Eureka
摘要 Eureka是Netflix开发的服务注册与发现框架,基于REST服务实现,采用C/S架构。其核心角色包括Eureka Server(注册中心)、Service Provider(服务提供者)和Service Consumer(服务消费者)。使用时需配置依赖、YAML文件并启用服务,其中SpringBoot 3.x需额外配置才能显示监控信息。Eureka具有自我保护机制,在网络故障时会保留服务注册信息。通过DiscoveryClient可以获取注册服务列表及详细信息。最新版本中Spring Cloud
2025-10-24 15:54:16
1142
原创 【SpringCloud】回顾微服务
微服务架构通过将应用拆分为独立服务降低耦合性,提升灵活性和可扩展性。本文介绍了微服务核心概念、技术栈及关键问题解决方案:1)通过API网关统一服务入口;2)采用同步(RPC/HTTP)或异步(消息队列)通信方式;3)使用Zookeeper等服务注册中心管理节点;4)通过重试、熔断、降级等机制保障可用性。SpringCloud凭借完整的生态体系、与SpringBoot无缝集成以及丰富的组件支持,成为微服务的主流实现方案。其提供包括服务发现、负载均衡、API网关等一站式解决方案,支持云原生部署,适合构建分布式系
2025-10-23 21:00:00
768
原创 我的创作纪念日
技术博客创作始于学生时代,最初只为记录学习碎片,防止遗忘。随着持续输出,收获了同行认可、粉丝关注和系统性思考能力。如今写作已融入工作节奏,通过将项目复盘转化为内容实现高效平衡。未来计划深耕技术架构领域,输出深度解析和实战方法论,并加强与读者互动。感恩技术分享平台让知识得以传播,践行开源精神。
2025-10-23 17:21:52
196
原创 【SpringCloud】SpringCloud学习入门
摘要:SpringCloud是基于SpringBoot的微服务框架,提供分布式系统开发工具集,包含配置管理、服务发现等核心组件。与SpringBoot专注于单微服务开发不同,SpringCloud负责全局微服务治理。相比Dubbo+Zookeeper方案,SpringCloud兼容性更好且实现更简单。开发流程包括:创建数据库表、构建API模块定义数据模型、开发服务提供者和消费者模块,其中消费者仅负责请求转发。项目依赖管理采用统一版本控制,包含SpringCloud、MyBatis等核心组件。
2025-10-23 16:26:51
587
原创 【JavaSE】Java的注解和反射
本文摘要: 注解是Java 5.0引入的元数据机制,通过@符号标记,可被编译器读取并影响程序行为。内置注解包括@Override、@Deprecated等,元注解用于定义注解的作用范围。 反射机制使Java具备动态特性,允许运行时获取类信息、创建对象、调用方法等。反射通过Class类实现,一个类在JVM中只有一个Class对象。 类加载涉及JVM内存结构:堆存储对象实例,栈存储基本类型和引用,方法区共享类信息。反射虽灵活但影响性能,适合框架开发而非常规业务逻辑。 (98字)
2025-10-11 16:37:20
384
原创 【JavaSE】JVM
摘要 JVM是Java程序的运行环境,负责将编译后的Class文件加载到内存中执行。其核心组件包括类加载器(启动类、扩展类、应用加载器)、方法区(存储类信息、常量池)、堆内存(分为新生代、老年代和永久代/元空间)以及栈(线程私有,存储方法调用)。JVM通过双亲委派机制确保类加载安全,并采用垃圾回收机制管理内存。堆内存调优和OOM排查是重要实践,可通过工具(如JProfiler)分析内存问题。从JDK1.8起,永久代被元空间替代,与JVM分离。
2025-10-10 10:40:49
731
原创 【SpringBoot】Dubbo、Zookeeper
本文介绍了分布式系统的概念、架构演进及RPC技术,重点讲解了Dubbo框架的核心功能。分布式系统通过多台机器协作处理数据,架构从单体到垂直应用再到分布式逐步演进。RPC技术实现了跨机器的远程调用,使远程调用像本地调用一样简单。Dubbo作为高性能Java RPC框架,提供远程方法调用、负载均衡、服务注册发现三大核心能力,通过服务提供者、消费者、注册中心和监控中心协同工作,构建高效分布式服务体系。
2025-08-19 20:25:08
1132
原创 【SpringBoot】Swagger 接口工具
Swagger作为RESTful API文档生成工具,在前后端分离开发中发挥重要作用。本文介绍了SpringBoot集成Swagger的完整流程,重点讲解了Spring Boot 3.x版本下使用SpringDoc OpenAPI替代传统Springfox的方案。通过配置OpenAPI和GroupedOpenApi实现API分组和文档定制,结合@Schema注解增强实体类描述。相比Postman等工具,Swagger实现了API文档与代码同步更新、在线测试等功能,有效解决了前后端协作中的接口管理问题。文章还
2025-08-17 18:10:07
1323
原创 【SpringBoot】SpringBoot的异步任务、邮件发送、定时任务
本文介绍了SpringBoot中异步任务、邮件发送和定时任务的实现方法。在异步任务部分,通过@Async注解实现后台多线程处理;邮件发送部分详细讲解了SMTP协议配置和JavaMailSender的使用;定时任务部分重点介绍了cron表达式的语法及@Scheduled注解的应用。文中通过具体项目示例,展示了从依赖引入、配置设置到功能测试的完整流程,并提供了常见问题的解决方案(如QQ邮箱授权码设置)和实用工具推荐(cron表达式生成器)。这些功能的实现大幅提升了Web应用的响应速度和自动化能力。
2025-08-17 15:29:10
733
原创 【SpringBoot】SpringBoot 中的 Shiro、Spring Security 学习过程及碰到的问题和解决方法
文章摘要:本文介绍了网站安全在Web开发中的重要性,重点讲解了Spring Security框架的功能与配置方法。主要内容包括:1) Web安全的两大核心要素(用户认证和授权);2) Spring Security框架特性(支持多种认证方式和细粒度授权控制);3) 环境搭建步骤(依赖引入、资源配置);4) 新旧版本配置方法对比(WebSecurityConfigurerAdapter已废弃,需使用SecurityFilterChain方式)。文章通过实际案例演示了如何实现基于角色的访问控制,并提供了完整代码
2025-08-15 17:48:32
461
原创 【SpringBoot】SpringBoot 整合JDBC、Mybatis、Druid
本文介绍了在Spring Boot中使用JDBC和Druid数据源的方法。主要内容包括:1)通过Spring Boot Starter快速集成JDBC,配置数据库连接信息;2)使用JdbcTemplate进行CRUD操作;3)切换为阿里Druid数据源,配置监控功能。文章提供了详细的代码示例和配置说明,展示了如何通过Spring Boot简化数据库操作,同时利用Druid的数据源监控特性。还包含项目创建步骤、依赖配置和测试方法,适合开发者快速上手Spring Boot数据库开发。
2025-08-15 17:45:11
1121
原创 【SpringBoot】SpringBoot Web项目开发 员工管理系统(No Database)
本文介绍了搭建SpringBoot项目的基本步骤:1) 新建项目并导入Lombok、SpringWebMVC和Thymeleaf等组件;2) 配置静态资源路径和JQuery、Bootstrap等前端资源;3) 创建标准的MVC项目结构,包括controller、service、dao等分层;4) 定义部门和员工实体类,并使用Lombok简化代码;5) 实现部门和员工的数据访问层,使用HashMap模拟数据库操作;6) 提供三种首页跳转配置方式,包括直接放模板目录、Controller跳转和自定义MVC配置。
2025-08-11 11:21:09
782
原创 【SpringBoot】SpringWeb的开发
SpringBoot通过自动装配简化了Web开发配置,核心包括AutoConfiguration和Properties。创建SpringWeb项目时,默认会配置静态资源路径(如static、templates目录)和WebMVC功能。静态资源优先级为/META-INF/resources/>resources>static>public,还可通过WebJars引入前端库。首页默认读取index.html,结合Thymeleaf模板引擎可实现页面跳转(需添加spring-boot-start
2025-08-09 08:00:00
744
原创 【SpringBoot】SpringBoot配置
本文梳理了SpringBoot自动配置原理的核心流程:通过@SpringBootApplication启动时,会加载AutoConfigurationImportSelector找到spring-boot-autoconfigure.jar中的配置类。重点以WebMvcAutoConfiguration为例,说明其通过@EnableConfigurationProperties绑定WebMvcProperties类,再通过@ConfigurationProperties与配置文件关联,实现属性动态配置。总结
2025-08-08 19:13:22
475
原创 【SpringBoot】配置文件与yaml语法扩展
本文介绍了YAML的基本概念及其在Spring框架中的应用。YAML是一种以数据为中心的表达格式,与JSON相比更适合配置文件使用。文章详细讲解了YAML的语法结构,并展示如何在SpringBoot项目中通过@ConfigurationProperties注解实现YAML配置注入。通过具体代码示例,演示了对简单对象和复杂对象的配置绑定,包括字符串、数值、布尔值、日期、Map和List等数据类型。此外,还比较了YAML与Properties配置方式的区别,指出YAML支持更丰富的数据结构和更好的可读性。
2025-08-07 18:26:32
727
原创 【SpringBoot】主启动类的功能和运行
摘要:本文深入分析了Spring Boot启动过程中的核心方法SpringApplication.run()的执行流程。主要分为构造阶段和运行阶段:构造阶段通过SpringApplication类推断应用类型、加载初始化器和监听器、确定主类;运行阶段则完成环境装配、上下文处理、Bean加载等核心操作。文章结合流程图详细说明了12个关键步骤,并指出SpringApplication主要完成四项工作:推断项目类型、加载初始化器、设置监听器以及确定主类。通过参考多篇技术文章,全面剖析了Spring Boot的启动
2025-08-07 12:10:44
325
原创 【项目实践】在系统接入天气api,根据当前天气提醒,做好plan
摘要:本文介绍了如何通过和风天气API实现天气查询功能。首先进行前期调研,选择和风天气API作为数据源,介绍了其优点和API文档资源。然后详细说明了注册账号、获取API Key的步骤。在实现部分,讲解了所需依赖的导入、实体类编写、配置密钥等技术细节,并提供了核心代码示例,包括服务层调用API、控制层返回JSON数据或视图的两种方式。最后展示了前端通过AJAX动态加载天气数据的实现方法。整个过程从API申请到前后端整合,为开发者提供了完整的天气功能实现方案。
2025-08-04 22:06:09
952
原创 【Mybatis】MyBatis分页的三种实现方式,Log4j的使用
本文介绍了MyBatis中实现分页查询的几种方式,重点讲解了日志工具Log4j的配置使用以及三种分页实现方法;一是通过SQL的LIMIT关键字实现,包括参数计算和Mapper接口设计;二是使用RowBounds实现,指出其在性能、灵活性等方面的缺陷,强调建立高效稳定的数据库访问层才是持久层交互的关键考虑因素。三是使用PageHelper,相关依赖以及Spring的配置说明,最终的实现效果和BootStarp的联合使用。
2025-08-02 18:18:08
1228
原创 【SpringMVC】拦截器,实现小型登录验证
SpringMVC拦截器是基于AOP思想实现的,用于对控制器方法进行预处理和后处理。与Servlet过滤器不同,拦截器仅拦截访问控制器方法的请求。自定义拦截器需实现HandlerInterceptor接口,重写preHandle、postHandle和afterCompletion方法,并在配置文件中配置拦截路径。文章通过登录验证案例演示了拦截器的应用:未登录时跳转登录页,登录成功后写入session信息,通过拦截器检查session判断用户是否登录。关键实现包括登录页面、控制器方法、拦截器配置和sessi
2025-07-31 19:17:41
968
1
原创 【SpringMVC】整合SSM,一个具备CRUD的书籍管理系统
本文介绍了一个基于SSM框架的图书管理系统开发方案。系统采用Maven项目管理,使用MySQL 8.0数据库,包含完整的CRUD功能。文章详细列出了开发所需环境(JDK1.8、Tomcat8.5等)和技能要求(Spring、MyBatis等),提供了数据库建表SQL语句,并逐步指导项目搭建过程,包括Maven依赖配置、资源过滤设置、项目结构设计等。重点介绍了MyBatis层的实现,包括数据库连接配置、核心配置文件编写和实体类设计(使用Lombok简化代码)。整个系统开发流程规范,适合作为SSM框架学习的实践
2025-07-30 09:00:00
605
《基于Android开发的记账本设计》.doc
2024-01-17
基于Android开发的记账本.rar
2020-03-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅