自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分布式锁原理及使用

每个线程在访问时,先会去判断这个“坑位”有没有加锁,如果没有加锁,则自己占住加锁(然后获取数据,从缓存/数据库),别人来的时候看到加锁就会等待,当从坑位离开时,会删除锁,然后其他的才会继续站位。我们可以同时去一个地方“占坑”,如果占到,就执行逻辑。否则就必须等待,直到释放锁。占坑可以去Redis,也可以去数据库,可以去任何大家都可以访问到的地方。NX – 只有键key不存在的时候才会设置key的值。# 可以多开几个窗口进行测试。

2022-10-02 15:10:07 444 2

原创 Dapr简介

分布式应用运行时。

2022-11-25 11:29:21 132

原创 MySQL理论:脏读、不可重复读、幻读

脏读是指事务读取到其他事务正在处理的未提交数据不可重复读指在并发更新时,另一个事务前后执行相同条件的查询得到的数据不一致幻读指并发插入、删除时,另一个事务前后执行相同条件的查询得到的数据不一致。

2022-11-19 17:21:32 23 4

原创 Docker Dockerfile

Dockerfile是用于构建docker镜像的文件Dockerfile里包含了构建镜像所需的“指令”Dockerfile有其特定的语法规则Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

2022-11-07 11:13:04 51 2

原创 单点登录系统和传统登录的区别

1、多个应用系统独立部署和使用,需要通过单点登录实现仅在某系统中进行一次登录即可免登录进入其它应用系统,此时可调用本产品提供的单点登录接口实现产品系统的用户名、密码校验。通过登录页面根据用户名查询用户信息,判断密码是否正确,正确则将用户信息写到session,访问的时候通过从session中获取用户信息,判断是否已登录,登录则允许访问。2、跨系统调用本产品功能时,产品系统需要获取客户系统的用户信息进行校验,验证通过后才允许调用产品系统相关功能。1. 每个微服务都要进行登录校验,十分麻烦,我们需要的是。

2022-11-06 15:35:28 176 2

原创 小黄车编程 考试试题

小黄车编程题

2022-11-02 20:50:42 306 1

原创 SpringIOC和AOP

2.Spring可以解决企业应用开发的复杂性3.Spring有两个核心部分:IOC、AOP​ (1)IOC:控制反转,把创建好的对象给Spring进行管理​ (2)AOP:面向切面编程,不修改源代码的情况下进行功能增加。

2022-10-24 18:15:15 28 2

原创 进程 线程 协程 的区别

1.进程是资源分配的单位;2.线程是CPU调度的单位;3.协程是一种比线程更加轻量级的存在,协程不是被操作系统内核所管理,而完全是由程序所控制(也就是在用户态执行)

2022-10-21 08:29:33 23 4

原创 JAVA 线程实现/创建方式

有返回值的任务必须实现 Callable 接口,类似的,无返回值的任务必须 Runnable 接口。执行 Callable 任务后,可以获取一个 Future 的对象,在该对象上调用 get 就可以获取到 Callable 任务 返回的 Object 了,再结合线程池接口 ExecutorService 就可以实现传说中有返回结果的多线程了。如果自己的类已经 extends 另一个类,就无法直接 extends Thread,此时,可以实现一个 Runnable 接口。

2022-10-20 09:02:48 24 4

原创 常见限流算法

Google开源工具包Guava提供了限流工具类RateLimiter,该类基于令牌桶算法(Token Bucket)来完成限流,非常易于使用.RateLimiter经常用于限制对一些物理资源或者逻辑资源的访问速率.它支持两种获取permits接口,一种是如果拿不到立刻返回false,一种会阻塞等待一段时间看能不能拿到。原理见《guava--RateLimiter源码分析》

2022-10-08 14:58:06 25 3

原创 阿里巴巴sentinel限流

想象一下这样的场景,在某一秒有大量的请求到来,而接下来的几秒则处于空闲状态,我们希望系统能够在接下来的空闲期间逐渐处理这些请求,而不是在第一秒直接拒绝多余的请求。Sentinel 通过限制资源并发线程的数量,来减少不稳定资源对其它资源的影响,当某个资源出现不稳定的情况下,例如响应时间变长,对资源的直接影响就是会造成线程数的逐步堆积。即如果系统在此之前长期处于空闲的状态,我们希望处理请求的数量是缓步的增多,经过预期的时间以后,到达系统处理请求个数的最大值。该字段的值有以下三种选项,分别对应不同的场景。

2022-10-05 09:54:31 166 3

原创 缓存-SpringCache

举个例子:在我们程序中,很多配置数据(例如一个商品信息、一个白名单、一个第三方客户的回调接口),这些数据存在我们的DB上,数据量比较少,但是程序访问很频繁,这种情况下,将数据放一份到我们的内存缓存中将大大提升我们系统的访问效率,因为减少了数据库访问,有可能减少了数据库建连时间、网络数据传输时间、数据库磁盘寻址时间……@Cacheble注解表示这个方法的结果可以被缓存,调用该方法前,会先检查对应的缓存key在缓存中是否已经有值,如果有就直接返回,不调用方法,如果没有,就会调用方法,同时把结果缓存起来。

2022-10-05 09:44:38 143

原创 分布式锁-Redisson

Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。

2022-10-01 16:24:46 33 2

原创 高并发下缓存失效的三个问题-穿透、雪崩、击穿

客户端发起一个查询请求的时候,首先去缓存中查询,如果数据在缓存中存在,则直接将缓存中的数据返回给客户端;如果数据在缓存中不存在,则继续查询数据库,如果数据在数据库中存在,则将该数据放入缓存中,并返回给客户端,如果数据在数据库中也不存在,则直接返回null给客户端。

2022-09-30 09:12:18 248

原创 rabbitmq简介以及使用场景

订单系统:用户下单后,订单系统完成持久化处理,将消息写入消息队列,返回用户订单下单成功库存系统:订阅下单的消息,采用拉/推的方式,获取下单信息,库存系统根据下单信息,进行库存操作假如:在下单时库存系统不能正常使用。这个短暂的高峰期积压是没问题的,因为高峰期过了之后,每秒就只有50个请求进入MQ了,但是系统还是按照每秒2000个请求的速度在处理,所以说,只要高峰期一过,系统就会快速将积压的消息消费掉。引入了MQ之后,虽然ABCD系统没出错,但MQ挂了以后,整个系统也会崩溃。以上三个任务完成后,返回给客户端。

2022-09-29 20:58:24 62 3

原创 消息队列-RabbitMQ

消息队列-RabbitMQ

2022-09-28 20:55:17 326 1

原创 RabbitMQ的工作模式及原理

RabbitMQ的工作模式及原理

2022-09-27 14:23:48 37

空空如也

空空如也

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

TA关注的人

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