i7o
未读i7(i它是什么,7它作用是什么)
1.定时任务调度是什么,作用是什么,怎么用。
定时任务调度是通过时间定时来执行任务,作用是在时间到达时刻,执行任务,用来执行任务,比如在凌晨执行缓存预热操作、检查短链接是否过期,是否删除缓存、等定时操作,不需要认为操作等行为。
2.分布式锁是什么,作用是什么,怎么用。
分布式锁是用来给分布式系统上锁,属于是多个服务之间公共一个锁,根据key来进行上锁,在多个服务中如果key相同,并且锁已被占用,则进行抛出异常或者等待锁释放,作用是用来在多个服务中在共享资源中调用的时候,防止线程并发问题,导致数据不一致等问题,上锁相当于在访问共享资源时,进行排队,只能一个一个来,保障数据统一性。
3.异步是什么,作用是什么,怎么用。
异步是在线程池中,主线程异步调用某个方法,主线程继续执行下面操作,并且通过线程池分配一个线程来与主线程并发执行操作,作用多线程处理,使用异步方法,提高程序的效率和响应性,不阻塞主线程和主流程。
4.分库分表是什么,作用是什么,怎么用。
分库分表有垂直分表,水平分表,以及垂直分库,水平分库。作用是解决在大规模场景下,单个数据库或单个表下因 ...
反射
当动态的获取信息,或者动态的去调用对象的方法,这类相关操作就是反射机制。
创建反射的四种
1234// 1.Class<? extends Student1> aClass1 = stu1.getClass();// 2.Class<?> aClass1 = Class.forName("类的路径");// 3.Class<Student1> aClass1 = Student1.class;// 4.以及类的对应包装类相当于 方式一 有了一个实例类来获取类
获取类的方法,方法名,返回类型,以及调用其对象的方法
12345678910System.out.println("---------获取类的方法和方法名和返回类型---------------"); //2.获取类的访问方式和方法名和返回类型 以及调用方法 Method[] methods = aClass.getMethods(); for (Met ...
给定一个大小为 n≤1000000 的数组。
有一个大小为 k 的滑动窗口,它从数组的最左边移动到最右边。
你只能在窗口中看到 k 个数字。
每次滑动窗口向右移动一个位置。
以下是一个例子:
该数组为 [1 3 -1 -3 5 3 6 7],kk 为 33。
窗口位置
最小值
最大值
[1 3 -1] -3 5 3 6 7
-1
3
1 [3 -1 -3] 5 3 6 7
-3
3
1 3 [-1 -3 5] 3 6 7
-3
5
1 3 -1 [-3 5 3] 6 7
-3
5
1 3 -1 -3 [5 3 6] 7
3
6
1 3 -1 -3 5 [3 6 7]
3
7
你的任务是确定滑动窗口位于每个位置时,窗口中的最大值和最小值。
输入格式输入包含两行。
第一行包含两个整数 n 和 k,分别代表数组长度和滑动窗口的长度。
第二行有 n 个整数,代表数组的具体数值。
同行数据之间用空格隔开。
输出格式输出包含两个。
第一行输出,从左至右,每个位置滑动窗口中的最小值。
第二行输出,从左至右,每个位置滑动窗口中的最大值。
输入样例:128 31 3 ...
给定一个字符串 SS,以及一个模式串 PP,所有字符串中只包含大小写英文字母以及阿拉伯数字。
模式串 PP 在字符串 SS 中多次作为子串出现。
求出模式串 PP 在字符串 SS 中所有出现的位置的起始下标。
输入格式第一行输入整数 NN,表示字符串 PP 的长度。
第二行输入字符串 PP。
第三行输入整数 MM,表示字符串 SS 的长度。
第四行输入字符串 SS。
输出格式共一行,输出所有出现位置的起始下标(下标从 00 开始计数),整数之间用空格隔开。
数据范围1≤N≤1051≤N≤1051≤M≤1061≤M≤106
输入样例:12343aba5ababa
1234567891011121314151617181920212223242526#include<bits/stdc++.h>using namespace std;const int N = 100010,M = 1000010;int n,m;int ne[N];char s[M],p[N];int main(){ cin>>n>>p+1>>m>> ...
IO?NIO?IO
按照流的流向分的话,可以分为输入流和输出流。
按照操作单元规划分的话,可以划分字节流和字符流。
按照流的角色划分的话,可以划分位字节流和处理流。
处理流的概念就是:增强基本流的功能(字节流和字符流)
Java IO 涉及的有40多个类,但是都是从4个抽象类基类中派生出来的。
扩展
AutoCloseable 接口
一个实现方法close();
一个对象在关闭之前可能会持有资源,如果close()方法处在try退出带有with-resource快时,将会在退出前,将调用AutoCloseable接口的close()方法。
幂等性 对于同一操作,无论一次还是多次,产生的效果和结果都是一样的,不会因为次数而变化。
IO
12345graph LR IO --> A(Reader-字符读取) IO --> A2(Writer-字符写出) IO --> A3(InputStream-字节读取) IO --> A4(OutputStream-字节写出)
NIO
Java1.4引进
Buffer 是什么?
Buffer是一个容器 ...
怎么个全局异常呢?先了解其注解
@RestControllerAdvice 其作用是为了拦截带有@Controller注解控制层内的异常
比如还要service层,还要数据持久层。他们属于同一层,但是控制层是调用服务层,服务层会调用数据持久层,因此,无论是服务层,还是数据持久层发生异常,捕获到了,都会在控制层,全局异常拦截器给捕获到。
throw 捕获到异常后 会返回给调用此方法的调用者返回上一层?
基础不太好突然想到为什么返回JSON给前端,
突然想到带有***@RespondBody***
所以什么是全局异常拦截器?根据Spring提供的注解@RestControllerAdvice
12345678@Componet@Slf4j@RestControllerAdvicepublic class GlobalExceptionInterceptor{ //关于@ @SneakyThrows注解 相当于 我要在方法中声明throw的异常,如果我加的话就不需要啦 @SneakyThrows @ExceptionHandler(value = M ...
单链表?如何用数组模拟一个单链表?
用e[N],ne[N],来模拟链表的值和下标指针。
idx表示当前的坐标。
初始数据位 head = -1,idx = 0;
模拟在头节点插入数据
123456void add_to_head(int x){ e[idx] = x;//插入值 ne[idx] = head //把当前的下标指针等于head,相当于 当前就是head head = idx; //把头变成idx; idx ++;//因为当前数据已经完成,坐标将会往前。}
模拟插入数据
1234567void insert(int k,int x){ //k表示的是在k的右边插入一个数据,比如红色的这块就是我加入之后的结果 e[idx] = x; //存入值 ne[idx] = ne[k]; //把下一个指针给插入的数据 ne[k] = idx; //k位的数据指向 当前下标指针 idx++; //完成后+1}
模拟删除第k位右边的的数
1234void remove( ...
关于双链表的增和删模拟删除
12345//删除第k位的数据void remove(int k){ l[r[k]] = l[k]; //把黑的指针都给替换即可 r[l[k]] = r[k];}
模拟双链表增加
12345678//向第k位的右边插入数据void insert(int k,int x){ e[idx] = x; r[idx] = r[k];//把当前数据的右指针指向右边 l[idx] = k;//当前数据的左指针指向左边 l[r[k]] = idx; //最后一个的左指针指向当前数据 r[k] = idx++;//k位的右指针指向当前数据即可}
总结了解其指针替换即可,并不难,慢慢把代码记住就行。
记住模板即可
代码题目如下:实现一个双链表,双链表初始为空,支持 55 种操作:
在最左侧插入一个数;
在最右侧插入一个数;
将第 kk 个插入的数删除;
在第 kk 个插入的数左侧插入一个数;
在第 kk 个插入的数右侧插入一个数
现在要对该链表进行 MM 次操作,进行完所有操作后,从左到右输出整个链表。
注意:题目中 ...
序列化是什么?反序列化?序列化:将对象转换为字节的序列的过程叫做对象的反序列化。
反序列化:把字节序列恢复为对象的过程称为对象的反序列化。
transient 字段不会参与序列化
static 字段也不会参与序列化 只会读取静态资源
其中需要序列化的类需要实现Serializable接口
serialVersionUID是什么?有什么用?serialVersionUID是Java序列化机制中用来标识类版本的一个唯一标识符。它是Serializable接口的一部分,用于在序列化和反序列化过程中验证类的一致性。
serialVersionUID是一个静态的、最终的long类型字段
12345678910111213public class User implements Serializable { private String userName; private String password; private transient String creditCarNumber;// @Serial private static final l ...






