自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

JAVA技术爱好者

平时随写

  • 博客(81)
  • 收藏
  • 关注

原创 利用Spring的@Import扩展点与spring进行无缝整合

利用Spring的@Import扩展与spring进行无缝整合前言BeanFactoryPostProcessor@Import实现POM文件定义数据层Resource(dao)层的扫描注解定义我的数据层Resource使用的注解ArteryResourceImportBeanDefinitionRegistrar实现自定义扫描类ClassPathArteryResourceScanner代理注册工厂ResourceRegistryResouce的代理工厂真正的代理类方法调用类AbstractBeanDef

2020-08-07 14:14:00 1871 5

原创 4、k8s之deployment

k8s之deploymentDeployment部署应用手动创建一个deploymentdeploy扩容通过yaml文件创建Deployment自愈&故障转移能力升级部署方式介绍deploy滚动更新deploy滚动升级日志deployment回滚Deployment部署应用一个 Deployment 为 Pods 和 ReplicaSets 提供声明式的更新能力。你负责描述 Deployment 中的 目标状态,而 Deployment 控制器(Controller) 以受控速率更改实际状态,

2022-03-31 21:54:09 2444

原创 3、k8s工作负载-replicaset详解

k8s工作负载-replicaset详解K8S 工作负载架构ReplicaSetReplicaSet 的工作原理何时使用 ReplicaSetRC/RS控制器示例删除rs自愈能力扩容能力K8S 工作负载架构从图中可以知道POD是k8s中最下的单位,ReplicaSet简称rs,是用于自动化部署使用,它是对pod自动化部署的定义,而deployment是对rs的更上一层抽象,也就是deployment是管理rs,而rs是管理pod的,rc的功能和rs差不多,现在基本上已经不使用了。Pod: small

2022-03-31 21:36:55 2578

原创 1、K8S V1.12.5安装

K8S V1.12.5安装环境准备服务器配置docker安装设置yum源安装docker安装k8s验证安装K8S安装命令补全工具环境准备准备三台服务器,IP:服务器是centos7的版本192.168.56.120 k8s-master192.168.56.121 k8s-node1192.168.56.122 k8s-node2服务器配置1、关闭防火墙systemctl stop firewalldsystemctl disable firewalld2、关闭 selinuxs

2022-03-31 21:27:42 3037

原创 2、k8s pod原理详解

k8s pod原理详解Kubernetes Pod 介绍Pod 介绍与原理POD操作实战POD的创建和删除pod的生命周期管理资源的配额和限制静态podInit Containersk8s健康检查POD镜像升级pod 无法启动可能原因POD调度过程调度例子nodeSelectornodeNametaint and Tolerance标签常用命令Kubernetes Pod 介绍Pod 直译是豆荚,可以把容器想像成豆荚里的豆子,把一个或多个关系紧密的豆子包在一起就是豆荚(一个 Pod)。在 k8s 中我们

2022-03-05 12:30:10 1637

原创 Redis分布式锁解析&源码分析

Redis分布式锁解析&源码分析概述实战简单的分布式锁Redisson实现分布式锁Redission源码分析构造方法获取锁lock解锁锁失效红锁高性能的Redis的锁实现分析概述分布式锁在分布式系统出现过后就一直是一个需要重点关注的话题,一提到分布式系统,不得不想到分布式锁和分布式事务,在以往的单体应用场景下,使用jvm内置的锁就可以解决线程安全问题,但是在分布式场景下,不得比借助一些组件来完成在分布式场景下保证线程安全,像使用数据库或者一些共享存储也可解决,但随着Redis的广泛使用,在现在的

2022-03-05 11:16:47 1456 4

原创 K8S搭建DevOps环境二

K8S+jenins部署spring boot项目

2022-02-27 16:58:47 1837

原创 k8s搭建DevOps环境一

k8s搭建DevOps环境一DevOps、CI、CD都是什么Agile DevelopmentCI-持续集成CD持续交付持续部署DevOpsCI、CD、DevOps关系Jenkins 安装Jenkins 自动化部署实现原理k8s环境概述创建命名空间创建pvc创建deployment创建svc创建ingress安装k8s插件安装K8S中创建ServiceAccoutjenkins配置k8sK8s云基础配置jenkins地址配置POD 标签配置POD模板配置添加host path挂载docker引擎挂载k8s

