Skip to content

EthanQC/my-learning-record

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

611 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

My Learning Record

Build Status Go Version Next.js License

本项目是一个学习记录仓库,主要内容包括面试相关八股/算法、面经、实习记录、前后端项目、计算机基础知识和我个人的碎碎念/反思总结

可访问 https://qingverse.com 获得更佳阅读体验


项目架构

  • 前端:Next.js 16(App Router、Tailwind),输出 standalone 运行产物
  • 后端:Go + chi,Swagger 文档 /health /api/* 接口
  • 数据:MySQL 8(容器)
  • 反代:Caddy(容器),将 /api 转发到 API,静态资源由 web 容器提供
  • 部署:Docker Compose(deploy/),GitHub Actions 自动构建推送镜像并 SSH 部署

技术栈

  • Node 22、npm workspaces
  • Go 1.24
  • Docker / Docker Compose v2
  • Caddy 2
  • GitHub Actions、ACR(或任意容器仓库)

环境要求

  • 已安装并运行 Docker / Docker Desktop,带 Compose v2
  • Node 22 + npm 10(根目录 npm install
  • Go 1.24(本地开发 API 用)
  • 可用的 3306 端口(本地 MySQL 容器)

目录结构

.
├ apps/
│  ├ api/   # Go API
│  └ web/   # Next.js 前端
├ content/  # Markdown 笔记/文章
├ deploy/   # 服务器部署用 compose + Caddy
└ scripts/  # 辅助脚本

快速开始(本地开发)

安装开发环境(MacOS 示例)

如果你的 Mac 还没有安装开发工具,按以下步骤操作:

安装 Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

安装完成后,按提示运行:

echo 'eval "$(/opt/homebrew/bin/brew shellenv)"' >> ~/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
安装 Node.js 和 Go
# 安装 Node.js 22(包含 npm)
brew install node@22

# 添加到 PATH(如果需要)
echo 'export PATH="/opt/homebrew/opt/node@22/bin:$PATH"' >> ~/.zshrc
source ~/.zshrc

# 验证安装
node -v  # 应显示 v22.x.x
npm -v   # 应显示 10.x.x

# 安装 Go
brew install go

# 验证
go version  # 应显示 go1.24.x
安装 Docker Desktop

Docker 官网 下载并安装 Docker Desktop for Mac。

克隆项目并安装依赖

# 克隆项目
git clone git@github.com:EthanQC/my-learning-record.git
cd my-learning-record

# 安装前端依赖(在项目根目录)
npm install

启动数据库

若本地 docker 无镜像/已运行容器,会自动新建,默认用户密码为 root:pass

cd apps/api
make docker-up  # 启动 MySQL 容器
cd ../..

配置环境变量

# 复制环境变量示例文件
cp apps/api/.env.example apps/api/.env
cp apps/web/.env.local.example apps/web/.env.local

启动开发服务器

后端:

cd apps/api
go run cmd/server/main.go

前端:

cd apps/web
npm run dev

常用脚本(根目录)

# 同时启动前端 + 后端(后端会执行 make dev,需要已安装 swag 与 docker)
npm run dev

# 仅前端
npm run dev:web

# 仅后端(等价于 make -C apps/api dev)
npm run dev:api

# 统一修复/补齐 frontmatter
npm run fix:frontmatter

访问地址


部署 / CI-CD(服务器)

服务器仅使用 deploy/ 目录,请先安装 Docker 与 Compose v2

推荐使用阿里云 ACR 作为镜像仓库

配置服务器环境变量

修改镜像仓库、实际域名和数据库等信息

cd ~/workspace/my-learning-record/deploy

cp .env.example .env

GitHub Actions CI/CD

GitHub 仓库中 Secrets 配置路径:

Settings —— Security —— Secrets and variables —— Actions —— Repository secrets

点击 New repository secret,逐个添加变量名和内容,推荐在 vs code 中安装 GitHub Actions 官方扩展

  • Workflow: .github/workflows/deploy.yml
  • 需要的 Secrets
    • ACR:
      • ACR_REGISTRY
      • ACR_NAMESPACE
      • ACR_USERNAME
      • ACR_PASSWORD
    • SERVER:
      • SERVER_HOST
      • SERVER_USER
      • SERVER_PORT
      • SERVER_SSH_KEY
  • 流程:
    • 构建并推送镜像
    • SSH 到服务器写入 .envAPI_TAG/WEB_TAG
    • docker compose pull/up
    • 重启 caddy

我会在这里记录我每天(perhaps🤪)的学习内容,包括但不限于:

  • cpp、go、操作系统、计网、数据结构与算法、后端、前端相关的知识点
  • 一些小练习小项目
  • 在学习过程中遇到的一些问题/疑惑
  • 碎碎念(是的我的分享欲挺高的👉👈)
  • 我搜集到的各种我认为好用的学习资源

记录的初衷还是因为前段时间看到了这样一段话:

“关于如何学习编程,我觉得没啥可分享的技巧。只要自己有基本的学习能力,会分析抽象问题,编程(简单粗暴看文档,跟着写)就是一个水到渠成的事情。代码或工具也只是将解决问题的逻辑进行具象化,并没有什么神奇之处。

另外,兴趣往往更容易推着你去了解学习一些未知新事物。所以学编程还是应以解决问题为出发点。举个简单例子:我想租房,要找一个最具性价比的房子。这时你就可以写个简单的爬虫来做数据分析,或者你想对文件进行批量化读写操作,也可以写个程序脚本来解决。

对不知从什么项目入门的人,我都推荐搭建一个属于自己的 blog,因为它是一个可以伴随自己整个编程生涯的东西,可以不断对其进行功能迭代。例如:通过 GitHub 来搭建一个开源 blog,然后不断为其添加新功能。这里面你可以学到很多东西(如 github action、git、markdown、github api,域名绑定等)。

编程的本质:以问题为导向去了解学习所需技术或工具,通过观察分析抽象来建立标准化流程以解决重复性问题。

最开始胡乱记了两个月之后,我又发现还是要弄一个方便自己翻阅的笔记,所以才有了这个仓库现在的样子:知识,碎碎念,还有一些反思总结,既能看看自己来时的路,也能及时调整规划什么的

目前还在建设中,正在慢慢完善,我心中它最后的样子应该是一本能快速索引的字典,并且知识的记录能尽量简洁易懂,同时包含如何实际应用,当然,还要有一些练习

如果你觉得这个仓库在某个方面帮助到了你,对你来说是有一些作用的,那么不妨给个 star 吧~💕

如果你想跟我一起完善这个仓库,添加更多内容(不局限于我自己的技术栈),欢迎发起 pull request,也欢迎添加我的微信 13537821092 跟我交流~😉 (后续我可能会出一个贡献模板)

计划

整体的职业规划还是主 go 后端、副 cpp / ue5 客户端

九月底入职了一家做具身智能的初创中小厂,九月份一直在海投面试但发现自己还是太菜了,没能顺利进入大厂,就借着这段工作再好好沉淀一下,准备在十二月再次开始海投并辞职

近期的几条线

  • 找新实习准备
    • 刷、复习算法题
      • 一刷代码随想录和 hot100 已结束,目前刷题数 201
      • 马上开始二刷代码随想录和 hot100
      • sql 题和一些新题库(如剑指 offer 什么的)准备排上日程
    • 整理、复习八股
      • go
      • 操作系统
      • 计网
      • 数据库
      • 云原生/微服务/分布式
    • 改简历
  • 项目
    • cpp(阶段性搁置)
      • HTTP 服务框架
      • 分布式存储
    • go
      • IM(重构有点头疼)
      • 分布式缓存
      • 大创项目(较多需补充)
    • 清华项目(较多需补充)
    • 游戏(阶段性搁置)
      • 月华
      • 逆时巫师

目录

cpp

<常用操作>

标准头文件

<random>

<memory> - 智能指针

<algorithm(待整理)>

<mutex(待整理)>

<atomic(待整理)>

<functional>

<thread(待整理)>

<chrono(待整理)>

<condition_variable(待整理)>

<execution(待整理)>

<coroutine(待整理)>

STL

(standard template library,标准模板库)

<vector>

<array>

<pair>

<list>

<deque(待整理)>

<stack(待整理)>

<queue/priority_queue(待整理)>

<string(待整理)>

<set/multiset(待整理)>

<map/multimap/unordered_map(待整理)>

<几个STL小练习(待整理)>

关键字

<constexpr(待整理)>

<explicit(待整理)>

<typedef(待整理)>

<auto>

<new(待补充)>

<noexcept>

<forward>

<template>

<if>

对象的拷贝和移动

<移动语义与 lambda 表达式>

<函数指针>

异常处理与安全

<异常处理(待细分)>

特性

<封装(待整理)>

<继承(待整理)>

<多态(待整理)>

go

<常用操作>

<常见概念>

基础

<slice>

<for 循环和 range>

<struct>

<map>

<channel>

<context>

<defer>

<switch>

底层原理

<GMP 模型调度器>

<GC 垃圾回收(待整理)>

Gin

(待整理)

GORM

(待整理)

gRPC

(待整理)

Protobuf

(待整理)

数据库

MySQL

<常用操作>

<常见问题>

NoSQL

(待整理)

键值对存储原理

(待整理)

Redis

(待整理)

Elasticsearch

(待整理)

数据结构与算法

数据结构

<数组>

<链表>

<哈希表>

<字符串>

<栈与队列>

<树与二叉树>

算法分析

<时间复杂度与空间复杂度>

<常见算法思想与方法>

<排序(待整理)>

<查找>

刷题记录

题目编号为 leetcode 上的题目编号

<如何刷题>

<数组>

<链表>

<哈希表>

<字符串>

<栈与队列>

<二叉树>

<回溯算法>

<贪心算法>

<动态规划>

<单调栈>

面试八股问题总结

<总体与背景>

<项目与实习>

<C++(待整理)>

<Go(待整理)>

<数据结构与算法(待整理)>

<数据库(待整理)>

<操作系统(待整理)>

<计算机网络(待整理)>

<微服务与云原生(待整理)>

<计算机图形学(待整理)>

<虚幻五(待整理)>

<前端(待整理)>

面经

<如何准备面试>

腾讯

<IEG 天美游戏客户端开发日常实习一面凉经>

<IEG 光子游戏客户端开发日常实习一面凉经>

小鹅通

<后端开发日常实习一面面经>

<后端开发日常实习二面凉经>

实习记录

<密纸科技>

后端

网络库

<muduo网络库(待整理)>

Linux

<常用命令>

<Epoll与多路复用I/O>

<Socket 网络编程(待整理)>

<内存管理(待整理)>

<文件系统(待整理)>

<进程和线程调度(待整理)>

<常用命令行操作(待整理)>

<文件/包管理工具(待整理)>

Git

<基础知识>

<常用操作>

设计模式

<单例模式(待整理)>

<工厂模式(待整理)>

<软件工程常见思想(待整理)>

扩展和加分项

<分布式系统(待整理)>

<消息队列(待整理)>

<系统容灾(待整理)>

<负载均衡(待整理)>

<微服务架构(待整理)>

<云原生(待整理)>

<常见容器工具(如 Docker)(待整理)>

<CI/CD 流程(待整理)>

<python、Shell、Perl 等脚本语言(待整理)>

前端

HTML

<基础知识(待整理)>

CSS

(待整理)

JavaScript/TypeScript

(待整理)

React

<常用操作(待整理)>

前端组件化、模块化以及常见的状态管理方案(Redux / Vuex 等),性能优化(待整理) Node.js、jQuery 等常见框架或库,相应的扩展编写(待整理)

Vue

(待整理)

虚幻五与计算机图形学

待整理

  • 虚幻五 ⭐⭐⭐
    • UE5 的项目架构与工作流程,使用 C++ 和 Blueprints 进行游戏逻辑开发
    • 虚幻引擎关键模块,如 Actor、Pawn、GameMode、Controller、Gameplay Framework 等,Unreal 构件的生命周期与事件驱动机制等
    • 虚幻引擎的 Chaos 物理系统、动画系统(Anim Blueprint、状态机、IK 技术)、AI 系统(Behavior Tree、Blackboard、NavMesh 等)、多线程架构等
    • UE5 中的 Lumen、Nanite 等新特性,渲染管线和 Shader 编写方法
  • 图形学 ⭐⭐
    • 基础的 3D 数学和渲染管线理论,光照模型、材质系统、纹理映射与贴图、3D模型与网络、性能优化与渲染技巧、后期处理等图形学概念
    • 根据需求调试渲染效果,常见的渲染优化手段(如批次合并、LOD、延迟渲染等)
    • DLSS 等现代技术

参加开源

<各类信息(待整理)>

<我现在正在尝试参加的开源活动(待整理)>

其他

<操作系统基础概念>

<Markdown 基础语法>

碎碎念和反思总结

2024.10.24

2024.10.25

2024.10.26

2024.10.27

2024.10.28

2024.10.29

2024.10.30

2024.10.31

2024.11.1

2024.11.2

2024.11.3

2024.11.4

2024.11.5

2024.11.6

2024.11.7

2024.11.9

2024.11.10

2024.11.12

2024.11.13

2024.11.15

2024.11.16

2024.11.17

2024.11.19

2024.11.26

2024.11.27-28

2024.12.7

2024.12.8

2025.1.17

2025.1.19

2025.1.20

2025.1.22

2025.1.26

2025.2.3

2025.2.11

2025.2.15

2025.2.18

2025.2.23

2025.2.24

2025.2.25

2025.2.26

2025.2.27

2025.2.28

2025.3.3

2025.3.4

2025.3.9

2025.3.16

2025.3.17

2025.3.18

2025.3.22

2025.3.23

2025.3.30

2025.3.31

2025.4.7

2025.4.13

2025.5.7

2025.5.30

2025.7.9

2025.7.16

2025.7.17

2025.7.31

2025.8.21

2025.8.23

2025.9.7

我的其他仓库

基于异步日志系统的 HTTP 框架

Raft-KV 存储

即时通讯 IM

《月华》后端服务器项目

《月华》游戏设计与前端项目

链接数据库并实现二叉树的可视化

About

My learning log — notes & reflections on backend, frontend, C++, and LeetCode.

Resources

Stars

Watchers

Forks

Contributors