自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SpringCloudAlibaba之Sentinel简单使用

springcloudalibaba,sentinel

2024-04-23 17:52:57 776 1

原创 SpringCloud之OpenFeign简单使用

openfeign简单使用

2024-04-18 11:27:07 378

原创 SpringCloud之LoadBalancer自定义负载均衡算法,基于nacos权重

自定义loadbalancer 负载算法,权重,nacos

2024-04-15 17:56:57 590

原创 SpringCloud之LoadBalancer负载均衡器的简单使用

load balancer

2024-04-15 17:55:10 839

原创 关于Ribbon在SpringCloudAlibaba2021.1版本中,找不到服务实例

关于Ribbon在SpringCloudAlibaba2021.1版本中,找不到服务实例

2024-04-12 16:12:06 500

原创 SpringCloudAlibaba之nacos的服务注册与发现

nacos服务注册与发现

2024-04-11 17:06:57 987

原创 SpringCloudalibaba之Nacos的配置管理

nacos配置管理

2024-04-10 17:50:03 875

原创 SpringBoot和SpringCloud,SpringCloudAlibaba版本依赖关系

SpringBoot和SpringCloud版本依赖关系

2024-04-08 17:11:44 1054 2

原创 Nacos集群监控搭建

nacos集群监控搭建,grafana,prometheus

2024-04-07 11:22:49 892

原创 Nacos的单机以及集群部署模式

nacos部署

2024-04-03 16:36:00 940 1

原创 服务注册与发现

服务注册与发现

2024-04-02 18:01:09 457 1

原创 SpringBoot单元测试

新建model包,并创建User类。新建service包,并创建UserService类。新建一个maven项目,spring-boot-test。配置pom.xml parent属性。至此springboot容器创建完成。​ UserService类代码。

2024-04-01 18:00:10 397 1

原创 手写SpringBoot(五)之整合AOP

springboot手写,整合aop

2024-04-01 09:48:10 239

原创 手写SpringBoot(四)之bean动态加载

conditionalOnMissbean

2024-03-29 17:34:18 409 1

原创 手写SpringBoot(三)之自动配置

手写springboot,springboot自动配置,java spi

2024-03-29 11:41:03 794

原创 手写SpringBoot(二)之动态切换Servlet容器

手写Springboot,动态加载servlet容器,conditionOnClass

2024-03-28 15:02:44 590

原创 手写SpringBoot(一)之简易版SpringBoot

手写SpringBoot,SpringBootApplication

2024-03-27 18:11:02 1916 4

原创 敏感词过滤

敏感词过滤,布隆,DFA

2024-03-25 11:32:14 452

原创 GC日志打印

GC日志

2024-03-22 17:42:14 364

原创 JVM监控工具

jvm监控命令,Jvm监控工具

2024-03-21 10:12:58 1188

原创 垃圾收集器

JVM垃圾回收器

2024-03-11 16:25:02 1238

原创 垃圾收集器底层算法

三色标记,卡表

2024-03-08 17:54:58 1040 1

原创 JVM对象创建与内存分配机制

JVM对象创建内存分配

2024-02-28 16:34:28 1192 1

原创 jvm内存模型剖析

当元空间达到默认大小,会进行一次full gc,同时收集器会对该值进行调整,如果释放了大量的空间,则适当降低该值,如果释放了很少的空间,在不超过最大值(设定了的情况下),适当提高该值。经过一次GC后,对象的分代年龄会加1,当分代年龄大于15,会被放入老年代里面,打个S1区放满后,不用等到分代年龄超过15,也会被放入老年代。用来存放线程执行到哪一步的行号(指针地址,内存地址),线程独有的,当执行完一行代码后,由字节码执行引擎去修改。存放常量,静态变量,类元信息,存放的静态变量对象指向堆中的内存地址。

2024-02-27 17:57:33 848

原创 java类加载以及双亲委派机制

