如何实现一个WeakSet或WeakList?

如何实现一个WeakSet或WeakList?

Java系列 1年前 (2022-12-19) 浏览: 296 评论: 0

大家都知道Java里有WeakHashMap这样的数据结构,一个弱引用的Map,在内存不足GC时Entry会被回收掉,可以避免内存泄露的风险,虽然Java原生的Collections中并没有提供WeakSet或WeakList这样的数据结构,但自己实现也不难,其中最简单的方式是使用Collections.newSetFromMap转换一下: Set<Object> weakHashSe

java 内存泄露

java 内存泄露

jvm 3年前 (2020-11-30) 浏览: 295 评论: 0

缺乏经验的程序员通常认为Java的自动垃圾收集完全可以让他们从内存管理的担忧中解脱出来。这是一种常见的误解:当垃圾收集器尽其所能时,即使是最好的程序员也完全有可能成为严重内存泄漏的牺牲品。让我解释一下。 当不必要地维护不再需要的对象引用时,会发生内存泄漏。这些泄漏很严重。首先,当你的程序消耗越来越多的资源时,它们会给你的机器带来不必要的压力。更糟糕的是,检测这些泄漏可能很困难:静态分析通常难以精确

Java别名是如何工作的

Java别名是如何工作的

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

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

Java反射的用途系列一

Java反射的用途系列一

Java系列 4年前 (2020-10-23) 浏览: 296 评论: 0

Java反射提供了检查和修改应用程序运行时行为的能力。Java中的反射是核心Java的前沿课题之一。使用java反射,我们可以在运行时检查类、接口、枚举,获得它们的结构、方法和字段信息,即使类在编译时是不可访问的。我们还可以使用反射来实例化一个对象,调用它的方法,更改字段值。 Java中的反射 Java中的反射是一个非常强大的概念,它在普通编程中用处不大,但它是大多数Java、J2EE框架的主干。

什么是Java Agents代理?

什么是Java Agents代理?

Java系列 3年前 (2021-09-18) 浏览: 293 评论: 0

Java代理Agents通过提供使我们能够侵入JVM中正在运行的Java程序的服务,在最底层工作。Java的这一强大但不可思议的部分具有在错误操作时使JVM崩溃的能力。本文简要介绍了这个概念,并介绍了它的工作原理。 表示Java Agents的类显然只不过是Java API库中的任何其他类。但是,让它们与众不同的是,它们遵循某种约定,这种约定使Java代码能够拦截JVM中运行的另一个应用程序。其目

用Java代码实现区块链技术

用Java代码实现区块链技术

相关技术 2年前 (2022-03-16) 浏览: 288 评论: 0

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

Java8里的方法引用

Java8里的方法引用

Java系列 3年前 (2021-06-28) 浏览: 286 评论: 0

方法引用是Java8中用于调用方法的lambda表达式的简写表示法。例如: 如果lambda表达式如下: str -> System.out.println(str) 然后可以用如下方法引用替换它: System.out::println 在方法引用中使用 :: 运算符将类或对象与方法名分开(我们将通过示例来了解这一点)。 四种方法引用 1.对象实例方法的方法引用–object::insta

微服务架构模式简介

微服务架构模式简介

微服务 3年前 (2021-06-18) 浏览: 285 评论: 0

上下文 您正在开发服务器端企业应用程序。它必须支持各种不同的客户端,包括桌面浏览器、移动浏览器和本地移动应用程序。应用程序还可能公开一个API供第三方使用。它还可以通过web服务或消息代理与其他应用程序集成。应用程序通过执行业务逻辑来处理请求(HTTP请求和消息);访问数据库;与其他系统交换信息;返回HTML/JSON/XML响应。存在与应用程序的不同功能区域相对应的逻辑组件。 问题 应用程序的部

使用Spring搭建微服务框架系列二

使用Spring搭建微服务框架系列二

