掌握git提交规范,让团队协作更高效率

标题 🚀 从「feat」到「fix」:掌握 Git 提交规范,让团队协作与自动化更高效 副标题 / 摘要 一篇为开发者准备的实用指南,带你理解并掌握业界通行的 Git 提交信息标准(Conventional Commits), 从 commit 标签(如 feat:、fix:)到自动生成 changelog,一次学会写出高质量的提交记录。 目标读者 初学者:刚开始使用 Git,想养成规范提交的习惯。 中级开发者:希望让提交信息对团队和 CI 工具更友好。 团队负责人 / 架构师:想建立统一的代码提交标准,提升协作与版本管理效率。 背景 / 动机 大多数开发者写提交信息的方式都是这样的: “update code” “fix bug” “修改东西” 这类信息短期可读,长期无用。 当团队人数增多、项目复杂时,无法追踪改动意图,也无法让自动化工具正确识别变更类型。 这就是为什么业界推出了 Conventional Commits: 一个简洁统一的 commit 语法标准,让 Git 提交可读、可追踪、可自动化。 核心概念 Conventional Commits 是一种提交信息格式约定,它规定了提交消息的结构: <type>(<scope>): <subject> <body> <footer> type:提交类型,如 feat、fix、docs scope:作用范围,可选(如 ui、api) subject:简短描述(不超过 50 字) body:详细说明(可选) footer:备注(如 BREAKING CHANGE) 实践指南 / 步骤 1️⃣ 设置 Git 编辑器为 Neovim(可选) ...

2025年10月25日 · 2 分钟 · map[name:Jeanphilo]

开启sshsystem进程失败怎么解决

标题: 🚀 在无 sudo 环境下让 sshd 常驻运行:从错误排查到 nohup 与 systemd 双方案实战 副标题 / 摘要: 本文讲述如何在普通用户权限下运行 OpenSSH 服务,逐步解决“连接被拒绝”“密码认证失败”“systemd start-limit-hit”等典型问题,并最终用 nohup 与 systemd 实现持久运行。 目标读者: Linux 中级用户、科研或企业多用户服务器使用者、无 root 权限的 SSH 自部署者。 一、背景 / 动机 在部分高校实验室或云主机环境中,普通账户没有 sudo 权限,默认 sshd 服务无法启动。 当我们需要: 远程访问自己的 Linux 主机; 使用 VS Code Remote 或 SCP 传文件; 但又无法修改系统级配置; 就必须在用户态自行运行 sshd。 然而这会引发一系列问题:端口冲突、防火墙、认证失败、start-limit-hit 等。 二、核心概念 名称 含义 sshd OpenSSH 守护进程,负责处理 SSH 登录请求 用户态 sshd 非 root 用户手动启动的 sshd 实例,仅有用户权限 authorized_keys 存放允许登录的公钥 nohup 让程序脱离终端后台运行 systemd –user 用户级 systemd 实例,可管理自启服务 start-limit-hit systemd 检测到服务频繁退出后自动暂停重启 三、实践指南 / 全流程步骤 1️⃣ 生成并配置 SSH 密钥 ssh-keygen -t ed25519 -C "" -f ~/.ssh/id_ed25519_noemail cat ~/.ssh/id_ed25519_noemail.pub >> ~/.ssh/authorized_keys chmod 700 ~/.ssh chmod 600 ~/.ssh/authorized_keys 确保 ~/.ssh/authorized_keys 权限正确。 ...

2025年10月24日 · 2 分钟 · map[name:Jeanphilo]

没有sudo权限开启ssh