自定义类加载器只需要继承 java.lang.ClassLoader 类,该类有两个核心方法,一个是loadClass(Sting,boolean),实现了双亲委派机制,还有一个方法是findClass,默认实现是空方法,所以我们自定义类加载器主要是重写findclass方法。自定义类加载的器的父加载器默认为appClassLoader,这样默认满足双亲委派机制。

2024-02-27 17:54:01 1002

原创 布隆过滤器

布隆过滤器

2024-01-22 18:00:27 935

原创 redis连接池参数

minldle(最小空闲连接数),与其说是最小空闲连接数,不如说是"至少需要保持的空闲连接数",在使用连接的过程中,如果连接数超过了minldle,那么继续建立连接,如果超过了maxldle,当超过的连接执行完业务后会慢慢被移出连接池释放掉。,比如快速的创建一些redis连接,执行简单命令,类似ping(),快速的将连接池里的空闲连接提升到minldle的数量。redis初始化的时候,不会自动初始化连接,只有用到的时候,才会初始化。如果系统启动完马上就会有很多的请求过来,那么可以给redis连接池做。

2024-01-18 10:13:05 925 1

原创 redis的过期淘汰策略

淘汰策略

2024-01-18 10:12:50 776 1

原创 redis缓存优化

针对读多写少的情况加入缓存以提高性能,如果写多读多的情况又不能容忍双写不一致,那就没必要加缓存了,可以直接操作数据库。放入缓存的数据应该是实时性,一致性要求不是很高的数据。切记不要为了用缓存,同时又要保证绝对的一致性做大量的过度设计和控制,增加系统复杂度。

2024-01-18 10:12:35 919 1

原创 redis分布式锁redisson

当加锁成功后会立即执行 RedissonLock.this.scheduleExpirationRenewal(threadId);

2024-01-18 10:12:19 294 1

原创 redis分布式锁

