本文探讨了在Java中,通过类型转换可能导致JVM类加载提前报错的问题。作者在文章中描述了一个包含Father和Son类的情景,并展示了一段代码,验证了删除Son类后仍会导致报错的情况。作者提到,在JVM的类加载验证阶段,即使不是针对Son.class或Father.class的验证,验证Main.class时依然会触发报错,因为涉及到向上类型转换…
本文讲述了Java语言的过去、现在和未来之路。首先介绍了Java从诞生至今一直受到其他语言比较和技术革新的影响,引发公众对其现状以及未来的担忧。然后重点回顾和展望了Java的几个重要更新,如Java 8的Lambda表达式和Stream API,Project Loom的协程支持,Project Panama的本地库访问和堆外内存API,以及Pro…
博主在文章中提到Java中的受查异常和非受查异常之间的区别在JVM的世界中实际上并不存在。传统理念认为继承自java.lang.RuntimeException的异常是非受查异常,其他异常则是受查异常。然而,通过比较JVM字节码层面的代码表示,发现无论是受查异常还是非受查异常,在JVM字节码中并没有实质差别。此外,文章也讨论了Kotlin语言对于受…
博主在本文中探讨了编程界常见的问题,即如何区分静态类型和动态类型,强类型和弱类型。他指出,由于这些概念本身没有明确的定义,导致人们很难就此达成一致共识。然而,如果按照已有的共识来界定这些概念,就能得出一些明确的答案。文章提到了强类型语言和弱类型语言的区别,以及静态类型语言和动态类型语言的区别。在强类型和弱类型的定义中,强类型语言常常会直接出错或编译…
实战!为你的网站接入 Passkey 通行密钥以实现无密码安全登录 前言 说来也巧,最近在研究 Passkey,本来思前想后是不写这篇文章的(因为懒),但是昨天刷知乎的时候发现廖雪峰廖老师也在研究 Passkey,想了想还是写一篇蹭蹭热度吧。 了解 Passkey 要了解 Passkey,我们首先需要了解 Web Authentication cr…
博主在本文中介绍了如何使用Spring Gateway和Sa-Token实现无感鉴权的方案。他首先提到了Spring Cloud Gateway和Sa-Token的基本概念和功能。然后,博主指出了直接在网关中实现鉴权的局限性,并提出了一种无感鉴权的解决方案。在这个方案中,博主通过在请求中注入用户ID的方式实现了无感鉴权,从而避免了下游微服务依赖Sa…
Tailwind CSS 导论 博主介绍了Tailwind CSS这款效用优先的CSS框架。通过组合预定义的class来直接在HTML中构建任何设计。博主以一个卡片UI的例子对Tailwind CSS进行了解释,比较了使用Tailwind CSS和不使用Tailwind CSS的代码量差异。使用Tailwind CSS可以通过简洁的class描述H…
本文是博主分享的一篇关于解决 Thunderbird 邮件时区错误的问题的文章。文章讲述了作者在使用 Thunderbird 邮件客户端时,总是遇到邮件时间与本地时间相差8个小时的问题,作者通过查看邮件发送的实际时间和显示时间的差值,发现这是时区问题,原因是 Thunderbird 为了保护隐私而配置了使用 UTC 时区。作者提供了解决方案:打开“…
这篇文章主要介绍了Java JEP 445,即预览中的JEP,引入了两个机制:未命名类和实例main方法,用于简化Java的main方法声明。通过这两个机制,可以使main方法更加灵活,仅需最基本的语法,方便入门学习Java。同时,在该预览版本中,如果Java代码中包含未命名类,javadoc实用工具将无法生成API文档。这两个机制并没有引入新的语…
本文讲述了博主为了给自己的 Argon 主题添加基于 ChatGPT 的人工智能摘要功能而付出的努力。文章介绍了开发流程,包括使用 haozi-team/chatgpt-php 库对接 OpenAI 接口,修改 settings.php 和 inc/fun/post-extra-meta-editor.php 文件添加全局和文章单独的设置,以允许用…