以下是一篇符合优秀技术博客规范的完整文章草稿,基于你上面完整的 SSH 启动与调试过程整理而成,适合发布到技术博客(如掘金、知乎专栏、Medium 或个人博客)。 🧠 在无 sudo 权限的 Linux 环境下启动 SSH 服务(用户态 sshd 全攻略) 副标题 / 摘要: 当你在学校机房、远程实验环境或受限服务器上没有 root 权限时,如何开启 SSH 服务并远程访问?本文从零带你在用户目录下运行可用的 sshd,支持密钥登录并实现远程连接。 阅读时长: 10 分钟 目标读者: 中级 Linux 用户、科研人员、服务器使用者、DevOps 学习者 标签: SSH、sshd、Linux、远程连接、非 root、系统配置 SEO 关键词: SSH 无 root 权限、用户态 sshd、openssh 配置、非特权端口、远程登录失败 🎯 背景与动机 很多科研服务器、学校实验室或共享主机都不给普通用户 sudo 权限。 然而我们仍常常需要: 远程登录自己的账户; 上传/下载文件; 或从另一台机器访问自己的进程。 默认情况下,sshd 服务需要 root 才能运行,因为它通常绑定在 22 端口并访问系统认证信息。但事实上,我们完全可以在 用户目录 下运行一个“用户态 SSH 服务”,无需修改系统配置。 🧩 核心概念 名词 含义 sshd SSH 服务端程序,负责接收和验证 SSH 连接。 用户态(user-space)sshd 普通用户自行启动的 sshd 进程,不使用 root 权限。 HostKey 服务器用于加密连接的密钥对。 AuthorizedKeys 被允许登录该账户的公钥列表。 /etc/shadow 系统密码哈希存储文件,非 root 用户无法访问。 ⚙️ 实践指南:从零启动用户态 SSH 服务 🪜 第一步:准备配置文件 创建配置目录: ...

2025年10月24日 · 2 分钟 · map[name:Jeanphilo]

为什么可以Ping通却ssh不通?一次假ssh真vnc的排查过程

为什么能 Ping 通却 SSH 不通?一次“假 SSH 真 VNC” 的排查过程 副标题: 从连接被拒到协议识别,带你彻底理解 TCP、SSH 与 VNC 的区别 阅读时长: 7 分钟 标签: 网络排查、SSH、VNC、Linux、远程连接 SEO 关键词: SSH连接失败、kex_exchange_identification、VNC端口5905、RFB 003.008、SSH vs VNC 🎯 目标读者 Linux 使用者、开发者、服务器维护人员 想学习网络排错思路的中级工程师 对 SSH/VNC 协议机制有兴趣的读者 💡 背景与动机 你是否遇到过这样的情况: “服务器能 ping 通,但 SSH 连不上?” 这类问题很常见,尤其是在多服务(SSH、VNC、HTTP)混跑的远程主机上。 本文通过一次真实案例,展示从“SSH 连接失败”到“发现端口跑的是 VNC”的完整分析过程。 🔍 问题现象 执行命令: ssh chenhm@101.6.142.82 -p 5905 输出: kex_exchange_identification: Connection closed by remote host Connection closed by 101.6.142.82 port 5905 尝试 ping: ping 101.6.142.82 能通,没有丢包。 于是我们知道: ...

2025年10月24日 · 2 分钟 · map[name:Jeanphilo]

怎么撰写一篇完美的机器学习文档

🧠 Bengio 风格的机器学习任务说明文档:从研究到工程的技术规范指南 副标题: 如何编写一份可复现、可解释、可比较的模型微调任务说明文档 —— 来自 Yoshua Bengio 的研究方法论 阅读时长: 10 分钟 标签: 机器学习文档结构 模型微调 技术规范 深度学习实践 适合读者: 中高级 ML 工程师、研究员、技术写作者 一、为什么需要这样的文档? 在机器学习项目中,我们经常遇到这样的情况: 团队完成了一个模型微调实验,但几个月后再回头看,没人能完全复现结果,也不清楚为什么要采用某个学习率或 LoRA 层。 Yoshua Bengio(深度学习三巨头之一)早在 Montréal Institute for Learning Algorithms (MILA) 就提出了一个理念: “一个机器学习研究或工程任务的文档,必须能让他人完全重现结果并理解背后的设计动机。” 这就是后来被称为 Bengio-style Machine Learning Project Report Structure 的经典模板,被 Google Research、Meta AI、OpenAI 等广泛采用。 二、Bengio 风格模板的核心思想 项目 内容 来源 Yoshua Bengio,《Deep Learning Research Practice Notes》 目标 确保机器学习实验 可复现、可理解、可比较 适用场景 模型微调、对比实验、学术研究报告、内部技术说明 优势 逻辑清晰、结构统一、可直接转化为论文或内部白皮书 三、标准结构(适用于四个模型微调任务) 以下是 Bengio 风格文档的经典九个部分: ...

