- 博客(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
原创 记录-left join 左外连接可能出现的坑
原因:条件在 LEFT JOIN 的 ON 子句中而不是 WHERE 子句中。修正:迁移条件到 WHERE 子句。
2024-07-10 16:34:47
157
原创 圣诞树源码
等一下哈 马上来啦...</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
原创 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
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人