自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 2025年最新Java面试题/场景题,及答案汇总!(精选85w字,快点收藏,学起来吧!)

此套Java高频面试题合集整合了历年来高频出现的八股文与场景题!适合人群:【需要求职面试、跳槽涨薪、冲击大厂央国企以及日常学习】优势:内容言简意赅、通俗易懂 、覆盖面广、高频常问这套课程总共有13个技术章节 涉及java的方方面面不仅包括Java基础知识、并发编程基础、JVM、spring、分布式消息队列等等核心知识点 还涵盖了常见算法面试题以及各种实战场景下的问题和解决方案。 非常适合正在准备面试的小伙伴临阵磨枪,以及日常学习去查漏补缺!

2025-07-21 17:22:36 1114

原创 MySQL 17 如何正确地显示随机消息?

文章探讨了在MySQL中实现随机选择3个单词的几种方法及其问题。使用ORDER BY RAND()会创建临时表并进行排序,当数据量大时可能转为磁盘临时表,效率低下。提出了两种优化方案:算法1通过随机ID获取记录,但不保证严格随机;算法2通过表行数计算随机偏移量,使用LIMIT Y,1实现严格随机,虽然扫描行数较多但效率高于ORDER BY RAND()。最终建议避免使用ORDER BY RAND(),推荐采用算法2的思路实现随机查询。

2025-07-21 16:40:34 612

原创 Spring的IOC是什么?它解决了哪些问题?

Spring面试核心考察对IOC机制的理解,包括控制反转与依赖注入的概念区别、容器实现原理及设计优势。IOC将对象创建控制权交给容器,通过构造器/Setter/字段注入等方式解耦组件。Spring提供BeanFactory和ApplicationContext两种容器,后者具备更丰富的企业级功能。典型回答应结合实例说明传统硬编码依赖的问题,对比IOC带来的松耦合、易测试等优势(如支付策略灵活切换),并强调容器管理的全生命周期特性。准备时需掌握不同注入方式适用场景及IOC工作流程,用生活化类比(餐厅点菜)帮助

2025-07-21 15:13:29 930 1

原创 Spring 中的 Bean 作用域(Scope)有哪些?各自适用于什么场景?

Spring框架面试重点考察Bean作用域的理解与应用。标准作用域包括单例(singleton)、原型(prototype)及四种Web专用作用域(request、session、application、websocket)。单例模式适用于无状态组件,原型模式处理有状态情况,Web作用域则针对特定应用场景。实际开发中需根据组件状态、线程安全、内存占用等因素选择合适作用域,并注意作用域之间的代理问题。面试时建议结合具体项目经验,说明不同作用域的应用场景及注意事项。

2025-07-21 15:11:56 684

原创 [线上问题排查]MQ消息队列消息堆积问题排查和解决思路

当订单系统突发流量导致消息积压时,作者先后尝试了增加消费者、优化消费逻辑和转移存储消息三种方案,最终通过将积压消息暂存数据库再异步处理的方式解决问题。文章指出消息积压会导致CPU飙升,并提出增加消费者、优化消费逻辑、调整重试策略等通用解决方案。建议在促销活动前进行全链路压测,提前发现系统瓶颈并优化资源分配。

2025-07-21 15:03:17 906

原创 10亿订单如何分库分表?

电商平台MySQL订单表达7亿行时出现严重性能问题:简单查询12秒,全表统计278秒。核心解决方案是分库分表,采用基因分片策略改造订单ID,将用户ID后12位作为分片基因嵌入,使相同用户的订单始终落在同一分片。通过Snowflake算法生成64位订单ID,支持快速定位分片。同时采用Elasticsearch建立异构索引表解决跨分片查询问题,并引入RocketMQ实现分布式事务最终一致性。优化后性能提升显著:用户订单查询从3200ms降至68ms,商家订单导出从超时优化到8秒完成。关键要避免分片热点,预留扩容

2025-07-17 17:30:11 837

原创 瞧瞧别人家的接口重试,那叫一个优雅!

电商系统重试机制关键指南(150字) 本文针对接口调用失败场景,系统梳理8种重试方案及避坑要点。从基础的for循环重谈到Spring Retry注解,再到高阶的Resilience4j组合策略,重点剖析分布式场景下的MQ延时队列、两阶段提交等方案。通过真实事故案例揭示重试风暴、数据不一致等三大陷阱,提出幂等设计、退避策略、资源隔离的核心防护原则。不同场景推荐差异化方案:秒杀用分布式锁、支付用两阶段提交、异步任务用MQ延时。强调重试本质是精密流量控制,需建立代码-框架-架构的多层防御体系。

