当前位置: 首页 > news >正文

做游戏模型素材 网站网站seo基础优化

做游戏模型素材 网站,网站seo基础优化,今天最新的招聘信息,宣汉县建设局网站目录 引出信号量Semaphore ?Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩缓存击穿缓存穿透缓存雪崩 总结 引出 Java多线程——信号量Semaphore是啥 信号量Semaphore ? Semaphore 通常我们叫它信号量, 可以用来控制同时访问特…

在这里插入图片描述

目录

  • 引出
  • 信号量Semaphore ?
  • Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩
    • 缓存击穿
    • 缓存穿透
    • 缓存雪崩
  • 总结

引出

Java多线程——信号量Semaphore是啥


信号量Semaphore ?

Semaphore 通常我们叫它信号量, 可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以保证合理的使用资源。线程限流,如连接池、停车场。

public class App11 {public static void main(String[] args) throws InterruptedException {//1. 创建信号量设置并发线程数,允许最大并发线程数是3Semaphore semaphore = new Semaphore(3);//2. 循环创建6个线程,会看到每次执行3个线程for (int i = 0; i < 6; i++) {new Thread(() -> {try {//3. 获取许可,在达到限制并发线程数之前将可以正常执行线程;否则要等待其他线程释放许可semaphore.acquire();System.out.println(Thread.currentThread().getName() + ":进入停车场");TimeUnit.SECONDS.sleep(3);System.out.println(Thread.currentThread().getName() + ":离开停车场");} catch (InterruptedException e) {e.printStackTrace();} finally {//4. 释放许可semaphore.release();}}, "车辆" + i).start();}}
}

在上述示例中,Semaphore 用于限制同时可以获取许可的线程数量。每个线程在执行前通过 semaphore.acquire() 获取一个许可,执行后通过 semaphore.release() 释放许可。这样,最多只有指定数量的线程可以同时访问资源,其他线程需要等待。

Redis冲冲冲——缓存三兄弟:缓存击穿、穿透、雪崩

缓存击穿

缓存击穿:redis中没有,但是数据库有

顺序:先查缓存,判断缓存是否存在;如果缓存存在,直接返回数据;如果缓存不存在,則查询数据库,将数据库的数据存入到缓存

在这里插入图片描述

解决方案:将热点数据设置过期时间长一点;针对数据库的热点访问方法上分布式锁;

缓存穿透

缓存穿透:redis中没有,数据库也没有

在这里插入图片描述

解决方案:

(1)将不存在的key,在redis设置值为null;

(2)使用布隆过滤器;

原理:https://zhuanlan.zhihu.com/p/616911933

在这里插入图片描述

布隆过滤器:

如果确认key不存在于redis中,那么就一定不存在;

它说key存在,就有可能存在,也可能不存在! (误差)

在这里插入图片描述

布隆过滤器

1、根据配置类中的 key的数量 ,误差率,计算位图数组【二维数组】

2、通过布隆过滤器存放key的时候,会计算出需要多少个hash函数,由hash函数算出多少个位图位置需要设定为1

3、查询时,根据对应的hash函数,判断对应的位置值是否都为1;如果有位置为0,则表示key一定不存在于该redis服务器中;如果全部位置都为1,则表示key可能存在于redis服务器中;

缓存雪崩

缓存雪崩:

Redis的缓存雪崩是指当Redis中大量缓存数据同时失效或者被清空时,大量的请求会直接打到数据库上,导致数据库瞬时压力过大,甚至宕机的情况。

造成缓存雪崩的原因主要有两个:

1.相同的过期时间:当Redis中大量的缓存数据设置相同的过期时间时,这些数据很可能会在同一时间点同时失效,导致大量请求直接打到数据库上。

2.缓存集中失效:当服务器重启、网络故障等因素导致Redis服务不可用,且缓存数据没有自动进行容错处理,当服务恢复时大量的数据同时被重新加载到缓存中,也会导致大量请求直接打到数据库上。

预防缓存雪崩的方法主要有以下几种:

1.设置不同的过期时间:可以将缓存数据的过期时间分散开,避免大量缓存数据在同一时间点失效。

2.使用加锁:可以将所有请求都先进行加锁操作,当某个请求去查询数据库时,如果还没有加载到缓存中,则只让单个线程去执行加载操作,其他线程等待该线程完成后再次进行判断,避免瞬间都去访问数据库从而引起雪崩。

3.提前加载预热:在系统低峰期,可以提前将部分热点数据加载到缓存中,这样可以避免在高峰期缓存数据失效时全部打到数据库上。

4.使用多级缓存:可以在Redis缓存之上再使用一层缓存,例如本地缓存等,当Redis缓存失效时,还能够从本地缓存中获取数据,避免直接打到数据库上。

在这里插入图片描述

本地缓存:ehcache oscache spring自带缓存 持久层框架的缓存


总结

Java多线程——信号量Semaphore是啥

http://www.tj-hxxt.cn/news/96243.html

相关文章:

  • 如何看网站是不是织梦做的seo赚钱培训课程
  • 怎么在手机上制作网站成功的软文推广
  • ps 矢量素材网站搜索风云排行榜
  • 订阅号可以做网站么百度运营推广
  • 天津行业建站百度公司招聘
  • 网站建设的优点与不足seo页面排名优化
  • 手机网站下拉菜单代码aso优化{ }贴吧
  • 做网站需要买ip地址吗全自动引流推广软件下载
  • 网站环境搭建地推推广方案
  • 上海专业网站建设案例济南网络优化哪家专业
  • 网站ftp用户名和密码西安网站建设公司电话
  • 虚拟主机怎么弄网站竞价服务托管价格
  • 做电子政务网站怎么开通网站平台
  • 诸城网络营销知乎seo
  • 做网站的股哥东莞推广平台有哪些
  • wordpress选不了中文天津外贸seo推广
  • 动态ip地址做网站aso优化app推广
  • 煎蛋网站用什么做的网络营销有哪些推广平台
  • 滨海县做网站注册淘宝小程序旺道seo推广系统怎么收费
  • 邮政招c1驾驶员8000元杭州seo博客
  • 网站建设数据库软件引流推广广告怎么写
  • 知名网站建设官网爱站网关键词
  • 做视频的软件模板下载网站2345浏览器网页版
  • dreamweaver做的电子商务网站友链出售
  • 鄂州网红打卡地方seo教程论坛
  • 100个免费邮箱号码seo文章推广
  • 自学设计的网站成都网站优化排名
  • 北京建站活动推广软文范例
  • 优秀的网页优化内容
  • php自己做网站吗徐州网站设计