自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【springboot解决跨域问题】

即在我们所有响应头配置允许跨域访问,CORS也已经成为主流的跨域解决方案。如果出现了如下的输出,代表确实有跨域。这种方式和上面的方式类似,也是通过。做反向代理服务器时,也可以在。

2024-08-22 10:12:10 577

原创 【springboot过滤器】

过滤器是Javaweb非常基础的一个概念,属于Servlet的一部分。本文将会使用SpringBoot配置过滤器。在代码实现之前先通过一个简单的小案例解释一下什么是过滤器。过滤器filter的概念:Servlet中提供的技术,可以过滤浏览器发出的请求,并且决定放行请求还是中断请求。浏览器对服务器的请求,会先经过过滤器,再到达服务器服务器对浏览器的响应,也会先经过过滤器,最后再响应给浏览器。

2024-08-22 10:10:14 447

原创 【Mybatis的延时加载】

MyBatis 的延迟加载(懒加载)特性允许在需要使用关联对象数据时才进行加载,而不是在执行主查询时就加载所有相关数据。这种机制可以提高应用程序的性能,特别是当关联数据庞大或关联层次较深时。我们将通过以下几个方面来深入了解MyBatis的延迟加载实现机制。

2024-08-18 19:45:43 788

原创 【redis的热点key】

如果一个 key 的访问次数比较多且明显多于其他 key 的话,那这个 key 就可以看作是hotkey(热 Key)。例如在 Redis 实例的每秒处理请求达到 5000 次,而其中某个 key 的每秒访问量就高达 2000 次,那这个 key 就可以看作是 hotkey。hotkey 出现的原因主要是某个热点数据访问量暴增,如重大的热搜事件、参与秒杀的商品。

2024-08-14 23:51:22 894

原创 【redis的大key问题】

在Redis中,大Key是指占用了较多内存空间的键值对。大Key的定义实际是相对的,通常以Key的大小和Key中成员的数量来综合判定,例如:注意:上述例子中的具体数值仅供参考,在实际业务中,您需要根据Redis的实际业务场景进行综合判断。本文介绍了大Key在Redis中的定义以及可能引发的问题。介绍了快速找出大Key的方法以及对于大Key的优化方案。通过合理的优化方案,可以提升Redis的性能和用户体验。希望本文对您有所帮助。如果有任何错误或建议,请随时指正和提出。

2024-08-13 09:29:47 1262

原创 【redis持久化】

Redis作为一个数据库,数据是以内存为载体存储的,那么一旦Redis服务器进程退出,服务器中的数据也会消失。为了解决这个问题,Redis提供了持久化机制,也就是把内存中的数据保存到磁盘当中,避免数据意外丢失和,一个是快照的方式,一个是类似日志追加的方式。

2024-08-13 09:26:15 903

原创 【RabbitMQ实现延时队列】

很多场景下我们都需要延迟队列。本文以 RabbitMQ 为例来和大家聊一聊延迟队列的用法。两种用法我们分别来看。

2024-08-12 17:03:44 879

原创 【重载和重写】

在Java中,重载(Overloading)和重写(Overriding)是两种允许我们以不同的方式使用相同的方法名的机制,但它们在使用场景、目的和规则上有着本质的区别。

2024-08-12 11:43:06 401

原创 【成员变量和局部变量】

局部变量随着方法的压栈而产生,随着方法的弹栈而消失。成员变量随着对象的创建而产生,随着对象销毁而消失。局部变量没有初始值,不赋值则无法使用。成员变量根据数据类型有不同的初始值。成员变量可以被类中所有成员方法使用。局部变量只能在定义它的方法中使用。成员变量是定义在类中方法外。局部变量是定义在类中方法内。

2024-08-12 11:40:49 312

原创 【SpringBoot常用注解】

个人理解相当于,如果扫描到有@Component、@Controller、@Service等这些注解的类,并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。@SpringBootApplication:申明让spring boot自动给程序进行必要的配置,这个配置等同于:@Configuration ,@EnableAutoConfiguration 和 @ComponentScan 三个配置。@Entity:@Table(name=”“):表明这是一个实体类。

2024-08-08 08:57:49 927

原创 【Springboot的配置文件】

