- 博客(639)
- 资源 (30)
- 收藏
- 关注
原创 【java17】java17新特性之switch表达式
switch表达式也可以返回一个值,比如上面的例子我们可以让switch返回一个字符串来表示我们要打印的文本。如果你想在case里想做不止一件事,比如在返回之前先进行一些计算或者打印操作,可以通过大括号来作为case块,最后的返回值使用关键字yield进行返回。Java17版本中switch表达式将允许switch有返回值,并且可以直接作为结果赋值给一个变量,等等一系列的变化。下面有一个switch例子,依赖于给定的枚举值,执行case操作,故意省略break。,并且switch表达式不需要break。
2024-07-11 15:55:20
1249
原创 【java17】java17新特性之文本块
在Java中,文本块是多行字符串文字。这意味着我们不需要陷入显式的行终止符,字符串连接以及分隔符的混乱局面,而这些分隔符通常用于编写普通的字符串文字。Java文本块在Java13中可用(JEP355)和Java14(JEP368)作为预览函数。它计划成为Java15的标准函数(JEP378)。
2024-07-11 15:54:00
987
原创 【java12】Collectors和Completionstage的新API
Java12向Stream API的Collectors中引入了一种新方法,可以对集合执行两种不同的操作,然后合并结果。
2024-07-09 16:39:22
1624
原创 【java12】java12新特性介绍
Shenandoah是Java12引入的一种新的垃圾收集算法,设计目标是保证低延迟,可以将暂停时间控制在10毫秒以内。Shenandoah的特点在于,它可以在整个堆上同时进行垃圾收集,无需在单独的年轻代和老年代之间划分内存。此外,Shenandoah的暂停时间与堆大小无关,意味着无论堆的大小如何,它都能提供稳定的暂停时间。
2024-07-09 15:15:50
1161
原创 【java12】java12新特性之String的新API
Java12在String类上引入了一些新的方法,这些新方法为字符串操作提供了更多的便利和灵活性。
2024-07-02 14:40:02
16040
原创 【java12】java12新特性之switch表达式
Java12引入了对switch语句的增强,允许在switch语句中使用表达式来代替传统的语句列表。这样可以使得代码更加简洁和易读。switch表达式也是作为预览语言功能的第一个语言改动被引入新版Java中来的,这是一种引入新特性的测试版的方法。通过这种方式,能够根据用户反馈进行升级、更改,如果没有被很好的接纳,则可以完全删除该功能。预览功能的没有被包含在JavaSE规范中。也就是说:这不是一个正式的语法,是暂时进行测试的一种语法。
2024-07-02 14:38:42
15761
原创 【java12】java12新特性之NumberFormat的getCompactNumberInstance方法
Java12引入了一个新的方法,它是类的一个静态方法,用于获取CompactNumberFormat的实例。这个方法使得开发者能够以紧凑的格式(如“K”代表千,“M”代表百万等)来显示数字。通过指定不同的语言环境和样式,你可以轻松地适应不同的本地化需求。此外,通过自定义CompactNumberFormat,你还可以实现更灵活的数字格式化功能。
2024-06-28 09:56:37
11736
原创 【java12】java12新特性之File的mismatch方法
Java12引入了一个新的方法mismatch,它属于类。此方法用于比较两个文件的内容,并返回第一个不匹配字节的位置。如果两个文件完全相同,则返回-1。
2024-06-28 09:47:36
11478
原创 【MySQL】MySQL常用日期时间函数
MySQL提供了大量的日期和时间函数,这些函数用于在查询中处理和操作日期与时间值。参考官方文档:https://dev.mysql.com/doc/refman/8.4/en/date-and-time-functions.html。
2024-06-19 13:46:44
16430
原创 【Docker】Alpine镜像中安装telnet
Alpine镜像的广泛应用得益于其小巧、安全、易于定制和活跃的社区支持等特点,特别是在容器化应用场景下,它成为了首选的基础镜像。使用Alpine镜像可以带来多个好处,包括镜像下载速度加快,镜像安全性提高,主机之间的切换更方便,占用更少磁盘空间等。此外,Alpine Linux提供了自己的包管理工具apk,使得用户可以通过apk命令直接查询和安装各种软件。Alpine镜像也适用于更多常用场景,是一个优秀的可以适用于生产的基础系统/环境。
2024-06-19 13:45:19
15958
原创 【java11】java11新特性之嵌套类
Java 11在嵌套类方面主要关注的是通过JEP 181来改进访问控制,解决之前版本中存在的权限不一致问题。
2024-06-06 17:46:42
13437
原创 【java11】java11新特性之Predicate接口API改进
Java 11向Predicate接口引入了新方法not()来否定类似于negate方法的现有谓词,进一步增强了其功能,使得条件判断和组合更加灵活和方便。
2024-06-06 17:43:59
10689
原创 【java11】java11新特性之Optional类API改进
Java 11向Optional类引入了新方法isEmpty()来检查值是否存在。如果值存在,则isEmpty()返回false,否则返回true。它可以用作isPresent()方法的替代方法,该方法通常需要否定以检查值是否不存在。
2024-06-06 17:42:56
8589
原创 【java11】java11新特性之文件API改进
Java 11引入了一些新的文件API特性,增强了对文件操作的支持。这些新特性主要集中在java.nio.file包中。
2024-06-06 17:41:54
11810
原创 【java11】java11新特性之免编译启动
免编译启动即允许开发者在无需编译的情况下直接运行Java单文件源代码。这一特性极大地简化了开发过程中的某些步骤,特别是对于快速测试代码片段或学习Java语言的初学者来说,更加方便快捷。
2024-06-05 14:29:03
6912
原创 【java11】java11新特性之标准HttpClient
异步和流式处理:HttpClient支持异步请求和响应,有助于提高性能和效率。它还提供流式处理的能力,可以更有效地处理大量数据。可插拔的身份验证:HttpClient可以轻松实现各种身份验证机制,为应用程序提供更强的安全性。支持WebSocket:HttpClient支持WebSocket通信,使得在Java应用程序中实现实时通信变得更加容易。定制化:HttpClient允许用户根据需要自定义请求和响应的处理方式,提供更大的灵活性。
2024-06-03 14:15:16
8262
原创 【java11】java11新特性之增强String的API
Java11在String类上引入了一系列新的API增强,这些改进显著提升了开发者在处理字符串时的便捷性和效率。
2024-06-03 14:14:03
10170
原创 【java11】java11新特性之局部变量类型推断升级
局部变量类型推断是java10开始新增的新特性,java11中对局部变量推断进行了升级,var支持添加注解的语法格式,Java10中是无法实现的,在Java11中加入了这样的语法。
2024-06-03 14:12:54
8577
原创 【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
13384
原创 【java10】集合中新增copyof创建只读集合
在Java中,集合(如List、Set、Map等)是编程中常用的数据结构。然而,在某些场景下,我们可能希望集合中的数据是只读的,即不允许修改集合中的元素。在Java8及之前,要实现这样的功能,我们通常需要使用Collections.unmodifiableList()等方法来创建集合的不可修改视图。在Java9中引入了of()方法来创建只读集合,在Java10中引入了copyOf()方法,为我们提供了更简洁、更直观的方式来创建只读集合。
2024-05-29 11:02:59
11260
原创 【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
16722
原创 【java9】java9新特性概述
经过4次的跳票,历经曲折的Java9最终在2017年9月21日发布。因为里面加入的模块化系统,在最初设想的时候并没有想过那么复杂,花费的时间超出预估时间。距离java8大约三年时间。Java9提供了超过150项新功能特性,包括备受期待的模块化系统、可交互的REPL工具:jshell、JDK编译工具、语法层面的改变、Java公共API和私有代码,以及安全增强、扩展提升、性能管理改善等。可以说Java 9是一个庞大的系统工程,完全做了一个整体改变。
2024-05-13 17:44:39
18156
原创 【MySQL】分组排序取每组第一条数据
需求:MySQL根据某一个字段分组,然后组内排序,最后每组取排序后的第一条数据。要求:查询出各科分数最高的学生姓名。
2024-05-13 16:09:50
10027
1
原创 【java9】Java9对InputStream类的改进
Java9在InputStream支持方面进行了一些改进,引入了新的API和功能,以提供更强大、更灵活的IO和网络编程能力。
2024-05-08 14:17:34
20412
原创 【java9】java9新特性之改进JavaDocs
Java9在JavaDocs方面的主要新特性是,其输出现在符合兼容HTML5标准。在之前的版本中,默认的HTML版本是 HTML4.01,但在Java9及之后的版本中,JavaDocs命令行工具将默认使用HTML5作为输出标记语言。这意味着,使用JavaDocs工具生成的文档将具有更现代、更丰富的样式和功能,同时保持与现有HTML5浏览器的兼容性。此外,JavaDocs的输出结构也保持不变,仍然由三个框架组成的结构构成,即使是以HTML5输出的Java帮助文档也保持相同的结构。
2024-05-07 20:06:05
4069
原创 【java9】java9新特性之内部类的钻石操作符
在Java中,钻石操作符(diamond operator)是一个语法糖,它用于在实例化泛型类时自动推断类型参数。这个操作符由一对尖括号组成,并且通常里面不留任何内容(即“钻石”为空)。使用钻石操作符可以简化代码,避免冗余的类型参数指定。
2024-04-30 15:35:00
5296
原创 【java8】Stream流对多个字段进行排序
在Java8中,你可以使用Stream接口的sorted()方法来对集合中的元素进行排序。这个方法接受一个Comparator对象作为参数,用于定义排序规则。如果你需要根据多个字段进行排序,你可以链式地调用thenComparing()或thenComparingInt()、thenComparingLong()、thenComparingDouble()等方法。
2024-04-30 15:32:20
11495
1
原创 【java9】java9新特性之模块化
Java9模块化是Java9版本中引入的一个重要特性,通过Java Platform Module System (JPMS)实现。这个特性允许开发者将大型应用程序拆分成相互独立的模块,每个模块包含一组相关的功能和资源。
2024-04-30 11:21:56
18145
原创 【java9】java9新特性之CompletableFuture的新API
CompletableFuture是Java8引入的一个功能强大的类,用于处理异步编程和函数式编程。它提供了许多方法来组合多个异步操作,使得处理异步任务变得更加简单和直观。
2024-04-30 10:29:27
9993
1
原创 【java9】java9新特性之Optional类改进
其实Optional类在Java8中就引入了,用于避免null检查和NullPointerException指针问题。在Java9中,Optional类得到了进一步的改进,增加了一些新的方法,使其更加灵活和易用。
2024-04-28 15:18:43
3138
1
原创 【java9】java9新特性之增强@Deprecated注解
@Deprecated注解现在支持一个新的boolean类型参数forRemoval,用于指示该API是否已经过时,并计划在将来的版本中删除。这使得开发人员可以更清晰地了解哪些API是过时的,并且哪些API是可以安全使用的。在Java9中,使用@Deprecated注解的方式与以前的版本相同,但是现在可以使用forRemoval、since和替代建议这些新特性。如果一个程序或代码片段使用了@Deprecated注解的元素,那么编译器就会生成一个警告信息,表明这个元素是不被推荐使用的。
2024-04-26 16:44:53
14438
2
原创 【java9】java9新特性之try-with-resources语句改进
代码简洁性:使用后,代码更加简洁,去除了冗余的finally块和显式资源关闭代码。错误处理:在之前,如果在finally块中关闭资源时发生异常,可能会掩盖原始异常。使用后,如果有多个资源需要关闭,并且其中某个资源的关闭方法抛出异常,那么该异常会被抑制(suppressed),而原始异常仍然会被抛出。这有助于更好地诊断问题。确保了即使在发生异常的情况下,资源也会被正确关闭。这减少了资源泄露的可能性。可以与多个资源一起使用,只需在try语句的括号中用分号分隔它们即可。这使得管理多个资源变得更加容易。
2024-04-26 14:46:06
11589
原创 【java9】java9新特性之增强流Stream的API
Java9为Stream API带来了一系列新特性,这些特性使得流的处理更加灵活和强大。这些新特性为Java的流处理提供了更强大的工具,使得在处理大量数据或进行复杂的数据转换时能够编写更加简洁和高效的代码。它们为开发者提供了更多的控制流生成的灵活性,以及处理流中数据的能力。此外,Java 9还在其他方面对Stream API进行了优化和改进,这些改进可能涉及到性能的提升、API设计的改进以及与其他Java 9特性的更好集成等。
2024-04-26 14:44:04
18510
原创 【java9】java9新特性之改进进程管理API
该类在java.lang包中,且处于java.base模块中。ProcessHandle可以用于获取进程信息,监听和检查进程的状态,并且可以监听进程的退出。allProcesses():返回当前进程可见的所有进程的快照current():返回当前进程的ProcessHandle实例of(long pid):返回现有本机进程的Optionalchildren():返回进程的当前直接子进程的快照compareTo(ProcessHandle other):比较两个进程。
2024-04-26 14:40:23
1146
2
原创 【java9】java9新特性之接口的私有方法
在Java 9中,接口可以包含私有方法(包括静态私有方法和实例私有方法)。这允许接口的设计者创建一些辅助方法,这些方法只能被接口中的其他方法所使用,而不能被实现该接口的类直接访问。
2024-04-26 11:30:13
1447
2
原创 【java9】java9新特性之集合不可变实例工厂方法
Java9为集合接口List、Set、Map提供了创建不可变实例的工厂方法。这些工厂方法为便利而生,以简单的方式创建这些集合的不可变实例。
2024-03-29 15:40:00
865
原创 【java9】java9新特性之多版本共存JAR
多版本共存的JAR(Java Archive)文件是Java 9引入的一个新特性,它允许在同一个JAR文件中维护和使用不同版本的Java类或资源。这种特性使得开发者能够创建一个JAR包,该包可以在多个Java版本上运行,而无需为每个Java版本提供单独的JAR包。接下来这个示例,我们的多版本JAR中有三个版本的MultiJarDemo.java文件,一个用于JDK8,一个用于JDK9,最后一个用于 JDK10,并在可以在这些不同的JDK版本上运行。
2024-03-29 15:12:43
704
原创 【计算机网络】Socket的OOBInline选项与UrgentData
虽然在客户端并不是使用OutputStream向服务器发送数据,但在服务端程序中这个单字节的数据是和其它的普通数据混在一起的。如果设置了OOBInline为true,那么带外数据将与普通数据混合在一起,可以通过相应的方式进行处理。在这种情况下,接收方会把接收到的紧急数据与普通数据放在同样的队列中,从而可以通过套接字输入流来接收这些紧急数据。TCP的紧急指针,一般都不建议使用,而且不同的TCP/IP实现,也不同,一般说如果你有紧急数据宁愿再建立一个新的TCP/IP连接发送数据,让对方紧急处理。
2024-02-27 15:19:35
1346
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人