2022-02-26 22:24:03 1661

原创 K8S部署rocketmq单机和集群

k8s部署rocketmq 单机和集群

2022-01-21 12:58:26 9510 8

原创 seata源码分析(AT)-事务提交和回滚

seata源码分析-事务提交和回滚一、事务会回滚1、客户端的回滚发起点2、服务端的处理3、客户端的回滚逻辑二、事务的提交1、客户端处理2、服务端的处理2.1、服务端的异步处理点1(修改事务状态为异步提交)2.2、服务端的异步处理点2(开启调度任务获取异步提交事务)3、客户端的处理3.1、客户端的同步处理3.2、客户端的异步处理三、seata工作原理四、seata源码结构图一、事务会回滚在业务方法中加了@GlobalTransactional过后,开启全局事务,其实就是一个aop,这个已经说过了,现在要说

2021-05-16 10:00:53 2920 8

原创 seata源码分析(AT)-分支事务注册

seata源码分析分支事务注册一、分支事务的注册1、客户端的处理1.1、获取连接1.2、sql预处理1.3、执行execute得到结果1.4、重试机制1.5、分支本地事务的提交2、服务端的处理(TC)一、分支事务的注册分支事务的注册是在seata的一个很重要的数据源DataSourceProxy中去做的,简单来说就是通过数据源这一层去干预了数据库的执行而达到分支事务的注册。1、客户端的处理所以我们直接进入DataSourceProxy的源码看获取连接的地方,我就来模拟一个过程就是我们如果在分支事务中

2021-05-16 09:50:24 1553

原创 seata源码分析(AT)-开始事务

seata源码分析基于1.4.0

2021-05-16 09:42:19 974 1

原创 MySql的高可用方案

MySql的高可用方案mysql架构的重要性一、MYSQL主从架构1.环境介绍2.搭建主从集群2.1.理论基础2.2 主从同步原理2.3.配置mysql主库(master)2.3.配置mysql从库(slave)2.4主从集群测试二、 集群搭建扩展1.全库同步与部分同步2.读写分离配置3.其他集群方式3.1互为主从的搭建3.2.GTID同步集群4.机器扩容三、半同步复制1.半同步复制2.搭建半同步复制集群四,主从架构的数据延迟问题五、MYSQL的高可用方案1、MMM2、MHA3、MGR六、分库分表1、分库分

2021-05-07 13:00:34 2582 1

原创 深入理解mysql的索引和数据结构

mysql的B+Tree结构mysql现在在互联网公司用的非常多,因为它优秀的数据结构,优秀的索引结构,我们都知道不管哪个数据库,它的数据都是持久化到银盘上的,如果说一个数据库,没有任何的索引和数据结构来存储这个数据,那么试想一下,我们要从一批数据中找到想要的一条数据,得做多少工夫,也就是会花费多少磁盘IO,那么带来的开销也是不可估计的;在mysql的官网有一句话写的是索引是帮助mysql高效获取数据的排好序的数据结构;所有要好好理解这句话,是什么意思呢?就是mysql中的索引结构是帮助mysql将

2021-05-07 12:39:12 347

原创 Sentinel1.8.0源码分析

Sentinel1.8.0源码分析Sentinel介绍Sentinel涉及的限流算法计数器法滑动时间窗口算法漏桶算法令牌桶算法@SentinelResource注解的源码解析SentinelResourceAspect源码结构图Sentinel介绍sentinel主要用来做资源保护,也就是限流降级熔断调度,一般我们说的限流主要是针对于接口来说的,当接口的处理能力达到了上线过后,如果这个时候接口还继续接受请求,那么导致的结果就是服务崩溃,无法正常的处理业务,而sentinel的主要作用就是最服务要调用的接

2021-05-06 21:54:33 563 3

原创 dubbo中的SPI机制的使用和源码分析

dubbo中的SPI机制的使用和源码分析SPISPI机制概述JDK中的SPI机制dubbo SPIdubbo spi架构图dubbo aopdubbo的依赖注入dubbo中@SPIDubbo SPI源码分析ExtensionLoadergetExtensionLoader(Class class)getExtension(String name)Dubbo中的IOCcreateAdaptiveExtensionClassSPI为什么要分析 dubbo的SPI机制,我只能说dubbo的SPI机制是dubb

2021-02-27 22:46:22 409

