加载中

Java

文章分类

浏览该分类下的所有文章

237 篇文章 20

代码优化的部分实例

小邹分享了几种常见的代码优化技巧:用String.format提升URL拼接可读性;采用BufferedInput/OutputStream并配合缓冲数组减少文件读写次数;通过把列表转为Map降低嵌套循环的复杂度;使用try‑finally或try‑with‑resources确保ResultSet、PreparedStatement、Connection等资源及时关闭;以及使用数据库连接池(如Druid)避免频繁创建/销毁连接提升并发性能。

Linux命令速查手册

本文提供Linux常用命令速查表,涵盖系统信息(arch、uname、/proc)、时间管理、关机重启、文件目录操作(cd、ls、mkdir、rm、mv、cp、ln、touch)、搜索(find、locate、which)、挂载与卸载、磁盘使用(df、du)、用户组管理(useradd、groupadd、passwd)、权限与属性(chmod、chown、chattr)、压缩打包(tar、gzip、zip、rar)以及RPM包的安装、查询、更新和验证等,帮助快速查找和使用对应指令。

HTML实现复制当前链接到剪切板

本文介绍了在 HTML 页面中通过 JavaScript 实现“一键复制当前链接”功能的实现思路与代码。核心做法是:为文章链接设置 `<a id="articleHref">`,点击“分享给好友”按钮时,动态创建隐藏的 `<input>`,将链接地址赋值给它并选中,随后调用 `document.execCommand('Copy')` 将内容写入剪切板。复制成功或失败均通过弹窗提示,并在成功后隐藏临时输入框。示例代码使用了 Thymeleaf 语法生成链接,兼容主流浏览器,操作简洁、实现直观。

HTML页面嵌入视频的方案

文章介绍了在HTML页面中使用`<iframe>`嵌入视频的基本方法,给出YouTube 视频的示例代码,说明`src`属性填写视频地址即可。为防止自动播放,可在`allow`属性中加入`autoplay=false`或在URL 参数中设置`autoplay=0`,并提供了相应的代码示例。

mapstruct的基本使用

MapStruct 是基于注解的编译时 Bean 映射框架,使用普通 getter/setter 方式实现高效、类型安全的对象转换,避免反射和手写冗余代码。文中先展示了原始的评论发布接口实现,代码冗长且不优雅,然后引入 mapstruct‑jdk8 与 processor 依赖,创建 `CommentInfoConverter` 接口并在 `map` 方法中完成请求参数到 `Comments` 实体的映射,Controller 只需调用该转换器即可,代码简洁明了。最后给出编译时报错的堆栈示例,提示可能的版本或环境问题。

SpringBoot绕过Nginx代理获取客户端真实IP的解决方案

文章介绍了在 SpringBoot 项目中通过 Nginx 代理获取客户端真实 IP 并解析其属地的完整实现。首先在 Nginx 配置 `X-Real-IP` 与 `X-Forwarded-For` 头;随后编写 `IpUtil` 工具类,从请求头或 `request.getRemoteAddr()` 取出真实 IP。引入 `ip2region` Maven 依赖并将 `ip2region.db` 放入 resources,利用其 B‑tree 算法查询 IP 对应的省、市或国家,封装为 `getIpPossession` 方法返回简洁位置信息。最后在 Controller 中调用 `IpUtil.getIpAddr` 与 `IpUtil.getIpPossession` 即可在评论中显示用户的 IP 属地。整个方案涵盖 Nginx 配置、依赖添加、文件加载及代码实现。

Optional详解

Optional 是 Java 8 引入的容器类,用于包装可能为 null 的值,帮助避免 NPE 并提升代码可读性。文章首先介绍了 Optional 的三种创建方式:empty、of、ofNullable,随后逐一讲解常用方法的实现原理与使用场景,包括 get、isPresent、ifPresent、filter、map、flatMap、orElse、orElseGet、orElseThrow,并比较了 orElse/​orElseGet/​orElseThrow 的异同以及 map 与 flatMap 的区别。最后给出在 Service 层和 DAO 层的实战示例,演示如何通过 Optional 进行空值判断、异常抛出和链式调用,从而让业务代码更简洁、健壮。

什么?十行代码实现了斗图?

作者介绍了在评论区实现斗图的两种思路:上传图片或直接粘贴表情包链接。考虑到用户便利性和服务器负载,选择后者。只需在页面放置一个 textarea,并用十几行 JavaScript 读取输入内容;若以 http:// 或 https:// 开头,则自动生成 `<img>` 标签并插入评论列表,否则保持文本原样。文章还提供了示例代码和获取表情包链接的来源(fabiaoqing.com),演示了输入文字或图片地址后在列表中即时显示的效果。

博客的评论与回复功能的实现

文章介绍了在个人博客中实现完整评论、回复功能的全过程。首先设计 comment 表,保存博客 ID、父评论 ID 等层级信息;随后给出实体类 Comments,包含 replyComments、parentComment 等非持久化字段以构建树形结构。前端提供带隐藏字段的评论表单,利用 QQ 接口自动获取昵称、头像,并通过 Ajax 将评论或回复数据提交至 /comments。点击回复时,会把目标评论的 ID 与昵称写入表单并滚动至输入框,实现“@用户”提示。后端 Controller 接收参数、写入数据库并根据 parentId 为 -1 的记录遍历生成父子层级,最终在页面按“新评论在前、三级评论嵌套在二级下” 的顺序展示。全文侧重数据库设计、实体映射、前后端交互以及层级查询的关键实现细节。

面试官:synchronized可以锁字符串吗?

本文探讨 `synchronized` 能否锁定字符串。示例说明直接使用 `new String("常量")` 创建的对象地址不同,无法实现互斥;而锁定字符串常量或调用 `intern()` 后得到同一对象时,才能生效。但把所有字符串放入常量池会占用大量内存且只能在 full GC 时回收,导致性能风险。为避免此问题,推荐使用 Guava 的 `Interner`(弱引用实现)进行锁定,既保证对象唯一性,又能在内存紧张时被及时回收。总结:`synchronized`只能锁住常量池中的同一字符串实例,`intern()` 并非最佳方案,使用弱引用的 `Interner` 更为安全高效。

博客导流到微信公众号

文章介绍了利用 openwrite 的“博客导流公众号”功能,将博客阅读者引导关注微信公众号。实现方式是在首次访问文章时隐藏部分内容,弹出关注公众号并发送验证码的页面,用户完成一次操作后即可恢复正常阅读,从而为公众号获取流量。文中详细说明了在 openwrite 平台注册、在“增长工具”中创建导流任务、填写域名和公众号二维码链接、设置关键词(如“博客”)获取验证码,以及在博客页面嵌入指定的 JS 代码和 container div 的步骤。整个流程简单,影响用户体验极小,却能有效提升公众号关注量。

Nginx知识总结

Nginx是轻量高性能的反向代理/负载均衡Web服务器,支持HTTP等协议,具备跨平台、低内存、非阻塞高并发等优势。可用作静态站点、虚拟主机、API网关等。采用master‑worker模式、epoll事件模型实现异步非阻塞,少进程处理万级并发;不使用多线程以降低资源占用。支持正向/反向代理、动静分离、CDN加速及多种负载均衡算法(轮询、权重、IP‑hash、fair、least_conn)。并对比Apache,强调模块化、低资源、高并发特性;简要说明cookie与session区别及Nginx目录结构和核心配置项。