加载中

Java

文章分类

浏览该分类下的所有文章

237 篇文章 20

AI对话机器人技术实现文档

本项目在博客页面实现基于Web的AI对话机器人,提供文章上下文问答、打字机逐字显示、暂停/继续、历史记录、快捷问题等功能。前端采用原生HTML5+CSS3+JS,配合Marked.js、Highlight.js、Font Awesome;后端通过RESTful API调用AI服务,数据持久化使用LocalStorage。系统分为用户界面层、交互逻辑层、数据处理层和服务接口层,核心采用状态机管理AI生成流程(idle‑thinking‑generating‑paused‑completed)。实现重点包括打字机与Markdown增量渲染同步、暂停状态持久化以及多状态切换的稳定性,均通过增量渲染、历史保存和统一状态变量等方案解决。

为博客每日一句添加音频播放功能

本文记录了为博客底部“每日一句”板块添加英文音频播放功能的完整实现过程。首先明确需求:点击播放按钮获取并播放音频,保持页面风格、兼容PC与移动端并提供播放状态反馈。由于有道词典API存在 CORS 限制,采用后端代理接口 `/api/daily-quote/voice` 转发请求并解析返回的 `voice` URL。前端在卡片中加入圆形播放按钮,使用 CSS 设计默认、播放中两种样式并实现响应式适配;通过 HTML5 Audio 对象实现音频加载、播放、暂停及结束事件的状态管理。开发中解决了跨域、DOM 加载时机和移动端样式超出等问题。最终实现点击播放、再次点击暂停、播放结束自动恢复默认状态的交互,提升用户体验,并总结出跨域代理、Audio API 使用及响应式设计等实践经验。

使用自定义图片作为Emoji表情的技术实现

本文介绍在 Web 项目中使用自定义图片实现 Emoji 表情的完整方案。通过统一存放 PNG 文件、采用有意义的命名规则,利用 JavaScript 正则将 `[:表情名:]` 代码转换为 `<img>` 并插入编辑器,提交前再逆向替换为纯文本代码,实现数据库存储。配合响应式 CSS、动态生成的表情面板、点击、懒加载、最近使用和分类展示等交互功能,确保在 PC 与移动端均可流畅使用。该方案保持文本存储、易于扩展和跨平台兼容,提供统一视觉风格的自定义 Emoji 系统。

博客侧边栏热门文章与最新文章功能实现详解

本文详细阐述了在 Spring Boot + Thymeleaf 项目中实现博客侧边栏的热门文章与最新文章功能。通过一次只查询必要字段的 SQL,配合 Service 层的缓存注解,获取全部侧边栏数据;在 Controller 中利用 Java 8 Stream 按浏览量降序排序取前5篇作为热门文章,直接取前3条作为最新文章,避免多次数据库访问。前端采用 Thymeleaf 渲染列表,使用 CSS 媒体查询实现 PC 端左侧固定、移动端隐藏,并通过 sticky 定位、排名颜色、标题省略号等视觉细节提升用户体验。整体方案兼顾性能、响应式布局和交互效果。

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

本文介绍在个人博客中实现分享卡片的完整方案。通过 HTML Overlay 弹窗承载 Canvas,利用 Canvas API 绘制背景、标题、摘要、作者信息及二维码,并自行实现文本自动换行函数以控制行数和省略号。二维码采用 qrcode.js 异步生成后绘制到画布。卡片 UI 采用简约层次、统一色彩与系统字体,实现 PC 与移动端的响应式适配。提供获取文章元数据、高清渲染(2 倍缩放)和 Canvas toDataURL 下载图片的实现代码,并通过异步处理、系统字体等手段进行性能优化。整体实现了点击按钮弹出、支持保存图片的高质量分享卡片功能。

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

本文系统阐述了弹幕墙的完整实现方案。采用玻璃拟态+渐变粒子视觉,提供六套主题色;使用关键帧transform实现流畅滚动,并通过轨道管理、检测安全距离和智能调度防止弹幕重叠。针对PC、移动及全屏场景制定响应式布局,支持速度调节、暂停播放及全屏切换时状态保持。最后给出GPU加速、对象池复用等性能优化措施,确保动画平滑、内存可控。

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