2025-07-17 17:22:19 670

原创 阿里巴巴为什么禁止超过3张表join?

摘要:阿里《Java开发手册》禁止超过三表JOIN的规定引发技术圈热议。文章从架构设计、执行原理和实战案例三方面解析其技术真相:MySQL的JOIN算法缺陷(仅支持嵌套循环)、优化器局限性和分库分表带来的性能问题。提出分步查询+内存计算、反范式设计和物化视图三大解决方案,并指出在NewSQL和OLAP场景下可放宽限制。核心原则包括小表驱动大表、确保索引和避免跨实例JOIN,强调从"数据库全能"到分层处理的架构思维转变。

2025-07-17 17:02:54 541

原创 Java并发问题

摘要:本文记录了一个Java多线程环境下任务计数错误的bug。当多个线程同时执行"查询-计算-更新"操作时,由于线程工作内存与主内存的可见性问题导致计数错误。通过分析JVM内存模型,发现问题根源在于线程操作的是各自的工作内存副本。解决方案是利用MySQL InnoDB的行级排他锁机制,改用原子性SQL操作"update task set num=num+1 where task_id=#{taskId}",确保"读-改-写"操作的原子性,从而避免并

2025-07-17 16:38:23 416

原创 2025最新Java高频面试题总结(附答案PDF)秋招面试必备!

这两部分内容相辅相成,前面的核心知识点介绍让后面的面试题更容易理解,后面的面试题加深了读者对于 Java 核心点的掌握。如此一来,让你所学及所用,不仅能够应付面试,更能学习到更多有价值的 Java 技术点,让你在面试中和工作中都能展示的更加出色。

2025-04-14 18:14:07 751

原创 什么是死锁,如何解决?

