Swagger
在网页中展示接口信息
引入依赖
12345678910<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></dependency><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version></dependency>
编写配置
123456789101112131415161718192021@Configuration@EnableSwagger2public class SwaggerConfig ...
SpringSecurity
基本概念RBAC
用户(User)
userRole 多2多
角色 (Role)
userMenu 多2多
权限(Menu/API)
认证Authentication
登录,判断是否为系统合法用户
授权Authorization
分配权限,判断该合法用户的权限
默认配置SpringBootWebSecurityConfiguration会将配置包装成一个chain返回
12345678910111213@Configuration(proxyBeanMethods = false)@ConditionalOnDefaultWebSecurity@ConditionalOnWebApplication(type = Type.SERVLET)class SpringBootWebSecurityConfiguration { @Bean @Order(SecurityProperties.BASIC_AUTH_ORDER) SecurityFilterChain defaultSecurityFilterChain(HttpSecurity http) t ...
Redis
windows下载地址https://github.com/microsoftarchive/redis/releases/download/win-3.0.504/Redis-x64-3.0.504.msi
安装后redis服务默认会启动
SDSsimple dynamic string
SDS是redis底层使用的字符串结构
123456789struct sdshdr { //记录buf数组中已使用字节的数量 //等于SDS所保存字符串的长度 int len; //记录buf数组中未使用字节的数量 int free; //字节数组,用于保存字符串 char buf[];};
保留了\0字符,目的是为了复用c语言中的字符串方法
buf.length = len + 1 + free
其中free为每次分配空间进行的预分配内存,避免每次扩展字符串时都需要重新申请空间。以1M为限,1M下会分配即将用到的内存的两倍,1M以上只多分配1M,避免指数爆炸。当然如果free本身就能够支持本次操作,则不会进行内存重分配。
...
design_pattern
参考资料资料来自于《图解设计模式》
UML
Iterator模式Interator对象中引用了容器对象,最基本的实现为next和hasNext
next
获取当前对象并将指针向后移动
hasNext
判断当前指针是否越界,通常用于循环的结束条件判断
q: 为何要引入iterator模式,如果只是数组,明明直接使用for循环语句遍历
a:引入itreator模式后可以将遍历与实现分离
相关角色
Iterator
负责定义按顺序逐个遍历元素的接口,定义了next与hasNext方法
ConcreteIterator
迭代器具体的实现,实现了next和hasNext方法
Aggregate
定义容器API,定义了iterator方法用于获取迭代器
ConcerteAggregate
容器具体的实现,实现了iterator方法
Adapter模式又被称为Wrapper模式
现有程序无法使用,需要做适当的变换之后才能使用的情况,构造一个类,用于填补现有程序与目标程序之间的差异的设计模式
类适配器模式(继承)继承提供功能的类并实现目标接口,通过调用父类中的方法来实现接口中的功能。 ...
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};
需要注意的是,枚举类型中只能赋值整型常量
变量变量定义变量定 ...