自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(150)
  • 收藏
  • 关注

原创 git排查步骤

本次代码并没有真正全部丢失。导致dev上最新代码暂时看不到。git reflogdev存在本地修改,Git 为避免覆盖代码主动终止恢复。先确认分支→ 查 reflog→ 查 stash→ 保护当前工作区→ 确认 stash 内容→ 使用 apply 恢复→ 检查代码→ 最后提交遇到 Git 代码疑似丢失时,先查、先备份,不要第一时间 reset、clean 或强制覆盖。

2026-08-11 15:20:12 218

原创 LIMS 3.0 测试环境部署过程记录

只代表 Java 命令已提交,不代表 Spring Boot 一定启动完成。服务器内部服务部署已经完成,公网访问还取决于安全组、防火墙和 NAT 映射。原因是脚本使用了 Bash 语法,批量将 Nginx 配置里的。本身没有对应业务接口。是后端端口,后端没有。

2026-08-07 11:06:07 212

原创 linux下lims部署详细步骤参考

两个 MD5 值一致,表示内部包替换成功。如果输出为空,不要继续替换。检查端口,例如程序端口是。没有输出表示已经停止。

2026-08-07 11:05:33 216 1

原创 Windows 服务器 CPU 占满及 JVM Full GC 排查记录

服务器 CPU 接近 100%,首先需要确定具体是哪个进程占用 CPU。在管理员 PowerShell 中执行:3. 实际结果查询发现高 CPU 进程为:4. 排查结论确认服务器 CPU 主要由以下进程占用:步骤二:确认 Java 进程对应哪套服务1. 排查目的服务器中可能同时运行多套 Java 服务,因此需要根据启动命令确认 PID 对应的程序。3. 实际结果4. 排查结论CPU 高占用程序为:JVM 内存参数为:说明该服务:确认 CPU 是被普通业务线程、死循环线程,还是

2026-08-07 11:00:30 230

原创 Codex CLI 日志写盘(SSD 写入)问题排查

近期 GitHub 上有大量用户反馈 Codex CLI 存在日志写入异常的问题。持续增长,导致 SSD 写入量明显增加。

2026-06-26 09:02:37 350

原创 leetCode每日一题——边反转的最小成本

(u, 0):在 u,开关还没用(u, 1):在 u,开关已经用过这一步是整道题的灵魂。

2026-01-27 08:17:41 417

原创 Caffeine 入门到实战

在当今高并发的互联网应用中,缓存已经成为提升系统性能的关键技术之一。本文将带你从零开始,深入浅出地学习 Caffeine 这款高性能的 Java 缓存框架,并通过实际案例让你掌握缓存技术的精髓。Caffeine 是一个基于 Java 的高性能缓存库,由 Google 开发并开源。它被认为是 Java 缓存领域的王者,在性能测试中表现优异。

2026-01-26 08:50:15 963

原创 Git Cherry-pick & Clean Push 解决方案

Merge Request = 单个功能/提交的集合若发现不希望 MR 包含某次提交,新建独立分支 cherry-pick是最稳妥方案empty cherry-pick 常见于新增文件型 commit + orphan 分支始终确保工作区干净再 cherry-pick# 创建独立分支# cherry-pick 目标提交# 如果 emptygit add .# 推送。

2026-01-19 14:03:39 629

原创 线上问题排查记录——MySQL 子查询报错 “Subquery returns more than 1 row” 问题总结

该查询的核心是多个标量子查询(correlated subquery)用于从字典表。将大查询拆成 6 个独立部分(领用、归还、报废、新增、合并等),后,整个 UNION ALL 查询正常执行,不再报错。彻底消除子查询,避免优化器问题,同时大幅提升性能。→ 无结果,无隐藏字符(如全角空格、控制字符)。主表和字典表中空值情况正常,未导致多行匹配。,子查询只返回 0 或 1 行。已验证有效,且结果准确。

2025-12-24 11:23:19 607

原创 Docker 在 Ubuntu(国内网络)安装及问题解决总结

