高性能编程指南

     

Java 并发:线程、线程池和执行器全面教程

78 9K

本指南深入研究了Executor接口的内部工作原理及其各种实现。并发的基础知识想象一下餐厅厨房的单一流程。厨房本身就代表了这个过程,准备食物、洗碗和接受订单等各种任务同时发生。现在,线程作为厨房里的厨.

Java中可变对象与不可变对象

46 5K

在 Java 中使用对象时,了解可变对象和不可变对象之间的区别至关重要。这些概念影响 Java 代码的行为和设计。在本教程中,我们将探讨可变对象和不可变对象的定义、示例、优点和注意事项。什么是不可变对.

Java中不可变数组实现两种方法

56 4K

在Java中,数组是一种可变的数据结构,一旦创建其大小就固定了。在这篇文章中,我们将讨论如何在 Java 中实现不可变数组。不可变意味着我们无法修改它。如果在Java中有一个不可变数组,则指的是初始化.

缓存Caffeine与Sieve比较

76 3K

Caffeine缓存作者:背景信息Caffeine 使用自适应窗口技术,因此不会完全影响您的观察结果。论文建议将 1%的窗口作为起点,因为这在数据库、搜索和分析等许多关键工作负载中都很有效。论文最后指.

Spring Boot中启用虚拟线程的四个场景和源码

154 5K

Spring Boot 3和Spring Framework 6正式支持Virtual Thread。本文总结了如何使用虚拟线程替换基于 Spring Boot 的项目中处理Spring Web MV.

算法复杂性分析中的渐近表示法和分析

82 3K

渐近分析中,我们根据输入大小评估算法的性能(我们不测量实际运行时间)。我们计算算法所花费的时间(或空间)如何随着输入大小的增加而增加。 渐近符号是一种根据输入大小描述算法的运行时间或空间复杂度的方法。.

Java中的ConcurrentHashMap教程

58 11K

并发性是现代软件开发的一个重要方面,尤其是在多线程环境中。同时管理共享数据结构需要仔细考虑,以避免竞争条件并保持数据完整性。Java 并发编程武器库中的一项强大工具是 ConcurrentHashMa.

Java中CompletableFuture全面教程

116 8K

Java 8 中 CompletableFuture 的引入标志着处理异步操作的重大飞跃。CompletableFuture 是一个强大而灵活的类,它有利于并发编程,使开发人员更容易编写高效且可扩展的.

十亿行挑战

318 2K

让我们开启 2024 年真正的编码风格 —​我很高兴宣布10 亿行挑战赛(1BRC),将于 1 月 1 日持续到 1 月 31 日。如果您决定接受的话,您的任务看似简单:编写一个 Java 程序,用于.

什么是CPU亲和力?何时使用?

153 3K

CPU 亲和力(CPU affinity)是指在多处理器系统中,将一个进程或线程绑定到特定的CPU核心或处理器上,以限制其在系统中运行的位置。这样的做法可以带来一些性能上的优势,但也需要小心使用,因为.

如何配置Nginx来降低TTFB实现低延迟?

111 2K

TTFB代表"Time To First Byte",中文意为"首字节时间"。它是指从浏览器发出一个HTTP请求到接收到服务器响应的第一个字节所经过的时间。TTFB是Web性能的关键指标之一,因为它反.

如何配置tomcat来降低TTFB实现低延迟?

81 1 4K

TTFB代表"Time To First Byte",中文意为"首字节时间"。它是指从浏览器发出一个HTTP请求到接收到服务器响应的第一个字节所经过的时间。TTFB是Web性能的关键指标之一,因为它反.

矢量包处理(VPP)比传统内核方法快 100 倍

164 2K

矢量包处理 (VPP) 是一种开源软件,可以通过批处理数据包和使用 SIMD 指令等技术在商用硬件上提高吞吐量。矢量包处理 (VPP) 是一种在软件中高速处理数据包的技术。它将数据包处理从内核移到用户.

为何苹果M1打败了英特尔?

338 4K

CISC与RISC有两种截然相反的芯片设计理念: CISC(复杂指令集计算机) RISC(精简指令集计算机) 要理解这一点,我们需要了解指令集的含义。CPU 每个时钟周期都在运行操作。这些操作包括在寄.

Java 并行 GC 调优

185 3K

并行垃圾收集器(Parallel GC)是 JVM 中引入的最古老的垃圾收集算法之一,旨在利用现代多核系统的处理能力。并行GC旨在通过利用多个线程并行执行垃圾收集来减少GC暂停的影响。什么时候使用并行.

