获得徽章 0
- #青训营 x 字节后端训练营#
对象存储
Git数据对象存储步骤大致如下。其实所有的Git对象均以此方式存储,区别仅在于类型标识,另两种对象类型的头部信息以字符串commit或tree开头,而不是blob。虽然数据对象的内容可以是任何东西,但提交对象和树对象的内容却有各自固定的格式。
读取文件内容,以对象类型blob作为开头来构造一个头部信息,拼接头部信息和文件原始内容,记为content
计算content的SHA-1校验和,得到长度为40个十六进制字符的哈希值
取哈希值前两位作为文件目录,剩余38为作为文件名
对content执行lib压缩,获得新的二进制内容,存入文件中展开评论点赞 - #青训营 x 字节后端训练营#
docker创建容器:
#从网络拉取镜像
docker pull centos:7.8.2003
# 创建一个容器,包括了 CentOS 7.8 运行的一些基础环境
#docker images --镜像
REPOSITORY TAG IMAGE ID CREATED SIZE
daocloud.io/library/centos 8.2.2004 831691599b88 7 months ago 215MB
centos 7.8.2003 afb6fca791e0 8 months ago 203MB
docker run -d --name centos7.8 -h centos7.8 \
-p 220:22 -p 3387:3389 \
--privileged=true \
centos:7.8.2003 /usr/sbin/init
#我想拥有一个 linux 8.2 的环境
docker run -d --name centos8.2 -h centos8.2 \
-p 230:22 -p 3386:3389 \
--privileged=true \
daocloud.io/library/centos:8.2.2004 init展开评论点赞 - #青训营 x 字节后端训练营#
极简版本控制
创建一个新文件并将其内容存入数据库。
javascript复制代码echo 'hello world' > readme.md
git hash-object -w readme.md
3b18e512...
再次写入新内容并存入版本库。
javascript复制代码echo 'hi git' > readme.md
git hash-object -w readme.md
2984e649...
暂时查看数据库写入情况。
javascript复制代码find .git/objects -type f
.git/objects/29/84e649...
.git/objects/3b/18e512...
控制文件内容为第一个版本。
javascript复制代码git cat-file -p 3b18e512 > readme.md
cat readme.md
hello world
控制文件内容为第二个版本。
javascript复制代码git cat-file -p 2984e649 > readme.md
cat readme.md
hi git展开评论点赞 - #青训营 x 字节后端训练营#
引入Gin框架
我们使用go mod来管理go的依赖
go get -u github.com/gin-gonic/gin
复制代码
第二步,创建一个路由引擎
使用gin.New()或gin.Default()即可创建一个路由引擎
engine := gin.New()
engine := gin.Default()
复制代码
其中gin.Default()也适用gin.New()创建engine实例,但是会默认使用Logger和Recover中间件。下面是gin.Default的源码,
可以看到Gin默认开启了Logger和Recovery中间件
代码位置:github.com/gin-gonic/gin/gin.go
// Default returns an Engine instance with the Logger and Recovery middleware already attached.
func Default() *Engine {
debugPrintWARNINGDefault()
engine := New()
engine.Use(Logger(), Recovery())
return engine
}展开评论点赞 - #青训营 x 字节后端训练营#
关于Golang原生web框架:
package main
import (
"fmt"
"go-web-tutorial/handler"
"log"
"net/http"
)
func main() {
fmt.Println("Starting the server ...")
helloHandler := handler.NewHelloHandler()
http.Handle("/hello", helloHandler)
// 创建服务器,ListenAndServe若服务器宕机,会返回异常
log.Fatal(http.ListenAndServe("localhost:8080", nil))
}展开评论点赞