# go11 **Repository Path**: go11_1/go11 ## Basic Information - **Project Name**: go11 - **Description**: 演示项目样例 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 40 - **Created**: 2023-05-14 - **Last Updated**: 2025-05-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Go11项目 每天提交一个Tag: day01 跟视频对应(提醒) ## 开发前提: 开发程序的基础 程序最考验能力是,思考的全面性(你的程序的边界), 是解决确定问题 ### 基础语法 + 变量, 循环控制, 数据结构(基础类型/复合类型), 编程思维(面向过程,面向对象) + 并发控制: gorouite, wait group, ctx + 网络编程: TCP/UDP, HTTP(Gin/Beego/gorestful/...) + 持久化: MySQL/MongoDB/Redis ### 脚本开发能力(面向过程) + 自己工作有需要写程序,可以尝试用Go来写 + 中转站() ### 程序Debug 程序能正常运行时运气, 保证每个环节 可靠,可测试,可验证。 工程的复杂度上来后, 影响的程序正常运行的因数很多, 需要本地调试,才能找到原因 程序员的关键技能: debug + 直接开发功能(会遇到一些非常奇怪的问题) + 接手别人项目(需要关键步骤上进行debug) debug的阶段: + 开发阶段(单元测试的debug) + 整体调试/接口调试(需要启动程序进行debug) + 线上调试(不建议, remote) vscode [如何调试](/skill/debug/unit/README.md) ## 准备工作 + vscode 配置使用 git-bash(Windows同学) + 安装好make命令: [参考](https://blog.csdn.net/weixin_44128101/article/details/125552867) (windows同学): make run /make build + 安装docker桌面版 + 安装数据访问软件: Navicat 关于mysql镜像的使用请参考: [Docker Hub MySQL使用说明](https://hub.docker.com/_/mysql) ```sh $ docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci ``` ## 软件研发流程 + 项目立项: 老板 + 产品设计: + 产品经理: 需求的收集, 竞品比较, 产品的流程设计 + 概要设计: 大的流程: 访客, 创作者, 平台运营 + 详细设计: 运营平台, 比较细节, 每个字段(审核: 审核人: [], 审核结果: , 意见, 分类) + 产品原型: 低保帧, 高保帧 (UI/UE) + 项目开发: 开发/测试/运维 + 开发开发: 老大把需求转变为 后端架构(架构师) + 通用功能(用户中心)/业务功能(合规)/辅助功能(健康/告警/业务报表) + 提交代码(code view), CI 代码构建/单元测试/覆盖率/安全检查/... + 联合调试(多个服务,多个功能), 确认整体功能是否ok, 编写文档 + 项目测试: + 场景测试/UI测试/性能测试 + 运维上线: + 资源准备 + 维护 + 版本迭代: 需求-> 功能-->开发-->测试-->上线 软件开发: 获得可叠加似的成功 ## 项目介绍 ### Web开发: 微博客 + 项目名称: vblog, 一套前后端分离的单体Web服务 + 适合对象: 新手项目入门 + 业务方向: Web全栈开发, 运维开发 + 公司: 小业务团队, 公司内部小系统 + 难度: 低 ### 微服务开发: 微服务研发云迷你版 + 项目名称: devcloud-mini + 适合对象: 有基本的单体项目开发经验,想深入进阶微服务开发的同学 + 业务方向: 大型分布式业务系统研发, 业务中台, 比较低层服务(上层的业务是根据市场变化), 业务网关 + 难度: 中高 + 分布式系统开发所需要具备的基础知识: 服务间同步调用(RPC), 消息流转(Kafak), 分布式系统的维护(Trace) + 偏向运维: cmdb ### 复杂业务开发解读: 微服务研发云平台: 流水线项目 + 项目名称: devcloud + 适合对象: 熟悉微服务开发模式, 了解复杂业务开发流程, 想要从事平台开发业务方向的同学 + 业务方向: 平台开发 + 难度: 高 + 教学方式: 设计解读,代码解读,演示 ## 如何跟进项目 关键: 跟着练(不能只是上课时听, 上课的时候听思路), 做开发: 自己解决问题的能力(debug), 不要copy的代码, 你的项目的代码 要自己一行一行的写 项目仓库: 一个项目 一个仓库, 为了做面试的面门(Gitee/Coding) 如何在一个代码仓库里面, 开发多个项目(go项目)? 可以使用go workspace ``` // 初始化一个工作空间 go work init // 把vblog这个项目加入到这个空间里面来 go work use vblog ``` 为了方便你们查看项目: 这些项目都放到这个代码仓库里面 1. 一节课,一节课, 内容比较多, 课堂上给不了时间让你们练, 下来自己练习 2. 切换的速度太快, 对全局项目架构熟悉 3. 项目课 不是完善一个知识点, 建立一个知识体系。 ## 项目作业与评选 Web开发: 微博客: 会评选出一个优秀,几个不错的 ## 补充 1. sql建表?遇到我将的,你不熟悉的东西(Docker MySQL), 课程上我以项目为主线, 有遇到不懂? 自己查阅资料, 问群里面的其他同学, 一起讨论, 问老师, 及时沟通问题。 2. 写程序 + 不是 有什么工具,我写什么程序。遇到个啥问题? 第一个反应 有没有第三方库 可用调用 + 自己先思考 ---> 进行解决方案的设计 ---> 去寻找复合工具(克制, 对该程序不具有掌控能力) 1. 交给你们的一种大型工程开发的一直实践(不是啥标准), 对于很多新手,没项目开发经验