至此,Docker 在国内 Ubuntu 环境下的安装和常见问题全部解决!:官方 registry-1.docker.io 被干扰,旧加速器失效。:配置最新有效的镜像加速器(2025 年 12 月亲测可用):普通用户无权访问 Docker daemon。(或重启电脑)才能生效。

2025-12-23 10:51:32 950

原创 滑动窗口算法

滑动窗口不是一种技巧,而是一种“拒绝重复计算”的思维方式滑动窗口不是算法,是“不重复计算”的习惯。

2025-12-18 08:44:04 931

原创 leetCode每日一题:按策略买卖股票的最佳时机

下面我把:从建模 → 思路 → 算法 → 代码(含详细注释),一步一步来。

2025-12-18 08:24:30 467

原创 结合最近遇到的业务聊一聊redis分布式锁

写操作顺序错误 → 会导致位置库存永久丢失(致命)无并发控制 → 高并发下库存变负数(致命)项目设备查询不准确 + 只更新一条(严重)部分校验可以更严谨(中度)业务场景推荐方案普通业务(缓存、限流、幂等)单实例 + Redisson高并发扣库存、秒杀单实例 + Redisson + 短锁超时 + 预减库存金融级强一致性优先考虑 Zookeeper/etcd,不选 RedLock必须用 Redis 且极致可靠Redisson 的 RedLock 实现(慎用)

2025-11-27 08:21:24 1055

原创 库存逻辑修改——支持并发扣减(含AI)

写操作顺序错误 → 会导致位置库存永久丢失(致命)无并发控制 → 高并发下库存变负数(致命)项目设备查询不准确 + 只更新一条(严重)部分校验可以更严谨(中度)

2025-11-24 07:53:33 810

原创 Vue——vue2中的mixin有哪些问题

mixin是 Vue2 中逻辑复用的一种方式。它可以让多个组件共享相同的逻辑(数据、方法、生命周期等)。问题点Mixin命名冲突❌ 容易发生✅ 独立作用域来源追踪❌ 不清晰✅ 显式导入命名污染❌ 混合在一起✅ 函数作用域隔离逻辑复用⚠️ 不灵活✅ 灵活组合可读性❌ 差✅ 高可测试性❌ 难单测✅ 易单测。

2025-11-13 10:56:47 753

原创 Vue——vue2和vue3的一些区别以及组件通信方式

通信方向Vue2 方法Vue3 方法说明父 → 子propsprops属性传递子 → 父$emitemit事件触发兄弟Vue3 不再推荐 EventBus跨层级Vue3 提供响应式版本全局VuexPiniaPinia 更轻量简洁特殊场景ref + $refs 调用父直接调用子函数。

2025-11-13 10:54:53 869 1

原创 问题记录——mvn版本过低安装过程

