golang
已收录文章:14425篇
-
在Go中设置HTTP请求头需通过*http.Request.Header操作,必须在client.Do()前完成;Host、Content-Length等由Go自动管理,手动设置无效或引发错误;推荐用http.NewRequest初始化并Set/Add头,JSON请求须设Content-Type和Accept。416 收藏
-
使用bcrypt加密密码是Golang中安全存储用户凭证的推荐方式,它自动加盐并支持可调强度的哈希计算。通过bcrypt.GenerateFromPassword生成哈希值,用bcrypt.CompareHashAndPassword验证,确保不以明文存储密码。默认成本为10,可根据安全需求调整至12,在保证性能的同时抵御暴力破解。数据库仅存哈希值,登录时比对,配合HTTPS传输,全面提升安全性。416 收藏
-
合理划分模块并遵循依赖倒置原则,通过接口抽象和显式依赖注入解耦各层,避免循环依赖,提升可维护性与可测试性。416 收藏
-
使用context.Context可安全传递请求ID和元数据,通过WithValue存值、goroutine间传递Context、Value取值,并结合自定义键类型避免冲突,适用于中间件、超时取消等场景。416 收藏
-
答案:&取地址,解引用。&获取变量内存地址,用于传参、避免拷贝;访问指针指向的值,可修改原数据。结构体方法中,指针接收者可修改原对象,Go自动处理取地址与解引用,注意nil和可寻址性。416 收藏
-
答案:Golang实现API网关需聚焦路由匹配、请求转发与服务聚合。1.使用httprouter或gin实现动态路由,支持前缀匹配与路径参数,通过配置文件或etcd动态加载路由规则;2.基于net/http/httputil.ReverseProxy实现透明转发,重写URL和Host,保留X-Forwarded-For,设置超时与上下文传递;3.聚合服务采用goroutine并行调用,配合WaitGroup与context控制超时,统一响应格式与错误处理;4.中间件支持鉴权、限流、日志与链路追踪,通过插件416 收藏