
获得徽章 9
- #挑战每日一条沸点#
2023-08-09
打卡Day35
今天光写项目去了,根本没去复盘和学习其他内容,定好目标,基础很重要,计科四大学科非常重要,下学期就有计网了,预习了一些但是没太弄明白就搁置了,每天一定要腾出时间来复盘总结展开评论点赞 - #每天一个知识点#
2023-08-08
打卡Day34
每天学两个小案例
Redis 应用案例
连续签到
缓存—热数据
计数器
队列
位操作
分布式锁与单线程机制
最新列表
排行榜展开评论点赞 - #每天一个知识点#
2023-08-07
打卡Day33
OTEL 初步入门
OpenTelemetry(也称为 OTel)是一个开源可观测能力框架,由一系列工具、API 和 SDK 组成,使 IT 团队能够检测、生成、收集和导出远程监测数据以进行分析和了解软件性能和行为。
要了解 OTel 所做的工作,了解可观测能力会有所帮助。粗略定义一下,可观测能力是一种根据系统生成外部数据(通常是日志、指标和跟踪)研判系统内部发生情况的能力。
完全不熟悉...展开评论点赞 - #每天一个知识点#
2023-08-06
打卡Day32
go上下文编程 Context
实现在多个goroutine 中传递信息】
context 的创建方式
context 包下的函数
Background()
TODO()
WithValue()
WithCancel()
WithCancelCause()
WithDeadline()
WithTimeout()
context 实现链路追踪很有用
1.context 可以实现传递共享数据
2.传递取消信号
3.超时控制展开评论点赞 - #挑战每日一条沸点#
2023-08-04
打卡Day31
go wire 依赖注入
1.Struct 的 类构造函数进行拼装
2.多个Provider可以采用ProviderSet 进行组合
3. 直接对结构体进行组合 采取wire.Struct
4. 指明需要的字段也是wire.Struct 不用* 而是指明字段
5. 如果字段类型是接口类型的话 有两种方式 返回类型是接口类型的provider,通过wire.Bind 进行绑定展开评论点赞 - #挑战每日一条沸点#
2023-08-03
打卡Day30
对已经关闭的的 chan 进行读写
读已经关闭的 chan 能一直读到东西,但是读到的内容根据通道内关闭前是否有元素而不同。
如果 chan 关闭前,buffer 内有元素还未读 , 会正确读到 chan 内的值,且返回的第二个 bool 值(是否读成功)为 true。
如果 chan 关闭前,buffer 内有元素已经被读完,chan 内无值,接下来所有接收的值都会非阻塞直接成功,返回 channel 元素的零值,但是第二个 bool 值一直为 false。
写已经关闭的 chan 会 panic
开源库里会有一些类似下面这种奇怪的用法 var _ io.Writer = (*w)(nil)
这是让编译器进行类型检查判断 是否实现io.Writer 接口展开评论点赞 - #挑战每日一条沸点#
2023-08-02
打卡Day29
代码生成式依赖注入框架Wire
Wire 是一个轻巧的 Golang 依赖注入工具。它由 Go Cloud 团队开发,通过自动生成代码的方式在编译期完成依赖注入。
它不需要反射机制,性能基本没损失。
高级特性
NewSet 一般应用在初始化对象比较多的情况下,减少 Injector 里面的信息。当我们项目庞大到一定程度时,可以想象会出现非常多的 Providers
Struct 除函数外,结构体也可以充当 Provider 的角色。Wire 给我们提供了结构构造器
Bind 函数的作用是为了让接口类型的依赖参与 Wire 的构建。Wire 的构建依靠参数类型,接口类型是不支持的
CleanUp : 构造器可以提供一个清理函数(cleanup),如果后续的构造器返回失败,前面构造器返回的清理函数都会调用。初始化Injector之后可以获取到这个清理函数,清理函数典型的应用场景是文件资源和网络连接资源。清理函数通常作为第二返回值,参数类型为func()展开评论点赞 - #挑战每日一条沸点#
2023-08-01
打卡Day28
失败容错策略 failover、failfast、failback、failsafe 学习
failover
Fail-Over的含义为“失效转移”,是一种备份操作模式,当主要组件异常时,其功能转移到备份组件。其要点在于有主有备,且主故障时备可启用,并设置为主。如Mysql的双Master模式,当正在使用的Master出现故障时,可以拿备Master做主使用。
failfast
快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作。尽可能的发现系统中的错误,使系统能够按照事先设定好的错误的流程执行
go 快速更新模块依赖
go list -m -u all展开评论点赞 - #挑战每日一条沸点#
2023-07-31
打卡Day27
Go 包 的特征
一个文件夹下只能有一个package。
import后面的其实是GOPATH开始的相对目录路径,包括最后一段。但由于一个目录下只能有一个package,所以import一个路径就等于是import了这个路径下的包。
注意,这里指的是“直接包含”的go文件。如果有子目录,那么子目录的父目录是完全两个包
同一个包只能在同一个文件夹下 不包括子文件夹
文件上传的形式 缓冲区Disk buffer Mem Buffer展开评论点赞 - #挑战每日一条沸点#
2023-07-29
打卡Day26
Rpc 框架 简析
Dubbo 国内最早开源的 RPC 框架
SpringCloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,提供了丰富的生态组件
1、RPC框架一般使用长链接,不必每次通信都要3次握手,减少网络开销。
2、RPC框架一般都有注册中心,有丰富的监控管理。发布、下线接口、动态扩展等,对调用方来说是无感知、统一化的操作协议私密,安全性较高
3、RPC 协议更简单内容更小,效率更高,服务化架构、服务化治理,RPC框架是一个强力的支撑。
Rpc 客户端 主要是 负载均衡在调用相同服务时候实现负载均衡
序列化和反序列化在传输过程中尤其重要展开评论点赞