自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数据结构归纳-队列

队列是一个有序列表,可用数组或链表实现。遵循先进先出原则;示意图:使用数组模拟队列队列本身是有序列表,若用数组的结构来存储队列的数据,则队列的声明就如上图,maxSize就是它的最大容量。因为队列的输入 输出分别从队列的前后端实现,因此要定义两个变量front和rear分别记录队列的前后端下标,front会随着输出而改变,rear随着输入而改变。如上图所示;当将数据存入队列时定义方法名为addQueue,此时有两个步骤:当队列不为满时(!rear==maxSize-1)将尾.

2021-03-25 15:56:40 92

原创 数据结构归纳-稀疏数组

稀疏数组的应用场景:稀疏数组的核心概念是在实际的应用场景中使用合理的数据结构对数据进行存储,稀疏数组最经典的举例想必就是五子棋游戏的存/读盘操作。但用户有存盘需求时肯定是正在游戏中。此时肯定会有很多的无用数据,如果直接存盘肯定会对IO和存储造成压力。此时就需要将棋盘的二维数组转化为稀疏数组进行存盘,减小IO和存储压力。稀疏数组其实也是二维数组,但是将普通二维数组变为没有无用数据的二维数组。以五子棋盘游戏为例普通存储棋盘的二维数组:有很多无用的没有棋子的占位0二维数组转化成稀疏数组:彻底

2021-03-23 16:31:13 251

原创 配置注解进行参数校验(配合全局异常)

在编写业务代码时无可避免的进行参数校验,如 if (null != xxx) { … }这样判断非空代码无可避免地不太优雅此时如果可以在字段上添加注解即可进行非空校验的报错,代码就显得很简单,优雅。使用springboot的validation组件即可实现。首先在pom.xml中声明validation组件:<!-- md5 --> <dependency> <groupId>commons-codec</gro.

2021-03-20 22:01:28 301

原创 springboot自定义用户参数(拦截controller的参数进行操作)

