- 博客(23)
- 收藏
- 关注
原创 超细节的RocketMq搭建教程——RocketMq系列
超细节的RocketMq搭建教程——RocketMq系列前言一、前期准备工作二、安装RocketMq三、配置RocketMq的环境变量四、目录介绍五、启动RocketMq六、彩蛋七、总结前言最近搭建RocketMq,搭建过程中遇到许多问题,在阅读了很多博客和官网教程,终于搭建好了。但是发现许多博客以及官方文档描述都比较简洁,对于常见的坑描述简单以及不予描述,对新手不太友好,故码下此文,以便自己后续的回顾以及提供给初学者更友好的教程。如果你此时不了解RocketMq,请点击——为什么使用RocketM
2020-12-27 17:20:08
922
原创 为什么要使用RocketMq——RocketMq系列
RocketMq入门为什么要用MQMQ的优缺点优点:缺点为什么要用MQ应用解耦系统的耦合性越高,容错性就越低。以电商为例,用户创建完订单后,如果耦合调用库存系统、物流系统、支付系统,任何一个系统出现故障或者因为升级等原因暂时不可用,都回造成下单的异常,影响用户的体验。流量削峰应用系统如果遇到系统请求流量瞬间猛增,有可能会将系统压垮。如果有消息队列,遇到此情况,可以将大量请求存储起来,将一瞬间的峰值请求分散到一段时间进行处理,这样可以大大提高系统的稳定性异步用户调用一个接口的时候,可能该接口调
2020-12-25 22:33:15
2979
7
原创 Spring系列——延迟加载
Spring系列——延迟加载Spring容器创建之后,会调用它的refresh方法刷新Spring应用的上下文。首先整体查看AbstractApplicationContext#refresh源码@Overridepublic void refresh() throws BeansException, IllegalStateException { synchronized (this.startupShutdownMonitor) { // Prepare this context for
2020-11-15 14:42:47
707
原创 设计模式系列——克隆模式
设计模式系列——克隆模式前言native关键字原型模式适用的场景原型模式的应用原型模式实战浅克隆深克隆前言在我们工作中经常能遇到大幅度使用get或set方法,例如下面这样的代码public Student copy(Student oldStudent){ Student newStudent = new Student(); newStudent.setAge(oldStudent.getAge()); newStudent.setName(oldStudent.getNam
2020-11-01 11:37:26
1254
原创 Docker系列——Dockerfile的解析过程
Docker系列——Dockerfile的解析过程Dockerfile的基本知识Docker执行Dockerfile的大致流程Dockerfile、Docker镜像、Docker容器的理解Dockerfile的基本知识每条保留字指令都必须为大写字母且后面要跟随至少一个参数指令按照从上到下,顺序执行#表示注释每条指令都会创建一个新的镜像层,并对镜像进行提交Docker执行Dockerfile的大致流程docker从基础镜像运行一个容器执行一条指令并对容器做出修改执行类似docker c
2020-10-27 13:19:19
173
原创 Docker系列——容器数据卷
Docker系列——容器数据卷前言使用Dockerfile构建一个挂载了数据卷的镜像容器数据卷是什么?案例实战总结前言使用Dockerfile构建一个挂载了数据卷的镜像在了解容器数据卷之前我们需要做一些准备工作。之前我们创建数据卷的是在启动容器的时候,命令如下docker run -it -v /宿主机路径:/容器路径 镜像名称现在我们使用DockerFile来构建一个挂载了数据卷的镜像。首先我们简单的理解以下DockerFile是什么?DockerFile:是镜像的构建文件。可以这样理
2020-10-26 23:31:10
237
原创 Spring系列——init-method、destory-method(Bean的生命周期)
Spring系列——init-method、destory-method(Bean的生命周期)前言@Bean的initMethod和destroyMethod实战前言在传统的xml配置注册Bean的时候,如果我们需要指定Bean的初始化和销毁方法则可以通过 <bean id="user" class="org.example.life.User" init-method="init" destroy-method="destroy"></bean>通过Bean标签的i
2020-10-24 12:10:47
669
原创 Spring系列——@Lazy懒加载
Lazy-bean懒加载前言@Lazy源码@Lazy实战前言在传统的xml模式得Spring中,我们注册一个Bean如果需要使用懒加载(表示该bean在容器初始化的时候不进行初始化)我们通过bean标签里面的lazy-init属性进行设置,在Spring3.0之后提供了@Lazy注解代替此方式。@Lazy源码@Target({ElementType.TYPE, ElementType.METHOD, ElementType.CONSTRUCTOR, ElementType.PARAMETER, El
2020-10-23 20:09:09
348
原创 Spring系列——@Scope作用域
Spring注解——@Scope前言源码实战前言了解过SpringXml形式开发的同学,一定都知道xml中的bean标签里面有个scope标签,他的作用就是来定义此Bean的创建模式。@Scope注解的功能和这个scope标签是一样的。一共四种创建模式:单例模式:每次创建都是同一个对象,Spring中只会帮我们创建一次多例模式:每次创建都是新创建一个对象。基于Request的创建模式:每次请求会帮我们创建一个新的对象基于Session的创建模式:每个Session,都会创建一个对象。(后端的
2020-10-23 13:30:51
926
1
原创 Spring系列——@ComponentScan
Spring注解之@ComponentScan前言二级目录三级目录前言大家都了解过传统的Xml配置方式的Spring,基本上都知道Xml配置中有<Context:compent-scan>标签,它的作用是开启包扫描,把标注了@Controller、@Service、@Repository、@Component注册进Spring容器中,而Spring注解之@ComponentScan的作用就是代理此功能。二级目录三级目录...
2020-10-21 21:40:42
245
原创 Docker系列——Volume
Docker之VolumeVolume是什么?命令使用实战案例Docker之简单版Volume使用Docker之Volume结合权限的使用Volume是什么?Volume(数据卷)类似于Redis中的rdb和aof文件,主要用于宿主机和容器的数据共享,以及容器数据的持久化(当我们重启容器时,容器的所有数据会重置,数据卷除外)命令使用docker volume create [OPTIONS] [VOLUME]实战案例Docker之简单版Volume使用我们安装一个Centos镜像运
2020-10-20 21:13:49
206
原创 Docker系列——镜像Commit
Docker之镜像commit在已有的镜像上创建新的镜像使用到的命令如下:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]Options命令命令简写默认缺省说明–author-a作者–change-c对创建的映像应用Dockerfile指令–message-m提交注释–pause-ptrue提交期间暂停容器。。。太晚了。。。下次补上。。。...
2020-10-19 23:38:35
133
原创 Docker系列——镜像原理
Docker之镜像原理镜像是什么?镜像的实质镜像的分层为什么镜像要采用这种分层的结构呢?Docker镜像的加载原理镜像是什么?镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的程序,它包含运行这个程序的所有内容,包括代码、运行时、库、环境变量和配置文件。镜像的实质镜像的实质是是UnionFS(联合文件系统)UnionFs是什么?Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同
2020-10-18 14:38:42
406
原创 Spring系列——FactoryBean
Spring接口之FactoryBean前言FactoryBean接口源码FactoryBean实战前言FactoryBean接口源码/* * Copyright 2002-2020 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the
2020-10-17 13:26:45
203
原创 Docker系列——常用命令
Docker容器命令(上)有镜像才能创建容器,这是根本前提(下载一个CentOs镜像)docker pull centos新建并且创建一个容器docker run [OPTIONS] IMAGES [COMMAND] OPTIONS说明(常用):有些是一个减号,有些是两个减号 --name="容器新名字": 为容器指定一个名称;-d: 后台运行容器,并返回容器ID,也即启动守护式容器;-i:以交互模式运行容器,通常与 -t 同时使用;-t:为容器重新分配一个伪输入终端,通常与 -
2020-10-16 23:18:18
124
原创 Spring系列——@Import、ImportSelector接口
Spring注解之@Import前言@Import源码前言我们已经知道两种方式给Spring注册组件包扫描+注解的方式(@Controller、@Service、@Reposity、@Comment)使用@Configuration+@Bean的方式这两种的使用区别,第一种只能注册我们自己写的组件,而第二种可以注册jar包里面的组件接下来我来介绍第三种方式使用@Import来给Spring注册组件@Import源码@Target(ElementType.TYPE)@Retention(
2020-10-15 22:20:08
1114
1
原创 Spring系列——@Configuration+@Bean注册组件
Spring注解之Configuration+@Bean注册组件前言XML形式添加组件@Configuration+@Bean方式注入Bean前言在Spring3.0之前我们都是使用XML的方式来给Spring容器中添加组件的,使用过XMl给Spring容器添加组件的兄弟,大家都知道XML形式添加组件是多么繁琐,所以在Sping3.0之后,支持@Configuration+@Bean添加组件,而且在SpringBoot中基本上都是使用@Congfiguration+@Bean的模式来注册组件,所以我们需
2020-10-14 13:15:47
179
原创 Spring系列——@Conditional
Spring注解之@Conditional前言源码解析@Conditional工作流程@Conditaional实战前言Spring4推出了@Conditional注解,方便程序根据当前环境或者容器情况来动态注入bean,SpingBoot在@Conditional的基础上派生出许多注解,如@ConditionalOnMissingBean、@ConditionalOnExpression、@ConditionalOnClass等,这样使得我们动态注入Bean更加简洁方便,所以我觉得我们有必须来好好的学
2020-10-13 21:27:05
416
原创 Spring系列——@Profile
Spring注解@Profile前言代码案例前言在项目中,我们通常不同的环境下,我们的数据库、redis、zookeeper等信息需要不同的配置,@Profile就是用来解决这个问题的,@Profile就是通过不同的active来判断是否注册组件,在此记录一下@Profile如何使用.@Profile的使用方式标注在含有 @Configuration或@Comment的类上标注在含有@Bean的方法上设置active的两种方式编码设置设置vm参数代码案例实体类package
2020-10-12 20:12:03
306
原创 Zookeeper
1、Zookeeper是什么?Zookeeper是一个为分布式应用提供分布式、开源的调度服务。它暴露一组简单的基本架构,分布式应用可以在其上面来实现高层次服务用于同步、维护配置、分组和命名。它被设计得容易编程,在相似的文件系统树结构目录下使用一个数据模型。它运行在java环境上和绑定Java和C。调度服务是出了名的难。它们特别容易出错例如竞态条件和死锁。ZooKeeper的动机是减轻分布式应用...
2020-05-21 11:20:12
193
原创 Mybatis一级缓存和二级缓存的理解
简介一级缓存:线程级别的缓存,本地缓存,是sqlSession级别的缓存,默认开启二级缓存:全局范围的缓存,其他sqlSession也能使用,是namespace级别的缓存,手动开启工作流程当我们一个查询语句过来时,先走去二级缓存中看有没有这个缓存,如果没有命中,才会去一级缓存中拿取缓存,如果一级缓存中也没有命中,那么我们这时候才会直接走数据库,当我们走数据库查询到了这条记录,然后我们会将这条记录缓存到一级缓存中,当我们一级缓存关闭时,才会将一级缓存中的数据缓存到二级缓存中。缓存相关设置
2020-05-17 16:21:54
247
原创 SpringMvc的运行流程
记录一下SpringMvc的运行流程1、DispatcherServlet拦截所有请求,进行分发2、通过URL到handlerMapping获取对应的执行链(包含对应控制器以及拦截器)3、然后通过执行链获取到对应的适配器4、然后使用适配器执行目标方法的拦截器、目标方法返回一个ModelAndView5、然后ModelAndView给ViewResolver渲染成View6、View渲染页面...
2020-05-16 22:08:21
168
原创 Spring事务机制
记录一下此时对于Spring事务机制的一些理解~~~介绍编程式事务管理:编程式事务管理使用TransactionTemplate可实现更细粒度的事务控制。 声明式事务管理:基于Spring AOP实现。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务,申明式事务管理不需要入侵代码,通过@Transactional就可以进行事务操作,更快捷而且简单(尤其是配合spring boot自动配置,可以说是精简至极!),且大部分业务..
2020-05-16 18:16:41
302
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人