自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(197)
  • 收藏
  • 关注

原创 最新Java面试题大全1000+面试题附答案详解,最全面详细,看完稳了

Redis、MySQL、Spring、Spring Boot、Spring Cloud、RabbitMQ、Kafka、Linux 等技术栈共有1000+道面试题。、头条等大厂面试大全,其中概括的知识点有:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、39、你的系统目前有许多正在运行的任务,在不重启机器的条件下,有什么方法可以把所有正在运行的进程移除呢?9、解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法。

2023-04-01 10:19:40 978 2

原创 什么是Docker容器?一文带你了解,看完直接学会

Docker容器的运行逻辑如下图所示,Docker使用客户端/服务器 (C/S) 架构模式,Docker守护进程(Docker daemon)作为Server端接收Docker客户端的请求,并负责创建、运行和分发Docker容器。Docker守护进程一般在Docker主机后台运行,用户使用Docker客户端直接跟Docker守护进程进行信息交互。Docker守护进程:接收并处理Docker客户端发送的请求,监测Docker API的请求和管理Docker对象,比如镜像、容器、网络和数据卷。

2023-04-01 10:17:00 1648 1

原创 最新Redis面试题,学会直接进大厂,offer拿到手软

Redis的数据都基于缓存的,所以很快,每秒可以处理超过 10万次读写操作,是已知性能最快的Key-Value DB。Redis也可以实现数据写入磁盘中,保证了数据的安全不丢 失,而且Redis的操作是原子性的。37、假如 Redis 里面有 1 亿个 key,其中有 10w 个 key 是以某个固定的已知的前缀开头的,如果将它们全部找出来?34、一个 Redis 实例最多能存放多少的 keys?Redis主要有5种数据类型,包括String,List,Set,Zset,Hash,满足大部分的使用要求。

2023-04-01 10:15:56 288 1

原创 如何讲解 Java8 的函数式编程,大厂面试必考。

出现的时间已经不算短了,免费维护期马上也要到期了,官方已经开始推荐使用 Java11。Java8 是革命性的一个版本,一直以来,Java 最受诟病的地方就是代码写起来很啰嗦,仅仅写一个 HelloWorld 都需要些很多的样板代码。在 Java8 推出之后,啰嗦的代码有了很大的改观,Java 也可以写出简单优美的代码。最明显的改观就是 Java 开始支持。

2023-04-01 10:13:37 202

原创 Java并发编程--一文带你从基础进阶高级

Synchronized:是非公平锁(不能保证线程获得锁的顺序,即线程不会依次排队去获取资源,而是争抢,但是结果一定是正确的),是可重入锁(已获得一个锁,可以再获得锁且不会造成死锁,比如synchronized内部可以再写个synchronized函数)都会不一致(上面例子结果如果一样是因为只有3个线程,for循环即出错,因为number–这个函数本身不是线程安全的),所以就引入了锁的概念,synchronized,lock保证了输出顺序、计算结果的一致性。更多学习资料小编已打包好,可以找我领取哦!

2023-04-01 10:13:20 113

原创 Java锁原理与应用,一文带你搞懂其中原理

如果A使用锁的时间远远小于B被阻塞和挂起的执行时间,那么我们将B挂起阻塞就相当的不合算,于是出现自旋,自旋指的是锁已经被其他线程占用时,当前线程不会被挂起,而是在不停的试图获取锁(可以理解为不停的循环),每循环一次表示一次自旋过程。非公平锁的性能要高于公平锁,因为线程有几率不阻塞直接获得锁。基本概念:常见于AQS,公平锁就是在并发环境中,每个线程在获取锁时会先查看此锁维护的等待队列,如果为空,或者当前线程是等待队列的第一个,就占有锁,否则就会加入到等待队列中,直到按照FIFO的规则从队列中取到自己。

2023-04-01 10:10:19 258

原创 最新800道Java后端经典面试题,学完直接找到Offer

Java 基础Java 集合Java 并发 && 多线程JVM 篇数据库缓存/Redis计算机网络消息队列mybatis操作系统SpringNetty/tomcat常用Linux 命令ZooKeeperElasticsearchdubbo框架Spring cloudNginx算法大厂方案设计面试题Java 基础equals与==的区别final, finally, finalize 的区别重载和重写的区别两个对象的hashCode()相同

2023-04-01 10:09:28 391

原创 一文带你吃透负载均衡,从此走上架构师之路

