作者牧小农来源牧小农(ID:javamxn)事件发布在上一节中我们讲解了在NotifyCenter中维护了事件名称和事件发布者的关系,而默认的事件发布者为DefaultPublisher,今天我们就来讲一下DefaultPublisher的事件发布的具体逻辑首先我们来看一下DefaultPublisher的源码:publicclassDefaultPublisherextendsThreadimplementsEventPublisher{Overridepublicvoidinit(Class<extendsEvent>type,intbufferSize){守护线程setDaemon(true);...
2022-06-23 17:48:12 6275浏览 0点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)前因我们在了解Nacos订阅机制之前,首先来了解一下前因——Nacos客户端的“服务发现”,我们先通过下面一张图来直观的看一下,有人可能就说这也叫直观,明明很曲折,小农想说的是,这样才能让你们印象更加深刻(手动狗头)。读者内心:我信你个鬼。对于Naocs客户端“服务发现”主要是有NamingService获取服务列表、组装参数,调用服务接口等等,上图中只是一个大致的流程,在其中还有获取服务...
2022-06-23 17:47:51 6587浏览 0点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)简介首先我们在看Nacos源码之前,要先想想为什么我们要读源码是为了装杯还是为了在心仪的女神面前给她娓娓道来展示自己的代码功底当然不全是!这都不是我们读源码的最终目的。作为一名技术人,上面的都是浮云,真正激励我们的应该是能够提升我们技术功底和整体技术大局观。此乃大道也!闲言少叙,接下来我们就来看一看,看源码究竟有什么好处提升技术功底:当我们去看源码的时候,能够学习源...
2022-05-11 17:31:58 1.0w浏览 0点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)前言在上节课中,我们讲解了客户端注册服务的大体流程,客户端在注册服务的时候调用的是NamingService.registerInstance来完成实例的注册,在最后呢我们知道服务注册是通过nacosv1nsinstance接口来完成注册的,我们今天来讲解服务端的注册,首先就从这个接口地址开始,来看具体服务端都做了哪些事情服务注册上面是我们从官网中找到的Nacos架构图,从这个图中我们大体可以得出我们要找的接口...
2022-05-11 17:31:50 8069浏览 3点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)一、前言最近小农在找工作,因为今年疫情的特殊原因,导致工作不是特别好找,所以一旦有面试电话,如果可以,都会去试一试,刚好接到一个面试邀请,感觉公司还不错,于是就确定了面试时间,准备了一下就去面试了。第一轮面试是小组组长面试,通过。第二轮是经理面试也是通过了。第三轮总监面试,前面都还有模有样,突然画风一转,面试官说:“问你最后一个问题”面试官:10W条数据,我要从其...
2022-04-24 16:54:00 6747浏览 0点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)前言在Java中,我们对于锁会比较熟悉,常用的有synchronized、Lock锁,在java并发编程中,我们通过锁,来实现当多个线程竞争同一个共享资源或者变量而造成的数据不一致的问题,但是JVM锁只能针对于单个应用服务,随着我们业务的发展需要,单体单机部署的系统早已演化成分布式系统,由于分布式系统的多线程、多进程而且分布在不同的机器上,这个时候JVM锁的并发控制就没有效果了,为了解决跨JV...
2022-04-24 16:48:01 5290浏览 0点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)源码地址:https:github.commuxiaonongSpringCloudtreemastercloudadminAdmin简介官方文档:WhatisSpringBootAdminSpringBootAdmin是一个用于管理和监控SpringBoot微服务的社区项目,可以使用客户端注册或者Eureka服务发现向服务端提供监控信息。注意,服务端相当于提供UI界面,实际的监控信息由客户端Actuator提供通过SpringBootAdmin,你可以通过华丽大气的界面访问到整个微服务需要的监控...
2022-04-24 16:38:24 9189浏览 0点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)面试官说:工作这么久了,应该知道sql执行计划吧,讲讲Sql的执行计划吧!看了看面试官手臂上纹的大花臂和一串看不懂的韩文,吞了吞口水,暗示自己镇定点,整理了一下思绪缓缓的对面试官说:我不会面试官:。。。。,回去等通知吧我:%^&%$!一、前言当我们工作到了一定的年限之后,一些应该掌握的知识点,我们是必须需要去了解的,比如今天面试官问的SQL执行计划当我们执行一条SQL的时候,可以...
2022-04-24 12:41:55 5494浏览 0点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)一、索引是什么MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构,而MYSQL使用的数据结构是:B+树在这里推荐大家看一本书,《深入理解计算机系统的书》1.1局部性原理程序和数据的访问都有聚集成群的倾向,在一个时间段内,仅使用其中一小部分,在最近的将来将用到的信息很可能与现在正在使用的信息在空间地址上是临近的(称空间局部性),或者最近访问过的程序代码和数...
2022-04-24 12:09:06 5824浏览 0点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)一、前言只从公司用了Jenkins后就很想写这个了,因为这个真真真的是太方便了,想起小农刚工作的时候,那个时候部署项目怎么部署呢首先需要将对应的class文件和xml一个一个导出来,放到对应的包文件里面,有时候一不小心很有可能会导错,这个时候又要去重新拉一下对应的class文件,然后对比看有没有导入错误,是不是class文件,先停止对应的tomcat服务,然后放到服务器上,之后再启动tomcat,...
2022-04-24 11:58:42 1.1w浏览 0点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)一、索引基本知识1.1索引的优点大大减少了服务器需要扫描的数据量,加快数据库的检索速度帮助服务器避免排序和临时表将随机io变成顺序io1.2索引的用处速查找匹配WHERE子句的行从consideration中消除行,如果可以在多个索引之间进行选择,mysql通常会使用找到最少行的索引如果表具有多列索引,则优化器可以使用索引的任何最左前缀来查找行当有表连接的时候,从其他表检索行数据查找特定索引列的...
2022-04-24 11:31:46 6575浏览 0点赞 0回复 0收藏
作者牧小农来源牧小农(ID:javamxn)什么是微服务在了解Nacos之前,我们先来了解一下,什么是微服务在2014年的时候,一位叫MartinFowler(马丁·福勒)的大神,提出了微服务的概念,定义:微服务是由单一应用程序构成的小小服务,拥有独立的进程和轻量化处理,服务依据业务功能设计,用全自动的方式进行部署,能够和其他服务使用HTTPAPI进行通信,同时服务会使用最小的规模进行集中管理,服务可以用不同的编程语言与数据库等组件实...
2022-04-24 10:49:16 1.2w浏览 0点赞 0回复 0收藏
作者jaxer来源WriteOnRead(ID:WriteOnRead)概述ArrayList是List接口的一个实现类,也是Java中最常用的容器实现类之一,可以把它理解为「可变数组」。我们知道,Java中的数组初始化时需要指定长度,而且指定后不能改变。ArrayList内部也是一个数组,它对数组的功能做了增强:主要是在容器内元素增加时可以动态扩容,这也是ArrayList的核心所在。前面「JDK源码分析List,Iterator,ListIterator」已经概述了List接口的方法,ArrayL...
2022-04-24 09:46:09 5936浏览 0点赞 0回复 0收藏
作者jaxer来源WriteOnRead(ID:WriteOnRead)List是最常用的容器之一。之前提到过,分析源码时,优先分析接口的源码,因此这里先从List接口分析。List方法列表如下:由于上文「JDK源码分析Collection」已对Collection接口的方法进行了简要分析,而List接口继承自Collection,因此这里只分析一些List特有的方法:将一个集合的所有元素添加到当前集合的指定位置;booleanaddAll(intindex,Collection<extendsE>c);用指定的运算结果...
2022-04-24 09:36:28 3464浏览 0点赞 0回复 0收藏
作者jaxer来源WriteOnRead(ID:WriteOnRead)说明本文以及接下来的几篇MySQL笔记是本人在「极客时间」的专栏『MySQL实战45讲』和掘金小册「MySQL是怎样运行的:从根儿上理解MySQL」的学习笔记整理,并参考了一些其他材料加上个人的总结和思考。顺便推荐下这两个专栏。基本架构MySQL基本架构示意图如下:MySQL大体可以分为两部分:Server层和存储引擎层(功能跟日常开发中的Service层和与DAO层有点像,可以对比理解)。Server层主要...
2022-04-24 09:31:48 6065浏览 0点赞 0回复 0收藏
作者jaxer来源WriteOnRead(ID:WriteOnRead)概述简单来说,索引的出现是为了提高查询效率,就像书的目录一样。MySQL的索引是在「存储引擎」层实现的,因此没有统一的标准,同一种类型的索引,在不同存储引擎之间实现可能也不同。本文主要分析InnoDB存储引擎的索引结构。索引模型索引模型就是索引的实现形式(也可以理解为索引的数据结构),常见的索引模型有下面三种:1.哈希表(散列表)键值对形式(类似Java中的HashMap)优点:新增...
2022-04-24 09:26:14 5062浏览 0点赞 0回复 0收藏
作者jaxer来源WriteOnRead(ID:WriteOnRead)概述对于Java后端开发而言,Spring框架的重要性不言而喻。而Spring中最核心的无非就是IoC和AOP。相关的概念不再赘述,网上可以找到很多对它们的介绍。这里想说的是,IoC只是一种设计思想,它的原理在不同语言有多种实现,同一种语言也有多个产品,Spring是Java语言实现中最著名的一个。刚开始接触IoC这个概念的时候对这些不是太清楚,以为是Spring独有的,后面发现并不是。很多小伙伴...
2022-04-24 09:05:46 6793浏览 0点赞 0回复 0收藏
作者jaxer来源WriteOnRead(ID:WriteOnRead)概述上篇文章「Spring中的IoC容器」从整体介绍了SpringIoC容器的相关概念和大致实现流程,本文要进入源码来一探究竟了。这里仍以前文的代码为例进行分析,测试代码如下:publicclassIocTests{Testpublicvoidtest01(){ApplicationContextcontextnewClassPathXmlApplicationContext("applicationioc.xml");System.out.println(context.getBean("person"));System.out.println(context.g...
2022-04-24 08:56:18 6152浏览 0点赞 0回复 0收藏
作者jaxer来源WriteOnRead(ID:WriteOnRead)前情回顾前文「SpringIoC容器初始化」以IoC容器中的ClassPathXmlApplicationContext为例进行了深入分析。Spring从我们的配置文件(即applicationioc.xml)中读取到Bean的原始信息,将其解析为Document对象。由于DOM解析只是充当了工具(语法解析),不必舍本逐末,这里不再深入分析。本文继续分析Spring如何从Document进行语义解析和注册BeanDefinition。BeanDefinition解析和注册前文提...
2022-04-24 08:43:07 5401浏览 0点赞 0回复 0收藏
作者jaxer来源WriteOnRead(ID:WriteOnRead)前言Redis作为当前最流行的NoSQL之一,想必很多人都用过。Redis有五种常见的数据类型:string、list、hash、set、zset。讲真,我以前只用过Redis的string类型。由于业务需求,用到了Redis的集合set。这不,一上来就踩到坑了。前几天有个需求提测,测试小哥提了个bug,并给了我一个日志截图:问题排查从堆栈信息定位到了项目的代码,大致如下:publicclassCityServiceprivatevoidsetSt...
2022-04-24 08:34:16 6202浏览 0点赞 0回复 0收藏