Java
文章平均质量分 91
欢迎来到Java的世界
有梦想的攻城狮
既然选择了远方,留给别人的就只能是背影
展开
-
Java8升级到Java11注意事项
Java 8(又称为 JDK 1.8)是 Java 语言开发的一个主要版本,由 Oracle 公司于2014年3月发布。这个版本引入了大量新特性,包括对函数式编程的支持、新的 JavaScript 引擎、用于日期时间操作的新 API、新的 Steam API 等。Java 8 支持函数式编程,是 Java 向函数式风格迈进的一个开始。这个特性有助于程序员编写出更简洁、表达力更强、在很多情况下能够利用并行硬件的代码。Lambda 表达式:Lambda 允许把函数作为一个方法的参数,增加了函数性处理能力。原创 2024-01-06 22:59:20 · 1363 阅读 · 5 评论 -
JMX使用详解
JMX(Java Management Extensions,即Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架。JMX可以跨越一系列异构操作系统平台、系统体系结构和网络传输协议,灵活的开发无缝集成的系统、网络和服务管理应用。JMX在Java编程语言中定义了应用程序以及网络管理和监控的体系结构、设计模式、应用程序接口以及服务。通常使用JMX来监控系统的运行状态或管理系统的某些方面,比如清空缓存、重新加载配置文件等。JMX的主要作用是提供接口,允许有不同的实现。原创 2023-12-29 23:27:35 · 2180 阅读 · 15 评论 -
线程池的拒绝策略
自定义线程池的拒绝策略可以通过实现RejectedExecutionHandler接口并覆盖其rejectedExecution方法来实现。@Override// 在这里处理任务被拒绝的情况// 可以选择记录日志、抛出异常、执行备选方案等这样,当任务被线程池拒绝时,就会调用自定义的拒绝策略进行处理。具体如何处理,取决于rejectedExecution方法中的实现。原创 2023-12-27 23:59:14 · 933 阅读 · 15 评论 -
Mybatis使用详解
MyBatis是一款优秀的持久层框架,它支持普通SQL查询,存储过程和高级映射。MyBatis通过简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plain Ordinary Java Object,普通的Java对象)映射成数据库中的记录。MyBatis可以自动注册驱动、建立连接、获取SQL执行对象、释放连接等操作,开发人员只需要关注SQL语句的编写即可,无需过多关注数据库连接问题。原创 2023-12-24 23:08:20 · 2292 阅读 · 51 评论 -
Tomcat与Netty比较
Tomcat是一个免费的、开放源代码的Web应用服务器,是Apache软件基金会项目中的一个核心项目。它由Apache、Sun和其他一些公司及个人共同开发而成,深受Java爱好者的喜爱,是一款比较流行的Web应用服务器。web容器:完成web服务器的功能。servlet容器:名字为catalina,用于处理Servlet代码。jsp容器:用于将jsp动态网页翻译成Servlet代码。因此,Tomcat是web应用服务器,也是一个Servlet/JSP容器。原创 2023-12-23 23:45:58 · 4018 阅读 · 24 评论 -
OpenSergo使用详解
OpenSergo是一个基于微服务治理的标准和生态,覆盖了服务元信息、流量治理、服务容错、数据库/缓存治理、服务注册发现、配置治理等十几个关键领域,覆盖了完整的微服务生命周期(从开发态到测试态,到发布态,再到运行态)。OpenSergo标准基于微服务治理中相关领域的实践与场景抽象,旨在定义服务之间的服务注册和发现能力,使得异构微服务体系可以互联互通。同时,它还定义了服务元信息格式和服务治理具体能力,描述这些能力所要达到的效果。OpenSergo的架构包括控制面和通信协议以及数据面。原创 2023-12-21 23:21:24 · 2449 阅读 · 30 评论 -
Seata使用详解
分布式事务是指参与事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点上。这允许多个独立的事务资源参与到全局的事务中。在分布式事务中,不同开发商开发的事务参与者必须支持一种标准协议,才能实现分布式的事务。这要求在跨异类的事务中识别资源的事务,因此,分布式事务问题也叫分布式数据一致性问题,简单来说就是如何在分布式场景中保证多个节点数据的一致性。分布式事务的产生核心原因在于存储资源的分布性。原创 2023-12-19 23:58:44 · 1880 阅读 · 45 评论 -
CompleteFuture与Future的比较
CompletableFuture是Java 8提供的一种基于Future的异步编程的实现。它不仅可以代表异步计算的结果,还能够定义它完成之后的回调函数。它的实现在java.util.concurrent.CompletableFuture的包内。CompletableFuture的实现涉及到JDK 8的几个新特性,如Lambda、Stream、线程池等,它允许把任务池、线程池和阻塞队列组合在一起,使得开发者可以更加简单地实现异步编程,对程序的执行性能也带来了一定的提升。原创 2023-12-18 23:51:12 · 2083 阅读 · 36 评论 -
Java中Exception的使用方法
在Java中,异常(Exception)是一种特殊类型的对象,表示程序运行过程中发生的意外或错误情况。异常通常是由程序中的错误、非法操作或外部因素引起的。在Java中,异常处理是通过使用try-catch语句块来捕获和处理异常的。受检查异常(Checked Exception)和运行时异常(RuntimeException)。受检查异常(Checked Exception):这类异常通常是可以预料的,并且在编译时被检查。程序员可以通过使用try-catch语句块来捕获和处理这些异常。原创 2023-12-18 23:28:25 · 1401 阅读 · 4 评论 -
Sentinel使用详解
Sentinel是阿里开源的一套用于服务容错的综合性解决方案。它以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来保护服务的稳定性。Sentinel承接了阿里巴巴近10年的双十一大促流量的核心场景,例如秒杀、消息削峰填谷、集群流量控制、实时熔断下游不可用应用等。核心库(Java客户端):能够运行于所有Java运行时环境,同时对Dubbo/SpringCloud等框架也有较好的支持。控制台(Dashboard):基于SpringBoot开发,打包后可以直接运行。原创 2023-12-14 02:11:36 · 2560 阅读 · 65 评论 -
JMS(Java Message Service)使用指南
JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。它是一种与厂商无关的API,用来访问消息收发系统消息,类似于JDBC(Java Database Connectivity)。在JMS中,消息是JMS中的一种类型对象,由两部分组成:报头和消息主体。消息主体则携带着应用程序的数据或有效负载。原创 2023-12-10 22:59:18 · 2265 阅读 · 2 评论 -
RabbitMQ使用指南
RabbitMQ是由Erlang语言开发的,基于AMQP(高级消息队列协议)协议实现的开源消息代理软件。它是一个实现了消息队列的中间件,遵循FIFO原则,用于应用程序之间的通信。RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有与代理接口通讯的客户端库。RabbitMQ在分布式系统开发中应用非常广泛,可以提高系统响应速度、异步处理任务、服务解耦、消除峰值等。原创 2023-12-08 23:45:00 · 626 阅读 · 0 评论 -
CopyOnWriteArraySet怎么用
CopyOnWriteArraySet是一个线程安全的无序集合,它基于“写时复制”的思想实现。它继承自AbstractSet,可以将其理解成线程安全的HashSet。CopyOnWriteArraySet在读取操作比较频繁、写入操作相对较少的情况下可以提高程序的性能和可靠性。它的线程安全机制和CopyOnWriteArrayList一样,是通过volatile和互斥锁实现的。原创 2023-12-07 22:15:50 · 1596 阅读 · 27 评论 -
CopyOnWriteArrayList怎么用
CopyOnWriteArrayList 是一个线程安全的ArrayList,它使用了一种称为“写时复制”(Copy-on-Write)的策略来保证线程安全。在CopyOnWriteArrayList中,每个元素都存储在一个数组中。当一个线程要对数组进行修改(例如添加、删除元素)时,它会首先复制一份当前数组的副本,对副本进行修改,然后将新的数组替换掉旧的数组。这样做的好处是,其他线程在读取数组时始终会看到一个一致的、不会改变的数组,从而避免了线程间的竞争条件。原创 2023-12-05 01:48:00 · 1643 阅读 · 34 评论 -
java中的String.format()方法详解
是 Java 中的一个字符串格式化方法,它用于生成指定格式的字符串。这个方法可以接受一个或多个参数,并将它们按照指定的格式插入到字符串中。它使用了类似于 C 语言中的printf函数的语法。其中,format是一个包含格式说明符的字符串,用于指定输出的格式,args是一个或多个要插入到格式字符串中的参数。// 输出:My name is John and I am 25 years old在这个示例中,%s是一个字符串格式说明符,表示要插入一个字符串;%d是一个整数格式说明符,表示要插入一个整数。原创 2023-11-24 23:27:59 · 12490 阅读 · 0 评论 -
Lettuce使用详解
Lettuce 是一个高级的、线程安全的 Redis 客户端,用于与 Redis 数据库交互。它提供了许多方法来配置连接池的参数,例如最大连接数、最小空闲连接数、连接超时等。Lettuce 适用于任何需要与 Redis 交互的 Java 项目,它具有简单易用的 API,支持多种数据类型,包括字符串、哈希表、列表、集合和有序集合等。Lettuce 还支持高级功能,如发布/订阅、事务和管道等。原创 2023-11-23 23:38:21 · 2071 阅读 · 5 评论 -
RedisTemplate使用详解
RedisTemplate是Spring Data Redis的核心类,它提供了对Redis访问的支持。这个类在给定对象和Redis存储中的底层二进制数据之间执行自动序列化(Serialization)和反序列化(Deserialization)操作。RedisTemplate的底层通过RedisConnectionFactory对多种Redis驱动进行集成,上层通过RedisOperations提供丰富的API,并结合Spring基于泛型的bean注入,为开发提供了极大的便利。原创 2023-11-22 23:02:08 · 2179 阅读 · 46 评论 -
AVL树你需要了解一下
AVL树是一种自平衡二叉查找树,它得名于发明者G.M.Adel’son-Vel’skii和E.M.Landis。AVL树的特点是任何节点的两个子树的高度最大差别为1,因此它也被称为高度平衡树。在AVL树中,每个节点的平衡因子只有-1、0、1三种,通过旋转操作来保持树的平衡。AVL树的平衡因子定义为每个节点的左右子树的高度之差的绝对值。在AVL树中,每个节点的左子树和右子树的高度差不会超过1。因此,AVL树在插入和删除操作时可能需要通过一次或多次旋转来重新平衡树结构。原创 2023-11-21 00:46:07 · 193 阅读 · 2 评论 -
红黑树你需要了解一下
红黑树(Red Black Tree)是一种自平衡二叉查找树,也是计算机科学中用到的一种数据结构。红黑树的特点是在进行插入和删除操作时,通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。红黑树最早由Rudolf Bayer在1972年发明,当时被称为平衡二叉B树(symmetric binary B-trees)。后来在1978年被Leo J. Guibas和Robert Sedgewick修改为现在的“红黑树”。原创 2023-11-20 01:42:15 · 544 阅读 · 2 评论 -
Java21新增特性
Java 21是Java平台的一个新版本,于2023年9月19日由Oracle公司正式发布。这个版本包含了数千个性能、稳定性和安全性更新,以及几十个新功能和增强。其中,15个增强被赋予了自己的JDK增强提案(JEP),涵盖了六个预览功能和一个孵化器功能。Oracle为Java 21提供了至少八年的长期支持,这使得组织能够以最小的维护成本将应用程序更长时间地保持在生产环境中,并可以按照自己的节奏进行迁移。原创 2023-11-20 00:26:18 · 726 阅读 · 0 评论 -
Java20新增特性
Java 20是在2023年3月21日发布的,发布公司是甲骨文。这是标准Java的最新升级,提供了一系列的新特性和改进,以帮助开发者更高效地编写和维护代码。Java 20版本虽然带来了很多新的特性和改进,但也存在一些问题。其中最主要的问题是,由于Java 20的发布时间比较晚,导致很多开发者还没有来得及适应这个新版本,同时一些开发工具和框架也还没有完全支持Java 20的特性。此外,Java 20中的一些新特性也可能会带来一些不兼容性和复杂性,需要开发者额外的学习和适应。原创 2023-11-19 00:04:08 · 1369 阅读 · 0 评论 -
Spring中ContextLoaderListener的作用
ContextLoaderListener是Spring框架中一个非常重要的监听器,它提供了在Web应用程序启动时载入Ioc容器(Spring容器)的功能。原创 2016-03-10 23:07:36 · 992 阅读 · 2 评论 -
RMI协议详解
RMI(Remote Method Invocation,远程方法调用)是Java中的一种远程通信协议,用于实现跨网络的对象方法调用。RMI协议基于Java的分布式计算,可以让客户端程序调用远程服务器上的方法,使得分布在不同机器上的对象能够通过网络进行通信。RMI协议的实现基于Java的远程对象技术,其中远程对象需要继承java.rmi.UnicastRemoteObject类,并定义远程方法。原创 2023-11-18 00:01:35 · 2151 阅读 · 0 评论 -
Java19新增特性
前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15、Java16、Java17、Java18 的特性进行了介绍,对应的文章如下Java9新增特性Java10新增特性Java11新增特性Java12新增特性Java13新增特性Java14新增特性Java15新增特性Java16新增特性Java17新增特性Java18新增特性今天我们来一起看一下Java19这个版本的一些重要信息。原创 2023-11-15 00:02:06 · 1705 阅读 · 0 评论 -
Java18新增特性
前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15、Java16、Java17 的特性进行了介绍,对应的文章如下Java9新增特性Java10新增特性Java11新增特性Java12新增特性Java13新增特性Java14新增特性Java15新增特性Java16新增特性Java17新增特性今天我们来一起看一下Java18这个版本的一些重要信息Java 18 是Java的一个新版本,于2022年3月22日正式发布。原创 2023-11-14 00:39:36 · 1020 阅读 · 3 评论 -
Java17新增特性
前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15、Java16 的特性进行了介绍,对应的文章如下Java9新增特性Java10新增特性Java11新增特性Java12新增特性Java13新增特性Java14新增特性Java15新增特性Java16新增特性今天我们来一起看一下Java17这个版本的一些重要信息Java 17 是 Java 平台的一个新版本,于 2021 年 9 月 14 日发布。原创 2023-11-14 00:02:10 · 1599 阅读 · 0 评论 -
Java16新增特性
前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14、Java15 的特性进行了介绍,对应的文章如下Java9新增特性Java10新增特性Java11新增特性Java12新增特性Java13新增特性Java14新增特性Java15新增特性今天我们来一起看一下Java16这个版本的一些重要信息Java 16是Java的一个新版本,于2021年9月14日发布。这个版本引入了一些新的特性和改进,让Java开发者们又有了更多的工具和选项。原创 2023-11-13 22:17:23 · 1016 阅读 · 0 评论 -
Java15新增特性
前面的文章,我们对Java9、Java10、Java11、Java12 、Java13、Java14 的特性进行了介绍,对应的文章如下Java9新增特性Java10新增特性Java11新增特性Java12新增特性Java13新增特性Java14新增特性今天我们来一起看一下Java15这个版本的一些重要信息Java 15 是 Java 平台的一个版本,于2021年9月14日发布。这个版本是在Java 11之后的第三个长期支持版本,并被定位为 “功能丰富” 的版本。原创 2023-11-13 00:01:06 · 1036 阅读 · 1 评论 -
Java14新增特性
前面的文章,我们对Java9、Java10、Java11、Java12 、Java13的特性进行了介绍,对应的文章如下Java9新增特性Java10新增特性Java11新增特性Java12新增特性Java13新增特性今天我们来一起看一下Java14这个版本的一些重要信息Java 14 于2020年3月17日发布。静态方法和接口方法中的局部变量类型推断:在Java 14中,静态方法和接口方法中的局部变量类型可以根据上下文自动推断。原创 2023-11-12 17:30:42 · 1237 阅读 · 0 评论 -
Java13新增特性
前面的文章,我们对Java9、Java10、Java11、Java12 的特性进行了介绍,对应的文章如下Java9新增特性Java10新增特性Java11新增特性Java12新增特性今天我们来一起看一下Java13这个版本的一些重要信息Java 13 是在 2019 年 9 月 17 日正式发布的。原创 2023-11-12 17:02:27 · 968 阅读 · 0 评论 -
Java12新增特性
前面的文章,我们对Java9、Java10、Java11的特性进行了介绍,对应的文章如下Java9新增特性Java10新增特性Java11新增特性今天我们来介绍一下Java12版本的新增特性Java 12是Java SE的第12个版本,于2019年3月19日发布。这个版本主要为了帮助开发人员更加高效的进行编程工作,提高Java的性能和稳定性,并增加新特性和API。Java 12的维护时间主要分为两个阶段,公共更新阶段和维护更新阶段。原创 2023-11-11 01:18:10 · 807 阅读 · 4 评论 -
Java11新增特性
在前面的文章中,我们已经介绍了Java9的新增特性和Java10的新增特性,下面我们书接上文,来介绍一下Java11的新增特性Java 11 是 Java 平台的最新版本,于2018年9月25日发布。这个版本是自Java 8以来最重要的更新之一,因为它引入了许多新功能和改进,以帮助开发者更高效地编写和维护代码。Java 11 是长期支持版本,也被称为LTS版本。这个版本将得到 OpenJDK 社区的长期支持,直至 2023 年 9 月。原创 2023-11-11 00:23:15 · 1016 阅读 · 0 评论 -
Java10新增特性
改进的异常处理:Java 10引入了新的异常处理机制,包括新的异常类型java.lang.invoke.MethodHandleException和java.lang.invoke.MethodHandles.LookupException。JDK移除弃用的API:Java 10移除了JDK中一些过时的和弃用的API,包括javax.imageio、javax.sound.sampled和javax.print等包中的一些类和方法。Java 10引入了新的垃圾收集器G1的改进,以提高吞吐量和延迟性能。原创 2023-11-10 09:14:39 · 2298 阅读 · 9 评论 -
Java9新增特性
以上是Java 9的一些主要新增特性,这些特性使得Java语言在性能、易用性和可维护性方面都得到了进一步的提升。原创 2023-11-10 01:02:19 · 1069 阅读 · 0 评论 -
Java对象的浅拷贝
Java对象的浅拷贝(Shallow Copy)是指创建一个新的对象,并复制原始对象的所有非静态字段到新对象。如果字段是基本类型,那么复制的就是基本类型的值。如果字段是引用类型,那么复制的就是引用,而不是引用的对象本身。也就是说,如果原始对象中包含其他对象的引用,那么拷贝后新对象的引用与原始对象引用相同,指向同一个对象。这就是为什么称之为“浅”拷贝,因为它只复制了对象的引用,而没有实际创建新的对象。原创 2023-11-09 09:19:13 · 915 阅读 · 2 评论 -
Java对象的深拷贝
在Java中,对象的深拷贝是指创建一个新的对象,并复制原始对象的所有字段和属性,包括嵌套对象。深拷贝确保原始对象和拷贝对象是完全独立的,对其中一个对象的修改不会影响另一个对象。除了Java的深拷贝,还有其它的Java相关的知识,欢迎大家学习:[玫瑰]Java基本数据类型的初始值[玫瑰]Java中Deque接口方法解析[玫瑰]List中set方法和add方法的区别。原创 2023-11-09 00:33:29 · 3908 阅读 · 2 评论 -
Vert.x学习笔记-Vert.x的基本处理单元Verticle
Verticle是Vert.x的基本处理单元,Vert.x应用程序中存在着处理各种事件的处理单元,比如负责HTTP API响应请求的处理单元负责数据库存取的处理单元负责向第三方发送请求的处理单元。Verticle就是对这些功能单元的封装,Verticle可被部署,有自己的生命周期,Verticle是Vert.x中构建异步事件处理程序及相关业务逻辑的基础。/*** 获取一个Vert.x实例的引用用来发布当前的verticle/*** 通过Vert.x实例和上下文来初始化一个Verticle。原创 2023-11-04 20:34:42 · 2242 阅读 · 14 评论 -
LinkedList详解-Deque接口链表实现方案
LinkedList实现了List和Deque接口。List是一个有序的集合,可以包含重复元素,它提供了在列表的头部、尾部或指定位置进行插入、删除和查找等操作的方法。Deque是双端队列,提供了在列表的头部和尾部进行插入和删除操作的方法。通过实现这两个接口,LinkedList可以灵活地用于各种不同的场景,并且可以方便地与其他使用这两个接口的代码进行交互。在编程中用于存储和操作一系列有序的元素。它是由节点组成的链表,每个节点包含一个数据元素和一个指向下一个节点的指针。原创 2023-11-03 23:01:05 · 3649 阅读 · 7 评论 -
okhttp3使用详解
OkHttp是一个非常强大的HTTP客户端!它可以帮助我们发送请求和接收响应,简直就像一个魔法小精灵。你知道吗,它可以在网络请求中帮助我们处理各种复杂的情况,比如网络连接、超时、重试等等。有了它,我们可以更加轻松地与网络进行交互啦!这款开源的网络请求框架,由Square公司设计研发并开源,可以在Java和Kotlin中使用。它适用于Android和HTTP网络请求,几乎已经占据了所有的网络请求操作。原创 2023-11-03 00:07:17 · 1149 阅读 · 0 评论 -
ConcurrentLinkedDeque详解-Deque接口链表实现方案
ConcurrentLinkedDeque是一种基于链表实现的线程安全的双端队列Deque。它提供了高效的并发访问和操作,适用于高并发场景下的数据共享和交互。原创 2023-11-01 22:55:16 · 2241 阅读 · 7 评论