自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Kafka消费者群组和负载均衡

点对点的应用场景也很多,因为它的数据只能被一个消费者使用,比如可以削峰,比如上游服务发送了很多数据过来,如果下游服务的就只有一个消费者实例,那么就可能造成消息的积压,这时候就可以多开几个消费者实例一起消费,就加快了消息的消费速度,不过也得考虑一些因素,比如消息的顺序。点对点模式就是一对一模式,如微信、QQ的两个人聊天,在kafka中要使用点对点模式,那么我们还是要回到一个分区只能被同一个消费组内的消费者消费这个问题上,我们创建了一个消费组,每个分区的数据只能被这个消费组内的消费者消息,就实现了点对点模式。

2023-10-08 11:09:18 357

原创 Kafka在企业级应用中的实践

通过 Kafka Connect,企业可以轻松地实现数据的导入和导出,与各种数据源(如数据库、文件系统)进行集成,并且可以自定义开发 Connectors,与特定的数据源进行交互。Kafka Streams 提供了高性能的流处理和事件驱动的架构,并且与 Kafka 生态系统的其他组件无缝集成,提供了可扩展、容错的流处理解。消费者可以根据需求选择不同的消费模式,如订阅所有消息或只订阅特定分区的消息。通过使用 Kafka 进行消息的异步处理,企业可以实现高效、可伸缩的系统架构,并且降低各个组件之间的耦合程度。

2023-10-08 11:01:12 660 2

原创 Kafka的分布式架构与高可用性

例如,云端部署了一个应用,它需要访问 IDC 里的数据,IDC 里的应用程序负责更新这个数据,并保存在本地的数据库中。任何集群服务都会收到天灾、人祸等因素影响稳定性,比如地震,火灾,高温、超低温等等,Kafka 集群可能因为这些不可预估的原因导致不可用,这时就需要有另外的与第一个集群完全相同的集群。在项目比较大的时候,可能需要在多个地域部署中心服务,以增加系统的容灾能力和业务能力,每个数据中心都有自己的 Kafka 集群,这里就涉及到应用和Kafka集群之间的访问,是本地访问还是跨中心访问。

2023-10-08 10:50:03 434

原创 HashMap常见面试题

因为在 HashMap 的链表结构中遍历判断的时候,特定情况下重写的 equals 方法比较对象是否相等的业务逻辑比较复杂,循环下来更是影响查找效率。扩容时,重新将键值对存储新的桶数组里,键的键之间产生的碰撞会下降,链表长度变短。相反,如果增加负载因子(负载因子可以大于1),HashMap 所能容纳的键值对数量变多,空间利用率高,但碰撞率也高。HashMap 按当前桶数组长度的2倍进行扩容,阈值也变为原来的2倍(如果计算过程中,阈值溢出归零,则按阈值公式重新计算)。如果是普通节点,则节点按原顺序进行分组。

2023-09-24 20:09:11 279

原创 Kafka的消息存储机制

每当往某个Topic发送数据时,数据会被hash到不同的partition,这些partition位于不同的集群节点上,所以每个消息都会被记录一个offset消息号,随着消息的增加逐渐增加,这个offset也会递增,同时,每个消息会有一个编号,就是offset号。消费者有消费者族群的概念,当生产者将数据发布到topic时,消费者通过pull的方式,定期从服务器拉取数据,当然在pull数据的时候,,服务器会告诉consumer可消费的消息offset。确保足够的磁盘带宽:Kafka的存储性能受限于磁盘带宽。

2023-09-24 19:47:12 711

原创 ArrayList常见面试题

之前放在构造方法中。ArrayList是我们开发中非常常用的数据存储容器之一,其底层是数组实现的,我们可以在集合中存储任意类型的数据,ArrayList是线程不安全的,非常适合用于对元素进行查找,效率非常高。是一个缓存数组,它通常会预留一些容量,等容量不足时再扩充容量,那么有些空间可能就没有实际存储元素,采用上诉的方式来实现序列化时,就可以保证只序列化实际存储的那些元素,而不是整个数组,从而。计算容量:如果elementData是空,则返回默认容量10和size+1的最大值,否则返回size+1。

2023-09-24 19:31:43 525

原创 消息队列中,如何保证消息的顺序性?

