- 博客(537)
- 资源 (3)
- 收藏
- 关注
原创 MySQL 从入门到精通 17:分库分表
摘要: 本文介绍了MySQL分库分表技术及其实现工具MyCat。主要内容包括: 分库分表背景:解决单库性能瓶颈问题,包括IO瓶颈和CPU瓶颈 拆分原则:垂直分库(按业务)、垂直分表(按字段)和水平拆分(数据分散) MyCat介绍:作为分库分表中间件,无需修改应用代码即可实现数据分片 MyCat安装配置:详细说明安装步骤、环境要求和配置文件修改 架构说明:展示MyCat在应用层和数据库层之间的中间件位置 快速入门:提供配置示例,包括schema.xml和server.xml的配置方法
2025-08-28 08:00:00
636
原创 MySQL 从入门到精通 16:主从复制
MySQL主从复制是一种将主库的数据变更同步到从库的技术,通过二进制日志传输和重做实现数据一致。配置步骤包括:主库设置server-id、创建复制账号、查看日志位置;从库配置server-id、指定主库连接信息并启动同步。主从复制能提高系统容灾性、实现读写分离和备份隔离。测试表明,主库的数据修改会实时同步到从库。该技术适用于高可用架构设计,能有效分担主库压力并提升系统可靠性。
2025-08-25 08:00:00
479
原创 MySQL 从入门到精通 15:日志
MySQL日志系统主要包括错误日志和二进制日志。错误日志默认开启,记录在/var/log/mysqld.log中,用于排查系统问题。二进制日志默认记录所有DDL和DML语句(不包含查询),用于数据恢复和主从复制,MySQL 8默认开启ROW格式,可通过mysqlbinlog工具查看日志内容。日志文件以binlog.000001格式递增存储,并维护索引文件binlog.index。二进制日志支持三种格式:STATEMENT(记录SQL语句)、ROW(记录行变更)和MIXED(混合模式)。
2025-08-24 08:00:00
1772
原创 MySQL 从入门到精通 14:MySQL 管理
MySQL管理工具与系统数据库 MySQL自带四个核心系统数据库:mysql存储运行时信息,information_schema提供元数据访问,performance_schema监控性能指标,sys包含性能调优视图。文章介绍了常用的MySQL管理工具:mysql命令行客户端可直接执行SQL语句;mysqladmin用于数据库管理操作;mysqlbinlog解析二进制日志;mysqlshow快速查找数据库对象并统计信息。这些工具为DBA提供了数据库监控、维护和性能优化的基础手段,通过命令行参数即可完成常见管
2025-08-22 08:00:00
258
原创 MySQL 从入门到精通 13:InnoDB 引擎
本文介绍了MySQL InnoDB存储引擎的核心架构和存储结构。InnoDB采用表空间(ibd文件)作为基本存储单元,包含段、区、页、行四个层级结构。其架构分为内存结构和磁盘结构两大部分:内存结构包括缓冲池(Buffer Pool)、更改缓冲区(Change Buffer)、自适应哈希索引和日志缓冲区;磁盘结构则包含系统表空间、独立表空间和通用表空间。文章详细说明了各组件的作用和配置参数,如缓冲池管理、日志刷新策略等,并提供了查看这些结构的SQL命令和Linux文件系统操作示例。
2025-08-21 08:00:00
695
原创 MySQL 从入门到精通 12:锁
MySQL锁机制分层:全局锁锁定所有表,用于备份但影响业务;表级锁包括读锁(共享)和写锁(独占);元数据锁自动管理表结构变更冲突。全局锁语法为FLUSH TABLES WITH READ LOCK/UNLOCK TABLES,表锁通过LOCK TABLES设置。InnoDB引擎可用--single-transaction参数避免全局锁备份问题。元数据锁分为共享读/写锁和排它锁,通过performance_schema.metadata_locks可查看锁状态。
2025-08-20 08:00:00
886
原创 MySQL 从入门到精通 11:触发器
MySQL触发器是与表关联的数据库对象,可在数据操作前后自动执行SQL语句。本文介绍了触发器的创建、查看和删除语法,并通过实例演示了如何实现数据变更日志记录功能。重点说明了MySQL行级触发器的特点(每条记录变更都会触发),以及如何使用OLD和NEW引用变更前后的数据。示例包含插入、更新和删除三种触发器类型,展示了如何通过触发器自动记录用户表操作日志到日志表中。最后提供了相关学习资源参考。
2025-08-19 17:53:09
367
原创 MySQL 从入门到精通 10:存储过程
MySQL存储过程是一组预编译SQL语句的集合,可简化开发、减少数据传输。主要语法包括:创建(CREATE PROCEDURE)、调用(CALL)、查看(SHOW CREATE PROCEDURE)和删除(DROP PROCEDURE)。存储过程支持变量操作,包括系统变量(全局/会话)、用户自定义变量(@前缀)和局部变量(DECLARE声明)。还提供条件控制(IF-THEN-ELSE)等功能,能够有效封装业务逻辑,提高数据库操作效率。使用时需注意在命令行中修改结束符以避免语法错误。
2025-08-17 08:00:00
1578
原创 MySQL 从入门到精通 9:视图
本文介绍了MySQL视图的基本概念和操作。视图是虚拟表,数据来源于基础表,不实际存储数据。主要内容包括:1)视图创建语法(CREATE VIEW)和示例;2)视图查询方法(SHOW CREATE VIEW和SELECT);3)视图修改方式(OR REPLACE和ALTER VIEW);4)视图删除(DROP VIEW);5)CHECK OPTION的使用,包括CASCADED和LOCAL两种类型的区别,用于限制通过视图修改数据时必须满足视图条件。文章通过具体SQL示例演示了各种视图操作及其效果。
2025-08-16 08:00:00
753
原创 MySQL 从入门到精通 8:SQL 优化
本文介绍了MySQL数据插入和查询优化的关键技术。主要内容包括:1) 批量插入数据的方法,如批量插入、事务提交和主键顺序插入,以及使用LOAD命令高效导入大数据;2) 主键优化原则,包括控制主键长度、使用自增主键、避免自然主键等;3) 排序优化技巧,通过创建合适索引实现Using index排序,避免使用sort buffer;4) 分组查询优化,利用索引提升分组性能。这些优化方法能显著提高MySQL数据库的写入和查询效率。
2025-08-15 08:00:00
936
原创 MySQL 从入门到精通 7:索引
本文介绍了MySQL索引的核心概念和实现原理。主要内容包括:索引的优缺点分析,B+树、Hash等不同索引结构的实现原理和适用场景,聚集索引与二级索引的区别,以及索引的创建和管理语法。还讲解了SQL性能分析方法,包括执行频率统计和慢查询日志的使用。文章通过图文详细解释了B+树的演进过程,对比了不同存储引擎对索引的支持情况,并提供了索引优化SQL查询的实用技巧。适合数据库开发者和DBA学习参考。
2025-08-14 08:00:00
584
原创 MySQL 从入门到精通 6:存储引擎
文章摘要:本文介绍了MySQL的存储引擎体系结构,重点讲解了InnoDB、MyISAM和Memory三种主要存储引擎的特点和区别。MySQL采用分层架构设计,存储引擎是基于表的实现方式。InnoDB作为默认引擎支持事务、行锁和外键;MyISAM适合查询密集型应用;Memory引擎将数据保存在内存中,适合临时表和缓存。文章还比较了各引擎的技术指标,并给出了选择建议:InnoDB适用于大多数业务场景,MyISAM和Memory引擎正逐渐被MongoDB和Redis替代。
2025-08-13 08:00:00
535
原创 MySQL 从入门到精通 5:事务
本文介绍了MySQL事务的基本概念与应用。通过银行转账案例演示了事务的必要性,讲解了如何手动控制事务的开启、提交和回滚。详细阐述了事务的四大特性(ACID):原子性、一致性、隔离性和持久性。分析了并发事务可能产生的三大问题(脏读、不可重复读和幻读),并对比了四种隔离级别及其解决不同问题的能力。最后提供了查看和修改事务隔离级别的方法。文章结合实例说明事务在保证数据一致性方面的重要作用,适合MySQL初学者理解事务机制。
2025-08-12 08:00:00
632
原创 MySQL 从入门到精通 4:多表查询
本文介绍了MySQL多表查询的核心概念和操作方式。主要内容包括: 表间关系:详细讲解了一对多/多对一、多对多和一对一关系的实现方式及典型应用场景。 多表查询技术: 内连接(显式和隐式实现) 外连接(左外连接和右外连接) 自连接(表与自身的连接查询) 联合查询(UNION和UNION ALL的区别) 子查询: 单值子查询作为条件 列值子查询用于IN条件 文章通过部门-员工、学生-课程等实际案例,配合SQL示例代码和可视化图表,系统性地讲解了多表查询的各种技术实现。
2025-08-11 08:00:00
682
原创 MySQL 从入门到精通 3:约束
摘要:本文介绍了MySQL中的主要约束类型及其应用,包括非空约束(NOT NULL)、唯一约束(UNIQUE)、主键约束(PRIMARY KEY)、默认约束(DEFAULT)、检查约束(CHECK)和外键约束(FOREIGN KEY)。通过用户表(user)创建示例详细展示了各约束的SQL实现方式,并演示了数据插入时的约束验证。重点讲解了外键约束的操作,包括添加、删除约束以及设置更新/删除行为(CASCADE、SET NULL等),通过员工表(emp)和部门表(dept)的关联示例说明外键在维护数据完整性方
2025-08-10 08:00:00
713
原创 MySQL 从入门到精通 2:函数
本文介绍了MySQL中常用的字符串、数值、日期和流程控制函数。字符串函数包括CONCAT拼接、大小写转换、填充和截取等;数值函数涵盖取整、取余、随机数和四舍五入;日期函数提供获取当前时间、提取年月日、日期加减和差值计算功能;流程函数则包含IF条件判断、IFNULL空值处理和CASE多条件分支等。每个函数都配有具体语法示例,如用LPAD生成六位随机数、用DATEDIFF计算日期差值和用CASE实现成绩评级等。这些函数能有效简化SQL查询中的数据处理逻辑。
2025-08-09 08:00:00
592
原创 MySQL 从入门到精通 1:SQL
本文介绍了MySQL数据库的基础操作,主要包括SQL分类、DDL(数据定义语言)和DML(数据操作语言)的使用。在DDL部分,详细讲解了数据库和表的创建、修改、删除等操作,以及MySQL支持的数据类型(数值、字符、时间类型)。DML部分介绍了数据的插入、更新等操作。文章还推荐了图形化工具DataGrip,并提供了相关安装和使用教程的参考资料。这些内容为MySQL初学者提供了全面的入门指导,涵盖了数据库管理的基本操作。
2025-08-08 08:00:00
591
原创 Spring 源码学习 19:事件框架
本文介绍了Spring事件框架的使用及其实现原理。主要内容包括:1)利用事件机制解耦业务逻辑(如发送邮件/短信)与主业务代码,通过定义事件类、发布事件和创建监听器实现;2)使用@EventListener注解简化监听器实现;3)配置多线程事件处理,通过自定义ApplicationEventMulticaster实现;4)深入分析@EventListener注解原理,通过自定义注解并利用SmartInitializingSingleton接口动态注册监听器。文章通过代码示例展示了Spring事件的灵活应用方式
2025-07-20 08:00:00
484
原创 Spring 源码学习 18:FactoryBean
Spring中的FactoryBean与@Indexed注解 FactoryBean是Spring中一种特殊的工厂模式实现,它允许开发者自定义Bean的创建逻辑。通过实现FactoryBean接口,可以控制Bean的实例化、类型和单例特性。但需要注意,FactoryBean创建的产品对象不完全受Spring容器管理,缺少完整的生命周期回调(如@PostConstruct、依赖注入等),仅会触发部分BeanPostProcessor处理。 @Indexed注解是Spring 5.0引入的优化技术,用于加速组件
2025-07-19 08:00:00
628
原创 Spring 源码学习 17:自动配置
摘要: 本文介绍了Spring自动配置的原理与实现方式。首先展示了通过@Import直接导入外部配置类的方法,然后引入ImportSelector接口实现动态导入多个配置类。进一步讲解了如何通过配置文件(spring.factories)管理需导入的类,并解释了Bean定义覆盖问题及解决方案。最后以AopAutoConfiguration为例,演示了实际自动配置类的使用,包括条件注解@ConditionalOnBooleanProperty的作用。文章还涉及了Bean定义加载顺序控制、@Conditiona
2025-07-18 08:00:00
614
原创 Spring 源码学习 16:Tomcat
本文介绍了Tomcat的基本结构和Spring与内嵌Tomcat的整合方法。主要内容包括:1) Tomcat层级结构(Server-Service-Engine-Host-Context);2) 编程方式启动Tomcat服务器,包括添加Context、设置连接器和Servlet容器初始化器;3) 将Spring容器与Tomcat集成,重点讲解了如何配置AnnotationConfigWebApplicationContext、DispatcherServlet和RequestMappingHandlerAd
2025-07-17 08:00:00
1248
原创 Spring 源码学习 15:Spring Boot
本文介绍了Spring Boot项目创建和启动的几种方式,包括命令行下载、war包项目开发以及Spring应用启动过程分析。主要内容包括: 通过curl命令下载Spring Boot项目框架 创建war包项目并添加JSP支持,演示外部Tomcat和内置Tomcat两种启动方式 深入分析Spring应用启动过程,包括构造器准备工作(加载Bean定义来源)和run方法初始化容器 演示配置类作为入口类时的注意事项,以及如何添加XML配置作为额外Bean来源 文章通过具体代码示例展示了Spring Boot项目的配
2025-07-12 08:00:00
4127
原创 Spring Easy
Spring Easy是一款简化Spring Boot开发的工具包,主要提供三项核心功能:1. 统一封装控制器返回结果为标准JSON格式(成功/失败标识+消息+数据);2. 全局异常处理,将业务异常和系统异常统一包装返回;3. 内置国内常用格式的时间类型(LocalDateTime/LocalDate)和枚举类型转换支持。通过Maven依赖引入即可自动配置,无需额外代码,显著提升Web开发效率,尤其适合需要统一响应格式和简化参数处理的国内项目。
2025-07-11 11:08:14
523
原创 Spring 源码学习 14:路径映射
Spring 提供了多种路径映射方式,主要包含三种实现: BeanNameUrlHandlerMapping 通过Bean名称映射URL请求,需搭配SimpleControllerHandlerAdapter使用 控制器需实现Controller接口,Bean名称以/开头 支持自定义实现HandlerMapping和HandlerAdapter RouterFunctionMapping 使用RequestPredicate进行路径映射 处理函数封装为HandlerFunction 需搭配HandlerFu
2025-07-10 08:00:00
2105
原创 Spring 源码学习 13:处理响应和异常
Spring 源码学习笔记 13 主要讲解了响应和异常处理机制。ResponseBodyAdvice 接口用于统一包装控制器返回值,可以通过 @ControllerAdvice 实现全局响应格式统一。文章详细说明了如何正确处理带有 @ResponseBody 或 @RestController 注解的控制器方法。 在异常处理方面,重点介绍了 ExceptionHandlerExceptionResolver 的运作机制,展示了如何使用 @ExceptionHandler 处理控制器方法抛出的异常,并返回 J
2025-07-09 08:00:00
604
原创 每天一个 Idea 小技巧:实现和引用
本文介绍了几个IntelliJ IDEA的实用小技巧:1)查看接口实现类的方法(Ctrl+Alt+鼠标左键);2)查找接口引用位置(Alt+F7);3)在查找结果窗口双击跳转文件;4)让左侧导航栏同步定位打开文件。这些快捷键和功能能帮助开发者快速查看代码关联关系,提高开发效率。
2025-07-08 08:00:00
187
原创 Spring 源码学习 12:控制器方法
摘要:文章解析了Spring框架中控制器方法的调用机制,重点介绍了@InitBinder注解的全局/局部应用方式及其缓存实现。通过类图展示了HandlerMethod核心组件及其调用流程,包括参数解析、数据绑定等关键步骤。通过代码示例模拟了完整调用过程,并说明@ModelAttribute参数的默认处理方式。文章结合源码分析和实践演示,深入剖析了Spring控制器方法从初始化到执行的全过程。
2025-07-07 08:00:00
975
原创 spring-initializer
摘要:Spring-initializer是一个Python工具,用于从Spring官网下载并解压Spring Boot框架代码。它解决了使用Idea或命令行工具下载时可能出现的连接超时问题,内置10次重试机制。相比阿里源,它能确保获取最新版本。安装后通过pysi命令即可生成默认Maven项目(含spring-web和lombok依赖),支持参数自定义项目配置。该工具还预留了扩展功能,未来可实现自动化修改pom.xml等操作。适用于Spring框架代码下载困难时作为备用方案。
2025-07-05 20:37:20
1016
原创 Spring 源码学习 11:类型转换
Spring框架提供了多种类型转换机制,包括Formatter、Converter、PropertyEditor等接口,并通过TypeConverter进行统一封装。文章详细介绍了Spring类型转换的体系结构,包括SimpleTypeConverter、BeanWrapperImpl、DirectFieldAccessor和DataBinder等实现类的使用场景和示例代码。特别讲解了DataBinder在Web环境中的应用,以及如何通过ServletRequestDataBinder进行请求参数绑定。最后
2025-07-05 08:00:00
1463
原创 Homebrew 安装指南
本文介绍了Linux/MacOS平台包管理工具Homebrew的安装方法。首先通过官网提供的脚本命令进行安装,执行过程中需要输入管理员密码。安装完成后需按照提示设置环境变量PATH,才能正常使用brew命令。最后验证安装成功后可关闭并重新连接SSH,即可通过brew安装其他软件包。文章还提供了安装示例和参考资料链接,包括Homebrew官网和终端美化教程。
2025-07-04 08:00:00
281
原创 更换 WSL 版本
本文介绍了 Windows Subsystem for Linux (WSL) 的管理操作指南。主要内容包括:如何查看当前 WSL 版本和发行版信息;安装新版本的 Ubuntu 24.04 LTS;切换默认 WSL 发行版;以及迁移 WSL 虚拟机位置的方法(导出/导入)。此外还推荐了使用 Oh My Posh 美化命令行界面的方案。文章提供了详细的分步命令行操作说明,涵盖了 WSL 的日常管理和配置需求。
2025-07-03 11:10:01
294
原创 Spring 源码学习 10:参数解析器
本文介绍了Spring框架中处理控制器方法参数的解析器,主要探讨了RequestParamMethodArgumentResolver的用法。通过示例展示了如何解析带有@RequestParam注解的参数、未注解参数以及使用环境变量的默认值参数。文章还指出需要配合数据绑定工厂和Bean工厂才能实现完整功能,并介绍了使用HandlerMethodArgumentResolverComposite组合多个解析器的方法。通过MockHttpServletRequest模拟HTTP请求,演示了参数解析的具体过程,包
2025-07-02 08:00:00
945
原创 Spring 源码学习 9:MVC
本文介绍了Spring MVC的核心组件DispatcherServlet及其初始化过程。首先讲解了如何配置基础Web容器(Tomcat)和DispatcherServlet,重点说明了Servlet路径映射规则(/ vs /*)的区别。随后详细解析了DispatcherServlet的延迟初始化机制和如何通过配置实现立即初始化。文章深入剖析了DispatcherServlet初始化时加载的9大策略组件(如HandlerMapping、HandlerAdapter等),包括它们的默认实现和自定义配置方式。最
2025-07-01 08:00:00
996
原创 Spring 学习笔记 8:AOP 实现
摘要:本文介绍了使用Spring框架实现AOP(面向切面编程)的方法。主要内容包括:1)通过代理模式实现AOP,使用ProxyFactory创建代理对象;2)切点表达式匹配方法的方式(execution和@annotation);3)代理实现的选择规则(JDK或CGLIB);4)切点匹配的多种场景,包括方法级和类级注解的匹配。文章通过代码示例详细演示了如何配置切面、通知和代理对象,并说明不同场景下的AOP实现方式。
2025-06-30 08:00:00
714
原创 Spring 源码学习 7:动态代理
文章摘要:本文介绍了Spring中的两种动态代理实现方式:JDK代理和CGLIB代理。JDK代理基于接口实现,要求目标类必须实现接口;CGLIB通过继承目标类实现,不能代理final类和方法。文章还深入剖析了代理模式原理,通过代码示例展示了如何实现一个灵活的代理类,并逐步优化使其能够处理目标类的多个方法调用。最后讨论了如何通过Method参数传递方法信息,实现更通用的代理逻辑。
2025-06-29 10:47:33
776
原创 Spring 源码学习 6:AOP
本文介绍了Spring AOP的三种实现方式:动态代理、编译时织入(CTW)和加载时织入(LTW)。动态代理通过@EnableAspectJAutoProxy启用,使用代理对象实现AOP;编译时织入依赖AspectJ Maven插件在编译阶段修改字节码;加载时织入则通过@EnableLoadTimeWeaving在类加载时动态织入切面。文章详细展示了每种方式的配置方法和特点,包括依赖配置、注解使用和运行机制,并指出不同实现方式的技术差异和应用场景。
2025-06-25 08:30:00
959
原创 Spring 源码学习 5:Scope
Spring Bean作用域解析 本文介绍了Spring框架中的Bean作用域机制,主要包括五种作用域类型: singleton(默认):单例模式 prototype:每次获取新实例 request:HTTP请求级别 session:HTTP会话级别 application:Servlet容器级别 重点分析了作用域失效问题及三种解决方案: 使用@Lazy注解注入代理对象 通过@Scope的proxyMode属性配置代理 注入ObjectFactory实现延迟获取 文章通过示例代码对比了不同方案的实现方式,并
2025-06-24 08:30:00
1603
原创 Spring 源码学习 4:Aware 接口
Spring Aware接口与注解失效问题分析 摘要:Spring Aware接口(如ApplicationContextAware、BeanNameAware)允许bean获取容器资源,而InitializingBean接口提供初始化生命周期钩子。文章通过代码示例展示了这些接口的使用方式,并与依赖注入方式(@Autowired、@PostConstruct)进行对比。特别指出当配置类包含BeanFactoryPostProcessor时,会因创建顺序导致注解失效,并给出两种解决方案:1)重构配置类分离工厂
2025-06-23 10:31:30
1040
原创 Spring 源码学习 3:工厂后处理器
摘要: 本文介绍了Spring中工厂后处理器的用途及原理。工厂后处理器如ConfigurationClassPostProcessor能解析@Configuration、@ComponentScan等注解,动态注册Bean定义;MapperScannerConfigurer可自动扫描Mapper接口。通过自定义处理器示例,演示了如何解析@ComponentScan注解,扫描指定包下的类资源(如@Component标注的类),并利用反射和资源加载机制处理字节码文件。核心是通过后处理器扩展Bean定义注册流程,
2025-06-22 14:38:36
680
原创 Spring 源码学习 2:Bean 后处理器
本文探讨了Spring框架中Bean后处理器的使用和Bean生命周期管理。通过自定义实现BeanPostProcessor接口的处理器,作者详细观察了Bean从创建到销毁的完整生命周期过程。文章演示了如何利用postProcessBeforeInstantiation、postProcessAfterInitialization等钩子方法在不同阶段介入Bean的处理,并通过测试代码输出了完整的生命周期调用顺序。此外,作者指出这种机制采用了模板方法设计模式,并给出了简化版的Bean工厂实现示例,展示了如何自定
2025-06-20 17:29:21
339
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人