avatar
文章
81
标签
68
分类
11
首页
归档
分类
标签
关于
联系
隐私政策
AI
后端
  • Java
  • Go
  • Python
前端
音视频
投资
运维
随笔
分享
Clang's Blog
首页
归档
分类
标签
关于
联系
隐私政策
AI
后端
  • Java
  • Go
  • Python
前端
音视频
投资
运维
随笔
分享

Clang's Blog

MyBatis分页查询与性能优化实践
发表于2026-06-20|Java
分页查询是后台系统最常见的功能之一。列表页、搜索页、管理后台、日志查询都会用到分页。MyBatis 中分页实现并不复杂,但如果 SQL、索引和分页方式设计不当,数据量大后会出现查询变慢、数据库 CPU 升高和接口超时。 本文介绍 MyBatis 分页查询的基本写法、总数查询、深分页问题和常见优化方法。 基础分页 SQLMySQL 中常见分页写法: 12345select id, username, email, created_atfrom userswhere status = #{status}order by created_at desclimit #{offset}, #{pageSize} offset 的计算: 1int offset = (pageNo - 1) * pageSize; Mapper 接口: 123456789public interface UserMapper { List<UserDO> selectPage( ...
Spring Boot统一异常处理与返回结构设计
发表于2026-06-19|Java
在 Spring Boot 接口开发中,如果每个 Controller 都手动 try-catch,代码会很快变得重复且不一致。更好的方式是定义统一返回结构、业务异常和全局异常处理器,让 Controller 专注业务流程。 本文介绍一个常见实践:成功响应返回统一 JSON,业务失败抛出自定义异常,参数校验和未知异常由全局处理器统一转换。 定义统一返回结构先定义一个通用响应类: 12345678910111213141516171819202122public class ApiResponse<T> { private String code; private String message; private T data; public static <T> ApiResponse<T> success(T data) { ApiResponse<T> response = new ApiResponse<>(); ...
Nginx反向代理HTTPS站点配置实践
发表于2026-06-18|运维
Nginx 常用于对外提供 HTTPS 入口,然后把请求反向代理到后端服务。这样后端应用可以专注业务逻辑,TLS 证书、静态文件、压缩、限流、访问日志等由 Nginx 统一处理。 本文介绍一个常见配置:用户通过 https://example.com 访问 Nginx,Nginx 转发到本机 127.0.0.1:8080 的后端服务。 前提条件假设已经具备: 域名 example.com 解析到服务器公网 IP。 后端服务监听 127.0.0.1:8080。 已安装 Nginx。 已获取证书文件和私钥文件。 Ubuntu 安装 Nginx: 12apt updateapt install nginx 检查状态: 1systemctl status nginx 基础反向代理配置创建站点配置: 1vim /etc/nginx/sites-available/example.com HTTP 配置: 123456789101112server { listen 80; server_name example.com www.example.com; ...
Docker容器日志过大问题的排查与限制
发表于2026-06-17|运维
Docker 默认使用 json-file 日志驱动时,容器标准输出和标准错误会写入宿主机 JSON 日志文件。如果应用日志量很大,而没有配置日志轮转,单个容器日志文件可能增长到几十 GB,最终占满磁盘。 本文介绍如何定位 Docker 容器日志文件、临时清理日志、配置日志大小限制,以及在生产环境中需要注意的点。 查看 Docker 日志占用先查看 Docker 整体磁盘使用: 1docker system df 这个命令会显示镜像、容器、volume 和构建缓存的占用,但不会细分每个容器日志文件。 Docker 容器日志通常位于: 1/var/lib/docker/containers/<container-id>/<container-id>-json.log 查找大日志文件: 1find /var/lib/docker/containers -name '*-json.log' -size +500M -exec ls -lh {}...
Linux服务器磁盘空间排查与清理实践
发表于2026-06-16|运维
Linux 服务器磁盘空间不足是非常常见的运维问题。磁盘满了之后,服务可能无法写日志,数据库无法落盘,容器无法启动,甚至 SSH 登录也会变慢。排查这类问题时,关键是先定位哪个分区满了,再逐层找出占用空间最大的目录和文件。 本文整理一套常用排查流程,适用于大多数 Linux 服务器。 查看磁盘分区使用情况首先使用 df 查看各分区空间: 1df -h 输出示例: 123Filesystem Size Used Avail Use% Mounted on/dev/vda1 40G 38G 2.0G 95% //dev/vdb1 200G 120G 80G 60% /data 重点关注 Use% 和挂载点。如果 / 根分区接近 100%,很多系统组件都会受到影响。 查看 inode 使用情况: 1df -ih 如果磁盘空间还有,但 inode 用完,也会出现无法创建文件的问题。大量小文件、缓存文件和临时文件可能导致 inode 耗尽。 找出大目录从满的挂载点开始排查。例如根分区满了: 1du -h...
ROS工作空间catkin_make常见问题排查
发表于2026-06-15|ROS
ROS1 开发中,catkin_make 是最常用的工作空间编译命令。对于刚开始写 ROS 包的开发者来说,编译失败、找不到包、消息未生成、Python 节点不能执行等问题非常常见。 本文整理 catkin_make 工作空间的基本结构、常用命令和排查思路,帮助快速定位编译问题。 标准工作空间结构一个典型 catkin 工作空间: 1234567891011catkin_ws/ src/ demo_pkg/ CMakeLists.txt package.xml src/ scripts/ msg/ srv/ build/ devel/ src 存放源码包,build 和 devel 是编译生成目录。通常只需要把 src 下的包提交到 Git,build 和 devel 不提交。 创建工作空间: 123mkdir -p ~/catkin_ws/srccd ~/catkin_wscatkin_make 编译成功后加载环境: 1source...
ROS参数服务器的使用场景与实践
发表于2026-06-14|ROS
ROS 参数服务器用于在运行时存储和读取配置。节点名称、话题名称、控制频率、坐标系名称、传感器参数、算法阈值等都可以通过参数传入,而不是写死在代码中。 合理使用参数服务器可以让同一份节点代码适配不同机器人、不同传感器和不同环境。本文以 ROS1 为例,介绍参数的命名、读取、launch 配置和常见问题。 参数服务器是什么ROS master 内部维护了一个参数字典,节点可以通过 API 读取和写入参数。查看所有参数: 1rosparam list 查看某个参数: 1rosparam get /robot_name 设置参数: 1rosparam set /robot_name demo_bot 删除参数: 1rosparam delete /robot_name 参数服务器适合存储配置,不适合高频数据传输。实时变化的数据应该使用 topic、service 或 action。 全局参数和私有参数ROS 参数有命名空间。全局参数以 / 开头: 12/robot_name/use_sim_time 私有参数以 ~ 表示,绑定到当前节点命名空间。例如节点名为...
ROS话题通信中的消息频率与延迟排查
发表于2026-06-13|ROS
ROS 系统中,话题通信是最常见的数据传递方式。相机、雷达、IMU、里程计、控制指令都会通过 topic 发布和订阅。系统调试时,经常会遇到消息频率不稳定、延迟变大、订阅不到数据或控制响应慢等问题。 本文以 ROS1 为例,整理排查话题频率和延迟的常用命令、代码注意点和系统层面原因。 查看 topic 列表先确认当前系统中有哪些话题: 1rostopic list 查看某个话题的类型: 1rostopic type /camera/image_raw 查看消息结构: 1rosmsg show sensor_msgs/Image 如果话题不存在,先检查节点是否启动、命名空间是否正确、launch 文件参数是否覆盖了 topic 名称。 查看发布频率使用 rostopic hz: 1rostopic hz /odom 输出会显示平均频率、最小间隔、最大间隔和标准差。对于稳定发布的传感器,频率应该接近配置值。例如 IMU 100Hz,里程计 50Hz。 如果频率明显低于预期,可能原因包括: 发布节点计算耗时太长。 传感器驱动本身输出频率低。 CPU...
使用Scikit-learn构建一个完整分类任务流程
发表于2026-06-12|AI
Scikit-learn 非常适合构建传统机器学习任务。它提供了数据切分、特征预处理、模型训练、交叉验证和指标评估等工具。对于表格数据分类任务,先用 Scikit-learn 做一个完整 baseline,通常比直接上复杂深度学习模型更稳。 本文通过一个二分类任务,演示从数据读取到模型保存的完整流程。 准备数据假设数据文件 churn.csv 用于预测用户是否流失,字段包括年龄、消费金额、登录次数、城市、设备类型和标签: 12345import pandas as pddf = pd.read_csv("churn.csv")print(df.head())print(df.info()) 分离特征和标签: 123target = "is_churn"X = df.drop(columns=[target])y = df[target] 如果标签缺失,应该先清理: 123mask = y.notna()X = X[mask]y = y[mask] 划分训练集和测试集分类任务建议使用分层切分,保持标签比例: 123456789from...
Pandas数据清洗常见场景实践
发表于2026-06-11|AI
数据清洗是数据分析和机器学习项目中最耗时的环节。模型效果不好时,原因不一定是算法复杂度不够,很多时候是缺失值、重复数据、异常值、类型错误和类别编码没有处理好。 本文整理 Pandas 中常见的数据清洗场景,包括读取数据、查看概况、处理缺失值、去重、类型转换、异常值过滤、文本字段清理和类别编码。 读取数据并查看概况假设有一个用户行为数据文件: 123import pandas as pddf = pd.read_csv("users.csv") 先不要急着建模,应该先查看基本信息: 123print(df.head())print(df.info())print(df.describe()) head 查看前几行,info 查看字段类型和缺失情况,describe 查看数值字段的分布。 统计缺失值: 12missing =...
12…9
avatar
Clang
文章
81
标签
68
分类
11
Follow Me
公告
如果尚未看到成果,那是因为付出的努力还不够多,如果尚未梦想成真,那是因为等待的时间还不够久。笑到最后的人永远最精彩,最成功,最执着。
最新文章
MyBatis分页查询与性能优化实践
MyBatis分页查询与性能优化实践2026-06-20
Spring Boot统一异常处理与返回结构设计
Spring Boot统一异常处理与返回结构设计2026-06-19
Nginx反向代理HTTPS站点配置实践
Nginx反向代理HTTPS站点配置实践2026-06-18
Docker容器日志过大问题的排查与限制
Docker容器日志过大问题的排查与限制2026-06-17
Linux服务器磁盘空间排查与清理实践
Linux服务器磁盘空间排查与清理实践2026-06-16
分类
  • AI11
  • Go20
  • Java10
  • Python7
  • ROS11
  • 分享2
  • 前端1
  • 投资1
标签
HTTPS 虚拟环境 MySQL 磁盘清理 CDN 并发 模型评估 运维 Java 依赖管理 AI HTTP Github 接口设计 算法 参数服务器 调试 iOS FastAPI 深度学习 跨域 Pandas 数据清洗 MyBatis Linux SEO Python ROS 编译 音视频 logging macOS context catkin_make Hexo Spring Cache 多租户 Go 日志 播放器
归档
  • 六月 2026 20
  • 六月 2025 1
  • 二月 2025 1
  • 十一月 2024 6
  • 七月 2024 3
  • 六月 2024 4
  • 五月 2024 6
  • 四月 2024 4
网站信息
文章数目 :
81
最后更新时间 :
©2016 - 2026 By Clang
框架 Hexo 6.3.0|主题 Butterfly 5.3.3