- 博客(36)
- 收藏
- 关注
原创 Collection遍历方式
各位同学,接下来我们学习一下Collection集合的遍历方式。有同学说:“集合的遍历之前不是学过吗?就用普通的for循环啊?“ 没错!之前是学过集合遍历,但是之前学习过的遍历方式,只能遍历List集合,不能遍历Set集合,因为以前的普通for循环遍历需要索引,只有List集合有索引,而Set集合没有索引。所以我们需要有一种通用的遍历方式,能够遍历所有集合。
2026-05-12 21:02:52
254
原创 集合进阶(Collection、List集合)
同学们,前面我们已经学习过了ArrayList集合,它是一种容器,用来装数据的,类似于数组,但集合的大小可变,开发中也非常常用。为了满足不同的业务场景需求,除了ArrayList集合以外,Java还提供了很多种其他的集合,如下图所示:我想你的第一感觉是这些集合好多呀!但是,我们学习时会对这些集合进行分类学习,如下图所示:一类是单列集合元素是一个一个的,另一类是双列集合元素是一对一对的。在今天的课程中,主要学习Collection单列集合。
2026-05-11 21:15:49
143
原创 Arrays&Lambda&JDK8新特性
本文展示了如何使用Comparator和Lambda表达式对Product对象数组进行排序。首先定义包含name和price属性的Product类,创建4个产品的数组。然后演示两种排序方法:1)使用匿名内部类实现Comparator接口按价格升序排序;2)使用Lambda表达式简化相同的排序逻辑。两种方式都通过Arrays.sort实现,最后输出排序前后的结果。代码清晰地展示了传统写法和Lambda表达式写法的对比,体现了Java 8后更简洁的排序实现方式。
2026-05-06 21:03:36
55
原创 三层架构和MVC
本文系统介绍了三层架构与MVC设计模式及其在SpringMVC中的实现。三层架构将系统划分为表现层、业务逻辑层和数据访问层,通过接口交互实现低耦合。MVC模式则专注于表现层设计,分为模型(Model)、视图(View)和控制器(Controller),其中控制器负责请求处理和业务逻辑调用。SpringMVC作为Spring框架的Web模块,完美实现了MVC模式,其核心组件包括前端控制器DispatcherServlet、处理器映射器、适配器和视图解析器等。文章详细剖析了SpringMVC的执行流程和各组件职
2026-04-22 21:47:07
404
原创 Spring整合Mybatis实现用户的CRUD
本文介绍了基于JDK17的Spring框架集成开发环境搭建过程。首先创建Maven项目并配置JDK17编译环境,添加Spring 5.3.31、MyBatis 3.5.13、MySQL 8.0等核心依赖。然后创建User实体类并使用Lombok简化代码。重点配置了applicationContext.xml文件,包括数据源(C3P0)、MyBatis工厂对象、Mapper扫描、事务管理(AOP方式)等核心组件,并集成了PageHelper分页插件。通过XML方式实现了完整的IoC容器配置,为后续开发提供了基
2026-04-21 21:24:00
223
原创 propagation事务的传播行为
本文介绍了Spring事务中两种传播行为:REQUIRED和REQUIRES_NEW。REQUIRED是默认传播行为,被调用方法会在调用方的事务内运行,共享同一个事务边界;而REQUIRES_NEW则会启动新事务,挂起现有事务。此外还说明了@Transactional注解中propagation属性的配置方式,以及timeout和readOnly属性的作用:timeout设置事务超时时间,readOnly=true表示只读操作,false表示写操作。这些配置可以精确控制事务的边界和行为特性。
2026-04-20 21:17:50
287
原创 AspectJ
Spring框架中启用和使用AspectJ注解支持的方法。主要内容包括:1) 通过配置aop:aspectj-autoproxy元素启用AspectJ注解支持;2) 使用@Aspect注解声明切面类;3) 五种通知类型注解的使用方法(@Before、@After、@AfterReturning、@AfterThrowing、@Around);4) 切入点表达式的语法规则;5) 基于注解的AOP开发步骤,包括创建目标类、切面类、配置织入关系等。文章还提供了具体的代码示例,展示了如何定义切面类、配置
2026-04-16 21:23:47
582
原创 动态代理的使用以及优点
动态代理主要有两种实现方式:JDK动态代理和CGLIB动态代理。JDK动态代理基于接口实现,通过Proxy类和InvocationHandler接口创建代理对象,仅适用于有接口的类;CGLIB通过继承目标类生成代理,可代理普通类但不能代理final类。动态代理具有灵活性强、可扩展性高等优点,能够在不修改源码的情况下增强方法功能,体现了AOP切面编程思想,即在方法执行前后插入额外逻辑(如时间统计),是Java中重要的编程范式。
2026-04-15 20:57:41
338
原创 Spring 的纯注解配置
@Configuration用于声明配置类,@ComponentScan指定扫描包路径,@Bean将方法返回值注册为Bean。数据库配置部分展示了@PropertySource加载properties文件,@Value注入配置值,以及DataSource的配置方法。持久层使用@Repository和JdbcTemplate实现数据访问,业务层通过@Service和@Autowired实现依赖注入。最后演示了Spring与JUnit的整合测试,使用@RunWit
2026-04-14 17:22:21
244
原创 jdbcTempalte的常用API
JdbcTemplate常用方法摘要:update()用于增删改操作,返回影响行数;queryForObject()有两种形式,分别用于查询单值(如Integer.class)和单行对象(需RowMapper);query()用于多行查询,返回对象集合。RowMapper通过BeanPropertyRowMapper实现结果集到JavaBean的映射。这些方法都支持参数化查询,通过可变参数传递SQL参数。
2026-04-13 21:45:46
286
原创 Spring快速入门
本文介绍了使用Spring框架创建和管理Java对象的基本步骤:1)通过pom.xml导入Spring核心依赖;2)创建User实体类;3)编写Spring配置文件,使用<bean>标签定义对象;4)通过ClassPathXmlApplicationContext加载配置文件并获取Bean实例。整个过程展示了Spring IoC容器的基本使用方式,包括依赖配置、对象声明和实例获取等核心功能。
2026-04-09 21:19:03
445
原创 MyBatis的注解开发
注解提供了一种简单的方式来实现简单映射语句,而不会引入大量的开销。能够读懂别人写的代码,特别是框架相关的代码。本来可能需要很多配置文件,需要很多逻辑才能实现的内容,就可以使用一个或者多个注解来替代,这样就使得编程更加简洁,代码更加清晰。这几年来注解开发越来越流行,Mybatis 也可以使用注解开发方式,这样我们就可以减少编写 Mapper 映射文件了。本次我们先围绕一些基本的 CRUD 来学习,再学习复杂映射关系及延迟加载。@Insert: 实现新增@Update: 实现更新。
2026-04-08 20:19:50
371
原创 Mybatis延迟加载策略
MyBatis延迟加载机制通过减少数据库访问频率优化性能。支持两种配置方式:1)局部延迟加载,在association/collection中设置fetchType="lazy";2)全局延迟加载,在mybatis-config.xml中配置lazyLoadingEnabled为true,并设置aggressiveLazyLoading为false。该特性仅在需要数据时才发送SQL查询,有效提升系统响应速度。
2026-04-07 21:12:53
438
原创 MyBatis多表查询之一对一
本文介绍了使用MyBatis实现订单与用户一对一关联查询的两种方法。第一种是嵌套结果方式,通过单条SQL多表连接查询,使用resultMap定义结果映射,在Order类中添加User属性存储关联数据。第二种是嵌套查询方式,先查询订单数据,再通过子查询获取关联用户信息,会执行多条SQL语句。文章详细展示了两种方法的实现步骤,包括POJO改造、Mapper接口编写、XML映射文件配置以及测试程序编写。通过association标签实现一对一关系映射,并对比了两种方法的特点和适用场景。
2026-04-06 20:44:25
682
原创 mybatis-config.xml:<configuration> 内部标签只能按这个顺序写:
MyBatis配置文件必须严格遵循以下标签顺序:properties→settings→typeAliases→typeHandlers→objectFactory→objectWrapperFactory→reflectorFactory→plugins→environments(数据库环境)→databaseIdProvider→mappers(映射器)。这个顺序是固定不变的,任何配置文件的编写都必须遵守该规范。
2026-04-05 21:03:39
212
原创 MyBatis的参数和返回值处理:
MyBatis映射文件中的resultType属性需指定返回类型的全路径(如com.sy.pojo.User),基本类型和String可直接写类型名或使用全路径。parameterType属性同理,配置时注意类型匹配即可。
2026-04-02 21:22:40
341
原创 Mybatis继承:
本文介绍了Maven父工程的配置方法。首先定义名为MavenParent的父工程,其packaging必须设为pom类型。父工程通过<dependencies>标签直接为子工程提供依赖(如junit 4.12),子工程只需继承父工程即可使用这些依赖。子工程配置时需通过<parent>标签指定父工程坐标和相对路径。此外,父工程可通过<dependencyManagement>统一管理依赖版本("版本花名册"),但不直接引入依赖,子工程需显式声明才能使用。
2026-04-01 21:17:00
279
原创 Maven下载和安装
本文介绍了Maven的下载安装与配置步骤:首先从Apache官网下载Maven核心程序,解压至无中文空格的目录;然后配置环境变量MAVEN_HOME和Path;接着修改settings.xml文件,设置本地仓库路径(如D:\Develop\Tools\Maven\repository)并添加阿里云镜像源;最后通过运行mvn -v命令验证安装是否成功。整个过程需确保JDK环境已正确配置。
2026-03-30 21:08:55
535
原创 九九乘法表
该Java代码实现了下三角九九乘法表的打印。代码采用主方法调用test()方法的结构,核心逻辑是通过双层for循环实现:外层循环(i)控制行数(1-9),内层循环(j)控制每行的列数(1-i)。内层循环使用print()输出乘法表达式(j*i=结果)和制表符\t保持对齐,外层循环每次开始前通过println()换行。代码结构清晰,职责分离,但存在首行空行和乘积对齐不够完美的问题。整体语法正确,是初学者实现乘法表的经典写法,通过嵌套循环和字符串拼接实现了规范的乘法表输出。
2026-03-23 21:01:35
585
原创 打印1-100之间的所有三的倍数
先定义一个方法 在主方法里调用方法并传递实参 在方法里 使用循环 调用形参来决定循环多少次 其次再 用从0依次递增 除以3 一直到100 再打印这个数 就是三的倍数。
2026-03-22 21:12:04
293
原创 班级学生管理系统代码分析与实现思路
本文介绍了一个基于JavaWeb技术开发的班级学生管理系统,采用MVC分层架构设计,实现了班级和学生信息的增删查功能。系统前端使用HTML+jQuery实现异步交互,后端采用Servlet+Service+DAO三层架构,通过反射机制优化Servlet处理,使用Jackson进行JSON序列化,C3P0连接池管理数据库连接。功能包括班级信息管理(查询、添加、名称校验)和学生信息管理(查询、添加、删除),实现了页面无刷新操作,提升了用户体验。系统通过严格分层降低了耦合度,便于维护和扩展。
2026-03-20 16:22:27
210
原创 ATM系统代码思路与分析
本文介绍了一个基于分层架构设计的ATM系统实现方案。系统采用"高内聚、低耦合"原则,分为实体层(Account类)、业务逻辑层(ATMOperate类)和测试层(ATMTest类)三层结构。核心设计特点包括:1)严格封装账户属性,确保数据安全;2)业务逻辑模块化拆分,提高可维护性;3)完善的异常处理和用户输入校验;4)友好的交互设计,如密码重试、转账验证等。系统实现了开户、登录、存取款、转账、密码修改等完整功能,通过分层设计和封装原则保证了系统的可扩展性和稳定性。
2026-03-19 21:04:27
517
原创 电影&菜品信息管理相关代码(完整版)思路与分析
摘要:本文介绍了一个基于Java控制台开发的电影信息管理系统,采用分层架构设计,包含实体层(Movie、Food类)、业务逻辑层(MovieOperator类)和测试层。系统实现了电影信息的增删改查功能,修复了并发修改异常、输入校验等问题,优化了用户交互体验。Movie类封装电影属性,Food类为菜品管理预留扩展空间。业务逻辑层通过Scanner实现菜单交互,采用ArrayList存储数据。系统具有结构清晰、可扩展性强等特点,为后续功能扩展(如菜品管理、数据持久化)奠定了基础。测试层MovieTest类作为
2026-03-18 21:42:25
578
原创 使用反射 动态调用对应方法
摘要:BaseServlet通过反射机制封装请求处理逻辑,统一调用子类方法。GradeServlet继承BaseServlet处理AJAX请求,调用Service层获取数据并转为JSON响应。BaseServlet利用反射动态获取请求方法并执行,简化了Servlet开发流程。其核心是通过getMethod()获取目标方法,用invoke()执行,实现请求的统一分发处理,避免为每个请求编写独立Servlet。
2026-03-17 20:11:48
454
原创 实现外卖商家案例
本文实现了一个基于控制台的外卖系统,采用三层架构设计:数据层(Food类)封装菜品属性及操作方法;业务层(FoodOperate类)实现核心功能,包括菜品上架(add)、菜单查询(query)和系统导航(page),支持按名称查询详情和浏览全部菜单;测试层(FoodTest类)作为程序入口。系统通过Scanner实现交互式操作,使用ArrayList存储菜品数据,采用循环结构和switch分支实现功能选择和重复操作。该设计实现了菜品信息的增查功能,展示了面向对象编程的基本应用。
2026-03-16 20:55:20
667
原创 ArrayList案例:掌握从容器中找出某些数据并成功删除的技巧
摘要:这段Java代码演示了如何使用ArrayList操作字符串元素。首先创建包含5种甜点的列表,然后遍历检查每个元素是否包含"草莓",若包含则删除该元素。初始列表为["草莓蛋糕","蓝莓布丁","草莓冰淇淋","咸蛋黄冰淇淋","香草蛋糕"],最终输出删除"草莓"相关项后的结果。关键方法包括add()添加元素、contains()判断包含、remove()删除元素和s
2026-03-13 16:54:34
28
原创 生成指定长度的随机验证码,并让用户输入验证码进行验证,直到输入正确为止
本文介绍了一个Java验证码程序的实现方案。程序采用模块化设计,包含三个核心方法:主方法控制交互流程,code方法生成4位随机验证码(含大小写字母和数字),judge方法进行验证码校验(忽略大小写)。通过while循环实现验证失败时重新生成验证码,直到用户输入正确为止。代码结构清晰,职责分明,使用Random类确保验证码随机性,Scanner类处理用户输入,并通过equalsIgnoreCase方法实现不区分大小写的验证功能。
2026-03-11 21:58:40
181
原创 用户 密码 验证码 是否一致
该程序实现了一个用户登录验证系统,包含四个功能层:1.交互层通过无限循环接收用户输入的用户名、密码和验证码;2.工具层生成4位随机验证码(包含大小写字母和数字);3.逻辑层校验输入信息(用户名"wanan"、密码"123"及忽略大小写的验证码);4.控制层处理验证结果,全部正确则登录成功,否则提示具体错误并循环输入。程序采用模块化设计,包含输入验证、随机码生成和结果判断等功能模块。
2026-03-10 21:54:41
48
原创 数组元素去重(综合应用)
本文实现了一个数组去重方法removeDuplicates,通过双重循环遍历原数组,筛选不重复元素存入新数组。方法首先处理空数组边界条件,然后统计不重复元素个数以确定新数组长度,最后通过二次遍历将不重复元素存入新数组并输出结果。测试用例{2,5,2,8,5,9,8,10}的去重结果为[2,5,8,9,10],完整展示了数组去重的处理流程。
2026-03-09 21:48:42
48
原创 成绩等级评定(多分支 + 方法)
本文实现了一个Java成绩评级程序。定义gradeScore方法处理成绩数组:首先检查数组有效性(非空且非null),然后遍历每个成绩。对0-100范围内的成绩按分数段划分等级(A:≥90,B:80-89,C:70-79,D:60-69,E:<60),超出范围的输出"无效成绩"。测试数组{95,82,76,63,58,100,45,105,-6}的输出结果验证了程序的正确性,能正确处理各分数段及无效成绩情况。程序逻辑清晰,边界处理完善,通过多分支if-else实现了完整的成绩评级功
2026-03-08 21:37:58
407
原创 数组元素逆序输出(方法封装)
本文介绍了一个实现整数数组反转的Java程序。程序通过reverseArray方法处理三种情况:数组为null时输出"null";数组长度≤1时直接输出原数组;长度>1时采用双指针交换法实现反转。方法先判空再判长度,最后处理常规反转,有效避免了异常。测试用例覆盖了正常数组{1,2,3,4,5}、单元素数组{88}和null数组三种场景。反转过程中实时输出中间结果,使用Arrays.toString()格式化输出。该实现逻辑完整,边界处理清晰,通过双指针法高效完成数组反转。
2026-03-08 21:34:30
323
原创 数组最值查找(方法返回值):
摘要:该程序实现查找数组最大值和最小值的功能。在Work04类中定义了两个静态方法:findMax()通过遍历数组并与初始基准值比较,返回最大值;findMin()采用类似方法返回最小值。main方法测试数组{34,18,92,5,77,61,8}并调用这两个方法,输出结果为"最大值:92,最小值:5"。程序采用循环遍历和分支判断的结构,符合题目要求。
2026-03-02 21:15:28
553
1
原创 数组元素求和与奇偶分类
该程序定义了一个sumAndClassify方法,用于计算整型数组的总和并统计奇偶数个数。在main方法中测试数组{12,5,78,9,23,44},方法内部通过循环遍历数组元素,累加总和并使用条件判断统计奇偶数。程序输出结果为:数组总和171,奇数个数3,偶数个数3。代码包含健壮性检查,处理了空数组情况,符合题目要求
2026-03-02 21:11:36
938
原创 数组元素筛选与处理
将筛选出的偶数存入一个新数组(注意:新数组长度需动态匹配偶数的个数)。要求必须使用循环结构遍历数组,分支结构判断奇偶,方法封装核心逻辑。遍历新数组,将每个偶数乘以 2 后输出。遍历数组,使用分支结构筛选出所有偶数。,接收一个整型数组。
2026-03-01 19:40:07
177
原创 数组成绩统计分析
要求使用循环结构遍历数组,使用分支结构判断成绩是否及格。统计及格(≥60 分)和不及格(<60 分)的人数。,接收一个存储学生成绩的整型数组。),调用该方法并输出所有统计结果。计算平均分(保留 1 位小数)
2026-03-01 19:32:48
304
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