比如,生产者向 RabbitMQ 里发送了三条数据,顺序依次是 data1/data2/data3,压入的是 RabbitMQ 的一个内存队列。生产者在写的时候,其实可以指定一个 key,比如说我们指定了某个订单 id 作为 key,那么这个订单相关的数据,一定会被分发到同一个 partition 中去,而且这个 partition 中的数据一定是有顺序的。这是生产系统中常见的问题。一个 topic,一个 partition,一个 consumer,内部单线程消费,单线程吞吐量太低,一般不会用这个。

2023-09-23 12:42:22 265

原创 Kafka的消息传递保证和一致性

ISR中的副本数量越多,数据的复制同步需要的时间越长,但副本的可用性和数据一致性也更高。当宕机的Leader恢复,发现新的Leader中的数据和自己持有的数据不一致,此时宕机的Leader会将自己的数据截断到宕机之前的HW位置,然后同步新Leader的数据。HW的截断机制:新的Leader并不能保证已经完全同步了之前Leader的所有数据,只能保证HW之前的数据是同步过的,此时所有的Follower都要将数据截断到HW的位置,再和新的Leader同步数据,来保证数据一致。

2023-09-23 12:37:48 658

原创 Kafka入门

将消息发给 consumer,kafka 只保证按一个 partition 中的消息的顺序,不保证一个 topic 的整体(多个 partition 间)的顺序。用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。:一个Topic是消息的分类或主题,它是Kafka中进行消息发布和订阅的基本单位。

2023-09-23 12:31:28 240

原创 SQLite 3.43 发布,性能大提升!

总之,发布的SQLite 3.43版本极大地提升了处理JSON数据的性能,使开发人员能够更高效地处理和操作JSON数据。此外,还增加了一些新的与JSON相关的函数,提升了对JSON数据的灵活处理能力。例如,新增了一些日期/时间函数,增加了多达11个新的内置SQL函数,优化了查询计划的生成效果等。SQLite是一种被广泛运用的嵌入式关系型数据库管理系统,最新发布的SQLite 3.43版本带来了一个重要的改进,大幅提升了对JSON数据的处理性能,达到了之前的两倍。新增 timediff() SQL 函数。

2023-09-22 11:21:51 710

原创 单例模式有几种写法?

可惜的是,正如注释中所说,DCL仍然是线程不安全的,由于指令重排序,你可能会得到“半个对象”,即”部分初始化“问题。针对变种1中单例初始化后锁仍然无法避开的问题,变种2在变种1的外层又套了一层check,加上synchronized内层的check,即所谓“双重检查锁”(Double Check Lock,简称DCL)。代码量比饿汉模式更少。相对于饿汉模式,Holder模式仅增加了一个静态内部类的成本,与饱汉的变种3效果相当(略优),都是比较受欢迎的实现方式。饱汉,即已经吃饱,不着急再吃,饿的时候再吃。

2023-09-22 11:19:24 263

原创 Redis中是如何实现分布式锁的?

其次,由于我们对锁设置了过期时间,即使锁的持有者后续发生崩溃而没有解锁,锁也会因为到了过期时间而自动解锁(即key被删除),不会发生死锁。我们可以看到,RedissonLock是可重入的,并且考虑了失败重试,可以设置锁的最大等待时间, 在实现上也做了一些优化,减少了无效的锁申请,提升了资源的利用率。如果存储锁对应key的那个节点挂了的话,就可能存在丢失锁的风险,导致出现多个客户端持有锁的情况,这样就不能实现资源的独享了。客户端计算建立好锁的时间,如果建立锁的时间小于超时时间,就算建立成功了;

2023-09-22 11:15:29 271

原创 并发编程系列-CAS

自旋CAS如果长时间不成功,会给CPU带来非常大的执行开销。在JDK1.5之前,如果不编写明确的代码就无法执行CAS操作,在JDK1.5中引入了底层的支持,在int、long和对象的引用等类型上都公开了CAS的操作,并且JVM把它们编译为底层硬件提供的最有效的方法,在运行CAS的平台上,运行时把它们编译为相应的机器指令,如果处理器/CPU不支持CAS指令,那么JVM将使用自旋锁。简单来说,CAS 的含义是“我认为原有的值应该是什么,如果是,则将原有的值更新为新值,否则不做修改,并告诉我这个值现在是多少”。

2023-09-22 10:59:04 92

原创 说说hashCode() 和 equals() 之间的关系?

