Java

浏览该分类下的所有文章

基于Spring Boot + MyBatis-Plus + Thymeleaf的评论管理系统深度解析

本文围绕基于 Spring Boot、MyBatis‑Plus 与 Thymeleaf 的评论管理系统展开深度解析。首先阐述系统采用前后端分离、模板渲染相结合的架构,并选用 Spring Boot、MyBatis‑Plus、Redis、Bootstrap5 等技术以提升开发效率和性能。随后详细说明后端实现,包括分页查询(LambdaQueryWrapper 动态条件、PaginationInnerInterceptor 插件原理)、批量操作(删除、审核状态修改)及事务、幂等性保证。接着探讨缓存策略:评论变更后全库或按键前缀刷新 Redis,并提出懒加载与预加载方案。最后介绍前端响应式布局(表格/卡片切换、固定列宽、Flex 布局)及交互细节(内容展开、批量选择),实现 PC 与移动端的良好用户体验。

实现响应式图片查看器:轻量级lightbox解决方案

本文详述如何使用原生 HTML、CSS 与 JavaScript 构建一个轻量级、响应式的 Lightbox 组件。首先定义包含图片和放大/缩小按钮的 HTML 结构,并通过 CSS 实现全屏居中、半透明背景及圆形按钮的视觉效果。随后编写 JavaScript,实现点击任意图片弹出 Lightbox、滚轮或按钮控制缩放、拖拽移动、双指捏合手势的触摸缩放,以及点击背景或图片恢复默认状态以关闭弹窗。整个方案无需外部库,兼容桌面和移动端,提供平滑动画和良好交互体验。

留言板性能优化:从全量递归到按需加载的实践

原博客留言板一次性递归查询全部评论,导致数据库压力大、页面响应慢、资源浪费。优化思路改为首次只加载顶层评论,新增“展开回复”按钮,用户点击后通过 AJAX 异步获取该评论的完整回复树并平铺渲染。后端增加 replyCount 字段,仅查询顶层并递归返回子树,提供 `/comments/replies/tree` 接口;前端改造 HTML、JS 实现懒加载、展开/收起、平铺展示并优化样式。JMeter 测试显示平均响应时间从 1850 ms 降至 320 ms,查询时间降 97%,传输量降 93%,内存峰值降 82%,页面加载提升约5 倍,用户体验显著改善。

基于URL弹窗的图片链接生成功能技术实现

实现了在博客系统中通过弹窗输入图片URL并自动生成 `<img>` 标签插入编辑框的功能。核心包括模态对话框、正则校验 JPG/PNG/GIF/WEBP、实时预览、基于 Map 的 UUID 管理、光标位置控制以及删除操作。文中提供关键代码、响应式预览样式,并给出 CORS 与 Content‑Security‑Policy 安全建议。最后展望了拖拽上传、云存储、尺寸调节、懒加载等扩展方向。

实现平滑滚动的“返回顶部”按钮

本文介绍了在网页中实现平滑滚动的“返回顶部”按钮的完整步骤。首先在 HTML 中使用 `<button>` 并加入 SVG 图标、`aria-label` 与 `tabindex` 提升可访问性;随后通过 CSS 将按钮固定在右下角、设置圆形外观、透明度过渡、悬停提示和图标淡出效果;最后利用 jQuery 在按钮点击时调用 `$('html, body').animate({scrollTop:0},'slow')` 实现平滑返回顶部。整体实现兼顾视觉交互和无障碍需求,提升长页面的用户体验。

构建可定制的表情选择器组件

本文示例了如何使用 HTML、CSS 与 JavaScript 构建一个可高度定制的表情选择器组件。先搭建包含触发按钮、选择面板和文本框的基本结构;随后通过 CSS 为按钮和面板添加尺寸、圆角、鼠标指针等样式,实现美观且响应式的界面;核心在于 JavaScript:在页面加载时动态生成 Emoji 按钮列表,点击按钮即可将对应表情插入目标文本域,并阻止事件冒泡;点击触发按钮切换面板显示,点击页面其他位置自动隐藏。整体实现简洁、易扩展,适用于聊天、评论等场景,提供良好用户体验。

