自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringBoot自动化配置原理

他会把key为org.springframework.boot.autoconfigure.EnableAutoConfiguration的所有的值都加载,得到一些全类名的列表,在启动时,会自动反射Bean并加载到spring容器中。在Spring框架中,META-INF目录下的spring文件夹和spring.factories文件都用于配置Spring框架的扩展点。(4)通过在spring.factories文件中配置这些工厂类,可以扩展Spring框架的功能和行为。

2023-09-24 23:39:30 375

原创 服务降级和熔断

当整个微服务架构整体的负载超出了预设的上限阈值或即将到来的流量预计将会超过预设的阈值时,为了保证重要或基本的服务能正常运行,可以将一些 不重要 或 不紧急 的服务或任务进行服务的 延迟使用 或 暂停使用。服务降级是从整个系统的负荷情况出发和考虑的,对某些负荷会比较高的情况,为了预防某些功能(业务场景)出现负荷过载或者响应慢的情况,在其内部暂时舍弃对一些非核心的接口和数据的请求,而直接返回一个提前准备好的fallback(退路)错误处理信息。:设置Hystrix命令的执行超时时间为2000毫秒。

2023-09-24 17:19:35 188

原创 Java常用软件默认端口号

tomcat 8080 oracle 1521 zookeeper 2181 mysql 3306 rabbitMQ 5672 redis 6379 eureka 8761 nacos 8848 kafka 9092 es 9200 rocketMQ 9876 nginx 80

2023-09-20 11:51:48 165

原创 Maven项目拆分的介绍

在当今的软件开发世界中,Maven作为一款流行的项目管理工具,为项目的构建、依赖管理和插件管理提供了强大的支持。然而,随着项目规模的扩大和复杂性的增加,单一的Maven项目可能难以有效地管理和维护。在本文中,我们将探讨Maven项目拆分的好处、方法以及可能遇到的问题,并通过实际案例进行分析和解决。其次,Maven项目拆分可以提高项目的可维护性。通过将项目拆分为多个子项目,我们可以将老的功能和新的功能分开,减少功能之间的耦合度。下面,我们将通过一个具体的案例来分析Maven项目拆分的方法及可能遇到的问题。

2023-09-18 21:39:16 221

原创 JSON字符串在Java开发中的应用与价值

【代码】FastJson中JSONObject使用方法。

2023-09-17 19:57:55 123

原创 ES介绍

Elasticsearch是一款非常强大的开源搜索引擎,能够实现在海量数据中快速检索到满足条件的数据,同时还可以实现分页、高亮显示等功能。ES实现快速搜索功能的核心概念:倒排索引。将文档的内容通过算法进行分词,得到一个词条列表;将词条列表当作key,包含该词条的文档id列表作为值,形成一张表;词条是唯一的,所以给词条创建索引,提高搜索效率;通过词条查询,得到文档ID,再通过文档ID查询到具体的文档。

2023-09-15 20:35:30 87

原创 mybatis-plus的使用

【代码】mybatis-plus的使用。

2023-09-14 22:13:53 69 1

原创 RabbitMQ存在的问题及解决方法

(2)消费者开启手动ack,或者自动ack + 重试耗尽的失败策略,定义错误交换机队列,后期通过人工进行干预,设置了重试次数。假设是消费者引起的,解决消费者代码或者临时开启多个消费者,来以倍速消费积压的消息。当积压的消息消费的差不多的情况,关闭临时消费者。消费消息出异常了,返回nack,把消息重回队列。(2)对于非幂等性操作,多次消费消息,会造成数据一致性的问题,所以要保证重复消费消息的问题,如何解决?生产者生产消息的速度 远高于 消费者消费消息的速度?4、消费者收到消息,还没消费,消费者宕机。

2023-09-13 20:37:26 1020

原创 RabbitMQ介绍和使用

它有五种模式分别是Simple、WorkQueue、Fanout、Direct、 Topic。RabbitMQ是由Rabbit公司基于Erlang语言开发的,支持多协议的、性能优秀的消息队列产品。prefetch: 1 # 每次只能获取一条消息,处理完成才能获取下一个消息。通过交换机,通过路由key的精确名称把消息路由到队列,实现群发。通过交换机,通过路由key的部分名称把消息路由到队列,实现群发。password: # 密码。通过交换机,把消息路由到队列,实现群发。host: # 主机名。

2023-09-13 20:00:59 40

原创 Docker命令介绍

实现步骤:1、上传资料中的 docker-demo.jar 到服务器2、编写 Dockerfile文件3、构建镜像4、运行容器5、测试浏览器访问例: http://192.168.138.100:8888/hello/count。