2025年10月24日 · 2 分钟 · map[name:Jeanphilo]

如何配置orm管理数据

🧱 从零到生产:如何优雅地设计 ORM 层管理(以 SQLAlchemy 为核心) 本文将带你从数据库表结构出发,构建一套高内聚、低耦合的 ORM 层架构。 目标:让你的 Flask / FastAPI 项目在数据访问上既简洁又稳健。 一、为什么要重视 ORM 层设计? 很多项目初期只是“先能跑”,直接把 SQL 写在控制器里,但很快就会出现: 业务逻辑和 SQL 混在一起; 表关系复杂,维护困难; 想复用查询逻辑很麻烦; 迁移到别的框架(Flask → FastAPI)代价大。 ORM 层(Object Relational Mapping)是数据库与业务逻辑之间的 抽象桥梁, 一个好的 ORM 层能让你只关心对象,不用反复写 SQL。 二、项目场景:招标信息数据系统 我们以一个真实业务为例: 爬取各网站的招标公告,保存为结构化数据,并生成统计看板。 目标数据库实体 表名 功能 tender_info 公告基本信息 tender_attachments 公告及变更文件 tender_organization 招标机构与联系方式 tender_statistics 每日/月/年统计信息 三、ORM 层设计思路 🧩 分层原则 层级 作用 代码位置 Model 层 ORM 模型定义,对应数据库表结构 models.py Repository 层 封装 CRUD 逻辑(数据库操作) repository.py Service 层 业务逻辑层(聚合多个仓库逻辑) service.py API 层 控制器/路由接口 Flask/FastAPI 视图文件 这种分层让你做到: ...

2025年10月23日 · 4 分钟 · map[name:Jeanphilo]

在Ubuntu上让frp内网穿透服务开机自启

🚀 在 Ubuntu 上让 frp 内网穿透服务开机自启:完整指南 副标题 / 摘要 通过 systemd 将 frp(Fast Reverse Proxy)设置为系统服务,实现稳定、安全、可监控的开机自动启动方案,避免每次手动运行。 阅读时长:8 分钟 标签:frp、内网穿透、systemd、自启、Linux、Ubuntu SEO 关键词:frp 开机自启、Ubuntu frp 配置、frpc systemd、frps 服务端启动、内网穿透配置 元描述:手把手教你在 Ubuntu 上使用 systemd 将 frp(frpc / frps)设置为开机自启服务,附配置文件模板与常见问题排查。 🎯 目标读者 适合: 想在云服务器上部署 frps 的开发者 想让家中/办公内网机器长期稳定穿透的中级 Linux 用户 DevOps / 自建服务爱好者 🧩 背景与动机 许多开发者使用 frp 实现内网穿透,让内网服务(如 SSH、Web、NAS)可以安全地从外部访问。 问题是:手动运行 ./frpc -c frpc.ini 既麻烦又不稳定,机器重启后容易忘记启动。 因此,我们希望通过 systemd 服务 实现“自动随系统启动 + 失败自动重启 + 集中日志管理”的效果。 💡 核心概念 frps / frpc:frp 的服务端与客户端可执行程序。 systemd:现代 Linux 系统的服务管理器,用于定义和控制后台服务。 unit 文件:定义服务的配置(如启动命令、依赖、重启策略)。 🛠️ 实践步骤指南 1️⃣ 安装与准备 将二进制文件与配置文件放入系统路径: ...