原创 dubbo与spring整合之@Service、@Reference注解处理过程

dubbo与spring整合之@Service、@Reference注解处理过程dubbo整合spring的必要性整体的架构流程@EnableDubboDubboConfigConfigurationRegistrarDubboComponentScanRegistrarReferenceAnnotationBeanPostProcessordubbo整合spring的必要性dubbo是一款高性能的服务框架,但是如果是单独使用的话,会比较麻烦,而且很多注册中心的代码都需要自己写,因为还需要一套自己的IO

2021-02-27 22:21:13 6015

原创 Nginx的配置使用

Nginx的配置使用Nginx介绍代理模式正向代理反向代理负载均衡常用的命令安装部署nginx.confNginx应用启动nginx负载均衡测试访问控制多虚拟主机配置静态资源压缩状态页身份认证location匹配url重写限流Nginx介绍Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新

2021-01-26 17:32:11 229

原创 Netty高并发高性能架构设计&NIO空轮训BUG

Netty高并发高性能架构设计&NIO空轮训BUGNetty高并发高性能架构设计Netty线程模型Netty主从Reactor模型设计的精髓无锁串行化设计思想零拷贝直接内存Netty零拷贝ByteBuf内存池设计灵活的TCP参数配置能力ByteBuf扩容机制handler的生命周期回调接口调用顺序NIO的空轮训BUGNetty如何解决NIO空轮训BUGNetty高并发高性能架构设计Netty线程模型Netty是采用主从Reactor模型,简单来说就是两个线程组,每个线程组中的每一个循环的线程都

2021-01-26 17:16:36 418

原创 Netty启动流程源码分析

Netty启动流程源码分析源码分析EventLoopGroup 源码分析ServerBootstrap分析启动流程BindinitAndRegisterdoBind0源码分析Netty是一种异步非阻塞的通信框架,但是Netty底层是通过NIO来实现了, 不是AIO来实现的,Netty的线程模型在之前的笔记中已经分析了,其实Netty的线程模型是通过doug lea的一本书演化而来,Netty通过线程组的方式来启动多个多路复用器,每个多路复用器所做的事情比较明确,比如boss的线程组主要是处理链接事件,而

2021-01-26 17:02:31 343 3

原创 Netty的粘包拆包&心跳机制&断线重连

Netty的粘包拆包&心跳机制&断线重连编解码编解码的概念Netty的编解码示例自定义发送对象JDK原始的序列化protostuff序列化Netty粘包拆包解决方案Netty心跳机制IdleStateHandler源码分析Netty断线自动重连实现编解码编解码的概念Netty的编解码其实很好理解,不管是Netty还是传统的socket连接也需要做编解码,比如说 tomcat,tomcat的请求过程中,比如在bio的传统交互过程中,http定义了一种协议,那么过程就是从socket中读取

2021-01-26 16:49:55 462

原创 Netty架构探索之NIO架构演变

Netty架构探索之NIO架构演变Netty初探Netty的使用场景Netty通讯示例NIO架构演变传统的BIO模型基本的 Reactor模型多线程的Reactor模型主从Reactor模型Netty的线程模型Netty模块组件ByteBuf详解Netty实战聊天室系统Netty初探NIO 的类库和 API 繁杂, 使用麻烦: 需要熟练掌握Selector、 ServerSocketChannel、 SocketChannel、 ByteBuffer等。 开发工作量和难度都非常大: 例如客户端面临断线重

2021-01-26 16:36:51 268

原创 深入理解BIO、NIO、AIO

深入理解BIO、NIO、AIOIO模型BIO(Blocking IO)BIO的缺点应用场景NIO(Non Blocking IO)轮训的NIOIO多路复用器EPOLL源码流程分析AIO(NIO 2.0)BIO、 NIO、 AIO 对比IO模型IO是计算机的作用组成部分之一,有了IO,计算机与计算机之间,计算机中的资源才能进行交互,计算机与计算机之间发送数据和接受数据都是通过IO进行操作的,所以这里分享的主要是网络IO,下面说的IO都是网络IO,那么计算机与计算机之间发送和接受数据肯定要受限于网络资源的好

2021-01-19 11:39:45 353

原创 Nginx原理

