- 博客(29)
- 收藏
- 关注
原创 Redisson分布式锁使用方式
Redisson的maven坐标如下:<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.10.1</version></dependency>第二步:编写配置类第三步:改造
2022-06-28 16:38:55 1132 1
原创 Redis分布锁
版本三针对前面版本二还有一点需要优化,就是加锁和解锁必须是同一个客户端,所以在加锁时可以设置当前线程id,在释放锁时判断是否为当前线程加的锁,如果是再释放锁即可。
2022-06-28 16:35:02 350
原创 Java 引入非法请求拦截功能
/** * 判断用户是否为登陆状态 * 获取cookie对象,解析用户ID * 如果用户ID不为空,且在数据库中有记录,判断合法 * 否则,请求不合法,进行拦截,重新登陆 */
2022-06-21 11:40:23 851
原创 MyBatis-Plus用起来太舒服了
一、简介MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生二、特性无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大 部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用:通过 Lambda
2022-06-03 22:18:01 1552
原创 使⽤Redis做缓存使⽤存在的问题 [重点]
使⽤redis做为缓存在⾼并发场景下有可能出现缓存击穿、缓存穿透、缓存雪崩等问题缓存击穿 缓存击穿:⼤量的并发请求同时访问同⼀个在redis中不存在的数据,就会导致⼤量的请 求绕过redis同时并发访问数据库,对数据库造成了⾼并发访问压⼒。使⽤ 双重检测锁 解决 缓存击穿 问题 解决⽅案:当从数据库查询到⼀个null时,写⼀个⾮空的数据到redis,并设置过期时间 除此之外,还可以使用网页静态化技术来达到此目的 网页静态化:将数据库中每条数据结合模板生成单独的HTML文件进行
2022-05-31 16:06:22 119
原创 springboot单表三级联动模糊查询,单表三级菜单模糊搜索,分页三级联动模糊查询,树形模糊查询
今天学习到了做一个三级联动,要可以进行模糊查询,看了很多CSDN的文章,写的都不太清楚,对于俺这种小白极为不友好,看到这个大佬的文章,非常感谢,自己就照抄了一波 链接SQLCREATE TABLE `equipment` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'ID', `name` varchar(50) NOT NULL COMMENT '名称', `model` varchar(50) DEFAULT NULL COMMEN
2022-05-13 13:53:45 1099
原创 Java日志学习-Lgback + SLF4j
概述用于记录系统中发生的事件。日志的等级all < trace < debug < info < warn < error < fatal < offLgback + SLF4j项目中导入依赖<!-- 导入logback ,IDEA会自动导入 slf4j和 logback -core --><dependency> <groupId>ch.qos.logback</groupId>
2022-01-18 22:49:24 215
原创 2021Java就业班三套
黑马Java就业班三套https://52it.cc/forum.php?mod=viewthread&tid=7&fromuid=4(出处: 52IT吧)
2021-11-25 10:00:45 194
原创 龙猫Java自学-SpringMVC
一、SpringMVC概述Spring MVC是由spring官方提供的基于MVC设计理念的web框架Spring MVC是基于Servlet封装的用于实现MVC控制的框架,实现前端和服务端的交互1.1SpringMVC的优势 严格遵守了MVC分层思想 采用了松耦合、插件式结构,相比较于我们封装的BaseSerlet以及其他的一些MVC框架来说更灵活、更具有扩展性 Spring MVC是基于Spring的扩展。提供了一套完善的MVC注解 Spring MV
2021-11-22 15:42:37 5763
原创 Java-Spring自学笔记
Spring自用,所以很多知识点不全是一个轻量级控制反转(IoC)和面向切面编程(AOP)的框架之前主动权在业务层(程序员)手上,现在主动权在dao层(用户)手上IoC隐式的自动装配<!--byName: 会自动在容器上下文中查找,和自己对象set方法后面的值对应的bean id--><beanid=".."class=".."autowire="byName"><propertyname=""value=""><...
2021-11-20 10:00:45 1679
原创 2021Java并发编程最新基础面试题及答案整理
1、ThreadLocal是什么?有什么用?ThreadLocal是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,特别适用于各个线程依赖不通的变量值完成操作的场景。简单说ThreadLocal就是一种以空间换时间的做法,在每个Thread里面维护了一个以开地址法实现的ThreadLocal.ThreadLocalMap,把数据进行隔离,数据不共享,自然就没有线程安全方面的问题了。2、说一下 Ato
2021-11-14 22:15:01 170
原创 Java基础学习笔记-处理规范、lambda、方法引用等
处理规范异常的语法注意:运行时异常被抛出可以不处理,可以自动抛出;编译时异常必须处理;按照规范都应该处理 重写方法申明抛出的异常,子类方法抛出的异常类型必须是父类抛出异常类型或为其子类型 方法默认都可以自动抛出运行时异常, throws RuntimeException 可以省略不写 当多异常处理时,捕获处理,前面的异常类不能是后面异常类的父类。 在 try/catch 后可以追加 finally 代码块,其中的代码一定会被执行,通常用于资源回收操作异常的作用: 可以处理代码问题,防
2021-11-04 14:30:51 95
原创 Java基础学习笔记-泛型和异常
泛型概述泛型(Generic):泛型就是一个标签:<数据类型> 泛型可以在编译阶段约束只能操作某种数据类型。注意:JDK 1.7 开始之后,泛型后面的申明可以省略不写 泛型和集合都只能支持引用数据类型,不支持基本数据类型。{ ArrayList<Object> lists = new ArrayList<>(); lists.add(99.9); lists.add('a'); lists.add("Java")
2021-11-04 14:30:30 290
原创 Java基础学习笔记-Queue、Collections、Map
QueueQueue:队列,先进先出的特性PriorityQueue 是优先级队列,底层存储结构为 Object[],默认实现为小顶堆,每次出队最小的元素构造方法: public PriorityQueue():构造默认长度为 11 的队列(数组) public PriorityQueue(Comparator<? super E> comparator):利用比较器自定义堆排序的规则 Queue<Integer> pq = new Priority
2021-11-04 14:30:20 216
原创 Java基础学习笔记-Vector、LinkedList、Set、HashSet、Linked和TreeSet
Vector同步:Vector的实现与 ArrayList 类似,但是方法上使用了 synchronized 进行同步构造:默认长度为 10 的数组扩容:Vector 的构造函数可以传入 capacityIncrement 参数,作用是在扩容时使容量 capacity 增长 capacityIncrement,如果这个参数的值小于等于 0(默认0),扩容时每次都令 capacity 为原来的两倍对比 ArrayList Vector 是同步的,开销比 ArrayList 要大,访问速度
2021-11-04 14:29:44 248
原创 Java基础学习笔记-集合、Collection、List、ArrayList
集合概述集合是一个大小可变的容器,容器中的每个数据称为一个元素集合特点:类型可以不确定,大小不固定;集合有很多,不同的集合特点和使用场景不同数组:类型和长度一旦定义出来就都固定作用:在开发中,很多时候元素的个数是不确定的 而且经常要进行元素的增删该查操作,集合都是非常合适的,开发中集合用的更多存储结构数据结构指的是数据以什么方式组织在一起,不同的数据结构,增删查的性能是不一样的数据存储的常用结构有:栈、队列、数组、链表和红黑树 队列(queue):先进先出,后进后出。(
2021-11-04 14:29:31 354
原创 Java基础学习笔记-System、BigDecimal、Regex
SystemSystem代表当前系统。静态方法:public static void exit(int status): 终止JVM虚拟机,非0是异常终止 public static long currentTimeMillis(): 获取当前系统此刻时间毫秒值 static void arraycopy(Object var0, int var1, Object var2, int var3, int var4): 数组拷贝 参数一:原数组 参数二:从原数组的哪个位置开始赋值。 参数...
2021-11-02 12:00:50 142
原创 Java基础学习笔记-Arrays、Random、Date、DateFormat、Calendar、LocalDateTime、Math和DecimalFormat
ArraysArray 的工具类常用API:public static String toString(int[] a):返回指定数组的内容的字符串表示形式 public static void sort(int[] a):按照数字顺序排列指定的数组 public static int binarySearch(int[] a, int key):利用二分查找返回指定元素的索引 public static <T> List<T> asList(T... a):返回由
2021-11-02 11:59:34 207
原创 Java基础学习笔记-代码块、API、Objects和String StringBuilder
代码块静态代码块静态代码块的格式:static {}静态代码块特点: 必须有static修饰 会与类一起优先加载,且自动触发执行一次 只能访问静态资源 静态代码块作用: 可以在执行类的方法等操作之前先在静态代码块中进行静态资源的初始化 先执行静态代码块,在执行main函数里的操作 public class CodeDemo { public static String schoolName ; public static ArrayList&l
2021-11-02 11:56:38 133
原创 Java基础学习笔记-抽象类、接口、多态、内部类和权限符
抽象类基本介绍父类知道子类要完成某个功能,但是每个子类实现情况不一样。抽象方法:没有方法体,只有方法签名,必须用abstract修饰的方法就是抽象方法抽象类:拥有抽象方法的类必须定义成抽象类,必须用abstract修饰,抽象类是为了被继承一个类继承抽象类,必须重写抽象类的全部抽象方法,否则这个类必须定义成抽象类,因为拥有抽象方法的类必须定义成抽象类public class AbstractDemo { public static void main(String[] a
2021-11-02 11:53:41 139
原创 Java基础学习笔记-继承、super和final
继承基本介绍继承是 Java 中一般到特殊的关系,是一种子类到父类的关系被继承的类称为:父类/超类。 继承父类的类称为:子类。继承的作用:提高代码的复用,相同代码可以定义在父类中 子类继承父类,可以直接使用父类这些代码(相同代码重复利用) 子类得到父类的属性(成员变量)和行为(方法),还可以定义自己的功能,子类更强大继承的特点:子类的全部构造器默认先访问父类的无参数构造器,再执行自己的构造器 单继承:一个类只能继承一个直接父类 多层继承:一个类可以间接继承多个父类(家谱)
2021-11-02 11:51:13 125
原创 Java基础学习笔记-构造器、包、封装、this和static
构造器构造器格式:修饰符 类名(形参列表){}作用:初始化类的一个对象返回分类:无参数构造器,有参数构造器注意:一个类默认自带一个无参数构造器,写了有参数构造器默认的无参数构造器就消失,还需要用无参数构造器就要重新写构造器初始化对象的格式:类名 对象名称 = new 构造器无参数构造器的作用:初始化一个类的对象(使用对象的默认值初始化)返回 有参数构造器的作用:初始化一个类的对象(可以在初始化对象的时候为对象赋值)返回包包:分门别类的管理各种不同的技术,便于管理技术
2021-11-02 11:49:00 63
原创 Java基础学习笔记-枚举、Debug、对象和类
枚举枚举是 Java 中的一种特殊类型,为了做信息的标志和信息的分类定义枚举的格式:修饰符 enum 枚举名称{ 第一行都是罗列枚举实例的名称。}枚举的特点:枚举类是用 final 修饰的,枚举类不能被继承 枚举类默认继承了 java.lang.Enum 枚举类 枚举类的第一行都是常量,必须是罗列枚举类的实例名称 枚举类相当于是多例设计模式 每个枚举项都是一个实例,是一个静态成员变量方法名 说明 String name() 获取枚举项的名称 int o
2021-11-02 11:46:20 145
原创 Java基础学习笔记-运算、参数和方法
运算 i++ 与++i 的区别? i++ 表示先将 i 放在表达式中运算,然后再加 1 ++i 表示先将 i 加 1,然后再放在表达式中运算 || 和 |,&& 和& 的区别,逻辑运算符 &和| 称为布尔运算符,位运算符。&&和|| 称为条件布尔运算符,也叫短路运算符。 两种运算符得到的结果完全相同,但得到结果的方式又一个重要区别:条件布尔运算符性能比较好。他检查第一个操作数的值,再根据该操作数的值进行操作,可能根本就不处理第二个操作数
2021-11-02 11:42:00 147
原创 Java基础学习笔记-数据和数组
数据变量类型 成员变量 局部变量 静态变量 定义位置 在类中,方法外 方法中或者方法的形参 在类中,方法外 初始化值 有默认初始化值 无,先定义,赋值后才能使用 有默认初始化值 调用方法 对象调用 对象调用,类名调用 存储位置 堆中 栈中 方法区(JDK8 以后移到堆中) 生命周期 与对象共存亡 与方法共存亡 与类共存亡 别名 实例变量 类变量,静
2021-11-02 11:40:47 131
原创 牛客网错题javaEE部分知识点
ava EE部分知识点tags: [#错题, #知识点] 1、doget/dopost与Http协议有关,是在 javax.servlet.http.HttpServlet 中实现的 2、MVC模型: 模型通常代表应用程序中的数据以及用于操纵数据的业务逻辑; 视图是其对应的模型的可视化呈现,视图将模型渲染成适合于交互的形式(通常为用户界面元素); 控制器是用户与系统之间的纽带,它接受用户输入,并指示模型和视图基于用户输入执行操作(处理数据、展示数据);
2021-11-02 11:31:52 150
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人