对负载均衡的理解零零散散,不成体系。对OSI模型有些许了解有耐心。本文涉及大量的知识点,且只能用文字才能讲清楚,所以文字比较多。读完此篇文章,从宏观的角度理解了负载均衡的原理以及实现机制。加深对分布式架构的了解本文首先从概念开始,讲解什么是负载均衡,以及负载均衡在分布式系统中所承担的角色以及提供的功能。讲解负载均衡的分类。分别从软硬件角度地域范围角度以及OSI 模型角度进行分类讲解负载均衡的实现方案。从负载均衡的策略角度来分析目前业界的负载均衡算法以及其优缺点。

2023-04-01 10:07:46 177

原创 明明加了唯一索引,为什么还是产生重复数据?一文带你了解

逻辑删除需要在表中额外增加一个删除状态字段,用于记录数据是否被删除。在所有的业务查询的地方,都需要过滤掉已经删除的数据。通过这种方式删除数据之后,数据任然还在表中,只是从逻辑上过滤了删除状态的数据而已。其实对于这种逻辑删除的表,是没法加唯一索引的。为什么呢?假设之前给商品表中的`name`和`model`加了唯一索引,如果用户把某条记录删除了,delete_status设置成1了。后来,该用户发现不对,又重新添加了一模一样的商品。由于唯一索引的存在,该用户第二次添加商品会失败,即使该商品

2023-02-10 15:55:28 287

原创 4种 Redis 集群方案介绍+优缺点对比,一文带你了解

客户端分片是把分片的逻辑放在Redis客户端实现,(比如:jedis已支持Redis Sharding功能,即ShardedJedis),通过Redis客户端预先定义好的路由规则(使用一致性哈希),把对Key的访问转发到不同的Redis实例中,查询数据时把返回结果汇集。比如,一个分布式的存储系统,要将数据存储到具体的节点上,如果采用普通的hash方法,将数据映射到具体的节点上,如mod(key,d),key是数据的key,d是机器节点数,如果有一个机器加入或退出这个集群,则所有的数据映射都无效了。

2023-02-10 15:53:48 601

原创 Redis主从、哨兵、 Cluster集群一锅端,一篇文字搞懂

1. Redis 主从面试官经常会问到Redis的高可用。Redis高可用回答包括两个层面,一个就是;另外一个就是保证。1.1 Redsi主从概念1.2 Redis 主从同步过程Redis主从同步包括三个阶段。第一阶段:主从库间建立连接、协商同步。psyncpsyncFULLRESYNCrunIDoffsetbgsaveRDBRDBhgetall如何解决主从数据不一致问题呢?1.3.2 读取过期数据如果使用Redis版本低于3.2,读从库时,并不会判断数据是否过期,而是会。

2023-02-10 15:52:17 172

原创 浅谈java异常[Exception]类,一文带你搞懂

是一种"事务性"的保障,它的目的是保证程序在异常的情况下运行完毕,同时它还会告知程序员程序中出错的详细信息(这种详细信息有时要依赖于程序员设计)。看一下这个类中关于除运算的方法,如果你是新手你可能会直接返回计算结果,根本不去考虑什么参数是否正确,是否合法(当然可以原谅,谁都是这样过来的)。异常是程序处理意外情况的机制,当程序发生意外时,我们需要尽可能多的得到意外的信息,包括发生的位置,描述,原因等等。异常的本意是好的,让我们试图修复程序,但是现实中我们修复的几率很小,我们很多时候就是用它来记录出错的信息。

2023-02-10 15:51:02 683

原创 阿里P8大咖耗费三年整理的:Java架构之完美设计实战教程

在框架集成中,细心的读者会发现,还有很多功能是可以扩展的,感兴趣的读者可以参照本书作者在SSI的基础上开发的“颐凡Java应用开发平台”。另外,一个庞大的综合Java EE系统,还包括相关批处理程序,因此本章也介绍了常用的SpringBatch技术,读者朋友可以根据实际项目的需求来灵活运用。第14章,开源框架,本章介绍了开源框架的选择、使用、开发以及发布中的必备技术。希望大家学习完本文之后,能够建立起自己的java架构技能体系,并且能够灵活运用到自己的工作之中,助自己更好的成长,成为优秀的。

2023-02-10 15:49:56 144

原创 为什么 Redis 要有哨兵机制?一文带你搞懂

