自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

你今天真好看

不积跬步无以至千里

  • 博客(17)
  • 论坛 (1)
  • 收藏
  • 关注

原创 Shiro整合JWT:实现用户认证和授权

文章目录Shiro+JWT实现认证和授权1. JWT的简单介绍1.1 为什么使用JWT?1.2 JWT的结构2. 封装JWT工具类2.1 jwt属性注入的配置文件2.2 JwtTokenUtil3. Shiro框架整合JWT3.1 封装JWT替换shiro的 UsernamePasswordToken3.2 自定义访问控制拦截器3.3 自定义Realm3.4 自定义认证方式3.5 ShiroConfigShiro+JWT实现认证和授权1. JWT的简单介绍1.1 为什么使用JWT?通过session

2020-07-31 12:54:57 751

原创 Redis实现自定义序列化方式

1. 如何实现redis的序列化?序列化:把对象转换为字节序列的过程称为对象的序列化。反序列化:把字节序列恢复为对象的过程称为对象的反序列化。序列化主要用于存储对象状态为另一种通用格式,比如存储为二进制、xml、json等等,把对象转换成这种格式就叫序列化,而反序列化通常是从这种格式转换回来。使用序列化主要是因为跨平台和对象存储的需求,因为网络上只允许字符串或者二进制格式,而文件需要使用二进制流格式,如果想把一个内存中的对象存储下来就必须使用序列化转换为xml(字符串)、json(字符串)或二进制(

2020-07-30 11:06:45 604

原创 Shiro实现用户认证和授权

文章目录1. Shiro认证1. Shiro认证流程源码分析2. 自定义Realm3. md5+salt密码加盐认证2. Shiro授权1. Shiro认证1. Shiro认证流程源码分析主体(subject)需要携带身份信息和凭证信息,shiro在认证时会将这些信息打包成一个令牌,进入到安全管理器中进行认证。public class TestAuthenticator { public static void main(String[] args) { //1.创建安全

2020-07-28 17:54:15 401

原创 SpringSecurity的配置

文章目录1. SpringSecurity1.1 导包1.2 自定义账号和密码1.3 实现UserDetailsService1.4 HomeController1.5 SecurityConfig1. SpringSecurity1.1 导包 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security&l

2020-07-26 11:21:14 234

原创 Spring Data Elasticsearch

文章目录1. Spring Data Elasticsearch1.1 添加文档1.2 更新文档1.3 查询所有文档1.4 删除文档1.5 根据name和content查询1.6 根据name或content查询1.7 分页查询1.8 排序加分页查询1.9 分页排序查询高亮显示1. Spring Data Elasticsearch官网:https://docs.spring.io/spring-data/elasticsearch/docs/2.0.6.RELEASE/reference/html/

2020-07-24 21:49:02 186

原创 ElasticSearch的倒排索引和查询

1. Restful架构风格1、使用restful风格的url代替传统的url传统的url:http://localhost:8989/xxx/find?id=1RestUrl:http://localhost:8989/xxx/find/12、使用http的四种方法代替服务器的CRUD操作@GetMapping、@PostMaaping、@PutMapping、@GetMapping@RequestMapping可以支持所有的请求方式,可以通过method属性指定请求方式local

2020-07-24 16:09:02 719

原创 二刷剑指Offer:剑指Offer + LeetCode(全47题)

文章目录27. 字符串的排列(递归回溯)26. 二叉搜索树与双向链表(LeetCode)26. 二叉搜索树与双向链表(线索化)24. 路径总和I(LeetCode_112)24. 路径总和II(LeetCode_113)24. 二叉树中和为某一值的路径(递归回溯)23. 二叉树的后序遍历序列(leetCode)23. 二叉树的后序遍历序列(双指针)22. 从上往下打印出二叉树(层序遍历)21. 栈的压入和弹出队列20. 包含min函数的栈19. 顺时针打印矩阵18. 二叉树的镜像18. 翻转二叉树(Leet

2020-07-22 09:03:19 123

原创 CentOS 7安装Elasticsearch和Kibana

文章目录一、安装Elasticsearch二、安装kibana三、IK分词器之前使用es,都是直接在Windows操作,因为安装特别简单,这次向深入学习下ES,没想到Linux的安装这么多报错,记录下一、安装Elasticsearch参考博客:https://blog.csdn.net/widely5201/article/details/1043598711、解压压缩包Elasticsearch:[root@localhost ~]# cd /opt[root@localhost opt]#

2020-07-22 08:51:50 123

原创 二刷剑指Offer:剑指Offer+LeetCode(全53题)

文章目录剑指Offer刷题67. 剪绳子(贪心算法)66. 机器人的运动范围(dfs)65. 矩阵中的路径(回溯算法)64. 滑动窗口的最大值(双端队列)63. 数据流中的中位数62. 二叉搜索树的第k大节点(Leedcode)62. 二叉搜索树的第k小节点(中序遍历)61. 序列化二叉树(Leetcode)61. 序列化二叉树(层序遍历)60. 把二叉树打印成多行(层序遍历)59. 按之字形打印二叉树(层序遍历)58. 对称的二叉树(bfs)57. 二叉树的下一个节点(线索化)56. 删除排序链表中的重复

2020-07-21 17:15:08 425 4

原创 Kafka深度解析

1. 为什么需要kafka?Kafka 是一个分布式的基于发布/订阅模式的消息队列。消息队列是一种先进先出的数据结构。队列是一种先进先出的数据结构,分布式消息队列可以看做将这种数据结构部署到独立的服务器上,应用程序可以通过远程访问接口使用分布式消息队列,进行消息存取操作,进而实现分布式的异步调用。消息生产者应用程序通过远程访问接口将消息推送给消息队列服务器,消息队列服务器将消息写入本地内存队列后立即返回成功后响应给消息生产者。消息队列服务器根据消息订阅列表查找订阅该消息的消息消费者应用程序,将消息队列

2020-07-20 17:40:32 768 1

原创 RabbitMQ的四种工作模式

1. RabbitMQ的工作模式1.1 简单模式一个队列只有一个消费者1.2 工厂模式多个消费者监听同一个队列1.3 订阅模式一个交换机绑定多个消息队列,每个消息队列有一个消费者监听1.4 路由模式一个交换机绑定多个消息队列,每个消息队列都由自己唯一的key,每个消息队列有一个消费者监听2. Spring整合RabbitMQ创建RabbitMQ队列结构:在host1中共创建6个队列,两个交换机,其中交换机ex1连接queue3 和queue4,交换机ex2连接queue5和qu

2020-07-16 16:06:26 271

原创 RabbitMQ安装与配置

RabbitMQ的安装与配置CentOS7 :root ---- heng6240977541. 安装jdk首先确保jdk是存在的:[root@localhost opt]# javac[root@localhost opt]# java -versionjava version "12.0.1" 2019-04-16Java(TM) SE Runtime Environment (build 12.0.1+12)Java HotSpot(TM) 64-Bit Server VM (bui

2020-07-13 14:18:39 82

原创 Redis持久化机制

文章目录1. redis的持久化机制1.1 RDB的工作原理1.2 AOF的工作原理1.3 如何选用持久化策略?1. redis的持久化机制操作系统和安装目录:CentOS 7 ;位置:/opt/redis-4.0.11;启动位置:/opt/redis-4.0.11/src;什么是redis的持久化机制?redis将所有的数据保存在内存中,为了保证数据不丢失,需要将数据从内存中以某种形式同步到硬盘中,然后在特定的时间将保存的数据进行恢复,这一过程就是持久化。持久化是为了防止数据的意外丢失,确保数据的

2020-07-09 19:03:36 173

原创 详细解析Cookie\Session\Token\Redis原理

文章目录1. Cookie和Session1.1 Http是无状态的,有会话的1.2 Cookie会话机制1.3 Session会话机制1.4 Cookie和Session的区别?2. 为什么要用token验证,不用session?2.1 Session会话2.2 Session会话的弊端2.3 token令牌机制2.4 token如何出现的?2.5 JWT(Json web token)3. 存放验证码3.1 将验证码存放在Session中3.2 将验证码存放在redis中4. 存放标识用户信息的tok

2020-07-06 11:55:32 488 1

原创 关于Comparator的自定义排序

这个问题,必须要做一波笔记了。。。。。因为总是记不清升序:// 02 01 01>02if(o1>o2) return 1; //不交换顺序降序:// 02 01 01>02if(o1>o2) return -1; //(交换顺序)//对数组的头进行升序排序Arrays.sort(intervals, new Comparator<int[]>() { /** * 默认升序排序 o2在前,01在后 * 如果返回1,代表不

2020-07-03 15:51:12 116

原创 LinkedList底层源码分析

声明:本文为作者原创,请勿转载,如果转载请注明转载地址。文章目录LinkedList底层源码分析1. 数据域2. 构造函数3. 在链表中添加一个集合3.1 addAll(c)3.2 addAll(size, c)4. 在链表的尾部添加元素4.1 add(E e)4.2 linkLast(E e)5. 在链表的指定位置添加元素5.1 add(int index, E element)5.2 node(int index)5.3 linkBefore(E e, Node succ)6. 判断链表中是否包含

2020-07-02 14:01:32 133 1

原创 ArrayList底层源码分析

文章目录ArrayList底层源码分析1. 继承Serializable接口2. 继承Cloneable接口2.1 浅拷贝2.2 深拷贝3. RandomAccess接口4. ArrayList源码分析4.1 数据域4.2 构造函数4.3 在数组末尾添加一个元素4.3.1 add(E e) 向数组末尾添加一个元素4.3.2 ensureCapacityInternal(int minCapacity)保证存在剩余空间存放要添加的元素4.3.3 grow(int minCapacity)扩容机制4.4 ad

2020-07-02 13:53:21 373

空空如也

茶花女-的留言板

发表于 2020-01-02 最后回复 2020-03-20

空空如也

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

TA关注的人 TA的粉丝

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