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

Linux命令速查手册

本文提供Linux常用命令速查,包括查看系统硬件信息(arch、uname、/proc/*、lspci、lsusb),时间管理(date、cal、clock),关机/重启(shutdown、reboot),文件目录操作(cd、ls、tree、mkdir、rm、mv、cp、ln、touch),文件搜索(find、locate、whereis、which),挂载/卸载文件系统(mount、umount、fuser),磁盘空间查询(df、du、rpm、dpkg),用户组管理(useradd、groupadd、passwd、chage),权限与属性设置(chmod、chown、chgrp、chmod +s/g/t、chattr),压缩打包(gzip、bzip2、tar、zip、rar),以及RPM 包的安装、查询、验证、升级和删除等完整示例。

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

文章演示了在HTML页面中通过按钮实现复制当前页面链接到剪切板的完整步骤:使用<a>标签获取链接,点击按钮时动态创建隐藏的<input>,将链接写入并选中,调用 document.execCommand("Copy") 执行复制,依据返回值或异常弹出成功、失败或错误提示,从而实现“一键分享”。

HTML页面嵌入视频的方案

文章介绍了在HTML页面中使用 `<iframe>` 标签嵌入视频的基本方法,示例代码演示了如何通过 `src` 指定YouTube视频地址、设置宽高、允许全屏及相关权限。若需禁止自动播放,可在 `allow` 属性中加入 `autoplay=false`,并可通过 `style` 调整布局。整个实现简洁且可直接复制使用。

NC93 设计LRU缓存结构

本文介绍了在容量固定的情况下实现 O(1) 时间复杂度的 LRU(最近最少使用)缓存。题目要求提供构造函数、`get(key)` 与 `set(key,value)` 两个接口,并在缓存超出容量时淘汰最久未使用的键值对。核心实现思路是结合哈希表快速定位节点和双向链表维护使用顺序:每次 `get` 或 `set` 都将对应节点移动到链表头部;插入新键时若容量已满则删除链表尾部节点。代码给出 Java 实现,包括节点类、插入、移动、删除等辅助方法,完整满足题目 O(1) 的性能要求。

mapstruct的基本使用

MapStruct 是基于注解的编译期代码生成器,可通过普通 getter/setter 实现类型安全、无反射的对象映射,避免手写冗余代码并在编译时捕获映射不完整或类型不匹配的问题。文章先展示了原始的博客评论接口实现,代码臃肿且不易维护,随后引入 MapStruct 依赖并创建 `CommentInfoConverter` 接口,在其中通过默认方法把 `HttpServletRequest` 的参数转换为 `Comments` 实体,控制层只需调用 `commentInfoConverter.map(request)` 即可完成对象构建,代码更简洁。最后给出运行时报的 `NullPointerException` 堆栈,提示在使用旧版 1.2.0.CR1 时可能出现内部处理错误。

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

本文介绍在 SpringBoot 项目中通过 Nginx 代理获取客户端真实 IP 并解析其归属地的实现方案。首先在 Nginx 配置 `X-Real-IP` 与 `X-Forwarded-For` 头部,将真实 IP 传递给后端;随后编写 `IpUtil` 工具类,从请求头或 `request.getRemoteAddr()` 读取 IP;引入 `ip2region` 库并在资源目录放置 `ip2region.db`,使用 B‑tree 算法查询 IP 对应的省、市或国家信息;最后在控制层调用 `IpUtil.getIpAddr` 与 `IpUtil.getIpPossession`,将解析结果显示在评论区,实现博客评论的 IP 属地展示。

NC57 反转数字

题目要求在不使用 64 位整数的前提下,对 32 位有符号整数的数字部分进行翻转,保留符号位,若翻转后超出 \[-2³¹, 2³¹‑1\] 范围则返回 0。解法思路是循环取出原数的最低位(x % 10),累乘 10 并加到结果 res 中,同时将 x 除以 10。为判断溢出,使用 long 类型暂存结果,最后检查 `(int)res == res`,若相等返回转化后的 int,否则返回 0。示例包括正数、负数、含尾零以及溢出情况。

NC35 编辑距离(二)

本文介绍了编辑距离的变形问题:在给定插入、删除和替换三个操作代价的前提下,求将字符串 str1 编辑为 str2 的最小总代价。要求时间复杂度为 O(n²),空间复杂度为 O(n)。文章通过动态规划构建二维数组 dp[i][j],表示将 str1 前 i 个字符转换为 str2 前 j 个字符的最小代价,初始化第一行和第一列分别对应纯插入或删除的成本,随后递推考虑字符相等、插入、删除和替换四种情况,最终返回 dp[len1][len2]。提供了完整的 Java 实现代码示例,并给出两组示例输入输出验证算法正确性。

NC38 螺旋矩阵

本题要求对任意 m × n 矩阵按顺时针螺旋顺序输出所有元素,数据规模 0 ≤ m,n ≤ 10,元素绝对值 ≤ 100,时间、空间均需 O(mn)。解法采用四个边界指针 left、right、up、down,循环在边界未交叉时依次遍历上边从左至右、右边从上至下、下边从右至左、左边从下至上,并在每次遍历后收缩相应边界,直至完成。代码实现简洁,先排除空矩阵,随后在 while 循环中按上述顺序加入结果列表,满足题目要求。