Penistrong's Nano Blog

My left brain has nothing right,and the right brain has nothing left

[分布式] CAP理论与BASE理论

Subtitle here

分布式基础理论 分布式系统中,由于节点直接是分散开的,要保证系统能够应对分布式环境中出现的各种问题 CAP理论 在理论计算机科学中的分布式系统领域,CAP理论(CAP theorem)指的是,对于一个分布式系统而言,当设计读写操作时,只能同时满足以下三点中的两个 为什么是三选二呢,CAP之父Eric Brewer于2012年重写了之前的论文,解释了成因: 当发生网络分区时,如...

[分布式] 负载均衡算法与限流算法

常见负载均衡与限流算法

分布式系统负载均衡与限流算法 成熟的线上业务处于各种原因考量,多是分布式系统,每个服务集群有很多实例,上游请求调用服务对外暴露的接口时,需要通过负载均衡合理地将请求分配到不同实例上进行处理,同时分布式限流中间件要控制传入整个服务集群的请求数量与频率,防止集群依赖的资源(比如其他服务、数据库等)被大量请求涌入导致服务雪崩 负载均衡算法 轮询法 Round Robin 将请求按顺序轮...

[Java] Synchronized与ReentrantLock

Java中的两种悲观锁

Java的悲观锁实现 Java的悲观锁实现有两种,一种是JVM中实现的synchronized关键字,由虚拟机对其优化;一种是JDK实现的ReentrantLock,加锁和解锁过程由程序员通过API提供的lock()、try_lock()、unlock()方法手动控制 公平锁与非公平锁 锁的公平性是针对加锁时的动作: 如果是公平锁,线程想要竞争该锁时如果发现有其他线程在排队,则...

[Java] JVM方法调用

字节码指令'invokexxx' 方法调用的过程

JVM方法调用 方法调用的唯一任务是确定被调用方法的版本(即具体调用哪个方法?父类的还是子类的?静态的还是动态的?),方法的具体执行过程还需要即时编译器JIT等翻译成机器码执行 字节码Class文件中,类中方法要调用的其他目标方法都是常量池中对应的目标方法符号引用,而不是目标方法在运行时实际内存中的入口地址(直接引用),这样的方法调用方式让JVM拥有更强大的动态扩展能力 方法的重载与重...

[Java] 面向JVM的字节码

.class文件详解与JVM类加载过程

面向JVM的字节码 什么是字节码 Write Once, Run Anywhere Java程序的一大特性便是支持跨平台,它不需要被重新编译就能够在安装了不同操作系统的计算机上运行,这个特性主要是基于JVM与字节码实现的 JVM可以理解的代码就称作字节码,通常是扩展名为.class的文件,JVM加载字节码后再进行解释执行 并不是只有*.java对应的java程序可以被...

[Spring] Spring Bean

Details in Bean Life Circle

SPring Bean Spring框架提供的两大核心功能就是IOC(Inversion Of Control)控制反转和AOP(Aspect Oriented Programming)面向切面编程 Spring作为轻量级的开发框架,集成了许多模块,其存在的使命就是为了提高程序员的开发效率,而IOC和AOP的实现都离开不了Spring对Bean的管理 Bean被创建后交由Spring的...

[Spring Cloud] 消息队列与RabbitMQ

消息队列概念与RabbitMQ知识点

消息队列 架构设计 什么是消息队列? 消息队列就是一个FIFO的存放消息的容器,当需要使用消息时就从队列里取出消息,按顺序对消息进行消费 参与消息传递的双方称为生产者和消费者(经典的生产消费设计模式),生产者负责发送消息,消费者负责处理消息 随着分布式和微服务的发展,消息队列在系统设计中有了更大的发挥空间,其应用场景广阔,是分布式和微服务系统的重要组件之一 应用场景 消息...

[Redis] Redis知识点总结

Redis相关基础知识

Redis Redis(Remote dictionary server),即 远程字典服务,是一个基于C语言开发的内存型-可持久化-键值对-NoSQL(Not only SQL)-数据库 Redis广泛用于实际生产环境,读写速度非常快,适用于分布式缓存集群 Redis快在何处 上图从三个方面总结了Redis性能突出的原因: RAM-based: 基于内存,访存...

[Spring Cloud] 微服务架构组件特点

Nacos, Sentinel, Spring Cloud Gateway, RabbitMQ, etc.

Spring Cloud 微服务架构常用组件特点 Nacos Nacos全称Naming and Configuration Serivce,同时扮演了服务注册中心和配置中心的角色,是分布式系统(微服务架构)中不可或缺的一角 注册中心 Naming Service Nacos集群中各个节点的数据一致性可以由两种分布式协议达成,其一是Raft协议,选举Leader进行数据写入,即C...

[LeetCode] 动态规划

动态规划相关问题,强化自身不足

动态规划 背包问题 犹记得大三上算法设计这门课时,动态规划给我印象最深的经典问题就是最长公共子序列(LCS)和背包问题 背包问题是一种组合优化的NP完全问题: 有$N$个物品和容量为$W$的背包,每个物品都有自己的体积$w$和价值$v$,如何分配使得背包所装下物品的总价值最大? 通用的动规划分为: 设 $dp[i][j]$ 表示前 $i$ 件物品的总体积不超过 $j...