
Java探索者之路
文章平均质量分 74
欢迎来到《Java探索者之路》专栏!这个专栏旨在引领Java开发者踏上一段真正探索Java世界的旅程。
我们将深入探讨Java编程的方方面面,从基础知识到高级技巧,从实践案例到最新趋势,帮助你成为一名卓越的Java探索者。
程序员三木
[优快云全栈领域优秀创作者| 阿里云博客社区专家博主] 作为某云服务提供商的后端开发人员,我将在这里与大家简要分享一些实用的开发小技巧。在我的职业生涯中积累了丰富的经验,希望能通过这个博客与大家交流、学习和成长。
展开
-
kafka 参数篇
Kafka Rebalancing 可能由多种参数和场景触发,包括心跳、会话、轮询超时、消费者动态变化、网络故障等。:调整::、: :和:: :等参数。:优化消费者的处理逻辑,减少单条消息的处理时间。:确保 Kafka 集群的高可用性和网络的稳定性。:使用合适的分区分配策略和消费者组配置。:通过合理的配置和优化,可以有效减少 Kafka Rebalancing 的频率,提高系统的稳定性和性能。原创 2025-03-26 09:30:00 · 1166 阅读 · 0 评论 -
[AIGC] 详解Mockito - 简单易学的Java单元测试框架
Mockito是一款强大的模拟和代理框架,主要用于轻量级的单元测试. 她可以让你创建和配置mock对象。通过使用Mockito,我们能够验证系统的某个部分是否按照我们所预期的方式工作。原创 2024-06-06 23:14:17 · 844 阅读 · 0 评论 -
说一下 SpringBoot 的自动装配原理
Spring Boot 通过@EnableAutoConfiguration开启自动装配,通过 SpringFactoriesLoader 最终加载META-INF/spring.factories中的自动配置类实现自动装配,自动配置类其实就是通过@Conditional按需加载的配置类,想要其生效必须引入spring-boot-starter-xxx包实现起步依赖。springboot 的自动装配的起点是。原创 2024-04-24 10:00:00 · 229 阅读 · 0 评论 -
请解释自动装配模式的区别?
在 Spring 框架中共有 5 种自动装配。原创 2024-04-23 23:20:30 · 188 阅读 · 0 评论 -
怎样用注解的方式配置 Spring?
Spring 在 2.5 版本以后开始支持用注解的方式来配置依赖注入。可以用注解的方式来替代 XML 方式的 bean 描述,可以将 bean 描述转移到组件类的内部,只需要在相关类上、方法上或者字段声明上使用注解即可。在 标签配置完成以后,就可以用注解的方式在 Spring 中向属性、 方法和构造方法中自动装配变量。注解注入将会被容器在 XML 注入之前被处理,所以后者会覆盖掉前者对于同一个属性的处理结果。如果你想要在你的应用程序中使用关于注解的方法的话,请参考如下的配置。原创 2024-04-23 23:19:36 · 294 阅读 · 0 评论 -
如何用基于 Java 配置的方式配置 Spring?
在上面的例子中,com.acme 包首先会被扫到,然后再容器内查找被 @Component 声明的类,找到后将这些类按照 Sring bean 定义进行注册。上述配置方式的实例化方式如下:利用 AnnotationConfigApplicationContext 类进行实例化。Spring 对 Java 配置的支持是由。原创 2024-04-23 23:19:01 · 316 阅读 · 0 评论 -
[flink 实时流基础] 转换算子
当Flink提供的所有分区策略都不能满足用户的需求时,我们可以通过使用partitionCustom()方法来自定义分区策略。1)自定义分区器@Override2)使用自定义分区。原创 2024-03-31 20:32:38 · 1548 阅读 · 0 评论 -
[flink 实时流基础] flink 源算子
Flink可以从各种来源获取数据,然后构建DataStream进行转换处理。一般将数据的输入来源称为数据源(data source),而读取数据的算子就是源算子(source operator)。所以,source就是我们整个处理程序的输入端。原创 2024-03-31 20:30:16 · 769 阅读 · 0 评论 -
[flink 实时流基础]源算子和转换算子
所以,source就是我们整个处理程序的输入端。filter转换操作,顾名思义是对数据流执行一个过滤,通过一个布尔条件表达式设置过滤条件,对于每一个流内元素进行判断,若为true则元素正常输出,若为false则元素被过滤掉。flatMap可以认为是“扁平化”(flatten)和“映射”(map)两步操作的结合,也就是先按照某种规则对数据进行打散拆分,再对拆分后的元素做转换处理。Flink直接提供了很多预实现的接口,此外还有很多外部连接工具也帮我们实现了对应的Source,通常情况下足以应对我们的实际需求。原创 2024-03-29 22:33:41 · 1429 阅读 · 2 评论 -
[flink 实时流基础] flink组件栈以及任务执行与资源划分
而且,对于一个数据流图来说,Source、FlatMap等算子的计算量相对不大,WindowAggregation算子的计算量比较大,计算量较大的算子子任务与计算量较小的算子子任务可以互补,空出更多的槽位,分配给更多任务,这样可以更好地利用资源。使用算子链是一个非常有效的优化,它可以有效减少算子子任务之间的传输开销。综上,Flink的一个Slot中可以执行一个算子子任务、也可以是被链接的多个子任务组成的任务,或者是共享Slot的多个任务,具体这个Slot上执行哪些计算由算子链和槽位共享两个优化措施决定。原创 2024-03-29 22:32:16 · 1476 阅读 · 0 评论 -
[flink 实时流基础系列]揭开flink的什么面纱基础一
Apache Flink 是一个框架和分布式处理引擎,用于在无边界和有边界数据流上进行有状态的计算。Flink 能在所有常见集群环境中运行,并能以内存速度和任意规模进行计算。原创 2024-03-28 23:12:13 · 1416 阅读 · 2 评论 -
[flink] flink macm1pro 快速使用从零到一
flink的简单使用原创 2024-03-28 23:10:16 · 765 阅读 · 0 评论 -
[Java探索者之路] Java中的AbstractQueuedSynchronizer(AQS)简介
Java并发编程是一门复杂的艺术,而AbstractQueuedSynchronizer(AQS)是其中非常重要的一个组成部分。事实上,Java中许多同步器的实现,如Semaphore等,都依赖于AQS。在本文中,我们将详细介绍AQS的工作原理和如何使用AQS实现自己的同步器。原创 2024-03-20 21:11:03 · 659 阅读 · 2 评论 -
[AIGC] 在Spring Boot中指定请求体格式
在使用Spring Boot开发Web应用的时候,我们经常会遇到需要接收并处理HTTP请求的情况。一个HTTP请求通常包括一个请求行、若干请求头和一个请求体。请求体在POST和PUT请求中特别重要,因为它通常用于向服务器传递数据。原创 2024-03-19 22:14:49 · 772 阅读 · 0 评论 -
Spring Boot Starter: 快速简明地创建Spring应用
Spring Boot Starter是一种特殊的Maven项目依赖,它提供了一种简化Spring应用构建和配置的方式。每一个Starter都会提供一系列相关的依赖项,这些依赖项可以合并成一个适用于特定类型的应用或服务的依赖。例如,如果你想要使用Spring和JPA进行数据库访问,你只需要添加依赖,这个Starter就会为你添加所有必要的库和配置。原创 2024-03-17 23:14:21 · 1657 阅读 · 7 评论 -
[Java 探索之路~大数据篇] 新时代大数据流处理入门指南
任何类型的数据都可以形成一种事件流。信用卡交易、传感器测量、机器日志、网站或移动应用程序上的用户交互记录,所有这些数据都形成一种流。数据可以被作为 无界 或者 有界 流来处理。事件驱动型应用是一类具有状态的应用,它从一个或多个事件流提取数据,并根据到来的事件触发计算、状态更新或其他外部动作。事件驱动型应用是在计算存储分离的传统应用基础上进化而来。在传统架构中,应用需要读写远程事务型数据库。相反,事件驱动型应用是基于状态化流处理来完成。原创 2024-03-03 17:17:07 · 1901 阅读 · 1 评论 -
[Java 探索者之路] 一个大厂都在用的分布式任务调度平台
XXL-JOB是一个全功能、高扩展性的开源分布式任务调度框架,也是一个优秀的定时任务调度平台,给开发者带来便捷的定时任务管理和控制能力。它的核心目标是开发迅速、学习简单、轻量级、易扩展。原创 2024-03-03 01:56:58 · 1955 阅读 · 12 评论 -
深入探讨Java集合框架
Java的集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素的集合,另一种是图(Map),存储键/值对的映射。原创 2024-03-02 22:57:25 · 446 阅读 · 0 评论 -
Java输入输出流详细解析
Java I/O(输入/输出)主要被用来处理输入数据和输出结果。在Java中,输入/输出操作被当作流(Stream)进行处理。流是一个连续的数据流入或数据流出的通道。流操作在Java中主要可以分为两种类型:字节流和字符流。原创 2024-03-02 22:55:37 · 604 阅读 · 0 评论 -
[Java 基础] Java修饰符
用于创建抽象类和抽象方法。抽象类不能实例化,抽象方法只有方法名,没有方法体,由子类提供方法实现。原创 2024-02-29 22:54:23 · 486 阅读 · 2 评论 -
[Java 并发基础]多线程编程
CompletableFuture的get()方法是阻塞的,我们一般建议使用future.get(3, TimeUnit.SECONDS)。并且一般建议使用自定义线程池。但是如果线程池拒绝策略是DiscardPolicy或者DiscardOldestPolicy,当线程池饱和时,会直接丢弃任务,不会抛弃异常。因此建议,CompletableFuture线程池策略最好使用AbortPolicy,然后耗时的异步线程,做好线程池隔离哈。原创 2024-01-31 22:38:31 · 1483 阅读 · 10 评论 -
[并发编程基础] Java线程的创建方式
【代码】[并发编程基础] Java线程的创建方式。原创 2024-01-30 22:41:15 · 400 阅读 · 2 评论 -
[Java并发基础] 共享内存
总的来说,共享内存是一种并发编程模型,用于实现线程之间的数据共享和通信,而Java并发是一种实现并发编程的方法,提供了一些工具和类来管理和控制多线程的执行。通过使用Java并发提供的工具和类,可以更方便地实现并发编程,并且避免一些共享内存的问题。通过使用Java并发提供的工具和类,可以更方便地实现并发编程,并且避免一些共享内存的问题。总的来说,共享内存是一种并发编程模型,用于实现线程之间的数据共享和通信,而Java并发是一种实现并发编程的方法,提供了一些工具和类来管理和控制多线程的执行。原创 2024-01-23 10:00:00 · 1474 阅读 · 1 评论 -
[Java并发编程]浅谈管道
Java管道是一种在多线程编程中用于线程间通信的机制。通过使用管道,我们可以简化线程间通信的实现,提高代码的可读性和可维护性。使用和可以方便地实现管道功能。在使用管道时,要注意线程之间的同步和关闭管道输入流和输出流的适时操作。原创 2024-01-23 08:30:00 · 447 阅读 · 7 评论 -
[Java并发基础]多进程编程
多进程编程是一种并发编程的方法,它允许我们同时执行多个独立的进程。Java提供了丰富的API和工具来创建和管理进程,实现多进程编程。通过合理地使用进程间通信、进程同步与互斥、并发控制等技术,我们可以充分利用多核处理器的计算能力,提高程序的执行效率,并实现并行处理和系统稳定性。希望本篇博客对你理解Java多进程编程提供了一些帮助。原创 2024-01-22 22:53:26 · 593 阅读 · 0 评论 -
[面试炫技系列~] 浅谈`JNI`
最近在研究`JVM` 的时候发现很多地方用到了`native` 函数,之前一直是在八股面试,刚好有一次面试被问到`jvm` 与本地方法的交互流程,当时是一脸懵的,面试完了之后也一直没有好好总结,趁着这会有时间,简单学习一下吧,有所了解才能更好地背八股不是~原创 2024-01-14 22:41:57 · 932 阅读 · 5 评论 -
[SpringAop + Logback +MDC] 现网必备全链路日志追踪
全链路日志追踪是指在一个分布式系统中追踪请求的完整路径,并记录每个请求在系统中的处理过程中所产生的日志信息。它可以帮助我们了解请求在系统中的每个环节的执行情况,从而更好地排查问题和优化系统性能。在一个典型的分布式系统中,一个请求可能会经过多个服务组件的处理,每个组件都会产生日志。全链路日志追踪可以将这些日志串联起来,并为每个请求生成一个唯一的标识符,以便在需要时能够方便地查找和分析。其实说白了,就是在日志文件中加入一个可以标识每个请求的东西,如下所示,可以看到a请求的日志中有一串字符串。原创 2024-01-14 18:21:13 · 1853 阅读 · 0 评论 -
[JVM] Java类的加载过程
此外,JVM还提供了一系列的类加载器,用于从不同的来源加载类的二进制数据,例如本地文件系统、网络、ZIP文件等。可以有多种方式触发类的初始化,例如创建类的实例、访问类的静态变量和调用类的静态方法等。总结起来,类的加载过程包括加载、验证、准备、解析、初始化等阶段,通过这些步骤,Java虚拟机将类的二进制数据加载到内存中,并初始化类的静态变量和代码,使得该类可以被正常使用。在Java中,类的加载是指在程序运行时将类的二进制数据加载到内存中,并转化为可以被JVM执行的形式的过程。这些变量包括静态变量和静态常量。原创 2024-01-12 19:41:01 · 927 阅读 · 3 评论 -
[JVM] 浅谈JMM(Java 内存模型)
Java 内存模型(JMM)是 Java 虚拟机规范中定义的一种抽象计算机内存模型,用于描述 Java 程序在多线程下的内存访问行为。JMM 提供了可靠的同步机制,使得开发者可以编写高效并发的程序。了解 JMM 的规则,对于多线程编程来说是至关重要的。通过正确使用 JMM 的规则和同步机制,可以避免线程安全问题,并提高程序的性能和可靠性。原创 2024-01-12 19:38:54 · 626 阅读 · 0 评论 -
浅析RabbitMQ死信队列
在现代分布式系统中,消息队列扮演着至关重要的角色。它们可以实现应用程序之间的异步通信,并确保数据的可靠传输和处理。而在这个领域中,RabbitMQ作为一种强大而受欢迎的消息队列解决方案,具备了高效、可靠和灵活的特性。然而,即使使用了RabbitMQ,我们仍然会遇到一些不可预料的情况,例如消费者无法处理某些消息、消息过期或者队列溢出等。为了解决这些问题,RabbitMQ引入了死信队列(Dead Letter Queue)的概念,为开发人员提供了一种有效的错误处理机制。原创 2023-08-06 00:58:41 · 845 阅读 · 1 评论 -
1. Java基础知识介绍
在Java编程中,我们经常需要与用户进行交互,以获取输入并输出结果。Java提供了简单的输入输出方式,让我们能够轻松实现这一功能。原创 2023-08-24 22:03:06 · 617 阅读 · 1 评论 -
0. 专栏介绍
嘿,大家好!作为一名Java工程师兼探险家,我非常兴奋地向大家介绍【Java探索者之路】这个专栏!如果你对Java充满好奇,却又觉得它有些神秘,那么你来对地方啦!原创 2023-08-24 22:35:54 · 174 阅读 · 1 评论 -
2. 使用IDEA创建Spring Boot Hello项目并管理依赖——Maven入门指南
本文介绍了如何使用IDEA创建一个Spring Boot Hello项目,并通过Maven来管理项目的依赖。我们从项目的创建到代码的编写,再到项目的构建和运行,一步步演示了整个过程。通过学习和实践,你已经掌握了使用Maven来管理Java项目的基本技巧。希望本文对你有所帮助,如果你有任何问题或疑惑,请随时在评论区留言,我将尽力解答。原创 2023-08-27 20:36:48 · 2903 阅读 · 3 评论 -
3. Java 的线程安全机制之`synchronized`
是 Java 中用于实现线程同步的关键字。它可以应用于方法或代码块,并确保在同一时间只有一个线程可以访问被修饰的代码区域。通过在关键代码段中使用,可以有效地保护共享资源,避免多个线程同时访问导致的数据不一致或竞态条件。使用选择合适的锁对象:应该选择共享资源所属的对象作为锁对象,避免不必要的锁竞争。尽量缩小同步范围:只在必要的代码区域使用,以减少同步开销,提高并发性能。避免死锁:确保线程在获取锁的过程中不会出现循环等待的情况,以避免死锁的发生。原创 2023-09-01 06:30:00 · 668 阅读 · 9 评论 -
4. Java 的线程安全机制之`volatile`
本文详细介绍了volatile关键字在Java中的作用和使用方法,以及需要注意的几点事项。使用volatile关键字可以有效地实现线程安全,但是需要注意其局限性,不能过度依赖。在多线程编程过程中,需要根据具体情况来选择合适的线程安全机制,保证程序的正确性和健壮性。原创 2023-09-03 12:59:10 · 916 阅读 · 8 评论 -
5. 「Java 」江山基础之注解入门
Java注解是一种非常强大的语法元素,可以为我们的程序带来很多便利。然而,在使用注解时,我们往往会遇到一些问题。本篇博客将系统地介绍Java注解的定义、作用、使用方法以及注意事项,帮助大家更好地掌握Java注解,并在实际开发中运用自如。定义注解使用 @interface 关键字。首先,我们需要定义一个注解来标记要进行时间监控的方法。这个注解可以命名为 @TimeMonitor。上面的代码中,我们定义了一个只能用在方法上的注解,注解名称为 @TimeMonitor。原创 2023-09-06 08:30:00 · 865 阅读 · 16 评论 -
6. `Java` 并发基础之`ReentrantReadLock`
随着多线程程序的普及,线程同步的问题变得越来越常见。Java中提供了多种同步机制来确保线程安全,其中之一就是ReentrantLock。ReentrantLock是Java中比较常用的一种同步机制,它提供了一系列比synchronized更加灵活和可控的操作和特性。在本篇博客中,我们将深入探讨ReentrantLock的使用和原理,并与synchronized进行对比分析,让读者更好地理解和掌握线程同步机制的应用技巧。原创 2023-09-06 22:48:42 · 1015 阅读 · 19 评论 -
7. Java函数式编程:让代码更优雅
在本篇文章中,我们介绍了Java函数式编程以及常用的函数式接口。Lambda表达式和函数式接口是函数式编程的两个重要概念,可以让代码更加简洁和灵活。Java提供了一些常用的函数式接口,如Function、Consumer、Predicate、Supplier等,可以通过方法引用更加简洁地实现函数式编程。使用函数式编程,可以让你的代码更加优雅,简洁。原创 2023-09-16 00:27:23 · 716 阅读 · 1 评论 -
[SpringBoot] 8. aop 获取 request response
最近开发有一个需求需要在 aop 中获取request response ,搜索许久没有答案,故此记录📝~原创 2023-10-02 15:55:12 · 1320 阅读 · 21 评论 -
[Java] `JDK17` 模式变量 `Pattern variable` Variable ‘request‘ can be replaced with pattern variable
拥抱新技术,用就对了~oracle。原创 2023-10-02 17:56:16 · 968 阅读 · 12 评论