maven-shade-plugin
参考资料maven-plugin-shade 详解 - 六开箱 - 博客园 (cnblogs.com)
介绍Maven Shade Plugin主要是为了将一个自启动JAR项目的依赖打包到一个大的JAR中,从而不用担心依赖问题。它还可以通过设置MainClass,创建一个可以执行的JAR包,同时若其他项目引用此jar包,可以解决第三方JAR包冲突问题。
可以将项目包含的依赖打包人一个jar中
可以通过重命名的方式将依赖的package重定向
使用方式maven-shade-plugin需要与maven生命周期中的package阶段绑定,在执行mvn package动作时会自动执行本插件。
1234567891011121314151617181920212223242526<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifact ...
xsd
Schemaxsd是Schema的后缀,故通常使用xsd表示Schema
能做什么
定义可以出现在文档中的元素
定义可以出现在文档中的属性
定义哪个元素是子元素
定义子元素的次序
定义子元素的数目
定义元素是否为空,或者是否可包含文本
定义元素和属性的数据类型
定义元素和属性的默认值以及固定值
例子1234567<?xml version="1.0"?><note> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body></note>
对应的
12345678910111213141516<?xml version="1.0"?><xs:schema xmlns:xs="http://www.w3.org/2 ...
机器学习
定义计算机无需明确编程便可进行能力学习
机器学习常用的的两种算法:
监督学习
非监督学习
监督学习训练者给出正确答案用于学习 ,在监督学习中,数据同时带有输入x和标签y
回归算法预测一个数字,会有无限多可能的输出
分类算法输出一个分类,可能的输出是有限的
无监督学习不提供标签,没有标准答案,在无监督学习中,数据仅带有输入。将没有标签的数据自动分组到集群中
聚类算法
异常检测找到不正常的数据
数据降维压缩数据集,去掉不重要的维度
线性回归模型x称为输入,f为模型,y-hat 代表对y值的预测
成本函数fwb(x) = wx + b
m:数据总量
J(w,b) = (1/2m)*求和((yi-hat - yi)^2)
等同于
J(w,b) = (1/2m)*求和((fwb(xi) - yi)^2)
最终目标为找到使得J变小的w和b
Vue
核心功能
声明式渲染
可以声明式的描述最终输出的HTML和JavaScript状态之间的关系
响应性
vue会自动跟踪js状态并在其发生变化时响应式的更新DOM
渐进式可以分块拉取依赖
Hello Vue1234567891011121314151617181920212223242526272829303132333435363738<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <script src="./node_modules/vue/dist/vue.global.js"></s ...
NodeJS&NPM
NodeJS类似于java虚拟机,可以再浏览器外部运行js,且可以操作系统IO流,安装教程在本博客搜索”node安装“
NPM类似于后端的Maven,但是只能管理依赖
前端框架的下载工具
可将云端仓库中的依赖下载到本地
前端项目的管理工具
项目初始化、依赖管理、研发模式运行、编译
切换镜像1234// 查看npm config get registry// 最新(2024)切换镜像npm config set registry https://registry.npmmirror.com
设置本地仓库地址1234// 查看npm config get prefix// 设置npm config set prefix "E:\tools\NodeJS\NPMGloableRegistry"
npm升级1234// 升级npm install -g npm@9.6.6// 验证npm -v
仓库依赖查询npm | Home (npmjs.com)
npm常用命令
项目初始化
npm init
初始化当前文件夹(项目)的信息,生成packag ...
ES6
介绍ES就是JS的原名,ES6发布于2015年
letlet与var的差别
let不能重复声明
123456789// varvar j = 10;var j = 20;// letlet i = 10;// 下面这句代码是非法的,报错i已被声明,let i = 20;// let之前如果是var先声明,则第一次let可以将其覆盖// var之前如果let已经声明,则会报错
let有块级作用域,即使是非函数的花括号范围,使用let在其中定义的变量也只能在其中访问
1234567{ var ii = 19; let ik = 10;}console.log(ii);// 报错ik未定义console.log(ik);
let不会预解析进行变量提升
没有声明之前先访问,var会将改变量赋值为undefind,let会报错(not defind)
let定义的全局变量不会作为window的属性
var 一个变量的时候,改变量会变为window对象的属性
let在es6中推荐使用
const特性与let相同,除此以外
定义出的变量 ...
跨站请求伪造
参考资料Web漏洞之CSRF(跨站请求伪造漏洞)详解 - 知乎 (zhihu.com)
介绍跨站请求伪造,在用户访问B网站时,B网站中有通往A网站的攻击连接,用户点击后会在不知情中对A网站进行操作。
若用户在A网站中先进行登录,A网站为了保存用户的登录状态,会向浏览器中存储cookie。此时若用户在没有关闭浏览器的情况下,访问的B网站,点击了B网站中的攻击连接,B网站会发起一个向A网站的操作并携带A网站的cookie,模拟登录用户的操作。
条件
用户访问A并产生了cookie
用户在没有关闭浏览器的情况下访问了网站B
防御验证请求中的Referer字段Referer字段为浏览器产生的,表示该请求的来源,服务端可通过该字段判断请求是否从A网站发起的,若是通过B网站发起的请求,则Referer会指向B,则服务器可拒绝请求。
优点:操作简单,只需要在处理请求之前先验证Referer头即可,往后的业务基本无感。
缺点:安全性依赖于浏览器的安全性,若浏览器构造的Referer字段被攻击,则此方法无效,且由于有些用户认为Referer字段侵犯了用户的隐私权,故浏览器可以设置不发送Referer ...
Junit
注解
@Test
@Test(expected=XX.class) 预期出现的异常
@Test(timeout=) 设置超时时间
@Ignore 修饰的测试方法会被测试运行器忽略
@RunWith 更改测试运行器
@BeforeClass 在@Test之前执行一次
@BeforeMethod 在每次@Test之前都执行一次
测试API
Assertions.assertEquals(表达式1,表达式2),判断两个表达式的结果是否相同
Lombok
安装
在idea插件市场找到lombok插件进行安装:Lombok
新版idea会默认安装
在idea的设置中启用 enable annotation processing
Build, Execution, Deployment > Compuler > Annoation Processors
导入LomBok依赖
1234567<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> <scope>provided</scope></dependency>
构造器相关
@AllArgsConstruc ...
http
超文本传输协议当前已有http2和http3,但通常使用的都是http1.1
定义交互
客户端和服务端交互的方式
请求 客户端向服务端发送
响应 服务端向客户端响应
客户端和服务端交互的数据格式
请求报文
请求行
请求头
请求体
响应报文
响应行
响应头
响应体
长连接和短连接http协议底层为tcp/ip协议支持,tcp是面向连接的协议。
短连接:每次获取资源都重新建立tcp连接,资源获取到后关闭连接(http 1.0)
长连接:第一次获取资源建立tcp连接,接着保持连接开启,直到资源获取完毕将连接关闭(http 1.1)
缓存客户端会将获取过的文件先进行缓存,下次先看缓存(http 1.1)
请求报文
请求行
请求方式(GET/POST……)
请求路径(/hello/……)
请求协议(HTTP/1.1)
请求头
key-value格式
常见头
Host: 127.0.0.1:8080 // 服务器的ip和端口号
Connection: keep-alive // ...