用以下命令替换原版(在。

2025-11-07 11:45:21 270

原创 Kubernetes——Kubernetes Ingress 配置文件解释

Ingress 是 Kubernetes 中的网络资源,用于管理外部 HTTP/HTTPS 流量进入集群的路由规则。它不像 Service 暴露端口,而是基于域名和路径智能路由流量到后端 Pod/Service,常用于微服务架构的 API 网关。这个文件名为,针对一个 MES(Manufacturing Execution System,制造执行系统)应用,定义了基于主机名mes.local的路由规则。将流量根据路径(如)转发到不同的后端服务(如 device-service)。

2025-11-05 08:56:43 970

原创 Docker——一篇文章带你配置docker compose并使用

这是一个 Docker Compose 配置文件(通常命名为 ),用于定义和编排一个多容器 Docker 应用。它允许您通过一个 YAML 文件启动和管理多个 Docker 容器,形成一个完整的系统栈。文件版本为 3.8,支持 Docker Compose v1.27+ 或 v2.x。这个文件描述了一个 MES(Manufacturing Execution System,制造执行系统) 的后端基础设施,包括数据库、消息队列、MQTT 经纪人、多个微服务和前端应用。系统设计用于工业场景,如设备管理、生产跟踪

2025-11-05 08:06:57 815

原创 问题记录——node安装失败

使用 NodeSource 官方脚本安装 Node.js 18( 后 ),但报错“Finished Dependency Resolution” 和依赖缺失(如 、 等)。这是因为 CentOS 7(glibc 版本仅 2.17)已于 2024 年 EOL,不支持 Node.js 18(需要 glibc 2.28+)。NodeSource 的 RPM 包无法在 CentOS 7 上解析这些依赖,即使仓库已修复。关键原因:Snap 包管理器会打包所有依赖(包括 glibc),绕过系统限制,支持在 CentOS

2025-11-04 11:48:59 601

原创 问题记录——jdk安装失败解决办法

即使修复了 vault 仓库,CentOS 7 的基础 repo 也不包含 Java 17(它只支持到 Java 11)。解决方案是添加第三方仓库,如 Eclipse Adoptium(Temurin 项目),它提供兼容 CentOS 7 的 OpenJDK 17 RPM 包。失败,报错 “Permission denied”(权限被拒),这是 Linux shell 的常见问题。:确保您的 CentOS 7 yum 仓库已修复(参考之前对话的 vault 配置)。目录(需要 root 权限)。

2025-11-04 11:28:21 1437

原创 问题记录——Network is unreachable

Network is unreachable” 是 Linux 系统(包括 CentOS)常见的网络错误,通常表示网络接口未启动、没有 IP 地址、路由表缺失、或虚拟机网络适配器配置问题。这往往发生在虚拟机环境中,如 VMware 或 VirtualBox。以下是针对 CentOS 的快速排查和修复步骤。请一步步执行,并运行命令时用。对于 VirtualBox:设置 > 网络 > 适配器1 > 启用 > 连接方式:NAT。如果自动 DHCP 失败,手动配置。(如果需要 root 权限)。

2025-11-04 11:15:22 2281

原创 MES项目——生产计划与调度

【代码】MES项目——生产计划与调度。

2025-11-03 16:14:08 460

原创 Java并发编程——并发编程模型的两个关键问题:通信与同步

通信是指线程之间以何种机制来交换信息。在命令式编程中,主要有两种通信机制:共享内存(Java采用的模型,通过读写共享变量实现)和消息传递(线程通过发送消息交换信息)。共享内存模型下,线程通过内存访问来隐式通信,而消息传递则更显式。:同步是指在多个线程并发执行程序时,如何协调它们的执行顺序,以避免冲突(如数据竞争)。这通常通过锁机制(如synchronized关键字)、信号量或屏障等工具来实现,确保操作的原子性和可见性。

2025-11-03 14:06:48 383

原创 Java并发编程——Java 如何实现原子操作以及实现原子操作的三大问题

CAS 本身只保证单次操作的原子性,但如果在 CAS 执行期间其他线程修改了值,CAS 会失败(返回 false)。这些问题使 CAS 适合低争用场景,高争用时需结合其他机制(如锁或分段锁)。在实际开发中,优先使用 JDK 提供的原子类,它们已优化了这些问题。CAS 是一种乐观锁机制,它通过比较内存值是否与预期值相等,并在相等时更新为新值来实现原子更新。的方式:不断读取当前值、计算新值、尝试 CAS,直到成功为止。在 Java 中,原子操作是指在多线程环境下,确保操作不被中断的不可分割操作,主要通过。

2025-10-31 08:16:10 935

原创 Java并发编程——原子操作的实现原理

原子操作(Atomic Operation)是指在多线程或并发环境中,一个操作从开始到结束不会被其他线程中断或部分执行,确保操作的“不可分割性”。缓存锁(Cache Lock)是总线锁的演进形式,在现代多核 CPU(如 Intel Core 系列)中更常见。在多核处理器(如 x86 架构)中,总线锁(Bus Lock)是一种硬件机制,用于确保原子操作(如 CAS 或加法)的不可分割性。现代 CPU(如 x86、ARM、RISC-V)提供专用指令,确保操作在单指令周期内完成,或通过“原子性语义”防止重排序。

2025-10-30 08:29:36 890

原创 Vue+redis全局添加水印解决方案

以下是整个水印系统的开发过程,从安装包开始,到前端/后端实现、集成、调试。全程基于 Vue 2 + Element UI + Vuex + watermark-js-plus 前端,Spring Boot + Redisson (Redis) 后端。开发目标:动态模板水印 (e.g., “{showName} + {date}”),配置存 Redis,用户切换立即更新,未登录隐藏。假设你的 store 是平坦的 (index.js),以下是完整合并水印逻辑的 index.js。Vue 2 版本稳定!

2025-10-27 14:06:29 859

原创 今天10月24日,节日快乐!作为程序员的你,值得一个自定义的代码小礼物。

运行: python holiday_1024.py。日期: 2025-10-24。

2025-10-24 13:38:41 255

原创 Vue 项目全局水印功能完整实现指南

下面分别提供(Element UI + Vuex)和(Element Plus + Pinia)版本的完整代码。假设项目已安装 Vuex/Pinia 和 Element UI/Plus。测试时,确保登录后 userInfo 有name和jobNumber。

2025-10-24 12:19:38 1552

原创 Java并发编程——synchronized的实现原理与应用

是 Java 提供的一种内置关键字,用于实现线程同步,确保多线程环境下对共享资源的互斥访问。它是 JVM 层面的机制,简单易用,但底层实现较为复杂。机制实现的 Monitor 是对象头(Object Header)中的一部分,包含锁信息。JVM 通过字节码指令和锁优化来保证线程安全。它简单,但需注意死锁风险(多锁嵌套)。机制优化性能,避免不必要的开销。锁信息存储在对象头中(Mark Word,64 位中约占 64 位用于锁状态)。的锁不是简单的互斥锁,而是通过。

2025-10-22 09:27:21 591

原创 Java并发编程——volatile的原理对比分布式系统中一致性原理的应用

volatile是单机优化的利器,但分布式系统需要“共享无状态”设计或外部一致性机制。如果你的场景是多节点共享变量,优先评估 CAP 定理(一致性、可用性、分区容错),并测试实际部署。推荐阅读:《Java 并发编程实战》或《分布式系统原理》以深入理解。这些方案从低级(缓存/队列)到高级(框架)逐步抽象,核心是“外部化状态”而非依赖 JVM 内存。实际项目中:高频读写:优先 Redis/Kafka。强一致性:ZooKeeper + 数据库。微服务:Spring Cloud/Dubbo 全栈。

2025-10-21 09:14:08 884

原创 Java并发编程——提前聊一聊CompletableFuture和相关业务场景

Java 中的并行流(Parallel Streams)是 Java 8 Stream API 的一部分,用于并行处理集合数据(如 List 或数组),它利用多核 CPU 来加速计算。并行流本质上是异步的:它会将任务分发到后台线程池(默认是 ForkJoinPool)中执行,这些线程与主线程并发运行,而主线程可以继续其他工作。但注意,并行流的操作整体上是阻塞的(blocking):如collect()或forEach()会等待所有子任务完成后再返回结果。与。

2025-10-17 10:38:29 1213

原创 Java并发编程——死锁

死锁是指两个或更多线程无限期阻塞,互相等待对方释放资源,导致整个程序无法继续执行。代码中通过两个线程(t1 和 t2)对两个共享资源(字符串 A 和 B)的锁获取顺序不同,结合 t1 的 sleep 延迟,制造了循环等待的条件。下面我一步步拆解代码逻辑和执行过程(忽略代码中的拼写错误,如“privat”应为“private”,“publicvoid”应为“public void”,这些不影响核心行为)。死锁满足四个必要条件(Coffman 条件):互斥(锁独占)、持有并等待、不可抢占、循环等待。

2025-10-16 08:25:35 935

原创 一天一个设计模式——装饰器模式

装饰器模式是一种结构型设计模式,它允许在不修改原有对象结构的情况下,通过动态地“包装”对象来为其添加新的行为或功能。这种模式类似于“层层包裹”,每个包装层(装饰器)可以增强或修改被装饰的对象,而不影响其他同类对象。假设基础咖啡有3种(Espresso、Latte、Mocha),装饰有4种(Milk、Sugar、Whip、Soy)。咖啡店的简单示例更像是入门演示,它展示了基本结构,但确实没突出装饰器模式的“杀手级”优势——实际中,Java IO库就是最佳证明:它用装饰器处理无数IO变体,避免了“继承地狱”。

2025-10-14 14:40:44 1062

原创 一天一个设计模式—— 依赖倒转原则

依赖倒转原则是 SOLID 五大设计原则之一,由 Robert C. Martin 提出。它本质上是“颠倒”传统依赖关系的方向:传统设计中,高层模块(如业务逻辑)往往直接依赖低层模块(如具体工具或服务),这会导致代码僵硬、难以维护。DIP 要求,从而实现“倒转”——抽象成为桥梁,让系统更灵活。

2025-10-14 12:00:00 868

原创 从“用框架”到“控系统”——数据系统或服务设计中的常见挑战及解决方案(2):Spring集成Java代码实施指南

此融合版指南将所有策略统一为Spring生态,便于模块化开发(如微服务拆分)。实体类(如User/LogEntity)需自行定义。建议用Docker Compose测试完整栈。

2025-10-13 08:43:58 998

原创 从“用框架”到“控系统”——数据系统或服务设计中的常见挑战及解决方案(1)

这些问题往往相互交织(如数据完整性影响API稳定性),建议从架构层面采用微服务 + 事件驱动(如Kafka)来解耦。实际设计时,进行压力测试(e.g., JMeter)和故障注入(Chaos Engineering)是关键步骤。

2025-10-13 08:29:27 442

原创 从“用框架”到“控系统”———架构通用能力(模块边界、分层设计、缓存策略、事务一致性、分布式思维)

在软件架构设计中,通用能力是指那些适用于大多数系统(尤其是大规模、复杂系统)的核心原则和实践。这些能力帮助架构师构建可维护、可扩展、高可靠的系统。这些通用能力相互关联,例如模块边界可与分层设计结合,缓存策略需考虑事务一致性,而分布式思维贯穿始终。最佳实践工具栈:架构设计用UML/PlantUML绘图;实现用Spring Cloud/Dubbo。评估指标:模块耦合度<0.1、响应时间<200ms、一致性延迟<1s。迭代建议:从小系统开始实践,逐步引入分布式元素;

2025-10-11 08:19:24 998

原创 从“用框架”到“控系统”——业务模型和技术模型之间的映射

定义:业务模型描述了现实世界中的业务实体、流程和规则,通常从业务需求和用户的角度出发。它是业务逻辑的抽象,关注**“做什么”**,而不关心技术实现。特点反映业务领域的概念,如“库存设备”、“项目设备”、“存放位置”、“新制件数量”。使用业务术语,如location(存放位置)、useLife(使用年限)、(总数量)。由业务分析师、产品经理或领域专家定义。例子(MES 系统):实体:库存设备()、项目设备(流程:按location统计库存总量,按useLife计算新制件数量(

2025-10-10 14:11:21 1012

原创 从“用框架”到“控系统”——数据流、事件流、接口边界是如何形成的;

数据流是指数据在系统中的流动和处理过程,从输入到输出,经过一系列的转换、存储或计算。数据流关注的是数据如何从一个组件传输到另一个组件,以及在传输过程中如何被加工或使用。事件流是指系统中事件(用户操作、系统触发、异步通知等)的触发、传播和处理过程。事件流关注的是事件如何在组件间传递,以及如何触发相应的响应逻辑。接口边界是指系统组件之间交互的明确定义点,通常通过 API、接口或协议划定。接口边界定义了组件的责任范围和交互方式,确保模块间低耦合、高内聚。数据流。

2025-10-10 11:52:36 810

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除