自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Spring 6】- 1 - Spring入门

文章摘要 本文探讨了Spring框架如何帮助解决软件开发中的核心原则问题。首先分析了传统代码结构中违背OCP(开闭原则)和DIP(依赖倒置原则)的问题,展示了如何通过数据库切换导致的连锁修改。然后介绍了七大软件设计原则,重点解释了IoC(控制反转)概念,说明Spring框架如何接管对象的创建和关系维护,从而符合这些设计原则。文章阐述了控制反转的两个核心方面:将对象创建和关系的管理权移交给框架,强调了这种编程思想对实现松耦合、可扩展系统的重要性。

2025-11-13 11:08:11 1292

原创 【MyBatis笔记】 - 4 - 缓存 + 逆向工程 + 分页插件

本文总结了MyBatis中的缓存机制、逆向工程和分页插件使用。重点介绍了MyBatis的一级缓存(SqlSession级别)和二级缓存(SqlSessionFactory级别)的工作原理及失效条件,包括不同SqlSession、查询条件变化、执行增删改操作和手动清空缓存等情况。同时展示了如何通过配置文件和实现Serializable接口启用二级缓存。内容涵盖缓存的实际应用场景和注意事项,为MyBatis性能优化提供了重要参考。

2025-11-12 11:48:40 1963

原创 【Mybatis笔记】- 3 - 查询增强 + 映射 + 动态 SQL

本文总结了MyBatis查询功能的增强与使用技巧。主要包括单条数据查询的接收方式(实体类对象、List集合、Map集合),多条数据查询的正确处理方式(实体类List、Map List、@MapKey注解映射),并提供了5种查询场景的具体示例代码:查询单个实体类对象、查询List集合、查询单个数据、查询单条数据为Map、查询多条数据为Map集合。重点强调了单条与多条结果集处理的区别,以及各种返回类型的适用场景,为MyBatis查询操作提供了全面的参考。

2025-11-11 00:15:00 1218

原创 【Mybatis笔记】- 2 - MyBatis 获取参数值

本文总结了MyBatis中获取参数值的五种典型情况,主要包括: 单个字面量参数:使用#{}或${}获取(后者需手动加引号) 多个字面量参数:MyBatis自动封装为Map,使用arg0/param1等键名访问 Map类型参数:直接通过Map的key访问参数值 实体类参数:通过属性名访问,MyBatis自动调用getter方法 注解命名参数:使用@Param注解自定义参数名 重点对比了#{}(预编译,安全)和${}(字符串拼接,需谨慎使用)的区别,强调绝大多数场景应使用#{}以防止SQL注入。

2025-11-10 00:15:00 972

原创 【Mybatis笔记】- 1 - MyBatis入门

MyBatis入门笔记摘要 MyBatis是一个优秀的持久层框架,前身为iBatis,具有半自动ORM特性,能避免大部分JDBC代码。其特点包括支持定制化SQL、存储过程和高级映射,通过XML或注解配置实现接口与POJO的数据库映射。

2025-11-09 12:26:14 1198

原创 MySQL-锁

由以上可知,数据库的锁机制本身是为了解决并发事务带来的问题而诞生的,主要是确保数据库中,多条工作线程并行执行时的数据安全性。锁是计算机协调多个进程或线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。全局锁就是对整个数据库实例加锁,加锁后整个实例就处于只读状态。

2025-11-04 16:31:44 1206

原创 MySQL-触发器

MySQL触发器是一种数据库自动化机制,当指定表发生INSERT、UPDATE或DELETE操作时自动执行预设逻辑。它常用于关联表数据维护,如商品表插入时自动同步库存记录,避免事务遗漏。触发器分为BEFORE和AFTER两种触发时机,支持单语句或复合语句块。创建语法需指定目标表、触发事件和操作逻辑,可使用NEW/OLD引用新旧数据行。示例展示了记录操作日志和校验年龄的触发器实现,有效保障了数据一致性和业务规则。

2025-10-29 10:45:00 667

原创 MySQL-存储过程 详解

MySQL存储过程是一组预编译存储在数据库中的SQL语句集合,用于封装复杂业务逻辑,减少网络IO,提升性能并保证事务一致性。5.0版本开始支持,类似编程语言中的函数。存储过程通过DELIMITER定义,支持IN/OUT/INOUT参数传递,可包含SQL语句并实现数据操作。主要优势包括:封装复用、减少交互、提升性能、增强安全性和保证一致性,适用于订单、转账等数据密集型场景。创建语法包含多种属性声明,调用时使用CALL命令,支持参数传递和结果返回。