这个配置文件的作用就是,允许我们通过这个配置文件去修改 Spring Boot 自动配置的默认值。和。yml 等同于 yaml,写法看个人喜欢,我喜欢写成配置与代码解耦yaml 代码解读server : port : 4790 # 自定义的配置 demo : author : god23bin description : 点个免费的赞,我能开心好久!上面自定义了两个配置项,分别是和,接着,如何在代码中使用这些配置好的值呢?使用@Value使用。

2024-08-08 08:49:40 1005

原创 【HashMap的遍历方式】

在本文中,我们将通过示例讨论在 Java 上遍历 HashMap 的五种最佳方法。使用 Iterator 遍历 HashMap EntrySet使用 Iterator 遍历 HashMap KeySet使用 For-each 循环迭代 HashMap使用 Lambda 表达式遍历 HashMap使用 Stream API 遍历 HashMap通过了解有关 lambda 表达式的信息。

2024-08-06 13:07:00 361

原创 【MySQL的索引优化】

通过主键索引查询可以看到这里查询数据使用了主键索引。现在我们再创建一个索引。这里为t_category_id与t_name创建了联合索引。这里的查询条件为t_category_id与t_name,所以查询时使用了联合索引index_category_name。

2024-08-06 12:58:13 982

原创 【Rabbitmq的消息模型】

如上模型,如果是循环的分发方式,Consumer-1一次性被分到的消息为1,3,5号消息,Consumer-2一次性被分到的消息为2,4,6号消息。如果开启消息自动确认,那么一旦MQ把消息发送给消费者,那么该消息就会立即标记为删除。例如,有编号1-10的消息在MQ中,同时存在两个消费者,则消费者A分到的消息为1,3,5,7,9,消费者B分到的消息为2,4,6,8,10。的分发消息的方式,消费能力强的消费者就会被分到更多的消息,消费能力弱的消费者就会被分到更少的消息,该方式需要作额外设置。

2024-08-06 12:55:45 1354

原创 【MySQL的查询语句执行流程】

只有更加全面地了解SQL语句执行的每个过程,才能更好的进行SQL的设计和优化。当希望MySQL能够以更高的性能运行查询时,最好的办法就是弄清楚MySQL是如何优化和执行查询的。一旦理解了这一点,很多查询优化工作实际上就是遵循一些原则能够按照预想的合理的方式运行。客户端发送一条查询给服务器。服务器先检查查询缓存,如果命中了缓存,则立刻返回存储在缓存中的结果。否则进入下一阶段。服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划。

2024-08-05 00:50:49 1035

原创 【事务的特性和隔离级别】

隔离性是指当多个用户并发操作数据库时,数据库为每一个用户开启不同的事务,这些事务之间相互不干扰,相互隔离。脏读和不可重复读的区别:脏读:是a事务读到b事务未提交的事务;不可重复读:是a事务对同一条数据读取两次,而两次的读取结果不同,在a事务读取的两次间隙之间,b事务对这条数据进行了修改导致a事务的两次读取的数据不一致(两次读到的数据都是已经提交的数据)。不可重复读和幻读的区别:幻读一般是针对一批数据整体(比如说数据的数量),不可重复读是读取的都是同一条数据。别人改数据的事务尚未提交,我在我的事务中也能读到。

2024-08-03 09:46:52 858

原创 【常见的类加载器】

类加载器(ClassLoader)是Java虚拟机(JVM)提供的一种机制,用于动态加载类和接口的字节码数据到内存中。类加载器是Java虚拟机的重要组成部分,它负责在运行时将类的字节码文件加载到内存中,并创建对应的Class对象,以供JVM解释和执行。加载:类加载器首先会从文件系统、JAR文件或网络加载类的字节码文件,将其转换为可执行的Java类。链接:链接阶段包括验证、准备和解析三个子阶段。验证是为了确保被加载的类文件是安全的,准备是分配内存并初始化为默认值,解析是将符号引用转换为直接引用。

2024-08-03 09:39:44 878

原创 【类加载过程】

类加载过程主要是,加载,链接,初始化。其中链接又分为,验证->准备->解析。

2024-08-03 09:37:27 938

原创 【ArrayList和LinkedList的区别】

ArrayList是Java中的一个动态数组,它实现了List接口。它可以根据需要自动扩展容量,并且支持随机访问元素。LinkedList是Java中的一个双向链表,它也实现了List接口。它通过节点之间的链接来存储元素,每个节点都包含对前一个和后一个节点的引用。ArrayList和LinkedList是Java中两种不同的集合实现方式。ArrayList适用于频繁读取数据、很少插入或删除元素的场景,而LinkedList适用于频繁插入或删除元素的场景。