死锁是指两个或两个以上的进程(或线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。当事务1持有资源A的锁,但是尝试获取资源B的锁,而事务2持有资源B的锁,尝试获取资源A的锁的时候,这时候就会发生死锁的情况。或者可以考虑保证操作的顺序,比如多个事务都是先操作资源A、再操作资源B,这样就能有效的避免死锁。如事务1:A->B->C ,事务2:C->D->A,这种情况就有可能导致死锁。即事务1占有了A,等待C,而事务2占有了C在等待A。

2024-05-28 15:39:03 515

原创 如何从零搭建10万级 QPS 大流量、高并发优惠券系统

一、问题解析一、问题解析春节活动中,多个业务方都有发放优惠券的需求,且对发券的 QPS 量级有明确的需求。所有的优惠券发放、核销、查询都需要一个新系统来承载。因此,我们需要设计、开发一个能够支持十万级 QPS 的券系统,并且对优惠券完整的生命周期进行维护。

2024-05-28 15:32:26 1714

原创 如何设计一个秒杀系统

不到的情况,所以要保证系统的高可用和正确性,我们还要设计一个 PlanB 来兜底,说起秒杀,我想你肯定不陌生,这两年,从双十一购物到春节抢红包,再到 12306。的系统,在整个用户请求路径上从浏览器到服务端我们要遵循几个原则,就是要保证用。所谓“稳”,就是整个系统架构要满足高可用,流量符合预期时肯定要稳定,就是超出。预期时也同样不能掉链子,你要保证秒杀活动顺利完成,即秒杀商品顺利地卖出去,这。最后再看“快”,“快”其实很好理解,它就是说系统的性能要足够高,否则你怎么支。抢火车票,“秒杀”的场景处处可见。

2024-05-23 16:14:47 796

原创 数据库乐观锁和悲观锁以及redis分布式锁的区别和使用场景?

乐观锁和悲观锁还有个区别:乐观锁因为比较乐观,所以一般是先做业务逻辑操作,比如参数处理,内存中进行模型组装调整,然后再去更新数据库。即在做并发操作前,先尝试获取锁,如果获取锁成功,在进行业务操作,否则就直接返回失败。而高并发的写操作时,你干了一大堆活,把模型都组装好了,内存计算也都做完了,结果最后去数据库那更新的时候发现版本号变了。所以,应该是先尝试获取锁,如果获取锁成功,再进行业务操作,否则就直接返回失败。●当数据竞争较少,冲突不频繁时,乐观锁能减少锁的开销,提高系统的整体性能。悲观锁是先加锁,再干活。

2024-05-21 11:55:27 869

原创 为什么不建议使用MQ实现订单到期关闭?

2延迟消息的限制(重要):首先并不是所有的消息队列服务都支持延迟消息,即使有一些支持,也可能对消息的延迟时间有限制。例如,某些服务可能限制延迟时间的最大值,这可能无法满足所有订单的到期关闭需求。1资源占用与成本:如果系统中存在大量订单,为每一个订单都创建一个延迟消息可能会导致消息队列中积压大量的消息,这不仅增加了消息队列的资源消耗,也可能导致增加成本,尤其是在使用云服务提供商的消息队列服务时。这里尤其是可靠性及无效消息的问题比较明显,所以在一个订单量比较大的场景,不是特别建议用MQ实现订单的到期关闭。

2024-05-21 11:53:54 543

原创 ✅什么是时间轮?

在时间轮中增加一个round的标识,标识运行的圈数,比如说上面的60s的时间轮,如果我要200s之后运行,那么我在设置这个任务的时候,就把他的round设置为 200/60 = 3 ,然后再把它放到 200%60 = 20的这个槽位上。也就是说我们对于200s以后执行这个任务,我们先把他放到分钟级时间轮上,这个时间轮的槽位每一分钟移动一次,当移动时候,发现某个槽位上有这一分钟内需要执行的任务时。时间轮用于清理过期消息,以释放存储空间。通常,粒度较细的时间轮拥有更短的周期,而粒度较粗的时间轮拥有更长的周期。

2024-05-15 17:23:04 1743 1

原创 ✅为什么定时任务可以定时执行?

具体来说,当我们在系统中设置了一个 Cron 任务后,Cron 服务会根据 Cron 表达式计算出任务下一次应该执行的时间点,并将这个时间点与当前时间点进行比较。在定时任务中,操作系统或应用程序会利用计时器或定时器来定期检查当前时间是否达到了预定的执行时间,如果当前时间已经达到了预定的时间,系统会自动执行相应的任务。不同的操作系统或程序库对于定时器的实现方式可能有所不同,但它们的基本思想都是一致的:在指定的时间点触发一个定时器事件,然后执行相应的任务或操作。这样,定时任务就可以按照预定的时间定时执行了。

2024-05-15 17:20:26 545

原创 什么是TCP的粘包、拆包问题?

TCP粘包和拆包问题是指在进行TCP通信时,因为TCP是面向流的,所以发送方在传输数据时可能会将多个小的数据包粘合在一起发送,而接收方则可能将这些数据包拆分成多个小的数据包进行接收,从而导致数据接收出现错误或者数据粘连的问题。2接收方缓存区大小限制:接收方在接收数据时,如果接收缓存区的大小有限,可能会将一个大的数据包拆分成多个小数据包进行接收,从而导致粘包和拆包问题的出现。80W字面试解析文档、简历模板、学习路线图、java必看学习书籍。资料,我根据我从小白到架构师多年的学习经验整理出来了一份。

2024-05-15 17:19:08 547

原创 ✅HTTPS和HTTP的区别是什么?

○HTTPS: HTTPS使用SSL(Secure Sockets Layer)或其继任者TLS(Transport Layer Security)来加密数据传输,使数据在传输过程中加密,更难被中间人攻击窃取。○HTTP: HTTP是明文传输的,这意味着数据在传输过程中不加密,容易受到中间人攻击。○HTTPS: HTTPS需要使用数字证书,这个证书由受信任的第三方机构(如CA,Certificate Authority)颁发,用于验证网站的身份。○HTTP: HTTP的URL以http://开头。

2024-05-15 17:15:01 590

原创 ✅什么是TCP三次握手、四次挥手?

对于四次挥手,因为 TCP 是全双工通信,在主动关闭方发送 FIN 包后,接收端可能还要发送数据,不能立即关闭服务器端到客户端的数据通道,所以也就不能将服务器端的 FIN 包与对客户端的 ACK 包合并发送,只能先确认 ACK,然后服务器待无需发送数据时再发送 FIN 包,所以四次挥手时必须是四次数据包的交互。如果是三次握手,服务器需要回复 SYN+ACK 包,客户端会对比应答的序号,如果发现是旧的报文,就会给服务器发 RST 报文,直到正常的 SYN 到达服务器后才正常建立连接。

2024-05-15 17:13:21 295

原创 volatile能保证原子性吗?为什么?

synchronized可以保证原子性 ,因为被synchronized修饰的代码片段,在进入之前加了锁,只要他没执行完,其他线程是无法获得锁执行这段代码片段的,就可以保证他内部的代码可以全部被执行。以上程序,正常情况下,输出结果应该是10000,但是真正执行的话就会发现,没办法保证每次执行结果都是10000,这就是因为i++这个操作没办法保证他是原子性的。因为他不是锁,他没做任何可以保证原子性的处理。但是, volatile在线程安全方面,可以保证有序性和可见性,但是是不能保证原子性的。

2024-05-15 17:11:46 926

原创 Spring解决泛型擦除的思路不错,现在它是我的了。

你好呀,我是浮生。Spring 的事件监听机制,不知道你有没有用过,实际开发过程中用来进行代码解耦简直不要太爽。但是我最近碰到了一个涉及到泛型的场景,常规套路下,在这个场景中使用该机制看起来会很傻,但是最终了解到 Spring 有一个优雅的解决方案,然后去了解了一下,感觉有点意思。和你一起盘一盘。

2024-05-13 15:36:34 926

原创 Spring MVC 和 Spring 总结

2). 由上边原因,SpringMVC的方法之间基本上独立的,独享request response数据,请求数据通过参数获取,处理结果通过ModelMap交回给框架,方法之间不共享变量,而Struts2搞的就比较乱,虽然方法。spring3.1之后使用org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping注解映射器。session:在一个HTTP Session中,一个bean定义对应一个实例。