2025-10-20 13:59:52 1427

原创 Ajax 详解

Ajax是一种提升网页交互体验的技术,它允许网页在不刷新的情况下与服务器进行异步通信。通过JavaScript的XmlHttpRequest对象,网页可以局部更新内容,减少数据传输量和服务端压力。相比传统网页整页刷新,Ajax带来了更流畅的用户体验,但需注意对JavaScript的依赖及SEO兼容性问题。其核心技术包括HTML、CSS、DOM和JSON数据格式,现已成为现代Web应用的基础。

2025-10-16 14:33:23 1521

原创 MySQL-视图 详解

MySQL视图是一种基于一个或多个数据表的查询结果集所创建的虚拟表,其本质是存储一条预定义的SQL查询语句而非实际数据。视图可以简化复杂查询、提高安全性,并实现数据抽象。摘要涵盖视图的基本概念、创建语法和实际应用示例,包括单表视图、多表视图和基于视图创建视图三种方式,以及ALGORITHM参数的MERGE、TEMPTABLE和UNDEFINED三种处理机制。视图的增删改操作会影响基表数据,为大型项目提供高效的数据管理方案。

2025-10-14 02:15:00 1676

原创 Listener 详解

JavaWeb监听器详解 监听器(Listener)是JavaWeb开发中用于监听特定事件的组件,基于观察者设计模式工作。主要监听ServletContext、HttpSession和ServletRequest等域对象的生命周期变化及属性变更。 核心功能: 监控Web应用启动/关闭(ServletContextListener) 跟踪会话创建与销毁 监听请求产生与结束 监控域对象属性变化 实现方式: 实现相应接口 通过@WebListener注解或web.xml.

2025-10-13 00:15:00 6721 1

原创 Filter 详解

Filter 详解摘要 Filter(过滤器)是Java Web开发中的重要组件,用于拦截请求和响应,实现统一处理逻辑。它位于请求处理链中,可对指定URL路径或Servlet进行拦截,常用于权限控制、编码处理、日志记录、安全防护等功能。 Filter通过实现jakarta.servlet.Filter接口,重写doFilter()方法实现核心逻辑。配置方式包括注解@WebFilter和web.xml两种。Filter链按配置顺序执行,调用FilterChain.doFilter()放行请求。

2025-10-12 12:50:07 1534 1

原创 Cookie、Session 和 域对象 详解

Cookie、Session与域对象是解决HTTP无状态特性的关键技术。Cookie是存储在客户端的小型文本文件(约4KB),通过Set-Cookie头部由服务器发送到浏览器,并在后续请求中自动回传。Session则是服务器端的解决方案,通过Session ID标识用户。域对象(如ServletContext)实现应用级数据共享。

2025-10-12 00:15:00 1400

原创 Servlet 详解

Servlet核心概念与使用指南 Servlet是Java编写的服务器端程序,用于生成动态Web内容。主要功能包括处理HTTP请求、修改数据并返回响应。Servlet运行于Java应用服务器中,Tomcat是其常见容器。 核心要点: Servlet本质是实现了Servlet接口的Java类,通过HttpServlet类间接实现 Tomcat架构中,每个Wrapper管理一个Servlet类 处理流程

2025-10-11 09:54:09 1489

原创 Apache Tomcat 详解

Apache Tomcat是一个轻量级Web应用服务器,广泛用于中小型系统。其核心由连接器(Connector)和容器(Container)组成:连接器处理网络通信,包括协议解析和请求封装;容器负责业务处理,采用多层父子结构(Engine/Host/Context/Wrapper)实现灵活扩展。Tomcat支持多种IO模型(NIO/NIO2)和协议(HTTP/AJP),通过线程池管理请求处理。其模块化设计既保证了性能,又提供了Servlet容器的完整生态支持。

2025-10-09 14:03:37 1119

原创 HTML-CSS-JS-入门学习笔记

本文是HTML、CSS和JS的入门学习笔记,主要介绍了HTML基础内容。包括标题标签(h1-h6)、段落标签(p)和换行标签(br/hr)的使用方法;有序(ol)和无序列表(ul)的创建及嵌套;超链接(a)的路径设置和打开方式;图片(img)标签的属性配置;表格(table)的基本结构和合并单元格操作;表单(form)的提交方式(GET/POST)及常用输入控件。文中通过大量代码示例和效果图展示,帮助初学者快速掌握HTML基础标签的使用。

2025-10-08 00:00:00 1462 1

