自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 自定义注解+AOP实现日志记录

记录日志:记录业务人员的操作日志【删除数据、修改数据、新增操作...】

2024-04-21 23:27:18 301

原创 服务端文件存储的两种方式minio和阿里云OSS

存储图片文件并返回路径。

2024-04-18 23:06:40 229 1

原创 二叉树层序遍历、先序遍历、中序遍历、后序遍历的实现

只需要将f方法进行修改,先记录左子节点,再记录头节点,最后记录右子节点。只需要将f方法进行修改,先记录右子节点,再记录左子节点,最后记录头节点。与上一题解法相同,只需要在存入每层数据时,存在最前面的位置。使用bfs进行遍历,将每一层存入一个集合中。也可以搜索完之后,进行反转。二叉树层序遍历(自底向上)

2024-04-17 23:56:34 251

原创 使用EasyExcel和POI操作Excel实现文件读和写

@ExcelProperty(value = "id" ,index = 0) 列的字段名称和索引@Data@ExcelProperty(value = "名称" ,index = 1)@ExcelProperty(value = "图片url" ,index = 2)@ExcelProperty(value = "上级id" ,index = 3)@ExcelProperty(value = "状态" ,index = 4)

2024-04-16 20:48:22 467

原创 使用JWT、Redis + token实现用户登录的两种方式。

使用JWT实现登录功能功能实现流程:1.用户发起登录请求。2.使用JwtBuilder生成令牌并返回。3.写一个拦截器,拦截初登录之外的请求。拦截到请求后解析令牌,若正常放行,并将当前用户id存在当前线程。若出异常则返回登陆失败。

2024-04-16 00:08:27 947

原创 【Spring】Spring简介、IOC、DI

IOC:Inversion of Control,翻译过来是反转控制。反转控制的思想完全颠覆了应用程序组件获取资源的传统方式:反转了资源的获取方向——改由容器主动的将资源推送给需要的组件,开发人员不需要知道容器是如何创建资源对象的,只需要提供接收资源 的方式即可,极大的降低了学习成本,提高了开发的效率。这种行为也称为查找的被动形式。DI:Dependency Injection,翻译过来是依赖注入。 DI 是 IOC 的另一种表述方式:即组件以一些预先定义好的方式(例如:setter 方法)接受来自于容

2024-01-26 19:21:42 996

原创 【微服务】微服务架构特征、Eureka注册中心、Ribbon负载均衡

微服务架构特征:单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责,避免重复业务开发面向服务:微服务对外暴露业务接口自治:团队独立、技术独立、数据独立、部署独立隔离性强:服务调用做好隔离、容错、降级,避免出现级联问题

2024-01-26 18:31:52 1759 1

原创 Redis常用命令以及在Java中操作

Redis是一个基于内存的 key-value 结构数据库。基于内存存储,读写性能高适合存储热点数据(热点商品、资讯、新闻)企业应用广泛。

2024-01-17 20:21:05 930

原创 【JVM】虚拟机的组成+字节码文件组成+类的生命周期

什么是JVM?JVM 本质上是一个运行在计算机上的程序,他的职责是运行Java字节码文件。JVM的功能1.解释和运行:对字节码文件中的指令实时的解释成机器码让计算机执行。2.内存管理:自动为对象、方法等分配内存,自动的垃圾回收机制。3.即时编译:对热点代码进行优化,提升执行效率,回收不再使用的对象。常见的JVMHotspot(OracleJDK版):闭源、使用最广泛,稳定可靠,社区活跃JIT支持OracleJDK默认虚拟机。HotSpot(OpenJDK版):同上,开源,OpenJD

2023-12-24 18:34:01 2000

原创 【Java】IO流相关操作

FileInputStream、FileOutputStream、FileReader、FileWriter、BufferedReader、BufferedWriter、ObjectOutputStream、ObjectInputStream、InputStreamReader、OutputStreamReader、PrintStream、PrintWriter、Properties

2023-12-22 20:58:15 407

原创 【Java】常用的时间类API

Date、SimpDateFormat、Calendar、LocallDate、LocalTime、LocalDateTime、ZoneId、ZoneDateTime、Instant、DateTimeFormatter、Period、Duration时间类的常用API

2023-12-19 23:55:06 952

原创 【Java】Spring Bean有几种配置方式?

