自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM内存模型

线程私有:栈,本地方法栈,程序计数器线程共享:堆,方法区。

2024-03-15 14:42:27 743

原创 Redis实现分布式锁源码分析

单机环境并发时,使用synchronized或lock接口可以保证线程安全,但它们是jvm层面的锁,分布式环境并发时,100个并发的线程可能来自10个服务节点,那就是跨jvm了。

2024-03-12 23:04:02 742

原创 Redis持久化,主从与哨兵

Copy-On-write,在生成快照的同时,可以正常处理写命令。主线程fork生成bgsave子进程,可以共享主线程的所有内存数据。bgsave子进程将主线程的内存数据写入RDB的同时,如果主线程在修改数据,这个数据会被复制一份,由bgsave子进程把该副本写入RDB文件,主线程依然可以直接修改原来的数据。

2024-03-07 00:16:13 680

原创 Mysql之InnoDB引擎

Mysql5.5版本开始,默认使用InnoDB存储引擎,它擅长事务处理,具有崩溃恢复特性,在日常开发中使用非常广泛。

2024-03-01 23:56:09 700

原创 Mysql数据库扩容与数据迁移

停止服务之后, 能够保证迁移工作的正常进行。但是服务停止,伤害用户体验, 而且造成了时间压力, 必须在指定的时间内完成迁移,且不能出错,每一步都要有回滚预案。

2024-02-29 16:50:08 1418

原创 ShardingSphere分库分表及扩缩容策略

结合范围分片和取模分片的优点,订单系统先按范围分片,10月业务量小,分两个节点node1和node2,节点数表示对数据拆分的粒度,orderId%10,得到最终存放的节点位置node1或node2。node1和node2不仅存了10月的数据,还存了11月的数据,那它们的数据会比node3更多,node3只存了11月数据的1/3,可以给node3的权重分多一点。可以保证唯一性,但它是字符串,且不能保证单调递增,那么维护主键索引的成本就变大了,插入数据后,会产生页分裂。,会出现ID重复,且容易暴漏系统业务量。

2024-02-28 22:11:52 1484

原创 Mysql索引

索引是排好序的,帮助我们进行快速查询的数据结构。

2024-02-27 21:02:31 459

原创 分布式之两阶段提交与三阶段提交

但参与者如果超时未收到协调者commit指令,则不能擅自回滚,它可以转而咨询其他参与者。最坏的情况是,所有参与者都处于就绪状态,这样将陷入长时间的阻塞状态。两阶段提交中,参与者没有超时机制,仅协调者有。三阶段中,协调者和参与者都有超时机制,可以避免协调者单点故障后,所有参与者阻塞的问题。2. 同步阻塞:所有事务参与者在等待其它参与者响应的时候都处于同步阻塞状态,无法进行其它操作。还有预备性提交,备份协调者,及消息队列,也可以解决通信故障问题。:根据投票结果,决定提交或回滚,并将结果发送给所有参与者。

2024-02-25 20:07:51 343

原创 Spring面试题(持续更新)

Spring中内置的事务处理,记录操作日志,缓存处理。

2024-01-17 12:00:38 349

原创 Spring启动流程源码分析

一般来说,Spring启动,就是构造ApplicationContext对象以及调用refresh()方法的过程。类的继承关系图。

2024-01-16 17:17:32 1020

原创 Spring之@Lookup注解

在bean实例化的过程中,执行推断构造方法时,会找到类方法上的@Lookup信息,并存到合并后的的属性中。推断构造方法得到具体的构造方法后,进入真正的实例化流程,根据获取的实例化策略,实例化时,先执行它父类方法判断methodOverrides有值的情况下,调用方法,生成Cglib代理对象调用方法,生成执行,从beanDefinition拿到methodOverrides集合属性,拿到beanName从beanFactory即spring容器获取bean并返回。

2024-01-15 16:16:49 467

原创 Spring循环依赖与三级缓存