这时如果要恢复服务的话,需要人工介入,选择一个「从节点」切换为「主节点」,然后让其他从节点指向新的主节点,同时还需要通知上游那些连接 Redis 主节点的客户端,将其配置中的主节点 IP 地址更新为「新主节点」的 IP 地址。这样也不太“智能”了,要是有一个节点能监控「主节点」的状态,当发现主节点挂了 ,它自动将一个「从节点」切换为「主节点」的话,那么可以节省我们很多事情啊!Redis 在 2.8 版本以后提供的**哨兵(\*Sentinel\*)机制**,它的作用是实现**主从节点故障转移**。它

2023-02-10 15:48:34 97

原创 Redis 的数据过期了就会马上删除么?一文带你搞懂

码哥,当 key 达到过期时间,Redis 就会马上删除么?先说结论,该命令在 Redis 2.4 版本,过期时间并不是很精确,它可能在零到一秒之间。从 Redis 2.6 开始,过期错误为 0 到 1 毫秒。指令可以将指定的 key 设置过期时间,如果没有设置过期时间, key 将一直存在,除非我们明确将其删除,比如执行DEL指令。所谓”狡兔死,走狗烹“,没用了就干掉,跟 35 岁就“毕业”是一个道理。好慌……EXPIRENXXX和GTLT选项。

2023-02-10 15:47:16 651 1

原创 分布式数据库数据一致性的原理、与技术实现方案,一文带你了解

但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性和BASE理论往往又会结合在一起。分布式的数据库,通过Raft算法来确保在分布式情况上数据的一致性,并且编目分区组和数据分区组对数据一致性要求又有所不同,编目分区组始终要求的是数据在多副本请情况下数据强一致性,而数据分区组则可以由用户在创建集合时来执行数据一致性的强度,强度越高,数据安全性越好,但是执行的效率就会相对较差,反之依然。这些都是过去传统关系型数据库所无法提供的。

2023-02-10 15:46:15 1210

原创 面试官:大量请求 Redis 不存在的数据,从而影响数据库,该如何解决?

比如你的系统里本来只留下 1kw 个元素,但是整体上来过了上亿的流水元素,布隆过滤器很无奈,它会将这些流失的元素的印迹也会永远存放在那里。假如有这么一个情景,放入数据包1时,将bitmap的1,3,6位设置为了1,放入数据包2时将bitmap的3,6,7位设置为了1,此时一个并没有存过的数据包请求3,做三次哈希之后,对应的bitmap位点分别是1,6,7,这个数据之前并没有存进去过,但是由于数据包1和2存入时将对应的点设置为了1,所以请求3也会压倒数据库上,这种情况,会随着存入的数据增加而增加。

2023-02-08 22:36:49 164

原创 原来我一直在踩雷区,MySQL数据库 使用索引的正确方式原来是这样的

索引可以说是数据库中的一个大心脏了,如果说一个数据库少了索引,那么数据库本身存在的意义就不大了,和普通的文件没什么两样。所以说一个好的索引对数据库系统尤其重要,今天来说说 MySQL 索引中 B+树索引好从细节和实际业务的角度看看在 MySQL 处,以及我们在使用索引时需要注意的知识点。在工作中,我们可能判断数据表中的一个字段是不是需要加索引的最直接办法就是:这个字段会不会经常出现在我们的 where 条件中。从宏观的角度来说,这样思考没有问题,但是从长远的角度来看,有时可能需要更细致的思考,比如我们是不是

2023-02-08 22:35:59 100

原创 百千页 Java 面试手册”在我手,何愁 offer 不到手

领取方式:私信回复暗号**【444】**即可免费领取更多完整版资料。Java 注解面试题多线程 &并发面试题(78 道)Elasticsearch 面试题(8 道)ZooKeeper 面试题(30 道)JavaOOP 面试题(108 道)RabbitMQ 面试题(86 道)Java 序列化面试题(38 道)MongoDB 面试题(12 道)MyBatis 面试题(45 道)Spring 面试题(30 道)Java 异常面试题(8 道)Mysql 面试题(78 道)Redis 面试题(96 道)

2023-02-08 22:35:23 65

原创 大小厂必问 Java 后端面试题(含答案)全文学会,大厂Offer拿到手软

序列化其实就是将对象转化成可传输的字节序列格式,以便于存储和传输。因为对象在 JVM 中可以认为是“立体”的,会有各种引用,比如在内存地址 Ox1234 引用了某某对象,那此时这个对象要传输到网络的另一端时候就需要把这些引用“压扁”。因为网络的另一端的内存地址 Ox1234 可以没有某某对象,所以传输的对象需要包含这些信息,然后接收端将这些扁平的信息再反序列化得到对象。所以反序列化就是将字节序列格式转换成对象的过程。我再扩展一下 Java 序列化。

