Clojure vs Java:少数据结构、多函数胜过多个单独类的优点

Java系列 3年前 (2022-05-25) 浏览: 282 评论: 0

在Clojure中,我们一次又一次地使用相同的数据结构,并在其上运行许多函数。另一方面,Java程序员为每一组数据创建一个唯一的类,并使用自己的“API”(getter、setter、return type等)来访问和操作数据。由于被迫在两个这样的“类API”之间进行翻译,我想与大家分享我的经验,从而在实践中证明格言中的真理 请注意,本文谈论的是数据和数据承载类,而不是“业务逻辑”,它将由Java

Java正则表达式API系列三

Java系列 3年前 (2022-05-23) 浏览: 352 评论: 0

Boundary Matchers Java regex API还支持边界匹配。如果我们关心在输入文本中匹配的确切位置,那么这就是我们要寻找的。在前面的示例中,我们关心的只是是否找到匹配项。 为了仅在文本开头所需的正则表达式为true时匹配,我们使用插入符号^。 此测试将失败,因为可以在开头找到文本dog: @Test public void givenText_whenMatchesAtBegi

Java 18 Switch语句更强大了

Java系列 3年前 (2022-05-18) 浏览: 486 评论: 0

自Java13以来,Switch表达式被添加到Java核心库中。如果您使用的是Java版本13或更高版本,那么您肯定可以将旧Switch转换为新Switch。 本文将讨论它如何在不破坏现有更改的情况下提供某些功能。当然,其他语言用户可能会评论“多年前,它就已经存在于我们的编程语言中了”。但让我们微笑一下,继续用Java编程,好吗?注意,我将在帖子中交替使用“switch expression”和“

JDK 19:针对Java 19的功能

Java系列 3年前 (2022-05-13) 浏览: 774 评论: 0

虚拟线程、switch表达式的模式匹配、vector API和Linux/RISC-V端口将用于Java 19,这是标准Java的非LTS版本,将于9月发布。 定于今年9月发布的Java Development Kit 19现在正式提出了五项功能。最近新增的三个功能,一个外部函数和内存API、虚拟线程和模式匹配(所有预览),将之前提到的两个功能、一个vector API(第四个孵化器中)和一个JD

Java正则表达式API系列二

Java系列 3年前 (2022-05-11) 浏览: 200 评论: 0

Predefined字符类 Java正则表达式API也接受预定义的字符类。上面的一些字符类可以用更短的形式表示,尽管这会降低代码的直观性。这个正则表达式的Java版本的一个特殊方面是转义字符。 正如我们将看到的,大多数字符都以反斜杠开头,这在Java中有特殊的意义。对于要由模式类编译的这些,必须转义前导反斜杠,即.\d变为\\d。 匹配的数字,相当于[0-9]: @Test public void

Java9中新增的Collector

Java系列 3年前 (2022-05-09) 浏览: 322 评论: 0

Java 8中添加了收集器Collectors,这有助于将输入元素累积到诸如Map、List和Set等可变容器中。 在本文中,我们将探讨Java 9中添加的两个新收集器:Collectors.filtering 和 Collectors.flatMapping。flatMapping与收集器结合使用。通过提供智能元素集合进行分组。 Filtering Collector Collectors.fi

Java线程优先级

Java系列 3年前 (2022-05-07) 浏览: 399 评论: 0

线程被称为“最小的处理单元”,是一个轻量级的子进程,分配了一些需要执行的工作。线程共享分配给它们的相同内存插槽,并且彼此独立,因此促进了多任务处理。但是,当多个线程在共享内存插槽上运行时,必然会发生资源竞争。为了避免这种竞争,从而实现高吞吐量,引入了线程优先级的概念。当多个任务在同一个系统上运行时,它具有重要意义。“线程调度器根据优先级分配执行线程”。 JVM(JAVA虚拟机)默认或由程序员明确地

Java正则表达式API系列一

Java系列 3年前 (2022-05-05) 浏览: 413 评论: 0

在本文中,我们将讨论java正则表达式API,以及如何在Java编程语言中使用正则表达式。 在正则表达式的世界中,有许多不同的风格可供选择,比如grep、Perl、Python、PHP、awk等等。 这意味着在一种编程语言中工作的正则表达式可能在另一种编程语言中不工作。Java中的正则表达式语法与Perl中的最相似。 要在Java中使用正则表达式,我们不需要任何特殊设置。JDK包含一个特殊的jav

Java中的按值调用和按引用调用

Java系列 3年前 (2022-04-27) 浏览: 479 评论: 0

为什么按值调用和按引用调用? 方法或函数可以通过两种方式调用。一种是按值调用,另一种是按引用调用,这两种方式通常根据作为输入或参数传递给它们的值的类型来区分。 在我们开始之前,让我澄清一件事,在Java中,只有按值调用(值传递),没有按引用调用。 按值调用 按值调用是一种方法,通过复制给定变量(或常量或任何保存数据的对象)的实际值,将参数传递给函数 这意味着当我们调用一个传递参数值的方法时,这个参

Java8接口–默认方法和静态方法

Java系列 3年前 (2022-03-29) 浏览: 220 评论: 0

在Java8之前,java中的接口只能有抽象方法。默认情况下,接口的所有方法都是公共和抽象的。Java8允许接口具有默认和静态方法。我们在接口中使用默认方法的原因是,允许开发人员向接口添加新方法,而不会影响实现这些接口的类。 为什么选择默认方法? 例如,如果A、B、C和D等几个类实现了一个接口XYZInterface,那么如果我们向XYZInterface添加一个新方法,我们必须更改实现该接口的所

