“没有测量,就没有科学。”这是科学家门捷列夫的名言。在计算机科学中,特别是在机器学习的领域,对模型的测量和评估同样至关重要。只有选择与问题相匹配的评估方法,我们才能够快速的发现在模型选择和训练过程中可能出现的问题,迭代地对模型进行优化。本文...
常见类型包括LFU、LRU、ARC、FIFO、MRU。 最不经常使用算法(LFU, Least Frequently Used): 这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这...
字符串: SDS list: 元素少且小 👉🏿 ziplist , 元素多且大 👉🏿 双链表 hash: 元素少且小 👉🏿 ziplist , 元素多且大 👉🏿 hashtable zset: 元素少且小 👉🏿 ziplist , 元素多且...
悲观锁 共享锁、排他锁 共享锁,也就是其他事务可以并发读(其他事务也需要加共享锁),但是不能写。 排它锁,其他事务不能并发写也不能并发读。 乐观锁 乐观锁其实也不是实际的锁,甚至没有用到锁来实现并发控制,而是采取其他方式来判断能否修改数...
我们知道java在运行的时候有两个地方可能用到重排序,一个是编译器编译的的时候,一个是处理器运行的时候。 那么我们就应该问问为啥要用指令重排序呢? 编译期重排序有啥好处? CPU计算的时候要访问值,如果常常利用到寄存器中已有的值就不用去内存...
数据库与缓存双写可以有4种顺序: 更新缓存->更新db、更新db->更新缓存、删除缓存->更新db、更新db->删除缓存 前两种顺序有显著的缺陷: 后更新的数据源失败,因为无法将先更新的数据源回滚(redis)或者不知道该不该回滚(超时)...
暴露grafana等内部组件服务 在安装完成istio后,默认状态下,集群外用户不能直接访问istio集群内的grafana等管理、监控服务。 有两种方法可以将集群内服务开放出来。一种是使用port-forward方式将本地端口流量转发...
使用自定义 TCP 协议进行传输就会避免上面这个问题,极大地减轻了传输数据的开销。 这也就是为什么通常会采用自定义 TCP 协议的 RPC 来进行进行服务调用的真正原因。 除此之外,成熟的 RPC 框架还提供好了“服务自动注册与发现”、“...
服务网格原理
本地连接k8s集群 在日常开发的过程中,经常会需要在本地开发的程序需要在k8s中调试的场景,比如,写了一个operator。 如果此时,本地又没有可以直接可达的k8s集群, 比如k8s是在公有云的vpc环境内,外面无法直接访问。想要本地连接...