提高写性能的常见方法 如何提高写1. 异步 问题 消息丢失 消息溢出 消费过慢 方法 本地消息表:以插入的形式插入本地消息避免锁表 引入缓存: 当我们把消息写到消息管道中后,我们就用cache记录一下他的状态。然后在这个消息真正被消费时,从缓存中删除这个状态。 用户如果发起请求状态的查询。我们可以根据cache中的情况,给用户返回状态。cache中如果还有,就说明请求处理中,cache中如果没有,就说明请求处理完 2023-11-25
谈谈水平越权 什么是水平越权 是指攻击者尝试访问与当前用户具有相同权限的其他用户资源 比如过uid查询用户信息(包括用户手机号、家庭住址等敏感信息),且uid为数据库自增主键。此时攻击者可用自己的uid向下递减或向上递增试探性查询其他用户信息,导致用户信息泄露。 我们需要对攻击者的攻击成本进行放大来进行一定程度的防范 解决方案 参数以post方式提交,攻击者需要抓包才能看到参数 关键参数进行加密混淆(主要手段 2023-10-18
如何在唯一性索引的情况下做逻辑删除 前提我们往往在面对接口幂等或者防止消息的重复消费的情况时,无论我们采取什么样的技术操作都需要在数据库层面做一定的唯一性索引来真正的保证我们对于幂等性的控制。 但是,我们对于数据库的删除操作往往是一种逻辑删除的操作,比如将is_deleted变为1等等,在这种情况下我们再往数据库插入数据,然后又删除便有可能导致数据库发生唯一性报错。 解决方案1 物理删除+数据归档 重新制定一张历史记录表 当我们对表 2023-10-18
闲谈Redis脑裂 什么是脑裂脑裂是在分布式系统中经常出现的问题之一,它指的是由于网络或节点故障等原因,导致一个分布式系统被分为多个独立的子系统,每个子系统独立运行,无法相互通信,同时认为自己是整个系统的主节点,这就会导致整个系统失去一致性和可用性。 Redis脑裂原因、危害、解决Redis的脑裂问题可能发生在网络分区或者主节点出现问题的时候: 网络分区:网络故障或分区导致了不同子集之间的通信中断。 Master节 2023-10-03
Hello World Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick 2023-10-03
浅谈协程 什么是协程进程是系统进行资源分配和保护的基本单位,线程是处理器调度和分派的基本单位 进程具有一个独立的执行环境。 进程是程序在计算机上的一次执行活动 。通常情况下,进程拥有一个完整的、私有的基本运行资源集合。特别地,每个进程都有自己的内存空间。 线程有时也被称为轻量级的进程。进程和线程都提供了一个执行环境,但创建一个新的线程比创建一个新的进程需要的资源要少。线程是在进程中存在的,每个进程最少有一 2023-09-26
新时代与老年代对象相互引用怎么办 跨代引用JVM的跨代引用问题是指在Java堆内存的不同代之间存在引用关系,导致对象在不同代之间的引用被称为跨代引用。比如:新生代到老年代的引用,老年代到新生代的引用等。 在进行一次MinorGC(YoungGC)的时候,会从GC Root出发,然后进行可达性分析,假如当前正在进行一次Young GC,如果他发现一个对象处于老年代,那么JVM就会中断这条路径。 那么这时候,JVM就会认为只有A和B是 2023-09-15
闲谈看门狗机制 实现为了避免Redis实现的分布式锁超时,Redisson中引入了watch dog的机制,他可以帮助我们在Redisson实例被关闭前,不断的延长锁的有效期。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 2023-08-15
浅谈网络安全 常见攻击DoS DoS(拒绝服务,Denial of Service)就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。这是早期非常基本的网络攻击方式。 利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应的行为,就是DoS攻击。 DDoS DDoS 攻击可以具体分成两种形式:带宽消耗型以及资源消耗型。它们都是透过大量合法或伪造的请求占用大量网 2023-08-03
看看什么是状态机 状态机在我们日常开发中,我们提到的状态机基本都是有限状态机,用于解决状态相关的问题。有限状态机可以通过状态转换和事件触发来描述程序的行为和状态迁移。 一个状态机通常包含以下几个要素: 状态(States):代表系统可能处于的各种状态,例如 “已下单”、”已支付”、”已发货” 等。 事件(Events):触发状态转换的事件,例如 “下单”、”支付”、”发货” 等。 转换(Transitions): 2023-07-15