在业务逻辑中,会有这样的场景:将用户信息存到session中,将用户信息存储在session中,为保证用户信息安全,将cookie的值设置为uuid,将存储用户信息的session的key设置为cookie的uuid。@Override public RespBean doLogin(LoginVo loginVo, HttpServletRequest request, HttpServletResponse response) { String mobile = logi.

2021-03-18 21:20:04 2705

原创 SQL语句性能优化策略

尽量避免在 WHERE 子句中使用 OR 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,可以使用 UNION 合并查询:select id from t where num=10 union all select id from t where num=20。对查询进行优化,应尽量避免全表扫描,首先应考虑在 WHERE 及 ORDER BY 涉及的列上建立索引。应尽量避免在 WHERE 子句中对字段进行 NULL 值判断,创建表时 NULL 是默认值,但大多数时候应该使用 NOT N..

2021-03-17 18:10:50 112

原创 18.缓存预热、缓存雪崩、缓存击穿、缓存穿透、性能指标监控等企业级解决方案

缓存预热 在高请求之前,做好一系列措施,保证大量用户数量点击造成灾难。 请求数量较高主从之间数据吞吐量较大,数据同步操作频度较高 缓存预热解决方案 前置准备工作: 日常例行统计数据访问记录,统计访问频度较高的热点数据利用LRU数据删除策略,构建数据留存队列 例如:storm...

2021-03-15 15:51:44 214 2

原创 17.Cluster集群结构搭建

集群简介 现状问题 业务发展过程中遇到的峰值瓶颈 redis提供的服务OPS可以达到10万/秒,当前业务OPS已经达到20万/秒内存单机容量达到256G,当前业务需求内存容量1T使用集群的方式可以快速解决上述问题 集群架构 集群就是使用网络将若干台计算机联通起来,并提供统一...

2021-03-15 15:50:55 1085 3

原创 16.Redis哨兵

哨兵简介 主机”宕机“后我们要做的事情 将宕机的master下线找一个slave作为master通知所有的slave连接新的master启动新的master与slave全量复制*N+部分复制 *N 但是这伴随着以下问题 谁来确认master宕机了找一个主?怎么找法修改配置后...

2021-03-15 15:50:24 54

原创 15.Redis主从复制

主从复制简介 互联网“三高”架构 高并发高性能高可用 你的"Redis"是否高可用 单机redise风险与问题 问题1 机器故障 现象:硬件故障、系统崩溃 本质:数据丢失,很可能对业务造成灾难性打击 结论:基本上会放弃使用redis问题2 容量瓶颈 现象:内存不足,从16...

2021-03-15 15:50:06 103 2

原创 14.Redis高级数据类型Bitmaps、HyperLogLog、GEO

Bitmaps Bit基本操作 Bitmaps类型的扩展操作 业务场景 电影网站 统计每天某一部电影是否被点播统计每天有多少部电影被点播统计每周/月/年有多少部电影被点播统计年度哪部电影没有被点播 业务分析 对指定key按位进行交、并、非、异或操作,并将结果保存到d...

2021-03-15 15:49:56 127

原创 13.Redis服务器配置redis.conf

服务器端设定 设置服务器以守护进程的方式运行 deamonize yes|no 绑定主机地址 bind 127.0.0.1 设置服务器端口号 port 6379 设置数据库数量 databases 16 日志配置 设置服务器...

2021-03-15 15:49:47 67

原创 12.Redis删除策略

Redis中的数据特征 Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态XX : 具有时效性的数据-1 : 永久有效的数据-2 : 已经国企的数据 或 被删除的数据 或 未定义的数据 数据删除策略 数据删除策略 定时删除惰性删除定...

2021-03-15 15:49:33 82

原创 11.Redis事务、事务锁

事务 一旦成功所有的成功,一个失败,所有一些列连续动作都失败 事务的基本操作 开启事务 multi 作用 设定事务的开启位置,此指令执行后,后续的所有指令均加入到事务中执行事务 exec 作用 设定事务的结束位置,同时执行事务。与multi成对出现,...

2021-03-14 14:18:59 73

原创 10.Redis持久化方式之AOF&AOF和RDB区别场景分析

RDB存储的弊端 存储数据量较大,效率较低——基于快照思想,每次读写都是全部数据,当数据量巨大时,效率非常低大数据量下的IO性能较低基于fork创建子进程,内存产生额外消耗宕机带来的数据丢失风险 解决思路 不写全数据,仅记录部分数据改记录数据未记录操作过程对所有操作均进行记录,...

2021-03-14 14:17:31 469

原创 9.Redis持久化

持久化简介 什么是持久化 利用永久性存储介质将数据进行保存,在特定的事件将保存的数据进行恢复的工作机制称为持久化 为什么要持久化 防止数据的意外丢失,确保数据安全性 持久化的过程保存什么 将当前数据状态进行保存,快照形式,存储数据结果,存储而是简单,关注点在数据 ----...

2021-03-14 14:16:28 104

原创 8.基于Docker安装Redis&在Docker中操作Redis

查看Redis的docker镜像 docker search redis 拉取Redis镜像 docker pull rides:5.0.7查看镜像 docker images启动容器 先要下载redis的redis.conf文件 创建待挂载目录 mkdir -p...

2021-03-14 14:15:39 114

原创 7.使用jedis操作redis数据库

jedis Jedis是Redis官方推荐的Java链接工具 使用前导入,下面的测试建议也导入测试的包 <!-- jidisd的包--><dependency> <groupId>redis.clients</gr...

2021-03-14 14:11:11 318

原创 6.Redis key通用指令以及数据库的通用操作

key通用指令 key特征 key是一个字符串,通过key获取redis中保存的数据 key应该设计那些操作? 对于key自身状态的相关操作,例如:删除,判定存在,获取类型等对于key有效性控制相关操作,例如:有效期设定,判定是否有效,有效状态的切换等对于key快速查询操作,...

2021-03-14 14:07:22 105

原创 5. Redis数据类型综合实践案例

Resid数据类型综合实践案例 业务场景 1.计数器 解决方案 设计计数器,记录调用次数,用于控制业务执行次数。以用户id作为key,使用此时作为value在调用前获取次数,判断是否超过限定次数,不超过次数的情况下,每次调用计数+1,业务调用失败,计数-1为了计数器设置生命周期...

2021-03-14 14:05:10 112

原创 4.Redis list&set&sorted_set

list类型 数据存储需求:存储多个数据,并对数据进入存储空间的顺序进行区分需要的存储数据:一个存储空间保存多个数据,且通过数据可以体现进入顺序list类型:保存多个数据,底层使用双向链表存储结构实现 list类型数据基本操作 添加/修改数据 lpush key va...

2021-03-14 14:03:40 74

原创 3. Redis Hash

Hash类型 存储的困惑 对象类数据的存储如果具有较为频繁的更新需求操作会显得笨重 hash类型 新的存储需求:对一系列存储的数据进行编组,方便管理,典型应用存储对象信息需要的内存结构:一个存储空间保存多少个键值对数据hash类型:底层使用哈希表结构实现数据存储 hash类型数据的基本操作 添加/修改数据 hset key field value 获取数据 hget key field hgetall key 删除数据 hdel key field1 [fie

2021-03-14 14:00:44 74

原创 2. Redis String以及key的约定

数据存储类型介绍 业务数据的特殊性 作为缓存使用 原始业务功能设计 秒杀 618活动 双十一活动 排队购票运营平台监控到的突发高频访问数据 突发市政要闻,被强势关注围观高频、复杂的统计数据 在线人数 投票排行榜 附加功能 系统功能优化或升级 单服务器升级集群Session管理Token管理 Redis 数据类型(5种常用) string --> Stringhash --> Hashmaplist --> LinkListset --> HashSetsorted_se

2021-03-14 13:57:54 205 2

原创 1.Redis简介以及基本操作

问题的抛出 出现的问题: 海量用户高并发 罪魁祸首——关系型数据库: 性能瓶颈:磁盘IO性能低下扩展瓶颈:数据关系复杂,扩展性差,不便于大规模集群 解决思路 降低磁盘IO次数,越低越好 —— 内存存储去除数据间的关系,越简单越好 —— 不存储关系,仅存储数据 Nosql简介 NoSQL: 即Not-OnlySQL(泛指非关系型的数据库),作为关系型数据库的补充。 作用: 应用对于海量用户和海量数据前提吓得数据处理问题。 特征: 可扩容,可伸缩大数据量下得高性能灵活得数据模型高可用 常

2021-03-12 16:00:24 91

原创 登录信息(session)存储方式总结

前端存储cookie用户登录时判断完用户名密码等,将登录对象加密返回到前端,前端用ajax将登录对象存入cookie,此后鉴权等操作都利用cookie解密登录对象进行用户验证。封装一个cookieUtil从request对象中获取cookie信息进行解密使用。参考项目:antifatigueManufacturing后端存储session User user = userMapper.selectById(mobile); if (null == user) { ..

2021-03-12 15:40:15 2020

原创 分布式session各种解决方案

分布式Session问题之前的代码在我们之后一台应用系统,所有操作都在一台Tomcat上,没有什么问题。当我们部署多台系统,配合Nginx的时候会出现用户登录的问题。原因由于 Nginx 使用默认负载均衡策略(轮询),请求将会按照时间顺序逐一分发到后端应用上。也就是说刚开始我们在 Tomcat1 登录之后,用户信息放在 Tomcat1 的 Session 里。过了一会,请求又被 Nginx 分发到了 Tomcat2 上,这时 Tomcat2 上 Session 里还没有用户信息,于是又要登录。

2021-03-05 16:08:10 92

空空如也

空空如也

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

TA关注的人

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