Guava Cache是一款非常优秀的本地缓存框架。这篇文章,我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 。1 经典配置Guava Cache 的数据结构跟 JDK1.7 的 ConcurrentHashMap 类似,提供了基于时间、容量、引用三种回收策略,以及自动加载、访问统计等功能。首先,我们温习下 Gauva Cache 的经典 ......
208
0
0
2024-03-17
[来看我]点赞再看,养成习惯 关系 复杂度 1.直接插入排序 基本思想 : 将新的数据插入已经排好的数据列中。 将第一个和第二个数排序,构成有序数列 然后将第三个数插进去,构成新的有序数列,后面的数重复这个步骤 算法描述1、设定插入的次数,即是循环次数,for(int i=1;i<length;i++),1个数的那次不用插入。2、设定插入 ......
223
0
0
2024-03-17
magic-api一个基于 Java 的接口快速开发框架,通过 magic-api 提供的 UI 界面完成编写接口,无需定义 Controller、Service、Dao、Mapper、XML、VO 等 Java 对象即可完成常见的 HTTP API 接口开发。官网地址:https://www.ssssssss.org/magic-api官方在线演示:htt ......
370
0
0
2024-03-17
前言本文快速回顾了Java中最基础的知识点,用作面试复习,事半功倍。基础知识点面向对象的特性答:封装、继承和 多态 。多态分为 编译时多态和运行时多态。 编译时多态: 方法的重载 运行时多态:指程序中定义的对象引用所指向的具体类型在运行期间才确定。运行时多态 有三个 条件 :多态的存在有三个前提:要有继承关系子类要重写父类的方法父类引用指向子类对,父类An ......
216
0
0
2024-03-14
讲一讲 Spring Bean 的生命周期算是面试时候一道非常经典的问题了!如果没有研究过 Spring 源码,单纯去背面试题,这个问题也是可以回答出来的,但是单纯的背缺乏理解,而且面试一紧张,就容易背岔了。但是如果你从头到尾看了松哥的 Spring 源码分析,那么这个问题就不需要背了,就根据自己对 Spring 源码的理解讲出来就行了。在前面的文章中,松哥 ......
241
0
0
2024-03-13
TreeSet/HashSet 区别 顾名思义,首先是结构上的不同1、TreeSet背后的结构是TreeMap,也就是 红黑树 ,能够实现自动排序。它通过equals方法或者compareTo方法进行内容的比较。2、HashSet背后是 Hash Map,key是无序的,只能做外部排序。既然是Hash,那么就要重写其中对象的 hashCode 和equal ......
214
0
0
2024-03-12
本文思维导图 图1 思维导图 原理探讨当我们在项目中引入 Spring Security 的相关依赖后,默认的就是表单登录形式;俗话说:“听人劝,吃饱饭”,既然 Spring Security 已经给我们安排的明明白白了,我们就从表单登录开始吧。在开始之前,我们可以站在 Spring Security 的角度上思考:如果我自己来实现表单登录的功能,那么我需要 ......
299
0
0
2024-03-12
1、Spring Resources概述在 Java 编程中,java.net.URL 类常用于进行资源操作。然而,这个类在访问某些底层资源时存在局限性。例如,它不能直接从类路径中获取资源,或者在 Web 项目中无法方便地访问相对于服务器上下文的资源。此外,java.net.URL 在功能方面也有所欠缺,比如无法检测某个资源是否存在。针对这些限制,Sprin ......
356
0
0
2024-03-11
在分布式系统中,当多个线程(或进程)同时操作同一个资源时,为了保证数据一致性问题,所以就需要一种机制来确保在同一时间只有一个线程(或进程)能够对资源进行修改,这就是分布式锁的作用。分布式锁是一种在分布式环境下的锁实现,它允许在多个进程或服务器之间协调对共享资源的访问或操作。分布式锁的关键特性是它能够在集群内的不同节点间保持其锁定状态,使得某一时刻仅有一个客户 ......
347
0
0
2024-03-10
在软件开发的道路上,项目构建是一个不可避免的过程。而Maven,作为一个强大的项目管理和构建工具,为开发者提供了一套标准化的项目结构和构建流程。本文将围绕Maven的使用详解,手把手地带你探索Maven的世界,让你在项目构建的征途上更加得心应手。什么是 Maven?Maven是一个项目管理和构建工具,它采用基于项目对象模型(POM)的概念,通过插件机制,为项 ......
313
0
0
2024-03-10
在计算机的世界里,Linux是一个强大而富有魅力的操作系统。对于很多小白用户来说,刚接触Linux时可能感觉有些陌生,尤其是在命令行界面下。然而,正是这个看似晦涩的命令行,才是Linux系统最为强大和灵活的地方。本文将围绕Linux常用命令,为你详细解读这个命令行的魔法世界,让你能够游刃有余地使用Linux系统。初识 Linux 命令行首先,我们来了解一下L ......
230
0
0
2024-03-10
Timer在『任务调度线程池』功能加入之前,可以使用 java.util.Timer 来实现定时功能,Timer 的优点在于简单易用,但 由于所有任务都是由同一个线程来调度,因此所有任务都是串行执行的,同一时间只能有一个任务在执行,前一个 任务的延迟或异常都将会影响到之后的任务。public class Test { public static v ......
251
0
0
2024-03-10
在Java中如何避免内存泄露?在Java中,内存泄露通常指的是当对象不再被使用时,仍然被其他对象引用,因此无法被垃圾回收器(Garbage Collector, GC)回收的情况。避免内存泄露主要依赖于良好的编程实践和一些工具的辅助。以下是一些避免内存泄露的方法:使用局部变量: 尽可能使用局部变量,这样当方法执行完毕后,这些局部变量就会自然脱离作用域,成为垃 ......
240
0
0
2024-03-10
1、JdbcTemplateSpring 框架对 JDBC 进行封装,使用 JdbcTemplate 方便实现对数据库操作1.1 准备工作①搭建子模块搭建子模块:spring-jdbc-tx②加入依赖 <dependencies> <!--spring jdbc Spring 持久化层支持jar包--> ......
282
0
0
2024-03-10
在软件开发的道路上,项目构建是一个不可避免的过程。而Maven,作为一个强大的项目管理和构建工具,为开发者提供了一套标准化的项目结构和构建流程。本文将围绕Maven的使用详解,手把手地带你探索Maven的世界,让你在项目构建的征途上更加得心应手。什么是 Maven?Maven是一个项目管理和构建工具,它采用基于项目对象模型(POM)的概念,通过插件机制,为项 ......
301
0
0
2024-03-09