【mongoDB】聚合框架

常见操作1.常见管道阶段 分类 运算符 作用 / 说明 常见场景 过滤 $match 按条件筛选文档,类似 find 的 query 只要上架商品、只要本月数据 投影/加字段 $project / $addFields / $set 控制输出字段、重命名字段、增加计算字段 只返回必要字段、计算 finalPrice 分组统计 $gro...

【算法】缓存淘汰算法LRU/LFU

无论是什么系统,在研发的过程中不可避免的会使用到缓存,而缓存一般来说我们不会永久存储,但是缓存的内容是有限的,那么我们如何在有限的内存空间中,尽可能的保留有效的缓存信息呢? 那么我们就可以使用 LRU/LFU算法 ,来维持缓存中的信息的时效性。 LRU 详解原理 LRU (Least Recently Used:最近最少使用)算法在缓存写满的时候,会根据所有数据的访问记录,淘汰掉未来被访问几...

【系统设计】如何定位Redis热key

热key指一段时间内被频繁访问或操作的键。通常出现在商品限时抢购、瞬时新闻热点等业务场景,可能会对系统的稳定性和可用性造成影响,比如对应节点的网卡带宽被打满,出现丢包重传,请求波动耗时大幅上升,甚至影响到业务的正常使用,引发用户的不满。因此,不可能等到热Key出现已经拖垮了服务再去处理,那个时候业务一定已经受到影响,因此需要提前尽可能在设计和开发时避免引入全局热key,另外,真实的生成环境还...

【系统设计】秒杀系统实现方案与技术

秒杀系统作为互联网“高并发、高性能、高可用”系统的代表,从系统设计、数据处理到运维保障等方面都有很多可以考察和深挖的点,本文将尝试分析涉及的关键问题,并总结相关的最佳实践。 秒杀系统的核心挑战在于平衡性能、一致性与安全性。 秒杀系统中常见的问题包括:超卖问题、高并发性能瓶颈、数据一致性问题、分布式锁失效、事务管理失效、安全与放作弊问题、系统监控与运维等。 通过分层架构(如流量削峰、异步化)、...

【数据库】如何保障数据库和缓存一致性

数据库和缓存的一致性问题,在面试以及实践中都是非常重要的知识点,而一般面试者只能说出最佳的实践是什么(即延迟双删或者先更新数据库再删除缓存key),但是不能通过线程之间的读写关系举例说明为什么要这样实践,本文通过穷尽更新缓存的四种方式进行分析,得出了这个结论。最后,本文还介绍了利用消息中间件MQ应对其他更复杂的情形。 [建议先看思维导图和How的总结] Why缓存? 缓存合理使用确提升了系...

【Kubernetes】如何搭建Kubenetes集群

本文将使用kubeadm模式快速部署一主两从集群。 虚拟机准备首先本地需要准备:CentOS7.x-86_x64镜像,硬件至少2GB。 然后打开VMware WorkStation新建三个虚拟机(新建虚拟机教程,可以选择基础设施服务器),分别命名为master、node1、node2。 接下来确保虚拟机能够访问外网(注意宿主机不要连校园网),采用NAT模式,操作如下: 检查宿主机的适配器V...

【Go基础】分布式事务

从几个缩写讲起首先,提到事务,一般指的是数据库的事务,指逻辑上的一组操作,要么都执行,要么都不执行。 ACID,指的是数据库在写入或者更新资料时,为了保证交易正确可靠,要具备的4个特性: 缩写 英文单词 中文解释 说明 A atomicity 原子性 最小执行单位,all or nothing C consistency 一致性 执行前后一致 I isolation 隔离...

【技术思考】工程上的最佳实践

正式进入工作岗位之前对精进技术的思考——工程上的最佳实践 Why?首先要理解为什么要从工程实践的角度思考,常规的培训教程虽然是以项目的形式,但目的是帮助我们学会使用基本的开发工具如何使用,而实际开发过程中如何将各种技术组件有效地组合和应用、如何解决实际的业务问题,则是进一步需要关注的问题。 How?以原有的点评项目为例进行思考,可以考虑各部分设计的原因,能否优化: 消息中间件:思考使用场景...

【通用工具】Git分布式版本控制工具

Git有两个基本作用: 版本控制 团队开发 一、Git工作流程 二、Git基本配置设置用户信息设置:(+如果要查看,只输入双引号前面的就好了) 12git config --global user.name "yourname"git config --global user.email "youremail" 有3种范围:--local只对某个...

【Go基础】环境搭建与开发

环境第1步:下载go(下载地址) 第2步:配置环境变量 GOROOT:go的安装目录 GOPATH:go的工作目录(全局),一般给文件夹起名叫GoWorkstation、Go_WorkSpace等。 src:存放源代码 pkg:存放依赖包 bin:存放可执行文件 GOPATH 是 Go 早期(Go 1.11 之前)管理依赖和项目代码的核心环境变量,早期go build、go run或...

1234