- 博客(14)
- 资源 (1)
- 收藏
- 关注
转载 token过期机制
第一种方案:在服务器端保存 Token 状态,用户每次操作都会自动刷新(推迟) Token 的过期时间。该方案在前后端分离的情况下,每秒可能发起很多次请求,每次都去刷新过期时间会产生非常大的代价。如果 Token 的过期时间被持久化到数据库或文件,代价就更大了。所以通常为了提升效率,减少消耗,会把 Token 的过期时保存在缓存或者内存中。第二种方案:使用 Refresh Token,它可以避免频繁的读写操作。这种方案中,服务端不需要刷新 Token 的过期时间,一旦 Token 过期,就反馈给
2021-12-24 11:10:51
5966
原创 springMVC的执行流程
springMVC的执行流程(1)用户发送请求至前端控制器 DispatcherServlet;(2) DispatcherServlet 收到请求后,调用 HandlerMapping 处理器映射器,请求获取 Handle;(3)处理器映射器根据请求 url 找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给 DispatcherServlet;(4)DispatcherServlet 调用 HandlerAdapter 处理器适配器;(5)HandlerAdapter 经
2021-04-12 15:46:46
124
1
原创 登录鉴权
1.用户注册前台需要给我们传递用户名、密码、手机号、手机验证码。验证用户前台传过来的数据是否符合规范,我们使用的Hibernate Validator框架实现的服务端表单校验。短信验证码这块,我们采用的阿里的大于短信接口来做的,我们单独搭建了一个短信微服务,发送的短信请求通过MQ消息由短信微服务消费,进行短信发送。密码我们使用的是Spring提供的BCryptPasswordEncoder加密算法,分成加密和验证两个过程:加密:算法会对明文密码使用UUID随机生成一个salt,使用salt结合密码来
2021-04-12 15:13:51
204
原创 ElasticSearch实现逻辑
我们单独做了一个搜索微服务,使用的ElasticSearch,一个全文检索引擎,我们使用IK分词器进行中文分词。我们为什么用ES呢?因为首先我们的商品数据量比较大,其次搜索匹配如果是在mysql中,必须进行模糊查询,但是前置模糊会导致索引失效,所以我们使用了ElasticSearch来做商品数据的检索。我们在项目中使用的是SpringDataElasticSearch框架来操作ES。ES这一块大体的实现逻辑分为3个部分:mysql中商品数据全量导入ES中我们写了一个单元测试(@Test)脚本,在脚
2021-04-12 15:09:24
296
转载 分享一些第三方免费接口集
百度AccessToken:针对HTTP API调用者,百度AIP开…——接口地址语音识别:通过场景识别优化,为车载导航,智能家居和…——接口地址语音合成:将用户输入的文字,转换成流畅自然的语音输…——接口地址出租车票识别(可在线调用):针对出租车票(现支持北京、上海、深圳)的…——接口地址火车票识别(可在线调用):支持对大陆火车票的车票号、始发站、目的站…——接口地址数字识别(可在线调用):对图像中的阿拉伯数字进行识别提取,适用于…——接口地址通用文字识别(可在线调用):支持多场景下的文字检测识别,多项I
2021-04-01 17:27:59
2745
1
原创 JVM虚拟机
一、基本概念1. 类加载子系统:负责从文件系统或者网络中加载Class信息,加载的信息存放在一块称之为方法区的内存空间2. 方法区:就是存放类信息、常量信息、常量池信息,包括字符串字面量和数字常量3. java堆:在java虚拟机启动的时候建立java堆,它是java程序最主要的内存工作区域,几乎所有的对象实例都存放在java堆中,堆空间是所有线程共享的4. 直接内存:java的NIO库允许java程序使用直接内存,从而提高性能,通常直接内存速度会优于java堆,读写频繁的场合可能会考虑使用5.
2021-01-12 18:40:58
76
原创 MongoDB简介
1.什么是MongoDBMongoDB 是一个跨平台的,面向文档的数据库,是当前 NoSQL 数据库产品中最热门的一种。它介于关系数据库和非关系数据库之间,是非关系数据库当中功能最丰富,最像关系数据库的产品。它支持的数据结构非常松散,是类似 JSON 的 BSON 格式,因此可以存储比较复杂的数据类型。2.MongoDB特点MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它是一个面向集
2021-01-08 08:48:45
636
原创 创建线程的两种方式
一、继承Thread类,重写run()方法步骤:创建类继承Thread重写Thread类的run方法调用线程的start方法(该方法有两个作用:创建线程,调用run方法)为什么重写run方法?Thread类用于描述线程,该类就定义了一个功能,用于存储线程要运行的代码。该存储功能就是run()二、实现Runnable接口步骤:定义类实现Runnable接口覆盖Runnable接口的run()方法将线程要运行的代码存放在该run()方法中通过Thread类建立线程对象将Runna
2021-01-07 19:19:20
300
原创 rocketMQ 3W1H
what?RocketMQ是阿里参照kafka(卡夫卡)思想设计的开源的使用java开发的一套消息中间件产品,主要是用于分布式场景下服务之间的通信。why?相比http这种同步通信协议,mq是一套异步通信框架,可以用于服务之间的异步通信。这样的话,我们就可以使用MQ来削峰填谷、分布式事务等。where?主要是用于分布式场景下,服务之间做异步通信的时候来使用。比如在乐优商城中,商品上架的时候需要更新ES索引库的索引数据的,这时候商品微服务就需要异步通知搜索微服务来更新索引数据。how?我们使用s
2021-01-06 10:31:53
102
原创 创建springboot项目
第一种方式:<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.1.RELEASE</version></parent>第二种方式:<dependencyManagement>
2020-12-29 11:23:07
190
原创 事务的介绍
1.1.什么是事务?当你需要一次执行多条SQL语句时,可以使用事务。通俗一点说,如果这几条SQL语句全部执行成功,则才对数据库进行一次更新,如果有一条SQL语句执行失败,则这几条SQL语句全部不进行执行,这个时候需要用到事务。刘德华《无间道》:去不了终点,回到原点回顾一下数据库事务的四大特性ACID:原子性(Atomicity) 要么都执行,要么都不执行一致性(Consistency) 事务前后的数据都是正确的隔离性(Isolation) 事物之间相互
2020-12-24 10:42:34
198
原创 http常见的请求方式
1、OPTIONS用来描述了目标资源的通信选项,会返回服务器支持预定义URL的HTTP策略。2、HEAD向服务器索与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应小消息头中的元信息。3、GET从指定资源中请求数据。使用GET方法的请求应该只是检索数据,并且不应对数据产生其他影响。4、POST向指定资源提交数据进行处理请求。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 Loadrunner中.
2020-12-22 16:12:25
100
原创 常见的数据结构有哪些?
数组数组是最常用的数据结构,数组的特点是长度固定,可以用下标索引,并且所有的 元素的类型都是一致的。列表列表和数组很相似,只不过它的大小可以改变。列表一般都是通过一个固定大小的 数组来实现的,并且会在需要的时候自动调整大小。列表里可以包含重复的元素。集合集合和列表很相似,不过它不能放重复的元素。堆栈堆栈后入先出,它只能在一个表的一个固定端进行数据结点的插入和删除操作。队列队列跟堆栈有些相似,不同之处是先进先出,在队列里第一个插入的元素也是第一个被删除 的元素。链表链表是一种由多个节点组
2020-12-21 20:04:49
341
原创 Java 中的异常体系和解决方式?
在 Java 中,所有的异常都有一个共同的祖先 java.lang 包中的 Throwable 类。Throwable: 有 两个重要的子类: Exception(异常) 和 Error(错误) ,二者都是 Java 异常处理的重要子类,各自都包含大 量子类。Error(错误):是程序无法处理的错误,表示运行应用程序中较严重问题。大多数错误与代码编 写者执行的操作无关,而表示代码运行时 JVM(Java 虚拟机)出现的问题。例如,Java 虚拟机运行 错误(Virtual MachineError),.
2020-12-19 10:44:57
99
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人