Skip to content

Latest commit

 

History

History
134 lines (102 loc) · 2.95 KB

File metadata and controls

134 lines (102 loc) · 2.95 KB

贡献指南

感谢你对《后台开发技术 All in One》的关注!欢迎贡献你的力量,让这份指南更加完善。

🤝 如何贡献

内容贡献

可以贡献的内容类型

  • 📝 修正技术错误或不准确的描述
  • 💡 补充缺失的重要知识点
  • 💻 改进或新增代码示例
  • 🎨 添加架构图、原理图等可视化内容
  • 📚 补充参考资料和学习资源
  • 🐛 修复文档中的typo、格式问题
  • ✨ 优化文档结构和表达

提交流程

  1. Fork 本仓库
  2. 创建特性分支git checkout -b feature/improve-redis-section
  3. 做出修改
    • 遵循现有文档风格
    • 代码示例需确保可运行
    • 重要修改请说明原因
  4. 提交变更git commit -m "docs: 补充Redis集群部署实践"
  5. 推送分支git push origin feature/improve-redis-section
  6. 提交 Pull Request

Commit 规范

使用约定式提交(Conventional Commits):

docs: 文档相关修改
fix: 修复错误
feat: 新增内容
refactor: 重构
style: 格式调整

示例

  • docs: 补充gRPC协议详解
  • fix: 修正LRU Cache并发安全问题
  • feat: 新增RabbitMQ消息队列章节

✅ 代码示例规范

完整性

  • 包含必要的 import 声明
  • 确保代码可以直接运行
  • 添加必要的错误处理

注释

  • 关键逻辑添加注释
  • 复杂算法说明思路
  • 参数说明用途

示例

// ✅ 好的示例
import (
    "context"
    "fmt"
    "time"
)

// RateLimiter 令牌桶限流器
// qps: 每秒请求数限制
// burst: 桶容量(支持突发流量)
type RateLimiter struct {
    qps   int
    burst int
}

func NewRateLimiter(qps, burst int) *RateLimiter {
    return &RateLimiter{qps: qps, burst: burst}
}

// Allow 检查是否允许请求
func (r *RateLimiter) Allow() bool {
    // 实现逻辑...
    return true
}

// ❌ 不好的示例(缺少导入、无注释)
func Allow() bool {
    return true
}

📋 文档规范

格式规范

  • 使用标准 Markdown 语法
  • 中英文之间添加空格
  • 代码块指定语言(```go)
  • 链接使用相对路径

结构规范

每个技术章节建议包含:

  1. 概述:技术背景、核心特点
  2. 核心原理:深入讲解技术原理
  3. 实战示例:完整的代码示例
  4. 最佳实践:生产环境建议
  5. 常见问题:FAQ 和排错指南
  6. 参考资料:延伸阅读

🔍 审核标准

Pull Request 会根据以下标准审核:

  • ✅ 技术准确性(优先级最高)
  • ✅ 代码可运行性
  • ✅ 表达清晰度
  • ✅ 格式规范性
  • ✅ 与现有内容的一致性

💬 讨论

对于较大的修改或新增章节,建议先开 Issue 讨论:

  • 说明想要贡献的内容
  • 阐述为什么这个内容重要
  • 简要说明你的写作计划

🙏 感谢

每一个贡献都很宝贵!你的名字将出现在贡献者列表中。


再次感谢你的贡献! ❤️