定义 Spring Bcan 的3 种方式分别是:基于XML 的方式配置、基于注解扫播方式配置、基于元数据类的配置。

2023-12-14 18:39:10 1246

原创 【Java】MySQL存储 MD5 值应该用 VARCHAR 还是CHAR?

CHAR 非常适合存储 MD5 值。因为MD5 值是一个定长的值,对于固定长度的非常短的列,CHAR比VARCHAR的效率更高。

2023-12-13 14:49:20 551

原创 【Java】为什么ConcurrentHashMap的key不允许为null?

在Java 语言中,给 ConcurrentHashMap 和 Hashtable 这些线程安全的集合中的 key 或者 vale插入 nul 值会报空指针异常,但是单线程操作的 HashMap 又允许 key 或者 value 插入 null值。这到底是为什么呢?因为向ConcurrentHashMap 中插入 null 值会存在歧义。可以假设 ConcurrentHashMap 允许插入 null值,那么我们取值的时候会出现两种结果1)值没有在集合中,所以返回的结果就是 null。2)值就是 n

2023-12-13 14:34:59 711

原创 【Java】MyBatis是如何进行分页的?

1)直接在 Select 语句上增加数据库提供的分页关键字,并在应用程序中传递当前页,以及每页展示条数。2)使用MyBatis 提供的RowBounds 对象实现内存级别分页。3)基于 MyBatis 中的Iterceptor 拦截器,在 select 语句执行之前动态拼接分页关键字。

2023-12-12 14:59:22 420

原创 【Java】MyBatis中#号和$号的区别是什么?

#号等同于JDBC 里面的?号(占位符)。它当于在 PreparedStatement 预处理语句中设置参数,而 PreparedStatement 中的SQL语是预编译的,如果在设置的参数中包含特殊字符,则会自动进行转义。所以#号占位符可以防止 SQL 注入。

2023-12-12 14:41:11 479

原创 【MyBatis】对缓存机制的理解

对于1级缓存,它是 SqlSession 级别的缓存,也叫本地缓存。因为每个用户在执行查询的时候都需要使用SqlSession来执行,为了避免每次都去查数据库,MyBatis 把查询出来的数据保存到SqlSession 的本地缓存中,如果SQL命中缓存,就可以直接从本地缓存读取。如果想要实现跨 SqlSession 级别的缓存,1级缓存就无法实现了,因此,MyBatis 引入了2级缓存。当多个用户在查询数据的时候,只要有任何一个 SqlSession 拿到数据,就会放入2级缓存中,其他SqlSession可

2023-12-10 10:48:00 338

原创 【Java】ArrayList、Vector 和 LinkedList 的存储性能及特性?

ArrayList 和 Vector 的底层都采用数组来存储数据,而且都根据索引来获取数据,这样设计使得获取数据快而插入数据慢。另外,每次扩容都要移动数组中的元素,存储数据量较大的时候会影响读写性能。

2023-12-09 14:31:30 426 1

原创 【Java】Cookie和Session有什么区别?

所以,总的来看,Cookie 是客户端的存储机制,Session 是服务端的存储机制。两者结合使用可以实现会话状态的存储。

2023-12-08 12:15:00 342

原创 【Java】Integer a = 100,Integer b = 100,a == b的运行结果是什么?

之间的数字做了一个缓存,使用Integer a = 100进行赋值的时候,Java默认会。对于==和equals的功能不是很难清楚的可以参考 >>通过valueOf()这个方法对100进行装箱操作。a和b指向了同一个Integer内存的地址。a == b的比较结果是true。,从而触发了一个缓存机制,使得。Integer内部用到了。

2023-12-07 16:00:34 412

原创 【Java】new String(“demo“)之后,到底创建了几个对象?

对于这个问题,分以下两种情况:1) 如果 hello 这个字符串常量不存在,则创建两个对象,分别是hello 这个字符串常量,以及new String 这个实例对象。2)如果 hello 这个字符串常量存在,则只会创建一个对象,即new String这个实例对象。

2023-12-07 13:31:29 882

原创 【Java】为什么重写equals()方法就一定要重写hashCode()方法?

