自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 泛型擦除

泛型擦除:https://www.cnblogs.com/wuqinglong/p/9456193.html

2019-12-24 11:01:16 135

原创 java线程池

线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量,超出数量的线程将排队等候,等其他线程执行完毕,再从队列中取出来执行。主要特点:线程复用,控制最大并发数,管理线程1、降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗2、提高相应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行3、提高线程的...

2019-11-06 09:40:51 179

原创 RabbitMQ消息确认机制(事务+confirm)

可参考https://blog.csdn.net/hzw19920329/article/details/54340711在rabbitmq中,可以通过持久化数据,解决服务器异常之后数据丢失问题。消费者也可以通过手动应答来告知消息队列有没有收到消息。但是生产者将消息发送出去之后,消息到底有没有到达rabbitmq服务器,默认情况下是不知道的。两种方式:AMQP实现了事务机制confir...

2019-11-02 22:05:28 406

原创 RabbitMQ Topic模式

模型:与路由模式类似,但是路由模式是精确匹配,而Topic模式是可以模糊匹配。使用通配符#,*#表示匹配0个或多个*表示匹配1个生产者public class Provider { private static final String EXCHANGE_NAME="my_exchange"; private static final String ROUTE_KEY = "m...

2019-11-02 22:02:42 402

原创 RabbitMQ路由模式