2024-05-13 15:30:55 981

原创 synchronized的锁优化是怎样的?

如果所有人去银行都只取款,或者办理业务的时间都很短的话,那也就可以不需要取号,不需要去单独的休息区,不需要听叫号,也不需要再跑到对应的柜台了。这种互斥锁在互斥同步上对性能的影响很大,Java的线程是映射到操作系统原生线程之上的,如果要阻塞或唤醒一个线程就需要操作系统的帮忙,这就要从用户态转换到内核态,因此状态转换需要花费很多的处理器时间。有一种比较好的设计,那就是银行提供自动取款机,当你去银行取款的时候,你不需要取号,不需要去休息区等待叫号,你只需要找到一台取款机,排在其他人后面等待取款就行了。

2024-05-13 15:11:05 825

原创 如何根据配置动态生成Spring的Bean?

在 Spring 应用中,根据运行时的配置(比如数据库配置、配置文件、配置中心等)动态生成 Spring Bean 是一种常见需求,特别是在面对多环境配置或者需要根据不同条件创建不同实例时。my.condition.enabled可以通过配置文件或者配置中心进行配置,然后当my.condition.enabled属性为true时,MyBean才会被创建。@ConfigurationProperties注解可以将配置文件中的属性绑定到Bean的属性上,然后就可以基于他做动态配置了。最近很多同学问我有没有。

2024-05-06 16:04:47 730

原创 ✅Spring的@Autowired能用在Map上吗?

当使用这些集合类型注入时,如果没有找到任何匹配的bean,Spring默认的行为是抛出异常。这意味着如果你有多个bean都是同一接口的实现,Spring会将它们全部收集起来,注入到这个List中。在Spring框架中,@Autowired 注解不仅可以用于单个bean的注入,还可以用于注入复杂的集合类型,如List、Map、Set等。使用Map时,key通常是bean的名称,value是bean的实例。你也可以使用数组类型来注入。这与使用List类似,Spring会注入所有匹配类型的bean到数组中。

2024-05-06 16:01:19 805 1

原创 ✅线程数设定成多少更合适?

在本教程中,您将通过大量示例来学习 Java 8 Stream API。Java 在 Java 8 中提供了一个新的附加包,称为。该包由类、接口和枚举组成,允许对元素进行函数式操作。您可以通过在程序中导入包来使用流。

2024-04-28 16:24:03 1215

原创 ✅什么是CAS?存在什么问题?