本文详细介绍了在 Spring Boot 博客系统中集成 AI 智能摘要的完整实现。通过前后端分离架构,后端定义 AiSummaryService 接口并使用 OpenAI 兼容模型生成限定字数的摘要;REST API 根据文章 ID 提取纯文本后返回摘要,并在 application.yaml 中配置 API 密钥、模型、参数等。前端采用 Thymeleaf 渲染摘要容器,配合 JavaScript 实现打字机动画效果;若 AI 服务不可用,系统会降级为本地关键词摘要。文中还列举了支持的国内 AI 服务商及推荐模型。

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

本文详解在博客底部实现“每日一句”功能的完整方案。后端采用 Spring Boot + RestTemplate,提供 `/api/daily-quote` 接口,使用 ConcurrentHashMap 按日期缓存当天句子,防止频繁调用有道词典 API,并在异常时返回固定降级语句。前端使用原生 JavaScript 与 CSS3,首次请求后将数据写入 localStorage,实现客户端一天一次的缓存;句子超长时通过 `white-space` 与 `text-overflow` 实现省略号并可点击展开收起。整体布局采用响应式设计,针对桌面、平板、手机设定不同字体大小和宽度断点,确保在各种设备上均能美观展示。双层缓存(服务端+客户端)与降级策略相结合,既提升性能又保证稳定的用户体验。

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

本文介绍了在 Java 中使用开源库 ZXing 快速生成二维码的完整流程。首先通过 Maven 引入 core 与 javase 两个依赖,随后说明了四步核心实现:设置字符集、容错级别和边距等 EncodeHint 参数;使用 QRCodeWriter 将内容编码为 BitMatrix;利用 MatrixToImageWriter 将矩阵输出为 PNG 等图片;保存至指定路径。进一步提供了在二维码中心嵌入 Logo、定制前景/背景颜色的实现方法,并建议将生成、保存及默认参数封装为 QRCodeService 以便复用。文中还演示了 Spring Boot 控制器实时返回二维码图片的示例,并列出中文乱码、识别失败、边距不足、性能瓶颈等常见问题的解决方案及用户绑定、电子票务、支付收款等典型应用场景。通过本文可掌握 Java 生成、定制和在生产环境中集成二维码的全部要点。

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

Math.abs() 在普通情况下返回非负数,但对 int 的最小值 Integer.MIN_VALUE 会返回负数。原因是补码表示下,-Integer.MIN_VALUE 超出 int 可表示范围,导致溢出并仍为原值。JDK 已在文档中说明此为设计特例而非 bug。使用时需检测该边界,或改用更宽的数据类型、BigInteger、Math.abs((long)…) 等安全做法,并在单元测试中覆盖极值。

打牌记账-使用手册

打牌记账是一款免安装、免注册的浏览器实时记账工具,专为麻将、斗地主等多人局设计。支持创建或加密房间(最多8人),通过二维码或链接邀请,所有操作实时同步,系统自动计算盈亏并保存历史记录。使用时打开页面、输入昵称即可创建或加入房间,点击输家卡片选择收款人并输入金额完成记账,房主可一键结算并锁定房间。数据跨平台实时保存,密码采用 BCrypt 加密,安全可靠,并提供常见问题解答。

打牌记账-技术文档

本项目针对多人打牌记账难题,开发了一款基于Web的实时协作记账小程序。目标是实现房间内操作实时同步、最多8人在线、数据持久化、跨平台访问以及简洁易用。技术栈选用Spring Boot、MyBatis‑Plus、MySQL、WebSocket、原生HTML5/JS、Thymeleaf、Fastjson2、BCrypt,构建工具为Maven。系统采用三层架构:浏览器/手机/微信Web客户端 → Spring Boot 应用层(REST Controller、业务 Service、MyBatis‑Plus Mapper、WebSocket 处理) → MySQL 数据库。核心功能包括:①房间管理,使用8位随机码唯一标识并通过乐观锁控制人数上限;②用户管理,加入房间时校验容量、用户名唯一性并自动设定首入者为房主;③记账、结算等业务通过统一 DTO 与 WebSocket 实时推送,保证数据一致性和历史查询。全文详述了项目结构、关键实现代码及安全加密等细节。