- 博客(63)
- 收藏
- 关注
原创 SpringMVC 拦截器详解与实战
SpringMVC 拦截器是一种非常实用的机制,通过它可以灵活地对请求进行拦截和处理。在实际开发中,我们可以通过拦截器实现用户权限验证、日志记录、性能监控等多种功能。本文通过详细讲解拦截器的基本概念、方法、执行流程以及实际案例,帮助读者深入理解 SpringMVC 拦截器的使用方法和应用场景。希望本文对大家在学习和使用 SpringMVC 框架时有所帮助。
2025-03-27 14:28:01
1005
1
原创 SpringMVC 请求与响应处理详解
本文详细介绍了 SpringMVC 中请求和响应的处理方式,包括 RequestMapping 注解的使用、参数绑定、Servlet API 的应用、重定向与转发、JSON 响应、文件上传下载以及异常处理等内容。通过这些技术点的讲解和示例,开发者可以更高效地使用 SpringMVC 构建功能完善的 Web 应用。
2025-03-25 14:37:09
450
原创 SpringMVC 配置与应用详解
Model(模型):负责处理数据和业务逻辑,通常包括实体类和业务处理类。View(视图):负责与用户交互,展示数据,如 JSP、HTML 页面等。Controller(控制器):负责接收用户请求,调用模型进行处理,并将结果返回给视图。这种分层设计降低了代码的耦合度,提高了代码的可维护性和可扩展性。本文详细介绍了 SpringMVC 的配置过程、核心组件以及实际应用案例。通过入门案例,读者可以快速上手 SpringMVC 的基本使用;
2025-03-25 12:57:30
892
原创 Spring AOP深度解析:从概念到实战
AOP(Aspect Oriented Programming),即面向切面编程,是一种编程范式,它通过预编译方式或者运行期动态代理实现程序功能的统一维护。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容。Spring AOP是Spring框架中的一个重要功能,它通过面向切面编程的方式,将横切关注点从业务逻辑中分离出来,实现了代码的复用和功能的增强。本文深入解析了Spring AOP的核心概念、底层原理以及实战应用,帮助读者全面掌握这一强大工具。
2025-03-23 10:45:00
1238
原创 Spring IOC深入解析:从原理到实践
Spring框架是一个开源的Java EE框架,它最初由Rod Johnson在2003年创建。Spring框架的核心理念是通过IOC和面向切面编程(AOP)来解决企业应用开发中的复杂性问题。松耦合:通过IOC容器管理对象的创建和依赖关系,使得对象之间的耦合度大大降低。AOP支持:提供面向切面编程的支持,方便实现日志记录、事务管理等功能。声明式事务管理:通过配置文件即可完成事务的管理,无需手动编写事务代码。方便集成。
2025-03-22 20:48:32
993
原创 MySQL事务全解析:从概念到实战
事务是数据库中一个完整的业务流程,是一个不可再分的工作单元。它与数据操作语言(DML)语句紧密相关,因为DML语句(如INSERT、UPDATE、DELETE)会改变数据库中的数据,而事务就是要保证这些操作的完整性和一致性。举个例子,一个网上购物的流程可能包括:检查库存、下单、扣款、发货等多个步骤,这些步骤共同构成了一个事务。只有当所有步骤都成功完成,整个事务才算成功;如果其中任何一个步骤出错,整个事务都会回滚,恢复到事务开始之前的状态。事务是数据库操作中不可或缺的一部分,它保证了数据的完整性和一致性。
2025-03-20 15:57:49
1033
原创 DIY Tomcat:手写一个简易Servlet容器
通过手写这个简易的 Tomcat,我们深入理解了 Servlet 容器的基本工作原理,包括 Socket 编程、请求解析、Servlet 的加载和调用等关键环节。虽然这个实现功能简单,但它为我们进一步学习和研究 Tomcat 的源码提供了宝贵的实践经验。在未来的学习中,我们可以继续完善这个简易 Tomcat,添加更多的功能,如支持静态资源的访问、会话管理、过滤器和监听器等,逐步使其功能更加丰富和完善,向真正的 Tomcat 靠拢。
2025-03-08 12:04:03
728
原创 HTTP与HTTPS:从原理到实践,深入解析Web通信的奥秘
HTTP(HyperText Transfer Protocol,超文本传输协议)是客户端与服务器之间进行通信的标准协议。它定义了客户端如何向服务器发送请求以及服务器如何响应这些请求。HTTP协议是无状态的,即每次请求都是独立的,服务器不会保存请求之间的状态信息。HTTP和HTTPS是Web开发的基础协议,Cookie和Session则是解决HTTP无状态问题的关键机制。通过本文的介绍,相信你已经对这些技术有了更深入的理解。
2025-03-01 19:35:49
1050
原创 深入解析Tomcat目录结构
通过本文的介绍,相信你对Tomcat的目录结构有了更深入的了解。掌握这些知识,可以帮助你更好地配置和管理Tomcat,提高开发和部署的效率。希望本文对你有所帮助!
2025-02-26 18:34:04
1030
原创 Java IO 流核心技术全解析
IO(Input/Output)即输入和输出,是指程序与外部设备(如硬盘、键盘、显示器等)进行数据交互的过程。在 Java 中,IO 流被抽象为流对象,通过这些流对象可以方便地实现数据的读取和写入操作。例如,从文件中读取文本内容、将数据写入数据库等操作都可以通过 IO 流来完成。本文详细介绍了 Java IO 流的核心概念、分类、常用类及实战技巧。通过学习字符流和字节流的相关知识,以及掌握文件复制、字符编码处理等实战技巧,你已经具备了在 Java 开发中处理各种 IO 操作的能力。
2025-02-20 22:00:00
725
原创 Java 代理模式深度解析:静态代理与动态代理的实战指南
给目标对象提供一个代理对象,并由代理对象控制对目标对象的引用。代理对象可以在不修改目标对象的情况下,对目标对象的功能进行增强或控制访问。代理模式是 Java 开发中非常重要的设计模式,静态代理和动态代理各有优缺点,适用于不同的场景。在实际开发中,动态代理由于其灵活性和可扩展性,被广泛应用在 AOP、RPC 等领域。通过本文的代码示例和思维导图,相信你对 Java 代理模式有了更深入的理解。希望这篇文章对你有所帮助!如果你有任何问题或建议,欢迎在评论区留言,我们一起交流学习!😊。
2025-02-19 16:25:37
990
原创 Java 反射机制深度解析:类信息的来源、declared 的区别、赋值操作及暴力反射
为了更好地理解反射机制,我们先来看一下Student// 私有字段// 公共字段// 默认访问权限字段// 受保护字段// 私有方法// 公共方法// 默认访问权限方法// 受保护方法// 构造器类信息的来源:类信息从源码文件经过编译生成字节码文件,再由类加载器加载到内存中,生成Class对象。与get的区别获取当前类中声明的所有成员,包括私有成员;get只获取公共成员,包括父类的公共成员。使用类信息赋值。
2025-02-18 19:36:28
861
原创 Java 中的抽象类与接口:深入解析与实践
抽象类:通过关键字定义。接口:通过interface关键字定义。我们重写了/*** 对数组进行排序* @param o 需要排序的数组*/return;// 定义基准值while (i!= j) {j--;i++;// 交换元素// 将基准值放到中间位置// 递归排序左右两部分抽象类:适用于类与类之间有明显的继承关系,且需要共享代码的场景。接口:适用于定义一组行为规范,供多个类实现的场景,强调功能的扩展。
2025-02-17 14:40:50
753
原创 深入剖析 Java 异常体系:从理论到实战
throw 关键字用于在程序中手动抛出一个异常。我们可以在代码的任何位置使用 throw 关键字抛出一个异常对象,这个异常对象可以是 Java 自带的异常类的实例,也可以是我们自定义的异常类的实例。通过 throw 关键字,我们可以在程序运行过程中根据特定的条件主动触发异常,以便更好地控制程序的执行流程和错误处理逻辑。throw new IllegalArgumentException("年龄不能为负数");// 继续其他逻辑。
2025-02-12 16:45:00
1035
原创 Java 中的 128 陷阱与自动拆装箱深度解析
这个范围的选择是为了在性能和内存消耗之间取得平衡。-128 到 127 是一个常用的范围,大多数情况下可以满足需求,同时避免了过多的缓存对象占用内存。==:比较的是基本数据类型的值或引用数据类型的引用。equals():比较的是引用数据类型的内容(前提是该类重写了equals()方法)。通过本文的介绍,我们深入了解了 Java 中的 128 陷阱、自动拆装箱、==与equals()的区别,以及hashCode()方法的作用和与equals()方法的关系。128 陷阱Integer。
2025-02-11 20:10:13
830
原创 Java 中的 Object、equals() 和 hashCode() 深度剖析
=:比较的是基本数据类型的值或者引用数据类型的引用。equals():比较的是引用数据类型的内容(前提是该类重写了equals()方法)。通过本文的介绍,我们深入了解了 Java 中的Object类、equals()方法和hashCode()方法的核心知识点。Object类是所有类的父类,提供了基本的方法。equals()方法用于定义对象相等的逻辑,可以通过重写来自定义比较行为。hashCode()方法与equals()方法紧密相关,只有同时重写这两者,才能保证对象在哈希表等数据结构中的正确性。
2025-02-11 19:18:54
1034
原创 探索 Java 多态的奥秘
编译时多态:主要指方法的重载(Overloading),通过方法名相同、参数列表不同实现。运行时多态:主要指方法的重写(Overriding),通过子类重写父类方法实现,运行时根据对象的实际类型动态绑定方法。在 Java 中,运行时多态的应用更为广泛,它借助向上转型和动态绑定机制,使得程序具有更高的灵活性和扩展性。通过本文的详细分析,我们了解到 Java 多态的实现机制和应用价值。多态使得程序更加灵活、可扩展,是面向对象编程的核心优势之一。希望读者通过本文能够深刻理解多态的原理,并在实际开发中熟练运用。
2025-02-10 16:00:46
595
原创 Java中的继承及相关概念
在 Java 中,继承是一种允许一个类继承另一个类的特性。通过继承,子类可以获取父类的属性和方法,这有助于减少代码冗余并提高代码的可维护性。通过继承,子类可以获取父类的属性和方法,并在此基础上添加自己的特性。是继承机制中的常见概念,理解它们的区别和使用场景对于编写高质量的 Java 代码至关重要。类加载过程中,静态块和静态变量初始化的顺序会影响程序的输出。在继承中,子类可以继承父类中的方法和属性。静态块用于类的初始化,执行顺序按照代码中的位置顺序。方法,展示了如何在子类中调用父类的方法。
2025-02-08 20:49:52
944
原创 请求转发和重定向
客户端发出第一个请求,被服务器处理,处理后服务器给客户端一个相应(一个新的地址),当客户端收到新的请求之后,立马根据新地址再次发起请求 地址栏中地址是变的。这样运行S01的时候不仅能打印S01也能将S02中的内容打印出来 但是浏览器中访问的还是S01。在请求传参时比如传账号密码接受并打印那么请求转发可以接收到重定向不可以。当客户端请求到达后,服务器将请求进行转发,地址栏中的地址不变。在访问S01是状态发生改变也会访问到S02并实现其中的打印。想要访问WEB-INF中内容只能用请求转发。
2025-01-13 12:52:08
184
原创 计算机数据存储形式和编码
10010100--------------------------->惊天的BUG---------------------->计算机机存储数据一定不会存储数据的源码,因为源码两个相反数相加的结果不是0。100000000(补码)-----------数据类型决定数据在内存当中的存储形式,所以截取后8位--------》00000000--------------->0。计算机如何定义数值类型的数据------------------>数据类型:决定数据在内存当中的存储形式。二进制---》八进制。
2024-12-26 23:05:54
679
原创 servlet中根据请求类型做出判断
再HttpServlet中做出判断如果是Get则执行doGet方法但由于是抽象类无法直接执行方法,会选择让子类实现,可以进一步通过request获取的path进行判断为first还是second等再执行其对应的方法,这就将信息落实到了具体上。接收到浏览器客户端发出的信息后获取注解和请求方式并封装到Request类的对象中。在HttpServlet中实现service方法来更好的匹配http的请求方式。抽象类实现了接口那么抽象类可以有选择的实现接口中的方法。实现接口类,就必须实现该接口类当中的所有方法。
2024-12-17 09:15:00
308
原创 JavaScript定时器
这个就是延时定时器中内容10s后发生也就是十秒后再停止周期定时器,周期定时器每3s执行一次,他会执行三次之后停止。1.setInterval(function time) 周期定时器。知道这个以后可以采取另外一种停止定时器的方法。可以通过方法来过段时间再让定时器停下来。2.setTimeout 延迟定时器。这种停止是让定时器进入页面就停下来。还可以在页面显示本地时间。
2024-12-04 16:08:04
445
原创 JavaScript中todolist操作--待办事项的添加 删除 完成功能
在文本框中输入内容点击添加按钮会在下面生成。点击完成之后事项加中划线 颜色变灰。因为只有实现添加之后才会出现按钮。对完成功能的改善 增加合理性。注意这个功能要写在添加里面。删除 修改等功能同理。
2024-12-03 21:07:30
891
原创 JavaScript中tab切换 下拉框操作
注意 transition对display属性不识别 所以并不适用 但可以考虑别的角度 比如高度。让初始所有的高度都为0 鼠标放上去之后高度缓慢变为每个li元素的高度之和就可以实现渐变这个过程。不能直接给定值比如放上去变成200px 拿走变成0。我们需要给他加上点属性让他缓慢展开 这样更美观。因为有的li多有的少 每种情况都不相同。这是一个简便的下拉框 他是瞬间展开的。效果在主页视频 也可以自己试试。
2024-12-02 21:13:51
391
2
原创 JavaScript事件传播机制
点击蓝色区域之后会从自己开始一直向上级元素传播,每个都执行一遍,但有时我们不需要这种操作。另一种情况是从父级元素到自己传播 称为捕获阶段。点击蓝色区域只执行了child的操作。要想中断也可以采用上述方式。由自己向上级元素传播称为。
2024-11-30 17:07:25
562
原创 泛型数组与hashmap
要想比较值大小的话可以分别用对应基本类型的变量接受一下 再比较基本类型的变量值是否相等。基本类型对应的引用类型,如果数值一样,但是范围不在-128-127中。因为Integer是引用类型表示指向是否相同。如果范围在-128-127之间指的是一个对象。可以用int接受Integer的。重要的泛型结构--hashmap。5.3.1 访问数组元素列表。5.4对象包装器与自动装箱。数值类的包装类都有这个问题。基本类型和包装类是等价的。超出就不是一个对象了。还可以用类型转换比较。
2024-11-27 18:05:22
532
原创 调用java中的库实现栈和队列
LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
2024-11-26 11:30:00
262
原创 JavaScript基础语法
innerTEXt=”修改的内容“ innerHTML也会随之变化 所以如果只想修改文本内容选择其中一个就可以。对象.style.属性=值 obj.style.cssText="css样式。要注意如果要声明一个函数在第九个位置那么相当于这个函数完全变成了arr[8]没有Element找的是兄弟节点可以是文本 元素 注释等任何类型的。var obj={} 这就声明了一个对象 里边是属性 值 对象。不能再用原来函数的名字 要调用可以用arr[8]m1()null 涉及到一个量但是这个量是空 说明没有声明。
2024-11-25 09:15:00
892
原创 java中的一些基本知识
123=1 000000001111011原码-->1 111111110000100反码(原码除了符号位剩余取反)-->1 111111110000101补码(最后加一)如:123=64+32+16+8+2+1=0000000001111011=补码。每个拼音都有自己的编码 这些拼音会组成汉字显示出来 选中之后就会找到汉字的编码。验证:453=400+50+3=4*100+5*10+3=比如输入f 输入法会接收到f的编码 然后匹配f拼音的编码。1/0-->1bit =1比特 1b=1字节=8bit。
2024-11-23 08:30:00
959
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人