自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(5)
  • 问答 (1)
  • 收藏
  • 关注

原创 HashMap

HashMap 1.概述 ​ HashMap底层基于散列算法实现。HashMap 允许 null 键和 null 值,在计算哈键的哈希值时,null 键哈希值为 0。HashMap 并不保证键值对的顺序,这意味着在进行某些操作后,键值对的顺序可能会发生变化。HashMap 是非线程安全类,在多线程环境下可能会存在问题。 2.原理 ​ HashMap采用了拉链式的散列算法,数据结构采用数组+链表(JDK8之后为数组+链表+红黑树)。进行增删查操作时,先定位到元素的所在桶的位置,之后再从链表中定位该元素。

2021-09-25 09:16:08 407 1

原创 Mysql

Mysql 聚合函数 COUNT(*)计算表中总的行数,不管某列是否有数值或者为空值。 COUNT(字段名)计算指定列下总的行数,计算时将忽略空值的行。 AVG()函数通过计算返回的行数和每一行数据的和,求得指定列数据的平均值。AVG()函数() AVG()函数可以与GROUP BY一起使用,来计算每个分组的平均值。 SUM()是一个求总和的函数,返回指定列值的总和。 SUM()可以与GROUP BY一起使用,来计算每个分组的总和。 MAX()返回指定列中的最大值。 MAX()也可以和GRO

2021-08-31 19:16:39 382

原创 缓存穿透-缓存击穿-缓存雪崩

缓存穿透 缓存击穿 缓存雪崩 缓存穿透 缓存穿透是指客户端请求根本不存在的key,Redis中查询不到,使得请求直达数据库,导致数据库负载过大甚至宕机。一般是由于业务层误删数据或者是有人恶意攻击。 解决方案: 缓存空值,当Redis未命中时缓存该key的空值,当下次访问的时候缓存直接返回空值。此方法会导致冗余,可能会降低性能。 布隆过滤器,把数据存入布隆过滤器,在访问缓存之前过滤器会进行拦截,根据算法判断请求的数据是否存在,如果不存在则直接返回空值。 缓存击穿 缓存击穿是指热点数据

2021-08-25 09:22:56 198

原创 SpringMVC

springmvc DispatcherServlet(重中之重) HandlerMapping HandlerAdapter(主要干活的就是他,其他的主要是指挥调配,调用controller) ViewResolver 流程 前端发送请求给DispatcherServlet DispatcherServlet向HandlerMapping询问谁能处理这些请求 HandleMapping查询到相关组件后返回一个HandlerEx.

2021-08-11 11:04:20 151 1

原创 线程的生命周期

线程的生命周期包括5种状态,新建、就绪、执行、阻塞、死亡。一个线程不能一直霸占CPU所以需要线程经常在就绪态和运行态之间切换。 在我们用new新建了一个线程之后此线程就属于新建状态,此时的线程和其他普通对象类似,由jvm分配内存、初始化变量,此时的线程还不具备线程的动态特征,线程体也不会被执行。 当线程对象调用了start()方法后线程就处于就绪态,jvm会为其创建方法调用栈和程序计数器,但此时的线程也不一定马上就会去运行线程体,而是需要等待jvm的调度。 如果就绪态的线程获得了CPU,则线程开始执行线程体

2021-07-26 17:02:11 201

空空如也

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

TA关注的人

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