拷贝集合

2023-12-04
阅读 2 分钟
559
在 Java 中,如果你想拷贝一个集合(例如,List、Set 或 Map),你有几种不同的选项,取决于你的需求和使用场景。浅拷贝:浅拷贝创建了一个新的集合对象,但仅复制了原始集合中的引用,而不是实际的元素。Java 提供了 clone 方法来实现浅拷贝。 {代码...} 深拷贝:深拷贝创建了一个新的集合对象,并且复制了原始集合中的...

为什么使用消息队列?

2023-10-06
阅读 2 分钟
425
先说一下消息队列常见的使用场景吧,其实场景有很多,但是比较核心的有 3 个:解耦、异步、削峰。解耦看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃......在这个场景中,A 系统跟其它各种乱七八糟的系统严重耦合,A ...

Kafka消费分组和分区分配策略

2023-10-05
阅读 3 分钟
848
同一个消费组里的消费者不能消费同一个分区,不同消费组的消费组可以消费同一个分区(即同一个消费组里面的消费者只能在一个分区中)Kafka分区分配策略问题

全局异常拦截

2023-10-04
阅读 9 分钟
831
在 Spring Boot 中,可以通过使用 @ControllerAdvice 注解和 @ExceptionHandler 注解来实现全局异常拦截。

CAS是什么?

2023-09-24
阅读 1 分钟
1.1k
悲观锁是将资源锁住,等一个之前获得锁的线程释放锁之后,下一个线程才可以 访问。而乐观锁采取了一种宽泛的态度,通过某种方式不加锁来处理资源,比如 通过给记录加 version 来获取数据,性能较悲观锁有很大的提高。 CAS 是 compare and swap 的缩写,即我们所说的比较和交换。 cas 是一种基于锁的操作,是乐观锁的一个...

页面跳转的两种方式(转发和重定向)区别及应用场景分析

2023-09-22
阅读 3 分钟
2.2k
作为一名java web开发的程序员,在使用servlet/jsp的时候,我们必须要知道实现页面跳转的两种方式的区别和联系:即转发和重定向的区别。

延迟队列技术的选择

2023-09-20
阅读 3 分钟
1.3k
在我们日常生活中,我们可以发现:在淘宝、京东等购物平台上下单,超过一定时间未付款,订单会自动取消。打车的时候,在规定时间没有车主接单,平台会取消你的单并提醒你暂时没有车主接单。点外卖的时候,如果商家在10分钟还没接单,就会自动取消订单。收快递的时候,如果我们没有点确认收货,在一段时间后程序会自动完...

spring配置

2023-09-19
阅读 2 分钟
686
什么是 JavaConfig? Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于:(1)面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利用 Java 中的面向对象功能。一个配置类可以继承另一个,重写它...

RBAC权限管理

2023-09-18
阅读 4 分钟
1.2k
RBAC(Role-Based Access Control)是一种常用的权限管理模型,它基于用户角色来控制系统中的资源访问。在实际应用中,我们通常会使用Spring Security框架来实现RBAC权限管理系统。RBAC的概念和原理

volatile关键字

2023-09-17
阅读 1 分钟
468
volatile volatile 关键字的作用 对于可见性,Java 提供了 volatile 关键字来保证可见性和禁止指令重排。volatile 提供 happens-before 的保证,确保一个线程的修改能对其他线程是可见的。当一个共享变量被 volatile 修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。从实践...

Feign工作原理

2023-09-15
阅读 1 分钟
400
主程序入口添加了@EnableFeignClients 注解开启对 FeignClient 扫描加载处理。根据Feign Client 的开发规范,定义接口并加@FeignClient 注解。当程序启动时,会进行包扫描,扫描所有@FeignClient 的注解的类,并且讲这些信息注入 Spring IOC 容器中,当定义的的 Feign 接口中的方法被调用时,通过 JDK 的代理方式,来生...

RabbitMQ的一些概念

2023-09-14
阅读 1 分钟
374
概念:管道是生产消费者与rabbit通信的渠道,生产者publish或是消费者subscribe一个队列都是通过信道来通信的。信道是建立在TCP连接上的虚拟连接,什么意思呢?就是说rabbitmq在一条TCP上建立成百上千个信道来达到多个线程处理,这个TCP被多个线程共享,每个线程对应一个信道,信道在rabbit都有唯一的ID ,保证了信道私有...

如果mq消费失败了,那消息还会自动签收吗

2023-09-12
阅读 8 分钟
626
在介绍消息中间件 MQ 之前,我们先来简单的了解一下,为何要引用消息中间件。 例如,在电商平台中,常见的用户下单,会经历以下几个流程。 当用户下单时,创建完订单之后,会调用第三方支付平台,对用户的账户金额进行扣款,如果平台支付扣款成功,会将结果通知到对应的业务系统,接着业务系统会更新订单状态,同时调用...

springmvc解决跨域问题

2023-09-11
阅读 2 分钟
1.2k
写在前面跨域问题并不是spring特有的,本文简要的介绍跨域问题的来龙去脉,以及 spring处理跨域问题的两种方式。1.什么导致了跨域浏览器的同源策略导致了跨域问题。1.1 同源策略同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。同源的定义:如...

