- 博客(212)
- 资源 (2)
- 收藏
- 关注
原创 centos docker安装
安装最新版本的Docker引擎、Docker客户端。如果没有启动Docker引擎,那么执行。3、删除镜像、容器、卷、自定义配置等文件。(Docker引擎客户端)的版本号。查看版本号时,只能看到。2、删除docker引擎。
2025-02-10 21:49:05
359
转载 Mybatis-Plus处理Mysql Json类型字段
Mybatis-Plus处理Mysql Json类型字段_mybatisplus 查询json-优快云博客
2023-12-04 16:09:56
323
原创 记低版本okhttp超时会导致死锁
解决方案就简单多了:升级okhttp到3.14.9,虽然目前最新稳定版本为4.9.3,但是OkHttp 4发布,从Java切换到Kotlin。谨慎一点,还是小版本升级吧。作为成员对象,而我们代码中OkHttpClient作为连接池是单例的,这里是对dispatcher做synchronized。在处理一次生产环境cpu拉满问题时,把日志拉下来看发现很多http请求调用出错,项目使用的是okhttp 3.8.1版本。追踪代码发现,在finished的调用方法中,我们方法中使用的是异步。,就是这里,问题大了,
2023-10-23 16:38:25
1602
原创 ElasticSearch集群
•分片(shard):索引可以被拆分为不同的部分进行存储,称为分片。在集群环境下,一个索引的不同分片可以拆分到不同的节点中。脑裂问题的出现就是因为从节点在选择主节点上出现分歧导致一个集群出现多个主节点从而使集群分裂,使得集群处于异常状态。•当Master节点设置的JVM内存较小时,引发JVM的大规模内存回收,造成ES进程失去响应。•副本分片(Replica shard)每个主分片可以有一个或者多个副本,数据和主分片一样。•主分片(Primary shard):相对于副本分片的定义。
2023-04-12 18:21:22
562
原创 docker详解
1、定义父镜像:FROMjava:82、定义作者信息:MAINTAINERitheima3、将jar包添加到容器:ADD4、定义容器启动执行的命令:CMD5、通过dockerfile构建镜像:dockerbulid–fdockerfile文件路径–t镜像名称版本。
2023-04-10 14:47:59
1201
2
原创 RabbitMQ高级特性
rabbitmq 整个消息投递的路径为:producer----->exchange--->queue--->consumerconfirm 确认模式消息从 producer 到exchange则会返回一个 confirmCallback。(1)设置publisher-confirms="true" 开启 确认模式(2)使用rabbitTemplate设置回调函数。当消息发送到exchange后回调confirm方法。在方法中判断ack,如果为true。
2023-04-06 18:59:22
553
原创 SpringCloud 使用sentinel
业务需求是有限支付和更新订单的业务,因此当修改订单业务触发阈值时,需要对查询订单业务限流。RequestOriginParser来填写(比如在请求header上添加值来区分是网关过来的请求还是直接访问的服务的请求)1、慢调用比例:超过指定时长的调用为慢调用,统计单位时长内慢调用的比例,超过阈值则熔断。直接:统计当前资源的请求,触发阈值时对当前资源直接限流,也是默认的模式。链路:统计从指定链路访问到本资源的请求触发阈值时,对指定链路限流。关联:统计与当前资源相关的另一个资源触发阈值时,对当前资源限流。
2023-04-03 14:45:21
1216
2
原创 SpringCloud sleuth+zipkin实现服务链路追踪
二、启动 zipkin-server-2.12.9-exec.jar。因为zipkin已经依赖了sleuth,所以sleuth可不添加。
2023-03-30 15:18:17
109
原创 SpringBoot启动流程分析
打印banner:可以resource下粘贴自定义的banner。执行refreshContext方法后才真正创建Bean。配置启动引导类(判断是否有启动主类)创建应用上下文context。获取初始化类、监听器类。判断是否是Web环境。
2023-03-28 14:21:46
118
原创 SpringBoot事件监听机制
2、ApplicationContextInitializer的使用要在resource文件夹下添加META-INF/spring.factories。1、ApplicationRunner和CommandLineRunner都是当项目启动后执行,使用@Component放入容器即可使用。SpringBoot 在项目启动时,会对几个监听器进行回调,我们可以实现这些监听器接口,在项目启动时完成一些操作。3、SpringApplicationRunListener的使用要添加构造器。
2023-03-28 12:09:33
242
原创 SpringBoot自动配置
(3)导入 ImportSelector 实现类 @Import(MyImportSelector.class)2.可以使用@Import注解,加载类。(2)导入配置类——@Import(UserConfig.class)@Enable* 底层依赖于@Import注解导入一些类。(1)导入Bean——@Import(User.class)获取自动配置类的路径),在配置类里面使用。获取所有需要自动装配的配置类的路径。作用就是收集需要导入的配置类。,获取注入类的方法是。
2023-03-27 20:23:26
627
原创 SpringBoot配置加载说明
一、项目内部配置文件加载顺序SpringBoot配置文件(application.yml)加载顺序及优先级为: 优先级从上至下依次降低。
2023-03-27 13:37:24
174
原创 Redis删除策略和淘汰策略
当key设置有过期时间,且过期时间到达时,由定时器任务立即执行对键的删除操作。对每个redis库逐一进行检测,每次执行耗时:250ms/server.hz。(2)如果一轮中删除的key的数量>W*25%,循环该过程。Redis启动服务器初始化时,读取配置server.hz的值,默认为10。(3)如果一轮中删除的key的数量≤W。数据到达过期时间,不做处理。(1)如果key超时,删除key。对某个库检测时,随机挑选W个key检测。2. 发现已过期,删除,返回不存在。1. 如果未过期,则返回数据。
2023-03-23 15:50:59
1053
原创 ZooKeeper集群说明
•在Leader选举的过程中,如果某台ZooKeeper,获得了超过半数的选票,则此ZooKeeper就可以成为Leader了。服务器中存放的最大数据ID.值越大说明数据越新,在选举算法中数据越新权重越大。 1. 处理客户端非事务请求,转发事务请求给Leader服务器。1. 处理客户端非事务请求,转发事务请求给Leader服务器。 2. 集群内部各服务器的调度者(数据同步等)比如有三台服务器,编号分别是1,2,3。•Serverid:服务器ID。•Zxid:数据ID。
2023-03-23 14:04:54
329
原创 ZooKeeper实现分布式锁
4.如果发现比自己小的那个节点被删除,则客户端的Watcher会收到相应通知,此时再次判断自己创建的节点是否是lock子节点中序号最小的,如果是则获取到了锁,如果不是则重复以上步骤继续获取到比自己小的一个节点,并注册监听。3.如果发现自己创建的节点并非lock所有子节点中最小的,说明自己还没有获取到锁,此时客户端需要找到比自己小的那个节点,同时对其注册事件监听器,监听删除事件。核心思想:当客户端要获取锁,则创建节点,使用完锁,则删除该节点。1.客户端获取锁时,在lock节点下创建临时顺序节点。
2023-03-23 13:22:41
619
原创 ZooKeeper 介绍
ZooKeeper 是一个树形目录服务,每个节点(ZNode)上可以保存自己的数据和节点信息。节点可以拥有子节点,同时也允许少量(1MB)数据存储在该节点之下。create -e /节点path value 创建临时节点。create -s /节点path value 创建顺序节点。deleteall /节点path 删除带有子节点的节点。create /节点path value 创建节点。set /节点path value 设置节点值。get /节点path 获取节点值。ls /目录 查看目录下的节点。
2023-03-23 11:22:10
359
原创 Dubbo 特性介绍
使用timeout属性配置超时时间,默认值1000,单位毫秒,建议配置在服务提供者,因为只有服务提供者确切的知执行要花多长时间。如果消费者之前访问过相关服务,会将地址缓存在本地,不会再经过注册中心,因此可以访问。dubbo中使用version属性来设置和调用同一个接口的不同版本。通过retries属性来设置重试次数。注册中心挂了,服务是否还能正常访问?
2023-03-14 15:46:30
241
原创 Java枚举类详解
5、枚举类的第一行上必须是枚举项,最后一个枚举项后的分号是可以省略的,但是如果枚举类有其他的东西,这个分号就不能省略。7、枚举类也可以有抽象方法,但是枚举项必须重写该方法。3、每一个枚举项其实就是该枚举的一个对象。4、枚举也是一个类,也可以去定义成员变量。比较两个枚举项,返回的是索引值的差值。获取指定枚举类中的指定名称的枚举值。6、枚举类可以有构造器,但必须是。返回枚举项在枚举类中的索引值。枚举项的用法比较特殊:枚举。
2023-02-15 11:47:24
553
原创 java类加载过程
如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式。Systemclassloader:系统类加载器,负责加载用户类路径上所指定的类库,父加载器为Platform。总共分为5步:加载、验证、准备、解析、初始化。5、初始化某个类的子类。
2022-11-28 21:23:27
559
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人