自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 apollo配置中心(一)

1、Apollo简介 Apollo(阿波罗)是携程框架部门研发的开源配置管理中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性。 Apollo支持4个维度管理Key-Value格式的配置: environment (环境) ...

2020-07-04 19:19:28 10 0

原创 RabbitMQ排他性队列

如果你想创建一个只有自己可见的队列,即不允许其它用户访问,RabbitMQ允许你将一个Queue声明成为排他性的(Exclusive Queue)。 该队列的特点是: 只对首次声明它的连接(Connection)可见。 会在其连接断开的时候自动删除。 对于第一点,首先是强调首次声明,因为另外...

2020-06-13 22:21:18 36 0

转载 RabbitMQ BasicProperties

简介 当使用RabbitMQ发布消息时,消息又AMQP规范中的三个低层帧类型组成: Basic.publish方法帧; 内容头帧; 消息体帧; 这三种帧类型按顺序一起工作,以便消息传递时完好无损。 其中,内容头帧中的消息属性是一种预定义的值,这些值通过设置Basic.Properties...

2020-06-07 09:07:09 57 0

原创 RabbitMQ 消息确认

正常情况下,如果消息经过交换器进入队列就可以完成消息的持久化,但如果消息在没有到达broker之前出现意外,那就造成消息丢失,有没有办法可以解决这个问题? RabbitMQ有两种方式来解决这个问题: 一、事务使用 事务的实现主要是对信道(Channel)的设置,主要的方法有三个: chan...

2020-06-05 23:10:20 37 0

原创 mq

批量确认: 一个消费者和rabbitmq服务器建立连接会创建一个channel ,rabbitmq每发向这个channel 发送消息,deliveryTag就会+1 ,从1开始,deliveryTag就是消息的编号 1、2、3……。deliveryTag交付标记的作用域是每个信道,所以必须在接收...

2020-05-30 23:38:01 33 0

原创 通过 Lettuce 来操作 Redis

Java 操作 Redis 的库有两个,Jedis 和 Lettuce,目前 SpringBoot 2.x 中已经将 Jedis 换成了 Lettuce,让我们一起来看看这个东西。 Redis介绍 Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key...

2019-12-22 21:38:07 251 0

原创 CompletableFuture 使用详解

