自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【精选】30+Redis面试题整理(2024)附答案

自用redis面试圣经,记录了个人面试中经常问到的面试题、收集了网络热门面试题。

2024-03-12 07:00:00 2453

原创 【三分钟学会Redis 客户端常用命令】redis数据库、对象、字符串、列表、集合、哈希、过期设置等

三分钟看完redis的全部常用命令。建议收藏保存用作以便实战使用时快速上手。

2024-03-11 16:55:10 369

原创 Spring:看完源码,还是搞不懂这三货是啥关系?一篇了解Bean、BeanFactory、ApplicationContext

Bean、BeanFactory和ApplicationContext到底啥关系?简单来说,Bean由IoC容器管理;ApplicationContext则是BeanFactory的扩展,两者都可以代表Spring的IoC容器。

2024-02-19 10:24:54 1071

原创 【小白的Spring源码手册】 BeanFactoryPostProcessor的注册和用法(BFPP)

BeanFactoryPostProcessor 简称BFPP,用于管理BeanDefinition,甚至是管理整个IoC容器,常见业务实现有**指定限定符@Qualifier、占位符替换@Value、配置类注册定义@Configuration等等;

2023-11-15 15:56:27 251

原创 【小白的Spring源码手册】 Bean的扫描、装配和注册,面试学习可用

了解Spring框架的IoC容器内容,了解@Component、Scope、Lazy、Primary、DependsOn等注解被如何使用。学习Bean的扫描、装配到完成注册的整个流程。

2023-10-31 16:46:16 384 1

原创 【Java8】java.time 根据日期获取年初年末、月初月末、日初日末

记录日常开发中Java 8时间API的常用的日期转换代码。:下文中,都以LocalDateTime为例,在不声明的情况下如下方法一般都适用于Java8中LocalDate、LocalDateTime、OffsetDateTime、ZonedDateTime等时间类,不适用某些类时会在文中有提醒。

2023-10-16 15:02:45 1679

原创 java list列表按指定规则进行排序 自定义排序规则

在Java、MySQL中自定义权重生成规则来确定排序,大部分语言的排序都是根据权重大小进行排序的。在正序排序中,值越少权重越大,即小于0的会排在前面。要实现自定义规则的话,那么我们只需修改权重值的生成规则即可。

2023-08-28 07:00:00 850

原创 Netty理论与实践(二) 创建http客户端 服务端

服务端客户端的功能较为简单,很多服务器功能并未实现,如地址、参数、请求方法的解析,请求头、cookie等验证,消息体接收、分块消息处理,DNS解析,HTTPS消息的处理,文件流上传以及接收,HTTP消息压缩解压处理,跨域问题等等。上面的原理很容易理解,postman通过tcp建立与服务器localhost:8001的连接,然后自己组装了HTTP request消息,然后发送给echo服务器,echo服务器拿到完整的内容后将其打印在控制台,随后返回一条文本数据。1. 使用echo服务器模拟http。

2023-07-21 10:48:03 436

原创 Netty理论与实践(一) netty入门之创建echo服务器

介绍基础的理论知识:网络协议TCP/UDP、netty简介和依赖、netty核心类介绍然后进入开发实战,对服务端和客户端的开发流程和实现做了详细描写

2023-07-10 08:00:00 472

原创 java.time包使用指南

java.time包为处理日期、时间和时区提供了一个强大的解决方案。在这篇文章中,我们将探索它的关键类和它们的功能。如Instant、LocalDateTime、ZoneId、ZoneOffset、Date、OffsetDateTime、ZonedDateTime、Duration等等。通过了解这些类,你可以轻松的操作和计算日期和时间的能力,处理时区问题,并执行各种基于时间的操作。如实例化、转换和操作不同的时间对象,如何计算持续时间,调整时区,解析和格式化日期时间字符串,以及处理夏令时的转换。

2023-05-30 13:41:34 1287

原创 Java8 掌握Date与Java.time转换的核心思路,轻松解决各种时间转换问题

本文提供了时间类的转换,包括Date转LocalDateTime、Instant,LocalDateTime、Instant转Date,Date转java8其它时间类,Java8其它时间类转Date,Java8时间类——Instant、LocalDateTime、OffsetDateTime、ZonedDateTime互转等。

2023-05-01 09:00:00 1800

原创 三年创作,两年偷懒,一年划水

