- 博客(22)
- 收藏
- 关注
原创 微服务相关问题(2)
xxl-job的路由策略:大概有十种:轮询、随机、第一个(固定找第一个实例执行)、最后一个(固定找最后一个实例执行)、一致性hash(按照hash算法固定选择某一个实例,且所有任务均匀散列在不同实例上)、最不经常使用、最近最久未使用、故障转移(当去执行的实例出现故障,则选择新的健康的实例去执行)、忙碌转移、分片广播。注册中心(nacos、Eureka等)、负载均衡(Ribbon、LoadBalancer)、远程调用(feign)、服务熔断(Sentinel、Hystrix)、网关(Gateway)
2025-07-16 16:07:43
807
原创 springboot使用@Validated不起作用
对于嵌套对象,需要在嵌套对象的属性上添加 @Valid 注解。特别是在嵌套校验是需要使用@Valid进行触发嵌套校验。最后,Spring-Validate拓展。我们一般在全局处理器去捕获并抛出。4、全局异常处理器是否有添加。精确异常类型优先(如。1、检查是否有引依赖。(方法参数校验失败)
2025-07-12 18:33:13
307
原创 java相关框架(Spring、mybatis)的相关基础
AOP面向切面编程:用于将那些与业务无关,但对多个对象产生影响的公共行为和逻辑,抽取并封装为一个可重用的模块,这个模块成为切面(Aspect),减少系统中的重复代码,降低了模块间的耦合度,同时提高了系统的可维护性。一般在spring的bean中都是注入无状态的对象(像,service、dao),没有线程安全问题,如果在bean中定义了可修改的成员变量,是要考虑线程安全问题,可以使用多例或者加锁来解决。在Spring框架中我们可以用注解@Scope来设置bean是否是单例的,如果不设置默认是单例的。
2025-06-16 09:36:05
566
原创 Mysql常见问题
并发事务问题:脏读(一个事务读到另外一个事务未提交的数据)、不可重复读(一个事务先后读取同一条记录,但两次读取的数据不同)、幻读(一个事务按条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了幻影):主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),以一定频率刷新到磁盘,从而减少磁盘IO,加快处理速度。使用Id查询,直接走聚集索引,一次索引扫描,直接返回数据,性能高。
2025-06-11 15:31:27
792
原创 线程基础相关问题
其中,Owner是存储当前获取锁的线程的,只能有一个线程可以获取。还有一个VisualVM工具(故障处理工具,还是在java安装目录下的bin目录下的jvisualvm.exe),也能够监控线程、内存情况,查看方法的CPU时间和内存中的对象,已被GC的对象,反向查看分配的堆栈。一个线程需要同时获取多把锁,这时候就容器产生死锁(例如,在a线程中,你先要获取c锁,再去获取d锁,而这个时候恰好有一个线程是先获取d锁,在获取c锁,这个时候,线程a持c锁等d 锁,而另一个线程持d锁等c锁导致死锁产生)。
2025-06-03 15:00:25
606
原创 java集合框架常见问题
线程一先将a移入新链表,再将b插入到链头,由于另外一个线程的原因,b的next指向了a,所以b->a->b,形成循环。ArrayList底层是用动态数组实现的,ArrayList的初始容量为0,当第一次添加数据的时候才会初始化容量为10,在进行扩容的时候是原来容量的1.5倍,每次扩容都需要拷贝数组。在jdk1.7中HashMap的数据结构是数组+链表,在链表进行扩容时,因为链表是头插法,在进行数据迁移的过程中有可能导致死循环。线程一:读取当前的HashMap数据,数据中一个链表,在准备扩容时,线程二介入。
2025-05-28 17:15:00
1176
原创 Redis分布式锁、集群相关以及其他相关问题
这里介绍一下redisson实现的机制(基于lua脚本完成):线程来了过后就会去加锁,加锁成功后就可以去执行业务,在加锁成功的同时会另开一个线程(看门狗)进行监控,每隔(过期时间/3)的时间做一次续期(例如过期时间是30秒,每隔10秒就会去给锁续期一次)。脑裂问题:在哨兵模式下,因为一些原因(像网络分区)等原因,哨兵检测不到主节点后,会客观认为主节点下线,然后从从节点中选取一个主节点。这个时候就出现了两个主节点问题,当故障恢复后,原先的主节点降为从节点,这时再从新主节点去同步数据,就会导致数据丢失。
2025-05-26 15:21:27
906
原创 微服务保护中的一些问题
如果在相邻的时间跨度中,前一个时间跨度的后一半和后一个时间跨度的前一半(例如时间跨度为1s,阈值为4,前一个时间跨度的最后500ms进来了4个请求。顾名思义令牌桶也是有一个桶,不过这里的桶不再装请求,而是装令牌(这里的令牌是某个程序以固定的速率生成令牌,如果令牌桶满了,停止生成。这里的令牌就类似于门禁卡)请求来的时候先从令牌桶中获取令牌,获取到令牌后才能被处理。Hystix默认是基于线程池实现的线程隔离,每一个被隔离的业务都要创建一个独立的线程,线程过多会带来额外的开销,性能一般,但是隔离性更强。
2025-05-20 10:52:51
665
原创 redis底层问题合集
由于lfu策略是后面引入的,如果使用lfu策略Redis就将这个lru属性的高16位用来记录最近一次访问时间。低8位用来记录逻辑访问次数(注意是逻辑访问次数,不会在每次访问都去计数,这里是通过运算去实现的。在redis里面,通过RedisDB结构体(内部有两张hash表)一张hash表记录的是原始的key、value数据。读操作:缓存命中直接返回,缓存未命中则查询数据库,并写入缓存,设置过期时间。会统计每个key的访问频率,值越小淘汰优先级越高。定期清理:定期抽样部分key,判断是否过期,如果过期则删除。
2025-05-16 14:36:57
527
原创 Redis主从集群部署
内容如下(这里没有网络使用的是host,即直接使用宿主机的网络,这里也没有做端口映射。暴露的端口所以不用映射,直接就是宿主机的端口,所以要特别注意端口占用问题。我们会发现,主节点新增的数据,不管哪个节点都能拿到。1、先在虚拟机中创建一个任意名字文件夹(我使用的是mobaX,所以不用命令),大家没使用的可以使用mkdir命令。5、我们可以使用以下命令在宿主机上找到我们启动的Redis进程,也进一步说明了,yml文件的东西。7.1r3成r1的从节点(建立连接,输入slaveof命令指定主的ip+端口)
2025-05-14 16:26:40
188
原创 Elasticsearch与Kibana的虚拟机部署和在Kibana可视化界面进行对Elasticsearch的基础操作
这里就截个图看看界面,就不一一去运行截图了。大家对这种格式不理解的,还得去学习一下Elasticsearch的json数据格式,倒排索引,以及他的基本数据类型,还有就是mapping规则等,这里就不做说明了。到这里篇幅有限,也就介绍完成了用Kibana去调Elasticsearch的Api的基础用法。没问题,就去访问虚拟机IP+9200端口,出现以下页面代表Elasticsearch部署成功。1、这里部署涉及到docker容器中的通信,所以这里我们首先使用命名创建一个网络,这里我创建的是Es。
2025-05-07 18:57:13
295
原创 RabbitMQ的部署以及基础使用
这里也是默认名称必填,填完名称后将就可以点击Add,但是这里还是有必要说明一下,type类型可以选择你想要的交换机类型,RabbitMQ有四种类型的交换机,fanout、direct、topic、headers。1、RabbitMQ的部署,这里部署到docker容器内,这里的用户名密码,名字,端口以及RabbitMQ的版本都可以自己指定。在我们增加完后,我们在上面列表找到刚才新增的交换机,点击名称进入如下图。这里创建完队列后,我们再去创建一个交换机,并绑定到刚才创建的队列上。(如日志分类、动态路由)、
2025-04-28 17:05:00
1089
原创 centos7中ens33没有显示出来,ipv4 ip 没有正确显示的问题。
可以使用ip link show 来查看一下ens33的状态。这里发现是down。但是这次解决了,下次又得重新启动,有没有更好的解决方法呢?最后再用nmcli device status命令进行查看是否被托管。如果还是出现未托管我们再用以下命令:关闭所有网络连接,重新启用所有网络连接。网络接口最初处于未托管状态,导致 NetworkManager 无法激活连接。我们重启后发现ens33没有消失且IPv4正确分配。再用以下命令进行查看ens33是否被托管。到这里就完了,希望对你有所帮助。
2025-04-23 19:37:05
539
原创 在centos中安装docker
7、到这里已经完成了docker安装。但是,大家可能去拉镜像时有可能会非常慢,这里我们就可以去配置镜像加速。7.2:填写以下格式的内容:(如果镜像源不可用可以百度去搜索最新的)5、在前面都无误的情况下就可以安装docker了。的核心引擎,提供容器运行时和管理功能。7.1:创建一个目录用来放docker配置文件(-p。7.3最后一步,重新加载启动docker。为 Docker 提供存储卷管理和持久化数据支持。:自动确认安装,跳过手动确认步骤。不存在,也会自动创建,但。:自动创建父目录(如果。
2025-04-20 12:14:44
340
原创 ssm基于xml配置的整合
该配置文件用于配置SpringMVC框架运行需要的组件Bean.(前后端分离不用加视图解析器)5、MyBatis框架核心配置文件(mybatis-config.xml)完善一下包结构就OK了。6、修改web.xml。
2025-01-25 23:30:27
235
原创 window.onload没有效果,控制台也没有报错
本来想用这个来展示用户信息,但加了这个没有任何效果,控制台也没有报错,其它也检查了感觉没有错误。这一次就查出来了,发送了这个select请求。在网络那边发送的请求发现根本没有发送请求。
2024-11-23 18:43:48
312
原创 mybatis-plus插件的使用
大家在整合myatis-plus和spring-boot后可能会使用mybatis-plus的代码自动生成器,一般有自己加依赖,然后创建一个代码生成器的类,但这样比较繁琐。这里推荐我自己使用的插件。模块写你的项目名即可,不用写绝对路径,包名自己的包名,下面要生成的勾选即可,点击code gentrator后提示成功即可。点击后可能不会直接弹窗可能在另外页面,我的没有直接可以看到,最小化后才看到,我还一直点,以为不能用。这就是生成的目录,我这里是在空项目里生成的,没有在Maven项目中,所以类的图标是茶杯。
2024-11-20 17:32:37
649
原创 sprng-boot项目启动类报错
错误: 找不到或无法加载主类 com.cg.Application 原因: java.lang.ClassNotFoundException: com.cg.Application。如果发现里面很乱或者自己都不认识的一些在里面,可以使用Maven命令去清除重构一下。你可以去看看target里面的构建目录。然后再此运行启动类。
2024-11-20 16:44:01
162
原创 springboot项目打包
4、启动后cmd利用java -jar 复制jar包名,注意后缀没有.jar的需要加上,启动后后面也会有端口号和启动时间。2、在target目录下会生成一个jar包,右键点击jar包然后打开jar包所在位置。1、使用Maven命令:mvn clean package。3、在jar包目录下利用cmd命令,直接回车。
2024-11-07 07:00:00
365
原创 jsp跳转servlet处理出现404,描述找不到资源
就是tomcat版本问题,换个tomcat就欧克了。这是利用tomcat10以上的版本运行报错。这是利用tomcat9运行就可以了。
2024-10-16 21:16:03
433
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人