如果两个由equals()规定相等的对象生成的hashCode不等,对于hashMap来说,他们很可能分别映射到不同位置,没有调用equals()比较是否相等的机会,两个实际上相等的对象可能被插入不同位置,出现错误。如果一个key对象在put的时候调用hashCode()决定了存放的位置,而在get的时候调用hashCode()得到了不一样的返回值,这个值映射到了一个和原来不一样的地方,那么肯定就找不到原来那个键值对了。否则,equals()无效。不相等的对象的hashCode()的结果可以相等。

2023-09-21 11:51:22 286

原创 并发编程系列-AQS

还有其他修改的可能性。如果所请求的共享资源是空闲的,那么当前请求资源的线程将被设置为有效的工作线程,并且共享资源将被锁定。当Condition进入等待状态时,它会在等待队列的队尾插入新的节点,并且通过release方法释放锁资源。它提供了一种通过队列的方式,将争用锁的线程进行排队等待的机制。对于依赖单个原子int值来表示同步状态的解读,Node通过status属性来控制与之关联的线程的等待状态,而AQS的state用于控制同步状态。AQS是锁机制实现的底层技术,它通过队列的方式将争用锁的线程进行排队等待。

2023-09-21 11:47:08 170

原创 并发编程系列 - ReadWriteLock

写缓存则需要用到写锁,写锁的使用和读锁是类似的。如果源头数据量非常大,那么就需要按需加载了,按需加载也叫懒加载,指的是只有当应用查询缓存,并且数据不在缓存里的时候,才触发加载源头相关数据进缓存的操作。需要注意的是,如果缓存中没有缓存目标对象,那么就需要从数据库中加载,然后写入缓存,写缓存需要用到写锁,所以在代码中的⑤处,我们调用了。另外,还需要注意的是,在获取写锁之后,我们并没有直接去查询数据库,而是在代码⑥⑦处,重新验证了一次缓存中是否存在,再次验证如果还是不存在,我们才去查询数据库并更新本地缓存。

2023-09-21 10:29:20 111

原创 说说Object类下面有几种方法呢?

导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者其他某个线程中断当前线程,或者已超过某个实际时间量。导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过指定的时间量。该方法用来返回其所在对象的物理地址(哈希码值),常会和equals方法同时重写,确保相等的两个对象拥有相等的hashCode。导致当前的线程等待,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法。

2023-09-20 17:07:02 159

原创 并发编程系列-分而治之思想Forkjoin

ForkJoinPool支持任务窃取机制,能够让所有线程的工作量基本均衡,不会出现有的线程很忙,而有的线程很闲的状况,所以性能很好。在这个计算框架中,Fork代表任务的分解,而Join代表结果的合并。这两部分的关系类似于ThreadPoolExecutor和Runnable之间的关系,都是用于提交任务到线程池的,只不过分治任务有自己独特的类型ForkJoinTask。在这个分治任务模型里,任务和分解后的子任务具有相似性,这种相似性往往体现在任务和子任务的算法是相同的,但是计算的数据规模是不同的。

2023-09-20 15:58:24 388

原创 Redis 面试常见问答

我们可以采用一个默认值来避免,例如,当访问一个不存在的键时,然后再去查询数据库,如果仍然没有找到,则在缓存中放置一个占位符。一般而言,我们会利用缓存来缓冲对数据库的冲击,假如缓存无法正常工作,所有的请求便会直接发送至数据库,进而导致数据库崩溃,从而导致整个系统崩溃。这种方式存在的问题是:如果在删除缓存之后,有客户端读取数据,可能会读取到旧数据,并且有可能将旧数据设置回缓存,导致缓存中的数据一直是旧数据。大量请求查询一个刚刚失效的键,导致数据库压力倍增,可能会导致宕机,但实际上,这些请求都是查询相同的数据。

2023-09-20 15:49:55 401

原创 并发编程系列-CompletableFuture

既然存在try{}catch{},那么必然还有try{}finally{},whenComplete()和handle()系列方法就类似于try{}finally{}中的finally{},无论是否发生异常都会执行whenComplete()中的回调函数consumer和handle()中的回调函数fn。描述的就是一种汇聚关系。CompletionStage接口给我们提供的方案非常简单,比try{}catch{}还要简单,下面是相关的方法,使用这些方法进行异常处理和串行操作是一样的,都支持链式编程方式。

2023-09-19 16:09:40 81

原创 Spring,SpringMVC,SpringBoot,SpringCloud有什么区别?