我发现写作是一种表达自己和与世界沟通的方式。在我的创作纪念日上,我想向所有的写作者和创作者致以敬意,同时也对刚开始创作的新人说一句:不要放弃你的创作梦想和努力。离我写第一篇文章开始,不知不觉已经三年了,回顾写作分享之路,可谓是坎坷崎岖,当然也正因为这一路的磨难让我收获不菲。

2023-04-21 10:15:21 582 1

原创 解决多项目中的报错:BindingException:Invalid bound statement (not found)

new PathMatchingResourcePatternResolver().getResources(mapperLocations)这个类扫描xml资源的时候,一条资源也没返回。这下找到原因了,最后点进源码查看,才发现这一个版本资源扫描根本就没有处理多资源的情况!在只引入了一个xml目录时,程序运行正常,各个Mapper方法也可以正常调用,后续其它开发同志引入了其他包中的xml目录,导致调用Mapper的所有方法都报错,最后没找到原因也没解决,然后交给了我解决。手动加载多个xml资源。

2023-03-31 16:55:14 616

原创 解决报错InvalidDefinitionException Java 8 date/time type LocalDateTime not supported by default jsr310

解决Spring boot2.5中出现的Caused by: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Java 8 date/time type `java.time.LocalDateTime` not supported by default: add Module "com.fasterxml.jackson.datatype:jackson-datatype-jsr310" to enable handling问题

2023-03-21 16:24:58 9174 3

原创 MySQL REGEXP 利用正则表达式,在查询中过滤多个字符串

使用MySQL REGEXP正则表达式过滤包含多个字符串的列。解决低版本的MySQL一些正则表达式都不起作用,会报错的问题:1139 - Got error ‘repetition-operator operand invalid’ from regexp

2023-03-17 10:06:10 1532

原创 【JVM基础内容速查表】JVM基础知识 默认参数 GC命令 工具使用 JVM参数设置、说明、使用方法、注意事项等(持续更新)

一、JVM前置知识1. -X、-XX含义2. JVM参数值的类型和设置方式3. 查看GC时用到的命令和JVM参数4. 查看JVM默认参数二、垃圾收集器选择-XX:+UseSerialGC-XX:+UseParallelGC-XX:+UseParallelOldGC-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:+UseG1GC

2023-02-15 11:14:17 1081

原创 Java 8 Optional在实际业务场景中的运用

如果Optional仅支持非空校验,那么使用场景其实有限的,索性Optional还支持非空校验外的其它校验来过滤数据。因此本文将不会对Optional的各个方法进行详细的阐述,只会说明Optional在实际场景中如何使用,并提及一些Optional方法的注意事项。本文描述了Optional在实际业务场景中的用法,并且涉及到了Optional的各个方法:ofNullable、filter、ifPresent、map、orElse、orElseGet等。

2023-02-08 18:26:24 1076 1

原创 HotSpot VM垃圾收集器——Serial Parallel CMS G1垃圾收集器的JVM参数、使用说明、GC分析

JVM参数设置——选择垃圾收集器的组合查看GC时用到的命令和JVM参数查看本机默认JVM信息-XX:+UseSerialGC-XX:+UseParallelGC-XX:+UseParallelOldGC-XX:+UseParNewGC-XX:+UseConcMarkSweepGC-XX:+UseG1GC

2022-11-30 14:32:13 697 2

原创 【JVM学习笔记】内存回收与内存回收算法 就哪些地方需要回收、什么时候回收、如何回收三个问题进行分析和说明

一、相关名词解释垃圾收集常用名词二、哪些地方需要回收本地方法栈、虚拟机栈、程序计数器方法区Java堆三、什么时候回收内存能否被回收内存中的引用类型引用计数算法可达性分析算法内存何时被回收(Hotspot)四、如何回收垃圾回收理论Generational Collection——分代收集理论JVM堆中的分代垃圾回收算法垃圾回收算法的类型标记-清除算法 Mark-Sweep标记-复制算法 Mark-Copying标记-整理算法 Mark-Compact标记-整理算法 M

2022-11-21 09:16:15 1416

原创 【JVM学习笔记】JVM内存区域定义与内存结构

JVM(Java Virtual Machine,JavaVM,Java虚拟机),定义了不同的运行时数据区域(run-time data area),一部分区域随JVM启动而创建,随JVM消亡而销毁。其它区域则属于每个线程,随线程启动而创建,随线程关闭而销毁。

