avatar
文章
74
标签
62
分类
47
首页
归档
标签
分类
列表
  • 音乐
  • 电影
友情链接
关于我
崔安兵的博客
搜索
首页
归档
标签
分类
列表
  • 音乐
  • 电影
友情链接
关于我

崔安兵的博客

与软件供应商合作:取法于上,方能得其中
发表于2026-07-28
管理学中有一个非常朴素却极度精准的规律:要求80分,最终往往只能做到60分;敢要求100分,大概率能稳稳拿到80分。这句经验总结,源自古训“取法于上,仅得为中;取法于中,故为其下”。在数字化项目落地、软件采购与服务商协作的场景中,这条定律几乎是铁律,精准解释了绝大多数软件项目“落地打折、效果不及预期”的核心原因。 很多企业与软件供应商合作时,总陷入自我妥协的误区:需求能凑合用就行、功能达标就可以、交付不延期就满意。看似降低了合作门槛、减少了沟通成本,实则从源头预留了效果折损的空间。软件项目不同于标准化实物采购,它存在天然的损耗:供应商的人力轮换、开发理解偏差、售后响应滞后、迭代优先级偏移、现场适配偏差,每一个环节都会让既定的交付标准悄悄降级。如果我们的目标和标准本身就是中等水平,经过层层损耗后,最终落地结果必然是下等水平。 低标准要求,是软件项目最大的隐患很多甲方对接供应商的常态,完美印证了“求其中,得其下”的短板。需求沟通时,只模糊提出“实现基础功能”,不明确性能指标、交互标准、容错机制和兼容要求;合同签订时,只约束交付周期和基础功能清单,不对响应速度、bug修复时效、迭代服务...
vscode 不同项目不同语言扩展插件隔离方案
发表于2026-07-25|工具使用开发
VSCode 多项目 / 多语言插件隔离完整方案目标:前端 Vue、Java 后端、Python、Go 等不同项目,只加载对应语言插件,避免插件冲突、启动卡顿、多语言 LSP 同时抢占资源。 重要前提:VSCode 原生不支持「打开文件夹自动卸载 / 安装插件」,只能使用下面 4 种官方 / 主流方案,按你的需求选择。 方案一:Profiles(官方原生,首推!)【最适合日常多语言开发】VSCode 1.84 + 内置 配置文件 (Profiles),真正独立插件集合,互相隔离。 原理每个 Profile 拥有独立已安装扩展列表、settings、快捷键、主题;打开项目时绑定目录→自动切换 Profile;前端一套、Java 一套、Python 一套互不干扰。 操作步骤 左下角齿轮 → Profiles → Create Profile 命名示例:Frontend-Vue、Java-Spring、Python-AI 选择 Empty Profile(空白模板),避免继承多余插件 切换到新建 Profile,只安装当前技术栈必需插件 Fro...
SpringBoot 项目启动时执行初始化的 5 种常用方案
发表于2026-07-24|JavaSpring后端
SpringBoot 提供了多种项目启动后自动执行初始化逻辑的方式,适用于不同场景(加载配置、初始化数据、预热缓存、启动定时任务等)。 1. 推荐首选:CommandLineRunner 接口(最简单)适用场景:简单的初始化逻辑,无依赖顺序要求。 特点:实现接口 + 重写 run 方法,SpringBoot 启动完成后自动调用。 12345678910111213141516171819202122232425262728293031import org.springframework.boot.CommandLineRunner;import org.springframework.stereotype.Component;/** * 项目启动后执行初始化 */@Componentpublic class MyInitRunner implements CommandLineRunner { /** * 启动完成后自动执行 * @param args 启动参数 * @throws Exception */ @Override...
ARP协议详解之Gratuitous ARP(免费ARP)
发表于2026-07-15|网络
ARP协议详解之Gratuitous ARP(免费ARP)Gratuitous ARP(免费ARP)Gratuitous ARP也称为免费ARP,无故ARP。Gratuitous ARP不同于一般的ARP请求,它并非期待得到IP对应的MAC地址,而是当主机启动的时候,将发送一个Gratuitous arp请求,即请求自己的IP地址的MAC地址。 免费ARP的产生免费ARP数据包是主机发送ARP查找自己的IP地址。通常,它发生在系统引导期间进行接口配置的时候。这里可以使用Wireshark捕获主机启动时候的数据,以验证是否发送Gratutious arp数据包。这里捕获到的数据包,如图1.21所示。 图1.21  Gratuitous ARP包 从该界面可以看到第44、45、47数据包都是Gratuitous ARP包。 免费ARP的作用免费ARP有两个方面的作用。分别如下所示: 1.验证IP是否冲突 一个主机可以通过它来确定另一个主机是否设置了相同的IP地址。发送主机并不需要一定收到此请求的回答。如果收到一个回答,表示网络中存在与自身IP相同的主机。如果没有收到应答,则表示本机...
MySQL Router 和 ProxySQL 区别
发表于2026-07-14|数据库
MySQL Router 和 ProxySQL 都是位于客户端应用程序和 MySQL 数据库服务器之间的中间件,用于管理连接、提升性能和提高可用性。但它们的设计目标、核心功能、灵活性以及适用场景有显著的区别: ​​核心区别总结:​​ 特性 MySQLRouter ProxySQL ​​开发背景​​ Oracle 官方提供 第三方开源 (Percona 支持) ​​核心目标​​ 简化 InnoDB Cluster/ReplicaSet 的高可用和读写分离接入 高性能数据库代理,极致灵活性,高级流量管理 ​​主要优势​​ 无缝集成 MySQL Shell/InnoDB Cluster, 自动故障转移 极高灵活性, 查询规则、缓存、防火墙、查询重写 ​​配置方式​​ 配置文件 (INI style),通常需要重启生效 内置 SQL 接口 (Admin>) 动态配置,可在线生效 ​​高级功能​​ 有限 (连接路由, 简单读写分离, 自动故障转移) 丰富 (查询规则重写, 结果缓存, 防火墙, 连接复用/池化) ​​用户认...
在PG 数据库中的是否的类型选择
发表于2026-07-03
在PG 数据库中表示”是/否”选择boolean还是char(1)还是int类型更为高效?在 PostgreSQL 中表示“是/否”选择,最高效且最推荐的方式是使用原生的 boolean 类型。 这主要是从存储空间、操作性能和语义清晰度三个维度来考量,boolean 类型在各方面都优于 char(1) 或 int。 📊 存储空间对比在存储空间上,boolean 的优势非常明显,并且能避免其他类型因数据对齐产生的额外开销。 数据类型 存储空间 说明 boolean 1 字节 最小,且无对齐填充开销。 char(1) 至少 2 字节 实际需要约5字节或更多,因为有类型开销和对齐填充。 int / smallint 4 字节 / 2 字节 int为4字节,smallint为2字节。两者都有对齐填充开销。 根据一份资料,存储100万行数据,boolean 类型仅需 1 MB,而 char(1) 和 smallint 都需要 2 MB。 ⚡️ 性能与语义对比除了存储空间,boolean 在性能和语义上也是最佳选择。 b...
如何让更新远程仓库中的Git子模块到最新的提交版本
发表于2026-03-05|git
要将远程仓库中的 Git 子模块更新到最新提交版本,核心是先更新本地子模块到最新代码 → 提交主项目中对子模块版本的引用 → 推送到主项目远程仓库,以下是分步骤的完整操作指南(覆盖核心场景 + 避坑点): 一、核心流程(本地更新 → 提交主项目 → 推送远程)步骤 1:拉取主项目最新代码(确保基础版本一致)先进入主项目目录,拉取远程最新代码,避免冲突: 12cd 你的主项目目录git pull origin 主分支名 # 如 main/master 步骤 2:更新本地子模块到远程最新提交有两种方式更新子模块,按需选择: 方式 1:单个子模块更新(指定子模块)适合仅更新某个子模块的场景: 1234567891011# 进入子模块目录cd 子模块文件夹路径 # 如 ./submodule-common# 切换到子模块的目标分支(如 main)git checkout main# 拉取子模块远程最新代码git pull origin main# 返回主项目目录cd .. 方式 2:批量更新所有子模块(推荐)适合多个子模块需统一更新的场景: 12# 遍历所有子模块,拉取各自远程分...
git拉取项目将子模块也拉取下来
发表于2026-03-05|git
要在 Git 拉取主项目时自动同步所有子模块,核心是通过 Git 内置的子模块命令实现,以下是完整的操作指南(覆盖「首次拉取」「已有项目更新子模块」「批量拉取」等场景): 一、场景 1:首次拉取主项目(含子模块)如果是第一次克隆主项目,直接用 --recurse-submodules 参数,可一键拉取主项目 + 所有子模块代码: 12345# 克隆主项目并自动初始化、拉取所有子模块git clone --recurse-submodules <主项目仓库地址># 例如git clone --recurse-submodules https://github.com/xxx/main-project.git 效果:克隆主项目后,会自动进入每个子模块目录,拉取对应分支的代码,无需手动操作。 二、场景 2:已克隆主项目,补拉子模块如果已经克隆了主项目(但子模块目录为空),执行以下命令补全子模块: 123456789101112# 进入主项目目录cd 主项目文件夹# 1. 初始化子模块(首次拉取子模块必须执行)git submodule init# 2. 拉取所有子模块的最...
装debian系统之后,很多命令找不到,需要添加sudo之后才能使用
发表于2026-03-02|Linux
问题描述 安装debian12系统之后,很多命令找不到,需要添加sudo之后才能使用。 解决方案:1.临时解决方案1export PATH=$PATH:/sbin/   输入以上命令,即可临时解决问题,但是重启之后依然有问题! 2.永久解决方案如果需要永久使用,需要添加需要编辑 .bashrc 文件(注:每个用户都有.bashrc 文件,想要每个用户都能正常使用,需要去编辑每个用户的 .bashrc 文件) 1export PATH=$PATH:/usr/sbin:/sbin 1source ~/.bashrc 或者直接在/etc/profile文件中增加环境变量
windows、linux查看域名解析、跟踪路由 dns
发表于2026-03-02|乱七八糟
查询域名对应的ipwindows&&linux查看域名对应的ip,无论在windows还是在linux下都是用 nslookup ,这里还是拿 www.baidu.com做测试。我们可以看见www.baidu.com 对应的IPV4有 110.242.68.3和110.242.68.4 。 我们再看一下浏览器请求走的ip,可以看见,走的110.242.68.4这个下面我们来分析一下 nslookup www.baidu.com 的结果 123456789服务器: UnKnownAddress: 10.234.144.207非权威应答:名称: www.a.shifen.comAddresses: 2408:871a:2100:3:0:ff:b025:348d 2408:871a:2100:2:0:ff:b09f:237 110.242.68.3 110.242.68.4Aliases: www.baidu.com 第1行,服务器,指的是默认dns服务器,也就是local DNS,就是局域网的DN...
123…8
avatar
崔安兵
台下人金榜正题名,不曾认台上旧相识
文章
74
标签
62
分类
47
个人主页
最新文章
复杂度不会消灭,但架构会决定偶然复杂度构成。2026-09-17
工作6年,我是如何看待所谓的升职加薪的2026-09-16
MinIO 开源社区版没了,Docker 镜像也删干净了
MinIO 开源社区版没了,Docker 镜像也删干净了2026-09-16
Docker开启IPv6支持2026-09-03
大数据中Lambda和Kappa架构2026-09-02
分类
  • Debian1
  • Devops1
    • Docker1
  • JAVA1
    • 开发1
      • 数据库1
  • Java4
    • Spring1
标签
垃圾佬 WOL 运维 问题处理 后端 RestTemplate 个人总结 Docker SpringBoot 数据库 vscode Devops 程序开发 MongoDB 管理 问题分析 PG 软技能 MySQL 总结 网络 SSH 硬件 学习 VMware Java 前端 Vue DNS Spring Cloud Alibaba 软件测试 Spring Boot Git tcpip 测试文章 RocketMQ 方法论 DBA 架构 软件工程
归档
  • 九月 2026 6
  • 八月 2026 3
  • 七月 2026 7
  • 三月 2026 11
  • 二月 2026 2
  • 一月 2026 7
  • 十一月 2025 1
  • 九月 2025 18
网站信息
文章数目 :
74
本站总字数 :
77.4k
最后更新时间 :
© 2020 - 2026 By 崔安兵框架 Hexo 8.1.1|主题 Butterfly 5.5.4
搜索
数据加载中