如何使用RequiredArgsConstructor注解

2023-09-10
阅读 2 分钟
2.1k
@Autowired的注入过多,这一般没什么问题,因为注入的字段是有限的。但是业务代码,不加注释,单文件长度超过 2000 行的比比皆是。注入的属性能达到十几个之多。这部分注入代码真是脏乱差。不仅如此,这些字段,还会在 IDE 里变成灰色,告诉你未被初始化,代码变成了丑八怪。事实上,Spring 从 4.0 开始, 就 不 推 荐 使...

Spring-Cloud-Gateway 网关之我见

2023-09-10
阅读 14 分钟
1.1k
一、概述   在Spring-Cloud-Gateway之请求处理流程中最终网关是将请求交给过滤器链表进行处理。   核心接口:GatewayFilter,GlobalFilter,GatewayFilterChain。   

微服务粗略

2023-09-08
阅读 2 分钟
734
我们之前写的代码和项目都是单体架构:就是将业务的所有功能集中在一个项目中开发,打成一个包部署。单体项目的结构很简单,而且部署成本低,但是代码都纠缠在一起,所以耦合度很高。

RestTemplate使用

2023-09-06
阅读 2 分钟
908
RestTemplate 支持所有 Restful 风格方法,你可以根据需要进行选择,这里我们只介绍一些常用的方法。所有方法都支持URI 模板和URI参数,支持下面这种写法:

依赖注入的三种方式

2023-09-05
阅读 2 分钟
1.1k
对于Spring配置一个bean时,如果需要给该bean提供一些初始化参数,则需要通过依赖注入方式,所谓的依赖注入就是通过Spring将bean所需要的一些参数传递到bean实例对象的过程Spring的依赖注入有3种方式:

时间复杂度简述

2023-09-04
阅读 2 分钟
951
时间复杂度(1)时间频度 一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就...

Linux命令

2023-09-03
阅读 2 分钟
838
ip addr:查看IPpwd:查看当前所在目录shutdown -h now:立即关机reboot :重启ping ip或域名:查看网络是否OKctrl + c:强制结束占用窗口的命令top:查看内存情况kill -9 pid:强制杀死指定进程ps -ef | grep -i 进程名字:查看进程运行信息 '|'是管道命令clear:清屏history:查看历史命令-->!历史命令编号:执行历史命令具体命...

多线程

2023-09-02
阅读 1 分钟
1.1k
什么要使用多线程?先从总体上来说:从计算机底层来说: 线程可以比作是轻量级的进程,是程序执行的最小单位,线程间的切换和调度的成本远远小于进程。另外,多核 CPU 时代意味着多个线程可以同时运行,这减少了线程上下文切换的开销。从当代互联网发展趋势来说: 现在的系统动不动就要求百万级甚至千万级的并发量,而多线...

Spring Task是什么

2023-08-28
阅读 1 分钟
860
1.Spring Task是什么?Spring Task是Spring框架中用于处理定时任务的模块。它允许代码在特定的时间间隔或者指定的时间点执行任务。我们可以通过配置注解或者使用XML文件来定义和管理定时任务。

Spring,Spring MVC,Spring Boot 有什么用

2023-08-27
阅读 1 分钟
781
Spring是什么?Spring是一个轻量级的Java开发框架,它提供了很多方便的功能和特性,比如依赖注入(DI)、面向切面编程(AOP)、事务管理等。通过Spring,我们可以更加高效地开发和管理Java应用程序。

String、StringBuffer、StringBuilder 的区别?

2023-08-26
阅读 1 分钟
824
String 是不可变的。StringBuilder 与 StringBuffer 都继承自 AbstractStringBuilder 类,在 AbstractStringBuilder 中也是使用字符数组保存字符串,不过没有使用 final 和 private 关键字修饰,最关键的是这个 AbstractStringBuilder 类还提供了很多修改字符串的方法比如 append 方法.

Redis的序列化

2023-08-23
阅读 1 分钟
814
使用Redis存储一些缓存非常的方便,运行效率也很高,但是当我们储存的时候会发现一个现象,存储进去的键会自动的添加上一串前缀,这其实是keySerializer和valueSerializer默认的序列化方案是使用的JdkSerializationRedisSerializer.使用jdk序列化字符串当然会更具有安全性,但是相对应的也损失了一些性能.而对于我们大多数情...

锁住线程

2023-08-21
阅读 1 分钟
666
当多个线程几乎同时修改一个共享数据的时候,需要进行同步控制,线程同步能够保证多个线程安全的访问竞争资源(全局内容),最简单的同步机制就是使用互斥锁。

SpringAOP能干什么

2023-08-19
阅读 1 分钟
1.1k
AOP(Aspect Orient Programming),直译过来就是面向切面编程,AOP是一种编程思想,是面向对象编程(OOP)的一种补充。面向切面编程,是再不修改源代码的情况下给程序动态统一添加额外功能的一种技术.AOP可以拦截指定的方法并且对方法增强,而且无需侵入到业务代码中,使业务与非业务处理逻辑分离,比如Spring的事务,通...