- 博客(47)
- 收藏
- 关注
原创 面试八股 —— Redis篇
和根据不同的业务提供对应的方案(1)延时双删避免脏数据,所以要删两次缓存,延迟双删(2) 分布式锁(3) 异步通知RDB —— Redis数据备份文件,数据快照内存记录磁盘——便于恢复。
2025-03-19 12:21:30
220
原创 Springboot项目文件配置
properties会出现大量重复,层次不清晰。把properties格式改成yml。注意数值前面必须要有空格。
2025-03-18 12:03:40
129
原创 基于Mybatis的增删改查
和sql语句一样,就是需要在usermapper里面编写对应的方法。可以封装一个User user,然后new一个对象直接传入。提供占位符作为形参导入。
2025-03-17 15:27:23
166
原创 MyBatis
后端三层:Controller + Service + DAO。相当于MyBatis封装了所有的JDBC操作。编写测试用例执行sql语句。使用MyBatis流程。Mybatis初步配置。
2025-03-17 14:03:11
256
原创 同步——synchronized
线程在执行代码时候,cpu的执行权随时会被其他线程抢走。把操作共享数据的代码锁起来。锁对象一定要是唯一的。加static关键字。
2025-03-14 00:29:10
119
原创 异常——Exception
方法内出现异常直接抛出,交给调用者,然后继续执行调用者的代码,采取try catch。输出异常,然后停止,下面的语句不会继续执行。包裹快捷键:ctrl+alt+t。可以让程序继续执行,不会中断。2. 手动处理异常。
2025-03-13 11:45:34
103
原创 反射——Reflection(获取变量,方法,创建对象的方式)
利用反射创建对象3.获取成员变量getgetDeclaredField 获取所有的创建对象:set4.获取成员方法getMethod加s就是所有不加就是单个。
2025-03-13 10:59:10
221
原创 多线程三种实现方式
3. 实现Callable接口,重写call方法,创建FuterTask对象和Thread对象。1.继承Thread类,重写run方法,start启动(以示区分可以对不同线程命名)tips: getname时候要获取当前正在运行的线程。2. 实现Runable接口重写run方法。
2025-03-12 18:59:35
92
原创 Stream流
终结方法就是用完之后不能调用其他方法了。distinct 元素去重。先更到这,太细了回头再看。单列ArrayList。Stream流中间方法。filter 链式编程。
2025-03-11 13:56:53
205
原创 集合进阶——set系列
HashSet里面如果是自定义对象,要重写hashcode,equals方法来去重。底层原理热盎然是哈希表,但是每个元素额外多了一个双链表机制来记录存储的顺序。hashCode,equals底层都是比较的地址值,我们需要的是属性值。HashSet首先获取哈希值,然后用equals获取内部属性值。底层原理:链表长度超过8,数组长度大于64,自动转换为红黑树。重写hashCode,相同对象输出相同的哈希值。底层用地址值进行比较,利用属性值计算哈希值。继承于Collection,比较对象的属性值而不是地址值。
2025-03-10 13:35:05
267
原创 集合进阶——数据结构
正常二叉树只能遍历寻找——> 二叉查找树/排序树/搜索树——>左右子树差异很大,也会降低效率——>平衡二叉树——>旋转效率太低——>红黑树。(自平衡的二叉查找树),是一种特殊的二叉查找树,但是不是平衡二叉树。3.任意结点到所有后代叶结点的简单路径,黑色结点数相同。——二叉查找树(二叉排序树/二叉搜索树)、二叉平衡树。就是先左后右的基础上,当前结点的前中后。链表(增删快,查询慢,都需从头找)默认添加的结点是红色——效率高。——>考虑到旋转机制的繁琐。1.根结点和叶结点都是黑。数组(查询快,增删慢)
2025-03-10 12:41:04
172
原创 集合进阶——Collection
tips:判定对象是否存在时候,需要重写equals方法。——>增强for遍历( 快捷键 coll.for )for遍历只适用于list系列,无序的set遍历不了。Collection的遍历方式。——> lambda 表达式。List和Set区别。
2025-03-09 22:07:40
145
原创 接口——interface
3.定义PingpangSporter,BasketballSporter,PingpangCoach,BasketballCoach类继承。定义接口后要再public abstract void。定义抽象方法,然后在其他类里面实现implement。2.定义Sporter和Coach类继承Person。练习——写一个带抽象类和接口的标准javabean。定义一种规则,需要用的时候调用接口。4.定义说英语的接口抽象方法。5.在对应的子类里面实现接口。maybe是另一种多继承。1. 定义Person类。
2025-03-05 23:51:42
174
原创 包+final+static复习
static可以通过类名直接调用静态变量和静态方法。如果不加static就要先实例化再调用。在switch语句里面。
2025-03-04 11:32:16
141
原创 面向对象进阶——多态
一言蔽之,就是在继承的基础上,重写父类方法,达到高复用性。p不能调用子类特有功能,要使用必须强制转换,//编译左边,运行右边。t.name //编译左边,运行左边。java 三特性:封装,继承,多态。
2025-03-01 15:26:46
204
原创 继承——extends
Student,Teacher重复的类写在第三个类Person里面,提高复用性。java只支持单继承,不支持多继承,但可以多层继承A-B-C。封装:封装零散的数据,Student,Teacher。java里面所有类都直接或者间接继承object类。2.成员变量可以继承但是不能直接使用。
2025-02-28 15:08:03
99
原创 集合——ArrayList
集合不能存储基础数据类型(int,float,double)list.set(1,”aaa“)改第二个元素。list.get(0)查第一个元素。数组:可以存基础+引用数据类型。list.size()长度。list.remove删。相对于数组的特性:1.list.add 增。
2025-02-21 16:25:51
139
原创 字符串练习
大致这样,后面需要再补吧,觉得学这么细没什么太大意义现在,不是刷题的时候。用数字0-9的ascii值,生成罗马表,然后转换。1.数字转换罗马数字。
2025-02-20 16:30:29
205
原创 字符串——StringBuilder使用(拼接,反转)
9.StringBuilder操作字符串(拓展,反转等)字符数组:char[] chs ={'a','b'};字节数组:byte[] by = {98,97}5.统计字符次数(大写,小写,数字)1.传递内容到字符串。
2025-02-20 15:55:57
187
原创 面向对象综合训练
里面不能直接输出ci,要调用get set方法sout(ci.getname)2.arr.foi快捷键直接生成for循环。3.arr[1]=c1给数组赋值。新get到的数组用法。
2025-02-19 14:12:34
148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人