# 正能量 > 记录生活点滴,分享代码编程、运维网络与日常思考。 ## 网站入口 - [文章归档](https://www.znl.net/posts/) - [分类](https://www.znl.net/categories/) - [RSS](https://www.znl.net/index.xml) - [站点地图](https://www.znl.net/sitemap.xml) ## 已发布文章 - [在 Kubernetes 中部署 PostgreSQL 16(单机版,集群内全放开访问)](https://www.znl.net/posts/k8s-postgres/): 补充 Kubernetes 部署 PostgreSQL 16 的内网访问边界、存储依赖与恢复验证说明。 - [Kubernetes 上的 Redis 部署](https://www.znl.net/posts/k8s-redis/): 解释 Kubernetes Redis 单节点部署中,资源、用户权限与数据持久化需要怎样配套验证。 - [WireGuard 实现内网资源访问](https://www.znl.net/posts/wireguard-lan/): 补充 WireGuard 访问内网时的路由、AllowedIPs 与返回路径检查方法。 - [Win10 LTSC禁止软件安装方法](https://www.znl.net/posts/windows-block-install/): 补充 Windows 10 LTSC 限制软件安装的适用对象、策略验证与恢复思路。 - [Windows防锁屏工具技术实现](https://www.znl.net/posts/windows-keep-awake/): 解释 Windows 防休眠 API 示例的能力边界,区分系统休眠、显示器电源与账户锁定策略。 - [Spring自定义Aop实现锁机制](https://www.znl.net/posts/spring-aop-lock/): 补充 Spring AOP 声明式锁的作用范围,区分单进程并发控制与多实例协调。 - [Linux下用docker-compose自建RustDesk远程控制服务器](https://www.znl.net/posts/rustdesk-compose/): 说明 RustDesk Compose 中注册、中继与管理组件的分工,以及客户端连接的验收范围。 - [Springboot实现读取Nacos中指定的配置文件并实现自动刷新](https://www.znl.net/posts/nacos-config-refresh/): 解释 Spring Boot 读取 Nacos JSON 配置并自动刷新的生命周期与并发检查点。 - [缓存穿透,缓存击穿,缓存雪崩出现的原因及解决方案](https://www.znl.net/posts/cache-failures/): 用请求来源和失效范围区分缓存穿透、击穿与雪崩,并补充方案选择的验证方法。 - [Aliyun九年ECS](https://www.znl.net/posts/aliyun-ecs-notes/): 保留早期阿里云 ECS 购买与导入镜像记录,补充活动价格与初始化过程的核对方法。 - [k3s安装部署记录](https://www.znl.net/posts/k3s-install/): 整理 k3s 安装记录的阅读顺序,区分服务配置、客户端凭据和附加组件设置。 - [K8S部署adguardhome](https://www.znl.net/posts/k8s-adguard/): 补充 Kubernetes AdGuard Home 部署的 DNS 端口、节点网络与持久化验证方法。 - [k8s部署3节点Naocs集群](https://www.znl.net/posts/k8s-nacos/): 说明 Kubernetes 三节点 Nacos 配置中,外部 MySQL、节点发现与持久化依赖。 - [Spring OAuth2 Client通过code获取AccessToken](https://www.znl.net/posts/oauth2-code-token/): 补充 OAuth2 授权码换取令牌流程的上下文,说明重定向地址、PKCE 与错误验证。 - [Java根据硬件信息生成唯一机器码](https://www.znl.net/posts/java-machine-id/): 解释 Java 硬件信息生成机器标识的组成,补充稳定性、空值与隐私检查。 - [Win11 跳过联网登陆](https://www.znl.net/posts/windows-local-account/): 说明 Windows 11 安装时本地账户处理记录的适用版本与验证范围。 - [网址备忘](https://www.znl.net/posts/linux-downloads/): 说明 Linux 下载与换源链接的分类,帮助区分系统安装镜像、旧版本归档和软件仓库。 - [Docker安装aria2+AriaNG](https://www.znl.net/posts/aria2-ariang/): 说明 aria2 与 AriaNG 的角色划分,补充 RPC 连接、目录权限与网络模式检查。 - [记录一个查看当前TCP和UDP连接的命令ss](https://www.znl.net/posts/ss-connections/): 解释 ss 连接查看命令的过滤目标与输出含义,区分监听、已建立连接和进程信息。 - [写一个ossutil的工具脚本](https://www.znl.net/posts/oss-backup-script/): 补充 ossutil 备份脚本的参数、凭据与恢复验证说明,区分上传成功和备份可用。 - [修改镜像仓库 mirror 地址](https://www.znl.net/posts/docker-registry-mirror/): 说明 Docker registry mirror 配置与 Kubernetes 容器运行时的关系。 - [修改Springboot启动的LOGO](https://www.znl.net/posts/spring-boot-banner/): 补充 Spring Boot 启动 Banner 的配置用途,并说明控制台展示与应用状态的区别。 - [k8s中创建MySQL配置文件](https://www.znl.net/posts/k8s-mysql-config/): 解释 Kubernetes MySQL 连接配置示例中,ConfigMap、命名空间和敏感字段的处理边界。 - [Spring Open Feign远程调用后,fallback回调无效的解决方案](https://www.znl.net/posts/feign-fallback/): 说明 Spring Cloud Alibaba 与 Sentinel 场景下 Feign fallback 未触发的检查顺序。 - [通过shell脚本批量转换所有图片为webp格式](https://www.znl.net/posts/images-to-webp/): 解释批量转换 WebP 脚本的输入范围、输出文件与图片效果验证方法。 - [分享一款跨平台的文本编辑器micro](https://www.znl.net/posts/micro-editor/): 补充 micro 文本编辑器记录的使用范围,以及与终端、文件编码和快捷键的配合。 - [Go语言编译指定操作系统的可执行文件](https://www.znl.net/posts/go-cross-compile/): 说明 Go 交叉编译时,目标操作系统、架构和本机运行环境的区别。 - [Linux下快速创建大文件的4种方法总结](https://www.znl.net/posts/linux-large-file/): 比较 Linux 创建大文件时的占用空间与写入成本,帮助理解测试文件的用途。 - [更新Docker的内存和CPU的占用](https://www.znl.net/posts/docker-resource-limits/): 解释 Docker 批量更新 CPU 与内存限制的命令范围和数值含义。 - [openwrt部署keepalived](https://www.znl.net/posts/openwrt-keepalived/): 补充 OpenWrt keepalived 部署的角色、虚拟地址与故障切换验证思路。 - [Debian 全球镜像站的源](https://www.znl.net/posts/debian-mirrors/): 解释 Debian 软件源镜像列表的用途,并说明发行版代号与安全更新源的核对方法。 - [修改Docker 镜像仓库 加速的快捷方式](https://www.znl.net/posts/docker-mirror-switch/): 说明 Docker 镜像加速切换脚本的作用位置,区分镜像仓库与通用加速地址。 - [Java FlatMap](https://www.znl.net/posts/java-flatmap/): 解释 Java Stream flatMap 的展开思路,并补充与 map 的区别和结果验证方法。 - [Nginx 反向代理HTTPS服务出现502错误的解决方案](https://www.znl.net/posts/nginx-upstream-sni/): 补充 Nginx HTTPS 上游 502 配置中,SNI、上游名称与 TLS 参数的不同作用。 - [宝塔面板安装nginx后报错](https://www.znl.net/posts/baota-nginx-error/): 解释宝塔 Nginx 缺少 LuaJIT 动态库报错的排查思路,区分依赖名称与实际加载路径。 - [清空 Docker 日志占用的磁盘空间](https://www.znl.net/posts/docker-log-cleanup/): 说明 Docker JSON 日志清理脚本的作用范围,补充日志轮转与操作前核对事项。 - [将System.out和 System.err输出到日志文件slf4j](https://www.znl.net/posts/stdout-slf4j/): 解释把 System.out 与 System.err 转接到 SLF4J 的用途,以及日志后端的配套关系。 - [bat文件调用PowerShell脚本](https://www.znl.net/posts/batch-powershell/): 说明 Windows BAT 调用 PowerShell 脚本时,参数、工作目录与退出状态的传递。 - [基于Web3j做账号签名认证](https://www.znl.net/posts/web3j-auth/): 解释 Web3j 签名验签示例中的消息恢复流程,并补充字符编码和防重放的检查点。 - [以太坊openethereum节点](https://www.znl.net/posts/openethereum-node/): 补充 OpenEthereum 节点部署记录的同步、链配置与接口访问检查点。 - [Proxmox VE 7.0 登陆的时候提示没有有效的订阅](https://www.znl.net/posts/proxmox-subscription/): 说明 Proxmox VE 7.0 订阅提示相关记录的版本范围与使用边界。 - [解决Nginx反向代理https502错误的问题](https://www.znl.net/posts/nginx-https-502/): 说明 Nginx 反向代理 HTTPS 时,SNI 与 HTTP Host 头为何需要分别检查。 - [使用jib-maven-plugin调整Jvm内存大小](https://www.znl.net/posts/jib-jvm-memory/): 解释 Jib 构建配置中的 JVM 内存参数,区分镜像构建参数与容器运行限制。 - [Docker部署Nginx proxy manager](https://www.znl.net/posts/nginx-proxy-manager/): 解释 Nginx Proxy Manager 的 Compose 配置、管理入口与代理业务验证顺序。 - [docker-compose部署elasticsearch和kibana单节点](https://www.znl.net/posts/elasticsearch-kibana/): 补充单节点 Elasticsearch 与 Kibana 的服务关系、版本匹配和数据目录验证方法。 - [配置Linux中vim中文乱码的问题](https://www.znl.net/posts/vim-chinese/): 解释 Vim 中文乱码设置中,文件编码识别、内部编码与终端编码的区别。 - [Openwrt 命令行修改主题](https://www.znl.net/posts/openwrt-theme/): 说明通过 OpenWrt 命令行切换 LuCI 主题时,安装包与主题配置的对应关系。 - [Docker-compose 一键部署特殊服务](https://www.znl.net/posts/compose-services/): 说明 Docker Compose 服务组合示例的网络、端口和持久化目录,帮助看清配置依赖。 - [解决Brew慢的问题](https://www.znl.net/posts/homebrew-mirrors/): 解释 Homebrew 下载慢的不同阶段,说明安装脚本、仓库和二进制包来源的区别。 - [HEU KMS Activator(离线KMS激活工具)](https://www.znl.net/posts/kms-notes/): 补充历史 KMS 工具记录的阅读边界,区分技术介绍与合法的软件授权。 - [搬瓦工/bandwagonhost 促销优惠码,新增10Gbps带宽的cn2 gia线路VPS,移动+联通同步走企业级带宽](https://www.znl.net/posts/bandwagonhost-notes/): 保留早期 BandwagonHost 套餐促销记录,补充线路、资源与价格信息的核对方法。 - [Docker 开启2375端口](https://www.znl.net/posts/docker-api-port/): 说明 Docker 2375 端口配置的功能与风险,区分远程管理 API 与容器业务端口。 - [docker 默认空间不足的问题解决](https://www.znl.net/posts/docker-data-move/): 解释 Docker 数据目录迁移的容量、停机一致性和配置切换步骤。 - [国内无法安装docker或者安装docker慢的解决方案](https://www.znl.net/posts/docker-mirror-install/): 说明 Docker 安装镜像源链接用于解决哪个下载阶段的问题,以及如何验证是否生效。 - [Customizing docker](https://www.znl.net/posts/docker-remote-socket/): 解释用 systemd Socket 暴露 Docker API 的旧版配置,并说明远程访问的权限边界。 - [ROS 6.x下防火墙](https://www.znl.net/posts/routeros-firewall/): 补充 RouterOS 防火墙脚本的 input、forward 与规则顺序,帮助读懂允许和丢弃条件。 - [ROS 6.X目前限速比较稳定的一个脚本,来自YouTube](https://www.znl.net/posts/routeros-queue-script/): 说明 RouterOS 6.x 队列脚本如何按连接和数据量分类,并解释带宽参数的替换位置。 - [Linux下时间不同步的问题](https://www.znl.net/posts/linux-time-sync/): 区分 Linux 时区、系统时间与网络同步,说明旧版 rdate 排查记录的范围。 - [一行代码行天下](https://www.znl.net/posts/shell-installer-notes/): 解释历史 Shell 下载命令的组成与执行边界,帮助看懂脚本安装笔记。 - [Linux 下Nginx 设置为服务模式](https://www.znl.net/posts/nginx-service/): 解释 Nginx SysV 服务脚本怎样关联二进制、配置路径与开机启动。 - [关于Idea2017卡顿的问题](https://www.znl.net/posts/idea-performance/): 补充 IntelliJ IDEA 2017 卡顿处理记录的适用边界,区分主机名问题与 JVM 内存调整。 - [Linux 下VPN一键安装脚本](https://www.znl.net/posts/ipsec-vpn-script/): 说明 IPsec VPN 安装脚本链接的用途,以及运行前应核对的系统与网络条件。 - [Linux tomcat 启动延迟5分钟问题解决](https://www.znl.net/posts/tomcat-startup-delay/): 说明 Tomcat 启动延迟与随机源配置的历史排查思路,避免把单一修改视为通用修复。 - [Linux 端口映射脚本](https://www.znl.net/posts/linux-port-forward/): 解释 iptables 端口映射脚本的参数含义,说明目标转换与返回流量应怎样一起验证。 - [Centos6.9下通过yum命令安装mysql](https://www.znl.net/posts/centos-mysql/): 补充 CentOS 6.9 安装 MySQL 5.6 的历史范围,解释仓库、数据目录和权限配置的关系。 - [Linux 安装Redis](https://www.znl.net/posts/redis-install/): 解释 Redis 源码安装与配置记录,并补充监听地址、认证和保护模式的作用范围。 - [Linux下修改时区不重启](https://www.znl.net/posts/linux-timezone/): 说明 Linux 修改时区与设置硬件时钟的区别,并纠正原命令说明中的易混点。 - [Clear DNS Cache](https://www.znl.net/posts/flush-dns/): 区分操作系统、应用与递归 DNS 缓存,帮助判断清缓存后为什么结果可能不变。 - [linux下使用speedtest测试主机网速](https://www.znl.net/posts/linux-speedtest/): 说明 Linux 服务器测速笔记的使用前提,以及下载来源与结果解读的注意事项。 - [Spring AOP 切面](https://www.znl.net/posts/spring-aop/): 补充 Spring AOP execution 切点表达式的阅读顺序与代理调用边界。 - [CentOS安装docker](https://www.znl.net/posts/centos-docker/): 说明 CentOS 旧版 Docker 安装记录中,发行版软件包与官方安装方式的区别。 - [Ubuntu 16.04连接无线网络](https://www.znl.net/posts/ubuntu-wifi/): 梳理 Ubuntu Server 16.04 无线联网记录的驱动、认证与地址获取步骤。 - [Redis 后台启动](https://www.znl.net/posts/redis-daemon/): 解释 Redis 后台启动与配置文件加载的关系,补充实际启动结果的检查方式。 - [通过Apanic解析中国IP](https://www.znl.net/posts/apnic-china-ip/): 解释通过 APNIC 委派数据解析中国 IPv4 地址段的用途,以及地区登记信息的边界。 - [ThinkPHP使用nginx后无法显示验证码的问题](https://www.znl.net/posts/thinkphp-captcha/): 说明 ThinkPHP 验证码在 Nginx 环境中的重写排查方向,区分路由与图片生成问题。 - [Linux通过sftp来上传文件,并保证用户在固定的目录下](https://www.znl.net/posts/sftp-chroot/): 解释 SFTP chroot 目录限制的配置思路,补充目录所有权与可写子目录的区别。 - [php中http到https的自动跳转](https://www.znl.net/posts/php-https-redirect/): 解释 PHP 中 HTTP 跳转 HTTPS 的基本流程,以及代理部署时应检查的请求信息。 - [最新后台界面维护](https://www.znl.net/posts/admin-ui-notes/): 说明早期后台界面维护笔记的留存状态,并明确截图缺失时可提供的信息范围。 - [Spring MVC 找出所有的URL映射地址](https://www.znl.net/posts/spring-url-mappings/): 说明通过 RequestMappingHandlerMapping 查看 Spring MVC 映射的方法与使用范围。 - [Spring MVC URL的正则表达式](https://www.znl.net/posts/spring-url-regex/): 解释 Spring MVC 路径变量正则示例,说明 user 与 num 两部分如何从 URL 提取。 - [常用防火墙设置](https://www.znl.net/posts/iptables-basics/): 解释旧版 iptables 规则清单的顺序、链用途和远程操作前的验证方法。 - [CentOS查看每个目录所占用空间大小](https://www.znl.net/posts/linux-directory-size/): 解释 du 查看目录占用时的层级和单位,帮助定位 Linux 磁盘空间问题。 - [Hibernate - Mapping Types](https://www.znl.net/posts/hibernate-types/): 说明 Hibernate 映射类型表应怎样用于 Java 属性与数据库列之间的类型检查。 - [RealVNC 5.1官方原版+注册码](https://www.znl.net/posts/realvnc-license-notes/): 保留 RealVNC 5.1 的历史下载与授权笔记,并说明重新安装前的核对事项。 - [Java生成唯一ID](https://www.znl.net/posts/java-unique-id/): 补充 Java 唯一 ID 示例的适用范围,区分进程内序列、随机标识与分布式唯一性。 - [JAVA转化日期为人性化方式显示](https://www.znl.net/posts/java-relative-date/): 解释 Java 相对日期格式化代码的用途,并说明时间差、时区与展示边界。 - [ROS pptp客户端连接到pptpserver内网](https://www.znl.net/posts/routeros-pptp-route/): 梳理 RouterOS PPTP 客户端接入远端内网时,静态路由与地址伪装的配置思路。 - [打通PPTP server所在的内网](https://www.znl.net/posts/pptp-lan-routing/): 解释 PPTP 客户端访问服务端内网时,IP 转发和源地址转换各自解决的问题。 - [Ubuntu修改bash](https://www.znl.net/posts/ubuntu-bash/): 说明 Ubuntu 中 /bin/sh 与 Bash 的差异,并解释旧版全局切换方案的影响范围。 - [IntelliJ IDEA注册码](https://www.znl.net/posts/idea-license-notes/): 保留早期 IntelliJ IDEA 授权记录,并说明旧版本信息与当前许可状态的区别。 - [nginx安装](https://www.znl.net/posts/nginx-build/): 解释 Nginx 源码安装记录中,编译依赖、构建选项与安装目录的作用。 - [26个提升java性能需要注意的地方](https://www.znl.net/posts/java-performance/): 把早期 Java 性能建议作为排查清单阅读,并说明为什么优化结果应以实际测量为准。 - [Linux 终端/ssh登录前后的欢迎信息修改](https://www.znl.net/posts/ssh-login-banner/): 区分 Linux 本地登录提示、SSH 登录前 Banner 与登录后的 MOTD 信息。 - [TCP中FLAG](https://www.znl.net/posts/tcp-flags/): 补充 TCP 标志位的阅读场景,帮助把报文标记与连接建立、关闭和异常排查联系起来。 - [什么是IaaS, PaaS和SaaS及其区别](https://www.znl.net/posts/cloud-service-models/): 把 IaaS、PaaS、SaaS 的区别对应到资源管理、运行环境和应用使用的责任边界。 - [Java线程安全和非线程安全](https://www.znl.net/posts/java-thread-safety/): 解释 Java 集合线程安全讨论中,共享对象与单线程对象的区别。 - [有关nginx的basic auth认证问题](https://www.znl.net/posts/nginx-basic-auth/): 说明 Nginx Basic Auth 的认证配置、密码文件路径与排错方向。 - [Nginx出现“413 Request Entity Too Large”错误解决方法](https://www.znl.net/posts/nginx-413/): 解释 Nginx 413 与 client_max_body_size 的关系,并补充配置范围和上传链路的检查方法。 - [最简单的centos安装pptpd的办法](https://www.znl.net/posts/centos-pptp/): 说明 CentOS 旧版 pptpd 安装笔记的范围,以及安装软件包后还需要完成哪些验证。 - [Ros自动备份到邮件](https://www.znl.net/posts/routeros-mail-backup/): 解释 RouterOS 导出配置并邮件备份的流程,区分生成备份、发送和恢复验证。 - [接口和抽象类](https://www.znl.net/posts/java-interface-abstract/): 比较 Java 接口与抽象类的建模侧重点,并补充旧版语法描述需要注意的变化。 - [Qos 单线(6.0适用)【原创】](https://www.znl.net/posts/routeros-qos-v6/): 补充 RouterOS 6.0 单线 QoS 配置的阅读顺序,说明接口、网段和优先端口的替换位置。 - [阿里云服务器mysql端口转发](https://www.znl.net/posts/mysql-port-forward/): 解释旧版 MySQL 端口转发记录中的 DNAT、SNAT 与返回路径,帮助理解双向流量。 - [OpenWrt安装LUCI](https://www.znl.net/posts/openwrt-luci/): 梳理 OpenWrt 安装 LuCI 的软件包、Web 服务启动和浏览器访问三个环节。 - [常用端口列表](https://www.znl.net/posts/network-ports/): 说明常见 TCP、UDP 端口表的查询用途,以及端口编号与实际服务识别之间的区别。 - [Linux命令行在su root后突然变成bash-4.1$的办法](https://www.znl.net/posts/bash-root-prompt/): 解释切换 root 后出现 bash-4.1 提示符时,应怎样检查主目录与 Shell 初始化文件。 - [常用NTP服务器地址及IP](https://www.znl.net/posts/ntp-servers/): 整理历史 NTP 地址清单的用途,并说明域名、IP、时区与时间同步的区别。 - [Svn钩子](https://www.znl.net/posts/svn-hooks/): 解释 SVN 提交前钩子怎样检查日志长度,以及服务端执行环境需要确认的内容。 - [Eclipse中设置${user}变量](https://www.znl.net/posts/eclipse-author/): 说明 Eclipse 自动注释中用户变量的来源,以及修改模板与启动参数的区别。 - [ROS下单线ADSL使用HTB+PCQ限速](https://www.znl.net/posts/routeros-htb-pcq/): 解释 RouterOS 单线 ADSL 的 HTB 与 PCQ 配置中,流量标记和上传下载队列如何配合。 - [三星Note2 note3非国行机也有通话录音、来电、信息归属地教程](https://www.znl.net/posts/samsung-call-recording/): 补充三星 Note2、Note3 旧版系统功能修改记录的适用边界与恢复准备。 - [收集大家常玩的网游端口](https://www.znl.net/posts/game-ports/): 保留早期网游端口收集清单,说明如何把历史端口信息用于排查而非直接放行。 - [QuartZ Cron表达式](https://www.znl.net/posts/quartz-cron/): 解释 Quartz CronTrigger 时间表达式的字段与常见易混点,帮助检查任务触发时间。 - [CentOS6安装图形界面](https://www.znl.net/posts/centos-desktop/): 说明 CentOS 6 图形桌面安装记录涉及的组件、启动方式和历史版本范围。 - [分享一个xmanager 4 (xshell)的序列号](https://www.znl.net/posts/xshell-license-notes/): 保留早期 Xmanager 与 Xshell 授权记录,并说明版本、安装来源与授权核对的范围。 - [解决linux VPN pptpd连接后客户端不能上网的问题](https://www.znl.net/posts/pptp-no-internet/): 解释 PPTP 客户端已连接但不能上网时,SNAT 与返回路径的排查思路。 - [centos pptpd](https://www.znl.net/posts/pptpd-packages/): 说明 CentOS pptpd 软件包链接的历史用途,并区分获取软件包与完整 VPN 部署。 - [Linux iptables](https://www.znl.net/posts/iptables-reference/): 补充 Linux iptables 查询与规则阅读的方法,帮助区分规则存在、命中和持久化。 - [Ldap活动目录常用属性介绍](https://www.znl.net/posts/ldap-attributes/): 说明 LDAP、Active Directory 属性清单应怎样结合对象类型、查询条件与字段实际值使用。 - [Nginx Windows版本启动文件](https://www.znl.net/posts/nginx-windows/): 说明 Windows 批处理菜单怎样管理 Nginx 的启动、停止与重载,以及路径相关的限制。 - [Javascript实现类似java中的Map功能](https://www.znl.net/posts/javascript-map/): 解释 JavaScript 旧版自定义 Map 的接口设计,并补充与原生 Map 对照时的检查点。 - [软件开发过程](https://www.znl.net/posts/software-process/): 梳理软件开发阶段与常见生命周期模型,帮助把流程概念对应到实际交付物。 - [Java图片合并成GIF图片](https://www.znl.net/posts/java-gif/): 补充 Java 多张图片生成 GIF 的基本思路,说明帧顺序、尺寸和播放时间的检查方法。 - [Java随机验证码](https://www.znl.net/posts/java-captcha/): 理解 Java 图片验证码代码的图像生成用途,并补充接入业务时的校验边界。 - [ROS首页强开配置](https://www.znl.net/posts/routeros-redirect/): 阅读 RouterOS HTTP 首次访问跳转脚本,理解地址列表、三秒窗口和三小时重复访问限制。 - [获取min到max的随机数](https://www.znl.net/posts/java-random-range/): 说明 Java nextInt 区间随机数示例的上下界、参数约束和适用场景。 - [java四舍五入](https://www.znl.net/posts/java-round/): 解释 Java 示例怎样用 BigDecimal 保留小数位,并补充浮点输入和舍入方式的注意事项。 - [ROS QOS 数据分类/队列(Queue)的理论](https://www.znl.net/posts/routeros-qos/): 从流量分类到队列调度,梳理 RouterOS QoS、HTB 和优先级之间的关系。 ## 阅读与引用 文章 HTML 为完整正文,引用请链接到文章规范地址。历史记录以文中标明的版本和时间为准,后续补充会单独标注。外部来源总结请同时参考文内原始来源。