自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 回顾Kafka

1.是什么?Kafka是一个分布式、支持分区、多副本的,基于zookeeper协调的分布式消息中间件2 使用场景核心的场景、原因有 3 个:解耦、异步、削峰。具体:日志收集消息系统:解耦和生产者和消费者、缓存消息等。用户活动跟踪:用户的各种活动,如浏览、搜索、点击等活动,发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。运营指标:包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。3

2022-05-12 23:04:29 548

原创 SpringCloud Alibaba Nacos注册中心源码浅析

一、前置了解1.1 简介Nacos是一款阿里巴巴推出的一款微服务发现、配置管理框架。我们本次对将对它的服务注册发现功能进行简单源码分析。1.2 流程Nacos的分析分为两部分,一部分是我们的客户端(将自己注册到Nacos),另一部分是Nacos Server处理我们的注册请求等。1.3 要分析demo示例细节篇幅不多展示,大致如下1.3.1 客户端方面:引入了pom依赖<dependency> <groupId>com.alibaba.cloud</gr

2021-01-25 15:17:47 459

原创 Sentinel的限流、熔断源码浅析

一、简单使用(源码分析分析基石)1.引入 Sentinel 依赖<dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-core</artifactId> <version>1.8.0</version></dependency>2.对Controller方法打上注解 @SentinelResou

2021-01-05 15:04:41 329 2

原创 事务隔离实现原理

记录一下事务隔离性是怎么实现的呢?一、事务的隔离级别1.Read Uncommitted(未提交读):一个事务可以读取到其他事务未提交的数据,会出现脏读,所以叫做 RU,它没有解决任何的问题。2.Read Committed(已提交读),也就是一个事务只能读取到其他事务已提交的数据,不能读取到其他事务未提交的数据,它解决了脏读的问题,但是会出现不可重复读的问题。3.Repeatable Read (可重复读),它解决了不可重复读的问题,也就是在同一个事务里面多次读取同样的数据结果是一样的,但是在这个

2020-12-30 10:06:49 373

原创 四、Spring事务

这次在有道云笔记上写没用markdown,写完才发现转过来不方便。还是直达有道云吧,如下:文档:Spring事务实现原理.note链接:http://note.youdao.com/noteshare?id=bd700d60b3d05ac5cd79afb9c03583b4&sub=032700A8932C45EDB9FBEEBB39D4CD71...

2020-11-20 20:20:53 106

原创 影响 Redis 性能的 5 大方面的潜在因素

影响 Redis 性能的 5 大因素 Redis 内部的阻塞式操作; CPU 核和 NUMA 架构的影响; Redis 关键系统配置; Redis 内存碎片; Redis 缓冲区。 一、Redis 内部的阻塞式操作1.1 有哪些阻塞点?看看要与哪些对象交互以及有什么操作:逐个分析1.1.1 和客户端交互时的阻塞点Redis 使用了 IO 多路复用机制,网络IO将不是阻塞点(只考虑Redis本身而非网络环境)。键值对的增删改查.

2020-10-31 10:10:55 584

原创 三、dubbo源码分析-服务发布与注册

一、概括​ Dubbo 服务发布始于 Spring 容器Refresh刷新事件,接收到事件后,执行服务发布逻辑。整个逻辑大致可分为三个部分:​ 第一部分是前置工作,主要用于检查参数,组装 URL。​ 第二部分是导出服务,包含导出服务到本地 (JVM),和导出服务到远程两个过程。​ 第三部分是向注册中心注册服务,用于服务发现。二、Dubbo与Spring的关系​ 服务发布的入口类是一个叫 ServiceBean的类,查看它的引用,是在DubboNamespaceHandler中注册

2020-07-18 17:48:59 245

原创 二、dubbo源码分析-前置知识SPI

一、SPI 机制 介绍在 Dubbo 中, SPI 机制贯穿整个 Dubbo 的核心,不断反复反复的使用,后面就可以看到。SPI 全称为 Service Provider Interface,是一种服务发现机制。不过,Dubbo 并未使用 Java 原生的 SPI 机制,而是对其进行了增强,使其能够更好的满足需求本质原理​ SPI 的本质是将接口实现类的全限定名配置在文件中,并由服务加载器读取配置文件,加载实现类。这样可以在运行时,动态为接口替换实现类。目的很容易的通过 SPI 机制为我们的程

2020-07-17 19:51:54 155

原创 一、dubbo基本知识整理

一、介绍​ dubbo 主要是一个分布式服务治理解决方案。那么什么是服务治理?​ 服务治理主要是针对大规模服务化以后,服务之间的路由、负载均衡、容错机制、服务降级这些问题的解决方案,而 Dubbo 实现的不仅仅是远程服务通信,并且还解决了服务路由、负载、降级、容错等功能。二、基本使用略三、Dubbo 的终端操作方法如果不看 zookeeper、也不看监控平台(dubbo-admin,直接改下配置war部署就可以看到了),如何知道这个服务是否正常呢?Dubbo 里面提供了一种基于终端操作的方

