- 博客(65)
- 收藏
- 关注
原创 基于SpringBoot实现WebSocket实时通讯的服务端和客户端
实现服务端注册的客户端的列表;服务端向客户端发送广播消息;服务端向指定客户端发送消息;服务端向多个客户端发送消息;客户端给服务端发送消息;
2024-03-20 10:10:07 428
原创 数据库设计的三范式
数据库设计的范式,数据库设计的三范式。第一范式(1NF):字段不可再拆分第二范式(2NF):表中任意一个主键或者任意一组联合主键,可以确定除该主键外的所有非主键值第三范式(3NF):在任意主键都可以确定非主键值的情况下,不能存在通过某非主键字段A还可以获取到某非主键字段B。
2024-03-15 11:07:25 387
原创 for、foreach、stream循环性能比较
for、foreach、stream都可以循环处理数据,如果单纯当循环使用,for、foreach、stream哪个性能更好?
2024-01-29 10:27:48 587 1
原创 下载大文件时内存溢出情况分析解决
下载小文件没有问题,在超过100M左右时会报错`org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space`;
2024-01-26 13:38:31 590
原创 重构第十二章:大型重构 and结语
至此这本书就这样草草结束了,后面肯定是还会来刷第二遍、第三遍的,在这一次的阅读中,我基本上只是快速的找手法,对深入理解可能还有欠缺,尽管如此,我还是深感收获颇丰,对代码重构这一看似琐碎而实则深具影响力的技术有了更深刻的理解。首先,本书以通俗易懂的语言阐释了代码重构的核心理念和基本原则,使得这个看似复杂的主题变得亲切而易于理解。通过“马老师”的引导,我逐渐认识到重构并非只是修补 bug 或优化代码,更是一种有组织、有策略的代码演进方式。
2023-12-29 09:45:27 535
原创 重构第十一章:处理概括关系
第十一章系统介绍了一系列处理概括关系的重构手法,旨在优化继承关系和其他类型的概括关系,提高代码的可维护性和可读性。在使用这些技巧时,要根据实际情况选择最适合你的方法,确保代码清晰易懂,确保代码的质量和可维护性。解决方法:将相似的属性和方法提取到一个超类中,让多个类都能继承这个超类。解决方法:将只有某个子类使用的方法移到该子类中,使得方法更加局部化。解决方法:将只有某个子类使用的字段移到该子类中,使得字段更加局部化。问题:子类的逻辑只是调用了父类的方法,没有实际的扩展。问题:父类中的方法只有某个子类使用。
2023-12-27 09:45:38 690
原创 Spring常用注解详解(三)
当一个方法被标注为 @Transactional 时,Spring 将为该方法开启一个事务,并在方法执行完成后提交事务,或在方法执行过程中发生异常时回滚事务。通过将 @Async 注解标记在方法上,Spring 将会在调用该方法时,启动一个新的线程来执行方法体,从而实现异步执行。异步方法的返回值类型通常是 void,因为调用者无法直接获取异步方法的返回结果。在上述例子中,performAsyncOperation 方法被标注为 @Async,表示该方法应该在一个独立的线程中异步执行。
2023-12-27 09:44:13 799
原创 重构第十章:简化函数调用
当我们编写软件时,代码的可读性和可维护性是至关重要的。第十章介绍了一系列精妙的方法,旨在简化函数调用,使得我们的代码更易读、更易维护。
2023-12-22 09:49:22 340
原创 重构第九章:简化条件表达式
在应用这些手法时,要根据具体的情况选择合适的手法,确保代码的质量和可维护性。以策略取代条件表达式(Replace Conditional with Strategy): 多个条件表达式根据相同的条件选择不同的行为时,将条件表达式替换为策略模式,每个策略对象实现不同的行为。合并重复的条件片段(Consolidate Duplicate Conditional Fragments): 多个条件片段执行相同的操作时,将重复的条件片段合并为一个条件片段,避免重复代码。
2023-12-21 14:36:01 384
原创 Spring常用注解详解(二)
在上述例子中,@ModelAttribute(“currentUser”) 注解被用于标注 getCurrentUser 方法的返回值,表示将方法返回的 User 对象放入模型中,属性名为 “currentUser”。在上述例子中,@InitBinder 注解被用于标注 initBinder 方法,该方法接收一个 WebDataBinder 参数,通过该参数可以注册自定义的数据编辑器,如上例中的日期编辑器。它可以用在方法上,标识一个方法为初始化绑定器的方法,用于自定义数据绑定的规则。
2023-12-20 15:00:59 888
原创 重构第八章:重新组织数据
以多态取代条件表达式(Replace Conditional with Polymorphism): 使用条件表达式来选择不同的行为时,使用多态将条件表达式替换为具体的子类,以实现更清晰的逻辑。以对象取代数组(Replace Array with Object): 使用数组表示一组相关的数据时,创建一个对象,将数组替换为对象的字段,使得数据更易于扩展和维护。在这一章作者详细的介绍了一系列的重构手法,旨在优化代码中的数据组织方式,以提高代码的清晰度、可读性和可维护性。
2023-12-20 09:52:19 385
原创 SpringSecurity自定义Filter、自定义FilterChain以及FilterChain的匹配
SpringSecurity怎么自定义Filter、怎么自定义FilterChain以及怎么实现FilterChain的匹配
2023-12-20 09:51:11 2349
原创 Git的rebase和merge合并代码的区别
git的中rebase和merge都可以合并代码,那他们有什么相同和不同呢?本文来一次说清楚、说明白
2023-12-18 16:57:21 553
原创 重构第七章:搬移特性
搬移函数至委托类(Move Method to Delegate): 如果一个函数对于某个类的委托而言更有意义,就在委托类中创建方法,并在原类中使用委托来调用委托类的方法。搬移函数至服务类(Move Method to Service): 如果一个函数对于某个服务类而言更有意义,就在服务类中创建方法,并在原类中使用服务类来调用服务类的方法。字段的提炼(Extract Field): 如果一个类中某个字段的责任变得过多,就创建一个新的类,将相关的字段移至新类中,然后在原类中使用新类的实例。
2023-12-18 16:44:35 681
原创 重构第六章:重构API
解决方法: 将向下转型的操作封装在一个函数中,使得API不再直接依赖于具体的实现。解决方法: 将带有参数的函数替换为多个明确的函数,每个函数对应一个可能的参数值。解决方法: 引入一个特殊的Null对象,代表缺失的对象,避免返回null。解决方法: 将函数封装成一个命令对象,以更灵活地扩展和组合不同的逻辑。解决方法: 将这组原始数据封装成一个对象,提高参数的表达力和可读性。解决方法: 使用工厂函数创建对象,允许在创建时进行更多的逻辑操作。问题: 使用一个参数控制函数的行为,而这个参数可能有多个取值。
2023-12-18 14:51:09 671
原创 重构第五章:重构的方法
在软件开发的舞台上,重构是一场不断进化的演变。为了优化、提升代码的质量,我们需要掌握各种重构的细致技法。以下是书中本章详细介绍的重构手法,它们为我们提供了一系列实践的方法,助力代码保持清晰、可读、可维护。每个手法都有其特定的应用场景,我们可以根据实际情况选择合适的手法进行应用~~~~~太多了,就当笔记吧,散会。
2023-12-12 13:59:58 527
原创 重构第四章:构建测试体系
在构建测试体系的过程中,不仅要注重全面性,还要注重测试的更新和维护,以应对代码变更带来的挑战。通过持续关注测试质量,我们能够在重构的道路上越走越远,如果你是刚入行的新同学,那如果前辈们有漏掉的螺丝,最后都是你补的~所以你一定要时刻盯紧测试哦。在有限的时间和资源下,聚焦于最为核心和关键的功能,犹如船队中的旗舰,为代码的稳定性提供坚实的保障。同时,确保测试的全面性是不可或缺的,覆盖各种情况,包括正常场景和边缘案例,是发现潜在问题的有力武器。随着代码的变迁,测试也需要时刻保持同步,以确保其与代码的一致性。
2023-12-08 15:15:00 770
原创 Spring常用注解详解(一)
在最新版本的 Spring 中,@RequestMapping 已经被 @GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping 等更具体的注解取代,以提高代码的可读性和简洁性。在上面的例子中,@RequestMapping 注解在类级别上定义了 “/example”,因此所有该类中的处理方法的路径都会以 “/example” 作为前缀。在处理成功和失败的情况时,使用该注解可以提供清晰的标识,使得代码更易于维护和理解。
2023-12-08 10:41:29 814
原创 重构第三章:代码的坏味道
希望你下次看见代码不知道好坏的时候可以来参照参照我这个文章,在进行代码重构的过程中,认识和解决这些坏味道将有助于提高代码质量、可读性和可维护性。同学们,快去检查一下自己的代码吧,也许正等着你的是一次精彩的重构之旅,跟打扫卫生一样舒服的那种~在这一章,我们会跟着“马先生”深入探讨代码中那些令人不安的坏味道,这些迹象提示着潜在的问题,可能都需要进行重构。我本身是个很爱干净的人,受不了一点儿坏代码的那种,以下是我整理的书中的一系列常见的坏味道及其对应的解决方法。
2023-12-08 10:24:29 397
原创 重构第二章:重构的原则
作者提到,当你感觉到需要注释解释代码时、发现坏味道(Bad Smells)、准备修复Bug时,这些都是进行重构的好时机。此外,随着项目的不断演进,逐渐学会在哪里以及何时进行重构也是至关重要的。安全的重构意味着在重构过程中不改变系统的外部行为。小步骤重构是实现安全重构的一种方式,它确保每个小步骤都是安全的。学会重构是一个渐进的过程。通过小步骤的重构,你可以逐渐培养出对重构的感觉和技能。作者还提到,实际的实践经验是学习重构最为关键的一部分。一顶是“添加新功能”的帽子,另一顶是“重构”的帽子。
2023-12-05 17:11:29 633
原创 重构第一章:引言
重构不仅仅是代码的调整,更是一种系统化的、有目的的改进过程。作者Martin Fowler明确定义了重构:在不改变软件系统外部行为的前提下,通过调整其内部结构,提高其可读性、可维护性和扩展性。通过频繁小步骤的重构,我们可以保持系统的可工作状态,同时不断改进代码。强调了代码的质量和设计在软件开发中的关键作用。良好的代码设计不仅仅关乎功能的实现,还关系到代码的可维护性和可理解性。通过一个简单的示例展示了重构的过程。本章奠定了重构的基本概念,为深入后续章节的重构技术打下了坚实基础。3.代码的质量和设计。
2023-12-05 15:33:05 542
原创 《重构:改善既有代码的设计(第2版)》起始
《重构》不仅是一本书,更是一种软件开发的理念。我是按照我们一个领导、前辈的推荐来读这本书的;它引导我们通过小步骤的方式,不断地调整代码,以适应变化的需求。在这个过程中,书中详细介绍了各种重构技术,从简单的函数提炼到复杂的重构手法,一步步为我们展开了代码改善的大门。《重构:改善既有代码的设计(第2版)》为我们打开了代码优化的大门,通过深入学习和实际应用,我们能够在不断变化的软件开发世界中更加从容地应对挑战。希望通过这次学习,能够在我们的项目中创造出更加清晰、灵活的代码结构,提升整体开发效率。
2023-12-04 13:51:14 388
原创 IDEA在service面板中不显示微服务的项目
在.idea文件夹下的workspace文件中的project标签内添加如下代码段,,重启idea即可看到所有服务出现在了service面板中。
2023-11-01 09:45:31 1533
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人