← 返回蜂巢洞察

项目“英灵殿”的首次预览:JEP 401重新定义了Java对象中的“==”运算符

JEP 401被集成到了JDK 28中,它引入了“值对象”这一概念。这些新的类实例具有不可变的字段、经过修改的相等性判断逻辑,以及更为严格的构造函数使用规则和同步机制。其目的在于提升程序运行效率并降低内存分配所带来的开销。不过,默认情况下这些新功能是处于禁用状态的,需要用户在编译或运行时进行相应的配置才能启用。 作者:A N M Bazlur Rahman

JEP 401被集成到了JDK 28中,它引入了“值对象”这一概念。这些新的类实例具有不可变的字段、经过修改的相等性判断逻辑,以及更为严格的构造函数使用规则和同步机制。其目的在于提升程序运行效率并降低内存分配所带来的开销。不过,默认情况下这些新功能是处于禁用状态的,需要用户在编译或运行时进行相应的配置才能启用。

作者:A N M Bazlur Rahman

相关文章

技术实践

如何通过正确管理局部引用和全局引用来避免JNI导致的程序崩溃

大多数JNI崩溃并不是由复杂的逻辑错误引起的,而是由于在对象引用方面存在一些小问题造成的:例如,在引用已经失效后仍然继续持有它;创建引用的速度快于释放它们的速度;或者将某个引用传递给根本不应该使用它的线程。 这些错误很难被发现,因为程序崩溃通常发生在与引发问题的那行代码相距很远的地方,有时甚至是在垃圾回收器运行几分钟后才发生的。 Java本地接口为C和C++代码提供了一种调用JVM并操作Java对象的方法。本地代码永远不会获得对Java对象的原始指针,而是会得到一个引用,而每种类型的引用都有其自身的规则,规定它有效的时间长度、哪些线程可以使用它,以及谁负责释放它。一旦这些规则被明确了解,大多数

阅读全文
技术实践

在PostgreSQL中构建混合搜索引擎:BM25算法与向量检索技术的结合应用

大多数应用程序的搜索功能都不得不在两种方案之间做出取舍:要么使用简单的文本过滤机制,要么像Elasticsearch那样搭建独立的搜索系统,并配置复杂的同步流程。 在freeCodeCamp.org的YouTube频道上,我制作了一门新的视频课程,演示了如何在PostgreSQL中构建一套完整的、适用于生产环境的搜索系统。通过将词汇匹配技术与高维向量嵌入技术结合到同一个数据库中,我们既可以消除对外部服务的依赖,又能确保搜索索引满足ACID规范的要求。 搜索查询通常需要两种不同的检索方式: "Apollo 13" 这样的精确查询需要关键词与数据内容进行精准匹配,而这种处理方式正是关键词引擎的强项

阅读全文
技术实践

如何让你的编程工具在浏览器中检测其运行效果

我受够了让编程机器人告诉我“前端工作已经完成”,但实际上根本没有人真正打开过前端界面来测试这些更改。 你们应该都见过这样的情景:机器人修改了一些代码,运行了格式化工具、类型检查工具和测试程序,所有结果都是正常的,然后它就会显示“已实现并验证通过”之类的信息。 但究竟是怎么验证的呢?通过测试确实能说明代码没有问题,但这并不等同于真正打开应用程序来使用那些刚刚被修改过的功能。 我遇到过很多这样的情况:代码本身没有问题,测试也通过了,但用户界面仍然存在一些明显的问题——比如某个控件与其他元素重叠了,某个选中的状态在数据存储中是存在的,但在屏幕上却没有高亮显示,某些操作在某种路径下可以正常执行,在另一

阅读全文
技术实践

如何使用TypeScript从零开始构建一个AI代理程序

许多关于AI代理的教程都是从语言模型开始讲起,为它提供一些工具,然后让它运行循环直到产生答案。这样的做法确实足以展示这些工具的使用方法,但却没有回答那些有趣的工程学问题。 当某个工具出现故障时会发生什么?谁来验证这些操作的结果?是什么机制能防止代理无限期地运行、执行不安全的命令,或者耗尽其上下文信息?又如何在不依赖模型不可预测的响应的情况下测试这些功能呢? 这些职责都属于 代理框架 ——也就是位于语言模型与其所运行的环境之间的那层软件。 在本次教程中,我们将使用TypeScript来构建一个小型且与具体工具提供商无关的代理框架,并以编码代理作为示例进行讲解。我们会从基本的执行循环开始,逐步添加

阅读全文