
个人日记
文章平均质量分 92
Life journey
技术没有边界
展开
-
4、k8s之deployment
k8s之deploymentDeployment部署应用手动创建一个deploymentdeploy扩容通过yaml文件创建Deployment自愈&故障转移能力升级部署方式介绍deploy滚动更新deploy滚动升级日志deployment回滚Deployment部署应用一个 Deployment 为 Pods 和 ReplicaSets 提供声明式的更新能力。你负责描述 Deployment 中的 目标状态,而 Deployment 控制器(Controller) 以受控速率更改实际状态,原创 2022-03-31 21:54:09 · 2870 阅读 · 0 评论 -
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 · 2781 阅读 · 0 评论 -
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 · 3096 阅读 · 0 评论 -
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 · 3328 阅读 · 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 · 1786 阅读 · 0 评论 -
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 · 2772 阅读 · 1 评论 -
深入理解mysql的索引和数据结构
mysql的B+Tree结构mysql现在在互联网公司用的非常多,因为它优秀的数据结构,优秀的索引结构,我们都知道不管哪个数据库,它的数据都是持久化到银盘上的,如果说一个数据库,没有任何的索引和数据结构来存储这个数据,那么试想一下,我们要从一批数据中找到想要的一条数据,得做多少工夫,也就是会花费多少磁盘IO,那么带来的开销也是不可估计的;在mysql的官网有一句话写的是索引是帮助mysql高效获取数据的排好序的数据结构;所有要好好理解这句话,是什么意思呢?就是mysql中的索引结构是帮助mysql将原创 2021-05-07 12:39:12 · 394 阅读 · 0 评论 -
Sentinel1.8.0源码分析
Sentinel1.8.0源码分析Sentinel介绍Sentinel涉及的限流算法计数器法滑动时间窗口算法漏桶算法令牌桶算法@SentinelResource注解的源码解析SentinelResourceAspect源码结构图Sentinel介绍sentinel主要用来做资源保护,也就是限流降级熔断调度,一般我们说的限流主要是针对于接口来说的,当接口的处理能力达到了上线过后,如果这个时候接口还继续接受请求,那么导致的结果就是服务崩溃,无法正常的处理业务,而sentinel的主要作用就是最服务要调用的接原创 2021-05-06 21:54:33 · 654 阅读 · 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 · 473 阅读 · 0 评论 -
dubbo与spring整合之@Service、@Reference注解处理过程
dubbo与spring整合之@Service、@Reference注解处理过程dubbo整合spring的必要性整体的架构流程@EnableDubboDubboConfigConfigurationRegistrarDubboComponentScanRegistrarReferenceAnnotationBeanPostProcessordubbo整合spring的必要性dubbo是一款高性能的服务框架,但是如果是单独使用的话,会比较麻烦,而且很多注册中心的代码都需要自己写,因为还需要一套自己的IO原创 2021-02-27 22:21:13 · 6717 阅读 · 0 评论 -
Nginx的配置使用
Nginx的配置使用Nginx介绍代理模式正向代理反向代理负载均衡常用的命令安装部署nginx.confNginx应用启动nginx负载均衡测试访问控制多虚拟主机配置静态资源压缩状态页身份认证location匹配url重写限流Nginx介绍Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新原创 2021-01-26 17:32:11 · 288 阅读 · 0 评论 -
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 · 489 阅读 · 0 评论 -
Netty启动流程源码分析
Netty启动流程源码分析源码分析EventLoopGroup 源码分析ServerBootstrap分析启动流程BindinitAndRegisterdoBind0源码分析Netty是一种异步非阻塞的通信框架,但是Netty底层是通过NIO来实现了, 不是AIO来实现的,Netty的线程模型在之前的笔记中已经分析了,其实Netty的线程模型是通过doug lea的一本书演化而来,Netty通过线程组的方式来启动多个多路复用器,每个多路复用器所做的事情比较明确,比如boss的线程组主要是处理链接事件,而原创 2021-01-26 17:02:31 · 404 阅读 · 3 评论 -
Netty的粘包拆包&心跳机制&断线重连
Netty的粘包拆包&心跳机制&断线重连编解码编解码的概念Netty的编解码示例自定义发送对象JDK原始的序列化protostuff序列化Netty粘包拆包解决方案Netty心跳机制IdleStateHandler源码分析Netty断线自动重连实现编解码编解码的概念Netty的编解码其实很好理解,不管是Netty还是传统的socket连接也需要做编解码,比如说 tomcat,tomcat的请求过程中,比如在bio的传统交互过程中,http定义了一种协议,那么过程就是从socket中读取原创 2021-01-26 16:49:55 · 575 阅读 · 0 评论 -
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 · 306 阅读 · 0 评论 -
深入理解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 · 400 阅读 · 0 评论 -
zookeeper简单应用&分布式锁实现
zookeeper简单应用&分布式锁实现Zookeeper的作用原理特点下载安装安装启动应用节点类型基本的CRUD权限管理ACL配置文件详解zookeeper的客户端原生客户端的使用Curatorzk简单的分布式锁实现Zookeeper的作用ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。Zoo原创 2021-01-12 17:40:59 · 349 阅读 · 0 评论 -
3.[springMvc]spring mvc 父子容器
spring mvc 父子容器spring MVC的实现方式spring 父子容器父容器创建过程initWebApplicationContextcreateWebApplicationContextconfigureAndRefreshWebApplicationContext示例子容器创建过程HttpServletBean.initFrameworkServlet.initServletBeaninitWebApplicationContextcreateWebApplicationContextonR原创 2020-12-21 11:33:35 · 364 阅读 · 0 评论 -
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 · 229 阅读 · 0 评论 -
1.[springMvc]Servlet的基础知识
Servlet的基础知识servlet是啥Servlet运行流程示例ServletGenericServletHttpServletServletContextFilterservlet映射器servlet是啥Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,您可以收集来自网页表单的用户输入,呈现来自数据库或者其他源的记录,还可以动态创建网页。J原创 2020-12-21 10:24:10 · 611 阅读 · 0 评论 -
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 · 282 阅读 · 0 评论 -
2.[mybatis]全局配置执行流程源码分析
mybatis全局配置执行流程源码分析轻量级的框架mybatis全局配置文件解析parseConfigurationsettings配置为解析别名解析别名使用方式一别名使用方式二插件解析环境配置的解析EnvironmentMapper配置解析bindMapperForNamespace轻量级的框架mybatismybatis在日常的开发中,使用的算是比较多的,它的底层也还是采用了JDBC的实现原理,但是总要的是它是一个ORM框架,就是对象关系数据映射框架,你可以简单理解就是你的sql语句写在配置文件中,原创 2020-12-20 19:42:27 · 176 阅读 · 0 评论 -
JDK1.7中的HashMap详细分析
JDK1.7中的HashMap详细分析前言集合存储原理JDK7 HashMap源码分析属性信息构造方法put方法扩容扩容数组移动图CreateEntryEntry的基本结构get获取元素删除元素remove前言现在一般进入java开发这个行业的所有同行工作者基本可以说100%都接触过HashMap,可以说HashMap是我们在一般的应用开发中用的是最多的一种集合类框架,像ArrayList和Hashmap可能是用的最多的,这两种集合框架都是非线程安全的,也就是说这两种集合框架只能用于单线程的环境下,在多原创 2020-11-29 14:01:38 · 1078 阅读 · 0 评论 -
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 · 653 阅读 · 0 评论 -
ArrayList的实现原理
ArrayList的实现原理ArrayList和LinkedList比较ArrayLIst源码分析ArrayList的标记接口RandomAccessCloneableSerializableArrayList属性分析ArrayList构造方法添加原始add(尾部添加)指定下标添加元素元素删除迭代器Iterator不可变集合ListArrays.asList什么是fast-failArrayList和LinkedList比较ArrayList可以说是我们平时开发过程中用的最多了一个集合类了,其中Arra原创 2020-11-28 22:22:08 · 471 阅读 · 0 评论 -
Spring 事务处理机制详解及源码分析
Spring 事务处理机制详解及源码分析事务做了那些事儿spring事务传播特性当前不存在新的事务当前存在一个新的事务(事务需要传播)举个例子源码分析事务同步管理器事务挂起注册事务回滚时的事件事务提交事件@EnableTransactionManagement事物核心拦截器invokeWithinTransactiongetTransactionAttribute异常回滚completeTransactionAfterThrowing事务提交事务做了那些事儿今天这里记录下spring的事务机制,大概分析原创 2020-11-21 21:41:00 · 590 阅读 · 0 评论 -
Spring Aop详解
Spring Aop详解什么AOPSpring AOPProxyFactory示例分析源码分析创建代理工厂createAopProxygetProxy()JDK动态代理的调用JdkDynamicAopProxy创建的代理对象执行过程spring的自动代理功能BeanNameAutoProxyCreatorDefaultAdvisorAutoProxyCreator@EnableAspectJAutoProxy注解和源码对应关系什么AOP在软件业,AOP为Aspect Oriented Programmi原创 2020-11-21 21:27:00 · 1025 阅读 · 1 评论 -
Spring循环依赖详解
Spring循环依赖详解什么是循环依赖spring是如何解决循环依赖循环源码分析getSingletion方法getSingletonspring开启代理对象的地方循环依赖的限制条件什么是循环依赖今天这边来聊下spring中的循环依赖,在spring的bean生命周期中,循环依赖处于bean的依赖注入模块,循环依赖相信就算没有研究过spring源码的也经常听说,那么什么是循环依赖呢?我们抛开spring这个框架来聊下什么是循环依赖,循环依赖可能在我们平时的开发过程中是属于比较常见的,但是如果只是简简单单原创 2020-11-21 21:13:10 · 2451 阅读 · 3 评论 -
Spring实例化之推断构造方法
Spring实例化之推断构造方法前言推断构造方法原理@AutoWired推导构造方法Xml中构造方法推导@ConstructorProperties推断构造方法源码解析实例化createBeanInstance(构造方法推断)Supplier用法@AutoWired后置处理器推断构造方法构造方法自动注autowireConstructor前言Spring中在生命周期中有一个非常重要的阶段就是推断构造方法,Bean的生命周期中,不管是单例的对象还是原型的对象都有实例化这个阶段,spring在扫描的阶段,也原创 2020-11-17 13:22:29 · 2158 阅读 · 0 评论 -
Spring 配置类解析过程详解
Spring 配置类解析过程详解配置类解析概要ConfigurationClassPostProcessor解析配置类过程invokeBeanDefinitionRegistryPostProcessorspostProcessBeanDefinitionRegistryprocessConfigBeanDefinitionscheckConfigurationClassCandidateConfigurationClassConfigurationClassParserparse解析processConf原创 2020-11-09 22:34:35 · 1499 阅读 · 0 评论 -
Spring BeanFactory后置处理器详解之配置类解析过程
Spring BeanFactory后置处理器详解之配置类解析过程BeanFactoryPostProcessor实现方式BeanFactory后置处理器源码分析invokeBeanFactoryPostProcessors分析BeanFactoryPostProcessorBeanFactoryPostProcessor是spring的一大核心,也是一个扩展点之一,spring的配置类扫描解析就是使用了BeanFactoryPostProcessor来实现的;spring中的两大扩展点之一就是Bean原创 2020-11-09 22:20:54 · 1089 阅读 · 0 评论 -
Spring启动过程详解
Spring启动过程详解前言spring容器启动过程AnnotationConfigApplicationContext有参数构造方法无参数构造AnnotatedBeanDefinitionReader构造配置类解析register(解析我们的配置类Appconfig)refresh启动准备prepareRefreshprepareBeanFactory(beanFactory)registerBeanPostProcessors(beanFactory)initMessageSourceinitAppli原创 2020-11-09 22:16:34 · 15213 阅读 · 15 评论 -
Spring依赖注入之@Resourcce详解&Bean的销毁
Spring依赖注入之@Resourcce详解&Bean的销毁@Resource和@AutoWired@Resource依赖注入过程源码分析@Resource、@PostConstruct、@PreDestroy寻找注入点applyMergedBeanDefinitionPostProcessorsCommonAnnotationBeanPostProcessor.postProcessMergedBeanDefinitionInitDestroyAnnotationBeanPostProcesso原创 2020-10-25 17:47:28 · 727 阅读 · 0 评论 -
Spring依赖注入之注入Bean获取详解
Spring依赖注入之注入Bean获取详解依赖注入获取Bean过程resolveDependency方法详解Optional类型的获取beanObjectFactory类型获取beandoResolveDependency(普通注入类型)QualifierAnnotationAutowireCandidateResolver.isAutowireCandidateGenericTypeAwareAutowireCandidateResolver.isAutowireCandidateaddCandidate原创 2020-10-25 17:33:13 · 2614 阅读 · 0 评论 -
Spring依赖注入@AutoWired
Spring依赖注入@AutoWiredSpring依赖注入的形式XML的方式xml自动注入源码autowireByNameautowireByType以@AutoWired的方式spring的注解依赖注入doCreateBean之注入点postProcessMergedBeanDefinition@AutoWired依赖注入AutowiredFieldElement.inejctAutowiredMethodElement.inject@Autowired例子演示Spring依赖注入的形式Spring原创 2020-10-25 17:18:36 · 1661 阅读 · 0 评论 -
Spring bean生命周期之doCreateBean方法详解
Spring bean声明周期之doCreateBean方法详解前言@ValuecreateBean方法详解实例化前方法调用实例化前初始化后doCreateBeanapplyMergedBeanDefinitionPostProcessors填充属性&实例化后(populateBean)@AutoWired的实现逻辑&属性填充后的后置处理器初始化BeaninitializeBean初始化前后置处理器初始化方法前言在上一篇笔记中我们介绍了bean的初始化声明周期,但是期间有个最核心的方法c原创 2020-10-25 12:03:28 · 3489 阅读 · 3 评论 -
Spring生命周期Bean初始化过程详解
Spring声明周期Bean初始化过程详解Spring 容器初始化Spring Bean初始化BeanFactory和FactoryBean源码分析Bean的实例化preInstantiateSingletonsgetMergedLocalBeanDefinitiongetBean方法getObjectForBeanInstance例子分析@DependsOnSpring 容器初始化在spring中,不管是以xml文件的方式配置的Bean还是以注解的方式进行配置,最后都会将单例Bean放入到Spring原创 2020-10-25 11:51:00 · 11003 阅读 · 0 评论 -
Spring源码中涉及到的基本概念详解
这里写目录标题Spring简单介绍Bean定义XML定义Bean三级目录Spring简单介绍可以说spring是目前J2EE架构中最成功的轻量级的J2EE架构,spring发展了很多年了,现在使用已经很广泛了,可以说基本上每一家企业都在使用,包括BAT公司,都在spring架构的基础上做了很多的扩展,这个专题主要记录下spring的一些相关笔记,前段时间看了下spring的容器初始化的过程,发现里面的封装实在是太复杂了,封装了上千个类,如果不理解概念,直接去看源码会直接晕掉,spring最核心的功能就是原创 2020-10-25 11:40:27 · 712 阅读 · 0 评论 -
并发编程之条件队列CyclicBarrier(栅栏)
并发编程之条件队列CyclicBarrier(栅栏)CyclicBarrier栅栏Condition队列AQS内部定义了ConditionObjectCyclicBarrier实现原理构造方法Condition.await()signalAllCyclicBarrier执行流程(图解)CyclicBarrier栅栏CyclicBarrier栅栏是AQS中除共享锁、独占锁之外的一种条件锁的一种实现,CyclicBarrier和semaphor以及countDownlatch在实现上有一定的区别,Cycli原创 2020-10-09 11:42:55 · 690 阅读 · 6 评论 -
并发编程之AQS(抽象队列同步器)共享锁
并发编程之AQS(抽象队列同步器)共享锁前言Semaphore信号量Semaphore 的构造semaphore.acquire()doAcquireSharedInterruptibly(int arg)semaphore.release()unparkSuccessor(h)实列分析入队解锁出队CountDownLatchcountDown()await流程图前言在上一遍笔记中详细介绍了AQS抽象队列同步器的独占锁,在AQS中,独占锁的实现是使用ReentrantLock来实现的,那么共享锁在AQS原创 2020-10-09 11:32:47 · 236 阅读 · 0 评论