CompletableFuture 使用详解 1、 runAsync 和 supplyAsync方法 CompletableFuture 提供了四个静态方法来创建一个异步操作。 public static CompletableFuture<Void> runAsync(R...

2019-12-22 15:39:54 314 0

原创 spEl 表达式

Spring 表达式语言 Spring Expression Language(简称 SpEL )是一个支持运行时查询和操作对象图的表达式语言 。 语法类似于 EL 表达式 ,但提供了显式方法调用和基本字符串模板函数等额外特性 。SpEL 虽然作为 Spring 家族中表达式求值的基础,但却可以被...

2019-12-08 22:19:01 46 0

原创 windows键盘在 mac 上的设置

windows键盘在 mac 上的设置 在默认设置下: windows 键盘插入mac 电脑,在默认设置下: 键盘上 Shift 键会被 mac 识别为 Shift 键盘上 Ctrl 键会被 mac 识别为 Control 键盘上 Win 键会被 mac 识别为 Command ...

2019-12-08 14:35:48 828 0

转载 cglib

什么是CGLIB CGLIB(Code Generator Library)是一个强大的、高性能的代码生成库。其被广泛应用于AOP框架(Spring、dynaop)中,用以提供方法拦截操作。Hibernate作为一个比较受欢迎的ORM框架,同样使用CGLIB来代理单端(多对一和一对一)关联(延迟提...

2019-11-24 21:01:38 46 0

原创 Java Bridge Method

bridge method 如果一个类继承了一个范型类或者实现了一个范型接口, 那么编译器在编译这个类的时候就会生成一个叫做桥接方法的混合方法(混合方法简单的说就是由编译器生成的方法, 方法上有synthetic修饰符), 这个方法用于范型的类型安全处理, 用户一般不需要关心桥接方法。 实例...

2019-11-18 23:08:40 23 0

原创 git

diff $ git diff #比较工作区和缓存区的不同 $ git diff --cached #比较缓存区和 HEAD 不同 $ git diff HEAD #比较工作区和 HEAD 不同,就里的 HEAD 也可换成任意版本号 例 比较工作区和缓存区...

2019-11-16 11:00:31 25 0

原创 git 实例

实例一、 git使用过程中使用reset 进行版本回退。 原始版本文件: 对 test1目录中的三个文件进行改动:file1_1.txt修改、file1_2.txt 删除、file1_3.txt重命名、file1_4.txt 新增。并 commit。 对 test2目录中的三个文件...

2019-11-16 10:59:21 22 0

原创 docker 各种容器的配置

mysql docker run -p 3307:3306 --name mysql -v /docker/mysql/conf:/etc/mysql/conf.d -v /docker/mysql/logs:/logs -v /docker/mysql/data:/var/lib/mysql...

2019-11-02 23:25:24 38 0

原创 jenkins 构建 maven 项目

jenkins 构建 maven 项目 选择第二个构建一个 maven 项目 。如果没有该选项需要安装Maven Integration插件。 从上到下的配置是(构建时也是按照从上到下进行执行的): 1.General 就是项目详情,根据项目情况实际情况随意填写. 2.源码管理 源码的位置...

2019-11-02 15:24:33 41 0

转载 dockerFile

什么是dockerfile? Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。 docker build 命令用于从Dockerfile构建映像。可以在docker build命令中使用-f...

2019-10-30 16:12:49 17 0

原创 java valid

定义的校验类型 @Null :验证对象是否为null @NotNull 验证对象是否不为null, 无法查检长度为0的字符串 @NotBlank:检查约束字符串是不是Null还有被Trim的长度是否大于0,只对字符串,且会去掉前后空格. @NotEmpty:检查约束元素是否为NULL或者是...

2019-10-18 21:47:33 191 0

原创 ElasticSearch安装

一、安装Java SE环境 在安装Elasticsearch引擎之前,必须安装ES需要的软件环境 注意:运行需要jdk1.8及以上 二、安装ElasticSearch (一)下载 ElasticSearch官网:https://www.elasticsearch.org Elastic...

2019-09-04 15:43:32 97 0

原创 git 公钥私钥生成

1、安装git 2、进入git安装目录 双击bash.exe 输入: ssh-keygen -t rsa -C "邮箱@qq.com"

2019-09-03 17:16:40 52 0

原创 Java 正则表达式

ava 正则表达式。 java.util.regex 包主要包括以下三个类: Pattern 类: pattern 对象是一个正则表达式的编译表示。Pattern 类没有公共构造方法。要创建一个 Pattern 对象,你必须首先调用其公共静态编译方法,它返回一个 Pattern 对象。该方...

2019-09-02 15:28:26 28 0

原创 Spring五个事务隔离级别和七个事务传播行为

事务隔离级别 隔离级别 1 DEFAULT 使用底层数据库的默认隔离级别,大部分数据库,默认隔离级别都是READ_COMMITED 2 READ_UNCOMMITED 允许事务读取未被其他事务提交的更改。脏读,不可重复读,幻读都可能会出现. 3 REA...

2019-08-25 17:42:39 434 0

转载 SPI机制

JAVA拾遗--关于SPI机制 JDK提供的SPI(Service Provider Interface)机制,可能很多人不太熟悉,因为这个机制是针对厂商或者插件的,也可以在一些框架的扩展中看到。其核心类java.util.ServiceLoader可以在jdk1.8的文档中看到详细的介绍。虽然...

2019-08-19 14:14:37 49 0

原创 BigDecimal加减乘除计算

public static void main(String args[]) { Double d1 = 1d; Double d2 = 0.3d; BigDecimal v1 = new BigDecimal(d1); BigDec...

2019-08-14 16:02:52 107 0

原创 Spring BeanWrapper

BeanWrapper这个接口主要用来操作一些标准的JavaBeans。对Bean属性的操作,封装了一个bean的行为,诸如设置和获取属性值等。大家熟知的主要有下面的工具类(Apache的BeanUtils和PropertyUtils、cglib的BeanMap和BeanCopier、spring...

2019-08-08 17:11:51 71 0

原创 mybatis 插件

Mybatis插件又称拦截器,本篇文章中出现的拦截器都表示插件。 Mybatis采用责任链模式,通过动态代理组织多个插件(拦截器),通过这些插件可以改变Mybatis的默认行为(诸如SQL重写之类的),由于插件会深入到Mybatis的核心,因此在编写自己的插件前最好了解下它的原理,以便写出安全高...

2019-08-07 16:12:20 85 0

原创 SpringMvc拦截器HandlerInterceptor

简介: 拦截器intercprot 和 过滤器 Filter 其实作用类似,可应用于: 1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。 2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面; 3、性能监控:有时候系统在...

2019-08-06 17:38:37 93 0

转载 Nginx 安装配置

Nginx 安装 系统平台:CentOS release 6.6 (Final) 64位。 一、安装编译工具及库文件 yum -y install make zlib zlib-devel gcc-c++ libtool openssl openssl-devel 二、首先要安装 PCR...

2019-08-02 11:56:53 36 0

原创 spring 循环依赖和生命周期

本文主要说的是Spring是如何解决bean循环依赖的问题,循环依赖和生命周期交织在一起的。 生命周期图: Spring容器初始化时会读取 我们配置bean的信息。然后再一个一个的创建: DefaultListableBeanFactory.class: public...

2019-07-31 15:24:39 83 0

原创 mybatis 四大核心接口对象

mybatis在执行期间,主要有四大核心接口对象: 执行器Executor,执行器负责整个SQL执行过程的总体控制。 语句处理器StatementHandler,语句处理器负责和JDBC层具体交互,包括prepare语句,执行语句,以及调用ParameterHandler.parameteri...

2019-07-22 17:53:10 125 0

原创 mybatis 一、二级缓存

MyBatis的缓存分为两种: 一级缓存,一级缓存是SqlSession级别的缓存,对于相同的查询,会从缓存中返回结果而不是查询数据库 二级缓存,二级缓存是Mapper级别的缓存,定义在Mapper文件的<cache>标签中并需要开启此缓存,多个Mapper文件可以共用一个缓存,依赖...

2019-07-21 21:45:08 35 0

原创 从源码的角度解读Spring中 Mybatis 的执行流程

在 spring 项目中不仅要学习 mybatis 还要学习 mybatis 是如何与 spring 完美结合的,这就要归功于 mybatis-spring.jar。今天不仅要学习 mybatis 还要学 如何与 spring 完美结合。 首先回顾一下 mybatis 的执行流程: //...

2019-07-16 23:19:26 216 0

转载 Spring Cloud中Hystrix 线程隔离导致ThreadLocal数据丢失(上)

在Spring Cloud中我们用Hystrix来实现断路器,Zuul中默认是用信号量(Hystrix默认是线程)来进行隔离的,我们可以通过配置使用线程方式隔离。 这里简单介绍下Hystrix隔离策略: 一、 线程池隔离(默认策略模式) 线程池隔离把执行依赖代码的线程与请求线程(如:tomc...

2019-07-10 17:59:12 243 0

转载 数据权限设计思路

https://www.cnblogs.com/landeanfen/p/7760803.html https://www.cnblogs.com/leoxie2011/archive/2012/03/20/2408542.html

2019-07-08 11:02:11 8049 0

转载 MyBatis自定义拦截器插件

前言 MyBatis自身提供了接口,支持在映射语句的某一点进行拦截做一些处理。所以在我们使用mybatis这个框架来做一些数据的持久化方面的操作的时候,有时候可能根据业务需要,在执行一次操作的过程中,做一些定制化操作。 Mybatis自定义插件针对Mybatis四大对象(Executor、St...

2019-07-02 14:54:24 182 0

转载 Java注解——Repeatable

Repeatable使用场景: 在需要对同一种注解多次使用时,往往需要借助@Repeatable。 实例: 在生活中一个人往往是具有多种身份,如果我把每种身份当成一种注解该如何使用??? 先声明一个Persons类用来包含所有的身份 @Target(ElementType.TYPE) @...

2019-07-01 09:54:02 140 0

转载 Spring-AOP @AspectJ

要在 Spring 中声明 AspectJ 切面, 只需要在 IOC 容器中将切面声明为 Bean 实例. 当在 Spring IOC 容器中初始化 AspectJ 切面之后, Spring IOC 容器就会为那些与 AspectJ 切面相匹配的 Bean 创建代理,AOP的原理其实就是利用了动态...

2019-06-30 17:57:26 36 0

原创 Spring RabbitMQ 源码分析

目录 一、知识点 1、RabbitListenerEndpoint: 2、RabbitListenerContainerFactory 二、开始 1、HandlerMethod 2、ChannelAwareMessageListener 3、SimpleMessageListen...

2019-06-29 23:40:13 318 0

转载 Spring SmartLifecycle 在容器所有bean加载和初始化完毕执行

在使用Spring开发时,我们都知道,所有bean都交给Spring容器来统一管理,其中包括没一个bean的加载和初始化。 有时候我们需要在Spring加载和初始化所有bean后,接着执行一些任务或者启动需要的异步服务,这样我们可以使用 SmartLifecycle 来做到。 SmartLife...

2019-06-29 16:55:31 424 0

转载 rabbitmq channel参数详解

rabbitmq channel参数详解 1、Channel 1.1 channel.exchangeDeclare(): type:有direct、fanout、topic三种 durable:true、false true:服务器重启会保留下来Exchange。警告:仅设置此选项,...

2019-06-27 15:35:23 911 0

原创 Spring Bean 生命周期方法 InitializingBean、init-method、PostConstruct等

概述 spring 中bean的生命周期方法: 通过 <bean> 元素的 init-method/destroy-method 属性指定初始化之后 /销毁之前调用的操作方法 通过实现 InitializingBean/DisposableBean 接口来定制初始化之后/销毁之前...

2019-06-25 10:39:55 123 0

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