被低估的服务器发送事件(SSE): 简洁高效的实时数据流方案

2024-12-25
被低估的服务器发送事件(SSE): 简洁高效的实时数据流方案

本文探讨了服务器发送事件(SSE)技术,它是一种比WebSocket更简单、更高效的单向实时通信方案。SSE利用标准HTTP协议,易于实现和部署,兼容现有基础设施,资源消耗低,并具有自动重连功能。文章详细解释了SSE的工作原理、优势、应用场景(如实时新闻、股票信息、进度条等),并以Flask和JavaScript为例展示了其代码实现。此外,文章还分析了ChatGPT等大型语言模型如何利用SSE进行流式响应,并指出了SSE的局限性,例如单向通信和数据格式限制。总而言之,SSE为许多需要单向实时数据流的应用提供了一种优雅的解决方案。

阅读更多

关于SQLite最常见的误解

2024-11-09
关于SQLite最常见的误解

本文阐述了关于SQLite的一个常见误解:它是一个单连接数据库。作者指出这种说法不仅令人困惑,而且在许多方面都是错误的。SQLite完全支持多并发读取操作。虽然在写入操作时,SQLite数据库引擎会在数据库级别使用写锁,同一时间只有一个连接可以写入,但这通常不是问题。因为可以使用IMMEDIATE TRANSACTION,SQLite可以将查询排队,稍后重试获取写锁。

阅读更多
未分类

从 Java 8 迁移到 Java 17 之二:Java 中值得注意的 API 变化

2024-06-28
从 Java 8 迁移到 Java 17 之二:Java 中值得注意的 API 变化

本文详细介绍了从 Java 8 迁移到 Java 17 过程中引入的一些值得注意的 API 变化和新增功能,涵盖了 Java 9 到 Java 17 的多个版本,包括 Objects.requireNonNullElse、集合工厂方法、增强的 Stream API、CompletableFuture.delayedExecutor()、Collectors.flatMapping()、Optional 增强、java.util.concurrent.Flow、局部变量类型推断(var)、不可修改集合、String 增强、InputStream 增强、新的 Files 方法、单文件源代码程序、switch 表达式、文本块、String::formatted 方法、记录、instanceof 的模式匹配、Stream.toList()、十六进制二进制数据表示和 ZoneId.ofOffset() 等。

阅读更多
未分类

Java 中比较 BigDecimals 的陷阱

2024-06-17

这篇文章探讨了 Java 中 BigDecimal 类的 equals() 方法在比较数值时可能出现的意外结果。equals() 方法比较的是 BigDecimal 的无标度值和标度,而不是数值相等性,这可能导致比较结果不一致。文章建议使用 compareTo() 方法进行数值比较,或者使用 stripTrailingZeros() 方法对 BigDecimal 进行规范化,以避免潜在的陷阱。

阅读更多