自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 用动态规划轻松解决问题:从日常生活到编程

动态规划是一种非常高效的算法设计方法,适用于分阶段解决问题。其核心思想是将问题分解为相互重叠的子问题,存储子问题的结果,避免重复计算,从而降低时间复杂度。

2024-07-22 17:34:23 337

原创 深入分析MapStruct源码:为什么只需写抽象接口就能自动生成代码

在Java开发中,数据对象之间的转换是一个非常常见的需求。手动进行这些转换不仅冗长且容易出错,因此,引入自动化转换工具显得尤为必要。MapStruct 就是这样一个高效、强大的类型转换工具,它通过注解和接口自动生成转换代码。本文将深入探讨MapStruct为什么只需定义一个抽象接口,就能自动生成实现代码的奥秘。MapStruct 是一款Java的代码生成器,旨在通过注解方式自动生成Java Bean之间的转换代码。

2024-07-19 14:19:53 1160

原创 解决前端和后端时间不一致问题的实践指南

造成前端和后端时间不一致的常见原因是时区差异。在后端代码中生成的时间可能是以系统默认时区(如 UTC)为基础的,而前端可能在不同的时区环境下解释该时间。因此,在时间传递过程中,必须确保时区信息的一致性和正确处理。当你在spring:jackson:将日期格式统一设置为。将默认时区设置为GMT+8(中国标准时间,即 CST)。通过在文件中配置 Jackson 的日期格式和时区,你可以确保在序列化和反序列化过程中使用一致的时间格式和时区。

2024-07-19 13:55:44 844

原创 探索热部署与热加载:全面提升开发与运维效率的最佳实践

热部署(Hot Deployment)指的是在服务器运行时,重新部署应用,而无需停止服务器容器的操作。这种方式会释放原应用占用的内存,适用于生产环境。热部署可以实现整个应用的重新加载,确保应用在不停机状态下完成升级或变更。无需重启服务器,节约时间。避免服务中断,适用于高可用性要求的生产环境。实现较为复杂。不适用于所有类型的变更(特别是涉及底层依赖的变更)。热加载(Hot Reloading)在应用运行时重新加载类文件,主要依赖于 Java 的类加载机制。

2024-07-18 14:29:20 339

原创 解决ElasticJob项目重启ZooKeeper注册冲突以及zkCli删除目录

问题原因定时任务使用了代理,默认情况下会读取代理类名称,而不是原始类名称,导致任务名冲突。解决思路自定义一个,在项目重启时,确保读取到的是原始类名称,而不是代理类名称。实现自定义@Override在这里,我们使用方法获取原始类名,这样就避免了代理类引起的冲突问题。

2024-07-18 13:57:33 746

原创 避开精度导致的误判:正确使用Java BigDecimal比较的方法

在Java中使用BigDecimal进行数值比较时,一定要注意其equals方法的行为,它不仅考虑数值,还包括精度。为了避免因精度问题导致的BigDecimal比较不相等,建议使用compareTo方法进行数值比较。希望这篇博客能帮助大家更好地理解和处理BigDecimal的精度问题,若有任何问题欢迎在评论区交流讨论!希望这篇文章能够帮助你更好地处理BigDecimal的精度问题。

2024-07-17 10:54:22 553

原创 Zookeeper是什么,为什么要用,怎么用?

Zookeeper是一个开源的分布式协调服务,它提供了一种简单的、高性能的、高可用的协调机制。Zookeeper可以用来做配置管理、命名服务、分布式锁和集群管理等。它最初由雅虎开发,现在是Apache Software Foundation的顶级项目之一。通过创建临时顺序节点来实现分布式锁的竞争,节点序列最小的获得锁,其余的监听比自己小的节点,释放锁时将节点删除,通知下一个节点进行竞争。Zookeeper作为分布式协调服务,广泛应用于各种分布式系统中。

2024-07-16 09:48:00 1089

原创 CollectionUtils.isEmpty你真的会用吗?CollectionUtils.isEmpty可能存在的坑

前言:最近在复盘时,发现之前在开发中遇到的一些小问题:我们先来看看这段代码:如果这里的ids为[null,null,null]这段代码可以走下去吗?可能有同学会说:当然啦,这不相当于ids就是null恭喜你,这边文章又帮你扫了一个知识点我们来看看CollectionUtiles.isEmpty()的源码:我们可以看出,如果ids为[null,null,null],实际上这里返回的是false验证一下:可以看到,我在这个needSynEmployTOS中添加了很多空对象,并把他的id收集为

2024-07-15 13:59:13 106

原创 记录-Spring Boot注入静态属性的坑

【代码】记录-Spring Boot注入静态属性的坑。

2024-07-12 17:56:04 245

原创 记录-left join 左外连接可能出现的坑

原因:条件在 LEFT JOIN 的 ON 子句中而不是 WHERE 子句中。修正:迁移条件到 WHERE 子句。

2024-07-10 16:34:47 157

原创 圣诞树源码及效果图

创建一个文本文件,后缀为.html,用浏览器打开即可.圣诞节快到了,赶快为你重要的人用代码画一个漂亮的圣诞树吧!

2023-12-07 11:13:38 723

原创 圣诞树源码

等一下哈 马上来啦...</div>';'<div class="text-loading">等一下哈 马上来啦...或者</li><li class="title">请选择音乐

2023-12-07 01:16:25 442 1

原创 线程池如何知道一个线程已经执行完毕【超详细版】