/ A依赖了Bclass A{public B b;// B依赖了Aclass B{public A a;ABean创建–>依赖了B属性–>触发BBean创建—>B依赖了A属性—>需要ABean(但ABean还在创建过程中)从而导致ABean创建不出来,BBean也创建不出来。

2024-01-09 00:08:50 888

原创 Spring之bean的生命周期

在上一篇文章中已经对Spring扫描流程进行了解析,这一篇spring之bean的生命周期就接着上一篇继续讲。

2024-01-04 17:30:15 765

原创 Spring启动时扫描流程

将beanDefinition注册到Spring容器中的属性beanFactory的 beanDefinitionMap集合中。它包含了synchronized同步块,所以注册beanDefinition是线程安全的。,判断beanDefinition是否符合要求,是则添加到beanDefinition的集合中。方法,遍历上一步拿到的beanDefinition集合,为beanDefinition设置属性。检查正在注册的beanDefinition是否已存在,存在则覆盖,有冲突则跳过不再注册。

2024-01-02 15:40:55 529

原创 Spring的依赖注入

执行完这一系列操作后,只是把注入点缓存起来了,真正的注入是AutowiredAnnotationBeanPostProcessor.postProcessProperties()中调用的inject()方法通过反射进行的属性和方法的注入。通过autowireMode自动注入模式进行注入,它会把bean里所有的set方法都当做注入点,控制粒度不够细,使用@Autowired注解可以精确控制需要自动注入的字段或属性或构造方法。它可以通过beanDefinition指定,也可以通过xml指定,或者通过注解指定。

2023-12-29 17:23:22 436

原创 Spring整合mybatis源码流程

MapperFactoryBean的AutowireMode为byType,所以Spring会自动调用set方法,有两个set方法,一个setSqlSessionFactory,一个setSqlSessionTemplate,而这两个方法执行的前提是根据方法参数类型能找到对应的bean,所以Spring容器中要存在SqlSessionFactory类型的bean或者SqlSessionTemplate类型的bean。通过studentMmapper从容器中获取的是mybatis代理类的bean。

2023-12-26 17:12:18 903

原创 JVM常量池/运行时常量池/字符串常量池理解

常量池在.class文件的字节码中,在磁盘上运行时常量池在JVM的方法区中,.class文件被加载进JVM后,复制常量池到运行时常量池,并将符号引用替换为直接引用;JVM为每一个加载的类和接口创建并维护一个运行时常量池,通过索引访问字符串常量池存在于JVM堆中。

2023-11-20 14:53:29 45

原创 SaaS多租户与数据隔离

SaaS(Soft as a Service)软件即服务,是一种软件架构技术。在同一个服务器下运行单个应用实例,为多个租户提供服务,并实现租户间的数据隔离。

2023-11-03 16:20:59 261

原创 并发编程之JMM与并发三大特性

如果重排序让步骤3先于步骤2执行,对于当前Thread-1来说没问题,但是对于后面来的Thread-2,进行第一次检查时发现instance!PC先取指令,然后从寄存器中找x的值,不存在则去cache中获取,cache中也不存在则去内存中获取。从内存将x=3加载到缓存,再加载到寄存器,再去PC取指令add,然后去ALU计算。如果将cpu存取一个指令作为一个时钟周期,比如指令x=3,执行一个load指令, 从内存中加载到寄存器需要167个时钟周期,而从L1缓存加载只需要等待4个时钟周期。

2023-09-11 16:25:12 40

原创 Vue.js入门一

Vue是一套用于构建用户界面的渐进式JavaScript框架一、指令。

2023-08-25 16:59:37 31

原创 安装Docker 及tomcat redis mysql

Docker安装tomcat redis mysql安装Docker 及tomcat redis mysql安装Linux环境 VirtualBox CentOS7 Xshell 更新yum源安装DockerDocker安装mysqlDocker安装redisDocker安装tomcatDocker常用命令安装Docker 及tomcat redis mysql刚学习docker的使用,记录下...

2020-04-18 15:48:14 295

空空如也

空空如也

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

TA关注的人

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