原创 MySQL-索引

MySQL索引摘要 MySQL索引是一种优化数据库查询性能的重要机制,它通过建立特定数据结构加快数据检索速度。索引可分为逻辑分类(主键索引、唯一索引、普通索引)和物理分类(单列索引、组合索引),使用B-TREE、B+TREE或HASH等数据结构实现。合理使用索引能显著减少数据扫描量、避免排序操作、提高连接查询效率,但也存在维护成本高、占用存储空间等缺点。创建索引时应考虑查询频率、数据唯一性等因素,避免在小表或频繁修改的表上过度使用索引。

2025-10-07 10:36:56 1385

原创 JDBC 学习笔记

本文介绍了JDBC(Java数据库连接)的基本概念和使用方法。主要内容包括: JDBC背景:为解决Java程序访问不同数据库的统一接口问题,SUN公司制定了JDBC规范,要求各数据库厂商实现统一接口。 JDBC核心: Java提供接口规范(位于java.sql和javax.sql包) 数据库厂商提供具体实现(驱动jar包) 快速入门步骤: 准备数据库和表 下载对应数据库驱动jar包 创建Java项目并导入驱动 编写JDBC代码连接和操作数据库 示例提供了tb_user表结构和数据的SQL脚本,为后续JDBC

2025-09-22 12:07:42 1351

原创 MySQL学习笔记-进阶篇

MySQL存储引擎与索引结构进阶指南 摘要: 本文深入解析MySQL的存储引擎特性和索引结构。MySQL采用四层体系结构(连接层、服务层、引擎层、存储层),支持多种存储引擎(InnoDB/MyISAM/Memory等),其中InnoDB作为默认引擎支持事务、行锁和外键。文章详细对比了各引擎的特点,并重点分析了InnoDB的表空间组织结构(表空间→段→区→页→行)。在索引方面,介绍了B+Tree、Hash等不同索引结构及其适用场景,帮助开发者根据业务需求(如事务处理、高速查询等)选择合适的存储引擎和索引方案。

2025-09-19 12:54:07 1154

原创 Java 代理模式-JDK动态代理

本文介绍了Java中的代理模式,重点讲解了动态代理的实现方式。代理模式是一种结构型设计模式,通过引入代理对象间接访问目标对象,可增强功能并提高灵活性。文章首先概述了23种设计模式分类,然后详细阐述了静态代理的实现步骤:定义服务接口、被代理对象实现接口、代理类实现接口并持有被代理对象引用,最后通过客户端调用演示。

2025-09-15 18:28:50 1374

原创 MySQL学习笔记-基础篇

本文介绍了MySQL数据库的基础知识,包括数据库概念、连接方式、SQL语法和DDL操作。主要内容有:1)MySQL数据库的两种连接方式(客户端工具和命令行);2)SQL通用语法及分类(DDL、DML、DQL、DCL);3)DDL数据库操作(查询、创建、删除)和表操作(增删改查字段、修改表名);4)MySQL主要数据类型(数值型、字符串型、日期时间型)。通过学习可以掌握MySQL基础操作和SQL语句编写规范。

2025-09-11 19:16:50 1154

原创 Java 线程池详解

本文详细介绍了Java线程池的原理与应用。主要内容包括:1. 线程池的优势:降低资源消耗、提高响应速度、增强线程可管理性;2. Executor框架的组成:任务(Runnable/Callable)、执行机制(Executor)和异步结果(Future);3. ThreadPoolExecutor核心参数:corePoolSize、maximumPoolSize、workQueue等,以及四种拒绝策略;4. 线程池的创建方式对比,推荐使用ThreadPoolExecutor构造函数而非Executors工具

2025-09-08 18:03:29 1848

原创 Java反射与动态代理学习笔记

本文系统介绍了Java反射机制与动态代理技术。反射部分详细讲解了如何获取Class对象(三种方式)、操作构造方法(创建对象)、访问成员变量(读写字段值)和调用成员方法(包括私有方法)。动态代理部分通过明星代理案例,展示了如何使用JDK动态代理创建代理对象,实现对目标方法的拦截增强。文章还演示了反射与配置文件结合使用的灵活方案,最后总结了反射和动态代理在运行时类型检查、灵活对象创建及AOP编程等场景的重要应用价值。这些技术为Java程序提供了强大的动态能力支持。

2025-09-07 20:34:54 465

原创 Java 网络编程学习笔记

