OAuth2登录协议
本文以微信授权登录来演示说明
参考文档:
微信登录功能 / 网站应用微信登录开发指南 (qq.com)
微信登录开发者测试平台 (qq.com)
所用到的依赖:
123456789101112131415<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.3.3</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.17</version> ...
资安学工考勤系统当前技术需要
Git的深入理解
表文档导出技术
swagger使用
熟悉若依框架
数据库表设计数据库名称:
表一:用户表
字段
含义
数据类型
默认值
是否可空
约束
th_id
学号
bigint(20)
否
主键
tb_name
姓名
varchar()
否
tb_major
班级
varchar()
否
表二:考勤人表
字段
含义
数据类型
默认值
是否可空
约束
tb_id
工号/学号
bigint(20)
否
主键
tb_name
姓名
varchar()
否
tb_sex
性别
tinyint
否
tb_identity
身份(字典)
tinyint
否
外键
表三:检查表
字段
含义
数据类型
默认值
是否可空
约束
备注
tb_id
ID
bigint
主键
tb_check_time
检查时间
timestamp
默认系统时间年月日,也可以自己选择
tb_check_section
检查节次
tinyint
节次是固定的,用0-12来决 ...
Redis学习笔记
缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。
缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。
缓存雪崩:当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。
redis安装教程1.安装redis依赖环境
1yum install -y gcc tcl
2.将tar.gz包放入对应目录中**/usr/local/src**,并解压
1tar -zxvf redis-6.2.7.tar.gz
3.到解压目录中执行编译代码
1cd redis-6.2.7
1make && make install
前台启动redis1redis-serv ...
JUC并发编程本文参考链接:https://itbaima.net
什么是juc?
juc是java中处理线程的工具包
wait和sleep?
sleep不释放锁睡觉,wait释放锁睡觉
并行和并发?
并行:
常出现在多核处理器,多个任务同一时间执行
并发:
多任务同时执行,cpu执行一个任务一段时间再切换到其他任务,实现同时进行的效果
用户线程和守护线程?
java对象头
偏向锁:在很多情况下抢锁过程一般都是同一个线程抢锁成功,所以设置了偏向锁,Markword用于记录“常胜者”线程id,当参与竞争资源时,偏向锁指向的id代表的线程可以直接获取锁,无需进行CAS操作
注意:MarkWord里默认数据是存储对象的HashCode等信息,但是在运行期间,Mark Word里存储的数据会随着锁标志位的变化而变化
在表2-4中:每一个对象都有一个monitor与之关联。==重量级锁也就是通常说synchronized的对象锁,锁标识位为10,其中指针指向的是monitor对象(也称为管程或监视器锁)的起始地址==
M ...
Java圣经Java是“半编译半解释”的语言
编译:.java需要编译成.class才能执行(性能高)
解释:.class需要JVM解释才能运行(跨平台性好)
此外,JVM 中的即时编译器(Just-In-Time Compiler, JIT)可以选择性地将一些经常执行的字节码编译成本地机器码,以提高执行效率。
基础篇面向对象三特性封装、继承、重载
重载
方法的返回值类型不会影响方法的重载。区分重载的方法的关键在于方法的名字以及参数列表的不同。
123456private int getMax(int maxIndex) { }private String getMax(int maxIndex,int maxLen) { }
访问修饰符1234int x =0; // package-private 同一个包下的所有子类都可以访问public int x = 0; —— 公开访问。private int x = 0; —— 私有访问。protected int x = 0; —— 受保护访问(只要在同一个父包下都可以访问)。 ...
数据结构分类
逻辑结构
树,图,数组,哈希,等等
物理结构
计算机保存数据的结构
顺序结构(易查找,难插入)
链式结构(元素用指针相连)
指针保存的是链表下一个元素的地址
空间复杂度
对象头信息消耗16字节,数组头信息消费24个字节(都还不包含内容信息)
一个字节有八位!
(非)线性数据结构线性结构是什么?
一个前驱一个后继
数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构。线性结构是一个有序数据元素的集合。
线性结构特点:
线性结构有唯一的首元素(第一个元素)
线性结构有唯一的尾元素(最后一个元素)
除首元素外,所有的元素都有唯一的“前驱”
除尾元素外,所有的元素都有唯一的“后继”
数据元素之间存在“一对一”的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。
常用的线性结构有 线性表,栈,队列,双队列,循环队列,一维数组,串。线性表中包括顺序表、链表等,其中,栈和队列只是属于逻辑上的概念,实际中不存在,仅仅是一种思想,一种理念;线性表则是在内存中数据的一种组织、存储的方式。
非线性结构非线性结构是什么? ...
Spring
Spring 包含了多个功能模块(上面刚刚提到过),其中最重要的是 Spring-Core(主要提供 IoC 依赖注入功能的支持) 模块, Spring 中的其他模块(比如 Spring MVC)的功能实现基本都需要依赖于该模块。
Spring MVC 是 Spring 中的一个很重要的模块,主要赋予 Spring 快速构建 MVC 架构的 Web 程序的能力。MVC 是模型(Model)、视图(View)、控制器(Controller)的简写,其核心思想是通过将业务逻辑、数据、显示分离来组织代码。
Spring Boot:使用 Spring 进行开发各种配置过于麻烦比如开启某些 Spring 特性时,需要用 XML 或 Java 进行显式配置。于是,Spring Boot 诞生了!
IOC
Inversion of Control
工作流程
IOC容器初始化
将xml,注解,配置类用加载器加载生成BeanDefinition注册到IOC容器(保存到BeanDefinitionMap集合)
ClassPathBeanDefinitionScanner 的核心方 ...
算法日记时间复杂度与空间复杂度时间复杂度与空间复杂度详解 —— 如何计算 + 如何表示_空间复杂度和时间复杂度-CSDN博客
时间复杂度:循环(执行)次数
空间复杂度:栈帧的开辟数量,常量的数量
N次循环,如果每次循环都会创建一个新的常量则为 O(N)
Java数据结构APIStackJava Stack 类 |菜鸟教程 (runoob.com)
1Stack<Integer> s1 = new Stack<Integer>();
peek 查看最顶部元素
pop 弹出最顶部元素
push 将元素压入栈中
降序排序1Arrays.sort(arr, (a, b) -> b - a);
int数组降序
123456789101112131415161718192021import java.util.Arrays;import java.util.Collections;import java.util.List;public class DescendingSortExample { public static v ...