2023-02-08 22:34:21 418

原创 MySQL事务与锁详解,一文带你了解

事务的典型场景在项目里面,什么地方会开启事务,或者配置了事务?无论是在方法上加注解,还是配置切面。比如下单,会操作订单表,资金表,物流表等等,这个时候我们需要让这些操作都在一个事务里面完成。当一个业务流程涉及多个表的操作的时候,我们希望它们要么是全部成功的,要么都不成功,这个时候我们会启用事务。

2023-02-08 22:32:43 206

原创 5年Java开发,99.9%技术都会都需要开始靠八股文面试了

(涉及Spark特点、Spark模块组成、Spark运行机制,以及Spark RDD、Spark Streaming、Spark SQL、DataFrame、DataSet、Spark Structured Streaming的原理和使用等内容)(涉及栈、队列、链表、散列表、二叉树、红黑树、图和位图、二分查找、冒泡排序、插入排序、快速排序、希尔排序、归并排序、桶排序、基数排序等算法等内容)现在的完整版资料是视频合集+PDF合集,包含了有Java 集合、JVM、多线程、设计模式、算法调优、

2023-02-08 22:31:30 121

原创 最新面试必刷 461 道大厂架构面试真题汇总 + 面经 + 简历模板

2023 年的第已经过半多了,今年的金九银十也快到了,很多粉丝私信反应说让我总结一份高质量面试题,金九银十之前想要准备准备,于是就有了今天这篇文章~在过去的一年里,LZ 看到很多小伙伴在面试的时候都拿到了自己心仪的 Offer,同时也在各大论坛博客平台看到了大家分享出来的面经,面试题。趁着年末时间多,公司上我手头的活基本完事了,就在业余时间把为大家简单汇总了一下,一共是 22 个主流技术;除面试汇总外还有一份与,想要在金九银十面试的小伙伴可以好好看看,多少对你们有所帮助!

2023-02-08 22:29:52 100

原创 阿里巴巴蚂蚁金服 java岗最新面试题,90% 会做, 你也能面试阿里 P8

面试需不需要提前准备?当然需要!并且越早越好!!!那些手拿 80%offer 的 20%幸运大佬,你以为真的只是因为“他们往往在你没关注无意识的时候,开始了解各种面试题了!在经历一天的吐血整理后,我们终于整合了 2022备战资源,并且已经按照各个知识点整理划分好,包括 Java 各大知识点以及 586 道面试题。话不多说,请直接往下看。

2023-02-08 22:28:35 182

原创 如何设计一个高可用、高并发秒杀系统,一文带你学会

如今的互联网已经在海量服务领域有了很成熟的理论,因此自己也很庆幸,能够从 0 到 1 完整践行海量服务。微视春节项目中的集卡瓜分活动,是一个典型的秒杀场景,自己参与其中,分享一些心得和总结。漏斗型业务,指的是,用户的请求,从客户端到 db 层,层层递减,递减的程度视业务而定。直筒型业务,指的是用户请求 1:1 的洞穿到 db 层,如下图所示。上图是一个典型的互联网业务,用户完成一个写操作,一般会通过接入层和逻辑层,这里的服务都是无状态,可以通过平行拓展去解决高并发的问题;

2023-02-06 16:26:47 168

原创 解决事件驱动型微服务中的并发问题,一文带你搞懂

如果服务处理两个库存变化事件(例如,库存从 0 到 1 和从 1 到 2),并同时运行步骤 3 的验证,那么它将传入两个事件,产生一个竞态条件,并因此把相同的通知发送两次。同一产品的两个库存变化事件可以由不同的实例来处理,即使两个实例都锁定了它们的执行,也只在它们各自的实例内有效,没有什么可以防止两个实例之间产生并发问题。不过,还有一个完全不同的方法,就是通过设计来处理并发。因此,一个服务,例如我们在这个例子中讨论的订阅服务,可以有多个实例同时从同一主题消费,这就容易受到我们之前讨论的并发问题的影响。

2023-02-06 16:05:21 135

原创 彻底搞通服务发现的原理和实现,一文全搞懂