微服务 3年前 (2021-03-02) 浏览: 283 评论: 0

    在上一节中讲了使用Spring搭建的微服务如何实现服务发现注册以及配置,这节继续介绍其他内容。 封装微服务访问 以下是我的客户端应用程序的WebAccountService的一部分: @Service public class WebAccountsService { @Autowired // NO LONGER auto-created by Spring Clou

Java中的超高速垃圾收集器

Java中的超高速垃圾收集器

Java系列 3年前 (2021-09-17) 浏览: 282 评论: 0

垃圾收集:有很多技术定义,但用外行术语来说,它只是从内存中收集未引用或未使用(垃圾)对象并有效利用应用程序可用内存的一种自动化方法。 从这里开始,让我们节省一些空间,并使用“GC”作为垃圾收集的缩写。 GC的发展 在java之前,用C或C++,我们必须使用MalCube()/RealCube()/CalOrthAube(/For)/free()来显式分配或分配内存。因为我们必须显式地管理内存分配,

跳表在Java中的实现

跳表在Java中的实现

Java系列 2年前 (2022-07-01) 浏览: 280 评论: 0

跳表是一种数据结构,用于借助连接到元素子序列的链表层次结构来存储元素的排序列表。跳表允许以有效的方式处理项目查找。跳表是一种概率数据结构,这意味着它跳过整个列表中的几个元素,因此称为跳表。我们可以将跳表作为链表的扩展版本。与链表允许插入、删除和搜索元素的方式类似,跳表也允许搜索元素、从列表中删除元素和插入元素。它将包含一个基本列表,其中包含一组元素,这些元素将维护后续元素的链接层次结构。 语法:

使用Spring Boot构建微服务

使用Spring Boot构建微服务

微服务 3年前 (2021-05-08) 浏览: 276 评论: 0

在使用Spring Boot构建微服务的这一篇文章中,我们将引入一些新概念,使我们的服务更具可伸缩性和弹性。 内部服务间通信 与传统的、单一的方法不同的是,应用程序的所有部分通常都可以使用单一的数据库,而微服务作为不同的进程运行,它们有自己的私有数据存储,必须相互通信才能实现它们的目标。这种根本的差异需要不同的思维方式,这可能是开发人员在过渡到构建微服务时面临的最大挑战之一。 服务间通信有许多不同

使用Infer静态分析器查找程序间的bug

使用Infer静态分析器查找程序间的bug

相关技术 1年前 (2023-03-27) 浏览: 276 评论: 0

静态分析器在程序运行之前捕获错误的能力正在稳步提高。在Facebook使用Infer静态分析器(https://fbinfer.com/)的过程中,我们经常被问及Infer与其他开源分析工具(如Findbugs、错误倾向和Clang静态分析器)之间的差异。一个主要区别是程序间错误,或涉及多个程序之间交互的错误。 我们将看看Infer在Java和C中发现的两个程序间错误示例——一个来自开源DuckD

Java中的逃逸分析

Java中的逃逸分析

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

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

Java正则表达式API系列三

Java正则表达式API系列三

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

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

Netflix如何使用Druid以确保高质量的体验

Netflix如何使用Druid以确保高质量的体验

相关技术 3年前 (2021-06-12) 浏览: 273 评论: 0

在不断推动创新技术更新的同时,确保Netflix始终如一的出色体验绝非易事。我们如何才能确信更新不会伤害我们的用户?当我们打算做的时候,我们真的在做可衡量的改进? 使用回放设备的实时日志作为事件源,我们得出测量结果,以便理解和量化用户的设备如何无缝地处理浏览和回放。 一旦我们有了这些措施,我们就把它们输入数据库。每一项测量都会标记出使用哪种设备的匿名细节,例如,该设备是智能电视、iPad还是And

什么是Web1、Web2、Web3?有什么区别?

什么是Web1、Web2、Web3?有什么区别?

相关技术 1年前 (2023-03-20) 浏览: 270 评论: 0

Web 1、Web 2和Web 3。几年来,互联网正从我们过去所知道的网络演变而来。继Web1和当前的Web2之后,“Web3”变得更加相关,成为开发中的关键步骤。差异在哪里? 要理解Web3,需要弄清web的前两个阶段。 什么是Web1? Web1技术包括核心web协议:HTML、HTTP和URI。Web1的主要特点是: 它们具有只读内容;使用网络只是为了从静态页面上的文本中获取信息。 在线状态

Java9中新增的Collector

Java9中新增的Collector

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

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

如果您只懂Java,如何开发区块链应用程序?

如果您只懂Java,如何开发区块链应用程序?

相关技术 3年前 (2021-10-06) 浏览: 267 评论: 0

欢迎您是全球710万活跃的Java开发人员之一,也可能是1200万在一生中学习过Java语言的开发人员之一。 在本文中,我将指导您使用Corda构建第一个区块链应用程序,Corda是一个在JVM中运行的区块链平台,仅使用Java。准备好在Java同行中脱颖而出! 你需要什么… 在本文中,我不会详细介绍区块链是什么以及人们为什么需要区块链。我将直接进入编码,并在进行过程中解释去中心化的逻辑。因此,以

Java9的新特性

Java9的新特性

Java系列 3年前 (2021-01-27) 浏览: 267 评论: 0

Java9概述 Java9具有丰富的特性集。虽然没有新的语言概念,但是新的api和诊断命令肯定会引起开发人员的兴趣。 在本文中,我们将对一些新特性进行快速、高层次的研究;这里提供了新特性的完整列表。 模块化系统——Jigsaw项目 让我们从一个大问题开始——将模块化引入Java平台。 模块化系统提供类似于OSGi框架系统的功能。模块具有依赖性的概念,可以导出公共API并保持实现细节隐藏/私有。 这

登录

忘记密码 ?

切换登录

注册