首页 / 技术专题CATEGORY / SPRINGFORALL

Java

在这个技术方向,积累扎实的知识与实践。

共 547 篇文章

垃圾回收器介绍

1 概述 首先所需要考虑: 那些垃圾需要回收? 什么时候回收? 如何回收? 当需要排查各种 内存溢出问题、当垃圾收集称为系统达到更高并发的瓶颈时,我们就需要对这些“自动化”的技术实施必要的监控和调节。 2 对象已经死亡? 堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断那些对象已经死亡(即不能再被任何途径使用的对象) 2.1引用计数法…

Java 里的 Optional 魔法:拿捏空值,yyds!

在 Java 编程的世界里,处理空值一直是一个需要谨慎对待的问题。空指针异常常常让开发者感到头疼,不仅影响程序的稳定性,还可能导致难以排查的错误。而 Java 中的 Optional 类的出现,为我们提供了一种更优雅、更安全的空值处理方式。 在实际的开发中,正确且高效地运用 Optional…

Java Random:随机 or 随缘?

探索随机性 在软件开发的世界里,随机数生成是一项既古老又现代的技术。从早期的简单概率游戏到今天的复杂算法和加密系统,随机数都扮演着不可或缺的角色。它们不仅能够为程序增添不可预测性和趣味性,还能在模拟、统计分析、机器学习乃至安全性方面发挥关键作用。 Java 作为一种广泛使用的编程语言,提供了多种机制来生成随机数。其中最基础且最为人所熟知的是…

JVM内存的结构与消失的永久代介绍

前言 所有的Java开发人员可能会遇到这样的困惑?我该为堆内存设置多大空间呢?OutOfMemoryError的异常到底涉及到运行时数据的哪块区域?该怎么解决呢? 其实如果你经常解决服务器性能问题,那么这些问题就会变的非常常见,了解JVM内存也是为了服务器出现性能问题的时候可以快速的了解那块的内存区域出现问题,以便于快速的解决生产故障。…

2024面试必问:系统频繁Full GC,你有哪些优化思路?

不久之前,我遇到了一个Java GC问题。有个服务在高峰期耗时增加,触达上游超时配置,导致上游调用失败率增加。经过初步排查确认这并非因为个别接口的性能恶化,而是服务整体上性能恶化。 最终定位原因是,高峰期 YoungGC和 FullGC 频率过高,导致耗时增加。遂决定从GC方向优化性能,经过两周的治理,GC问题得到大幅改善,接口耗时下降30%。…

原来,这才是JDK推荐的线程关闭方式

JDK在线程的Stop方法时明确不得强行销毁一个线程,要优雅的退出线程。 何谓优雅退出线程,即业务将进行中请求正确被处理,取消待执行请求,执行资源回收,最终Thread Runable run 方法return 结束执行。 首先问为什么要退出一个线程,再提问如何退出一个线程 任务执行完成,或异常终止,任务认为无需再占用线程。…

Tomcat中的Connector源码分析

前言 本文将介绍 Tomcat 中的 NIO 使用,使大家对 Java NIO 的生产使用有更加直观的认识。 虽然本文的源码篇幅也不短,但是 Tomcat 的源码毕竟不像 Doug Lea 的并发源码那么“变态”,对于大部分读者来说,阅读难度比之前介绍的其他并发源码要简单一些,所以读者不要觉得有什么压力。 本文基于 Tomcat…

Java网络与NIO总结

Java IO Java IO的基础知识已在前文讲过 Socket编程 socket是操作系统提供的网络编程接口,他封装了对于TCP/IP协议栈的支持,用于进程间的通信,当有连接接入主机以后,操作系统自动为其分配一个socket套接字,套接字绑定着一个IP与端口号。通过socket接口,可以获取tcp连接的输入流和输出流,并且通过他们进行读取和写入此操作。…