微服务架构模式下,服务实例动态配置,因此服务消费者需要动态了解到服务提供者的变化,所以必须使用服务发现机制。服务发现的关键部分是注册中心。注册中心提供注册和查询功能。目前业界开源的有 Netflix Eureka、Etcd、Consul 或 Apache Zookeeper,大家可以根据自己的需求进行选择。服务发现主要有两种发现模式:客户端发现和服务端发现。客户端发现模式要求客户端负责查询注册中心,获取服务提供者的列表信息,使用负载均衡算法选择一个合适的服务提供者,发送请求。

2023-02-06 16:04:25 193

原创 掌握 MySQL 数据库规约落地及优化实战,一文带你全面了解

前言MySQL 数据库承载了掌门绝大部分核心业务的数据存储,因此 MySQL 数据库的稳定运行至关重要。DBA 团队一直致力于保障数据库环境的平稳运行,编写有掌门 MySQL 数据库规范文档,也提供有掌门数据库查询上线运维平台。规范虽然很全面,但是如果不了解数据库原理,不知道规范带来的效率提升,开发人员并不一定会严格遵守,规范也就失去了意义。本篇文章旨在从数据库原理出发,从三个角度(建表、索引、SQL 语句)进行深入分析,在了解数据库底层原理的基础上,理解数据库规范、以及数据库优化方法。一、建表如果把 My

2023-02-06 15:42:53 194

原创 你对天天挂在嘴边的高并发,怕是有什么误解吧?一文带你全面了解

2、业务都是从0到1做起来的,并发量和QPS只是参考指标,最重要的是:在业务量逐渐变成原来的10倍、100倍的过程中,你是否用到了高并发的处理方法去演进你的系统,从架构设计、编码实现、甚至产品方案等维度去预防和解决高并发引起的问题?另外,如果业务场景不同,高并发的落地方案也会存在差异,但是总体的设计思路和可借鉴的方案基本类似。**监控报警:**全方位的监控体系,包括最基础的CPU、内存、磁盘、网络的监控,以及Web服务器、JVM、数据库、各类中间件的监控和业务指标的监控。

2023-02-06 15:40:45 72

原创 阿里巴巴二面:为什么 Redis 会有哨兵?

Redis 在 2.8 版本以后提供的哨兵(Sentinel)机制,它的作用是实现主从故障自动转移。它会监测主节点是否存活,如果发现主节点挂了,它就会选举一个从节点切换为主节点,并且把新主节点的相关信息通知给从节点和客户端。监控、选主、通知。哨兵节点通过 Redis 的发布者/订阅者机制,哨兵之间可以相互感知,相互连接,然后组成哨兵集群,同时哨兵又通过 INFO 命令,在主节点里获得了所有从节点连接信息,于是就能和从节点建立连接,并进行监控了。过滤掉已经离线的从节点;

2023-02-06 15:16:46 83

原创 一文通关苦涩难懂的Java泛型,保姆级教程

相信大家对Java泛型并不陌生,无论是开源框架还是JDK源码都能看到它,毫不夸张的说,泛型是通用设计上必不可少的元素,所以真正理解与正确使用泛型,是一门必修课,本文将解开大家对泛型的疑惑,并通过大量实践,让你get到泛型正确的使用姿势,下面开始进入正题吧!

2023-02-06 15:14:30 141

原创 分布式数据库数据一致性的原理、与技术实现方案,一文学会

但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性和BASE理论往往又会结合在一起。分布式的数据库,通过Raft算法来确保在分布式情况上数据的一致性,并且编目分区组和数据分区组对数据一致性要求又有所不同,编目分区组始终要求的是数据在多副本请情况下数据强一致性,而数据分区组则可以由用户在创建集合时来执行数据一致性的强度,强度越高,数据安全性越好,但是执行的效率就会相对较差,反之依然。这些都是过去传统关系型数据库所无法提供的。

2023-02-06 15:13:13 321

原创 颠覆Kafka的统治,新一代云原生消息系统Pulsar,一文带你了解