模型路由模式与发布订阅模式非常相似,但是路由模式增加了路由键的配置,生产者在发送消息到交换机的时候会指定一个routingKey,用于匹配队列,同时队列绑定到交换机时也会指定routingKey,交换机在向队列发送消息时,会根据routingKey来匹配。生产者public class Provider { private static final String EXCHANGE_N...

2019-11-02 22:01:31 358

原创 RabbitMQ发布订阅模式

模型:1、一个生产者,多个消费者2、每一个消费者都有自己的队列3、生产者没有直接把消息发送到队列,而是发送到交换机上4、每个队列都需要绑定到交换机上5、生产者发送的消息,经过交换机,到达队列,就能实现一个消息被多个消费者消费生产者public class Provider { private static final String EXCHANGE_NAME="my_excha...

2019-11-02 21:58:43 134

原创 RabbitMQ工作队列

模型:一个生产者,对应多个消费者,可以弥补简单队列一对一的限制,在实际开发中,生产者生产消息速度往往很快,但是消费者消费消息时可能会有比较耗时的操作,如果是简单工作队列,那么将可能导致消息队列中积累很多的消息,多个消费者可以增加消费速度。轮询分配消息:如果采用轮询的方式将队列中的消息分配给每个消费者,那么其实现方式与简单队列没有区别,只不过消费者有多个,代码没有区别。公平分发(fair ...

2019-11-02 21:56:36 201

原创 RabbitMQ简单队列

模型:P:消息生产者C:消费者红色部分是消息队列简单队列的使用1、使用springboot,引入rabbitmq的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp</arti...

2019-11-02 21:54:07 98

原创 CAS

CAS全称为compare-and-swap,它是一条CPU并发原语,它的功能是判断内存某个位置的值是否为预期值,如果是则更改为新的值,这个过程是原子的。CAS并发原语体现在java语言中的是sun.misc.Unsafe类中的各个方法。调用Unsafe类中的CAS方法,jvm会帮我们实现出CAS汇编指令。这是一种完全依赖于硬件的功能,用于完成某个功能的一个过程,并且原语的执行必须是连续的,在执...

2019-11-02 21:26:29 82

原创 SpringBoot启动配置原理

run()方法环境准备执行ApplicationContextInitializer.initialize()监听器SpringApplicationRunListener回调ContextPrepared加载主配置类定义信息监听器SpringApplicationRunListener回调contextLoaded刷新启动IOC容器扫描加载所有容器中的组件包括从META-INF/...

2019-10-27 10:36:07 81

原创 SpringBoot集成Mybatis

引入Mybatis的依赖<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version>...

2019-10-27 10:32:30 85

原创 SpringBoot整合JDBC

1、导入mysql和JDBC的依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependen...

2019-10-27 10:30:07 140

原创 SpringBoot Web开发

SpringBoot对静态资源的映射规则SpringBoot中的SpringMVC自动配置在WebMvcAutoConfiguration类中public void addResourceHandlers(ResourceHandlerRegistry registry) { if (!this.resourceProperties.isAddMappings()) { ...

2019-10-23 10:14:13 792

原创 SpringBoot 日志处理

SpringBoot选用slf4j和logback,slf4j作为通用接口门面,而logkack是具体的实现。在开发过程中,日志记录方法的调用,不应该直接调用日志的实现类,而是调用日志抽象层里面的方法。需要导入slf4j的jar和locback的实现jarimport org.slf4j.Logger;import org.slf4j.LoggerFactory;public class...

2019-10-22 18:22:31 336

原创 自动配置原理

1、可以查看HttpEncodingAutoConfiguration2、通用模式xxxAutoConfiguration:自动配置类xxxProperties:属性配置类yml/properties文件中能配置的值就来源于属性配置类3、几个重要的注解@Bean@Conditional4、 --debug查看详细的自动配置报告1、SpringBoot在自动配置很多组件的时...

2019-10-22 18:16:03 220

原创 Spring Boot 配置

SpringBoot默认可使用两种形式的全局配置文件application.propertiesapplication.yml配置文件用于修改SpringBoot的默认配置,配置文件放在src/main/resources目录或者类路径/config下。.yml是YAML语言的文件,以数据为中心,比json、xml更适合做配置文件YAML语法:1、YAML基本语法使用缩进表示层级关系...

2019-10-22 18:13:19 107

原创 spring boot简单使用

Spring boot来简化Spring应用开发,约定大于配置,整个Spring技术栈的一个大整合,Spring boot是J2EE一站式解决方案,Spring Cloud是分布式整体解决方案。Spring boot优点:快速创建独立运行的Spring项目以及与主流框架集成使用嵌入式的Servlet容器,应用无需打成WAR包starters自动依赖于版本控制大量的自动配置,简化开发,也可...

2019-10-22 18:06:35 105

转载 Ubuntu 16.04 RabbitMq 安装

ubuntu下安装参照

2019-10-21 16:35:49 129

原创 config分布式配置中心

SpringCloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环境提供了一个中心化的外部配置。SpringCloud Config分为服务端和客户端两部分。服务端也称为分布式配置中心,它是一个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密/解密信息等访问接口。客户端则通过制定的配置中心来管理应用资源,以及业务相关...

2019-10-15 14:04:26 112

原创 Zuul网关

Zuul包含了队请求的路由和过滤两个最主要的功能其中路由功能负责将外部请求转发到具体的微服务实例上,是实现外部访问统一入口的基础,而过滤器功能则负责队请求的处理过程进行干预,是实现请求校验、服务聚合等功能的基础。Zuul和Eureka进行整合,将Zuul自身注册为Eureka服务治理下的应用,同时从Eureka中获得其他的微服务的消息,也即以后的访问微服务都是通过Zuul跳转后获得。代理+路由...

2019-10-15 14:02:02 111

原创 Hystrix断路由

服务雪崩:多个微服务之间调用的时候,架设微服务A调用微服务B和微服务C,微服务B和微服务C又调用其他的微服务,这就是所谓的“扇出”。如果扇出的链路上某个微服务的调用相应时间过长或者不可用,对微服务A的调用就会占用越来越多的系统资源,进而引起系统奔溃,即所谓的“雪崩效应”。对于高流量的应用来说,单一的后端依赖可能会导致所有服务器上的所有资源都在几秒钟内饱和。这些应用程序还可能导致服务之间的延迟增...

2019-10-15 13:56:43 213

原创 Feign客户端调用

Feign是一个声明式WebService客户端。使用Feign能让编写WebService客户端更加加单,它的使用方法是定义一个接口,然后在上面添加注解,同时也支持JAX-RS标准的注解。Feign也支持可插拔式的编码器和解码器。Spring Cloud对Feign进行了封装,使其支持了SpringMVC白哦准注解和HttpMessageConverters。Feign可以与Eureka和Rib...

2019-10-15 13:47:26 781

原创 Ribbon客户端负载均衡

Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具Ribbon初步配置1、在服务消费者(客户端)pom文件中引入Ribbon依赖,这里的客户端要与Eureka Client却别开,Eureka Client实际上是服务的提供者,相对于消费者而言是服务端。Ribbon与Eureka相关,所以需要将Eureka Client的依赖添加 <dependency&g...

2019-10-15 13:45:05 150

原创 Eureka集群

在本机做测试可以先做域名映射,方便区分127.0.0.1 eureka7001.com127.0.0.1 eureka7002.com127.0.0.1 eureka7003.com创建多个Eureka Serverpom文件与单机版无区别,主要在配置文件中server: port: 7001 #端口各自不相同 eureka: instance: hos...

2019-10-15 13:39:55 108

原创 Eureka服务注册与发现

Eureka是Netflix的一个子模块,也是核心模块之一。Eureka是一个基于REST的服务,用于定位服务,以实现云端中间层服务发现和故障转移。服务注册与发现对于微服务架构来说是非常重要的,有了服务发现与注册,只需要使用服务的标识符,就可以访问到服务,而不需要修改服务调用的配置文件。功能类似于dubbo的注册中心,如Zookeeper。Eureka采用了了CS的设计架构。Eureka Ser...

2019-10-14 21:48:06 119

原创 Spring事务管理

事务的四个关键属性:原子性(atomicity):事务是一个原子操作,由一系列动作组成,事务原子性确保动作要么全部完成要么完全不起作用。一致性(consistency):一旦所有事务动作完成,事务就被提交,数据和资源就处于满足业务规则的一致性状态中。隔离性(isolation):可能有许多事务会同时处理相同的数据因此每个事务都应该与其他事务隔离起来,防止数据损坏持久性(durability...

2019-10-14 21:36:41 86

原创 Spring AOP

为什么使用AOP?原始做法存在以下问题代码混乱:越来越多的非业务需求(日志和验证等)加入后,原有的业务方法急剧膨胀,每个方法在处理核心逻辑的同事还必须兼顾其他多个关注点。代码分散:以日志需求为例,只是为了满足这个单一的需求,就不得不在多个模块(方法)里多次重复相同的日志代码,如果日志需求发生变化,必须修改所有模块。使用动态代理可以实现上述需求,在代理类执行方法前后添加日志操作。AOP(面向...

2019-10-14 21:32:42 109

原创 基于注解配置Bean

基于注解配置Bean组件扫描,spring能够从classpath下自动扫描,侦测和实例化具有特定注解的组件,特定组件包括@Component:基本注解,标识了一个受Spring管理的组件@Respository:标识持久层组件@Service:标识服务层(业务逻辑层)组件@Controller:标识控制层对于扫描到的组件,Spring有默认的命名策略:使用非限定类名,第一个字母小写,...

2019-10-14 17:20:19 135

原创 基于XML配置Bean

IOC:其思想是反转资源获取的方向,传统的资源查找方式要求组件向容器发起请求查找资源,作为回应,容器适时的返回资源。而应用了IOC之后,则是容器主动的将资源推送给它所管理的组件,组件所要做的仅是选择一种合适的方式来接受资源,这种行为也被称为查找的被动形式。DI:IOC的另外一种表述方式,即组件以一些预先定义好的方式(例如:setter方法)接受来自容器的资源注入,相对于IOC而言,这种表述更直接...

2019-10-14 17:14:57 3012

转载 Martin Fowler关于microservices(微服务)的原文和翻译

翻译链接:http://blog.cuicc.com/blog/2015/07/22/microservices/#

2019-10-09 14:28:04 352

原创 异常处理

SpringMVC通过HandlerExceptionResolver处理程序的异常,包括Handler映射、数据绑定以及目标方法执行发生的异常。SpringMVC提供的HandlerExceptionResolver的实现类DispatcherServlet默认装配的HandlerExceptionResolver没有配置mvc:annotation-driven/配置了则在实际...

2019-10-08 16:11:56 77

原创 数据校验

JSR 303是针对bean数据校验提出的一个规范。使用注解方式实现数据校验。每个注解的用法这里就不多介绍,请移步JSR 303 - Bean Validation 介绍及最佳实践主流Bean Validation使用Hibernate的实现,本文使用hibernate-validator各个版本的规范对应关系如下:JSR 380 (Bean Validation 2.0)JSR 34...

2019-10-08 16:09:36 112

原创 数据绑定流程

1、SpringMVC主框架将ServletRequest对象及目标方法的入参实例传递给WebDataBinderFactory实例,以创建DataBinder实例对象。2、DataBinder调用装配在SpringMVC上下文中的ConversionService组件进行数据转换、数据格式化工作。将Servlet中的请求信息填充到入参对象中。3、调用Validator组件对已经banding...

2019-10-08 16:06:03 307

原创 视图解析器

视图和视图解析器请求处理方法执行完成之后,最终返回的是一个ModelAndView对象,对于那些返回String,View或者ModelMap等类型的处理方法,SpringMVC也会在内部将它们装配成一个ModelAndView对象,它包含了逻辑名和模型对象的视图。SpringMVC接触视图解析器(ViewResolver)得到最终的视图对象(View),最终的视图可以是JSP,也可能是EX...

2019-10-08 16:02:34 628

原创 拦截器

SpringMVC可以是用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor。preHandle:这个方法在业务处理器处理请求之前被调用,在该方法中对用户请求Request进行处理。如果程序员决定该拦截器对请求进行拦截处理后还要调用其他的拦截器,或者是业务处理器去处进行处理,则返回true,如果决定不需要再调用其他的组件去...

2019-10-08 15:58:47 101

原创 处理模型数据

SpringMVC提供了以下几种途径输出模型数据:ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据。Map及Model:入参为org.springframework.ui.Model、org.springframework.ui.ModelMap或java.util.map时,处理方法返回时,Map中的数据会自动添加到模型中。@Ses...

2019-10-08 15:56:15 863

原创 处理JSON

1、加入jar包,使用maven的话加入相应的依赖jackson-annotationsjackson-corejackson-databind2、编写目标方法,使其返回JSON对应的对象或集合。3、在方法上添加@ResponseBody注解HttpMessageConverter是Spring3.0新添加的一个接口,负责将请求信息转换为一个对象(类型为T),将对象类型为T输出为相应...

2019-10-08 15:52:56 116

原创 表单标签

<form:form action="/test" method="POST" modelAttribute="employee"></form:form>通过SpringMVC的表单标签可以实现将模型数据中的属性和HTML表单元素绑定,以实现表单数据更编辑编辑和表单值回显。需要在jsp页面中引入标签<%@ taglib prefix="form" uri=...

2019-10-08 15:49:43 144

原创 SpringMVC运行流程

1、加载DispatcherServlet,初始化相应的资源 protected void initStrategies(ApplicationContext context) { initMultipartResolver(context); initLocaleResolver(context); initThemeResolver(context); initHandler...

2019-10-08 15:19:55 84

原创 Spring MVC基本配置

Spring mvc 项目是Web项目,首先需配置web.xml,配置DispatcherServlet,需要在配置是指定SpringMVC的配置文件,在servlet下使用标签指定,如果没有指定,则默认在WEB-INF下面有SringMVC的配置文件,名字为servle名-servlet.xml。如果指定,则以指定配置文件为准。 //配置DispatcherServlet,使用默认的Spri...

2019-10-08 15:18:37 104

空空如也

空空如也

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

TA关注的人

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