JWT详细教程与使用
JWT详细教程与使用JWT
JSON Web Token(JSON Web令牌)
是一个开放标准(rfc7519),它定义了一种紧凑的、自包含的方式,用于在各方之间以JSON对象安全地传输信息。此信息可以验证和信任,因为它是数字签名的。jwt可以使用秘密〈使用HNAC算法)或使用RSA或ECDSA的公钥/私钥对进行签名。
通过JSON形式作为Web应用中的令牌,用于在各方之间安全地将信息作为JSON对象传输。在数据传输过程中还可以完成数据加密、签名等相关处理。
JWT作用:
授权:一旦用户登录,每个后续请求将包括JWT,从而允许用户访问该令牌允许的路由,服务和资源。它的开销很小并且可以在不同的域中使用。如:单点登录。
信息交换:在各方之间安全地传输信息。JWT可进行签名(如使用公钥/私钥对),因此可确保发件人。由于签名是使用标头和有效负载计算的,因此还可验证内容是否被篡改。
1.传统Session1.1.认证方式http协议本身是一种无状态的协议,如果用户向服务器提供了用户名和密码来进行用户认证,下次请求时,用户还要再一次进行用户认证才行。因为根据http协议 ...
超快速定位OOM
超快速定位OOM什么是OOMOOM是Out Of Memory的缩写。即内存溢出。
为什么会发生OOM如果面试官问这个问题,我知道每个人都能说一大堆,但是我希望大家就回答下面三句话,言简意赅:
业务正常运行起来就需要比较多的内存,而给JVM设置的内存过小。具体表现就是程序跑不起来,或者跑一会就挂了。
GC回收内存的速度赶不上程序运行消耗内存的速度。出现这种情况一般就是往list、map中填充大量数据,内存紧张时JVM拆东墙补西墙补不过来了。所以查询记得分页啊!不需要的字段,尤其是数据量大的字段,就不要返回了!比如文章的内容。
存在内存泄漏情况,久而久之也会造成OOM。哪些情况会造成内存泄漏呢?比如打开文件不释放、创建网络连接不关闭、不再使用的对象未断开引用关系、使用静态变量持有大对象引用……
哪些区域会发生OOMJVM运行时数据区五个区域中,除了程序计数器不会发生OOM,其他区域都有可能。
除了元空间、本地方法栈、虚拟机栈、堆外,还有一块区域大家容易忽略,即直接内存。
不知道什么是直接内存?看这张图
JVM进程挂了,会有哪些可能性从Windows系统角度说,JVM进程如果不是 ...
将本地已有的一个项目上传到新建的git仓库的方法
将本地已有的一个项目上传到新建的git仓库的方法将本地已有的一个非git项目上传到新建的git仓库的方法一共有两种。
一、 克隆+拷贝第一种方法比较简单,直接用把远程仓库拉到本地,然后再把自己本地的项目拷贝到仓库中去。然后push到远程仓库上去即可。此方法适用于本地项目不是一个git仓库的情况。
具体步骤如下:
1、首先克隆git clone git@github.com:yuanmingchen/tensorflow_study.git
2、然后复制自己项目的所有文件到刚刚克隆下来的仓库中3、最后push到远程仓库上面去:git push -u origin master
二、 强行合并两个仓库第二种方法就是先将本地的项目初始化为一个git仓库,然后再强行合并本地仓库和远程仓库,由于这两个仓库是完全不同的两个仓库,所以直接pull都会报错,需要在pull的时候假加上–allow-unrelated-histories才可以pull成功。此方法适用于本地项目已经是一个git仓库的情况。
具体步骤如下:
1、新建git仓库,将本地项目设置为一个git仓库。如果本地项目已经是一个git仓库 ...
Linux系统下一键dd安装Centos6-7、Debian7-10、Ubuntu14-18、Windows等
集合了Linux和WIN包Linux:centos6-7; Ubuntu 14 16 18;Debian 7 8 9 10;WIN:集合了“”萌咖大佬、老司机、MeowLove “”的系统包含win7 2003 2006 2012 2008 2016 2019等系统当然也可以自定义
linux默认密码:MoeClub.org 或 cxthhhhh.com(Centos7)
1、镜像文件在OneDrive
wget -N --no-check-certificate https://raw.githubusercontent.com/veip007/dd/master/dd-od.sh && chmod +x dd-od.sh && ./dd-od.sh
2、镜像文件在GoogleDrive
wget -N --no-check-certificate https://raw.githubusercontent.com/veip007/dd/master/dd-gd.sh && chmod +x dd-gd.sh && ./ ...
redis缓存穿透,缓存击穿,缓存雪崩原因+解决方案
一、前言在我们日常的开发中,无不都是使用数据库来进行数据的存储,由于一般的系统任务中通常不会存在高并发的情况,所以这样看起来并没有什么问题,可是一旦涉及大数据量的需求,比如一些商品抢购的情景,或者是主页访问量瞬间较大的时候,单一使用数据库来保存数据的系统会因为面向磁盘,磁盘读/写速度比较慢的问题而存在严重的性能弊端,一瞬间成千上万的请求到来,需要系统在极短的时间内完成成千上万次的读/写操作,这个时候往往不是数据库能够承受的,极其容易造成数据库系统瘫痪,最终导致服务宕机的严重生产问题。
为了克服上述的问题,项目通常会引入NoSQL技术,这是一种基于内存的数据库,并且提供一定的持久化功能。
redis技术就是NoSQL技术中的一种,但是引入redis又有可能出现缓存穿透,缓存击穿,缓存雪崩等问题。本文就对这三种问题进行较深入剖析。
二、初认识
缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。
缓存击穿:ke ...
maven项目创建过慢与idea常用快捷键
archetypeCataloginternal
idea常用的快捷键
Alt+回车 导入包,自动修正
Ctrl+N 查找类
Ctrl+Shift+N 查找文件
Ctrl+Alt+L 格式化代码
Ctrl+Alt+O 优化导入的类和包
Alt+Insert 生成代码(如get,set方法,构造函数等)
Ctrl+E或者Alt+Shift+C 最近更改的代码
Ctrl+R 替换文本
Ctrl+F 查找文本
Ctrl+Shift+Space 自动补全代码
Ctrl+空格 代码提示
Ctrl+Alt+Space 类名或接口名提示
Ctrl+P 方法参数提示
Ctrl+Shift+Alt+N 查找类中的方法或变量
Alt+Shift+C 对比最近修改的代码
Shift+F6 重构-重命名
Ctrl+Shift+先上键
Ctrl+X 删除行
Ctrl+D 复制行
Ctrl+/ 或 Ctrl+Shift+/ 注释(// 或者/…/ )
Ctrl+J 自动代码
Ctrl+E 最近打开的文件
Ctrl+H 显示类结构图
Ctrl+Q 显示注释文档
Alt+F1 查找代码所在位置
Alt+ ...
IDEA2020版Maven依赖成功导入但任然报错找不到包解决方案
最近换了新的idea版本,在使用maven联系springboot项目的时候,pom.xml中的依赖正确,点击运行按钮,报错找不到包
(例如:Error:(4, 52) java: 程序包org.springframework.beans.factory.annotation不存在),ctrl+鼠标左键却能定位到jar包(说明jar成功导入)报错原因:IDEA启动程序按钮和maven的build使用的jar包环境不一样解决方案:设置idea构建/运行操作委托给maven就行了。具体设置:Settings搜索Runner,勾选delegate ide build/run actions to maven
还要注意编码是否设置UTF-8
一招解决GitHub致命的下载速度
通过码云来导入github,通过码云下载
第一步:找一个你需要下载的GitHub项目
第二步:复制链接
第三步:打开码云,然后选择从GitHub导入
第四步:复制刚才的连接,起个名字,点击导入这个过程大概一两分钟
导入完成:直接下载zip
一个完整的过程动图
PS: 如需更改git中的项目,打开你的项目,找到隐藏的文件夹git,记事本打开config,然后把remote"origin"中的url的gitee改成github
Word转MD文件
把网页的内容全部复制,丢进下面的网站,转为html格式,复制html代码文本WordHtml把代码文本放在这里Html转MD
试Linux端口的连通性的四种方法
测试Linux端口的连通性的四种方法Linux系统有时候需要测试某个端口的连通性,用户可以参考如下方法来测试。
方法一、telnet法 telnet为用户提供了在本地计算机上完成远程主机工作的能力,因此可以通过telnet来测试端口的连通性,具体用法格式:
telnet ip port
说明:
ip: 是测试主机的ip地址
port: 是端口,比如80
如果telnet连接不存在的端口,那会如下图所示。
如果telnet 连接存在端口会出现如下图所示的内容,下图中以80端口为例。
方法二、ssh法SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议,在linux上可以通过ssh命令来测试端口的连通性,具体用法格式如下:
用法: ssh -v -p port aliyunzixun@xxx.com
说明:
-v调试模式(会打印日志).
-p指定端口
username: 远程主机的登录用户
ip: 远程主机
如果远程主机开通了相应的端口,会有如下图所示的建立成功的提示。
如果远程主机没有开通相应的端口,则如下图所示
方法三、curl法curl是利用URL语法在命令 ...