编程语言:Java
Java 供应链(依赖)安全检测实践
近些年,开源程序陆续爆出安全漏洞,轻则影响用户体验,重则业务应用沦陷。大量的业务应用以及每天数千次的迭代,使得自动检测和治理第三方开源程序成为企业安全建设的必要一环。
“JVM” 上的AOP:Java Agent 实战
在软件开发领域,面向切面编程(AOP)作为一种强大的技术手段,极大地促进了代码的模块化与可维护性。本文将深入探讨Java平台上的AOP实现,揭示了Spring AOP在处理非Bean类方法、静态方法及内部调用时的局限性。
场景执行工具:Java
在软件开发实践中,面对复杂多变的业务场景,开发者常常需要设计灵活且可扩展的架构以应对“根据不同场景执行不同逻辑”的需求。本文以Java语言为背景,探讨了如何通过模式设计与工具化手段优化这一过程,旨在减少代码冗余,提升开发效率与代码质量。
Java 21 Virtual Threads - Dude, Where’s My Lock?
Getting real with virtual threads.
Java系列 | 远程热部署在美团的落地实践
Sonic是美团内部研发设计的一款用于热部署的IDEA插件,本文其实现原理及落地的一些技术细节。
深入探讨Java的分层编译
本文主要探讨Java虚拟机(JVM)中的分层编译(Tiered Compilation)机制及其对程序性能的影响。
一不小心掉入了 Java Interface 的陷阱
本文作者记录了一次代码中的踩坑经历,一行很简单的代码在不同的场景下可能也暗藏玄机,希望大家看完都有所收获。
Java开发者LLM实战——使用LangChain4j构建本地RAG系统
本文将通过实战代码示例,意在帮助没有大模型实战经验的Java工程师掌握使用LangChain4j框架进行大模型开发。
Java ZGC 深度剖析及其在构建低延迟流系统中的实践心得
在 Java 应用程序中,垃圾回收(Garbage Collection,以下简称 GC)是一个不可避免的过程,它负责释放不再使用的内存空间以避免内存泄漏。然而,GC 操作通常会导致短暂的停顿时间(Stop the World,以下简称 STW),这对于对延迟敏感的应用程序来说是一个严重的问题——STW 会导致应用程序暂停响应,从而影响用户体验和系统性能。
为了解决这个问题,Java 引入了 Z Garbage Collector(以下简称 ZGC),它是一种低延迟垃圾回收器,旨在减少 GC 引起的停顿时间。ZGC 通过使用并发和分区收集技术,大大减少了 STW 的时间和频率,使得应用程序可以在 GC 期间继续运行,从而提供更加平滑和一致的性能。
Java+MotionEvent实现埋点自动化
本文旨在帮助测试人员“0”代码完成UI自动操作以及埋点自动校验,基于现状,埋点测试以及每次发版需要花费大量时间验证相关埋点,并且随着业务发展,埋点数量只会越来越多,很难做到每次发版将全部埋点回归验证一遍,虽然线上有埋点数据监控系统,但是发现埋点数据异常时已处于外网阶段,因此需要一套机制降低埋点问题逃逸率,同时降低测试负担,提高测试效率。
带你了解“Java新特性——模块化”
Java平台从Java 8向Java 9及更高版本的进化,其中引入了一个重要的新特性——模块系统。文章详细介绍了模块系统的概念,如主要参数、关键指令,以及模块化策略。此外本文还提供了最佳实践建议,帮助开发者更好地理解和应用Java模块系统。
Java 并发——基石篇(上)
本文主要分析了Java并发体系中的计算机系统层面上的并发问题以及面临的挑战。目标是实现在同一时刻运行更多任务的能力。并行计算提供了解决方案,但也带来了一些问题。文章建议读者深入研究HotSpot JVM 11的源代码,重点关注共享内存多核系统的架构与设计、Java内存模型、线程的创建与停止、synchronized机制、wait和notify/notifyAll机制以及volatile关键字的实现。并强调并发程序设计的复杂性和不确定性,鼓励读者通过下载代码进行编译和调试,以更好地理解核心功能。
Java 并发——基石篇(中)
本文介绍了Java中的并发同步技术synchronized的实现机制。作者指出早期的HotSpot JVM采用解释执行器效率低下,因此转而采用模版执行器。模版执行器通过将Java字节码手动编写为固定模式的机器指令,跳过C/C++层次,提高了执行效率。文章还提到了在OpenJDK中探索monitorenter和monitorexit指令执行的细节过程。通过阅读源码,我们可以了解到JVM中不同解释器的实现方式。
Java 并发——基石篇(下)
这篇文章主要讲解了Java中Object类的wait和notify的实现机制。文章首先介绍了wait和notify的基本概念,并指出它们是基于native实现的。然后详细分析了在HotSpot JVM中的wait和notify的实现逻辑。具体来说,文章解释了wait函数的实现过程,包括判断是否可中断并抛出异常、创建ObjectWaiter对象、将线程添加到等待集合等。最后,文章提到了被notify唤醒后的善后逻辑。
Java日志通关(五) - 最佳实践
作者日常在与其他同学合作时,经常发现不合理的日志配置以及五花八门的日志记录方式,后续作者打算在团队内做一次Java日志的分享,本文是整理出的系列文章第五篇。
虚拟线程:Java的新利器?
作者通过本文梳理了自己对虚拟线程的理解,顺便捋一捋Java线程的过去、现在和未来。