← 返回蜂巢洞察

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

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

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

作者:A N M Bazlur Rahman

相关文章

技术实践

如何在没有服务器的情况下为静态网站添加动态功能

静态网站目前正受到人们的青睐,这是有原因的。一个包含HTML、CSS和JavaScript文件的文件夹,加载速度很快,托管成本也很低,而且几乎不可能出现故障。 像 Astro 、 Eleventy 和 Hugo 这样的工具,能够利用Markdown文件和模板帮您生成这样的网站结构。而Netlify、Vercel以及Cloudflare Pages等托管服务,则可以通过内容分发网络来提供这些生成的网站内容,而且通常还是免费的。 不过,您的网站还需要具备实际的功能。读者可能想要留下评论,或者有人想通过电子邮件与您联系。也许您还想实时显示价格信息,需要用户登录后才能查看某些页面,或者在网站发布之前收

阅读全文
技术实践

Flutter前端系统设计:在人工智能时代,如何像资深工程师一样思考

系统设计长期以来一直被视为后端领域的问题。 如果你问一群Flutter工程师“系统设计到底意味着什么”,他们中的大多数人会提到服务器架构:负载均衡器、数据库以及微服务。 但如果你让他们设计一个分布式缓存系统或画出一个消息队列的示意图,他们会犹豫不决。而当你要求他们为社交Feed应用开发Flutter客户端时,他们就会立刻打开新文件开始编写组件代码。 这种差距确实存在,不过正在迅速缩小。 随着Flutter应用程序变得越来越复杂——它们具备了实时功能、离线支持、多平台兼容性,同时还包含需要维护的人工智能生成代码——在编写任何一个组件之前所做出的架构决策,其重要性已经与后端架构相当了。 在那些以产

阅读全文
技术实践

深入探讨行为模式:访问者设计模式及其在复杂对象结构中的应用

几乎每一个正在发展的软件系统中都会出现这样一个问题,而大多数开发人员直到问题造成了实际的损害之后才意识到自己遇到了它。 你有一组对象:它们具有不同的类型、形状和数据结构。而在某个时刻,会有人要求你对这些对象执行某种操作,比如将它们导出为PDF格式、向它们发送通知、生成报告或计算相关费用。 你的第一反应可能是编写一个函数,根据对象的类型来决定执行哪些操作,例如使用if-else语句或switch结构。这样的代码逻辑是:如果这个对象是NewUser类型,就执行这个操作;如果是JointAccountUser类型,就执行另一个操作。这种方法确实有效,你将其实现后,大家都很满意。 然而,后来又出现了新

阅读全文
技术实践

如何利用SFT和QLoRA技术为AI代理定制大型语言模型

在本教程中,我将向您展示如何使用QLoRA进行有监督微调,从而优化大型语言模型,使其能够用于AI代理中。这种方法使我们能够对预训练模型进行定制,使其表现出我们期望的行为。我们将采用一种轻量级的训练流程,仅更新模型中的少量参数。 我们会利用Unsloth以及Hugging Face生态系来下载Qwen 1.5B基础模型,然后应用基于QLoRA的有监督微调方法,并将优化后的LoRA适配器权重保存在本地,以便后续进行推理使用。所有操作都在本地完成,因此您无需支付任何模型API的使用费用。 目录 背景知识 什么是有监督微调? 什么是LoRA? 动机与架构 步骤1:安装Python相关依赖库 步骤2:训

阅读全文