sofia

2020年02月08日注册2022年11月12日最后登录

没有个人说明

  • 发表了 520 篇文章

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

 sofia
 2022年04月27日
 99
 0
 0 

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

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

使用Spring Boot和JPA创建GraphQL API

 sofia
 2022年04月25日
 126
 0
 0 

GraphQL既是API查询语言,也是使用当前数据执行这些查询的运行时。GraphQL让客户能够准确地要求他们所需要的东西,仅此而已,使API随着时间的推移更容易发展,并通过提供API中数据的清晰易懂的描述,支持强大的开发工具。 在本文中,我们将创建一个简单的机场位置应用程序。 生成项目 去https://start.spring.io/并生成一个项目,不要忘记添加Spring Web、H2数据库

使用Spring Boot和JPA创建GraphQL API

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

 sofia
 2022年03月29日
 76
 0
 0 

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

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

用Java代码实现区块链技术

 sofia
 2022年03月16日
 170
 0
 0 

比特币很热门——这是多么轻描淡写的说法啊。虽然加密货币的未来有些不确定,但用于驱动比特币的区块链技术也非常流行。 区块链的应用范围几乎无穷无尽。可以说,它还有可能破坏企业自动化。关于区块链是如何运作的,有很多信息。我们有一份免费白皮书,介绍区块链技术(无需注册)。 本文将重点关注区块链体系结构,特别是演示“不可变、仅附加”分布式账本如何与简化的代码示例一起工作。 作为开发人员,与简单地阅读技术文章

用Java代码实现区块链技术

Java 8中的Collectors API详解

 sofia
 2022年03月14日
 270
 0
 0 

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

Java 8中的Collectors API详解

每个程序员都需要知道的IntelliJ IDEA插件

 sofia
 2022年03月9日
 324
 0
 0 

Grep控制台IntelliJ插件 在成千上万行的日志中找到了什么,又累又沮丧?是的,我也是。但我找到了一种结束这种痛苦的方法。介绍Grep Console,帮助您在您搜索的日志. 使用IntelliJ Idea中的Grep控制台插件,您可以轻松地搜索和过滤类似于命令的内容。此外,它还基于下图所示的正则表达式对。 更多关于IntelliJ IDEA插件:Grep控制台(https://plugin

每个程序员都需要知道的IntelliJ IDEA插件

Java 17的一些新特性

 sofia
 2022年03月7日
 322
 2
 0 

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

Java 17的一些新特性

Java别名是如何工作的

 sofia
 2022年03月4日
 117
 0
 0 

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

Java别名是如何工作的

JIT优化之循环展开

 sofia
 2022年03月2日
 284
 jvm
 0
 0 

在本文中,我们将讨论一种自动优化,称为循环展开。JIT编译器使用这种技术使循环(例如Java的for或while循环)执行得更快。 因为我们将在这里深入研究JVM,为了便于演示,您有时会遇到C代码,甚至是一些汇编语言,所以请不要着急! 让我们首先考虑以下一段C代码,它为100万个long分配空间,并用100万个long随机数填充空间: int main(int argv, char** argc)

JIT优化之循环展开

JVM是如何优化代码的

 sofia
 2022年02月28日
 122
 jvm
 0
 0 

本文概述了Hotspot JVM用于提高性能的一些优化技术。首先,我将给出一个小例子,说明我在编写一个简单的基准测试时是如何遇到这些优化的。然后用一个简短的例子解释每个优化,最后给出一些如何分析自己代码的指针。 背景 很久以前,我用Java编写了一个简单的度量库,并使用了类似的实现。我希望他们的表现可以与之媲美,尽管有一点优势。在对这两个库进行基准测试后,我发现Java的速度要快得多。对于这样一件

JVM是如何优化代码的

Java日志框架:log4j vs logback vs log4j2

 sofia
 2022年02月25日
 167
 0
 0 

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

Java日志框架:log4j vs logback vs log4j2

Spring Security:自定义访问策略

 sofia
 2022年02月23日
 102
 0
 0 

当根据谁访问哪个域对象做出安全决策时,您可能需要一个自定义的访问决策投票者。幸运的是,Spring Security有很多这样的选项来实现访问控制列表(ACL)约束。 代码可以在GitHub上找到:https://github.com/timtebeek/spring-security-samples/ 实现 我们将探索一个用户共享电子表格的系统,每个电子表格的访问权限单独存储。我们已经尽可能简单

Spring Security:自定义访问策略

JVM内置函数intrinsics简介

 sofia
 2022年02月21日
 176
 0
 0 

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

JVM内置函数intrinsics简介

Java中的逃逸分析

 sofia
 2022年02月11日
 113
 0
 0 

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

Java中的逃逸分析

Java演示CPU级的缓存效果

 sofia
 2022年02月9日
 119
 0
 0 

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

Java演示CPU级的缓存效果

JVM Code Cache代码缓存简介

 sofia
 2022年02月7日
 195
 0
 0 

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

JVM Code Cache代码缓存简介

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

 sofia
 2022年01月26日
 610
 0
 0 

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

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

Java Dumps

 sofia
 2022年01月24日
 133
 0
 0 

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

Java Dumps

在gRPC中如何正确处理错误

 sofia
 2022年01月19日
 1873
 0
 0 

正确处理错误可能很棘手,而且在gRPC中可能更棘手。当前版本的gRPC仅具有基于简单状态代码和元数据的有限内置错误处理。在本文中,我们将看到gRPC错误处理的局限性,以及如何克服和构建健壮的错误处理框架。 代码示例 本文的工作代码示例列在GitHub上。要运行该示例,请克隆存储库:https://github.com/techdozo/grpc/tree/master/grpc-spring-bo

在gRPC中如何正确处理错误

Java中的循环链表

 sofia
 2022年01月17日
 160
 0
 0 

与链表相比,循环链表略有不同。在循环链表中,最后一个节点指向第一个节点,从而完成一整圈节点。换句话说,我们也可以说在这个链表中,最后一个元素不是空的。在这种类型的链表中,任何节点都可以作为起点。这意味着可以遍历整个列表,即使我们从任何节点开始。当最后一个节点指向第一个节点时,在循环链表中执行排队和出列操作非常容易。在本文中,我们将通过示例了解循环链表。 Java中循环链表的语法: 以下是语法: 节

Java中的循环链表

登录

忘记密码 ?

切换登录

注册