摘要:本文介绍了Java网络编程的基础知识,包括网络架构模式(CS/BS)、网络编程三要素(IP、端口、协议)以及TCP/UDP协议的特点。详细讲解了InetAddress类的使用、UDP单播/组播的实现方式,以及TCP通信程序的搭建。重点分析了TCP三次握手和四次挥手的连接机制,并提供了实际编程中的注意事项。文章通过代码示例演示了网络通信的实现过程,适合Java网络编程初学者学习参考。

2025-09-07 20:25:30 868

原创 Java多线程学习笔记

本文总结了Java多线程的核心知识点,主要包括:1)进程与线程的概念及区别;2)三种多线程实现方式(继承Thread类、实现Runnable接口、Callable接口);3)线程调度、优先级设置及生命周期管理;4)线程同步机制(同步代码块、同步方法、Lock锁);5)死锁产生条件及解决方法;6)线程池原理及Executor框架使用;7)线程安全与共享数据管理。文章通过售票等示例代码演示了多线程的实际应用,并详细介绍了线程池的参数配置和优化策略,为Java多线程编程提供了全面的技术参考。

2025-09-06 19:14:17 1526

原创 Java IO流 学习笔记

本文系统总结了Java IO流的核心知识点,主要包括:1. 基础IO流分类(字节流/字符流、输入/输出流)及使用场景;2. 文件操作核心类(File、FileInputStream/OutputStream、FileReader/Writer)的详细用法及异常处理;3. 字符编码原理与乱码解决方案;4. 高级流应用(缓冲流、转换流、序列化流、打印流、解压缩流);5. 实用案例(文件加密、字符集转换、文件夹拷贝等)。

2025-09-05 19:07:23 596 1

原创 Java File 类学习笔记

本文总结了Java中File类的核心用法,包括路径表示(相对/绝对路径)、构造方法(3种创建方式)、常用成员方法(判断、获取信息、创建删除、遍历目录等),以及6个实用练习案例(文件查找、递归删除、统计大小等)。重点注意事项包括:路径分隔符处理、空文件夹删除限制、遍历时的权限检查等。File类提供了完整的文件系统操作能力,适合处理文件/文件夹的创建、查询和管理任务。

2025-09-04 11:38:43 952

原创 Java 异常学习笔记

本文总结了Java异常处理的核心知识,包括:1)异常分类体系(Error/Exception/RuntimeException);2)四种处理方式(JVM默认/try-catch/throws/throw);3)Throwable类的常用方法;4)多异常捕获和自定义异常的实现方法。重点介绍了try-catch的使用细节、异常抛出规范,以及如何通过继承RuntimeException或Exception创建业务相关的自定义异常。文中包含多个代码示例,演示了异常处理在实际开发中的应用场景,如数据验证、资源管理等

2025-09-03 18:37:58 440

原创 Java 方法引用学习笔记

本文总结了Java方法引用的核心概念和使用方法。方法引用是简化Lambda表达式的语法,用于直接引用已有方法,需满足函数式接口条件。文章详细介绍了五种方法引用类型:静态方法引用(类名::方法名)、成员方法引用(对象::方法名)、构造方法引用(类名::new)、类名引用成员方法(类名::方法名)和数组构造方法引用(类型[]::new)。针对每种类型提供了具体语法和代码示例,包括集合操作、对象转换等常见应用场景。最后通过三个实际案例展示了方法引用在数据处理中的灵活运用。

2025-09-03 17:44:56 461

原创 Java Stream API 学习笔记

Stream流结合Lambda表达式,简化了集合和数组的操作。使用Stream流分为三个步骤:先得到一条Stream流,并把数据放上去使用中间方法对流水线上的数据进行操作使用终结方法对流水线上的数据进行操作。

2025-09-02 20:45:04 379

原创 Java Map集合学习笔记

Java Map集合核心知识涵盖HashMap、LinkedHashMap和TreeMap的实现与原理。Map接口以键值对存储数据,提供put、get等方法。遍历方式包括键找值、键值对和Lambda表达式。HashMap基于哈希表实现,通过数组+链表/红黑树解决哈希冲突,负载因子触发扩容。LinkedHashMap继承HashMap,通过双向链表维护插入顺序。TreeMap基于红黑树实现,支持自然排序或定制Comparator排序。

2025-09-02 18:47:07 1442

原创 Java Set 系列集合学习笔记

Set 系列集合主要用于处理不重复元素的存储根据是否需要排序、是否需要保持插入顺序等需求选择合适的 Set 实现存储自定义对象时,必须正确重写hashCode()和equals()方法TreeSet 提供了两种排序方式:自然排序和比较器排序。

