- 博客(17)
- 收藏
- 关注
原创 使用Redis实现分布式锁
问题:如果线程A的锁超时释放了,但是A还没有删除锁,B获取到了同一个name的锁,A在删除的时候会删除掉B的锁。解决:添加线程标识,每次删锁前判断一下是不是自己的线程所获取到的锁。解决方案:使用lua脚本比锁、删锁。解决:利用Redisson,
2024-12-12 17:13:11
451
原创 方法区的变更(HotSpot虚拟机)
方法区是Java虚拟机规范定义的一块用于存储类信息、常量、静态变量、编译器编译后的代码等数据的内存区域。方法区是规范,不是实现。
2024-12-12 17:11:50
342
原创 接口和抽象类的区别
是一种模板,是一种不能直接实例化的类,用于共享通用的代码实现,同时允许子类提供具体实现,强调“复用”,可以包含抽象方法(没有实现的方法)和具体方法(有实现的方法)// 字段// 方法System.out.println("模板方法" + field2);// 抽象方法类似接口方法,只能是public abstract修饰@OverrideSystem.out.println("模板方法之外的个性化实现");
2024-12-12 17:10:05
276
原创 使用HashMap实现LRU
1. 使用LinkedList实现import java.util.LinkedList;public class Main { public static void main(String[] args) throws Exception { cacheLRU cache = new cacheLRU(3); cache.add(1); cache.add(2); cache.add(3); System.out
2024-12-12 17:09:13
468
原创 junit简单使用
在 IDE(如 IntelliJ IDEA 或 Eclipse)中右键点击测试类或方法,选择“Run”。在springboot-boot-starter-test中已经包含了此依赖, 可以不用添加。: 在所有测试方法运行前执行(静态方法)。: 在所有测试方法运行后执行(静态方法)。: 在每个测试方法运行前执行。: 在每个测试方法运行后执行。创建一个测试类,通常以。: 标记方法为测试方法。: 验证抛出指定异常。: 验证两个值相等。: 验证对象不为空。
2024-11-29 22:44:43
250
原创 Java多线程相关知识
线程池存在的意义:创建一个线程的成本是比较高的, 如果没有线程池需要频繁的创建和销毁线程任务容器:线程池中的任务容器就像一个共享资源容器,里面存放着需要执行的任务。这些任务可能是从外部提交进来的,或者是线程池的工作线程需要处理的。消费者线程:线程池会预先创建一定数量的工作线程(消费者线程),这些线程是从一开始就存在的,并且会一直循环使用。你提到的2个消费者线程就是这个线程池的初始工作线程数。等待任务:当线程池的消费者线程没有任务可做时,它们会进入等待状态wait()
2024-11-27 18:46:45
893
原创 mybatis-plus代码生成器
官网: https://baomidou.com/guides/new-code-generator/两种方式 交互式和直接生成, 直接写在一个main函数中就可以运行。2.2 代码模板 可以自定义风格。模板 (导入自己相应类的包)
2024-11-26 14:34:47
393
原创 CompletableFuture简单使用
Future类只是一个泛型接口,核心思想是异步调用,主要有5个核心API泛型接口:编译时期有效,为了保持数据类型的一致// V 代表了Future执行的任务返回值的类型// 取消任务执行// 成功取消返回 true,否则返回 false// 判断任务是否被取消// 判断任务是否已经执行完成// 获取任务执行结果// 指定时间内没有返回计算结果就抛出 TimeOutException 异常类可以解决Future函数式编程、异步任务编排组合 的这些缺陷。
2024-11-23 02:42:24
729
原创 git基础命令
如果是第一次下载,需要配置邮箱和用户名本地init一个仓库若还未关联远程仓库则查看远程仓库删除远程仓库重命名远程仓库待更新注意事项:如果第一次提交报如下错误:$ git push原因: 当前分支本地有更改,但没有设置与远程仓库中某个分支的关联。每次使用git push时,Git 需要知道要将本地的更改推送到远程仓库的哪个分支。解决方法: 使用当前分支会和远程的关联,之后可以直接使用git push和git pull。
2024-11-18 18:39:28
584
原创 mybatis简单使用
useGeneratedKeys : (仅适用于 insert 和 update)这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系型数据库管理系统的自动递增字段),默认值:false。由于 SQL 的结构部分(如表名和列名)在预编译时无法被参数化(它们不是值,而是 SQL 语句的一部分),因此不能使用。操作后,应该将数据库生成的主键值赋值给 Java 对象的哪个属性。
2024-11-14 18:05:11
651
原创 图形验证码
data中绑定数据并注册点击图片调用后台接口 切换验证码的图片的事件。2. 登录页面中加入这段代码 css样式要引入其他包。6. Account属性中添加verCode属性。7. 在登录接口中首先判断验证码。
2023-12-08 21:36:20
416
原创 JavaScript笔记(瞎写的)
1). 节省内存: 在调用方法时,会通过原型链查找,相当于只定义了一个方法,大家都去调用这个构造函数的原型对象中的方法,不用每次new一个对象时都把方法定义在实例对象中。1). 使用var关键字声明的变量,会在所有的代码执行之前被声明(但是不会赋值),但是如果声明变量时不使用var关键字,则变量不会被声明提前。在全局作用域中有一个全局对象window,它代表的是一个浏览器的窗口,它由浏览器创建,我们可以直接使用。2).方便修改: 只需要修改原型对象的方法, 实例化对象调用的每个方法都会被修改。
2023-11-15 14:38:19
83
原创 利用AOP进行公共字段的填充
业务表中的create_time create_user update_time update_user 等公共字段。2.自定义切面类 AutoFillAspect 统一拦截加入了@AutoFill注解的方法,通过反射为公共字段赋值。3.在Mapper接口的insert 和 update方法上加上 @AutoFill注解 用于填充公共字段。1.自定义注解@AutoFill 用于标识需要进行公共填充的字段。3.在Mapper的方法上加上@AutoFill注解。
2023-11-14 17:12:35
114
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