JWT
定义json web token
安全验证用,单点登录适用,开销小,有签名机制
特点
服务端不保存任何客户端请求者信息
客户端的每次请求必须具备自描述信息,通过这些信息识别客户端身份
结构header.payload.signature
header: 头信息,令牌类型和签名算法
payload:有效负载,放一些非敏感信息
signature:签名,信息有无被修改的验证
示例
原文
1eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
解码后
HEADER:ALGORITHM & TOKEN TYPE
1234{ "alg": "HS256", "typ": "JWT"}
PAYLOAD:DATA
...
HTML-CSS
一些经验
vscode liveserver插件需要在文件夹中打开文件
shift + 刷新 强制刷新
HTML语义标签的默认效果不重要,语义最重要
代码的可读性
利于SEO
方便盲人阅读器等设备解析
文档声明123H5:<!DOCTYPE html>不声明可能会触发怪异模式
meta
编码
决定了浏览器打开文档的编码
123<head> <meta charset="UTF-8"></head>
ie兼容配置
针对ie浏览器的兼容性配置
1<meta http-equiv="X-UA-Compatible" content="IE=edge">
移动端适配
1<meta name="viewport" content="width=device-width, initial-scale=1.0">
关键词和描述
12<meta name="keyword ...
JS
也叫ES ECMAScript
前身是网景公司开发的livescript
引入方式
内嵌式 script标签内编写
外部引用 script src属性,需要有开始和结束标签
事件监听常用事件
鼠标事件
onclick 单击事件 常用于按钮的点击相应操作
ondbclick 双击
onmouseover 鼠标悬停
onmousemove 鼠标移动
onmouseleave 鼠标离开
键盘事件
onkeydown
onkeyup
表单事件
onfocus 获得焦点事件
onblur 失去焦点事件 常用于输入框失去焦点后验证内容
onchange 内容发生改变事件 比如输入框中内容改变后失去焦点或者下拉列表输入框内容改变
可传参数 (this.value) 将改变后的值传到响应函数
onsubmit 表单提交事件 用于表单提交前,验证所有表单项是否合法
在方法中可阻止表单的默认行为
event.preventDefault()
事件中return false且绑定事件时方法名前加return关键字
onreset 表单重置
其他事件
onload 加载完成事件 ...
JavaWeb
静态/动态资源
静态资源
提前写好的请求时能直接用的资源如图片、css、js、以及html文件等
动态资源
需要在程序运行时通过代码运行生成的资源如servlet、thymeleaf等
Servlettomcat接收到请求后会将请求报文转为一个HttpServletRequest对象,同时创建一个HttpServletResponse对象,用于存放响应报文信息。
tomcat会根据请求中的资源路径找到对应的servlet,调用service方法,并且将HttpServletRequest和HttpServletResponse对象传入。
HelloWorld
创建javaWeb项目,导入tomcat依赖
重写service方法
在service方法中定义业务逻辑
1234567891011protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 从request中获取 ...
docker
概念镜像只读模板,用于创建容器
容器由模板创建的 实例,包括一个linux环境和运行在其中的应用
仓库存放镜像的地方
安装需要在linux上部署docker
仓库安装时注意不要选择国外镜像阿里云个人加速服务
服务命令启动 systemctl start docker
停止 systemctl stop docker
重启 systemctl restart docker
查看状态 systemctl status docker
开机启动 systemctl status docker
查看docker概要信息 docker info
查看总体帮助文档 docker –help
查看命令帮助文档 docker 具体命令 –help
镜像操作
查看本地镜像:docker images
在远端仓库查找镜像-限制数目:docker search
拉取镜像(下载),不加tag默认最新:docker pull
删除镜像:docker rmi 镜像id
查看镜像、容器、数据卷所占的空间:docker system df
运行镜像:docker run *** 在本地仓库寻 ...
c++
C++数据类型七种基本数据类型
bool 布尔型
char 字符型
int 整型
float 浮点型
double 双浮点型
void 无类型
wchar_t 宽字符型
修饰符
signed
unsigned
short
long
内存占用
不同的系统会有差异
默认情况下,int, short, long都是带符号的
typeof可使用typeof为已有类型取一个新的名字
12typedef int feet;feet distance;
枚举类型若干枚举常量的集合
123456enum color{ red, green, blue} c;c = blue;
默认情况下,第一个名称的值为 0,第二个名称的值为 1,第三个名称的值为 2,以此类推。但是,您也可以给名称赋予一个特殊的值,只需要添加一个初始值即可。例如,在下面的枚举中,green 的值为 5。
12345enum color{ red, green = 5, blue};
需要注意的是,枚举类型中只能赋值整型常量
变量变量定义变量定 ...
electron
npm install12345678npm install moduleName # 安装模块到项目目录下 npm install -g moduleName # -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置,要看 npm config prefix 的位置。 npm install -save moduleName # -save 的意思是将模块安装到项目目录下,并在package文件的dependencies节点写入依赖。 npm install -save-dev moduleName # -save-dev 的意思是将模块安装到项目目录下,并在package文件的devDependencies节点写入依赖。
npm 文件夹权限右键属性,安全页面给所有用户完全访问权限
【Node.js】Node.js安装及环境配置 - 腾讯云开发者社区-腾讯云 (tencent.com)
安装electronnpm install electron --save-dev
简单构建初始化脚手架12# 新建项目文件夹npm init
这里注意入口需要设为main.js而不是默认的i ...
git
参考资料Git - Book (git-scm.com)
简介概念
仓库:用来保存项目元数据和对象数据库的地方
工作区:对应某个版本,当前的文件状态
暂存区:如果要commit,提交的是这里的内容
分支:把某些工作从开发主线上分离出来,对于协同开发起到重要作用
提交:每次需要修改的内容完成以后,保存一个快照
远程仓库:用来协同的远程仓库,作用为同步本地修改,完成写作需求
版本控制
什么是版本控制
版本控制是一种记录文件内容变化,以便于将来查阅特定版本修订情况的系统.
版本控制其实最重要的是可以记录文件的修改历史, 从而让用户能够查看历史版本, 方便版本切换
git和代码托管中心代码托管中心是基于网络服务器的远程代码仓库,一般我们简单的成为远程库
局域网
GitLab
互联网
GitHub
GItee
分支在版本控制过程中,同时推进多个任务,我们可以为每个任务创建单独的分支,使用分支意味着从主线上离开了,开发分支不会影响主分支的运行
git切换分支本质上是移动Head指针
原理
区域工作区:除去.git文件夹的部分
暂存区:累积修改
本地库:以diff的形式存放历史代 ...
oauth2
基本概念Oauth是一种授权机制,由资源的所有者告诉系统,同意第三方进入系统获取资源,系统会产生一个短期的进入令牌(token)供第三方应用使用
交互角色
资源所有者:即用户,用户在某些情况下会需要访问自己的资源
客户应用:通常是一个web或者无线应用,他需要访问用户的受保护资源
资源服务器:存储受保护的资源,定义了可访问资源的api,接收并验证客户端的访问令牌以决定是否授权访问资源
授权服务器:负责验证资源所有者的身份并向客户端办法访问令牌
使用场景开放系统间的授权社交登录如使用github账号登录gitee
开放api令牌与密码令牌与密码都可以用来进入系统,但有差异
令牌是短期的,到期会自动失效, 用户自己无法修改,密码一般长期有效,用户不修改不会发生变化
令牌可以被资源拥有者撤销,会立即失效
令牌范围有限
授权方式不管哪一种授权方式,第三方应用申请令牌之前,都必须到系统备案。说明自己的身份,然后会拿到两个身份识别码,客户端ID(client ID)和客户端密钥(client secret)。这是为了防止令牌被滥用,没有备案过的第三方应用,是拿不到令牌的。
授权码 autho ...
algorithm
动态规划
什么是动态规划(Dynamic Programming)?动态规划的意义是什么? - 知乎 (zhihu.com)
最少钞票数量问题引入
假设您是个土豪,身上带了足够的1、5、10、20、50、100元面值的钞票。现在您的目标是凑出某个金额w,需要用到尽量少的钞票。
这里使用贪心算法:首先使用最大面值,直到剩余的金额不满最大面值则依次向下,直到满足w。
但如果面额为1, 5, 11的面额纸币凑15时,贪心算法会得到错误的结果:
11+1+1+1+1 5张
但完全可以 5+5+5 3张
而贪心算法只能考虑眼前利益
那考虑其他办法,比如使用暴力算法,但这样的情况过多,时间无法承受。
重新分析:当我们第一步选用11元面值时,会面对w=4的情况:从上图= f(4)+1.同理,当我们第一步选用1,w=14:cost=f(14)+1,第一步选用5,w=10:cost = f(10)+1.
其中,cost为钞票数量,f为最少钞票数,那此时f(15) = min(以上三种cost情况)
这就是动态规划
动态规 ...