- content {:toc}
我的工作—发布视频
简介
我的工作为发布视频, 将这个任务分解为几个小任务, 先看哪些任务能够自己独立完成,先完成这些任务, 之后再根据小组成员的接口, 实现完整的功能
环境
- 需要提前安装
ffmpeg
发布视频的流程
- 鉴权 —– 使用别人的接口
- 存储视频 —- ( demo中 有 )
- 抽取封面并存储
- 视频 和 封面 上传到
cdn
( 没有, 因此没有做 ) - 将收到的视频信息( 视频名称, 用户名, 播放地址, 封面的地址 )存储到数据库中 —- 使用数据库的接口
- 返回消息 ( 发布成功)
因此最先做的工作就是
- 确定资源存储的位置, 通过查找路由得知, 有这样一个映射
r.Static("/static", "./public")
, 我们访问静态资源的时候, 网址为xxx/static/fileName.txt
, 通过c.Request.Host
字段, 来获得域名 :2f781ee3592dd7a9ff0bbd0007fe40ce-app.1024paas.com
, 加头(协议)加尾(路径 + 文件名), 进行字符串拼接 - 使用
ffmpeg
来抽取某一帧来做封面, 需要设置 其 环境
|
|
抽取图片 demo
|
|
队友的接口
|
|
使用了接口之后的伪代码
|
|
主题 | 描述 |
---|---|
计算机基础 | 数据结构、算法/ 计算机组成原理、计算机网络、操作系统、编译原理 |
Linux | linux基础操作、unix环境编程、网络编程 |
数据库 | 基础理论ACID、MySQL、NoSQL |
编程语言 | Java、Go、C/C++、Rust |
设计模式 | 23种设计模式 |
中间件 | API网关、Web/RPC框架、消息队列、缓存、定时调度、数据库中间件ORM、日志系统、配置中型 |
分布式 | 一致性/CAP、事务、等、微服务、拓展性 |
高并发、高性能、高可用 | C10k、进程、线程、线程、异步、池化、缓存、CDN、集群、负载均衡、限流、容灾、多活 |
linux 命令
- 查看目录
- 打开文件
- 两个命令 awk, sed
SOA(Service-Oriented Architecture) 1.将应用的不同功能单元抽象为服务 2.定义服务之间的通信标准微服务架构:SOA的去中心化演进方向
user
|
|
项目分析
service/ message.go
- tcp 客户端,
|
|
API / 路由/ 基于 HTTP 协议
做的事情有
-
通过调用
r.Static("/static", "./public")
将 “/static” 路径映射到 “./public” 目录,用于提供静态资源文件。 -
接下来,通过调用
r.LoadHTMLGlob("templates/*")
加载了所有位于 “templates” 目录下的 HTML 模板文件。 -
之后,定义了一个处理根路径 ("/") 的 GET 请求的路由。
-
当GET 的路径为
douyin/feed/
时, 调用controller.Feed
, 其他也一样 -
注意: Gin 默认情况下会返回 404 错误
|
|
返回类型
|
|
|
|
GORM 使用
go 语言 gorm 基本使用_go gorm_含光君~的博客 - CSDN 博客
其他库
抽取图片
|
|
|
|
sync.Map
sync.Map
是 Go 语言提供的一种并发安全的映射(Map)结构。它可以在多个 goroutine 并发访问时保证数据的安全性,而不需要额外的加锁操作。
sync.Map
的主要特点如下:
- 无需显式初始化,可以直接声明并使用。
- 支持并发的读取和写入操作,可以在多个 goroutine 中同时访问。
- 内部自动进行了并发安全的处理,不需要额外的锁机制。
- 提供了几个常用的方法来对映射进行操作,如 Store、Load、Delete 等。
需要注意的是,sync.Map
相对于普通的 map
有一些限制:
- 不允许使用
nil
作为键值。 - 对于存储的值类型没有约束,可以是任意类型。
- 没有提供获取映射长度的方法。