【Redis进阶】不止是缓存!Redis的5种核心数据结构与实战场景全解析
本文深入浅出地解析了Redis五大核心数据结构:String、Hash、List、Set和ZSet,结合图解与实战场景,涵盖缓存、计数器、分布式锁、购物车、消息队列、排行榜等典型应用,助你摆脱“只会SET/GET”的困境,真正发挥Redis的高性能潜力。
初始化Map大小并非用多少指定多少
初始化HashMap时,指定容量并非直接生效,而是会调整为最近的2的幂次(如1变2,7变8)。为避免扩容开销,建议使用Guava工具Maps.newHashMapWithExpectedSize(),或手动按公式:容量 = 预期元素数 / 0.75 + 1 设置。
FilterChainProxy
`FilterChainProxy` 是 Spring Security 的核心过滤器链代理,通过 `SecurityFilterChain` 管理多个安全过滤器。请求到来时,先经防火墙封装,再匹配适用的过滤器链,最终由虚拟链依次执行。十五个安全过滤器由此协同工作,保障应用安全。
浏览器的正常请求和回应
预检通过后,浏览器每次CORS请求自动携带Origin头,服务器响应则必含Access-Control-Allow-Origin字段,表明允许的源,实现跨域资源共享,确保通信安全。
OAuth2.0使用场景
A网站需打印用户存于B网站的照片时,传统方式需共享账号密码,而OAuth2只需获取临时通行令牌,按需授权资源访问权限,更安全灵活。注意:OAuth2侧重服务间资源授权,不同于单点登录。Spring Security集成OAuth2可实现资源共享与单点登录。
盲注和二阶 SQL 注入
SQL盲注利用延迟等间接方式探测数据库操作,即使无直接数据回显。攻击者通过sleep()或耗时子查询引发响应延迟,判断语句执行情况,进而窃取或篡改数据。二阶SQL注入则利用存储后二次使用的恶意数据,隐蔽性强,需结合参数化查询与严格输入验证防范。
成功的 SQL 注入攻击的后果
SQL注入可导致多种安全威胁:绕过身份验证、窃取敏感信息、篡改或删除数据、破坏网页内容,甚至执行远程系统命令。利用如xp_cmdshell等存储过程,攻击者还能控制数据库服务器操作系统,造成严重危害。
MyBatis常见配置
MyBatis配置优先级:方法参数 > resource/url > properties体内。支持多环境配置,通过environments指定,默认使用development。事务管理支持JDBC和MANAGED,结合Spring时由容器管理。常用属性包括缓存、延迟加载、执行器类型等,灵活适配不同场景。
SpringCloud概述
Spring Cloud是微服务架构的综合解决方案,由Spring团队推出,具备约定大于配置、组件丰富、开箱即用等特点。为解决Netflix组件停更问题,阿里推出Spring Cloud Alibaba,集成Nacos、Sentinel、Seata等高性能中间件,成为主流技术栈选择。
RabbitMQ集群部署
本文介绍RabbitMQ集群的部署与高可用方案,涵盖普通模式、镜像模式及仲裁队列。通过Docker搭建三节点集群,配置Erlang Cookie与节点发现机制,实现队列数据共享。针对单点故障问题,引入镜像队列(exactly、all、nodes模式)实现主从复制,并验证高可用性。最后重点介绍RabbitMQ 3.8+推荐的仲裁队列,具备自动故障转移、更强一致性等优势,是生产环境首选方案。(239字)
MongoDB相关概念
MongoDB是一款高性能、无模式的文档型NoSQL数据库,适用于高并发、海量数据、高扩展性场景。支持BSON格式,灵活存储复杂数据,广泛应用于社交、游戏、物联网等领域,尤其适合无需事务、频繁读写、快速迭代的应用。
MongoDB单机部署
本文介绍MongoDB在Windows和Linux系统的安装启动方法,包括下载地址、版本选择(稳定版/开发版)、解压配置、命令行与配置文件启动方式,以及常见问题解决。同时涵盖Shell连接、图形化工具Compass的使用,并提供环境变量设置、日志与数据目录配置等详细步骤,确保单机部署顺利进行。
领域模型图(数据架构/ER图)
数据架构的核心输出是ER图,通过四色原型法进行领域建模:红色MI表示时标事件,绿色PPT为业务实体,黄色Role为参与角色,蓝色DESC提供描述属性。以风控系统为例,从业务流程中提炼MI,构建PPT实体,补充Role与DESC,最终提取出实体、关系及约束,形成简洁清晰的ER图,支撑数据模型设计。
容器化部署引擎Docker
Docker简介:解决项目依赖复杂、环境不一致等问题,通过镜像打包应用及依赖,实现跨平台运行;利用容器隔离运行,秒级启动,资源占用少。相比虚拟机更轻量,支持高密度部署,提升开发、测试、生产环境一致性与交付效率。(238字)
开发环境搭建
工欲善其事,必先利其器。学习前请确保电脑内存16G以上(建议32G),推荐使用便携显示器分屏开发以提升效率。下载并配置虚拟机(IP:192.168.101.68)、安装VMware、FinalShell远程连接,导入CentOS7虚拟机并启动Docker、MySQL等服务。IDEA中配置JDK11、Maven(3.8.6)及本地仓库,设置编码与自动导包。安装Git并配置账号信息。通过Gitee Fork黑马商城项目,克隆到本地,创建hmall数据库并导入SQL脚本。前端使用nginx部署,启动后访问http://localhost:18080登录测试。
2.部署篇(开发部署)
本文介绍如何将SpringCloud应用部署至云端Kubernetes集群。通过EDAS导入ACK集群,初始化应用环境,利用IDE插件快速上传war/jar包部署,提升开发效率。后续将讲解运维视角下的自动化发布流程。(236字)
安装ES、Kibana、IK
本文介绍如何通过Docker部署单节点Elasticsearch与Kibana,并配置IK分词器。涵盖网络创建、镜像加载、容器运行、数据卷挂载等步骤,实现ES与Kibana互联;通过Kibana的DevTools操作ES;离线安装IK分词器并配置扩展词典与停用词典,提升中文分词效果;最后处理常见启动报错问题,确保服务正常运行。(238字)
Gateway服务网关
网关是微服务架构的统一入口,实现请求路由、权限控制与限流。SpringCloud Gateway基于WebFlux,性能优于Zuul。支持断言与过滤器工厂,可自定义全局过滤器,解决跨域等问题,是微服务流量管控的核心组件。
Ribbon负载均衡
本节深入讲解@LoadBalanced注解的作用,剖析Ribbon实现客户端负载均衡的原理,涵盖负载均衡分类、算法、自定义策略及饥饿加载优化,帮助读者全面理解微服务中负载均衡的核心机制与应用实践。
@RefreshScope热更新原理
@RefreshScope通过组合注解实现配置热更新,核心在于@Scope("refresh")。其利用代理模式与缓存机制,将Bean纳入自定义刷新作用域,配置变更时清空缓存,触发Spring重新创建Bean实例,从而动态加载最新配置,实现毫秒级更新。
什么是WebFlux
CORS(跨域资源共享)是W3C标准,允许浏览器向跨源服务器发起XMLHttpRequest请求,突破AJAX同源限制。浏览器自动处理CORS通信,开发者无需特殊编码。关键在于服务器需实现CORS接口。请求分为简单和非简单两类,后者会先发送OPTIONS预检请求。相比仅支持GET的JSONP,CORS功能更强大,兼容现代浏览器。
2-MongoDB单机部署
本文介绍MongoDB在Windows和Linux系统的安装启动方法,包括下载、解压、配置数据目录及启动方式(命令行或配置文件)。支持设置环境变量、修改端口、日志与存储路径,并通过mongo shell或Compass图形化工具连接。Linux下还需配置防火墙与关闭服务,确保数据库稳定运行。
3-MongoDB常用命令
本文介绍如何使用MongoDB存储文章评论数据,涵盖数据库与集合的创建、删除,文档的增删改查、批量操作、投影查询、分页排序等功能,结合实际示例说明CRUD操作及注意事项,帮助快速掌握MongoDB基本用法。
数据库
数据库领域前沿技术分享与交流