如果在高并发的情况下,短时间大量业务请求进来的时候,程序会变慢,则设置的10秒钟自动释放可能不够用。在主线程创建分布式锁的时候,创建一个子线程,定时(一定要小于锁过期时间)去延长锁的过期时间,让锁在主线程不退出的情况下,永远不过期。大多数公司在并发量不是很高的情况下,也在允许小笔的超卖等业务的情况下,该版本适用, 该版本易于维护。解决办法: 将value设置成有标识的id,在释放锁的时候校验该id,属于自己的才释放该锁。解决办法,在设置锁的时候设置10秒钟的超时时间,到期自动释放 (

2024-01-18 10:11:51 754 1

原创 redis的lua脚本

其中"retum {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"是被求值的Lua脚本,数字2指定了键名参数的数量,key1和key2是键名参数,分别使用 KEYS[1]和 KEYS[2]访问,而最后的 first和 second 则是附加参数,可以通过 ARGV[1] 和 ARGV[2]访问它们。:redis自带的事务功功能很鸡肋,而redis的lua脚本几乎实现了常规的事务功能,官方推荐如果要使用redis的事务功能可以用redis lua替代。使用脚本,减少了网络往返时延。

2024-01-18 10:11:28 315 1

原创 redis管道操作(节省网络IO开销)

​ 客户端可以一次性发送多个请求而不用等待服务器的响应,待所有命令都发送完后再一次性读取服务的响应,这样可以极大的降低多条命令执行的网络传输开销,管道执行多条命令的网络开销实际上只相当于一次命令执行的网络开销。需要注意到是用pipeline方式打包命令发送,也就是pipeline并不是表达“所有command都一起成功”的语义,管道中前面命令失败,后面命令不会有影响,继续执行。前先缓存起所有命令的处理结果,打包的命令越多,缓存消耗内存也越多,所以并不是打包的命令越多越好。

2024-01-18 10:11:09 321 1

原创 Redis的单线程和高性能

中,所有的运算都是内存级别的运算,而且单线程避免了多线程的切换性能损耗问题。正因为 Redis 是单线程,所以要小心使用 Redis 指令,对于那些耗时的指令(比如keys),一定要谨慎使用,一不小心就可能会导致 Redis 卡顿。Redis 的单线程主要是指 Redis 的网络 I0 和键值对读写是由一个线程来完成的,这也是 Redis 对外提供键值存储服务的主要流程。但Redis 的其他功能,比如持久化、异步删除、集群数据同步等,其实是由额外的线程执行的。因为它所有的数据都在。

2024-01-18 10:10:48 357 1

原创 redis的集群架构

也就是原来的主节点在失联这段时间内,可能会接收写入大量数据。当恢复后,原来的主节点会变成新选举的主节点的从节点,变成从节点后,利用主从,会复制新选举的主节点的数据到当下节点,这样这段时间写入的大量数据会丢失。当客户端向一个错误的节点发出了指令,该节点会发现指令的key所在的槽位并不归自己管理,这是它会想客户端发送一个特殊的跳转指令携带目标操作的节点地址,告诉客户端去连这个节点获取数据,客户端收到指令后除了跳转到正确的节点上操作,还会同步更新纠正本地的槽位映射表缓存,后续所有的key将使用新的槽位映射表。

2024-01-18 10:10:17 975 1

原创 redis哨兵架构

如果master挂了,那唯一的哨兵节点就是哨兵leader了,可以正常选举新的master。为什么推荐奇数个哨兵节点跟集群奇数个master节点类似。哨兵架构下client端第一次从哨兵找出redis的主节点,后续就直接访问redis的主节点,不会每次通过sentinel代理访问redis的主节点,当redis的主节点发生变化,哨兵会第一时间感知到,并且将新的redis主节点通知给client端(这里面的redis的client端一般都实现了订阅功能,订阅sentinel发布的节点变动消息。

2024-01-18 10:08:58 930 1

原创 Redis主从架构

master收到PSYNC命令后,会在后合进行数据持久化通过bgsave生成最新的rdb快照文件,持久化期间,master会然续接收客户端的请求,它会把这些可能修改数据集的请求缓存在内存中。然后,master再将之前缓存在内存中的命令发送给slave.当master与slave之间的连接由于某些原因而断开时,slave能够自动重连Master,如果master收到了多个slave并发连接请求,它只会进行一次持久化,而不是一个连接一次,然后再把这一份持久化的数据发送给多个并发连接的slave。

2024-01-18 10:08:07 279 1

原创 Mysql优化之索引相关介绍(笔记)

联合索引结构图]联合索引排序规则:1. 从第一级(最左边字段)索引字段开始排序。2. 第一级排好序之后,第二个字段只在当前第一级排好序的数据中进行二次排序3. 第三级根据第二级排好序的数据,进行第三级排序。由此引出结论,1.第二级排序是依赖第一级排序的。同理,第三级依赖第二级2.第二级分开来看,所有的数据都是无序的。3.同理,第三级也是。

2024-01-09 17:22:16 408

原创 Mysql优化之索引相关介绍(笔记)

索引查找从顶层节点开始查找,通过key值,也就是主键的值进行比较,最终定位到存储数据的叶子节点上面,从叶子节点取出响应的数据。uuid的情况下,由于uuid的key值大小不确定性,所以可能会对已经插满的节点中,打乱当前节点的顺序,重新插入当前值。第一点、主键的比较,是整形的 1 < 2 ,还是UUID的比值,哪个效率更高些呢?第二点、整形的key值相对于UUID的key值占用内存更小,同一节点,能存放的索引就更多些。自增id的情况的,主键索引在新增数据时,会往索引尾部插入,这样只会往节点后面维护索引。

2024-01-08 16:16:17 380

原创 Mysql优化之索引相关介绍(笔记)

索引节点默认大小]

2024-01-02 17:16:59 367

手写SpringBoot相关代码

手写SpringBoot相关代码,https://blog.csdn.net/aoxiaojun/article/details/137085129相关章节代码,需要自取

2024-04-01

空空如也

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

TA关注的人

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