2020-07-12 15:58:16 198

原创 zookeeper笔记整理(二)

Watcher 节点事件监听​ zookeeper 提供了分布式数据的发布/订阅功能, zookeeper允许客户端向服务端注册一个 watcher 监听。​ 当服务端的一些指定事件(比如可以监听节点数据变更、节点删除、子节点状态变更等 )触发了 watcher,那么服务端就会向客户端发送 一个事件通知。​ 值得注意的是, Watcher 通知是一次性的,即一旦触发一次通知后,该 Watcher 就失效了,因此如果要实现永久监听,可以通过循环注册来实现​ 通过这个事件机制,可以基于 zo

2020-07-12 13:59:20 147

原创 zookeeper笔记整理(一)

一、背景单体架构到分布式集群架构带来各种服务之间的调用,有直接http调用与Rpc调用等Http 和 Rpc 框架的区别1.虽然现在服务间的调用越来越多地使用了 RPC 和消息队列,但是 HTTP 依然有适合它的场景。RPC 的优势在于高效的网络传输模型(常使用 NIO 来实现 netty等),以及针对服务调用场景专门设计协议和高效的序列化术。2.HTTP 的优势在于它的成熟稳定、使用实现简单、被广泛支持、兼容性良好、防火墙友好、消息的可读性高。所以 http 协议在开放 API、跨平台的服务间调

2020-07-09 00:40:04 251

原创 SpringBoot源码分析(三)整合MyBatis

一、前言​ SpringBoot中是没有MyBatis的,可以通过在使用SpringBoot时如果我们要用MyBatis的话,需要相比普通引用MyBatis需要多做哪些工作?来反推出整合自动配置的原理二、对比SpringBoot中使用MyBatis区别1.pom方面相比平时不一样的是,引用的是starter:<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId&gt

2020-07-04 00:36:02 194

原创 四、MyBatis终结篇(补充中...)

一、MyBatis核心特性MyBatis核心特性MyBatis和Hibernate 跟 DbUtils、 Spring JDBC 一样,都是对 JDBC 的一个封装,我们去看源码,最后一定会看到 Statement 和 ResultSet 这些对象。1、 使用连接池对连接进行管理2、 SQL 和代码分离,集中管理3、 结果集映射4、 参数映射和动态 SQL5、 重复 SQL 的提取6、 缓存管理7、 插件机制这么多的工具和不同的框架,在实际的项目里面应该怎么选择?在一些业务比较简单的

2020-07-02 19:29:16 228

原创 三、SpringMVC终结篇(补充中...)

一、基本流程与总览《Spring in Action》上给了一张 Spring MVC 最最基本大致处理流程图解释:① DispatcherServlet 是 SpringMVC 中的核心控制器,负责接收 Request 并将 Request 转发给对应的处理组件② HanlerMapping 是 SpringMVC 中 完 成 url 到 Controller 映 射 的 组 件 。DispatcherServlet 接 收 Request, 然 后 从HandlerMapping 查 找

2020-06-29 16:08:39 149

原创 二、SpringAOP终结篇(补充中...)

