Java异步编程方式介绍

异步执行对于开发者来说并不陌生,在实际的开发过程中,很多场景多会使用到异步,相比同步执行,异步可以大大缩短请求链路耗时时间,比如:发送短信、邮件、异步更新等,这些都是典型的可以通过异步实现的场景。1. 线程Thread 2. Future 3. 异步框架CompletableFuture 4. Spring注解@Async 5. Spring ApplicationEvent事件 6. 消息队列 7. 第三方异步框架,比如Hutool的ThreadUtil 8. Guava异步

™️HttpClient? RestTemplate?WebClient? 不~是 RestClient

Spring 框架一直提供了两种不同的客户端来执行 http 请求: • RestTemplate: 它在 Spring 3 中被引入,提供同步的阻塞式通信。 • WebClient: 它在 Spring 5 的 Spring WebFlux 库中作为一部分被发布。它提供了流式 API,遵循响应式模型。 RestTemplate 的方法暴露了太多的 HTTP 特性,导致了大量重载的方法,使用成本较高。WebClient 是 RestTemplate 的替代品,支持同步和异步调用。它是 Spring Web Reactive 项目的一部分。 现在 Spring 6.1 M1 版本引入了 RestClient。一个新的同步 http 客户端,其工作方式与 WebClient 类似,使用与 RestTemplate 相同的基础设施。

Hutool 5.8.8 BeanUtil.copyProperties 致命异常

Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。 JavaBean是一个拥有对属性进行set和get方法的类。它可以被简单地定义为包含setXXX和getXXX方法的对象。在Hutool中,判定Bean的方法为:是否存在只有一个参数的setXXX方法。Bean工具类主要操作setXXX和getXXX方法,如将Bean对象转为Map等。

使用 Keycloak REST API 进行身份验证和授权

Keycloak REST API 可以被用来进行身份验证和授权。使用该API,开发人员可以轻松地在其应用程序中实现安全性验证和授权功能,同时使用Keycloak的内置功能进行管理和配置。Keycloak的REST API还提供了许多不同的终端点来进行用户和角色管理、认证事件和SAML元数据的访问等。 作为一个基于开源的身份和访问管理解决方案,Keycloak的REST API对于任何需要对应用程序进行认证和授权的开发人员都非常有帮助。

Java基础-锁

synchronized 关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。另外,在 Ja

springBoot三剑客

springBoot 三板斧AOPaop是一种面向切面编程 能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(缓存,锁) 封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可

Java基础-JVM

Java基础-JVM是Java开发者必须要掌握的重要知识点之一,JVM全称为Java Virtual Machine(Java虚拟机),它是Java程序运行的环境,在Java编程中具有极其重要的作用。 作为Java语言的核心,JVM能够通过将Java代码编译为字节码,再通过字节码的解释器实现Java程序的运行。JVM负责管理应用程序的内存、多线程、垃圾回收等操作,是实现跨平台、自动垃圾回收、安全性高等特性的关键。 要深入理解JVM,需要掌握JVM的内部机制,包括虚拟机类加载器、运行时数据区域、字节码执行引擎等方面。此外,对于JVM的性能调优及故障排查也非常重要,能够帮助开发者优化应用程序的运行效率。 总之,掌握Java基础-JVM是Java开发者必须要具备的知识技能,它可以帮助你更好地理解Java程序的运行机制,提高开发效率,提升应用程序的性能以及稳定性。

Java基础-集合

这篇文章讲解了Java集合中的ArrayList,它是一种动态数组,可以快速随机访问。相比于Vector,ArrayList不是线程安全的,但是LinkedList则不支持高效的随机元素访问。此外,ArrayList实现了多个接口,包括List、RandomAccess、Cloneable和Serializable。因此,ArrayList在实际应用中非常常见。 除了ArrayList,文章还介绍了Java中的其他集合类型,如LinkedList和HashMap。LinkedList是一种双向链表,可以在任意位置进行插入和删除操作,但是不支持随机访问。而HashMap是一种基于哈希表实现的Map,可以用于存储键值对。HashMap使用数组和链表结合的方式,来解决哈希冲突的问题,JDK1.8之后还引入了红黑树来优化性能。 文章还介绍了一些Java集合中的底层实现细节,例如HashMap中的扰动函数、loadFactor加载因子、threshold临界值等。这些细节对于理解集合的工作原理非常重要,也可以帮助我们更好地使用Java集合。 总之,Java集合是Java编程中非常常用的一部分,掌握好集合的使用方法和底层实现细节,可以帮助我们编写更高效、更易维护的Java代码。

Java基础-线程&并发

线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享同一块内存空间和一组系统资源,所以系统在产生一个线程,或是在各个线程之间作切换工作时,负担要比进程小得多,也正因为如此,线程也被称为轻量级进程。