![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 67
沛哥儿
这个作者很懒,什么都没留下…
展开
-
树状数组:解锁快速排名的高效利器
在信息爆炸的时代,数据的高效处理与查询显得尤为重要。在众多算法中,树状数组以其独特的结构和高效的性能,成为了实现快速排名的得力助手。给定一个值,查询它在当前数据集中的排名(即小于等于该值的元素个数)。2.数据集中某个值发生变化时,快速更新所有相关排名。树状数组,又称为二叉索引树或Fenwick树,是一种用于高效处理前缀和问题的数据结构。它的核心思想是将数组划分为一系列子区间,并通过树形结构来存储这些子区间的和。原创 2024-06-12 09:23:25 · 847 阅读 · 1 评论 -
JAVA18新特性揭秘:让编程更智能、更高效!
Java 18的新特性带来了许多令人兴奋的功能和性能优化,使得Java在编程领域中的地位更加稳固。无论您是Java的初学者还是资深开发者,都应该关注这些新特性,并尝试将它们应用到您的项目中。相信在不久的将来,我们将看到更多基于Java 18的优秀作品和创新应用诞生!原创 2024-05-22 21:44:27 · 1397 阅读 · 0 评论 -
Java锁机制大揭秘:解锁并发编程新境界
Java中的锁机制是并发编程的核心组成部分。通过深入理解和掌握锁的原理和使用方法,我们可以编写出更高效、更安全的并发程序。同时,我们也需要关注Java并发工具的最新发展,以便在实际开发中充分利用这些工具来提高程序的性能和可靠性。在未来的并发编程领域中,随着技术的不断进步和需求的不断变化,我们相信锁机制将继续发挥重要作用,为Java程序员提供更加强大和灵活的并发编程能力。原创 2024-05-22 09:32:09 · 960 阅读 · 0 评论 -
为什么Java中HashMap的加载因子是0.75?为什么不是0.8或0.6?
选择0.75作为HashMap的默认加载因子是基于对时间复杂度和空间效率的综合考虑。这个值在大多数情况下都能提供较好的性能,但根据具体的应用场景,可以适当调整加载因子以优化性能。原创 2024-05-13 07:01:19 · 832 阅读 · 0 评论 -
JSON.toJSONString() 输出 “$ref“:“$[0]“问题解决及原因分析
通过实现自定义的序列化器或采用库提供的注解等方式,控制特定对象或类的序列化行为,避免$ref的产生。// 使用Jackson的@JsonIdentityInfo注解解决循环引用 // 上面的SelfReferencingObject类已经添加了@JsonIdentityInfo注解 // 序列化代码保持不变 使用 @JsonIdentityInfo 后,输出的 JSON 会为重复的对象生成唯一 ID ,而不是直接使用$ref。在解决这个问题时,关键是要找到循环引用的来源。原创 2024-04-29 21:23:49 · 1182 阅读 · 0 评论 -
Java特性函数式接口注解@FunctionalInterface浅析
一个函数式接口是只有一个抽象方法(不包括继承自java.lang.Object的默认方法)的特定接口。这个抽象方法可以有任意数量的默认方法、静态方法以及覆盖Object类的方法。关键在于该接口必须确保只有一个未被实现的抽象方法。在 Java 中,函数式接口是专门为了配合 lambda 表达式和方法引用而设计的接口。单一抽象方法:函数式接口的核心特征是它只包含一个抽象方法。这意味着除了默认方法、静态方法或继承自的方法之外,它不能有其他的抽象方法。默认方法。原创 2024-04-25 19:07:15 · 2116 阅读 · 0 评论 -
API请求报错 Required request body is missing问题解决
客户端必须发送一个包含请求体的 POST 请求。请求体应该是一个 JSON 字符串,其结构与 MyVO 类的字段相匹配。确保客户端在请求头中设置了正确的 Content-Type,通常为 application/json。VO 类应该与 JSON 数据中键的字段相对应,并且这些字段应该有正确的 getter 和 setter 方法。原创 2024-04-20 13:13:54 · 2151 阅读 · 0 评论 -
绝不忽视!List.add方法揭秘:你绝对需要了解的覆盖现象
在使用List进行对象添加的时候,发现对象都被覆盖了。刚开始以为是赋值出现的问题。后来打印发现值都很正常。业务需求:在一份PDF文件中,有不定页数的详细信息。每页详细信息都是一样的,需要把每页的详细信息组装成为一行进行返回。解决思路:根据x,y定位进行循环读取,然后把每个地位的结果当作一个对象列表进行返回。//循环获取详细i++) {// 创建一个新的 ItalyInfo 集合对象// 创建一个新的 ItalyInfo 集合对象//打印返回的数据。原创 2024-04-03 20:09:26 · 1872 阅读 · 0 评论 -
快速上手Spring Cloud 七:事件驱动架构与Spring Cloud
本文介绍了事件驱动架构在微服务中的应用需求,详细阐述了Spring Cloud Stream与事件驱动架构的集成方式,以及如何使用Spring Cloud Bus实现消息驱动微服务。通过示例代码和源码分析,帮助读者深入理解并掌握Spring Cloud在事件驱动架构中的应用。原创 2024-03-25 11:30:00 · 1000 阅读 · 0 评论 -
快速上手Spring Cloud 六:容器化与微服务化
本文深入探讨了Spring Cloud与容器化技术(Docker和Kubernetes)的结合,展示了如何使用Spring Cloud构建基于容器的微服务架构,并分析了容器编排对Spring Cloud应用的影响与优化方法。文章首先介绍了Spring Cloud和容器化技术的基本概念,然后详细阐述了两者结合的优势,包括提高应用部署效率、环境一致性和可靠性。接着,通过示例代码展示了如何构建Spring Cloud应用的Docker镜像和使用Eureka作为服务注册中心。文章还探讨了容器编排对Spring Cl原创 2024-03-25 06:30:00 · 1405 阅读 · 0 评论 -
快速上手Spring Cloud四:微服务治理与安全
在微服务的浪潮中,Spring Cloud凭借其卓越的生态系统和丰富的功能集,已成为业界领先的微服务解决方案。微服务治理与安全作为这一框架的两大核心支柱,不仅关乎服务的稳定运行,更直接关系到企业的数据安全与业务连续性。本文旨在深入探讨服务注册中心的选型与最佳实践,全面分析微服务架构中的安全问题及其解决方案,并对微服务间通信的安全性进行详尽考量。如何在微服务架构中保障数据的安全和服务的稳定,是每一个开发者都需要面对的问题。原创 2024-03-24 10:48:59 · 1099 阅读 · 0 评论 -
快速上手Spring Cloud三:API网关深入探索与实战应用
API网关作为微服务架构的核心组件,不仅实现了请求的统一管理和安全控制,还提供了服务发现、动态路由、请求监控与日志记录以及性能优化等高级功能。通过深入了解和掌握这些功能,我们可以构建出更加高效、安全、可靠的微服务应用。在实际应用中,我们应该根据业务需求和技术栈选择合适的技术和工具,并结合最佳实践进行配置和优化,以充分发挥API网关的优势。原创 2024-03-24 10:36:41 · 1068 阅读 · 0 评论 -
快速上手Spring Cloud二:核心组件解析
通过对Spring Cloud核心组件的深入解析和源码分析,我们可以更好地理解这些组件的工作原理和最佳实践。在实际应用中,我们可以根据项目的需求选择合适的组件进行集成,构建出健壮的微服务生态。原创 2024-03-24 00:01:19 · 987 阅读 · 0 评论 -
快速上手Spring Cloud一:Spring Cloud 简介
在数字化浪潮席卷而来的今天,微服务架构以其高度的可伸缩性、灵活性和独立性成为了企业应用架构的首选。而在微服务架构的众多技术栈中,Spring Cloud以其丰富的功能、稳定的性能和良好的社区支持,赢得了广大开发者的青睐原创 2024-03-23 23:48:32 · 380 阅读 · 0 评论 -
Java进阶必备!继承与多态完美结合,让你代码更优雅更高效!
在review代码的时候,发现了一个关于Java继承和多态的组合问题。问题比较少,但是个人觉得是一个很好的问题,可以加深对继承和多态的理解。问题如下:在一个service中发现,一个方法里面调用了两个不同的函数,两个函数返回的对象不一样。A对象继承了B对象。原创 2024-03-15 15:33:43 · 746 阅读 · 0 评论 -
slf4j中如何用一行代码同时输出多个对象的日志内容
1、slf4j支持一行输出多个参数内容。使用占位符方式。2、占位符{}里面不能有任何的内容。3、参数和占位符的方式是一一对应的,不能错位。原创 2024-03-14 09:37:10 · 476 阅读 · 0 评论 -
简述Redis备份策略以及对应的实现机制
在选择Redis的备份策略时,需要根据实际业务需求和系统资源进行权衡。定期备份适用于数据量较小的情况,实时备份适用于对数据完整性要求高的场景,增量备份和全量备份适用于大数据量和高恢复速度的要求。在实现备份时,可以选择RDB、AOF或第三方工具进行操作,确保数据的安全性和完整性。原创 2023-12-28 20:30:51 · 1424 阅读 · 0 评论 -
Springcloud+Nacos+Seata: NettyClientChannelManager : 0304 register RM failed是一次问题解决
最后的解决办法,发现在现有的代码中打短点。然后一个个去跟踪。发现调用了9848的端口(Nacos的偏移量),测试环境中开启了该端口,生产上因为安全问题关闭了(两个环境的配置人不是同一个)。终于找到问题了:在centos7环境中服务端Nacos需要开放9848端口给外网可访问.开启端口访问权限后,问题解决。原创 2023-12-01 12:07:47 · 1016 阅读 · 0 评论 -
Arrays.asList() 与 Collections.singletonList()的恩怨情仇
我们总结一下Arrays.asList()方法和Collections.singletonList()方法的特点。结构性变化不允许不允许非结构性变化允许不允许数据结构由数组支持直接握住元件在这篇文章中,我们讨论了Arrays.asList()方法和Collections.singletonList()方法。当我们想要初始化一个只有一个元素的固定大小列表时,我们可以考虑使用Collections.singletonList()方法。原创 2023-11-25 09:31:41 · 1272 阅读 · 0 评论 -
Arrays.asList() 和 List.of() 的列表之争
有时在Java中,为了方便,我们需要创建一个小列表或将数组转换为列表。Java 为此提供了一些辅助方法。在本文中,我们将比较初始化小型临时数组的两种主要方法:List.of()和 Array.asList()。原创 2023-11-06 09:41:53 · 477 阅读 · 0 评论 -
浅析Spring生命周期
对Bean执行用户定义的初始化方法在Spring框架中是通过Bean的生命周期回调方法来实现的。Spring的Bean生命周期可以分为两个阶段:BeanFactory准备和BeanFactory启动,其中Bean创建、初始化、销毁等过程都在这个时间段内完成。在BeanFactory准备阶段,Spring容器对BeanFactory进行了初始化,包括加载配置文件、实例化Bean工厂等原创 2023-06-08 15:37:55 · 700 阅读 · 2 评论 -
Java大数据文件处理方法
Java大数据文件处理是一种Java编写的数据处理技术,它能够处理大型数据文件和数据流。这种技术的主要作用是对大量数据进行分析、处理和存储。随着数字化和数据化的越来越普及,Java大数据文件处理成为了一种非常重要的技术,被广泛应用于互联网和金融行业。原创 2023-05-29 13:20:08 · 2343 阅读 · 0 评论 -
浅析Java 多线程中的锁
补充一点,在使用锁时,我们也应该注意锁的粒度和锁定顺序。锁的粒度越小,锁定的时间就越短,竞争的线程就越少,从而提高并发效率。同时,锁的锁定顺序也会影响并发效率。当多个线程都需要获取多个锁时,如果锁定顺序不同,就可能出现死锁问题。因此,我们需要遵循一定的锁定顺序,尽可能减少死锁的出现。Java 中的锁机制是保证并发访问安全的重要工具。本文详细介绍了 Java 中的锁类型、锁的实现方法、锁的应用场景,以及锁的缺陷和解决方法。在使用锁时,我们需要根据实际的业务场景和运行环境,选择恰当的锁类型和实现方式。原创 2023-05-27 17:53:16 · 2521 阅读 · 1 评论 -
JVM参数校验利器:jacoline
升级版本总有一些担心,那么最好的办法就是校验下。这样就可以很好的处理这个问题了。一定要记得找同行交流,他们有些你不知道的优秀的小工具哦。原创 2023-01-04 08:55:38 · 391 阅读 · 0 评论 -
JDK17升级之路:JCE cannot authenticate the provider BC问题
JDK本身是不支持PKCS7Padding的。不支持的原因可能也和JAVA对块大小的支持有一定的关系。在PKCS5Padding中,明确定义Block的大小是8位,而在PKCS7Padding定义中,对于块的大小是不确定的,可以在1-255之间(块长度超出255的尚待研究),填充值的算法都是一样的:>value=k - (l mod k) ,K=块大小,l=数据长度,如果l=8, 则需要填充额外的8个byte的8。理论上来讲,用PKCS7Padding加密,使用PKCS5Padding解密也是可以原创 2022-12-29 19:08:38 · 6731 阅读 · 7 评论 -
常用的JVM配置参数说明
XX:SurvivorRatio,新生代中Eden 区与两个Survivor区的比值,默认为8, 即Eden:Survivor:Survivor=8:1:1。-XX:ReservedCodeCacheSize,用于设置JIT编译后的代码存放区大小, 如果观察到这个值有限制,可以适当调大, 一般够用即可。-XX:MaxDirectMemorySize,用于设置直接内存的最大值,限制通过 DirectByteBuffer 申请的内存。-XX:+PrintGCTimeStamps,打印GC 的时间戳。原创 2022-11-25 21:55:45 · 1105 阅读 · 0 评论 -
简述Spring Bean生命周期
如果这个 Bean 的 Spring 配置中配置了 destroy-method 属性,会自动调用其配置的销毁方法。以上就是spring bean的完整生命周期。原创 2022-11-22 17:30:00 · 2645 阅读 · 0 评论 -
ConcurrentHashMap的实现原理是分段锁?你Out了
新版的ConcurrentHashMap和Segment分段锁没有任何关系。它的实现方式和HashMap有点大同小异:数组+链表+红黑树。原创 2022-11-21 21:24:57 · 1805 阅读 · 0 评论 -
并发编程线程基础知识:守护线程
守护线程–也称“服务线程”,它是后台线程,在没有用户线程可服务时会自动离开。原创 2022-11-20 23:45:00 · 630 阅读 · 0 评论 -
线程生命周期?其实就这么点东西
一大兄弟去一家公司面试,面试官问你能简单讲下并发编程中,你用过多线程不?你能简单讲下对线程的生命周期么?线程的生命周期?其实就这点点东西。原创 2022-11-18 16:41:03 · 127 阅读 · 0 评论 -
nested exception is java.lang.IllegalStateException: Method has too many Body parameters问题解决
增加了一个定制化的对外发布的接口,编译的时候没有任何问题,在启动的时候突然报了nested exception is java.lang.IllegalStateException: Method has too many Body parameters这个错误。我看了下,发现是因为fegin里面调用的时候,需要在参数前增加@RequestBody增加之后,启动OK了。......原创 2022-08-18 22:57:44 · 1910 阅读 · 0 评论 -
Feign避坑小结(1)
不加的话,可能会出现get参数值为null的问题。这个问题不注意会困扰你很长时间。不要问我为什么,这都是血和泪的教训出来的,而且这玩意编译不报错,运行的时候不打断点也不会报错,不跨服务调用也不会有问题。但是很多时候就是这个导致参数传递失败了。...原创 2022-08-18 22:49:15 · 639 阅读 · 0 评论 -
springboot2.3.7升级到springboot2.7.2
springboot2.3.7太老了,官方都已经不支持了。(个人说句实话,其实也还好,只是springboot最近有点抽风,太快了。真不是国jun不给力,而是共jun太强悍了!)查看当前版本的支持情况:2.3.X版本,去年就gg了。为了啥都好,那是必须要升级的。既然要升级,就升级到到最新的支持的版本了。3.0就不要想了,为啥?因为还没有正式版本,那就2.7吧。......原创 2022-08-18 22:15:09 · 4247 阅读 · 0 评论 -
推荐一款管理系统专用低代码工具,一天开发一个系统不是梦!
Yao是一款Go语言驱动的低代码应用引擎,目前在Github上已有3.8k+Star!使用该框架,你可以通过JSON完成90%的接口和页面开发,用来开发管理系统正合适!Yao的名字源于汉字爻(yáo),是构成八卦的基本符号,看样子作者对八卦还是挺有研究的。下面使用使用Yao开发的界面效果图,暗黑风格,还是挺炫酷的!今天体验了一把Yao,确实是一款很有想法的低代码功工具。使用者只需要使用JSON就可以创建数据库、开发后端API和前端界面,极大地提高了开发效率。...转载 2022-08-05 18:12:14 · 527 阅读 · 0 评论 -
IDEA快速去除魔法值
使用Ctrl+Alt+C组合键之后,IDEA会让我们在当前类文件中增加一个常量,如果在当前页面中有多个同样的魔法值的时候,会提示我们是否需要一起替换。但是当项目越来越大的时候,我们发现很多地方都有可能使用了同一个变量。同时代码审查工具也会提示我们最好把这些最好处理掉。使用了这个命令之后,如果一个页面中有多个重复的魔法值的时候,可以一键处理掉。写代码有的时候为了方便,会在代码里面留下很多字符串之类的变量。所以一般情况下,我们都不会去处理它。所以IDEA就提供了一个快捷的命令方式:Ctrl+Alt+C。...原创 2022-08-05 18:10:01 · 2545 阅读 · 0 评论 -
springboot升级到2.7相关依赖对应的版本
springboot升级到2.7相关依赖对应的版本。原创 2022-08-04 19:15:00 · 3287 阅读 · 0 评论 -
Java:get请求下字符串异常问题
后端解决方案因为加密字段是后端生成的,那么在传递给前端的时候,需要对传递的参数负责。就需要将当前参数传递的时候就去掉特殊字符。这里我们可以使用URLEncode来进行转换。在前端将此字符传递给后端后,后端再进行URLDecode处理,这样对于前端来讲就是无感的。解决问题主要是把特殊字符串处理。处理方案一个是URL转码替换,一个是直接替换。原理都是一样的。特别说明下,这个情况下对Get请求方式有效。Post是不需要这么复杂的。至于为什么,可以自己想下。...原创 2022-08-03 18:54:58 · 1443 阅读 · 0 评论 -
5 张图告诉你 RocketMQ 为什么不使用 Zookeeper 做注册中心
对于注册中心,RocketMQ集群需要保存的元数据非常少,完全没有必要引入Zookeeper这种重量级的注册中心。RocketMQ实现了基于raft协议的DLedger算法,可以保证Broker集群高可用,不用依赖Zookeeper。NameServer是RocketMQ内部组件,实现简单,易于扩展,不用考虑运维复杂性。httpshttpshttpshttpshttps。...转载 2022-08-02 14:05:46 · 342 阅读 · 0 评论 -
SpringBoot自动配置原理
SpringBoot的自动配置可以根据添加的jar依赖,自动配置SpringBoot应用程序。例如,我们想要使用Redis,直接在POM文件中增加依赖,然后我们配置下连接信息就可以使用了。那么SpringBoot是如何实现自动配置的呢?下面通过源码分析,来看自动配置的原理。...转载 2022-08-02 11:00:58 · 177 阅读 · 0 评论 -
List获取差集产生的问题
removeAll适合子集完全匹配和基础类型的操作,建议在自定义对象的时候,不要使用removeAll方法,而是使用stream的方式。 removeAll适合子集完全匹配和基础类型的操作,建议在自定义对象的时候,不要使用removeAll方法,而是使用stream的方式。...原创 2022-07-28 19:30:00 · 277 阅读 · 0 评论