- 博客(187)
- 收藏
- 关注
原创 Java代码编写实践:避免在静态初始化块中执行风险操作
若不确定某段代码是否绝对安全,应默认将其移出静态块,转为方法内调用或使用懒加载模式。这一原则能显著降低生产环境的运维风险。
2025-12-04 15:02:05
741
原创 系统卡顿排查指南:从 atop 到自动恢复
本文档介绍如何使用atop工具诊断Linux系统卡顿问题,重点关注内存耗尽导致的死锁现象。主要内容包括: PSI指标:量化系统"痛苦程度",通过memsome和memfull判断内存阻塞情况,当memfull>40%时系统可能完全死锁。 PAG指标:反映内存回收剧烈程度,高scan值表明系统正疯狂寻找可用内存,可能导致CPU资源耗尽。 解决方案:建议配置earlyoom工具,在内存和Swap耗尽前(如内存<5%、Swap<10%)自动终止问题进程,防止系统彻底死锁。 环
2025-11-25 19:06:27
405
原创 VMware ESXi 虚拟机快照与 Thick/Thin 磁盘的备份机制详解
快照是“时间点保护”,备份是“数据拷贝”;Thick 磁盘保证性能,Thin 磁盘节省空间。Thick 提供稳定运行;快照用于短期防护;备份用于灾难恢复。
2025-11-10 15:59:33
797
原创 Spring Boot 缓存:工具选型、两级缓存策略、注解实现与进阶优化
基础层:区分本地缓存(Caffeine)与分布式缓存(Redis)的特性边界策略层:“多机、高频读、低实时性”场景优先选择两级缓存实现层:两级缓存用手动编码,单级缓存用注解简化(需配RedisCacheManager)优化层:遵循“先更库再清缓存”保障一致性,针对性解决三大经典问题选型层:基于场景需求选择工具,拒绝“一刀切”方案。
2025-10-27 10:57:29
1073
原创 在编程时使用任何AI大模型 (Claude Code + cc-switch 配置指南)
服务商会根据账户等级,对单位时间内的请求次数 (RPM)、Token 处理量 (TPM) 等指标进行限制。完成配置后,用户即可在代码编辑器的终端中,通过简单的命令,调用 Kimi、GPT-4 或其他主流 AI 模型,辅助完成代码编写、解释和调试等任务。API Key 是一串由 AI 服务提供商生成的唯一字符串,用于验证请求者的身份并进行计费。) 会无法正确处理依赖关系,并抛出一系列警告,最终导致安装失败或即使安装完成也无法运行。并回车,若显示 Claude Code 的欢迎界面,则表示安装成功。
2025-10-23 01:13:36
2062
翻译 规范驱动开发 (Specification-Driven Development, SDD)
GitHub推出的规范驱动开发(SDD)是一场AI驱动的软件开发革命。它将规范作为核心产物,代码降级为规范的衍生品,颠覆了传统"代码为王"的开发模式。SDD通过/specify、/plan、/tasks等命令实现自动化工作流:将功能描述转化为完整规范,生成技术实现计划,并分解为可执行任务。这种方法大幅提升开发效率,使开发者从机械性编码中解放出来,专注于创造性和批判性思维。SDD特别适合应对现代软件日益增长的复杂度,支持快速迭代和业务转向,同时保持系统一致性。
2025-09-19 15:16:23
60
原创 Ubuntu DNS 综合配置与排查指南
优先使用查看真实 DNS持久化配置优选 Netplan,桌面可用图形界面企业环境建议内部 DNS 优先,配置前务必备份遇到解析异常,重启 systemd-resolved 并检查配置通过本指南,我们可以高效、规范地完成 Ubuntu 下 DNS 的配置与排查,确保系统网络解析的稳定与安全。
2025-08-15 18:18:43
2537
原创 复合索引的设计哲学与实践
摘要: 复合索引是提升多条件查询效率的关键,其设计需遵循最左前缀原则,按“高选择性、等值条件、范围条件、排序字段”顺序排列列。相比单列索引,复合索引通过一次扫描减少I/O开销,避免低效的索引合并。设计时需贴合高频查询场景,控制索引数量以减少写入负担,并利用覆盖索引避免回表。维护上应定期审查冗余索引,整合扩展而非新增,平衡读写性能。主动设计优于事后补救,尤其在大型表中创建索引需谨慎权衡资源消耗。(149字)
2025-08-03 17:51:10
752
原创 Laravel 原子锁概念讲解
在并发编程中,当多个进程或线程同时访问和修改同一个共享资源时,最终结果会因其执行时序的微小差异而变得不可预测,甚至产生错误。这种情况被称为“竞争条件”。一个典型的例子是商品秒杀场景:若库存仅剩 1 件,两个请求可能在同一时刻都读取到库存为 1,并各自执行扣减操作,最终导致商品超卖。Laravel 原子锁是构建健壮、高并发应用的有力工具。掌握其配置方法、get与block两种核心策略、以及闭包自动管理的模式,可以有效避免数据竞争问题。对于复杂的跨进程通信,owner与提供了解决方案。
2025-07-20 18:46:26
1238
原创 Rovo Dev CLI Windows 安装与使用指南
注意:不要选择右侧的"Create API token with scopes"Rovo Dev CLI 依赖 Git 环境,未安装将导致运行错误。联系组织管理员启用 Rovo Dev Agents 服务。:此令牌需"无范围(Unscoped)"权限。
2025-07-04 19:36:48
3831
原创 通过Netplan为Ubuntu服务器新增DNS以解析内部域名
通过Netplan为Ubuntu服务器添加内部DNS服务器是确保内部服务可访问性的常见操作。关键在于正确编辑YAML配置文件,将内部DNS置于优先位置,并通过应用。如果遇到解析问题,重启服务是一个重要的排查步骤。同时,利用和nslookup等工具可以帮助诊断问题根源。始终记得在修改系统配置前进行备份。版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
2025-06-11 11:29:00
670
原创 在 Ubuntu 中配置 Samba 实现「特定用户可写,其他用户只读」的共享目录
将目录 的所有权设为 用户和所属组,并设置权限: 权限:所有者()可读写执行;其他用户仅可读和执行。2. 配置 Samba 共享目录编辑 Samba 配置文件(通常位于 ),添加以下内容:配置参数详解参数作用共享目录的物理路径禁止匿名访问允许用户浏览目录默认所有用户不可写仅 用户可写新建文件的权限(所有者可读写,其他用户只读)新建目录的权限(所有者可读写执行,其他用户只读执行)3. 重启 Samb
2025-05-07 16:16:39
1365
原创 理解子网掩码:网络划分与 IP 地址管理的核心
子网掩码是一个 32 位(IPv4)或 128 位(IPv6,但概念上用前缀长度表示)的地址,用于区分 IP 地址中的网络部分和主机部分。它的核心作用是帮助网络设备判断一个给定的 IP 地址属于哪个具体的网络(或子网),以及该网络内可用的主机地址范围。1. 核心功能:通过与 IP 地址进行逻辑运算,提取出网络地址。明确 IP 地址中哪些位代表网络,哪些位代表该网络内的具体设备。2. 表示方法(IPv4):如。这是将 32 位二进制数分成 4 个 8 位组(字节),每组转换为十进制数,并用点分隔。
2025-04-25 12:24:05
2258
原创 Windows上使用NSSM注册定时服务
命令说明创建名为 servername 的服务(弹出配置界面)启动服务暂停服务重新启动服务删除服务修改服务(弹出编辑界面)nssm set servername 参数名 参数值设置服务参数使用 Windows 命令删除服务。
2025-04-06 15:55:47
671
原创 split按空格分割失败的罪魁祸首:不换行空格 (`\u00A0`)
在日常开发中,经常需要处理用户输入的文本,一个常见的操作就是根据空格将字符串分割成数组(例如,处理用空格分隔的标签、ID 列表等)。Java 中的方法通常能很好地完成这个任务。但有时,会发现一个看起来完全是用标准空格分隔的字符串,用split(' ')处理后却得到了一个未分割的、包含整个原始字符串的单元素数组!这到底是为什么呢?本文揭示一个常见的“隐形杀手”——不换行空格 (Non-Breaking Space, NBSP),并提供健壮的处理方法。
2025-03-29 18:15:45
1063
原创 在 Windows 上使用 ZIP 包安装 MySQL 的详细步骤
以下是使用官方 ZIP 包在 Windows 上安装 MySQL 的详细步骤,确保能通过成功连接。
2025-02-08 19:15:24
2342
原创 VSCode/Visual Studio Code实现点击方法名跳转到具体方法的
在 Visual Studio Code 中,通过设置和使用一些快捷键,您可以轻松地点击方法名跳转到方法实现。这通常依赖于所安装的语言扩展,并使用 IntelliSense 功能。
2024-12-26 17:51:24
15326
原创 Mysql索引-学习笔记
可以看到,如果where子句仅仅使用联合索引的第二个字段作为过滤条件,那么如果select中的字段不在联合索引中,就会使用全表查询,如果使用的字段在联合索引中,那么就会使用index索引。如果希望使用联合索引的第二个字段作为过滤条件,此时应该在where子句中加上联合索引的第一个字段,这两个字段在where子句中的顺序,或者有其他where语句,并不影响使用ref索引。在使用联合索引时,如果where子句中仅仅使用联合索引的第二个字段作为过滤条件,将可能导致索引类型为ALL或者index。
2024-11-04 16:20:10
399
1
原创 Ubuntu 系统 LVM 逻辑卷初始化&扩容实战指南
在虚拟化环境中,调整磁盘大小是一个常见的需求。本文将指导你如何在ESXi上调整连接的LVM磁盘大小,并在Ubuntu系统中进行相应的配置更新。
2024-10-23 20:10:34
1892
原创 systemd指令之journalctl指令
在Linux系统的发展历程中,init进程一直是系统启动的核心。启动时间长init进程采用串行启动机制,只有在前一个进程启动完成后,才能启动下一个进程,这导致了整体启动时间的延长。启动脚本复杂init进程负责执行启动脚本,但不管理其他事务。启动脚本需要自行处理各种情况,这往往使得脚本变得冗长且复杂。正是由于这些限制,systemd应运而生。systemd是一个现代化的初始化系统,它旨在克服init的缺点,提供更快的启动速度和更强的功能性。systemd通过并行处理服务的启动,减少了系统的启动时间。
2024-06-29 11:23:26
659
原创 Linux中挂载Windows Samba共享的指南
为实际的IP地址和共享路径,这个路径显示挂载目录为只读。确保你的Linux系统已安装。其中-v将会显示挂载详情。创建一个凭证文件(例如。为实际的域账号信息。
2024-05-31 10:52:08
919
原创 laravel接口添加注释导致报错:commons.js:2 Uncaught TypeError: Cannot read properties of null (reading ‘src‘)
经过排查,发现原因是使用了分号作为注释符,通常情况下,env仅支持使用井号#作为注释符。
2024-05-18 14:19:12
308
1
原创 Linux 性能分析工具 perf 的使用指南
perf是 Linux 内核的性能分析工具集,它可以用来监控和分析系统和应用程序的性能。perf监控 CPU 使用率:识别最消耗 CPU 的代码段。分析缓存命中和未命中:优化内存访问模式。记录和分析系统调用:追踪系统调用和事件。生成调用图:分析函数调用关系。检测软件和硬件事件:如页面错误、CPU 循环、分支预测等。通过这些功能,perf可以帮助诊断性能瓶颈、解决性能问题,并提高应用程序和系统的效率。
2024-03-27 10:58:45
1392
原创 使用闭包重构代码
假设有functionA和functionB,他们的的大部分方法付相同:步骤一 步骤二 步骤四,而小部分方法不同:步骤三A和 步骤三B,而且步骤四依赖步骤三的结果。那么如何重构这部分代码呢。
2024-03-26 20:11:48
506
原创 atop命令监控进程使用资源
atop是一个强大的性能监控工具,它提供了多个参数来帮助用户以不同的方式查看和分析系统性能。以下是一些常用的atop。
2024-03-21 11:49:26
2612
原创 修改ubuntu的子网掩码
1、找到需要修改的子网掩码所在的网卡,一般inet addr不是127.0.0.1的那个网卡就是我们需要修改的网卡。例如如果网卡名称是eth0,那么命令就是。替换为所需的子网掩码,并保存退出文件。建议按照上面推荐的方法执行。4、执行命令重启网络。
2024-03-13 12:28:16
1428
原创 java子程序返回值用Optional<T>代替null
如果一个方法在调用时需要考虑值为null的情况, 此时一般的处理方法有两种:1、如果不存在值,抛出异常。2、方法返回null,在执行 user.username 之前判断 user 是否为null但是抛出异常的开销很高,判断是否为null就必须包含特殊的代码处理null的可能性,如果客户端忽略了这种可能性,那么就会像上面一样抛出NullPointerException异常。
2024-03-08 14:43:57
499
原创 jstack命令解析
如果有一天,你的Java程序长时间停顿,也许是它病了,需要用jstack拍个片子分析分析,才能诊断具体什么病症,是死锁综合征,还是死循环等其他病症,本文我们一起来学习jstack命令~jstack 的功能jstack用法线程状态等基础回顾实战案例1:jstack 分析死锁实战案例2:jstack 分析CPU 过高jstack用于生成线程快照的,我们分析线程的情况,需要复习一下线程状态吧,拿小凳子坐好,复习一下啦~New:创建后尚未启动的线程处于这种状态,不会出现在Dump中。
2024-02-02 14:47:20
3182
原创 ubuntu内核转储分析——kdump和crash的下载和使用
向sysrq文件中写入1是为了开启SysRq功能(写入0是关闭SysRq功能),但是这需要内核支持(CONFIG_MAGIC_SYSRQ选项),它会让内核响应用户输入的任何操作,只要内核没有挂掉。是用来触发故意让系统统崩溃(crash)命令的命令,它会让内核立即即崩溃,并且不会管你有没有数据没有写回回磁盘,也不卸载载磁盘,而是完完全全地关机。是用来触发SysRq功能的命令。二是用户空间的工具kexec-tools,他将捕获内核的地址传递给生产内核,从而在系统崩溃的时候能够找到捕获内核的地址并运行。
2024-01-03 10:48:03
4314
1
原创 Gerrit的使用
查看用户界面 (noaa.gov)如图右侧的Code-Review就是默认的Review Lable。打开Projects->All-project->Edit Config,在最后面添加下面代码,点击save如下:关于function,function用于评估标签的多个投票的函数的名称。仅当默认提交规则用于标签时,才会应用此功能。如果编写自定义提交规则(并且不调用默认规则),则函数名称将被忽略,并可能被视为可选。
2023-12-12 20:46:59
3954
原创 Docker入门&安装gerrit软件
docker desktop是Docker在Windows 10和macOS操作系统上的官方安装方式,这个方法依然属于先在 Windows 上部署 Docker 的方法都是先安装一个虚拟机,并在安装 Linux 系统的的虚拟机中运行 Docker。比 WSL2 更香的是 Docker for windows_ydcdm0011的博客-优快云博客WSL2可以单独通过powershell 登录,详见WSL Ubuntu忘记root密码和用户密码 - 知乎 (zhihu.com)
2023-12-11 20:29:47
2385
原创 CPU核心、使用率、负荷、是否开启超线程、如何排查java程序cpu使用率过高
CPU 使用率就是 CPU 非空闲态运行的时间占比,它反映了 CPU 的繁忙程度。比如,单核 CPU 1s 内非空闲态运行时间为 0.8s,那么它的 CPU 使用率就是 80%;双核 CPU 1s 内非空闲态运行时间分别为 0.4s 和 0.6s,那么,总体 CPU 使用率就是 (0.4s + 0.6s) / (1s * 2) = 50%,其中 2 表示 CPU 核数,多核 CPU 同理。
2023-11-07 12:36:50
995
原创 通过开发者工具-网络排查响应时间过长的问题
关键词:network 网络 pending 开发者工具有时候我们会发现某次http请求花费了很长时间,比如会花费十几秒,那么我们可以通过开发者工具的网络和其他一些工具来分析请求时间过长的原因分别用edge、chorme打开一个网络链接在请求能够被发出去前的等等时间。包含了用于处理代理的时间。另外,如果有已经建立好的连接,那么这个时间还包括等待已建立连接被复用的时间,这个遵循Chrome对同一源最大6个TCP连接的规则。发起请求的时间,通常小到可以忽略。等待响应的时间,具体来说是等待返回首个字节的时间。
2023-10-18 20:50:27
8456
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