2022-11-17 18:04:01 624

原创 【JVM学习笔记】对象的创建过程、 对象的内存布局、 如何定位和使用对象

如果Java堆中的内存并不是规整的,已被使用的内存和空闲的内存相互交错在一起,那就没有办法简单地进行指针碰撞了,虚拟机就必须维护一个列表,记录上哪些内存块是可用的,在分配的时候从列表中找到一块足够大的空间划分给对象实例,并更新列表上的记录,这种分配方式称为“对于JVM来说,对象已经被初始化完毕了,但是对于Java程序来说,对象的创建从构造函数才真正开始,当Class文件中的()方法还没有执行,所有的字段都为默认的零值,对象需要的其他资源和状态信息也还没有按照预定的意图构造好。

2022-11-08 15:59:35 541

原创 【Java8 Stream】:探秘Stream实现的核心:Collector,模拟Stream的实现

等源码的解析,模仿Stream的思路自己写了一个使用Collector的流程,方便理解。本篇还处于待完善阶段,目前仅仅是使用了自己的方法来实现Stream对流的处理。1 执行入口,根据特征判断是否使用多线程,并对每个线程的结果进行合并,最后将合并的结果转为最终返回值。Collector的实现类很简单,它将用于存储用户输出的各项函数。模拟Stream,使用Collector实现一个简单的年龄计算。模拟Stream,使用Collector实现一个简单的年龄计算。一个简单的Collector实现类。

2022-11-02 10:03:40 507

原创 Stream Collectors.groupingBy的四种用法 解决分组统计(计数、求和、平均数等)、范围统计、分组合并、分组结果自定义映射等问题

基于Java8介绍Java stream Collectors.groupingBy 功能 使用 方法,对java Collectors.groupingBy()的可用方法进行一一举例介绍,如stream分组 stream分组计数 stream分组求和 stream分组聚合等,基于stream collect() 和 收集器 Collectors

2022-10-28 16:30:34 53396 10

原创 【Mybatis实例】实现动态表头数据 (动态行专列)、对动态表头字段排序

mybatis实现 整体表格的动态获取实现动态表头数据的获取动态行专列动态表头字段的排序

2022-10-24 17:18:40 1896