Spring是一个一站式的轻量级的java开发框架,核心是控制反转(IOC)和面向切面(AOP),针对于开发的WEB层(springMvc)、业务层(Ioc)、持久层(jdbcTemplate)等都提供了多种配置解决方案;SpringBoot使用了默认大于配置的理念,集成了快速开发的Spring多个插件,同时自动过滤不需要配置的多余的插件,简化了项目的开发配置流程,一定程度上取消xml配置,是一套快速配置开发的脚手架,能快速开发单个微服务;【JetBrains软件名】 最新软件激活工具和码及教程。

2023-09-18 11:44:46 452

原创 IDEA超强XSD文件编辑插件-XSD / WSDL Visualizer

通过使用与IntelliJ无缝集成的可视化编辑器,转换处理XSD和WSDL文件的方式。告别导航复杂和难以阅读的代码的挫败感,迎接流线型和直观的体验。XSD / WSDL Visualizer可以简化XML架构定义(XSD)和WSDL文件编辑过程;XSD可视化器:通过交互式的、图形化的XSD文件结构表示,增强您对XSD文件的理解。直接编辑:直接在可视化编辑器中对XSD和WSDL文件进行更改(目前处于测试阶段)。WSDL可视化器:获得WSDL文件的清晰而简洁的视图,并快速确定需要改进的地方。

2023-08-03 16:49:07 1731

原创 IDEA强大的VisualGC插件

Eden Space:新生代Eden区内存使用情况 (200.00M,34.125M): 31.52M,109 collections,612.827ms表示Eden区的最大容量为200M,当前容量为34.125M,当前已使用31.52M,从开始监控到现在在该内存区域一共发生了109次gc(Minor GC),gc总耗时为612.827ms。开发阶段实时监测,自己的JVM信息,实时可视化 Hotspot JVM 垃圾回收监控工具, 支持查看本地和远程JVM进程, 支持G1 and ZGC算法。

2023-08-03 16:46:10 1971

原创 Spring Data JPA 的开发神级IDEA插件 -- JPA Buddy

JPA Buddy是一个广泛使用的IntelliJ IDEA插件,面向使用JPA数据模型和相关技术(如Spring DataJPA,DB版本控制工具(Flyway,Liquibase),MapStruct等)的新手和有经验的开发人员。该插件的好处是它不仅支持JPA,还支持数据访问层开发中使用的相关库:Spring Data JPA,MapStruct,Lombok和DB版本控制解决方案。数据通常比代码更长久,因此当我们在现有数据库上构建 JPA 数据层时,我们需要基于当前表创建 JPA 实体。

2023-08-03 16:35:26 836

转载 一文详解JVM内存结构

虚方法表:面向对象的编程中,会很频繁的使用动态分配,如果每次动态分配的过程都要重新在类的方法元数据中搜索合适的目标的话,就可能影响到执行效率,因此为了提高性能,JVM 采用在类的方法区建立一个虚方法表,使用索引表来代替查找。TLAB 的全称是 Thread Local Allocation Buffer,即线程本地分配缓存区,是属于 Eden 区的,这是一个线程专用的内存分配区域,线程私有,默认开启的(当然也不是绝对的,也要看哪种类型的虚拟机)元空间的本质和永久代类似,都是对 JVM 规范中方法区的实现。

2023-07-27 10:47:43 52

转载 一文了解大数据生态体系-Hadoop

这是管理队列及工作者集群的另一种方式。1)Sqoop:sqoop 是一款开源的工具,主要用于在 Hadoop(Hive)与传统的数据库(mysql)间进 行数据的传递,可以将一个关系型数据库(例如 :MySQL ,Oracle 等)中的数据导进到 Hadoop 的 HDFS 中,也可以将 HDFS 的数据导进到关系型数据库中。2)Flume:Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;

2023-07-27 10:46:55 639

转载 最近爆火的AI修图工具DragGAN ,已开源,star数已超30k

这是通过使用两个主要步骤来实现的:一是 latent code 的优化,它可以进行运动监督,将 handle 点移向其目标位置,二是一个点跟踪方法,它有效地跟踪 handle 点的轨迹。图中红 patch 后加了".detach()",意思就是它是原图,是不变的,而蓝 patch 是通过新 latent code 出来的可变量,所以是通过它反传梯度。交互式操作,自由自在!这么做的原理是,GAN 的特征具有判别性,能很好地捕获了密集的对应关系,因此可以通过特征块中的最近邻搜索有效地执行跟踪。

