大家好,我是三友今天咱就不卷技术了,因为文章我还没没没写完。。。不过呢,前段时间项目招人的时候,我刚好就作为面试官面试了一些人在整个面试的过程中,我就发现了一些关于面试的通病所以呢,趁着这次金(铜)九银(铁)十的机会,我就把面试别人时的感受结合自身的所见所闻,整理成16条小建议分享给大家,也算为接下来需要找工作的兄弟提供一点小小的帮助简历要干净整齐简历干净整齐可能有些人根本不在意,但这其实恰是最...
2023-09-19 14:35:20 2227浏览 0点赞 0回复 0收藏
大家好,我是三友今天来聊一聊前段时间看到的一个面试题,也是在实际项目中需要考虑的一个问题,Feign的超时时间如何设置?Feign的超时时间设置方式并不固定,它取决于Feign在项目中是如何使用的,不同的使用方式,超时时间设置方式也不大相同,甚至还可能有坑。前置知识由于文章会涉及到Feign的底层知识,如果不懂点Feign的基本概念的话,后面就看不下去了所以为了方便不了解Feign的小伙伴也能够读得懂文章,这里我就简单地说...
2023-09-18 14:26:08 2532浏览 0点赞 0回复 0收藏
大家好,我是三友最近我在整理代码仓库的时候突然发现了被尘封了接近两年之久的Sentinel源码库两年前我出于好奇心扒了一下Sentinel的源码,但是由于Sentinel本身源码并不复杂,在简单扒了扒之后几乎就再没扒过了那么既然现在又让我看到了,所以我准备再来好好地扒一扒,然后顺带写篇文章来总结一下。Sentinel简介Sentinel是阿里开源的一款面向分布式、多语言异构化服务架构的流量治理组件。主要以流量为切入点,从流量路由、流...
2023-09-18 14:25:26 2071浏览 0点赞 0回复 0收藏
数据绑定上一节我们讲了类型转换,而既然提到了类型转换,那么就不得不提到数据绑定了,他们是密不可分的,因为在数据绑定时,往往都会伴随着类型转换,数据绑定的意思就是将一些配置属性跟我们的Bean对象的属性进行绑定。不知你是否记得,在远古的ssm时代,我们一般通过xml方式声明Bean的时候,可以通过<property>来设置Bean的属性<beanclass"com.sanyou.spring.core.basic.User"><propertyname"username"value"三友的...
2023-09-18 14:24:50 1896浏览 0点赞 0回复 0收藏
大家好,我是三友今天来跟大家聊一聊Spring的9大核心基础功能。其实最近有小伙伴私信问我怎么不写文章了,催更来了其实我不是不写,而是一直在写这篇文章,只不过令我没想到的是,从前期的选题、准备、翻源码、动手到写完,前后跨度接近一个月的时间,花了好几个周末,写了三万字,最终才算完成。所以如果本篇文章对你有所帮助,还请多多点赞、转发、在看,非常感谢!!话不多说,先上目录友情提示,本文过长,建议收藏,嘿嘿嘿...
2023-09-18 14:23:41 1746浏览 0点赞 0回复 0收藏
大家好,我是三友前几天有个大兄弟问了我一个问题,注册中心要集成SpringCloud,想实现SpringCloud的负载均衡,需要实现哪些接口和规范。既然这个兄弟问到我了,而我又刚好知道,这不得好好写一篇文章来回答这个问题,虽然在后面的聊天中我已经回答过了。接下来本文就来探究一下Nacos、OpenFeign、Ribbon、loadbalancer等组件协调工作的原理,知道这些原理之后,就知道应该需要是实现哪些接口了。再多说一句,本文并没有详细地...
2023-09-18 14:22:54 2041浏览 0点赞 0回复 1收藏
能不曾注意的小东西,那就是Spring依赖注入支持注入Bean的类型,这个小东西可能看似没有用但是实际又有点小用。其实本来这周没打算写文章,但是突然之间就想到了之前有个妹子问过这个问题,并且网上这块东西说的也不多,所以就赶在周末的末尾匆匆写下了这篇文章。这东西本身也没有什么复杂的原理,所以本文也并没有什么太多深入剖析源码的东西。1、普通对象这没什么好说的,大家都这么用的,比如需要用到UserService,直接Autow...
2023-09-18 14:21:07 1911浏览 0点赞 0回复 0收藏
大家好,我是三友在众多关于MQ的面试八股文中有这么一道题,“如何保证MQ消息消费的幂等性”。为什么需要保证幂等性呢?是因为消息会重复消费。为什么消息会重复消费?明明已经消费了,为什么消息会被再次被消费呢?不同的MQ产生的原因可能不一样本文就以RocketMQ为例,来扒一扒RocketMQ中会导致消息重复消息的原因,最终你会发现,其实消息重复消费算是RocketMQ无奈的“bug”。如果有对RocketMQ不熟悉的小伙伴,可以看看我之前...
2023-09-18 14:20:05 2944浏览 0点赞 0回复 0收藏
DubboSPI机制ExtensionLoaderExtensionLoader是dubbo的SPI机制的实现类。每一个接口都会有一个自己的ExtensionLoader实例对象,这点跟Java的SPI机制是一样的。同样地,Dubbo的SPI机制也做了以下几点约定:接口必须要加SPI注解配置文件可以放在METAINFservices、METAINFdubbointernal、METAINFdubbo、METAINFdubboexternal这四个目录底下,文件名也是接口的全限定名内容为键值对,键为短...
2023-09-18 14:17:15 2023浏览 0点赞 0回复 0收藏
大家好,我是三友今天来跟大家聊一聊Java、Spring、Dubbo三者SPI机制的原理和区别。其实我之前写过一篇类似的文章,但是这篇文章主要是剖析dubbo的SPI机制的源码,中间只是简单地介绍了一下Java、Spring的SPI机制,并没有进行深入,所以本篇就来深入聊一聊这三者的原理和区别。什么是SPISPI全称为ServiceProviderInterface,是一种动态替换发现的机制,一种解耦非常优秀的思想,SPI可以很灵活的让接口和实现分离,让api提供者只...
2023-09-18 14:16:40 1486浏览 0点赞 0回复 0收藏
从实现到原理,我总结了11种延迟任务的实现方式(下篇)监听Redis过期key在Redis中,有个发布订阅的机制生产者在消息发送时需要到指定发送到哪个channel上,消费者订阅这个channel就能获取到消息。图中channel理解成MQ中的topic。并且在Redis中,有很多默认的channel,只不过向这些channel发送消息的生产者不是我们写的代码,而是Redis本身。这里面就有这么一个channel叫做keyevent<db>:expired,db是指Redis数据库的序...
2023-09-18 14:15:39 1914浏览 0点赞 0回复 0收藏
大家好,我是三友延迟任务在我们日常生活中比较常见,比如订单支付超时取消订单功能,又比如自动确定收货的功能等等。所以本篇文章就来从实现到原理来盘点延迟任务的11种实现方式,这些方式并没有绝对的好坏之分,只是适用场景的不大相同。DelayQueueDelayQueue是JDK提供的api,是一个延迟队列DelayQueue泛型参数得实现Delayed接口,Delayed继承了Comparable接口。getDelay方法返回这个任务还剩多久时间可以执行,小于0...
2023-09-15 11:10:04 2941浏览 0点赞 0回复 0收藏
索引合并索引合并(indexmerge)是从MySQL5.1开始引入的索引优化机制,在之前的MySQL版本中,一条sql多个查询条件只能使用一个索引,但是引入了索引合并机制之后,MySQL在某些特殊的情况下会扫描多个索引,然后将扫描结果进行合并结果合并会为下面三种情况:取交集(intersect)取并集(union)排序后取并集(sortunion)为了不耽误演示,删除之前所有的索引,然后为name和age各自分别创建一个二级索引idxname和idxage取交集(i...
2023-09-15 11:09:16 2101浏览 0点赞 0回复 0收藏
二级索引二级索引也被称为非聚簇索引,本身也就是一颗B+树,一个二级索引对应一颗B+树,但是二级索引B+树存储的数据跟聚簇索引不一样。聚簇索引前面也说了,叶子节点存的就是我们插入到数据库的数据,非叶子节点存的就是数据的主键id和对应的数据页号。而二级索引叶子节点存的是索引列的数据和对应的主键id,非叶子节点除了索引列的数据和id之外,还会存数据页的页号。前面提到的数据页,其实真正是叫索引页,因为叶子节点存的...
2023-09-15 11:05:50 1849浏览 0点赞 0回复 0收藏
大家好,我是三友今天来盘点一下关于MySQL索引常见的知识点本来这篇文章我前两个星期就打算写了,提纲都列好了,但是后面我去追《漫长的季节》这部剧去了,这就花了一个周末的时间,再加上后面一些其它的事,导致没来得及写不过不要紧,好饭不怕晚,虽迟但到,走起,开干!对了,本文主要是针对InnoDB存储引擎进行讲解。索引分类索引的分类可以从不同的维度进行分类1、按使用的数据结构划分B+树索引Hash索引...2、按实际的物理...
2023-09-15 11:03:47 2227浏览 0点赞 0回复 0收藏
一、Bug描述同事遇到一个有意思的语句,说一条SQL在MySQL8.0.25版本运行出的结果明显与给定的where条件不符,而在8.0.26版本上是正常的,语句上加了一个无关的用户变量后在8.0.25版本上结果才是正确的,想不通这是怎么回事,这么有意思的事情自然引起了我的兴趣,借此机会深入了解了一下MySQL关于derivedtable的优化。为了方便演示效果,让小伙伴们关注到现象的本质,我将语句进行了简化处理。下面是模拟的表结构与数据。create...
2023-07-05 14:44:12 2100浏览 0点赞 0回复 0收藏
前言Instantaddordropcolumn的主线逻辑表定义的列顺序与row存储列顺序阐述引入row版本的必要性数据腐化问题原因分析Bug重现与解析MySQL8.0.30修复方案前言DDL相对于数据库的DML之类的其他操作,相对来说是比较耗时、相对重型的操作;因此对业务的影比较严重。MySQL从5.6版本开始一直在持续改进其DDL性能:引入了onlineDDL,inplaceDDL,instantDDL等实用性极强的功能,DDL目前对业务的影响持续降低。MySQL8.0.29引入了instantadd...
2023-07-05 14:43:35 2249浏览 0点赞 0回复 0收藏
芬达,《芬达的数据库学习笔记》公众号作者,开源爱好者,擅长MySQL、ansible。背景openEuler是什么openEuler22.03LTS是openEuler社区于2022年3月发布的开源操作系统(从系统版本的命名不难发现吧)。openEuler社区的运营由华为为主导,社区以全球开源贡献者的合作,构建了这个高效、稳定和安全的操作系统。基于Linux内核的openEuler操作系统,支持Kunpeng以及其他处理器,旨在充分发挥计算芯片的潜力。它适用于数据库、大数据...
2023-07-05 14:42:19 1993浏览 0点赞 0回复 0收藏
大家好,我是二师兄,从事支付行业多年。今天给大家推荐一篇支付系统设计架构的文章。文章中提供了丰富架构、流程图,非常方便大家阅读、了解支付系统的设计。支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体可以看成是交易核心+支付核心两个大系统。交易...
2023-06-12 15:27:17 2791浏览 0点赞 0回复 0收藏
背景无论技术博客,还是导出PDF文件,Markdown格式越来越流行了。而目前本地Markdown编辑器最好使的莫过于Typora了。本人所有的文章编写几乎都在使用Typora,所有特意购买了付费版本,永久版,价格也不贵。文章中经常会用到图标,如果没有图床,没办法友好的复制到博客上。之前在使用免费的图床工具iPic,但是免费版本的经常出问题,不是上传的图片因防盗链不能访问,就是上传的账号被封。而付费版本呢,年费模式感觉不值得,于...
2023-06-12 15:26:31 2327浏览 0点赞 0回复 0收藏