自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 仿QQ抽屉导航栏

一、需求对QQ抽屉导航栏效果进行复现。二、实现方式DrawerLayoutViewDragHelper自定义ViewGroup三、调研DrawerLayoutDrawerLayout包含两个子布局,内容布局以及菜单栏布局。实现 addDrawerListener接口以及在回调方法里进行逻辑处理。ViewDragHelperView拖拽帮助类,创建实例并重写callback接口回调方法处理逻辑。自定义ViewGroup重写事件有关方法,针对事件进行布局处理。确

2021-09-22 11:42:37 224

原创 虚拟机对象探索

1.对象的内存布局在HotSpot虚拟机里,对象在堆内存中的存储布局可以划分为三个部分:对象头、实例数据、对齐填充。虚拟机中对象的对象头包括俩类信息:用于存储对象自身的运行时数据,如哈希吗、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等,在32位和64位的虚拟机中分别为32和64个比特,官方称为“Mark Word”。考虑到虚拟机的空间效率,Mark Word被设计成一个有着动态定义的数据结构,根据对象的复用自己的存储空间。类型指针,即对象指向它的类型元数据的指针,Java虚

2020-12-08 23:43:02 184

原创 Java内存区域

1.运行时数据区域Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规范》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域。1.1程序计数器程序计数器是一块较小的内存空间,他可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器、分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。

2020-12-08 23:10:38 129

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

缓存穿透在默认的情况下,用户请求数据时,会先在缓存(Redis)中查找,若缓存未命中,再在数据库中查找,一旦大量的请求数据(秒杀场景)缓存都没有命中的话,会全部转移到数据库上,造成数据库极大压力,可能导致数据库崩溃。解决方法布隆过滤器对所有可能查询的参数以Hash的方式存储,能够快速的确定是否存在这个值,在控制层直接拦截,检验不通过直接返回,减轻了存储系统压力。缓存空对象一次请求若在缓存和数据库中都没找到,就在缓存中放一个空对象用于处理后续请求缺点:存储对象需要空间,大量的空对

2020-11-04 10:53:42 117

原创 Redis 事务

Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证:事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。一个事务从开始到执行会经历以下三个阶段:开始事务。命令入队。执行事务。Redis 事务真正支持原子性的前提:开发者不要写有逻辑问题的代码命令描述discard取消事务,放弃执行事务块内的所有命令exec.

2020-11-02 10:36:39 288

原创 Redis 三种特殊数据类型介绍及命令

地理位置(geo)将指定的地理空间位置(纬度、经度、名称)添加到指定的key中。这些数据将会存储到sorted set这样的目的是为了方便使用GEORADIUS或者GEORADIUSBYMEMBER命令对数据进行半径查询等操作。该命令以采用标准格式的参数x,y,所以经度必须在纬度之前。这些坐标的限制是可以被编入索引的,区域面积可以很接近极点但是不能索引。有效的经度从-180度到180度。有效的纬度从-85.05112878度到85.05112878度。当坐标位置超出上述指定范围时,该命令将会返回

2020-11-02 10:09:30 85

原创 Redis有序集合(sorted set)命令

Redis 有序集合和集合一样也是 string 类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个 double 类型的分数。redis 正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。命令描述Zadd向有序集合添加一个或多个成员,或者更新已存在成员的分数Zcount计算在有序集合中指定区间分数的成员数Zrange通过索.

2020-10-30 22:09:14 216

原创 Redis 哈希(Hash)命令

Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Hset将哈希表key中的字段field的值设为valueHgetall获取在哈希表中指定key的所有字段和值Hget获取存储在哈希表中指定字段的值Hexists查看哈希表key中,指定的字段是否存在Hincrby为哈希表key中指定字段的整数值加上增量incrementHlen获取哈希表中字段的数量Hdel.

2020-10-30 17:28:06 827 1

原创 Redis 集合(Set)命令

Redis的Set是String类型的无序集合。集合成员是唯一的,意味着集合中不能出现重复的数据。Redis中集合是通过哈希表实现的,所以删除,添加,查找的复杂度都是O(1)。命令描述Sunion返回所有给定集合的并集Scard获取集合的成员数Srandmember返回集合中一个或多个随机数Smembers返回集合中的所有成员Sinter返回给定所有集合的交集Srem移除集合中一个或多个成员Smove将member元素从source.

2020-10-30 17:11:03 122

原创 Redis 列表(List) 命令

命令描述lindex通过索引获取列中的元素rpush在列表中添加一个或多个值lrange获取列表中指定范围内的元素rpoplpush移除列表的最后一个元素,并将元素添加到另一个列表并返回lrem移除列表元素llen获取列表长度ltrim对列表进行修剪,会保留区间内的元素lpop移除并获取列表的第一个元素lpushx在一个或多个值插入到已存在的列表头部linsert在列表元素前或者后插入元素rpop移除并获取...

2020-10-29 23:12:17 1068

原创 Redis 字符串(String)命令

命令描述setnx只有在key不存在时设置key的值getrange返回key中字符串值的子字符set设置指定key的值get获取指定key的值decr将key中储存的数字值减一decrbykey所储存的值减去给定的减量值incr将key中储存的数字值增一incrbykey中所储存的值加上给定的增量值incrbyfloatkey中所储存的值加上给定的浮点增量值strlen返回key所储存的字符串值得长度app...

2020-10-29 22:40:02 82

原创 Redis-key 基本命令

Redis-keyRedis Keys 命令用于查找所有符合给定模式 pattern 的 keyRedis-key命令:del keyexists keyexpire keykeys *ttl keyrename key newkeyrenamenx key newkeytype key127.0.0.1:6379> keys * #查看当前数据库的所有key1) "age"2) "nnmame"127.0.0.1:6379> del age #删除键值对(in

2020-10-29 22:13:15 112

原创 SpringBoot的快速创建

Spring Initializr:https://start.spring.io/

2020-10-19 23:45:23 83

空空如也

空空如也

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

TA关注的人

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