2023-07-27 10:45:55 428

转载 企业数字化转型之路--连接

连接就是要打通不同业务系统之间的壁垒,将中断的业务流程衔接起来,将线下的业务线上化,通过系统把人、业务、设备之间的数据流打通,提高业务和流程的运转效率。Gartner认为,未来在数字平台的构建过程中,大部分的时间和支出将用于集成工作,数字化转型需要融合集成平台(Hybrid Integration Platform )。融合集成平台是融合技术、数据,赋能应用的机构数字服务中枢,能够很好的解决企业数字化转型的诉求,是重构数字化世界的基础。开发、保护和管理连接不同应用程序、系统、服务和数据存储的集成流程。

2023-07-27 10:44:47 86

转载 一文了解DDD分层架构演进

若你的微服务要提供服务给很多外部应用,而对每个外部应用的入参出参都不同,你不可能开发一堆一对一的应用服务,这时Facade接口就起到了很好的作用,包括DO和DTO对象的组装和转换。将一个夏杂的系统分为不同的层,每层都应该具有良好的内聚性,并且只依赖于比其自身更低的层。实体和领域服务在实现业务逻辑上不是同级,当领域中的某些功能,单一实体或值对象无法实现,就会用到领域服务,它可组合聚合内的多个实体或值对象,实现复杂业务逻辑。基础层包含基础服务,它采用依赖反转,封装基础资源服务,实现应用层、领域层与基础层解耦。

2023-07-27 09:24:19 94

转载 2023年大语言模型神器 - LangChain

简单来说,可以理解 LangChain 相当于开源版的GPT插件,它提供了丰富的大语言模型工具,支持在开源模型的基础上快速增强模型的能力。LangChain 可以轻松管理与语言模型的交互,将多个组件链接在一起,并集成额外的资源,例如 API 和数据库。理解了上面的这些核心概念之后,你就可以利用 LangChain 的强大功能来构建适应性强、高效且能够处理复杂用例的高级语言模型应用程序。整个过程基本上没怎么写代码,只要了解LangChain的组件的功能,基本上就可以搭建出一款简单的聊天机器人。

2023-07-27 09:22:39 282

转载 从底层理解CAS原语

另外,你需要知道的是,这种使用CAS原语反复重试赋值的方法,它是比较耗费CPU资源的,因为在for循环中,如果赋值不成功,是会立即进入下一次循环没有等待的。通过这个伪代码,你就可以看出CAS原语的逻辑,非常简单,就是先比较一下变量p当前的值是不是等于old,如果等于,那就把变量p赋值为new,并返回true,否则就不改变变量p,并返回false。CAS和FAA在各种编程语言中,都有相应的实现,可以来直接使用,无论你是使用哪种编程语言,它们底层的实现是一样的,效果也是一样的。

2023-07-27 09:16:20 68

转载 还分不清bin log 、redo log 跟 undo log?

MySQL 日志包含了错误日志、查询日志、慢查询日志、事务日志、二进制日志等,如果存储引擎使用的是 InnoDB ,二进制日志(binlog)和事务日志(包括redo log和undo log) 是肯定绕不过去的,本篇接下来详细为大家介绍这三种日志。undo log主要记录了数据的逻辑变化,比如一条UPDATE语句,对应一条相反UPDATE的undo log,一条INSERT语句,对应一条DELETE的undo log,这样在发生错误时,就能回滚到事务之前的数据状态。redo log是InnoDB的日志。

2023-07-27 09:10:02 42

原创 2023最新版本WebStrom安装教程【2023.1.3】

本文方法可以安装使用截止当前2023.1.3最新版本WebStrom,过程非常简单,按照下面的步骤来一分钟即可搞定。到此2023.1.3最新版本WebStrom就安装成功可以正常使用了!不用关注时间,即便显示2099,官方还是会动态升级的,的文件和WebStrom的关联打开,个人按需选择。找到Activation_Code文件夹中的文件,那里持续维护,所以保持联系,随更随用,稳得一批儿!将其中的内容复制到下面的框框里面,就好了。安装完成后,先不要打开软件。,总有惊喜可以发现的。2. 解压得到的文件。

2023-07-10 11:36:57 906 2

转载 Java 字节码操作框架——ASM

