自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 以游戏的方式,一分钟教你学会滑动窗口算法思路~

新解读滑动窗口(全程游戏化教学,配有动画示意和对比表格)持续该过程直到货架尽头,找到最长窗口为3(B,A,C)(比如查生产日期),目标是用最少的移动步数完成检查

2025-02-11 10:36:27 255

原创 Java中的设计模式全解及电商应用场景示例

意图:提供一个创建一系列相关或相互依赖对象的接口。电商场景:根据用户地区生成不同风格的UI组件。以上补充了外观模式组合模式享元模式桥接模式和装饰器模式的详细内容及电商示例代码。结构型模式主要用于处理类和对象的组合关系,通过这些模式,开发者可以设计出更灵活、高效且易维护的代码结构。结合实际业务场景,能够更直观地理解这些模式的意义及作用。通过本文,我们详细讲解了Java中的23种设计模式,并结合电商场景给出了对应的示例代码。

2024-12-16 15:53:22 1109

原创 微信获取签名接口开发指南

微信的签名机制广泛应用于微信公众平台、微信小程序等场景中,用于确保接口调用的安全性和数据的完整性。本文将详细介绍如何使用Java实现微信API的签名生成过程,包括获取和,并生成请求签名。

2024-11-26 11:09:28 510

原创 Redis分布式锁的原理与Redisson实现

本文将详细讲述Redis分布式锁的原理,并介绍如何使用Redisson实现Redis分布式锁。而Redisson作为一个成熟的Redis客户端,提供了易于使用的API和丰富的功能,帮助开发者快速实现分布式锁。在实际应用中,开发者需要根据具体的业务需求和系统架构选择合适的锁实现方案,并注意锁的获取、释放和续约机制,以确保系统的稳定性和性能。2.在给一段业务代码使用分布式锁之后,最后一定要记得释放锁,避免后续业务代码无法进入,导致某个线程一直无法获取锁。

2024-11-21 15:20:05 900

原创 解密Java RPC:从基础到实现,掌握分布式通信的核心技术(附demo)

本文详细介绍了RPC的基本概念及其核心技术点,列举了目前主流的RPC框架,并通过实现一个简单的Java示例展示了RPC的基本工作流程。RPC作为分布式系统中的重要技术,极大地简化了跨网络调用的复杂性,使得开发者可以专注于业务逻辑的实现。

2024-11-20 14:59:01 1056

原创 了解二八定律,提高工作效率、生活质量

28定律,又称帕累托法则(Pareto Principle),是由意大利经济学家维尔弗雷多·帕累托提出的。他发现,在许多领域中,80%的效果往往来自于20%的原因。简单来说,这个定律告诉我们:在任何一组事物中,关键的少数(20%)往往比其他次要的多数(80%)更为重要。

2024-09-20 15:18:09 1683

原创 使用Redis记录错误次数、序列号锁定和冻结时间的实现步骤示例[超详细]

在本文中,我们将详细介绍如何使用Redis来记录错误次数、序列号锁定和冻结时间。通过Spring Boot和Spring Data Redis,我们能够轻松实现这些功能。

2024-08-16 18:01:13 593 1

原创 # 服务治理中间件详解:Spring Cloud与Dubbo

Spring Cloud和Dubbo在服务治理中间件领域各具优势,开发者可以根据实际需求选择合适的框架。Spring Cloud提供了一整套微服务架构的解决方案,适合构建复杂的分布式系统;而Dubbo则以其高性能和灵活性,适用于对性能要求较高的应用场景。无论选择哪种框架,都需要结合实际业务需求进行优化和调整,确保系统的高效运行和稳定性。希望本文的介绍能帮助读者更好地理解和应用Spring Cloud和Dubbo,从而提升微服务架构的治理能力。常见问题。

2024-08-08 15:46:10 1165

原创 数据库中间件 MySQL Proxy 深度解析与实战

MySQL Proxy 是一个中间件工具,位于 MySQL 客户端和 MySQL 服务器之间。它可以截获、分析和修改客户端与服务器之间的 SQL 语句,从而实现负载均衡、读写分离、查询缓存等功能。

2024-08-07 17:15:13 1292

原创 RabbitMQ 消息队列中间件详解

RabbitMQ是一个开源的消息队列中间件,实现了高级消息队列协议(AMQP)。它主要用于异步通信、任务调度和负载均衡等场景,广泛应用于分布式系统中。RabbitMQ由Erlang编写,具有高并发、高可用和高可靠性的特点。RabbitMQ作为一款强大的消息队列中间件,广泛应用于各种分布式系统中。本文详细介绍了RabbitMQ的基本概念、安装配置方法以及在Java环境下的使用示例。希望有疑问和补充欢迎大家在评论区探讨。

2024-08-06 15:44:50 1448

原创 Java常用中间件(后续更新)

中间件是一种软件层,位于操作系统和应用程序之间,负责管理数据和应用程序的交互。在分布式系统中,中间件能够让不同的应用或服务相互通信,协调各种服务,从而实现高效的数据处理和服务调用。在Java开发中,合理选择和使用中间件可以极大地提高系统的性能、扩展性和可维护性。无论是消息队列、数据库管理、服务治理还是缓存技术,都在现代分布式系统中发挥着重要作用。本文先总结一些当前常用的中间件技术,后续会进行详解,想追更的朋友们可以先点个关注哦。