如果只重写equals方法不重写hashCode方法,就有可能导致a.equals(b) == true 但是hashCode值不同,只重写了equals()方法的对象,在使用散列集合进行存储的时候就会出现问题。因为散列集合是通过hashCode值计算key的位置,如果存储两个完全相同的对象,但是有不同的hashCode,就会导致这两个对象存储在不同的位置。当我们想要根据这个对象获取数据的时候就会出现一个悖论,一个完全相同的对象,会存储在哈希表的两个位置。所以在开发过程中约定俗成的一条规则。

2023-12-06 15:02:55 479 1

原创 【Java】Integer和int有什么区别?

·初始值不同,作为成员变量来说int的初始值为0,Integer的初始值为null。·存储位置不同。Integer存储在堆内存(因为他是一个对象),int存储在栈内存。

2023-12-05 14:58:21 415 2

原创 【Java】finally块一定会执行么?

程序没有进入到try语句块因为异常导致程序终止,这个问题主要是开发人员在编写代码的时候,异常捕获的范围不够

2023-12-05 14:28:00 345 1

原创 【Java】ArrayList自动扩容的机制是什么?

(我们也可以在构建ArrayList的时候指定初始长度),随着我们不断的往ArrayList中添加数据,当添加的数据。ArrayList里面就没有足够的容量来存储后续的数据,这个时候ArrayList就会。然后使用Arrays.copyOf()方法把老数组里面的数据拷贝到新的数组里面。首先创建一个新的数组,这个新数组的长度是原来数组长度的1.5倍。扩容完成之后,再把当前需要添加的元素加入到新的数组里面。默认情况下数组的长度是10个。ArrayList是一个。

2023-12-04 13:56:55 344

原创 【Java】HashMap是如何解决哈希冲突的?

HashMap在jdk1.8版本中是通过链式寻址法,以及红黑树的方式来解决哈希冲突的。其中红黑树是为了优化Hash表的链表过长导致时间复杂度增加的问题。当链表长度大于8并且哈希表的大小大于64的时候,再向链表中添加元素,就会触发链表向红黑树的转化。

2023-12-04 13:23:04 706

原创 【Java】String、StringBuffer、StringBuilder有什么区别?

Java 平台提供了两种类型的字符串: String 和 StringBuffer/StringBuilder,它们都可以储存和操作字符串,区别如下。

2023-12-03 14:34:06 484 1

原创 【Java】重写和重载有哪些区别?

方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。

2023-12-03 14:09:04 356 1

原创 【Java】==和equals有什么区别?

==:如果比较的对象是基本数据类型,则比较的是数值是否相等,如果比较的是引用数据类型,则比较的是对象的地址值是否相等。

2023-12-02 13:47:47 485

原创 【Java】hashcode和equals如何使用?

hash散列算法,使得在hash表中查找一个记录速度变0(1)每个记录都有自己的hashcode,散列算法按照hashcode把记录放置在合适的位置,在查找一个记录,首先先通过hashcode快速定位记录的位置,然后再通过equals来比较是否相等。如果hashcode没找到,则不equal,元素不存在于哈希表中,即使找到了,也只需执行hashcode相同的几个元素的equal,如果不equal,还是不存在哈希表中。默认的,object类的hashCode()方法返回这个对象存储的内存地址的编号。

2023-12-02 13:40:25 356

原创 【Java】抽象类和接口有什么区别?

一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类

2023-12-01 14:57:39 329 1

原创 【Java】ArrayList和LinkedList有什么区别?

ArrayList是基于索引的数据接口,它的底层是数组。它可以以O(1)时间复杂度对元素进行随机访问。

2023-12-01 14:41:13 649 1

原创 什么是HTTP协议?

什么是HTTP协议?

2023-05-03 23:15:14 76

原创 【学习笔记分享】MySQL数据库基础篇(下)多表查询、事务这些你都知道么?

【学习笔记分享】MySQL数据库基础篇(下)多表查询、事务这些你都知道么?

2022-12-13 16:23:12 177

原创 【位运算】你学废了么?

【位运算】你学废了么?

2022-12-13 15:03:19 106 1

原创 【学习笔记分享】MySQL数据库基础篇(中)函数、约束看这里就够了~

【学习笔记分享】MySQL数据库基础篇(中)MySQL函数、约束看这里就够了~

2022-12-09 00:29:17 134

原创 【学习笔记分享】MySQL数据库基础篇(上)话说你也在学MySQL?

【学习笔记分享】MySQL数据库基础篇(上)话说你也在学MySQL?

2022-12-01 01:43:25 359 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除