Go 是静态编译语言,只需要编译后的二进制文件,不需要运行时环境。多阶段构建可以分离构建环境和运行环境,最终镜像只包含二进制文件。
# 阶段1:构建
FROM golang:1.23-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags='-w -s' -o server .
# 阶段2:运行
FROM alpine:3.19
RUN addgroup -S appgroup && adduser -S appuser -G appgroup
WORKDIR /app
COPY --from=builder /app/server .
RUN chmod +x server
USER appuser
CMD ["./server"]
Go 的并发哲学来自 C.A.R. Hoare 的 CSP 理论,与传统线程模型完全不同。理解这套模型,是写出高性能 Go 服务的基础。
Goroutine 到底是什么
goroutine 是由 Go 运行时管理的轻量级线程,创建成本极低(约 2KB 栈空间),可以轻松创建数万个 goroutine 而不耗尽系统资源。与 OS 线程的 1:1 模型不同,Go 使用 M:N 调度——M 个 OS 线程上运行 N 个 goroutine,由 Go 运行时 GOMAXPROCS 控制并行度。
一个简单的 goroutine 示例
// 启动一个 goroutine
go func() {
fmt.Println("running in goroutine")
}()
// 主 goroutine 继续执行,不等待子 goroutine
fmt.Println("main exits")
智能手机:量减价升,高端化战略初见成效。受全球智能手机大盘增速放缓及国补退出影响,手机营收小幅下滑2.8%,毛利率也从12.6%降至10.9%。但值得注意的是,Q4智能手机ASP(平均售价)已达1,176元/台,环比Q3(1,063元/台)提升10.7%,小米17 Pro、17 Pro Max等高端机型热销是主要驱动力。
Parse.Cloud.job("test", async (request) => {
// params: passed in the job call
// headers: from the request that triggered the job
// log: the ParseServer logger passed in the request
// message: a function to update the status message of the job object
const { message } = request
message('done')
})