SpringSecurity框架入门
简介官网 Spring Security是一个Java框架,用于保护应用程序的安全性。它提供了一套全面的安全解决方案,包括身份验证、授权、防止攻击等功能。Spring Security基于过滤器链的概念,可以轻松地集成到任何基于Spring的应用程序中。它支持多种身份验证选项和授权策略,开发人员可以根据需要选择适合的方式。此外,Spring Security还提供了一些附加功能,如集成第三方身份验证提供商和单点登录,以及会话管理和密码编码等。总之,Spring Security是一个强大且易于使用的框架,可以帮助开发人员提高应用程序的安全性和可靠性。 👉🏻示例代码地址 主要功能:1. 认证(Authentication) 用户身份验证:Spring Security 通过多种方式(如表单登录、HTTP Basic、OAuth2 等)验证用户身份,确保只有合法用户能够访问系统。 灵活的认证机制:支持自定义认证流程和提供者,便于与各种身份验证方案集成。 2. 授权(Authorization) 访问控制:在用户通过认证后,Spring Security...
常见排序算法比较
常见排序算法比较算法分类比较类排序: 通过元素间的比较确定顺序,时间复杂度下限为 **O(n log n)**(基于比较决策树模型) 非比较排序: 利用数据特定属性(如整数范围、位数),突破比较排序下限,时间复杂度可达到 O(n) 排序方法 平均时间复杂度 最坏时间复杂度 最好时间复杂度 空间复杂度 稳定性 插入排序 O(n^2) O(n^2) O(n) O(1) 稳定 选择排序 O(n^2) O(n^2) O(n^2) O(1) 不稳定 冒泡排序 O(n^2) O(n^2) O(n) O(1) 稳定 快速排序 O(n log n) O(n^2) O(n log n) O(log n) 不稳定 归并排序 O(n log n) O(n log n) O(n log n) O(n) 稳定 堆排序 O(n log n) O(n log n) O(n log n) O(1) 不稳定 计数排序 O(n + k) O(n + k) O(n + k) O(k) 稳定 桶排序 O(n + k) O(n^2) O(n) O(n +...
深入浅出消息队列(RabbitMQ)
深入浅出消息队列 (RabbitMQ)1. 前言在分布式系统中,消息队列 (Message Queue, MQ) 经常被用来实现异步解耦、流量削峰等功能。它能够让系统在高并发环境下更具弹性,并且在各个模块之间实现“松耦合”的交互。 什么是消息队列?消息队列是指在消息传输过程中保存消息的容器,可以帮助不同进程/应用之间异步通信。 你可以把消息队列想象成一个“菜鸟驿站”。就像你网购时,快递先送到驿站,你再去取货一样,消息队列里先存储消息,等消费者来“取走”处理。这样,生产消息的部分(就像快递员)和处理消息的部分(就像取快递的人)就不会因为时间不匹配而互相拖累。简单来说,菜鸟驿站帮助解决快递和取件的时差问题,消息队列则解决了系统中生产和消费的速度差异问题。 为什么要使用消息队列? 系统解耦:生产者和消费者不必直接调用。 异步处理:生产者把任务丢到队列即可,后续由消费者异步执行。 流量削峰:将突发的请求平滑化处理,防止服务被压垮。 数据分发:在分布式环境中,能快速地把数据分发给不同的消费者。 2. MQ...
拦截器Interceptor与过滤器Filter
拦截器Interceptor定义: SpringMVC内置拦截机制,允许在请求被目标方法处理的前后进行拦截,执行一些额外操作;比如:权限验证,日志记录,数据共享等。 实现步骤1、自定义拦截器1234567891011121314151617181920212223242526@Componentpublic class MyHandlerInterceptor01 implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handler){ System.out.println("MyInterceptor01...preHandle..."); return true; } /** * postHandle是controller方法执行之后 */ ...
搞懂Cookie,Session,Token三种认证授权方式
Cookie,Seesion和Token区别及用途 简介Cookie、Session、Token 和 JWT(JSON Web Token)都是用于在网络应用中进行身份验证和状态管理的机制。虽然它们有一些相似之处,但在实际应用中有着不同的作用和特点。 Cookie定义: HTTP 是无状态的协议(对于事务处理没有记忆能力,每次客户端和服务端会话完成时,服务端不会保存任何会话信息):每个请求都是完全独立的,服务端无法确认当前访问者的身份信息,无法分辨上一次的请求发送者和这一次的发送者是不是同一个人。所以服务器与浏览器为了进行会话跟踪(知道是谁在访问我),就必须主动的去维护一个状态,这个状态用于告知服务端前后两个请求是否来自同一浏览器。而这个状态需要通过 cookie 或者 session 去实现。 cookie 存储在客户端:cookie 是服务器发送到用户浏览器并保存在本地的一小块数据,它会在浏览器下次向同一服务器再发起请求时被携带并发送到服务器上。 cookie 是不可跨域的:每个 cookie...
Redisson分布式锁
概览 Redisson不只是一个 Java Redis 客户端,它是一个以内存 Redis 服务器作为后端的处理 Java 对象(如 java.util.List, java.util.Map, java.util.Set, java.util.concurrent.locks.Lock 等)的一个框架。 Redisson提供了使用Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放在处理业务逻辑上,Redisson底层采用的是Netty框架。 基于 SETNX 实现的分布式锁适用于简单场景,但在高可靠性、高并发的生产环境中,建议使用更完善的分布式锁实现。 Redisson实现了Redis文档中提到像分布式锁Lock这样的更高阶应用场景。事实上Redisson并没有不止步于此,在分布式锁的基础上还提供了联锁(MultiLock),读写锁(ReadWriteLock),公平锁(Fair...
Spring
Spring介绍Spring是一个IOC(DI)和AOP框架Spring的优良特性 ·非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API ·依赖注入:DI是控制反转(IOC)最经典的实现 ·面向切面编程:AOP ·组件化:Spring通过众多简单的组件配置组合成一个复杂应用 ·一站化:Spring提供了一系列框架,解决了应用开发中的众多问题 Spring模块划分 Spring-IOC容器组件和容器 ·组件:具有一定功能的对象。 ·容器:管理组件(创建,获取,保存,销毁) 可以将组件和容器的关系比喻成“房间”与“家具”的关系: 组件:可以看作是各种“家具”,比如桌子、椅子、灯、书架等。它们是构成界面或应用功能的基本元素,完成特定的功能任务,比如显示文本、输入数据等。 容器:则是“房间”或“空间”,用于装下各种家具。容器负责管理组件的布局、位置和相互之间的关系,同时也可能控制组件的生命周期和事件传递。 常见的容器:Servlet 容器(如 Tomcat、Jetty):用于管理和运行 Java Web 应用,处理 HTTP...
黑马点评面试要点
简历上展示黑马点评项目描述黑马点评项目是一个springboot开发的前后端分离项目,使用了redis集群、tomcat集群、MySQL集群提高服务性能。类似于大众点评,实现了短信登录、商户查询缓存、优惠卷秒杀、附近的商户、UV统计、用户签到、好友关注、达人探店 八个部分形成了闭环。其中重点使用了分布式锁实现了一人一单功能、项目中大量使用了Redis 的知识。 所用技术SpringBoot+nginx+MySql+Lombok+MyBatis-Plus+Hutool+Redis 使用 Redis 解决了在集群模式下的 Session共享问题,使用拦截器实现用户的登录校验和权限刷新 基于Cache Aside模式解决数据库与缓存的一致性问题 使用 Redis 对高频访问的信息进行缓存,降低了数据库查询的压力,解决了缓存穿透、雪崩、击穿问题使用 Redis + Lua脚 本实现对用户秒杀资格的预检,同时用乐观锁解决秒杀产生的超卖问题 使用Redis分布式锁解决了在集群模式下一人一单的线程安全问题 基于stream结构作为消息队列,实现异步秒杀下单 使用Redis的 ZSet...
网络编程懒人入门(十六):手把手教你使用网络编程抓包神器Wireshark
引言跟网络通信有关的应用场景下(比如Web系统、IM聊天应用、消息推送系统等),经常要用到网络抓包工具,用以验证客户端和服务器之间收发的数据包是否正确。以IM聊天系统为例,TLS/SSL加密开启到底有没有成功?加密效果怎么样?端到端加密后的聊天内容安全强度够不够?等等这些疑问,都需要通过网络抓包抓出样本来分析和验证。 Wireshark是一款开源和跨平台的抓包工具。它通过调用操作系统底层的API,直接捕获网卡上的数据包,因此捕获的数据包详细、功能强大。但Wireshark本身稍显复杂,本文将以用抓包实例,手把手带你一步步用好Wireshark,并真正理解抓到的数据包的各项含义。 ireshak的安装和基本使用安装:直接通过官方下载对应的安装包即可...
网络编程懒人入门(十五):外行也能读懂的网络硬件设备功能原理速成
引言本文是《网络编程懒人入门》系列文章的第15篇,本篇将继续以通俗易懂的文字,帮你无脑理解各种基础网络硬件设备的功能原理。 本文不罗列复杂、全面的计算机网络理论,目的是让阅读者脱离以往计算机理论专著的枯燥内容,在寓教于乐的语言文字中轻松快速的掌握这些知识,适合入门者,计网大佬和网络编程老油条们请略过。 如何连接个人计算机(PC)?在发明网络之前,个人计算机之间是独立工作的,没有网卡、网线或协议栈,主要使用磁盘、CD 和其他东西来传输数据。 后来,网线出现了。 最小的网络单元由网线、网卡和协议栈组成: 1)网线起着物理介质的作用,以传输比特流 / 电信号; 2)网卡将转换数据(例如:它将计算机存储的数据转换为网线的比特流 /...