浅谈分布式唯一ID生成方案

分布式唯一ID需全局唯一、有序、高可用且不泄露信息。文中比较了UUID、数据库自增、Redis计数、Zookeeper节点版和Snowflake(64位结构、趋势递增但受时钟回拨影响)。随后介绍号段模式及美团Leaf、滴滴Tinyid、微信序列号等实现,降低DB压力并提升容错。最后阐述Snowflake改进(多时间线、Leaf‑snowflake、百度UidGenerator),处理时钟回拨,兼顾唯一与有序。

将Spring Boot项目部署到阿里云CentOS7并设置关闭命令行终端项目不停止运行

本文介绍了在阿里云 CentOS7 上部署 Spring Boot 项目并实现关闭终端后仍保持运行的完整流程:先在 yml 中更改数据库 IP,执行 clean‑package 打包得到 jar;登录云服务器,创建目录并上传 jar;编写 startup.sh 脚本,使用 `nohup java -jar /myworkspace/blog.jar --server.port=8081 &` 启动并将其设为可执行;通过 `chmod -R 777` 授权后运行脚本,使用 `tail -f nohup.out` 检查日志确认启动;提供了 Nginx HTTPS 配置参考;最后给出查询和 kill 进程停止 Spring Boot 的命令。

Hutool:让Java开发更简洁高效

Hutool 是一套面向 Java 开发的实用工具库,涵盖字符串、文件、网络、JSON 等常见需求。文章介绍了在 Maven 中引入 hutool‑all 的方式,并通过 StrUtil、FileUtil/IoUtil、HttpUtil、JSONUtil 四个示例演示了字符串去空白、文件读写、HTTP 请求及 JSON 转换的简洁用法。使用 Hutool 可显著简化代码、提升开发效率,是 Java 开发者的得力助手。

SpringBoot结合ip2region实现博客评论显示IP属地

本文介绍在Spring Boot博客系统中使用ip2region实现评论IP属地显示的完整方案。通过IpParseUtil类的getIpAddr获取请求IP,再用parse方法解析为“国家|区域|省份|城市|ISP”或自定义字段列表。将解析结果写入Comment实体的location字段,在前端页面读取并展示。文章还列出所需技术栈(Spring Boot、MySQL、HTML/CSS/JS、ip2region、Commons IO、Lombok)以及关键代码实现和集成步骤,帮助开发者快速为评论添加地理位置信息,提高互动体验。

实现异步天气数据获取与Spring缓存集成

本文介绍在 Spring Boot 中通过 @Async 实现天气数据的异步获取,并使用 @Cacheable 将结果缓存,降低对高德天气 API 的重复调用。示例代码演示了获取客户端 IP、解析地区、调用高德地理编码和天气接口、处理返回数据并把天气信息写入模型。文中说明了自定义 IP 解析工具、API Key 替换、RestTemplate/ WebClient 选择以及项目需引入 Spring Cache 与 Spring Web 的前置条件。结合异步与缓存后,可提升响应速度、减轻服务器负载、改善用户体验。

Java 17 新功能介绍(LTS)

2021 年 9 月 14 日发布的 Java 17 是长期支持(LTS)版,带来 14 项新特性:恢复始终严格的浮点语义;新增统一的 RandomGenerator 接口与工厂;在 macOS 上采用 Apple Metal 渲染并支持 AArch64 架构;删除已废弃的 Applet API;加强 JDK 内部封装,取消 --illegal-access 选项;预览 Switch 模式匹配;移除 RMI Activation;正式推出密封类;剔除实验性的 AOT/JIT 编译器;弃用 Security Manager;孵化外部函数与内存 API;二次孵化 Vector API;以及支持基于上下文的反序列化过滤器。全文提供下载链接与官方文档,属 Java 新特性教程系列。