随笔分类 - 面面俱到
摘要:虚引用是最弱的一种java对象引用方式,其他的引用方式至少还能get到对象,而虚引用的句柄是获取不到对象的,正如它的名字一样:形同虚设。 使用 public class TestMain { public static void main(String[] args) { // 新建一个对象 Use
阅读全文
摘要:官方通告SpringBoot1.5.x及以下版本官方不再提供维护了,建议开发者选择使用SpringBoot2.0.x以上的版本,相对应的SpringCloud版本也最好不要使用。 简单的查看版本信息:https://start.spring.io/actuator/info Spring Cloud
阅读全文
摘要:第一代 Spring Cloud (主要是 Spring Cloud Netflix)很多组件已经进入停更维护模式。第二代Spring Cloud核心组件主要以Spring Cloud Alibaba为主,Spring Cloud Alibaba是由一些阿里巴巴 的开源组件和云产品组成的,2018年
阅读全文
摘要:Ribbon调用流程 Ribbon工作原理 为什么@LoadBalanced注解能赋予RestTemplate负载均衡的能力? Ribbon组件在启动时,会自动加载RibbonAutoConfiguration这个配置类,如下图 RibbonAutoConfiguration加载于EurekaCli
阅读全文
摘要:微服务中常见的概念 服务注册与服务发现 服务注册:服务提供者将所提供服务的信息(服务器IP和端口、服务访问协议等) 注册/登记到注册中心。 服务发现:服务消费者能够从注册中心获取到较为实时的服务列表,然后根究一定 的策略选择一个服务访问。 负载均衡 负载均衡即将请求压力分配到多个服务器(应用服务器、
阅读全文
摘要:Bitmap原理 Bit-map的基本思想就是用一个bit位来标记某个元素对应的Value。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。(PS:划重点 节省存储空间) 假设有这样一个需求:在20亿个随机整数中找出某个数m是否存在其中,并假设32位操作系统,4G内存。 在Jav
阅读全文
摘要:锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制。 并发控制技术 在数据库中,数据可以允许多个用户同时访问,因此在并发场景下需要确保数据的一致性,并发场景有三种: 读-读:多用户并发读不会有问题 读-写:可能出现脏读、幻读、不可重复读 写-写:并发更新同一行会导致丢失更新 目前有三种并发控
阅读全文
摘要:高可用系统设计指南 什么是高可用?可用性的判断标准是什么? 高可用描述的是一个系统在大部分时间都是可用的,可以为我们提供服务的。高可用代表系统即使在发生硬件故障或者系统升级的时候,服务仍然是可用的。 一般情况下,我们使用多少个 9 来评判一个系统的可用性,比如 99.9999% 就是代表该系统在所有
阅读全文
摘要:十大经典排序算法 所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。排序算法,就是如何使得记录按照要求排列的方法。排序算法在很多领域得到相当地重视,尤其是在大量数据的处理方面。一个优秀的算法可以节省大量的资源。在各个领域中考虑到数据的各种限制和规范,要得到一个符
阅读全文
摘要:数据结构,也就是 Data Structure,是一种存储数据的结构体,数据与数据之间存在着一定的关系,这样的关系有数据的逻辑关系、数据的存储关系和数据的运算关系。 在 Java 中,数据结构一般可以分为两大类:线性数据结构和非线性数据结构。 数组 数组(Array) 是一种很常见的数据结构。它由相
阅读全文
摘要:@Enbale模块驱动的基本原理 在我们平时使用spring的过程中,如果想要加个定时任务的功能,那么就需要加注解@EnableScheduling,如果想使用异步的功能,那就要加@EnableAsync注解,其实这类注解就是属于@Enable模块。 那么@Enable模块到底有什么功能? 模块是指
阅读全文
摘要:操作系统的四个特性? 并发:同一段时间内多个程序执行(与并行区分,并行指的是同一时刻有多个事件,多处理器系统可以使程序并行执行)。 共享:系统中的资源可以被内存中多个并发执行的进线程共同使用。 虚拟:通过分时复用(如分时系统)以及空分复用(如虚拟内存)技术把一个物理实体虚拟为多个。 异步:系统进程用
阅读全文
摘要:设计模式的六大原则 开闭原则:对扩展开放,对修改关闭,多使用抽象类和接口。 里氏替换原则:基类可以被子类替换,使用抽象类继承,不使用具体类继承。 依赖倒转原则:要依赖于抽象,不要依赖于具体,针对接口编程,不针对实现编程。 接口隔离原则:使用多个隔离的接口,比使用单个接口好,建立最小的接口。 迪米特法
阅读全文
摘要:我们的系统都是分布式部署的,日常开发中,秒杀下单、抢购商品等等业务场景,为了防止库存超卖,都需要用到分布式锁。 分布式锁其实就是,控制分布式系统不同进程共同访问共享资源的一种锁的实现。如果不同的系统或同一个系统的不同主机之间共享了某个临界资源,往往需要互斥来防止彼此干扰,以保证一致性。 业界流行的分
阅读全文
摘要:日常开发中,我们需要对系统中的各种数据使用 ID 唯一表示,比如用户 ID 对应且仅对应一个人,商品 ID 对应且仅对应一件商品,订单 ID 对应且仅对应一个订单。 分布式 ID 是分布式系统下的 ID。在分库分表的架构下,尤其常见。 分库之后, 数据遍布在不同服务器上的数据库,数据库的自增主键已经
阅读全文
摘要:服务注册中心组件 Eureka Eureka遵守的是AP原则。 CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。 Eureka 交互流程 Eureka 包含
阅读全文
摘要:ZooKeeper 是什么? ZooKeeper 是一个分布式协调服务,为我们提供了高可用、高性能、稳定的分布式数据一致性解决方案。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。这些
阅读全文
摘要:说说TCP的三次握手 假设发送端为客户端,接收端为服务端。开始时客户端和服务端的状态都是CLOSED。 (1)第一次握手:客户端向服务端发起建立连接请求,客户端会随机生成一个起始序列号x,客户端向服务端发送的字段中包含标志位SYN=1,序列号seq=x。第一次握手前客户端的状态为CLOSED,第一次
阅读全文
摘要:为什么要使用消息队列? 主要有三点原因:解耦、异步、削峰。 (1)解耦。比如,用户下单后,订单系统需要通知库存系统,假如库存系统无法访问,则订单减库存将失败,从而导致订单操作失败。订单系统与库存系统耦合,这个时候如果使用消息队列,可以返回给用户成功,先把消息持久化,等库存系统恢复后,就可以正常消费减
阅读全文