一、基本源码分析1.寻找入口Spring 的 AOP 是通过接入 BeanPostProcessor 后置处理器开始的2.BeanPostProcessorBeanPostProcessor的体现在IOC源码分析的doCreateBean中,populateBean的后一句Object exposedObject = bean;try { populateBean(beanName, mbd, instanceWrapper); exposedObject = initializeB

2020-06-13 12:26:44 189

原创 一、SpringIOC终结篇(补充中...)

一、核心容器类图1.1 BeanFactoryBeanFactory 作为最顶层的一个接口类,它定义了 IOC 容器的基本功能规范,BeanFactory 有三个重要的子类:ListableBeanFactory、HierarchicalBeanFactory 和 AutowireCapableBeanFactory 。ListableBeanFactory 接口表示这些 Bean 是可列表化的,而 HierarchicalBeanFactory 表示的是这些 Bean 是有继承关系的,也就是每

2020-06-11 17:14:33 243

原创 跳出初学MySQL知识的原理整理(一)

一、基础架构MySQL 可以分为 Server 层和存储引擎层两部分。Server 层包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。而存储引擎层负责数据的存储和提取。支持 InnoDB、MyISAM等多个存储引擎。最常用的存储引擎是 InnoDB,从 MySQL 5.5.5 版本开始成为了默认存储引擎。1.1 连接器首先,连接器负责跟客户端建立连接、获取权限、维持和管理连接。连接命令一般是mysql -h 11.28.19.

2020-05-27 11:37:07 250

转载 学习思维==》学习三问 what why how

学习之前先问自己三个问题,what、why、howWhat定义,对你学习对象清楚的定义。学习之前你肯定得弄清楚自己学习的是什么。清楚之后才能提出Why目标/意义。你为什么要学习它,习得之后能给你带来什么,将发生什么样的改变。这个问题很重要,是你最终动力所在。只有想清楚,弄明白,你才能在今后的学习中不会迷失,才会最终习得它。最后才是how方法。当你确定上面两个问题之后才去考虑如何做的问题...

2020-04-14 16:43:04 1360

原创 SpringBoot源码分析(二)启动原理

Springboot的jar启动方式,是通过IOC容器启动 带动了Web容器的启动而Springboot的war启动方式,是通过Web容器(如Tomcat)的启动 带动了IOC容器相关的启动一、不可不说的Web容器(如Tomcat)不管是jar启动还是war包启动,都绕不开web容器相关。先了解这个怎么工作的,以Tomcat为例,看看Springboot 怎么来自动装配tomcat 相关的...

2020-03-29 23:02:11 253

原创 SpringBoot源码分析(一)@SpringBootApplication解析

@SpringBootApplication解析一、三层注解@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @F...

2020-03-25 13:51:44 292

原创 Spring-AOP源码分析随手记(二)

这次来分析下切面的执行过程。1.怎么看?怎么开始看源码呢?就直接从被增强的方法调用那里打断点,看看怎么执行的:然后就来到了这:2.初步分析里面有段:if (this.advised.exposeProxy) { // Make invocation available if necessary. oldProxy = AopContext.setCurrentProx...

2019-12-08 17:00:19 343

原创 Spring-AOP源码分析随手记(一)

1.@EnableAspectJAutoProxy(proxyTargetClass = true)就是弄了个"org.springframework.aop.config.internalAutoProxyCreator"::AnnotationAwareAspectJAutoProxyCreator.class的Bean到容器中2.分析AnnotationAwareAspectJAutoP...

2019-12-08 14:46:52 220

原创 Spring源码分析之IOC的三种常见用法及源码实现(三)

上篇文章我们分析了AnnotationConfigApplicationContext的构造器里refresh方法里的invokeBeanFactoryPostProcessors,了解了@Component和@Bean的原理等,invokeBeanFactoryPostProcessors还没分析完,后面还有部分代码,继续看refresh里的invokeBeanFactoryPostPro...

2019-10-23 21:29:25 215

原创 Spring源码分析之IOC的三种常见用法及源码实现(二)

回顾上文 我们研究的是 AnnotationConfigApplicationContext annotationConfigApplication = new AnnotationConfigApplicationContext (MainConfig.class); Person person2 = (Person)annotationConfigApplica...

2019-10-20 21:25:23 233

原创 Spring源码分析之IOC的三种常见用法及源码实现(一)

1.ioc核心功能bean的配置与获取api有以下四种(来自精通spring4.x的p175)常用的是前三种第一种方式<?xml version="1.0" encoding="GBK"?> <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" x...

2019-10-18 09:50:27 225 2

原创 解决Maven依赖jar包冲突总结

maven导入jar包中的一些概念: 直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包。 传递依赖:项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去。解决jar包冲突的方式:方式一: 第一声明优先原则:哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。 先声明的jar包坐标下的依赖包,可以优先进入项...

2019-05-22 15:17:31 481

原创 阿里云服务器CentOS7.x安装MySql5.7.2版本

Centos7.x上安装mysql5.7.2压缩版安装手册  说明:本文主要描述在centos7上安装mysql5.7.2。文中出现的/data/mysql 为本次安装mysql的目录,可以根据自己需要进行修改。最好将系统/etc/selinux/config文件中设置SELINUX=disabled SecureCRT.exe工具字体、编码utf-8设置:选项—》会话选项...

2019-01-15 00:01:52 839

转载 可能是把 ZooKeeper 概念讲的最清楚的一篇文章

转载自:https://github.com/Snailclimb/JavaGuide/blob/master/%E4%B8%BB%E6%B5%81%E6%A1%86%E6%9E%B6/ZooKeeper.md前言相信大家对 ZooKeeper 应该不算陌生。但是你真的了解 ZooKeeper 是个什么东西吗?如果别人/面试官让你给他讲讲 ZooKeeper 是个什么东西,你能回答到什...

2018-11-14 11:04:53 251

原创 Tomcat基本知识(一)

顶层架构先上一张Tomcat的顶层结构图(图A),如下:Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服务。Service主要包含两个部分:Connector和Container。从上图中可以看出 Tomcat 的心脏就是这两个组件,他们的作用如下:1、Connector用于处理连接相关...

2018-10-31 16:27:47 1469

原创 针对高并发系统的解决思路与方案

总体上:开涛大神在博客中说过:在开发高并发系统时有三把利器用来保护系统:缓存、降级和限流。1.扩容根据业务系统的类型,考虑不同的针对在数据库方面的扩容:2.缓存(特别重要)缓存设置的地方手段主要是Redis、CDN、浏览器等,其次可能一些问题2.3可能存在的问题2.3.1一致性缓存一致性的话,主要可能考虑到以下几种可能导致一致性问题:...

2018-08-23 21:41:56 5420 2

原创 流水线机制、滑动窗口协议、GBN、SR

一、滑动窗口协议为了解决停等操作的性能问题(发了一个分组之后一直等到确认了这个分组才发下一个),推出了流水线机制,提供资源利用率。就是允许发送方在收到对方的ACK前,发送多个分组 其中窗口是一个范围管理发出去还没确认的分组,随着不断传输,这个窗口不断滑动,名称的由来。窗口左端的序号收到了ACK,就可以往右滑动了。 滑动窗口协议有GBN、SR二、滑动窗口协议的实现:G...

2018-07-28 14:22:04 9348 1

原创 MySQL的优化与实战

一、MySQL优化概括 二、SQL优化 实践: 1.查看是否开启了慢查询日志show variables like 'slow_query_log'  没有开启2.查看是否开启了未使用索引SQL记录到日志show variables like '%log%';  没有开启3.查看慢查询多少秒才记录到日志show varia...

2018-07-28 11:05:16 240

原创 SpringBoot入门(二)

一、表单验证Controller接收一个对象数据的表单,如下:需要对表单friend里的age属性做一个限制,如下第一个是最小值,第二个是出错时报的错误信息怎么知道验证结果呢?如下:二、AOP处理请求(1)添加依赖 &lt;dependency&gt; &lt;groupId&gt;org.springframewor...

2018-07-01 20:54:01 170

原创 SpringBoot应用入门(一)

一、项目搭建使用IDEA,点击create new project,然后左边的spring initializr,右边SDK1.8,URL:https://start.spring.io,next 改改名字 packing为jar,next 选个web下的web即可,这个地方要选好spring boot版本!不同版本有些代码不生效, finished,创建完成。二、项目编写与运行src...

2018-06-29 19:54:47 264

原创 MySQL索引的建立与实现

一、索引介绍 1.MySQL中,所有的数据类型都可以被索引,索引包括普通索引,唯一性索引,全文索引,单列索引,多列索引和空间索引等。 2.额外的:我已知的自动创建索引的时机:创建主键,唯一,外键约束的时候 3. 索引优点:提高查询,联合查询,分级和排序的时间 索引缺点:索引占空间,维护(创建,更新,维护)索引时需要耗费时间 1、创建普通索引CREATE TABLEindex1 (id INT,  ...

2018-05-24 00:16:59 489

原创 Java内存模型总结

Java内存模型内存模型可以理解为在特定的操作协议下,对特定的内存或者高速缓存进行读写访问的过程抽象,不同架构下的物理机拥有不一样的内存模型,Java虚拟机也有自己的内存模型,即Java内存模型(Java Memory Model, JMM)。在C/C++语言中直接使用物理硬件和操作系统内存模型,导致不同平台下并发访问出错。而JMM的出现,能够屏蔽掉各种硬件和操作系统的内存访问差异,实现平台一致性...

2018-03-16 12:44:26 256

原创 SpringMVC流程源码分析及DispatcherServlet核心源码

一、源码分析前还是需要一张流程图作为指导,如下:二、简单介绍以及源码定位    DispatcherServlet其实就是一个HttpServlet,他是HttpServlet的子类,所以它和普通的HttpServlet在web.xml里同样的配置。    这个Servlet的doPost和doGet方法的实现是DispatcherServlet的父类FrameworkServlet中实现的,两个...

2018-03-06 16:10:39 300

原创 算法学习之剑指offer(十二)

一题目描述请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子。如果一条路径经过了矩阵中的某一个格子,则该路径不能再进入该格子。 例如 a b c e s f c s a d e e 矩阵中包含一条字符串"bcced"的路径,但是矩阵中不包含"abcb"路径,因为字符串的第一个字符b占据...

2018-02-17 11:18:29 295

原创 算法学习之剑指offer(十一)

一题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。import java.util.*;/*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; ...

2018-02-17 11:17:25 227

原创 算法学习之剑指offer(十)

一题目描述请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100","5e2","-123","3.1416"和"-1E-16"都表示数值。 但是"12e","1a3.14","1.2.3","+-5"和"12e+4.3"都不是。public class Solution {

2018-02-17 11:15:08 250

空空如也

空空如也

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

TA关注的人

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