Nginx原理Nginx长连接HTTP多进程模型进程调度多进程和多线程缓存机制信号机制IO模型传统的IO模型IO多路复用缓冲区用户态和内核态线程队列fd文件描述符Nginx的多进程单线程socket fd文件描述符数据处理流程IO多路复用之selectepollepoll_wait流程Nginx长连接在Nginx中默认是开启了长连接的,我们都知道nginx有正向代理和反向代理的,而nginx的配置文件中有两个参数,一个是工作进程参数一个是线程池的配置,这两个参数就是可以确定nginx的并发能够达到多少

2021-01-18 17:32:59 1293

原创 zookeeper简单应用&分布式锁实现

zookeeper简单应用&分布式锁实现Zookeeper的作用原理特点下载安装安装启动应用节点类型基本的CRUD权限管理ACL配置文件详解zookeeper的客户端原生客户端的使用Curatorzk简单的分布式锁实现Zookeeper的作用ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。Zoo

2021-01-12 17:40:59 285

原创 3.[springMvc]spring mvc 父子容器

spring mvc 父子容器spring MVC的实现方式spring 父子容器父容器创建过程initWebApplicationContextcreateWebApplicationContextconfigureAndRefreshWebApplicationContext示例子容器创建过程HttpServletBean.initFrameworkServlet.initServletBeaninitWebApplicationContextcreateWebApplicationContextonR

2020-12-21 11:33:35 319

原创 2[springMvc]模拟Spring MVC实现web框架

模拟Spring MVC实现web框架TomcataddWeAppTomcat启动模拟SpringMvc编写web框架handermapping:AdapterDispatcherServletcontroller来测试:SPI机制Tomcat前一篇笔记中介绍了Servlet以及Tomcat,servlet是一个行业的标准,tomcat在sevlet的标准上实现了它的标准,在tomcat中就是一堆的容器,其中servlet容器就是context容器,我们看下tomcat的sever.xml配置文件就可以

2020-12-21 10:39:21 190

原创 1.[springMvc]Servlet的基础知识

Servlet的基础知识servlet是啥Servlet运行流程示例ServletGenericServletHttpServletServletContextFilterservlet映射器servlet是啥Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。J

2020-12-21 10:24:10 469

原创 3.[mybatis]的查询源码分析(执行流程、缓存、整合spring要点)

目录1.装饰器模式2.sqlSession的创建(open)2.1.newExecutor3.selectOne分析3.1.二级缓存3.2.一级缓存4.数据库查询核心分析(queryFromDatabase)4.1.SimpleExecutor.doQuery4.1.1.prepareStatement4.1.2.预处理查询数据库4.1.3.封装数据到对象5.mybatis涉及的设计模式6.mybatis整合spring6.1.SqlSessi..

2020-12-20 20:11:12 227

原创 2.[mybatis]全局配置执行流程源码分析

mybatis全局配置执行流程源码分析轻量级的框架mybatis全局配置文件解析parseConfigurationsettings配置为解析别名解析别名使用方式一别名使用方式二插件解析环境配置的解析EnvironmentMapper配置解析bindMapperForNamespace轻量级的框架mybatismybatis在日常的开发中,使用的算是比较多的,它的底层也还是采用了JDBC的实现原理,但是总要的是它是一个ORM框架,就是对象关系数据映射框架,你可以简单理解就是你的sql语句写在配置文件中,

2020-12-20 19:42:27 142

原创 1.[mybatis]架构的整体流程

目录1.ORM框架myBatis这个ORM框架在这些年中,逐渐的进入大家的视野,也是现在企业开发框架中用的比较多的一种ORM框架,其中hibernate也是一种ORM框架,但是个人觉得hibernate可能太重了,适合非常大的项目使用,而且是对hibernate设计理念以及原理都非常清楚的团队来使用;MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映

2020-12-20 18:59:25 374 2

原创 JDK1.7中的HashMap详细分析

JDK1.7中的HashMap详细分析前言集合存储原理JDK7 HashMap源码分析属性信息构造方法put方法扩容扩容数组移动图CreateEntryEntry的基本结构get获取元素删除元素remove前言现在一般进入java开发这个行业的所有同行工作者基本可以说100%都接触过HashMap,可以说HashMap是我们在一般的应用开发中用的是最多的一种集合类框架,像ArrayList和Hashmap可能是用的最多的,这两种集合框架都是非线程安全的,也就是说这两种集合框架只能用于单线程的环境下,在多

2020-11-29 14:01:38 985

