53 归档分页
370 留言互动
4 核心专题

最近更新

Java 2026-03-12

博客文章分享卡片功能设计与实现

本文介绍了在博客中实现分享卡片的完整方案。通过 HTML Overlay 弹窗、Canvas 绘制和 qrcode.js 生成二维码,实现卡片展示文章标题、摘要、作者、时间等信息,并支持保存为图片。重点阐述了 Canvas 高分辨率绘制、文本手动换行、二维码异步绘制以及响应式 CSS 适配 PC 与移动端的技巧,配以颜色、字体等 UI 设计细节,并提供获取文章数据和下载图片的代码实现,完成一个兼顾性能与体验的分享功能。

自定义二维码 JavaScript 阅读全文
Java 2026-03-12

视觉盛宴:手把手教你实现一个现代化的弹幕墙

本文系统阐述了现代弹幕墙的完整实现方案。首先明确视觉、流畅滚动、防重叠、交互、响应式和状态管理等核心需求;随后基于玻璃拟态风格设计容器和圆角卡片弹幕,并提供六套主题色彩。核心滚动逻辑采用 keyframes 动画结合轨道管理,实现弹幕在不同轨道上的独立运行;通过安全轨道检测和密度自适应调度防止重叠。针对 PC 与移动端的全屏/非全屏场景,制定动态轨道数和居中布局策略,保证在尺寸变化时仍保持美观。交互方面实现速度倍率(0.5‑3×)调节、暂停/播放以及全屏切换时的弹幕清理。最后通过 transform/GPU 加速、对象池复用、事件防抖等手段进行性能与内存优化,确保弹幕墙视觉炫酷、交互流畅、适配广泛。

HTML JavaScript 阅读全文
Java 2026-03-12

Spring Boot博客系统集成AI智能摘要功能实战

本文示例了在 Spring Boot 博客系统中集成 AI 智能摘要的完整实现。通过在后端定义 AiSummaryService 接口并实现调用 OpenAI 兼容的 AI 接口(如智谱 AI、Moonshot、GPT‑4 等),在 controller 中提供 /api/ai-summary 接口,返回去除 HTML 的纯文本摘要。前端使用 Thymeleaf 页面与 JavaScript,调用该 API 后用打字机动画逐字展示摘要,并在 AI 服务不可用时回退到本地关键词或首段摘要。配置文件中可灵活设置 API 地址、模型、密钥、max‑tokens 等参数,实现前后端分离、可配置的 AI 摘要功能。

SpringBoot JavaScript AI 阅读全文
Java 2026-03-12

双层缓存+响应式设计:博客每日一句功能完美落地教程

本文详细阐述了在博客底部实现“每日一句”功能的完整方案。后端采用 Spring Boot + RestTemplate,提供 `/api/daily-quote` 接口,使用 ConcurrentHashMap 按日期缓存当天句子,防止频繁调用有道词典 API,并在异常时返回固定备用句子。前端使用原生 JavaScript 与 CSS3,首次请求后将数据写入 localStorage,实现客户端一天一次的二层缓存;通过 `white-space: nowrap`、`text-overflow: ellipsis` 与 `.expanded` 类实现长句折叠/展开交互。布局采用弹性盒子和媒体查询,在桌面、平板、手机三种断点下自动适配宽度和字号。整体实现了每日更新、降级备份、性能优化和响应式展示,代码可直接复制使用。

SpringBoot HTML JavaScript 每日一句 阅读全文
Java 2021-10-15

使用Java代码制作二维码(超级简单)

本文介绍使用 Java 生成二维码的流程,推荐开源 ZXing 并给出 Maven 依赖。四步完成:配置字符集、容错、边距等 EncodeHintType;使用 QRCodeWriter 编码为 BitMatrix;用 MatrixToImageWriter 输出 PNG;可通过 Graphics2D 添加 Logo、定制颜色。提供 QRCodeService 封装及 Spring Boot 控制器实时返回图片示例,并列出乱码、识别率、性能等注意事项和典型应用场景。掌握后即可快速生成、定制并部署二维码。

自定义二维码 阅读全文
Java 2021-11-04

Math.abs()竟然返回了负数?

Math.abs() 在普通数值上返回非负,但对 int 最小值 Integer.MIN_VALUE 会返回自身负数。原因是 int 采用补码表示,-Integer.MIN_VALUE 超出范围导致溢出,结果仍为 ‑2³¹。JDK 源码注释已说明这是规范行为。使用时应先判断该极值或转为 long、BigInteger,或使用 Math.addExact、Math.multiplyExact 等安全方法,并在单元测试中覆盖边界值。理解整数溢出是防止此类陷阱的关键。