2025-09-02 11:55:52 785

原创 Java 集合框架基础:ArrayList 与包装类

Java集合框架基础:ArrayList与包装类 摘要:本文介绍了Java集合框架中ArrayList的基本操作和特性。ArrayList作为动态数组,支持增删改查等操作,相比数组长度可变且功能丰富。文章详细讲解了ArrayList的创建、常用方法(add/remove/set/get)、遍历方式及底层扩容机制(默认10容量,1.5倍扩容)。同时说明了基本数据类型需通过包装类(如Integer)才能在集合中使用,并介绍了自动装箱拆箱机制。最佳实践包括指定初始容量优化性能、使用接口类型声明等注意事项。

2025-09-02 11:45:08 959

原创 Java集合框架笔记--List系列集合基本使用方法 ArrayList,LinkedList和迭代器底层源码

本文总结了Java集合框架中List系列集合的基本使用方法,重点分析了ArrayList和LinkedList的底层实现原理。内容涵盖集合体系架构、Collection接口常用方法、List特有方法以及五种遍历方式(普通for循环、迭代器、增强for、lambda表达式、列表迭代器)。特别详细解析了ArrayList的扩容机制(初始容量10,扩容1.5倍)和LinkedList的双向链表结构,包括它们的底层源码实现。同时阐述了迭代器的快速失败机制和并发修改异常产生原理,并给出了解决方案。

2025-09-01 16:43:23 768

原创 Java 字符串 学习笔记

本文总结了Java字符串的核心知识点:1. 字符串不可变性特点及两种创建方式(直接赋值和new构造);2. 字符串内存机制(字符串常量池与堆内存分配);3. 字符串比较的==与equals区别;4. 常用字符串操作方法(遍历、统计、拼接、反转等);5. 实战案例(金额转换、手机号屏蔽、敏感词过滤);6. StringBuilder/StringBuffer的线程安全与性能差异;7. 字符串不可变性的实现原理及适用场景选择建议。文章通过代码示例详细说明了字符串操作的最佳实践,包括内存优化、性能提升等注意事项。

2025-09-01 12:46:56 806

原创 Java 静态关键字与相关概念

Java的static关键字用于修饰变量、方法和类,使其成为静态成员。静态变量被所有对象共享,随类加载而初始化;静态方法只能访问静态成员,常用于工具类。静态成员与非静态成员的关键区别在于加载时机和访问权限。单例模式利用静态特性确保类只有一个实例。main方法作为程序入口必须是静态的。内存结构中,静态变量存储在堆内存的静态区,随类加载而创建。使用static时需注意:静态方法不能访问非静态成员,也没有this引用。

2025-08-30 20:48:27 903

原创 Java 面向对象编程笔记

本文总结了Java面向对象编程的核心知识点:1.成员变量的默认值规则;2.封装概念及实现方式,通过私有化属性和提供getter/setter方法控制访问;3.就近原则与this关键字的用法;4.构造方法的特点、重载及执行时机;5.标准JavaBean类的编写规范;6.对象内存分配机制;7.成员变量与局部变量的区别;8.格式化输出和键盘输入方法;9.对象数组的创建和使用;10.getter/setter方法作为数据过滤通道的应用。这些内容涵盖了Java面向对象编程的基础知识和关键实践技巧。

2025-08-30 20:44:15 819

原创 Java 方法综合练习笔记

【Java方法练习笔记】包含方法定义调用、参数传递、重载重写等基础概念,整理了数组操作(遍历、查找极值、复制反转等)、数据类型参数传递规则,并提供了机票价格计算、质数查找、验证码生成等8个实用方法示例。重点区分了return与break的差异,强调方法设计应遵循单一职责原则。通过主方法测试示例演示了各类方法的实际调用,适合Java初学者系统学习方法的使用技巧。

2025-08-30 16:02:17 875

原创 Java 数组

本文介绍了Java数组与内存管理的核心知识点。主要内容包括:1)数组的静态和动态初始化方式及内存地址表示;2)数组基本操作(访问、遍历、求和);3)动态初始化的默认值规则;4)实践案例:随机数组生成与统计分析;5)JVM内存区域划分(栈、堆等);6)二维数组的初始化方法。特别强调了计算平均值时的精度处理技巧,建议使用(double)强制转换避免整数除法问题。文章通过代码示例展示了数组的核心操作,适合Java初学者掌握数组基础与内存管理概念。

2025-08-30 15:59:17 928 1

空空如也

空空如也

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

TA关注的人

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