2024-08-06 15:30:24 5347

原创 docker详细笔记

Docker是一个开源的容器化平台,旨在使应用程序在任何环境中都可以简单和一致地运行。通过使用操作系统层的虚拟化,Docker可以将软件包及其依赖项封装成一个标准化的单元(即容器)。通过本文的学习,我们详细介绍了Docker的基础知识、环境安装、基本命令、以及进阶操作。希望这些内容能帮助你更好地理解和使用Docker,提高开发和部署效率。Docker作为一个强大的工具,在现代软件开发中扮演着越来越重要的角色,掌握它将极大提升你的技术能力。

2024-08-03 14:54:21 1660 2

原创 mysql8.0规范

在开发中,虽然性能大多决定于架构设计,但是合理的使用sql语句,是开发人员的必修课,今天基于mysql官方文档,给大家整理一些mysql的规定。约束度:【强制】规范描述同一项目(产品)中存储相同数据的列类型必须一致,列名必须一致。同业务字段在不同项目数据表需要使用同一字段名。使用 DTS 同步的数据表和原表保持一致的字段定义,表名可根据业务不同。同一个业务线采用统一字符集,避免隐式转换。控制单库表个数,单库表个数不超过 4096 个。

2024-08-02 17:20:25 1131

原创 MQTT协议详解及Java简易实现指南

MQTT(Message Queuing Telemetry Transport)是一种基于发布/订阅模式的消息传输协议,在物联网领域广泛应用。它具有轻量、开放、简单、易实现等特点,非常适合资源受限和网络条件较差的环境。本文将从概念、特性、版本、使用几个方面进行详细讲解,最后通过一个Java简单示例来展示如何实现MQTT通信。

2024-08-01 17:02:18 2514

原创 sql查询优化小知识-01,非等值条件查询影响

为了优化查询性能,尽量使用等值条件进行筛选。如果业务逻辑确实需要使用非等值条件,可以考虑使用复合索引来提高性能。此外,也可以借助数据库的查询计划(使用EXPLAIN关键字)来了解具体的索引使用情况,并据此做进一步优化。

2024-07-30 16:17:45 641

原创 TWR写法简化finally块中显示关闭资源

try-with-resources (TWR) 是 Java 7 引入的一种特性,用于简化资源管理。资源指的是那些必须在使用后关闭的对象,例如文件、数据库连接、网络连接等,通常它们实现了。

2024-07-30 15:36:37 362

原创 面向对象编程的精髓你真的掌握了吗?

面向对象编程(Object-Oriented Programming, OOP)是一种基于“对象”概念的编程范式。对象是数据与操作该数据的方法的封装,通过对象的相互交互来实现系统的功能。

2024-07-29 16:03:26 321

原创 aop-原理、使用简介

AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在增加程序模块的横切关注点。横切关注点是指那些影响多个模块的功能,例如日志记录、事务管理、权限控制等。切面是AOP中的一种抽象,它将横切关注点封装到了一个模块中。@Aspect@Component// 切入点和通知将在后面定义通知是实际插入到程序中的代码。前置通知(Before)后置通知(After)返回通知(AfterReturning)异常通知(AfterThrowing)

2024-07-26 15:12:47 803

原创 反射与动态代理初谈

在 Java 编程中,我们常常会遇到需要通过面向对象特性动态创建实例、调用方法或获取字段的场景。Java 提供了强大的反射机制和动态代理,实现了运行时对类、方法、属性的操作。本文将详细介绍反射与动态代理的基本概念、实现原理、以及使用场景,并通过丰富的例子帮助读者更好地理解和应用这些强大的编程工具。反射(Reflection)是一种可以在程序运行时动态获取类的结构及其成员信息,并对其成员进行操作的机制。通过反射,程序能够在运行时检查和调用类的方法、字段、构造函数等信息。

2024-07-24 15:02:31 691

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

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

2024-07-22 17:34:23 664

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

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

2024-07-19 14:19:53 1453

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

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

2024-07-19 13:55:44 2798

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

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

2024-07-18 14:29:20 557

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

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

2024-07-18 13:57:33 1032

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

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

2024-07-17 10:54:22 1244

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

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

2024-07-16 09:48:00 4086

原创 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 679

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

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

2024-07-12 17:56:04 352

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

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

2024-07-10 16:34:47 337 1

原创 圣诞树源码及效果图

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

2023-12-07 11:13:38 867

原创 圣诞树源码

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

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

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

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

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

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

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

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

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

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

2023-08-05 17:45:38 649 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 3072

原创 GC和分代回收算法

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

2023-06-10 12:05:07 418

原创 JVM三种垃圾回收算法

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

2023-06-09 16:14:19 399

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

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

2023-05-24 11:42:54 443

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

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

2023-05-17 15:32:52 429

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

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

2023-05-16 11:46:57 184

空空如也

空空如也

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

TA关注的人

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