OAuth 2.0 第三方登录
OAuth简介OAuth2.0介绍介绍OAuth协议:https://www.rfc-editor.org/rfc/rfc6749
OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方 应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他 们数据的所有内容。OAuth在全世界得到广泛应用,目前的版本是2.0版。
协议特点:
简单: 不管是OAuth服务提供者还是应用开发者,都很易于理解与使用;
安全: 没有涉及到用户密钥等信息,更安全更灵活;
开放: 任何服务提供商都可以实现OAuth,任何软件开发商都可以使用OAuth;
应用场景
原生app授权: app登录请求后台接口,为了安全认证,所有请求都带token信息,如果登录验证、 请求后台数据
前后端分离单页面应用: 前后端分离框架,前端请求后台数据,需要进行oauth2安全认证
第三方应用授权登录: 比如QQ,微博,微信的授权登录
基本概念OAuth的作用就是让”客户端”安全可控地获取”用户”的授权,与”服务 ...
SpringBoot设置动态定时任务
SpringBoot项目中简单使用定时任务,要借助cron表达式且都提前定义好放在配置文件里,不能在项目运行中动态修改任务执行时间,实在不太灵活。
经过网上搜索学习后,特此记录如何在SpringBoot项目中实现动态定时任务。
因为只是一个demo,所以只引入了需要的依赖:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> &l ...
category-line的两种数据类型所绘制图形不同的问题
第一种配置项:xAxis和series的data分开option = { xAxis: { type: 'category', data: ['a','a'] }, yAxis: { type: 'value' }, series: [ { data: [150,150], type: 'line' } ]};
渲染出来的结果:一条横线
第二种配置项:xAxis不设置data,series的data设置为二维数组option = { xAxis: { type: 'category' }, yAxis: { type: 'value' }, series: [ { data: [ ['a& ...
SpringBoot统一登录鉴权、异常处理、数据格式
本篇将要学习 Spring Boot 统一功能处理模块,这也是 AOP 的实战环节
用户登录权限的校验实现接口 HandlerInterceptor + WebMvcConfigurer
异常处理使用注解 @RestControllerAdvice + @ExceptionHandler
数据格式返回使用注解 @ControllerAdvice 并且实现接口 @ResponseBodyAdvice
统一用户登录权限效验用户登录权限的发展完善过程最初用户登录效验:在每个方法中获取 Session 和 Session 中的用户信息,如果存在用户,那么就认为登录成功了,否则就登录失败了第二版用户登录效验:提供统一的方法,在每个需要验证的方法中调用统一的用户登录身份效验方法来判断第三版用户登录效验:使用 Spring AOP 来统一进行用户登录效验第四版用户登录效验:使用 Spring 拦截器来实现用户的统一登录验证
最初用户登录权限效验@RestController@RequestMapping("/user")public class UserController ...
RabbitMq博客整理
SpringBoot 整合 RabbitMQ(注解监听,临时队列)RabbitMQ 可靠性、重复消费、顺序性、消息积压解决方案RabbitMQ:消息丢失 | 消息重复 | 消息积压的原因+解决方案+网上学不到的使用心得
RabbitMq和SpringBoot的整合
介绍该篇文章内容较多,包括有 rabbitMq 相关的一些简单理论介绍,provider 消息推送实例,consumer 消息消费实例,Direct、Topic、Fanout 的使用,消息回调、手动确认等。 (但是关于 rabbitMq 的安装,就不介绍了)
在安装完 rabbitMq 后,输入 http://ip:15672/ ,是可以看到一个简单后台管理界面的。
在这个界面里面我们可以做些什么?可以手动创建虚拟 host,创建用户,分配权限,创建交换机,创建队列等等,还有查看队列消息,消费效率,推送效率等等。
以上这些管理界面的操作在这篇暂时不做扩展描述,我想着重介绍后面实例里会使用到的。
首先先介绍一个简单的一个消息推送到接收的流程,提供一个简单的图:
黄色的圈圈就是我们的消息推送服务,将消息推送到 中间方框里面也就是 rabbitMq 的服务器,然后经过服务器里面的交换机、队列等各种关系(后面会详细讲)将数据处理入列后,最终右边的蓝色圈圈消费者获取对应监听的消息。
常用的交换机有以下三种,因为消费者是从队列获取信息的,队列是绑定交换机的(一般),所以对应的消息推送/接收模式 ...
利用jar命令修改jar包中文件的内容
查找需要修改jar包中的application.yml文件路径[root@test ~]# jar tf test.jar | grep application.ymlBOOT-INF/classes/application.yml
导出jar包中的application.yml文件[root@test ~]# jar xf test.jar BOOT-INF/classes/application.yml[root@test ~]# lldrwxr-xr-x 3 root root 21 6月 28 14:54 BOOT-INF[root@test ~]# tree BOOT-INFBOOT-INF└── classes └── application.yml1 directory, 1 file
修改编辑导出的配置文件[root@test ~]# vim BOOT-INF/classes/application.yml
将修改后的文件重新打入jar包[root@test ~]# jar uf test.jar BOOT-INF/classes/applic ...
8种从spring容器里获取bean的方式
在初始化时保存ApplicationContext对象适用于Spring框架的独立应用程序,须要程序通过配置文件初始化Spring。applicationContext.xml配置:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd&q ...
待学习
计算机网络:ipv6 部分
echarts 网课:前边布局,后面地图
ztree 的使用
jstree 的 demo
java 底层:2 进制,10 进制,移位,源码,补码,反码
前端关于滚动条的各个属性:clientHeight offsetHeight scrollHeight offsetTop scrollTop
redis 实战
js 高级
mysql 游标的使用
idea 工具的系统使用
远程请求http的三种方式
1.ajax 远程调用,远程服务器必须开放跨域访问权限
2.form 表单远程调用,不受跨域限制,缺点是需要组装表单
3.java 代码远程调用(常用的有 java.net.HttpURLConnection,springboot 的 restTemplate)
mysql dump导入sql脚本后表中的数据中文乱码
解决办法:加上—default-character-set=utf8 参数即可
学习路线
jlpt n5->n4->n3->n2
java:stream,lambda,IO 流,注解,反射,枚举,网络编程,websocket,nio
mysql,redis
jvm(初级),jvm(中级和高级),juc
spring->springmvc->springboot->springcloud
zookeeper,nginx,linux
kafka,rabbitmq
elasticsearch,minio
maven,docker,k8s
设计模式,计算机网络,数据结构与算法,计算机组成原理,操作系统,编译原理
项目:谷粒学院,谷粒商城,尚融宝
grid 布局
shiro,zookeeper,kafka计算机网络,操作系统,计算机组成原理maven,dockerjvm,juc,设计模式算法,刷题,面经
DATE_FORMAT()和STR_TO_DATE()
常用的 DATE_FORMAA()格式
DATE_FORMAT(updatetime,'%Y-%m-%d') -- 把mysql的datetime格式化成2021-09-23的字符串格式DATE_FORMAT(updatetime,'%Y-%m-%d %H:%i:%S') -- 把mysql的datetime格式化成2021-09-07 09:30:37的字符串格式
常用的 STR_TO_DATE()格式
STR_TO_DATE('2015-09-01 00:00:00','%Y-%m-%d %H:%i:%s') -- 把字符串转为datetimeg
mysql常见的函数和问题的汇总
注意 mysql 里面关于字符串的截取下标一般都是从 1 开始
Substring(‘str’,a,b) 注意:a 是起始位置,b 是要截取得长度。且下标从 1 开始 ,如果 a 是 0,那么无论 b 是多少都返回一个空串
Round(num,a) num 如果为字符串,那么返回的也是数字。如果 num 为’a’或者’b’这种非数字类型的字符串,那么会把这种字符串当成数字 0 ,并且 a 是 0,那么就是 0 ,a 是 1,就是 0.0 。
注意:如果 num 是整数(round(2234,2)),那么无论 a 是多少,返回的都是整数(2234),如果 num 是整数型的字符串(round(‘2234’,3)),那么返回的就是带 0 的小数(2234.000)。
注意:abs(25.0)=>25.0 abs(‘25.0’) =>25
INSTR(str,substr) / instr(源字符串, 目标字符串) 获取子串第一次出现的索引,如果没有找到,则返回 0(下标从 1 开始)
使用 union all 链接两个查询结果的时候,如果链接查询结果要有各自的顺序并且总结 ...
mysql在导入.sql文件的时候报错 1067 - Invalid default value for LOCK_TIME
推荐使用以下的方式永久修改
编辑 mysql 的配配置文件 my.cnf
在[mysqld]下面添加如下列:
sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
any 和 all 关键字
A = any('a','b') 等价于 A = 'a' or A = 'b'A = all('a','b') 等价于 A = 'a' and A = 'b'
总结 :any 相当于用 or 链接后面括号里的子元素,all 相当于用 and 链接后面括号里面的子元素
mysql建立新用户和授权
需求:只允许某个用户访问某个库# 建立用户user能在任何ip登录,并且密码是passwdcreate user 'user'@'%' identified by 'passwd';# 授权:授予user用户能用密码passwd从任何ip登录并且有访问ctoms_test数据库任何资源的所有权限grant all privileges on ctoms_test.* to user@'%' identified by 'passwd'; # 刷新权限flush privileges;# 查看自己刚刚建立的用户SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;
mysql的安装
mysql8
查看是否有安装过 mysql
rpm -qa | grep -i mysql
使用rpm -e命令将上个命令中包列表全部删除
然后删除相关服务
chkconfig --list | grep -i mysqlchkconfig --del mysql
删除 mysql
yum -y remove MySQL-*yum -y remove MySQLyum remove mysql mysql-server mysql-libs compat-mysql51
一般用 rpm -e 的命令删除 mysql,这样表面上删除了 mysql,可是 mysql 的一些残余程序仍然存在,并且通过第一步的方式也查找不到残余,而 yum 命令比较强大,可以完全删除 mysql.(ps:用 rpm 删除后再次安装的时候会提示已经安装了,这就是 rpm 没删除干净的原因)
把所有出现的目录统统删除
find / -name mysql
查找 mysql 的一些目录,把所有出现的目录删除,可以使用 rm -rf 路径,删除时请注意,一旦删除无法恢复。
删除配置文件
rm -rf /etc/ ...
mysql建表的几个必备字段
id(主键)
码表(在基础字典表中该字段是必须的)
排序(在基础字典表中该字段是必须的)
创建人
创建时间
修改时间
逻辑删除字段
time和update_time的策略
二者默认值都设置为 CURRENT_TIMESTAMP(DEFAULT CURRENT_TIMESTAMP),保证插入时记录时间
update_time 勾选上根据当前时间戳更新(ON UPDATE CURRENT_TIMESTAMP),保证更新时记录时间
参考 sql
CREATE TABLE `mytest` ( `text` varchar(255) DEFAULT '' COMMENT '内容', `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间') ENGINE=InnoDB DEFAULT CHARSET=utf8;
注意:采用数据库层面的策略不支持切换数据库,如果想要开发的应用兼 ...