不管是线程池内部还是外部,要想知道线程是否执行结束,我们必须要获取线程执行结束后的状态,而线程本身没有返回值,所以 只能通过阻塞-唤醒的方式来实现参考文章:https://www.51cto.com/article/720389.html。

2023-08-10 18:33:50 3638 1

原创 为什么阿里巴巴Java开发手册中强制要求线程池不允许使用Executors创建?

【代码】为什么阿里巴巴Java开发手册中强制要求线程池不允许使用Executors创建?

2023-08-06 11:58:43 476 1

原创 Java中常见五种线程池及其使用线程池弊端

根据不同的需求,可以选择不同的线程池来优化并发编程的效率。FixedThreadPool和CachedThreadPool适合不同长度的任务,ScheduledThreadPool适合定时或延迟执行任务,SingleThreadExecutor适合需要执行的任务,WorkStealingPool适合任务之间需要相互协作的任务。

2023-08-05 17:45:38 528 1

原创 JAVA中几种垃圾回收器及其特点

前言:在java中垃圾回收机制发挥着极其重要的作用,能够实现无用对象内存自动释放、减少内存碎片、加快分配速度,本文将介绍几种常用的垃圾回收器以及其特点特点:1.当eden(伊甸园区)内存不足时,发生Minor GC,采用标记复制(因为新生代区的存活对象较少,使用标记复制法的效率高),STW(stop the world),在进行gc时暂时停止用户线程.2.old 内存不足发生Full GC,标记整理STW发生Full GC ,新生代和老年代会根据分代回收算法,同时进行垃圾回收,新生代通过标记复制法来

2023-06-10 13:35:45 2221

原创 GC和分代回收算法

前言:本文详细讲述了使用GC的目的以及执行一次垃圾回收完整的垃圾回收过程如何进行,以及可达性分析算法,三色标记法,以及GC为什么采用分代回收思想重点掌握:1.GC的目的:实现无用对象内存自动释放、减少内存碎片、加快分配速度2.判断无用对象,使用可达性分析算法,三色标记法标记存活对象,回收未标记对象3.GC具体的实现称为:垃圾回收器4.GC大都采用了分代回收思想,理论依据为大部分对象朝生夕灭,用完立刻就可以回收,另有少部分对象会长时间存活,每次很难回收,根据这两类对象的特性将回收区域分为新生代和老年代

2023-06-10 12:05:07 319

原创 JVM三种垃圾回收算法

总结:标记复制法经常用于新生代的垃圾回收,因为新生代有一个假设,存活的对象都比较少,那么复制的对象就比较少,不适用于老年代的垃圾回收,老年代的垃圾回收存活对象比较多,垃圾对象比较少,如果存活的对象比较多,复制对象的工作量就比较多,就不适用了,故老年代适用于标记整理的算法。

2023-06-09 16:14:19 342

原创 单例模式_DCL懒汉式,使用双重检查锁的方式解决synchronized的性能问题,以及volatile的作用

【代码】单例模式_DCL懒汉式,使用双重检查锁的方式解决synchronized的性能问题,以及volatile的作用。

2023-05-24 11:42:54 381

原创 HashMap1.7和1.8中多线程下的问题

前言:今日在做总结HashMap1.7和1.8对比时,在多线程下会呈现不同的问题,总结如下我们都知道HashMap并不是线程安全的

2023-05-17 15:32:52 391

原创 选择排序及选择排序与冒泡排序的比较

【代码】选择排序及选择排序与冒泡排序的比较。

2023-05-16 11:46:57 148

原创 java冒泡排序及优化

说明了冒泡排序的实现及其优化

2023-05-16 10:19:40 440 1

原创 关于spring boot项目可以正常启动但是存在导包爆红问题

关于spring boot 项目 再重启后 导包异常 的问题解决

2023-05-13 11:11:29 664

原创 Spring Cache

这里主要讲述了Spring Cache整合rides的使用方法以及 spring boot项目中自带的缓存

2023-05-12 21:22:28 304

原创 在Java中操作Redis

本篇主要写了 如何在Java中去操作Redis的集中方法

2023-05-10 22:05:48 483

原创 Redis 5种常用数据类型

这里整理了Redis的五种常用数据类型

2023-05-10 21:37:17 107

原创 Nginx-快速学习

前言:不仅在开发时项目要前后端分离,在部署时,项目前后端也要分开部署通常Nginx可以作为静态web服务器来部署静态资源,今天就来复习一下nginx的下载安装和相关使用

2023-05-09 23:23:07 229

原创 Redis基础01 --简述、安装、启动关闭及远程连接

Redis是一个基于内存的key-value结构数据库Redis读写效率为什么比mysql高:因为Redis是将数据存储在内存中,mysql是将数据存储在磁盘中.Redis适合存储热点数据:例如秒杀,抢购等在一定时间内有大量用户来读取数据.Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供的数据是可以达到100000+的QPS (每秒查询次数)。它存储的value类型比较丰富,也被称为结构化的NoSql数据库。

2023-05-09 23:09:33 324 1

原创 Linux从入门到入土01

linux详细说明,第一部分

2023-05-08 22:51:19 297 1

原创 Git2 - 在IDEA中使用Git

本文详细的写出了如何在IDEA中使用git相关操作,

2023-05-07 22:59:49 1349

原创 Git --> 清晰版

对git基本操作和命令已经giee得使用做了详细的说明,并将容易猜的坑作了说明

2023-05-07 22:50:09 338 1

空空如也

空空如也

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

TA关注的人

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