上面的代码中,ClassReader 负责读取类文件字节数组,accept 调用之后 ClassReader 会把解析字节码过程的事件源源不断的通知给 ClassVisitor 对象调用不同的 visit 方法,ClassVisitor 可以在这些 visit 方法中对字节码进行修改,ClassWriter 可以生成最终修改过的自己字节码。SAX运行时是单向的、流式的,解析过的部分无法在不重新开始的情况下再次读取,ASM 的 Core API 类似于这种方式。

2023-07-10 11:01:14 2359

转载 关于Java类加问题我竟让面试官哑口无言

避免类的重复加载,JVM 中区分不同类,不仅仅是根据类名,相同的 class 文件被不同的 ClassLoader 加载就属于两个不同的类(比如,Java中的Object类,无论哪一个类加载器要加载这个类,最终都是委派给处于模型最顶端的启动类加载器进行加载,如果不采用双亲委派模型,由各个类加载器自己去加载的话,系统中会存在多种不同的 Object 类)在 Java 的日常应用程序开发中,类的加载几乎是由 3 种类加载器相互配合执行的,在必要时,我们还可以自定义类加载器,来定制类的加载方式。

2023-07-10 10:38:21 56

转载 Arthas -- 一款释放潜力的神器

一旦 Arthas 启动,我们可以使用仪表盘。使用 Arthas 的一个主要优点是,我们不需要修改代码,甚至不需要重新启动我们想要监视的 Java 服务。当我们无法访问正在审查的应用程序的代码,或者我们想快速诊断在服务器上运行的有问题的应用程序时,它也可以特别有帮助。最后,由于 Arthas 是用 Java 编写的,因此它是跨平台的,可以在 Linux、macOS 和 Windows 上运行。在本教程中,我们将首先安装 Arthas,在此之后,通过一个简单的案例来演示 Arthas 的一些关键特性。

2023-07-04 15:38:28 319

转载 浅析Lambda架构

你可能会想到我们可以利用这些停车场的历史数据,建立一个人工智能的预测模型,在推荐停车位的时候,不单单考虑到附近停车场的剩余停车位和用户与停车场的相邻距离,还能将预测模型应用在推荐里,看看未来的一段时间内这个停车场是否有可能会被停满了。比如说,批处理层的每个任务都需要1个小时才能完成,而在这1个小时里,我们是无法获取批处理层中最新任务给出的数据视图的。时间长达几周或者的几个月的数据,我们可以结合批处理层和速度层的数据视图来得出,而快至几个小时的数据我们又可以根据速度层的数据视图来获知,怎么样?

2023-07-03 10:45:58 170

转载 MySQL架构介绍

有一系列预处理,比如检查语句是否写正确了,然后是查询优化(比如是否使用索引扫描,如果是一个不可能的条件,则提前终止),生成查询计划,然后查询引擎启动,开始执行查询,从底层存储引擎调用API获取数据,最后返回给客户端。存储引擎层,存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API与存储引擎进行通信。第二层架构主要完成大部分的核心服务功能, 包括查询解析、分析、优化、缓存、以及所有的内置函数,所有跨存储引擎的功能也都在这一层实现,包括触发器、存储过程、视图等。主要体现在存储引擎的架构上,

2023-07-02 17:25:03 46

原创 深入探究Bean生命周期的扩展点:Bean Post Processor

在这里,Spring 容器对于 Bean 的创建、初始化、销毁等生命周期进行了管理,但同时开放了 BeanPostProcessor 这种扩展点,让开发者可以在不修改 Spring 源码的情况下,实现对 Spring Bean 生命周期的自定义操作,这种设计理念大大提升了 Spring 的灵活性和可扩展性。在Bean的创建、初始化和销毁过程中,Spring提供了一系列的扩展点,使开发者能够在不破坏原有功能的基础上,对Bean的生命周期进行定制化操作。方法在Bean的初始化后被调用。

2023-06-30 18:56:39 60

转载 Yarn的实现原理

我们在学习的MapReduce的架构时,MapReduce应用程序的启动过程,最重要的就是要把MapReduce程序分发到大数据集群的服务器上,在Hadoop 1中,这个过程主要是通过TaskTracker和JobTracker通信来完成。所以说,MapReduce和Yarn都是框架。Yarn作为分布式集群的资源调度框架,它的出现伴随着Hadoop的发展,使Hadoop从一个单一的大数据计算引擎,成为一个集存储、计算、资源管理为一体的完整大数据平台,进而发展出自己的生态体系,成为大数据的代名词。

2023-06-30 16:57:33 47

空空如也

空空如也

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

TA关注的人

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