- 博客(14)
- 收藏
- 关注
原创 分布式锁+分布式事务+分布式缓存
1.分布式缓存1.1高并发下的分布式缓存我们先从最开始的来说,我们现在一般都是B/S架构,一般都是中间挂一个服务器,后面有一个数据库。如下图:如果客户端的访问量很大的话,那对于后端的服务来说就有一定压力了,压力主要有两个环节;一个环节是关于服务器,一个环节是我们数据库;当我们的并发量增加时,最先达到瓶颈的是我们数据库,这就会导致客户端的访问速度,访问效率降低,这时该如何解决呢?这个时候我们就需要加缓存层;我们可以把经常访问的数据 称之为热点数据,存放在缓存中,当我们去数据库拿数据的时候,先去缓存
2021-10-21 17:34:45 1696
原创 分布式缓存-Redis
1.产品简介:tair 是淘宝自己开发的一个分布式 key/value 存储引擎。 tair 分为持久化和非持久化两种使用方式。 非持久化的 tair可以看成是一个分布式缓存.。持久化的 tair 将数据存放于磁盘中。 为了解决磁盘损坏导致数据丢失。tair 可以配置数据的备份数目。tair 自动将一份数据的不同备份放到不同的主机上, 当有主机发生异常, 无法正常提供服务的时候, 其于的备份会继续提供服务。2.tair的总体架构tair 作为一个分布式系统, 是由一个中心控制节点和一系列的服务节点组成
2021-10-19 14:59:13 714
原创 Spring源码-循环依赖,三级缓存,IOC,AOP
1.循环依赖1.1 什么是循环依赖问题我们来看一张图上图中A类有一个属性B对象,B类中有一个属性A。那么在初始化A对象时发现B对象还未实例化,此时会去进行B对象的实例化和初始化赋值,当对B对象进行初始化赋值时去单例池中查找A对象未找到,发现A对象并未成功被初始化,此时又去进行A的初始化操作,如此往复便陷入了死循环。可以看出在对属性进行赋值时,产生了问题。我们通常有两种方式对属性进行赋值,一种是构造器一种是setter方法在Spring中采用的是setter方法进行属性赋值,为什么不采用构造器
2021-10-14 21:45:51 533
原创 一篇文章带你搞懂数据库索引
一:数据库索引我们常见的有数据库索引有几种:1、B+索引 2、唯一索引 3、非唯一索引 4、主键索引 5、聚集索引(聚簇索引)下面我们来看看各自索引的特点:1、B+索引: 索引的作用是排列好次序,使得查询可以快速找到。2、唯一索引: 唯一索引是在表上一个或者多个字段组合建立的索引,这个或者这些字段的值组合起来在表中不可以重复,例如学生表的学号。3、非唯一索引: 非唯一索引是在表上一个或者多个字段组合建立的索引,这个或者这些字段的值组合起来在表中可以重复,例如学生表的成绩。4、主键索引: 主键索引(
2021-09-28 17:38:29 3548
原创 Spring源码分析
Spring源码分析源码IOC整体流程思路总体思路:1.配置阶段配置web.xml DispatcherServlet设定init-param contextConfigLoacation = classpath:application.xml设定url-pattern /*配置Annotation @Controller @Service @AutoWirted @RequestMapping…2.初始化阶段调用init()方法 加载配置文件ioc容器初始化 Map&
2021-07-13 18:07:10 244
原创 关于java.util.Timer timer定时器如何触发
关于java.util.Timer timer定时器如何触发看看就好:在一次任务需求中,需求是每周固定时间点触发一次任务,当时用定时器实现,在需求发版后一直都是没问题的,突然某个星期本地的定时任务并没有触发,我便非常诧异害怕出现了什么BUG,便去测试定时器,发现不论怎么操作定时任务都没有触发。步入正题:定时器是如何实现的?实现定时器,便要先定义一个定时器, //定义定时器 private java.util.Timer timer = new java.util.Timer(true);
2020-12-22 11:00:54 912
原创 MySQL
mysql 四种隔离级别事务的 四个特征(ACID)事务具有四个特征:原子性( Atomicity )、一致性( Consistency )、隔离性( Isolation )和持续性( Durability )。这四个特性简称为 ACID 特性。1 、原子性。事务是数据库的逻辑工作单位,事务中包含的各操作要么都做,要么都不做2 、一致性。事 务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。因此当数据库只包含成功事务提交的结果时,就说数据库处于一致性状态。如果数据库系统 运行中发生故障
2020-12-21 11:27:58 139
原创 HashMap底层实现原理解析
一:HashMap底层实现原理解析我们常见的有数据结构有三种结构:1、数组结构 2、链表结构 3、哈希表结构 下面我们来看看各自的数据结构的特点:1、数组结构: 存储区间连续、内存占用严重、空间复杂度大优点:随机读取和修改效率高,原因是数组是连续的(随机访问性强,查找速度快)缺点:插入和删除数据效率低,因插入数据,这个位置后面的数据在内存中都要往后移动,且大小固定不易动态扩展。2、链表结构:存储区间离散、占用内存宽松、空间复杂度小优点:插入删除速度快,内存利用率高,没有固定大小,扩展灵活
2020-12-18 10:37:27 120966 25
原创 Redis详细使用与操作
Redis详细使用与操作1-Linux系统下安装Redis详解1、下载安装包:redis-6.0.9.tar.gz,可以去官网下载。2、解压redis安装包!tar -zxvf redis-6.0.9.tar.gz3、进入解压后的文件,可以看到我们redis的配置文件4、基本的环境安装查看当前的gcc环境:gcc -v,如果是centos6以上的版本:安装6.0以上版本需要升级gcc到5.3及以上,如下:升级到gcc 9.3:yum -y install centos-release-s
2020-11-16 10:57:13 928
原创 Linux详细使用
Linux详细使用(环境搭建后续补充)1-走进Linux系统开机登录:开机会启动很多程序,它们在Windows叫做“服务”,在linux就叫做“守护进程”。开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,密码,输完回车即可。如下图:关机:在linux领域内大多用于服务器上,很少遇到关机的操作,毕竟服务器跑一个服务是永无止境的,除非特殊情况下才会不得已关机。关机指令为shutdown;sync # 将数据由内存同步到硬盘中。sh
2020-11-10 17:31:07 590
原创 垃圾回收相关算法概述
垃圾回收相关算法概述垃圾标记阶段:对象存活判断:在堆中存放的几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分内存中哪些对象是存活对象,哪些对象是已经死掉的对象,只有标记为已经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,这个过程我们称为垃圾标记阶段,判断对象存活一般有两种方式:引用计数算法和可达性分析算法。1-垃圾标记阶段的算法之引用计数算法1.引用计数算法比较简单,对每个对象保存一个整型的引用计数器属性,用于记录对象被引用的情况。2.对于一个对象A,只要有任何一个
2020-11-03 17:26:11 330 1
原创 SpringCloud学习与搭建
Spring Cloud 微服务实践第一章:微服务架构概述1-1 系统进化理论概述在系统架构与设计的实践中,经历了两个阶段,一个阶段是早些年常见的集中式系统,一个阶段是近年来流行的分布式系统;集中式系统:集中式系统也叫单体应用,就是把所有的程序、功能、模块都集中到一个项目中,部署在一台服务器上,从而对外提供服务;分布式系统分布式系统就是把所有的程序、功能拆分成不同的子系统,部署在多台不同的服务器上,这些子系统相互协作共同对外提供服务,而对用户而言他并不知道后台是多个子系统和多台服务器在
2020-10-29 17:22:21 575
原创 JVM内存结构分析
JVM内存结构分析栈栈:包含局部变量表,操作数栈,动态链接等,这里主要概述以上三类。栈帧是栈执行的基本单位,其中每一个栈帧都表示一个方法的执行,每一个栈帧都具有以上的结构。局部变量表 :用于存放方法参数和方法内部定义的局部变量,局部变量的容量以变量槽(Slot)为最小单位,其中Slot是可以重用的,当Slot中的变量超出了它的作用范围,拿下一次分配Slot时,该槽位将被重新利用。例如:int a =1;{int b =1;} int c= 1;上面代码的槽位分析为:this ----->
2020-10-28 15:18:27 499 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人