ARTS 打卡第 6 周
概要
Algorithm 做一道算法题
Review 阅读一篇英文技术文章
Technique/Tips 学习一个技术技巧
Share 分享一个观点或思考
输出
[A] 146. LRU 缓存
要求:函数
get
和put
必须以O(1)
的平均时间复杂度运行解题思路
需要用到一个哈希表和一个双向链表。Java LinkedHashMap 是一种结合了哈希表与双向链表的数据结构,但本算法希望面试者自己实现。
双向链表按照被使用的顺序存储了这些键值对,靠近头部的键值对是最近使用的,而靠近尾部的键值对是最久未使用的
哈希表即为普通的哈希映射(HashMap),通过缓存数据的键映射到其在双向链表中的位置
首先使用哈希表进行定位,找出缓存项在双向链表中的位置,随后将其移动到双向链表的头部,即可在 O(1)O(1)O(1) 的时间内完成
get
或者put
操作
[R] An Introduction to Domain-Driven Design
来源,完成复杂业务的领域建模需要三步:
analyze the domain
Define the bounded contexts
Define entities, aggregates, and service
[T] 云效的 CD 流程
云效支持主机和 Kubernetes 部署,同时支持自定义 Kubernetes 集群,满足了不同应用的部署需求。要能让云效访问到本地的 kubernetes 集群,除了要让 ApiServier 暴露公网 IP 或域名,还需要准确配置config
[S] 架构设计 VS DDD
架构设计的目的是降低系统的复杂度
没有完美的架构,所以我们应该追求的是最适合当下的架构,并随着时间推进和业务的变化不断演进
DDD 的目标是通过对业务和领域建模,让业务和代码保持一致的模型,在构建统一语言的基础上,有效防止代码的腐化
DDD 的战略设计通常被用于微服务的划分
评论