原创 LinkedList实现原理

LinkedList实现原理LinkedListLinkedList源码分析基本属性构造方法addAll方法AddAdd指定位置添加GETSET通过指定位置迭代删除元素1.AbstractSequentialList的remove2.Deque 中的Remove双端链表(队列Queue)LinkedListLinkedList都是List下面的集合子类,LinkedList中和ArrayList在实现上有很大的区别,ArrayList是维护了一个Object的数组,而LinkedList在实现上维护了一

2020-11-28 22:28:41 571

原创 ArrayList的实现原理

ArrayList的实现原理ArrayList和LinkedList比较ArrayLIst源码分析ArrayList的标记接口RandomAccessCloneableSerializableArrayList属性分析ArrayList构造方法添加原始add(尾部添加)指定下标添加元素元素删除迭代器Iterator不可变集合ListArrays.asList什么是fast-failArrayList和LinkedList比较ArrayList可以说是我们平时开发过程中用的最多了一个集合类了,其中Arra

2020-11-28 22:22:08 435

原创 Spring 事务处理机制详解及源码分析

Spring 事务处理机制详解及源码分析事务做了那些事儿spring事务传播特性当前不存在新的事务当前存在一个新的事务(事务需要传播)举个例子源码分析事务同步管理器事务挂起注册事务回滚时的事件事务提交事件@EnableTransactionManagement事物核心拦截器invokeWithinTransactiongetTransactionAttribute异常回滚completeTransactionAfterThrowing事务提交事务做了那些事儿今天这里记录下spring的事务机制,大概分析

2020-11-21 21:41:00 505

原创 Spring Aop详解

Spring Aop详解什么AOPSpring AOPProxyFactory示例分析源码分析创建代理工厂createAopProxygetProxy()JDK动态代理的调用JdkDynamicAopProxy创建的代理对象执行过程spring的自动代理功能BeanNameAutoProxyCreatorDefaultAdvisorAutoProxyCreator@EnableAspectJAutoProxy注解和源码对应关系什么AOP在软件业,AOP为Aspect Oriented Programmi

2020-11-21 21:27:00 937 1

原创 Spring循环依赖详解

Spring循环依赖详解什么是循环依赖spring是如何解决循环依赖循环源码分析getSingletion方法getSingletonspring开启代理对象的地方循环依赖的限制条件什么是循环依赖今天这边来聊下spring中的循环依赖,在spring的bean生命周期中,循环依赖处于bean的依赖注入模块,循环依赖相信就算没有研究过spring源码的也经常听说,那么什么是循环依赖呢?我们抛开spring这个框架来聊下什么是循环依赖,循环依赖可能在我们平时的开发过程中是属于比较常见的,但是如果只是简简单单

2020-11-21 21:13:10 2274 3

原创 Spring实例化之推断构造方法

Spring实例化之推断构造方法前言推断构造方法原理@AutoWired推导构造方法Xml中构造方法推导@ConstructorProperties推断构造方法源码解析实例化createBeanInstance(构造方法推断)Supplier用法@AutoWired后置处理器推断构造方法构造方法自动注autowireConstructor前言Spring中在生命周期中有一个非常重要的阶段就是推断构造方法,Bean的生命周期中,不管是单例的对象还是原型的对象都有实例化这个阶段,spring在扫描的阶段,也

2020-11-17 13:22:29 1899

原创 Spring 配置类解析过程详解

Spring 配置类解析过程详解配置类解析概要ConfigurationClassPostProcessor解析配置类过程invokeBeanDefinitionRegistryPostProcessorspostProcessBeanDefinitionRegistryprocessConfigBeanDefinitionscheckConfigurationClassCandidateConfigurationClassConfigurationClassParserparse解析processConf

2020-11-09 22:34:35 1374

原创 Spring BeanFactory后置处理器详解之配置类解析过程

Spring BeanFactory后置处理器详解之配置类解析过程BeanFactoryPostProcessor实现方式BeanFactory后置处理器源码分析invokeBeanFactoryPostProcessors分析BeanFactoryPostProcessorBeanFactoryPostProcessor是spring的一大核心,也是一个扩展点之一,spring的配置类扫描解析就是使用了BeanFactoryPostProcessor来实现的;spring中的两大扩展点之一就是Bean

2020-11-09 22:20:54 941

空空如也

空空如也

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

TA关注的人

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