Apache [Pulsar](https://so.csdn.net/so/search?q=Pulsar&spm=1001.2101.3001.7020)是Apache软件基金会顶级项目,是下一代云原生分布式消息流平台,集消息、存储、轻量化函数式计算为一体,采用计算与存储分离架构设计,支持多租户、持久化存储、多机房跨区域数据复制,具有强一致性、高吞吐、低延时及高可扩展性等流数据存储特性,被看作是云原生时代实时消息流传输、存储和计算最佳解决方案。

2023-02-03 16:24:03 883

原创 分布式微服务架构10个最重要的设计模式,一文带你学会

在微服务架构中,通常由独立的团队开发许多微服务。**事件存储:**EventStoreDB,Apache Kafka,Confluent Cloud,AWS Kinesis,Azure事件中心,GCP发布/订阅,Azure Cosmos DB,MongoDB,Cassandra。微服务架构旨在将大型,复杂的系统垂直(按功能或业务要求)划分为较小的子系统,这些子系统属于流程(因此可独立部署),并且这些子系统之间通过与语言无关的轻量级网络通信相互通信(例如REST,gRPC)或异步(通过消息传递)方式。

2023-02-03 16:22:51 287

原创 最新 200 道 Java 面试题,学会轻轻松松过面试

2015 年,因为工作岗位的变动,开始负责给集团招聘一些技术人员,出于对公司的负责,也为了更好的胜任技术经理的职位,在面试的这件事上,我做了大量的“功课”,首先我研究了几乎所有大厂的面试题,还和负责招聘工作的几个朋友,详细的探讨了 Java 面试所要涉及的知识点,于是就有了今天大家看到的这 200 多道面试题。:身边从事 Java 开发的人员越来越多,我的表弟表妹们,朋友的表弟表妹们,朋友的朋友的表弟表妹们,每次问我要相同的面试复习材料,已经让我疲于应付,索性整理出来,直接发链接给他们。

2023-02-03 16:22:17 120

原创 高并发、高性能、高可用,三高系统设计经验

高并发我们使用(Queries Per Second,每秒查询率)来衡量系统承载能力。

2023-02-03 16:21:08 374

原创 6 个 Java 开发工具,轻松分析定位 JVM 问题

这篇文章中介绍下如何使用 JDK 自带工具来分析和定位 Java 程序的问题。JDK 自带了很多命令行甚至是图形界面工具,帮助我们查看 JVM 的一些信息。比如,在我的机器上运行 ls 命令,可以看到 JDK 8 提供了非常多的工具或程序:接下来,我会与你介绍些常用的监控工具。你也可以先通过下面这张图了解下各种工具的基本作用:为了测试这些工具,我们先来写一段代码:启动 10 个死循环的线程,每个线程分配一个 10MB 左右的字符串,然后休眠 10 秒。可以想象到,这个程序会对 GC 造成压力:修改 pom

2023-02-03 16:19:20 181

原创 阿里内传322页Java并发编程核心讲义学习笔记,学会可以进阿里

掌握过程并不容易。我相信为了解决这个问题,你也听别人总结过并发编程的第一原则,那就是不要写并发程序。这个原则在前几年曾经是行得通的,那个时候多核服务器还是一种奢侈品,系统的并发量也很低,借助数据库和类似 Tomcat 这种中间件,我们基本上不用写并发程序。或者说,并发问题基本上都被中间件和数据库解决了。这主要是硬件的驱动以及国内互联网行业的飞速发展决定的,现在 64 核的服务器已经飞入寻常百姓家,大型互联网厂商的系统并发量轻松过百万,传统的中间件和数据库已经不能为我们遮风挡雨,反而成了瓶颈所在。

2023-02-03 16:18:07 98

原创 Mysql 和 Redis 数据如何保持一致,一文带你学会

Read Through 和 WriteThrough 的流程类似,只是在客户端查询数据 A 时,如果缓存中数据 A 失效了(过期或被驱逐淘汰),则缓存会同步去数据库中查询数据 A,并缓存起来,再返回给客户端。Redis 是用来当缓存,用来提升数据访问的性能。可见,最后缓存中的数据 A 和数据库中的数据 A 是一致的,理论上可能会出现一小段时间数据不一致,不过这种概率也比较低,大部分的业务也不会有太大的问题。可见,最后缓存中的数据 A 跟数据库中的数据 A 是不一致的,缓存中的数据 A 是旧的脏数据。

2023-02-03 16:16:39 113

原创 解析分布式系统的缓存设计,一文带你了解其中原理

Memcached 利用 slab allocation 机制来分配和管理内存,它按照预先规定的大小,将分配的内存分割成特定长度的内存块,再把尺寸相同的内存块分成组,数据在存放时,根据键值 大小去匹配 slab 大小,找就近的 slab 存放,所以存在空间浪费现象。缓存是用于存储数据的硬件或软件的组成部分,以使得后续更快访问相应的数据。这个操作有一个比较大的问题,在对缓存删除完之后,有一个读请求,这个时候由于缓存被删除所以直接会读库,读操作的数据是老的并且会被加载进入缓存当中,后续读请求全部访问的老数据。

2023-02-03 16:15:43 369

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除