2024-08-02 09:09:50 835

原创 【HashMap的线程安全问题】

在Java中,HashMap是一种常用的数据结构,它以键值对的形式存储和管理数据。然而,由于HashMap在多线程环境下存在线程安全问题,因此在使用时需要格外小心。简单来说:在的时候,因为采用的是头插法,所以会可能会有循环链表产生,导致数据有问题,在 1.8 版本已修复,改为了尾插法;在任意版本的 hashMap 中,如果在,可能会有数据覆盖的情况发生,导致线程不安全。

2024-08-02 09:06:32 866

原创 【springboot和spring的区别】

刚开始学习Spring Boot的时候当时是一头雾水,随着学习我慢慢知道了二者的区别,我相信对于用了Spring Boot很久的开发人员来说,有绝大部分还不是很理解这两个框架有什么区别,看完本文,或许你有不同的答案!!

2024-07-31 00:33:07 579

原创 【Springboot的热部署】

一般我们的项目都会引各种依赖和配置项,项目的启动往往比较耗时。可能 debug 的过程中发现需要修改的地方,改了之后如果每次都重启服务会耗费大量时间,减少摸鱼时间。热部署就是为了解决每次服务都要重启的问题,提升我们工作效率。常用的热部署方式有3种:1)SpringBoot Configuration方式;3)JRebel。一起来看下怎么用。

2024-07-31 00:26:15 1156

原创 【mybatis的批量操作】

在日常开发中,如果要操作数据库的话,或多或少都会遇到批量数据的处理,今天就简单介绍一下mybaits批量操作数据库的几种方式。

2024-07-29 00:15:33 388

原创 【mybatis的动态sql】

动态SQL是指根据条件拼接SQL语句的功能,可以在SQL语句中添加或者删除某些条件和语句。在实际开发中,我们经常需要根据不同的条件拼接不同的SQL语句。如果只使用静态SQL,会使得代码冗余度高、可读性差、维护成本高等问题。而使用动态SQL可以很好地解决这些问题。MyBatis中提供了很多种方式来实现动态SQL,包括if、choose、when、otherwise、trim、where、set等。

2024-07-29 00:12:28 888

原创 【SpringBoot的启动流程】

总结一下整体的springboot的启动步骤。整个spring框架启动分为两部分,构造SpringBootApplication对象和执行run方法核心注解@SpringBootConfiguration标识启动类为配置类,@EnableAutoConfiguration通过内部@Import注解AutoConfigurationImportSelector.class实现自动装配,@ComponentScan默认扫描当前目录及子目录下的bean。

2024-07-27 09:16:41 1281

原创 【mybatis的多表查询】

经过了 MyBatis 基本增删改查的学习,而在实际的项目中,我们往往会接触到多表的操作,什么是多表呢, 在实际生活中,每个实体之间往往是存在关系的,而我们的项目却是要依赖数据库将这些实体之间的关系串联起来,从而实现我们的业务,所以这部分,我们着重讲解如何使用 MyBatis 框架处理多张数据表之间的联系,帮助我们更加理解数据库的映射关系。

2024-07-27 09:13:40 561

原创 【MyBatis 和 MyBatisPlus 的比较】

MyBatisPlus 是 MyBatis 的升级版,可以直接将 MyBatis 框架替换成 MyBatisPlus 框架代码无需改动即可运行。(当然,想要使用 MyBatisPlus 的新功能就必须改动代码)支持 Lambda 形式调用。三个注解,用来映射数据库表及表字段 与 实体类的关系。主键策略(4 种)分页插件全局拦截插件(智能拦截 delete、update 操作)性能分析插件等等。

2024-07-27 09:11:33 374

原创 【半自动ORM与全自动ORM框架的区别】

ORM对象关系映射,简称ORM,或O/RM,或),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。ORM是面向对象程序设计语言和关系型数据库发展不同步时的解决方案,采用ORM框架后,应用程序不再直接访问底层数据库,而是以面向对象的方式来操作持久化对象,而ORM框架则将这些面向对象的操作转换成底层的 SQL 操作。

2024-07-26 23:55:59 571

原创 【${} 和 #{} 有什么区别】