2023-09-11 17:26:40 98

原创 关于分布式框架和微服务的介绍

当然集体未必就总是好的,人多力量大的同时,也带来了很多问题。SpringCloud,基于SpringBoot提供了一套微服务解决方案,包括服务注册与发现, 配置中心,全链路监控,服务网关,负载均衡,熔断器等组件,除了基于NetFlix的开源组件做高度抽象封装之外,还有一些选型中立的开源组件。Eureka 是Spring Cloud 微服务框架默认的也是推荐的服务注册中心, Nacos是阿里巴巴最新开源的项目,提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

2023-09-10 20:59:16 159 1

原创 无状态登录和有状态登录

当涉及到用户身份验证和授权时,有两种常见的登录方式:无状态登录和有状态登录。

2023-09-05 22:59:31 245 1

原创 关于Java中主键回填技术的介绍

主键回填是一种技术,用于在插入数据时,如果主键是自动生成的,那么在执行插入操作后,可以使用该技术将自动生成的主键值填回到相应的位置。在增删改查操作中,通常需要主键回填的是插入(新增)操作。主键回填是指在插入数据后,将自动生成的主键值回填到对象或参数中,以便后续使用。而非自增主键回填则比较复杂,需要数据库支持特定的存储过程或触发器等机制,在数据插入后自动将生成的主键值存入相应的位置。主键回填的作用主要是为了在插入数据的同时获取到生成的主键值,以便后续的查询和使用。在插入数据后,可以通过调用。

2023-09-04 17:57:43 264 1

原创 Linux操作系统基本命令入门指南

对于初学者来说,Linux操作系统可能会显得复杂且难以理解。然而,熟悉基本命令可以帮助你更好地理解和使用Linux。这篇文章将为初学者介绍一些基本的Linux命令,让你快速入门。在Linux系统中,一切皆文件。

2023-09-03 20:05:11 41

原创 关于java业务层是否抛异常

在业务层中,处理异常是一种良好的编程实践。以下是一些关于业务层异常处理的重要事项:异常处理的目的是提高系统的可靠性和稳定性。通过捕获和处理异常,可以避免系统崩溃或产生不可预料的错误。在业务层中,应该根据具体的业务需求和逻辑来决定是否处理异常。有些异常可能需要立即处理,有些异常可能需要记录日志并继续执行,有些异常可能需要向用户显示错误信息。异常处理应该遵循适当的错误处理机制,例如使用try-catch语句来捕获异常,并在catch块中进行适当的处理,或者定义一个全局异常处理器都是不错的办法。

2023-09-03 19:36:33 164

原创 @Transaction注解的应用

编程式事务需要手动编写事务管理代码,对事务的控制更加灵活,但也更加繁琐。- 声明式事务通过注解来实现事务管理,简化了事务管理的代码,提高了开发效率,但对事务的控制相对较少。- 声明式事务更适合简单的事务场景,而编程式事务适用于复杂的事务场景或需要更细粒度控制的情况。

2023-09-02 21:37:29 423

原创 finalize()方法的使用

然后,通过调用System.gc()方法请求垃圾回收。在这个示例中,当垃圾回收器运行时,会打印出"finalize()方法被调用"的消息。需要注意的是,finalize()方法并不是Java中的析构函数,它只是一个提供给开发者进行资源清理操作的方法。在实际开发中,应尽量避免使用finalize()方法来进行资源清理,而是使用try-finally或try-with-resources语句块来确保资源的正确释放。当垃圾回收器确定某个对象没有被引用时,它会调用该对象的finalize()方法来进行清理。

2023-08-29 21:28:57 295 1

原创 Redis在商城中的应用和实现代码

购物车是商城中常见的功能之一,用户可以将商品添加到购物车中,并随时查看和修改购物车中的商品。在商城中,Redis可以发挥重要作用,提供快速的数据访问和高并发的支持。数据库单点故障:如果商城只依赖一个数据库,那么数据库的故障将导致整个系统不可用。为了提高可用性,通常需要进行数据库的备份和冗余部署,增加了系统的复杂性和成本。数据库连接开销:每次与数据库建立连接都需要进行网络通信和身份验证等操作,这会导致一定的开销。然而,数据库的扩展通常需要进行硬件升级和数据迁移等操作,比较复杂和耗时。

2023-08-25 23:34:27 114 1

原创 Java三层架构的介绍

在Java开发中,三层架构是一种常见的软件设计模式,它通常用于分离应用程序的不同功能,使其变得更可维护和可重用。下面我们将详细介绍Java三层架构的概念、优点、应用场景及其在软件开发中的应用价值。Spring是一个流行的Java开发框架,它以IoC(控制反转)和AOP(面向切面编程)为主要思想,提供了一个完整的Java开发框架。总之,Spring是一个全面的Java开发框架,可以应用于三层架构中的各个层次。通过Spring的IoC和AOP技术,可以降低代码的耦合度,提高应用程序的模块化和可维护性。