部分乐观锁的实现是通过版本号(version)的方式来解决ABA问题,乐观锁每次在执行数据的修改操作时,都会带上一个版本号,一旦版本号和数据的版本号一致就可以执行修改操作并对版本号执行+1操作,否则就执行失败。在进行并发修改的时候,会先比较A和V中取出的值是否相等,如果相等,则会把值替换成B,否则就不做任何操作。虽然过程上金额都没问题,都改成功了,但是对于用户余额来说,丢失了两次修改的过程,在修改前用户C欠用户A 50元,但是修改后,用户C不欠钱了,而用户B欠用户A 50元了。而这个过程数据是很重要的。

2024-04-28 16:18:09 1150

原创 Spring解决泛型擦除的思路不错,现在它是我的了。

你好呀,我是浮生。Spring 的事件监听机制,不知道你有没有用过,实际开发过程中用来进行代码解耦简直不要太爽。但是我最近碰到了一个涉及到泛型的场景,常规套路下,在这个场景中使用该机制看起来会很傻,但是最终了解到 Spring 有一个优雅的解决方案,然后去了解了一下,感觉有点意思。和你一起盘一盘。

2024-04-27 16:24:15 1130

原创 高并发扣款,如何保证结果一致性?

在金融系统中,我们会跟钱打交道,而保证在高并发下场景下,对账户余额操作的一致性,是非常重要的,如果代码写的时候没考虑并发一致性,就会导致资损,本人在金融行业干了 8 年多,对这块稍微有点经验,所以这篇聊一下,如何在并发场景下,保证账户余额的一致性。上述场景,线程1在修改数据时,虽然还是a,但已经不是初始条件的a了,中间发生了a变b,b又变a,此 a 非彼 a,但是成功修改了,在有些场景下会有问题,这就是 aba。但是以上场景,对账户扣款不会出现问题,因为余额 1000 就是 1000,是相同的,举个例子,

2024-04-27 15:56:50 944

原创 面试官:一个 SpringBoot 项目能处理多少请求?(小心有坑)

这篇文章是基于“一个 SpringBoot 项目能同时处理多少请求?”这个面试题出发的。但是经过我们前面简单的分析,你也知道,这个问题如果在没有加一些特定的前提条件的情况下,答案是各不一样的。比如我再给你举一个例子,还是我们的 Demo,只是使用一下 @Async 注解,其他什么都不变:再次启动项目,发起访问,日志输出变成了这样:同时能处理的请求,直接从 Tomcat 的默认 200 个变成了 8 个?因为 @Async 注解对应的线程池,默认的核心线程数是 8。之前写过这篇文章。

2024-04-26 10:39:33 1404

原创 【逆袭之路】两年Java面试心路历程:从挫败到Offer的百题精讲

而外包公司的话,可能环境不怎么好,我记得自己当初还是个小白的时候,去了外包,那里的优点就是会有不断的活,新人进去的话收获还是挺多的,但是作为已经有两年经验的我,外包很显然不适合我的后期职业发展。两年java的面试过程中遇到了很多挑战,也遇到了一些不谈技术的公司,从上面的面试题可以看出,目前对于java的要求越来越高,水涨船高,毕竟这个行业的人数越来越多,而保持自己的竞争力的唯一方法就是找对方向,不断学习,注意这里我提到的第一点是方向,然后才是学习。要想进入好的互联网公司,分布式和微服务是很必须的。

2024-04-25 16:08:52 887

原创 Java逆袭:手把手教你破解春招面试难题

  这个系列面试题主要目的是帮助你拿轻松到offer,同时还能开个好价钱。只要能够搞明白这个系列的绝大多数题目,在面试过程中,你就能轻轻松松的把面试官给忽悠了。对于那些正打算找工作JAVA软件开发工作的童鞋们来说,当你看到这份题目的时候,你应该感动很幸运,因为,只要你把题目中的内容都搞懂了,在笔试的时候就可以游刃有余,通过面试只有半步之遥了,笔试只能反映你的JAVA技能。不管你是面试各个级别的JAVA工程师、架构师、还是项目经理,这个系列文章都是你最宝贵的资源,里面包括整个JAVA体系的知识,总会有你需要的

2024-04-25 16:01:08 1020

原创 Zuul、Gateway和Nginx有什么区别?

当我们在微服务架构中,选择一个微服务网关的时候,建议优先考虑Spring Cloud Gateway,主要是因为Gateway的推出就是要代替Zuul的,首先Gateway是Spring官方自己出的,而Zuul是Netflix出的,而且Gateway之所以推出,也是因为Zuul的更新和维护并不理想。Nginx能够处理并转发HTTP、HTTPS、SMTP、POP3和IMAP等协议的请求,具有强大的性能和高并发处理能力。相比传统的阻塞模型,非阻塞模型能够更好地利用底层系统资源,提供更好的性能和可伸缩性。