2025年10月23日 · 2 分钟 · map[name:Jeanphilo]

WSL解决内网和windows不共享

📝 Windows + WSL2 端口转发教程(访问 Flask 5000) 前提条件 你正在使用 WSL2(Ubuntu 或其他 Linux 发行版) Windows 主机能访问局域网(Wi-Fi 或以太网) Flask 服务在 WSL2 中运行,并监听: app.run(host="0.0.0.0", port=5000) ⚠️ host="0.0.0.0" 必须,否则外部无法访问 第 1 步:确认 WSL2 的 IP 在 WSL2 中运行: ip addr show eth0 你会看到类似: inet 172.26.209.37/20 记下 inet 后面的 IP(本例是 172.26.209.37),这是 WSL2 内部 IP。 第 2 步:打开 PowerShell(管理员模式) 按 Win + X → 选择 Windows PowerShell (管理员) 确认管理员权限,必要时允许 UAC 提示 第 3 步:设置端口转发 在 PowerShell 中执行以下命令,将 Windows 的 5000 端口转发到 WSL2: ...

2025年10月22日 · 2 分钟 · map[name:Jeanphilo]

局域网Git Bare

在局域网访问 Windows WSL2 上的 Git Bare 仓库 在开发中,我们经常需要在多台电脑之间共享 Git 仓库。如果你在 Windows 上使用 WSL2,并且想在同一局域网的其他电脑访问 WSL2 上的 Git bare 仓库,本文将一步步教你实现。 1. 在 WSL2 创建 Git Bare 仓库 打开 WSL2 终端,进入你想存放仓库的目录,执行: git init --bare my_project.git my_project.git 是 bare 仓库,不含工作区,仅用于推送和拉取。 bare 仓库就像远程仓库一样,可以被克隆和操作。 2. 配置 WSL2 的 SSH 服务 为了让其他电脑访问仓库,需要通过 SSH 访问 WSL2。 安装 SSH 服务: sudo apt update sudo apt install openssh-server -y 启动 SSH 服务: sudo service ssh start 检查 SSH 服务状态: sudo service ssh status 默认端口是 22,可以在 /etc/ssh/sshd_config 修改。 3. 获取 WSL2 IP 地址 在 WSL2 终端运行: ...

2025年10月22日 · 2 分钟 · map[name:Jeanphilo]

如何使用wrk进行压测

🚀 使用 wrk 对接口进行高性能压力测试(超详细教程) 本文介绍如何在 Ubuntu 环境中使用 wrk 对后端接口(如 Flask / FastAPI / Spring Boot 等)进行高并发压力测试,并结合结果分析性能瓶颈。 🧰 一、什么是 wrk? wrk 是一个现代化、高性能的 HTTP 压测工具,由 C 语言编写,具有以下特点: 高并发能力强:支持成千上万的并发连接 支持多线程:充分利用多核 CPU 可自定义 Lua 脚本:适合复杂场景(如自定义请求头、Body、Token 等) 比 Apache Benchmark (ab) 更轻量、更快、更稳定 ⚙️ 二、安装 wrk 在 Ubuntu / Debian 上安装: sudo apt update sudo apt install wrk -y 验证安装是否成功: wrk --version 输出类似: wrk 4.2.0 [epoll] 表示安装成功 ✅ 🧪 三、快速开始压测 假设你的服务运行在: http://192.168.1.224:5000/api/tenders 运行: wrk -t4 -c100 -d30s http://192.168.1.224:5000/api/tenders 参数说明: 参数 含义 -t4 启动 4 个线程(利用多核 CPU) -c100 模拟 100 个并发连接 -d30s 持续压测 30 秒 最后一个参数 目标 URL 📊 四、示例输出结果解读 假设输出如下: ...

2025年10月22日 · 2 分钟 · map[name:Jeanphilo]