2023-08-24 23:54:39 418 1

原创 对于Redis的认识与了解

Redis(Remote Dictionary Server,即远程字典服务)是一个高性能的键值对存储系统,通常被认为是内存数据库,因为其主要数据存储在内存中,而不是在磁盘上。它支持存储的键值类型相对较多,包括字符串、列表、集合、有序集合和哈希表,而且这些数据类型都支持丰富的操作。

2023-08-23 22:06:13 26

原创 对于Redis的认识和了解

Redis(Remote Dictionary Server,即远程字典服务)是一个使用ANSI C语言编写的开源、包含多种数据结构、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被用作内存数据结构服务器,因为它可以保持数据在断电或重启后不会丢失。Redis支持存储的键类型包括字符串、列表、集合、有序集合和哈希表等。此外,Redis还具有单进程单线程模型、丰富的数据类型和持久化选项、高并发读写、分布式配置等亮点。

2023-08-23 22:04:38 30

原创 关于Spring和SpringBoot的介绍

Spring全称 Spring Framework,其功能有:IOC-控制反转,轻松实现层间解耦AOP- 面向切面编程,轻松实现公共代码抽取MVC - 开发web应用程序事务 - 无需编写代码,即可实现数据库事务管理测试 - 与测试框架集成、web 单元测试SpringMVC将Servlet一些通用功能进行了抽取和封装,使用它之后,代码主要有两部分组成:SpringBoot最主要作用就是帮我们快速的构建庞大的spring项目,并且尽可能的减少配置,让程序员去关注业务而非配置。

2023-08-21 21:27:22 94 1

原创 关于AOP的介绍和使用

在运行时,AOP框架会自动生成代理对象,将切面逻辑织入到目标对象的方法中,实现对方法的增强和修改。性能监控:AOP可以用于实现性能监控功能,例如在方法调用前记录方法的开始时间,在方法调用后记录方法的结束时间,并计算方法的执行时间。例如,可以在方法调用前记录方法名和参数,以及在方法调用后记录方法的返回值。日志审计:AOP可以用于实现日志审计功能,例如在方法调用前记录用户的操作,包括操作的类型、时间和操作的对象等。具体来说,它通过AOP的方式,在这些方法执行前后添加额外的逻辑,实现对方法的拦截和处理。

2023-08-20 20:41:18 1119 1

原创 关于ThreadLocal的认识和使用方法

ThreadLocal是Java中的一个线程局部变量类。它提供了一种在多线程环境下保持变量的副本的机制。每个线程都可以独立地修改自己的副本,而不会影响其他线程的副本。在多线程编程中,如果多个线程共享同一个变量,可能会导致线程安全问题。而使用ThreadLocal可以为每个线程创建一个独立的副本,每个线程只能访问自己的副本,从而避免了线程安全问题。:设置当前线程的副本值。T get():获取当前线程的副本值。:移除当前线程的副本值。:返回当前线程的初始副本值,默认返回null。

2023-08-18 21:39:53 72

原创 Spring全局异常处理

通过合理地使用全局异常处理,我们可以更好地处理应用程序中的异常情况,提高用户体验,方便问题的定位和排查。在全局异常处理类中,我们可以定义多个方法,每个方法可以处理不同类型的异常。它可以捕获应用程序中发生的所有异常,并进行统一的处理,如记录异常日志、返回友好的错误信息等。2. 提升用户体验:通过返回友好的错误信息,我们可以提高用户对应用程序的满意度,让用户了解异常的原因,并给出相应的解决方案。3. 方便问题定位和排查:通过记录异常日志,我们可以方便地定位和排查应用程序中的问题,快速找到异常的根本原因。

2023-08-17 16:04:13 350

原创 拦截器和过滤器

总结: 拦截器和过滤器都可以用于实现登录校验,但在实现上有一些不同。拦截器是基于AOP思想实现的,只能拦截Controller层的请求,可以获取到Controller方法的参数和返回值;过滤器是基于Servlet规范实现的,可以拦截所有的请求,但不能获取到Controller方法的参数和返回值。拦截器和过滤器是在Java Web开发中常用的两种实现登录校验的方式。//4.走到这行一定不是登录,获取请求头的token (令牌)// 6 解析token,如果解析失败,返回前端未登录。//2.获取请求url。

2023-08-15 21:37:18 34

空空如也

空空如也

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

TA关注的人

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