- 博客(655)
- 资源 (30)
- 收藏
- 关注
原创 【java21】java21新特性之记录模式
记录模式是Java语言中的一个新特性,旨在简化和标准化对记录类实例的解构,允许程序员更加方便、安全地访问和操作记录类的组件。记录类本身是在Java 14中引入的,作为一种简化不可变数据类定义的方式。记录模式通过编译时检查确保访问的正确性,避免错误的字段访问或类型不匹配问题,并使代码更加简洁明了。
2024-10-12 10:49:51 900
原创 【java21】java21新特性之顺序集合
Sequenced Collections是一种新的集合类型,它提供了一个统一的接口来表示具有定义好的出现顺序的集合。每个Sequenced Collection都有一个明确定义的第一个元素、第二个元素,依此类推,直到最后一个元素。它还提供了一套统一的API来访问集合的第一个和最后一个元素,并以相同的顺序处理集合中的元素。有序性:每个Sequenced Collection都保持元素插入的顺序。
2024-10-12 10:48:29 1316
原创 【java21】java21新特性之虚拟线程
Java21中引入的虚拟线程(Virtual Threads)是一项重要的新特性,它为Java并发编程带来了革命性的改进。虚拟线程,也称为用户模式线程(user-mode threads)或纤程(fibers),是Java21中引入的一种轻量级线程实现方式。这一特性旨在简化并发编程,提供更好的可扩展性,并大幅提升Java的并发能力。随着企业应用的规模不断壮大,大量的网络请求或读写I/O场景越来越多,虚拟线程的引入对于I/O密集型程序的性能带来了大幅度的提升。
2024-10-08 10:44:48 6849
原创 【java21】java21新特性之switch模式匹配
在Java18之前,模式匹配只能使用在if语句中,而在Java18及更高版本中,switch语句支持类型模式的匹配。这意味着开发者可以直接在case标签中匹配对象的类型,而无需在case语句内部进行显式的类型检查和转换。例如,可以直接匹配并处理Integer、String等类型的对象。
2024-10-08 10:34:41 9006
原创 【java21】java21新特性之JavaDoc中支持代码片段
在Java18之前,已经支持在JavaDoc中引入代码片段,这样可以在某些场景下更好的展示描述信息,但是之前的支持功能有限,比如我想高亮代码片段中的某一段代码是无能为力的。现在Java18优化了这个问题,增加了@snippet来引入更高级的代码片段。
2024-09-24 16:33:34 6840
原创 【java21】java21新特性之简单的Web服务器jwebserver
jwebserver是Java 18中引入的一个全新功能点,它允许用户通过命令行工具快速启动一个提供静态资源访问的迷你Web服务器。Java18中的jwebserver是一个实用且易于使用的静态Web服务器,它为开发者提供了一个便捷的测试和教育工具。尽管其功能相对简单,但在特定场景下(如快速测试静态页面)却非常有用。其实在如Python、Ruby、PHP、Erlang等许多语言都提供了开箱即用的Web服务器,可见一个简单的Web服务器是一个常见的需求,Java一直没有这方面的支持,现在可以了。
2024-09-24 16:31:40 565
原创 【java21】java21新特性之默认UTF-8字符编码
在Java18之前,Java平台的默认字符集由主机操作系统和语言环境决定,这导致了跨平台应用中字符集不一致的问题。Java18将UTF-8设置为默认字符集,这一改变简化了文本处理,并避免了因地区设置不同而可能导致的乱码问题。由于默认使用UTF-8编码,Java 18简化了跨平台开发过程,减少了因字符集不一致而导致的错误和复杂性。开发者不再需要显式地设置文件编码或命令行参数来确保正确的字符编码,这提高了开发效率。
2024-09-23 11:08:02 445
原创 【java17】java17新特性之Stream.toList()
UnmodifiableList是Java中的一个类,用于创建不可修改的列表。它实际上是通过Collections.unmodifiableList()方法创建的。一旦列表被创建为不可修改的,就无法对其进行添加、删除或修改元素的操作。这种列表对于保护数据不被意外修改或者共享数据而不希望被修改很有用。当你想要确保某个列表在传递给其他代码时不会被修改时,可以使用UnmodifiableList来包装你的列表。
2024-09-23 09:15:25 489
原创 【java17】java17新特性之日期周期格式化
在Java 17中,确实引入了新的日期时间格式化模式,即模式字母 B,它用于表示一天中的时间段,如上午或下午。这个模式是根据Unicode标准CLDR(Common Locale Data Repository)来定义一天中的时间段的,它可以输出如“上午”、“下午”、“晚上”等时间段标识。可见咱们的晚上是包括英美国家的evening和night的。在英语语言环境下,设置。在中文语言环境下,设置。
2024-08-27 15:30:35 1031 1
原创 【java17】java17新特性之空指针友好提示
在Java 17及之前的版本中,关于空指针异常(NullPointerException)的友好提示主要依赖于开发者在编写代码时的注意和检查,而不是Java语言本身直接提供的特性。然而,从Java 14开始,Java平台引入了一些改进,旨在使空指针异常(NPE)的调试变得更加容易,这可以视为一种“友好提示”的间接实现。
2024-08-27 15:29:22 615
原创 【OpenFeign】OpenFeign指定url方式调用
OpenFeign一般是结合注册中心一起使用的,也就是可以通过提供服务的名称而不是url来完成对目标服务的访问。但是出于本地调试的需要,或者考虑到一些简单的服务可能并不需要依赖注册中心,所以本篇我们就讲解一下OpenFeign直接通过目标服务的url进行调用的方式。
2024-08-23 11:19:24 1015
原创 【OpenFeign】XXX.FeignClientSpecification错误解决与分析
在一个项目中,如果有多个FeignClient客户端指向同一个微服务,项目启动的过程中可能会抛出如下的异常。
2024-08-23 11:15:42 448
原创 【java17】java17新特性之密封类
Java 17中的密封类(Sealed Classes)是一个重要的新特性,它提供了一种机制来限制哪些类可以继承一个给定的类或者实现一个给定的接口。这个特性通过sealed和permits关键字来实现,旨在增强类型安全性,简化代码结构,并在编译时进行更精确的检查。密封类可以让我们更好的控制哪些类可以对我定义的类进行扩展。密封类可能对于框架或中间件的开发者更有用。在这之前一个类要么是可以被extends的,要么是final的,只有这两种选项。
2024-08-16 10:37:37 377
原创 【java17】java17新特性之record关键字
Java 17中引入的record关键字是一个重要的新特性,主要用于简化不可变数据类的定义。这个特性最初在Java 14中作为预览特性出现,并在后续版本中不断完善,最终在Java 17中成为了标准的一部分。
2024-08-16 10:36:34 427
原创 【java17】java17新特性之String的新API
translateEscapes()将Java转义序列转换为相应的字符,并返回转换后的字符串。formatted()相当于String的format()方法,支持文本块字符串中的格式化。stripIndent()从字符串的开头和结尾删除附带的空格,每行都进行相同的缩进。
2024-08-02 10:48:42 682
原创 【java17】java17新特性之instanceof模式匹配
在Java 14中引入了一个预览特性,即“模式匹配增强”(Pattern Matching for instanceof),这个特性在Java 16中继续作为预览特性,并在Java 17中成为正式特性。这个特性改进了instanceof的使用方式,允许在检查对象类型的同时进行类型转换,并且可以直接在条件表达式的结果中使用这个转换后的对象。
2024-08-02 10:48:24 1085
原创 【java17】java17新特性之switch表达式
switch表达式也可以返回一个值,比如上面的例子我们可以让switch返回一个字符串来表示我们要打印的文本。如果你想在case里想做不止一件事,比如在返回之前先进行一些计算或者打印操作,可以通过大括号来作为case块,最后的返回值使用关键字yield进行返回。Java17版本中switch表达式将允许switch有返回值,并且可以直接作为结果赋值给一个变量,等等一系列的变化。下面有一个switch例子,依赖于给定的枚举值,执行case操作,故意省略break。,并且switch表达式不需要break。
2024-07-11 15:55:20 6503
原创 【java17】java17新特性之文本块
在Java中,文本块是多行字符串文字。这意味着我们不需要陷入显式的行终止符,字符串连接以及分隔符的混乱局面,而这些分隔符通常用于编写普通的字符串文字。Java文本块在Java13中可用(JEP355)和Java14(JEP368)作为预览函数。它计划成为Java15的标准函数(JEP378)。
2024-07-11 15:54:00 4272
原创 【java12】Collectors和Completionstage的新API
Java12向Stream API的Collectors中引入了一种新方法,可以对集合执行两种不同的操作,然后合并结果。
2024-07-09 16:39:22 5611
原创 【java12】java12新特性介绍
Shenandoah是Java12引入的一种新的垃圾收集算法,设计目标是保证低延迟,可以将暂停时间控制在10毫秒以内。Shenandoah的特点在于,它可以在整个堆上同时进行垃圾收集,无需在单独的年轻代和老年代之间划分内存。此外,Shenandoah的暂停时间与堆大小无关,意味着无论堆的大小如何,它都能提供稳定的暂停时间。
2024-07-09 15:15:50 1261
原创 【java12】java12新特性之String的新API
Java12在String类上引入了一些新的方法,这些新方法为字符串操作提供了更多的便利和灵活性。
2024-07-02 14:40:02 16107
原创 【java12】java12新特性之switch表达式
Java12引入了对switch语句的增强,允许在switch语句中使用表达式来代替传统的语句列表。这样可以使得代码更加简洁和易读。switch表达式也是作为预览语言功能的第一个语言改动被引入新版Java中来的,这是一种引入新特性的测试版的方法。通过这种方式,能够根据用户反馈进行升级、更改,如果没有被很好的接纳,则可以完全删除该功能。预览功能的没有被包含在JavaSE规范中。也就是说:这不是一个正式的语法,是暂时进行测试的一种语法。
2024-07-02 14:38:42 16242
原创 【java12】java12新特性之NumberFormat的getCompactNumberInstance方法
Java12引入了一个新的方法,它是类的一个静态方法,用于获取CompactNumberFormat的实例。这个方法使得开发者能够以紧凑的格式(如“K”代表千,“M”代表百万等)来显示数字。通过指定不同的语言环境和样式,你可以轻松地适应不同的本地化需求。此外,通过自定义CompactNumberFormat,你还可以实现更灵活的数字格式化功能。
2024-06-28 09:56:37 11793
原创 【java12】java12新特性之File的mismatch方法
Java12引入了一个新的方法mismatch,它属于类。此方法用于比较两个文件的内容,并返回第一个不匹配字节的位置。如果两个文件完全相同,则返回-1。
2024-06-28 09:47:36 11555
原创 【MySQL】MySQL常用日期时间函数
MySQL提供了大量的日期和时间函数,这些函数用于在查询中处理和操作日期与时间值。参考官方文档:https://dev.mysql.com/doc/refman/8.4/en/date-and-time-functions.html。
2024-06-19 13:46:44 16515
原创 【Docker】Alpine镜像中安装telnet
Alpine镜像的广泛应用得益于其小巧、安全、易于定制和活跃的社区支持等特点,特别是在容器化应用场景下,它成为了首选的基础镜像。使用Alpine镜像可以带来多个好处,包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。此外,Alpine Linux提供了自己的包管理工具apk,使得用户可以通过apk命令直接查询和安装各种软件。Alpine镜像也适用于更多常用场景,是一个优秀的可以适用于生产的基础系统/环境。
2024-06-19 13:45:19 16114
原创 【java11】java11新特性之嵌套类
Java 11在嵌套类方面主要关注的是通过JEP 181来改进访问控制,解决之前版本中存在的权限不一致问题。
2024-06-06 17:46:42 13521
原创 【java11】java11新特性之Predicate接口API改进
Java 11向Predicate接口引入了新方法not()来否定类似于negate方法的现有谓词,进一步增强了其功能,使得条件判断和组合更加灵活和方便。
2024-06-06 17:43:59 10761
原创 【java11】java11新特性之Optional类API改进
Java 11向Optional类引入了新方法isEmpty()来检查值是否存在。如果值存在,则isEmpty()返回false,否则返回true。它可以用作isPresent()方法的替代方法,该方法通常需要否定以检查值是否不存在。
2024-06-06 17:42:56 8637
原创 【java11】java11新特性之文件API改进
Java 11引入了一些新的文件API特性,增强了对文件操作的支持。这些新特性主要集中在java.nio.file包中。
2024-06-06 17:41:54 11863
原创 【java11】java11新特性之免编译启动
免编译启动即允许开发者在无需编译的情况下直接运行Java单文件源代码。这一特性极大地简化了开发过程中的某些步骤,特别是对于快速测试代码片段或学习Java语言的初学者来说,更加方便快捷。
2024-06-05 14:29:03 7017
原创 【java11】java11新特性之标准HttpClient
异步和流式处理:HttpClient支持异步请求和响应,有助于提高性能和效率。它还提供流式处理的能力,可以更有效地处理大量数据。可插拔的身份验证:HttpClient可以轻松实现各种身份验证机制,为应用程序提供更强的安全性。支持WebSocket:HttpClient支持WebSocket通信,使得在Java应用程序中实现实时通信变得更加容易。定制化:HttpClient允许用户根据需要自定义请求和响应的处理方式,提供更大的灵活性。
2024-06-03 14:15:16 8418
原创 【java11】java11新特性之增强String的API
Java11在String类上引入了一系列新的API增强,这些改进显著提升了开发者在处理字符串时的便捷性和效率。
2024-06-03 14:14:03 10263
原创 【java11】java11新特性之局部变量类型推断升级
局部变量类型推断是java10开始新增的新特性,java11中对局部变量推断进行了升级,var支持添加注解的语法格式,Java10中是无法实现的,在Java11中加入了这样的语法。
2024-06-03 14:12:54 8624
原创 【java11】java11新特性介绍
Java11于2018年9月25日正式发布,Java11是继Java8之后的第一个LTS(Long-Term-Support)长期支持功能版本,与之前的版本(Java9和Java10)不同,它提供了长达3年的维护期,旨在提供稳定且长期的技术支持。Java11的发布也标志着Java版本发布周期的调整,即从原来的每两年发布一个大版本变为每六个月发布一次,其中每年3月和9月为大版本发布节点。Java11的技术支持将持续至2023年9月,而对应的补丁和安全警告等支持将持续至2026年。
2024-06-03 14:11:54 13555
原创 【java10】集合中新增copyof创建只读集合
在Java中,集合(如List、Set、Map等)是编程中常用的数据结构。然而,在某些场景下,我们可能希望集合中的数据是只读的,即不允许修改集合中的元素。在Java8及之前,要实现这样的功能,我们通常需要使用Collections.unmodifiableList()等方法来创建集合的不可修改视图。在Java9中引入了of()方法来创建只读集合,在Java10中引入了copyOf()方法,为我们提供了更简洁、更直观的方式来创建只读集合。
2024-05-29 11:02:59 11325
原创 【java10】java10新特性之局部变量类型推断
Java10是Java发布日历中的一个主要版本,它于2018年3月10日发布。在Java10中,Oracle将Java发布节奏更改为新模型,6个月发布节奏和Oracle Java SE产品的LTS模型。LTS模型代表长期支持模型。从Java10开始,Oracle每6个月发布一个新版本的Java,每个版本包含一两个主要功能。Oracle使用版本序列概念。每个发布系列计划为6个月。在此时间线内开发的功能将在发布中发布,否则功能将移至下一个版本系列。
2024-05-17 17:28:09 16757
原创 【java9】java9新特性概述
经过4次的跳票,历经曲折的Java9最终在2017年9月21日发布。因为里面加入的模块化系统,在最初设想的时候并没有想过那么复杂,花费的时间超出预估时间。距离java8大约三年时间。Java9提供了超过150项新功能特性,包括备受期待的模块化系统、可交互的REPL工具:jshell、JDK编译工具、语法层面的改变、Java公共API和私有代码,以及安全增强、扩展提升、性能管理改善等。可以说Java 9是一个庞大的系统工程,完全做了一个整体改变。
2024-05-13 17:44:39 18183
原创 【MySQL】分组排序取每组第一条数据
需求:MySQL根据某一个字段分组,然后组内排序,最后每组取排序后的第一条数据。要求:查询出各科分数最高的学生姓名。
2024-05-13 16:09:50 12220 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人