Java 8中的Collectors API详解

Java系列 3年前 (2022-03-14) 浏览: 908 评论: 0

在本文中,我们将介绍Java8的收集器Collectors,它们用于处理流的最后一步。 如果我们想了解如何利用收集器Collectors的能力进行并行处理,我们可以看看这个项目:https://github.com/pivovarit/parallel-collectors Stream.collect() 方法 Stream.collect()是Java 8的流API的终端方法之一。它允许我们对

Java 17的一些新特性

Java系列 3年前 (2022-03-07) 浏览: 515 评论: 2

Java17将是一个长期支持的LTS版本。 您一定知道Java采用了6个月的发布周期。也就是说,它将每6个月发布一个新版本的Java。每隔3年,LTS版本就会发布一次。目前,Java 11是LTS版本,于2018年9月发布。但在Java17发布后,它将是最新的LTS支持。 许多组织依赖LTS版本,所以他们使用的是Java11。但在Java17发布后,他们将使用Java17(可能)。 自从将Java

Java别名是如何工作的

Java系列 3年前 (2022-03-04) 浏览: 367 评论: 0

在Java中,当引用(不止一个)链接到同一个对象时,使用Alias(别名)。别名的问题是,当用户写入特定对象时,其他几个引用的所有者不希望该对象发生更改。在这里,包含别名的代码可能会很快变得有点混乱,而且调试起来也非常繁琐。总的来说,别名是一个应该避免或谨慎使用的过程。让我们看看Java Alias是如何工作的。 alias在Java中是如何工作的? 如前所述,当多个引用链接到同一对象时,会使用别

Java日志框架:log4j vs logback vs log4j2

Java系列 3年前 (2022-02-25) 浏览: 414 评论: 0

如果你曾经不得不分析生产中的问题,我相信你知道良好的日志记录是多么重要。良好的日志记录需要三件事: 日志消息需要提供所需的信息,以了解应用程序在内部执行的操作。 编写日志消息必须尽可能高效,这样才不会影响应用程序的性能。 您需要能够根据不同的部署环境和情况调整日志详细信息。 虽然您仍然需要自己决定应该为每个用例编写哪些日志消息,但您不需要担心需求2和需求3。各种日志框架已经解决了这些技术要求。您只

JVM内置函数intrinsics简介

Java系列 3年前 (2022-02-21) 浏览: 433 评论: 0

在本文中,我们将学习什么是intrinsics(内部/内置函数),以及它们如何在Java和其他基于JVM的语言中工作。 什么是内置? 内置函数是由我们的编程语言的编译器或解释器进行特殊处理的函数。更具体地说,这是一种特殊情况,因为各种原因,编译器或解释器可以用替代实现替换函数。 编程语言通常通过理解一个特定的方法调用是特殊的来处理这个问题,无论何时我们调用这个方法,结果都是不同的。这样一来,我们的

Java中的逃逸分析

Java系列 3年前 (2022-02-11) 浏览: 329 评论: 0

底层的CPU优化对我们的应用有影响。此外,它们证明了大多数程序员的错觉是错误的。是的,你使用的是高级语言。但这并不意味着所有这些抽象层都能完全屏蔽CPU。我在一个Java程序上演示了CPU缓存的效果。 CPU的发展速度比主存快得多。如今,CPU大部分时间都在等待。现代CPU可以在每个CPU周期执行多条指令。但如果它必须访问主内存,绕过三个缓存中的每一个,它必须等待大约100个周期。 Java中的逃

Java演示CPU级的缓存效果

Java系列 3年前 (2022-02-09) 浏览: 406 评论: 0

Joshua Bloch 在推特上发了一个链接(http://igoro.com/archive/gallery-of-processor-cache-effects/),使用高级编程语言(如C#)演示了CPU缓存的效果。强烈推荐! 那我们能否在Java中演示同样的效果呢?乍一看,这种可能性对我们不利:Java不是编译成本机代码,而是编译成中间字节码,而中间字节码可能会编译成本机代码,也可能不会编

JVM Code Cache代码缓存简介

Java系列 3年前 (2022-02-07) 浏览: 1118 评论: 0

在本文中,我们将了解JVM的Code Cache 代码缓存。 什么是Code Cache? 简而言之,JVM Code Cache (代码缓存)是JVM存储编译成本机代码的字节码的区域。我们将可执行本机代码的每个块称为nmethod。nmethod可能是一个完整的或内联的Java方法。 即时(JIT)编译器是代码缓存区的最大消费者。这就是为什么一些开发人员将此内存称为JIT代码缓存。 Code C

Java 8–使用Lambda表达式进行比较

Java系列 3年前 (2022-01-26) 浏览: 1344 评论: 0

在Java 8之前,对集合进行排序需要为排序中使用的比较器Comparator创建一个匿名内部类: new Comparator<Human>() { @Override public int compare(Human h1, Human h2) { return h1.getName().compareTo(h2.getName()); } } 这仅用于对Human实体列表进行排序

Java Dumps

Java系列 3年前 (2022-01-24) 浏览: 289 评论: 0

  Java Dumps是在虚拟机由于网络问题、内存错误或用户启动任何类型的按键组合而意外停止时错误创建的一些Java内核。通过调用合并到应用程序源代码中的Java转储API或通过命令行直接提供-Xdump:Java选项,可以轻松创建Java Dumps。Java Dumps通过提供一些有用的信息来帮助最终用户排除故障,并诊断当应用程序意外停止运行时发生的停止的根本原因。 语法 Java

登录

忘记密码 ?

切换登录

注册