Java + Vert.x在后端挑战中击败Rust?

359

该应用程序是作为 Rinha de Backend 2023 Q3 挑战说明的解决方案而构建的。挑战要求这些说明可在Github中找到。主要要求是: 1 个 nginx(负载均衡器)和 2 个应用程序.

使用Java虚拟线程比Node.js性能更高

693 4K

Java 19 中引入的虚拟线程旨在加速并发网络请求。在这篇文章中,我想比较发出 HTTP 请求的常规线程和虚拟线程的吞吐量。为此,我在谷歌云中使用了两个虚拟机。每台机器有 8 个 CPU 和 16 .

每个系统架构师都应该知道的五个性能指标

1658

在本文中,我描述了每个系统架构师都应该知道的一些(非详尽的)性能指标。系统架构师的目标是设计和监督支持业务目标的 IT 基础架构的开发:首先,我们需要了解系统架构师是做什么的:系统架构师负责设计、配置.

Rust异步Asyn的特点

2001 1 8K

经常听到有人把Rust和其他语言描述为 "穿风衣的N种语言"。在Rust中,我们有Rust的控制流结构,我们有decl-macro元语言,我们有trait系统(它是图灵完备的),我们有cfg注释语言-.

开发高性能的微服务应用 - Gupta

1077 3K

微服务设计如今变得非常流行。应用程序团队正在转向微服务架构,因为它有很多优势。我们应该记住,微服务不仅仅是将大型单体应用程序分解为子应用程序,它还远远不止于此。微服务的概念和中心围绕着创建一个自包含的.

微服务基准测试:Chronicle Queue比Kafka快750倍?

1725 1

比较 Chronicle Queue 和 Apache Kafka 的一个有趣的基准测试,请注意:对于极其重视低延迟应用程序,kafka 可能不是最佳适合工具,Kafka适合高吞吐量和大数据可扩展的应.

并发LinkedHashSet

1227

  LinkedHashSet 是一个也可以保持有序的集合。为了使这个线程安全,我们可以用 Collections.synchronizedSet() 包装它。然而,这不是一个好的选择,因为迭代仍然会.

基准测试:HTTP/3 有多快? - requestmetrics

1455 2K

为了了解 HTTP/3 产生什么样的性能差异,需要一个基准测试设置。为了更接近实际使用情况,测试设置由三个场景组成 - 一个小站点、一个内容丰富的站点(大量图像和一些 JS)和一个单页面应用程序(在 .

actix/actix-web:Actix Web 是一个功能强大、实用且速度极快的 Rust 网络框架。

3336

根据TechEmpower 框架基准测试, Actix Web是最快的 Web 框架之一 ,暂时排名第5名,超过java的vert.x(内置Netty)和akka特点: 支持HTTP/1.x和HTTP.

支持Http3和Quic协议的Netty孵化器版本发布

2572 1

随着netty 4.1.72.Final的发布,我们将发布多个孵化器库。除了升级到最新的 netty 版本之外,这些版本还包含一些其他小修复。发布的内容包括: netty-incubator-tran.

更快的JVM垃圾回收器:Shenandoah

998

在本月早些时候的 re:Invent 年度用户大会上,AWS推出了开源Shenandoah垃圾收集器的变体,作为其 OpenJDK 发行版Corretto 的第 17 版的预览。Shenandoah .

Facebook的GraalVM使用经验

2260 1 3K

Facebook 正在使用 GraalVM 来加速其 Spark 工作负载并减少内存和 CPU 使用率。继续阅读以了解他们的迁移故事、性能改进结果和未来计划。Facebook 在几个关键领域使用 Ja.

EnumSet可能是Java中最无意义的类 - nullprogram

745 4K

numSet 可能是 Java 标准库中最无意义的类。它有两个目标,但都失败了。 背景在过去,Java 程序员会像 C 程序员一样构建枚举。例如,这是一个 C 风格的位域枚举(这些罗马人喜欢他们的关键.

在Java中生成随机数三种方式比较

982

在 Java 中生成随机数是一个常见的要求,Java 支持通过ThreadLocalRandom,  java.lang.Math和java.util.Random类生成随机数。如果您使用的是Java.

使用Spring WebClient发送HTTP请求 - reflectoring

4837 12K

Spring 5有一个响应式 Web 框架:Spring WebFlux。这旨在与现有的 Spring Web MVC API 共存,但增加对非阻塞设计的支持。使用 WebFlux,您可以构建异步 W.