2024-04-23 17:54:02 1193 1

原创 一网打尽!2024年Java春招面试题库大全(含答案解析)

的学习,你不但能拿到 Offer、取得更好的工作,还能建立一个完整的 Java 知识体系,让你学到的所有内容都能转化为实际的生产力,帮你在工作中取得不凡的成绩。最后,预祝每一位学习本专栏的朋友,都能找到一份自己理想中的工作。之后我花了大半年的时间,结合自己 4 年多作为面试官的经历,把这些内容整理成文,用大约 15 万字的内容对 Java 的核心知识点和常见的 1000多道面试题,做了详细的介绍,也就是本专栏中你所看到的全部内容,希望对正处于求职面试、跳槽、以及需要提升技术的你带来帮助!

2024-04-23 17:52:33 1004

原创 SpringCloud 在Spring6.0后有哪些变化

在本次升级的SpringCloud 2022.0.0中,多个组件也都增加了对AOT和Native的支持,如Spring Cloud Function、Spring Cloud Stream、Spring Cloud OpenFeign、Spring Cloud Commons、Spring Cloud Consul以及Spring Cloud Gateway等。由于Spring现在提供了自己的接口HTTP客户端解决方案,从2022.0.0开始,Spring Cloud OpenFeign将被视为功能完整。

2024-04-23 17:50:44 614 1

原创 抓住春招的尾巴!2024最新Java高频面试题总结(附答案PDF)!

的学习,你不但能拿到 Offer、取得更好的工作,还能建立一个完整的 Java 知识体系,让你学到的所有内容都能转化为实际的生产力,帮你在工作中取得不凡的成绩。这部分包含对面试中必考的集合,除了相关的面试题讲解,更要理清各种集合之间的关系,创建集合之间的联系,这样才能对集合的整体理解做到心中有数。之后我花了大半年的时间,结合自己 4 年多作为面试官的经历,把这些内容整理成文,用大约 15 万字的内容对 Java 的核心知识点和常见的 1000多道面试题,做了详细的介绍,也就是本专栏中你所看到的全部内容,

2024-04-22 11:22:58 815

原创 Redis的持久化机制是怎样的?

在开启混合持久化的情况下,AOF 重写时会把 Redis 的持久化数据,以 RDB 的格式写入到 AOF 文件的开头,之后的数据再以 AOF 的格式化追加的文件的末尾。混合持久化结合了 RDB 和 AOF 持久化的优点,开头为 RDB 的格式,使得 Redis 可以更快的启动,同时结合 AOF 的优点,有减低了大量数据丢失的风险。但是,持久化机制也不是绝对可靠的,归根结底Redis还是个缓存,他并不是完全给你做持久化用的,所以还是要有自己的持久化方式,比如双写到数据库。但是他也比RDB要更加靠谱一些。

2024-04-20 15:55:29 583

原创 什么是序列化与反序列化

在Java中,我们可以通过多种方式来创建对象,并且只要对象没有被回收我们都可以复用该对象。但是,我们创建出来的这些Java对象都是存在于JVM的堆内存中的。只有JVM处于运行状态的时候,这些对象才可能存在。一旦JVM停止运行,这些对象的状态也就随之而丢失了。但是在真实的应用场景中,我们需要将这些对象持久化下来,并且能够在需要的时候把对象重新读取出来。Java的对象序列化可以帮助我们实现该功能。

2024-04-20 15:51:44 1194

原创 什么是分布式系统?和集群的区别?

分布式是针对集中式来说的,先说集中式,集中式系统就是把一整个系统的所有功能,包括数据库等等全部都部署在一起,通过一个整套系统对外提供服务。分布式系统需要各个主机之间通信和协调主要通过网络进行,所以,分布式系统中的计算机在空间上几乎没有任何限制,这些计算机可能被放在不同的机柜上,也可能被部署在不同的机房中,还可能在不同的城市中,对于大型的网站甚至可能分布在不同的国家和地区。分布式系统中的多台计算机之间在空间位置上可以随意分布,系统中的多台计算机之间没有主、从之分,即没有控制整个系统的主机,也没有受控的从机。

2024-04-18 17:40:04 1031

空空如也

空空如也

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

TA关注的人

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