原创 分析通过jmap等命令获取的JVM heap dump文件中,Class name列 [Z [B [C [L [D [F [I [J [S字符的含义

heap dump文件解析[Z [B [C [L [D [F [I [J [S等字符的含义Class.getName()方法的返回内容基本类型如何获取到Class类型信息

2022-10-09 17:26:20 4026

原创 【高频面试】Java String 面试题总结 欢迎指正和补充

String相关问题总结1. String 是否可以被修改2. String的值不可以被修改,为什么又可以被重新赋值呢,这是否有所矛盾?3. 直接赋值和new的区别4. String中equals()和==的区别

2022-10-07 13:49:21 1347

原创 一文了解Spring boot + open api 3.0 + knife4j的集成实例,提供开发时常用的API配置

spring boot 集成 open api 3.0,其基于swagger 2开发,且由官方维护。通过knife4j增强其功能,在方便前后端接口调用的同时,也能快速生成离线文档。

2022-09-20 17:53:25 8333 1

原创 解决Request header field XXX is not allowed by access-control-allow-headers in preflight response

Access to XMLHttpRequest at 'http://B.com/path/a' from origin 'http://A.com' has been blocked by CORS policy: Request header field且老接口服务时,要求header里必须要有AC-User-Agent字段。新建一个过滤器,在过滤器中设置允许AC-User-Agent为合法请求头。网站主域名是A.com,老接口服务的域名是B.com。在这种情况下,前端调用B.com出现了上述问题。

2022-08-24 11:59:27 9602 2

原创 win10搭建redis主从环境:cmd启动多个Redis服务端,设置Redis服务器之间的主从关系

打开服务器后,保持cmd窗口的打开,一旦关闭那么该服务器也将停止。如果启动时出现以下问题,可能是因为端口号被其它redis服务占用,修改当前conf的端口配置主从关系设置后,出从服务器输出了如下日志:步骤如下:此时,从服务器启动时,将会自动连接主服务器,并接受主服务器全量同步数据主服务器独立运行,有所有CRUD操作,并且会将变动同步给从服务器从服务器只读设置值时,会抛出如下异常主服务器连接,从服务器断开时主服务器,不再同步数据给此从服务器,其它均不受影响从服务器连接,主服务器断

2022-07-07 14:33:37 846 2

原创 mysql 通过变量自增 批量更新排序序

最近需要给字典表插入数据,需要设置每一条数据的序号,为了提高效率,想到使用MySQL的变量来进行赋值序号递增设置:

2022-07-07 10:30:43 1671

原创 【Spring Boot集成Redis】基础配置 使用Redis Repository简化RedisTemplate操作

spring boot 集成redis 使用Redis Repositories简化RedisTemplate简化操作Redis Repositories 可以让我们在Redis哈希类型中转换和存储Java实体,支持自定义映射策略和二级索引。

2022-07-06 14:16:51 975

原创 Redis基础知识 底层数据结构的实现 redis中的对象概念

SDS、空间预分配、惰性空间释放、二进制安全链表、字典、跳跃表、压缩列表、redis对象int embstr raw、ziplist linkedlist、ziplist hashtable、intset hashtable、ziplist skiplist&hashtable对象内存回收、对象共享、对象的空转时长...

2022-06-30 21:37:06 319 2

原创 Redis键值类型<key value> 以及键的使用注意事项

Binary-safe strings:二进制安全字符串。Lists:根据插入顺序排序的字符串元素的集合。它们基本上是链表。Sets:唯一,未排序的字符串元素的集合。Sorted sets:类似于集合,但是每个字符串元素在存入时都将于一个浮点数值的分数相关联,元素总是按照它们的分数排序,因此与Sets不同,可以检索一系列元素Hashes:键值组成的哈希映射,键值都是字符串。Bit arrays (or simply bitmaps):可以使用特殊命令像位数组一样处理字符串值:可以设置和清.....

2022-06-30 21:30:43 1702 1

原创 解决引入Mybatis-plus 调用方法selectById、selectList时 报错问题BindingException:Invalid bound statement (not found)

解决引入mybatis plus 产生的org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)问题

2022-04-26 16:07:25 14002 1

原创 超详细的Java8 Stream使用方法:筛选、排序、最大值、最小值、计数求和平均数、分组、合并、映射、去重等

Stream流式操作的常用使用方法关于函数编程的原理可以参考:Java 8函数式编程#Lambda表达式#方法引用超详细的Java8 Stream使用方法:筛选、排序、最大值、最小值、计数求和平均数、分组、合并、映射等涉及Stream中的如下方法:stream()、filter、peek、map、collect、Collectors.toList()、skip、limit、sorted、max、min、distinct、reduce、sum、average、Collectors.groupingBy

2022-04-11 11:08:58 19547 3

原创 mybatis的Cache源码 终于让我搞懂了装饰器模式Decorator

本文有装饰器定义、使用方法、在mybatis中的实际应用1. 装饰器定义和结构图2. Cache装饰器在二级缓存中的形式3. 缓存中使用装饰器的实际用例

2022-02-15 15:38:14 464

原创 【@Transactional注解】彻底搞懂propagation传播机制

在Spring事务中,各个逻辑事务的关系可以是并列、覆盖或包含。理清这些关系,对于@Transactional注解的使用将大有脾益

2022-02-14 15:39:31 2269

原创 【Mybatis源码解析】深入了解<select>等标签的实现流程(一)

在mybatis源码中,执行xml<select><update><insert><delete>语句的执行流程从总体上看,大约有两个步骤:1. 创建MappedStatement2. 创建会话(SqlSession)并执行SQL。Mybatis中有两种方法生成MappedStatement:1. 注解方式(MapperAnnotationBuilder)2. xml方式(XMLMapperBuilder)

2022-02-09 10:25:02 2107 2

原创 Java 捕获并处理线程异常:Thread线程异常捕获、ThreadPoolExecutor线程池异常捕获

Thread.UncaughtExceptionHandler捕获线程异常ThreadPoolExecutor#afterExecute方法捕获线程池异常以及两者实现的原理

2022-01-13 13:10:19 3448

原创 通过Docsify快速搭建Github博客

通过Docsify快速搭建Github博客搭建Github个人博客

2022-01-11 17:09:45 589

空空如也

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

TA关注的人

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