{}${}是直接替换,而 #{} 是预处理;2、使用场景不同:普通参数使用 #{},如果传递的是 SQL 命令或 SQL 关键字,需要使用${},但在使用前一定要做好安全验证;3、安全性不同:使用${}存在安全问题,而 #{} 则不存在安全问题。

2024-07-25 13:07:58 932

原创 【Mybatis的概述】

上述代码中使用Statement对象执行的查询,如果SQL语句中有参数占位符建议使用PreparedStatement对象来执行查询,PreparedStatement对象可以对SQL语句进行预编译,可以放置SQL注入;在mybatis-config.xml配置文件中增加Mapper XML文件映射配置,在configuration标签下增加mapper标签。MyBatis是一个半自动ORM框架,除了Entity实体类和数据库表的映射关系外,还需要在XML文件中编写SQL语句。

2024-07-25 13:03:31 774

原创 【Java中List排序】

在工作中我们经常需要对集合中的元素进行比较排序,下面就java中常用的排序方法进行详解。

2024-07-22 19:19:31 972

原创 【HashMap 容量大小为什么长度都是2的幂】

HashMap是什么时候 设置容量大小的,容量大小和容量的阀值 是怎么计算的,但是为什么默认的容量是16 而且计算是自己容量的时候,最终计算出来的容量也是2的幂次方,那是为什么呢?

2024-07-22 19:13:19 910

原创 【hashmap和hashtable的区别】

HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。这篇文章中,我们不仅将会看到HashMap和Hashtable的区别,还将看到它们之间的相似之处。

2024-07-21 21:31:01 575

原创 【什么是可重入锁】

当释放了所有的锁,才执行notify()。如果在执行这个方法时,有第二个线程想要执行这个方法,因为lockedBy不等于第二个线程,导致这个线程进入了循环,也就是等待,不断执行wait()方法。第一个线程执行print()方法,得到了锁,使lockedBy等于当前线程,也就是说,执行的这个方法的线程获得了这个锁,执行add()方法时,同样要先获得锁,因不满足while循环的条件,也就是不等待,继续进行,将此时的lockedCount变量,也就是当前获得锁的数量加一。

2024-07-21 21:29:04 380

原创 【ArrayList和LinkedList的区别】

ArrayList是Java中的一个动态数组,它实现了List接口。它可以根据需要自动扩展容量,并且支持随机访问元素。LinkedList是Java中的一个双向链表,它也实现了List接口。它通过节点之间的链接来存储元素,每个节点都包含对前一个和后一个节点的引用。ArrayList和LinkedList是Java中两种不同的集合实现方式。ArrayList适用于频繁读取数据、很少插入或删除元素的场景,而LinkedList适用于频繁插入或删除元素的场景。

2024-07-20 08:49:10 1033

原创 【java集合框架的介绍】

Java集合框架(Java Collections Framework)是一个强大的、高度灵活的数据结构库,它为Java应用程序提供了组织、存储和操作对象集合的标准方法。

2024-07-20 08:44:23 1302

原创 【序列化和反序列化】

序列化和反序列化是Java编程中处理对象持久化和数据传输的重要技术。通过实现接口并使用和,Java类的对象可以轻松地写入到文件或在网络中传输,并可以从中恢复。然而,开发者需要注意序列化的安全性和等细节,以确保应用程序的正确性和安全性。

2024-07-19 23:57:18 446

原创 【自动装箱和拆箱】

基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。这些都是编译器为我们做的事情。自动装箱,将基本类型⽤它们对应的引⽤类型包装起来 例如,把int类型 转换成 Integer类型自动拆箱,将包装类型转换为基本数据类型;例如,把Integer类型转换成int类型。

2024-07-19 23:54:39 317

原创 【static关键字】

java中的static关键字主要用于内存管理。

2024-07-19 23:51:36 677

原创 【接口和抽象类的区别】

接口使用关键字 interface 来定义。抽象类使用关键字 abstract 来定义。定义的关键字不同。子类继承或实现关键字不同。类型扩展不同:抽象类是单继承,而接口是多继承。方法访问控制符:抽象类无限制,只是抽象类中的抽象方法不能被 private 修饰;而接口有限制,接口默认的是 public 控制符。属性方法控制符:抽象类无限制,而接口有限制,接口默认的是 public 控制符。方法实现不同:抽象类中的普通方法必须有实现,抽象方法必须没有实现;

2024-07-18 09:56:37 1143

空空如也

空空如也

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

TA关注的人

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