← 返回蜂巢洞察

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

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

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

作者:A N M Bazlur Rahman

相关文章

技术实践

《设计模式手册:通过C#代码示例学习常见的设计模式》

设计模式是针对软件设计中常见问题的、可复用的解决方案。可以把它们看作是蓝图:并非完整的代码,而是经过验证的模板,你可以根据自己的需求将其调整过来,用于解决自己代码库中的特定问题。 这本手册旨在帮助大家切实理解软件设计模式。我编写这本书是为了所有开发者,无论你使用哪种编程语言。书中的示例是用C#编写的,但这里提到的每一个概念同样适用于Python、Java、TypeScript、Go等语言。 源代码可以在这里找到: github.com/Clifftech123/design-patterns-handbook 。 需要注意的事项: 设计模式本身并不是代码。 它们是一种思考代码结构的方式,是解决

阅读全文
技术实践

如何在Flutter中实现LEGO架构[完整手册]

几乎每个人在某个时候都试过把两块乐高积木拼在一起,即使成年后从未拥有过任何一套乐高玩具。你把一块积木压在另一块上面,听到“咔嗒”一声,它们就固定在一起了。 你很可能从未想过这些积木是如何被制造出来的,使用了什么样的塑料材料,又出自哪家工厂。在那一刻,你只关心一件事:那些凸出的连接部分是否对齐了? 这个看似平凡的小动作,其实就是编写这本手册的整个出发点。现在,请暂时把乐高放在一边,想象一下Flutter项目吧。在这个项目中,肯定存在某个文件,团队里的每个人都暗自害怕去打开它。这个文件负责获取数据、对其进行格式化处理、进行验证,最后将结果呈现出来——而所有这些操作都是在一个巨大的`build()`

阅读全文
技术实践

如何构建一个具备自我评估功能的人工智能系统:为大型语言模型应用开发自动化测试与评估流程

你将自己的AI功能部署出去,演示效果也确实不错,团队成员们都感到非常满意。然而,当有用户提出一些超出测试范围的问题时,模型却会给出完全错误的回答。 使用大型语言模型进行开发的现实是:传统的软件测试方法根本行不通。当你的系统每次运行都会生成不同的输出结果时,你根本无法使用“output == expected”这样的简单判断语句来进行测试。 大多数教程都会教你如何构建聊天机器人或设置RAG评估流程,但之后就戛然而止了。它们只会告诉你“将其部署到生产环境中”,仿佛最困难的部分已经结束了。但实际上,真正关键的是要判断你的AI模型是否真的有效,以及在它性能下降时及时发现这个问题。 在这篇文章中,我会带

阅读全文
技术实践

如何使用 Vercel AI SDK 与 Shadcn/ui 来构建人工智能聊天应用程序界面

如今,你打开的每一款AI产品几乎都具有相同的界面结构:消息列表、底部的文本输入框,以及以单个词元形式逐条显示的信息。这种设计看起来很简单,但实际上要将其构建得完善却并非易事。 你必须处理诸如数据流状态管理、部分词元的处理、工具调用、重试机制、Markdown格式的渲染、滚动位置的设置,以及其他众多细节问题……同时还要确保界面易于使用且运行速度足够快。如果使用不合适的工具来开发这些功能,你将会花费大量时间去修复各种技术问题,而根本无暇专注于产品的核心功能建设。 在本教程中,你将使用两款专为彼此设计的工具来构建一个真正的AI聊天界面:Vercel AI SDK用于处理数据流逻辑和模型运算,而sha

阅读全文