自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (1)
  • 收藏
  • 关注

原创 设计模式9,享元模式、组合模式、桥接模式

目录享元模式组合模式桥接模式享元模式提供了减少对象数量从而改善应用所需的对象结构的方式。运用共享技术有效的支持大量细粒度的对象。简单说就是减少创建对象的数量,减少内存的占用,提高性能。类型:结构型使用场景:常用于系统底层开发,以解决系统的性能问题。系统有大量相似对象,需要缓冲池的场景。优点:减少对象创建,降低内存中对象的数量,降低系统的内存,提高效率。减少内存之外其...

2020-02-29 21:49:39 351

原创 设计模式8,外观模式、装饰者模式、适配器模式

目录外观模式装饰者模式适配器模式外观模式外观模式提供了一个统一的接口,用来访问子系统中的一群接口。类型:结构型使用场景:当子系统越来越复杂的时候,增加外观模式可以提供简单调用接口。构建多层系统结构的时候,利用外观对象作为每层的入口,简化层间调用。优点:简化调用过程,无需深入了解子系统,防止带来风险。减少系统以来,松散耦合。更好的划分访问层次。符合迪米特法则。缺点...

2020-02-29 15:21:36 225

原创 设计模式7,单例模式(下)

目录基于容器的单例模式基于ThreadLocal的线程“单例”单例模式在代码中的应用基于容器的单例模式public class ContainerSingleton { private static Map<String , Object> singletonMap = new HashMap<>(); public static vo...

2020-02-28 18:03:50 117

原创 设计模式6,单例模式(中)

目录序列化和反序列化反射枚举单例接下来说一下破坏单例模式的办法和解决途径。序列化和反序列化public class Test { public static void main(String[] args) throws IOException, ClassNotFoundException { HungrySingleton instance =...

2020-02-28 17:30:31 158

原创 设计模式5,单例模式(上)

类型:使用场景:优点:缺点:例子:用到设计模式的源码:

2020-02-28 15:45:21 112

原创 设计模式4,建造者模式、原型模式

建造者模式将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。用户只需指定需要建造的类型,不需要知道建造过程及细节。建造者模式和工厂模式的区别在于,建造者模式在乎方法的调用顺序、可以创造各种不同的由不同的复杂部件组成的产品,工厂模式注重创建产品、创建出的产品都一个样子。总的来说就是,当一个对象创建需要很多步骤时,适合建造者模式,只需要一个简单的方法就可以创建的,用工厂...

2020-02-27 23:54:06 138

原创 设计模式3,简单工厂、普通工厂、抽象工厂

目录简单工厂模式工厂模式抽象工厂简单工厂模式由一个工厂对象决定创建出哪一种产品类的实例。工厂对象根据入参来决定返回哪一种对象。类型:创建型,但不属于GOF23种设计模式。简单工厂更像是一种编码风格或是习惯。使用场景:工厂类负责创建的对象比较少。客户端(应用层)只知道传入工厂类的参数,不关心创建对象的逻辑。优点:只需要传入一个正确的参数,就可以获取你所需要的对象,无须...

2020-02-27 18:23:33 250

原创 springboot系列24,SpringBoot的外部化配置(下)

扩展外部化配置要做到扩展外部化配置,我们通过之前分析可以知道,environment是放在上下文中使用的,那么肯定要在上下文初始化之前,因为上下文初始化以后,后面其他工具的初始化可能会用到environment,那在那个时候再初始化就没有意义了。首先是springboot,我们知道springboot的入口是run,进去看源码:通过之前的分析我们知道,上下文开始初始化是在refre...

2020-02-25 20:07:19 345

原创 springboot系列23,SpringBoot的外部化配置(上)

关于外部化配置其实不用多说,springboot太常见了,把内部配置转变成properties或是yml或是其他形式,更方便的进行配置和管理。关于运用场景关于外部化配置的运用其实都很常见,主要有: xml Bean定义的属性占位符 Spring关于xml外部化配置haozi-context.xml<?xml version="1.0" encoding="UTF-...

2020-02-24 21:49:21 688

原创 springboot系列22,WebFlux(下)

核心组件初始化流程其实看着源码对照着流程图,很容易就能看懂流程是什么样,这里只是描述一下,具体源码就不贴了,自己去看吧。首先上面部分:自动装配WebFluxAutoConfiguration,他import了EnableWebFluxConfiguration,这个类的作用就是把springboot配置的spring.webflux导进来,用于后面配置。这个类找父类可以找到WebFlu...

2020-02-24 00:38:50 344

原创 springboot系列21,WebFlux(上)

Spring WebFlux是一套全新的Reactive Web技术栈,实现完全非阻塞、支持Reactive Streams、背压等特性,而且运行的环境除了Servlet容器(Tomcat、Jetty、Undertow),还有Netty等。WebFlux可以和WebMVC共存,在springboot中,mvc的优先级更高。编程模型编程模型有两种,注解驱动和函数式编程WebFlux与We...

2020-02-22 18:19:05 1710

原创 springboot系列20,Reactive(下)

Reactor框架核心APIMono:0-1的非阻塞结果Flux:0-n的非阻塞序列Scheduler:Reactor调度线程池接下来:实战加依赖 <dependency> <groupId>io.projectreactor</groupId> <artifact...

2020-02-21 20:10:50 280

原创 springboot系列19,Reactive(上)

理解Reactive关于Reactive,非阻塞的实现,具体是什么,自己百度。Reactive实现框架RxJava:Reactive ExtensionsReactor:Spring WebFlux Reactive类库Flow API:java9 Flow API 实现对于现在大多数编程来说,都是阻塞式的,或者说是串行的,下面一行代码依赖上一行代码,上面执行完才会执行下面...

2020-02-21 18:21:41 1364

原创 springboot系列18,Servlet(4)

SpringBoot对于嵌入式Servlet容器之前一直是讲的Spring对servlet web的支持,接下来说springboot。关于嵌入式servlet容器,springboot默认使用的是tomcat,关于嵌入式容器和非嵌入式容器本质上是没有区别的,那在springboot环境下,做出了几个调整:不支持web.xml:使用RegistrationBean或@Bean不支持...

2020-02-20 16:19:22 210

原创 springboot系列17,Servlet(3)

自定义实现异步servlet/** * 异步servlet */@WebServlet( asyncSupported = true, //激活异步特性 name = "asyncServlet", //servlet名字 urlPatterns = "/asyncservlet" //映射)p...

2020-02-19 17:21:09 208 1

原创 springboot系列16,Servlet(2)

Servlet异步操作顾名思义:异步关于异步操作其实很简单,ResponseBody返回值需要使用DeferredResult,具体可以看DeferredResult的源码,这里不贴了。@ComponentScan(basePackages = "com.haozi.servlet.controller")public class DefaultAnnotationConfigDi...

2020-02-18 21:29:24 255

原创 springboot系列15,Servlet(1)

关于servlet的含义,搜索就能搜索出好多定义,主要是用来处理交互数据、生成数据、生成动态的web内容等。关于servlet组件注册方式:1.传统web.xml,2.注解注册,3.编码注册Servlet注册:1.web.xml部署<servlet>和<servlet-mapping>,2.@WebServlet,3.ServletContext#addServle...

2020-02-18 19:53:01 248

原创 springboot系列14,REST(下)

自定义参数返回也就是说不使用@ResponseBody来实现传出格式为Properties首先@RestController是组合注解,里面包含@ResponseBody,所以替换为@Controller/** * {@link java.util.Properties} {@link HandlerMethodReturnValueHandler} 实现 */public c...

2020-02-18 13:03:21 169

原创 springboot系列13,REST(中下)

关于媒体类型关于REST对于媒体类型的处理,主要是这两条语句,以及后面的匹配,具体含义见前文。第一行:经过ContentNegotiationManager中的`ContentNegotiationStrategy进行解析, 如果匹配成功,会返回MediaType列表,如果不成功,返回*/*,也就是MediaType.ALL第二行:这个地方可以从Controller中的@R...

2020-02-18 00:05:05 307

原创 springboot系列12,REST(中)

Spring MVC REST内容协商

2020-02-17 17:57:54 242

原创 springboot系列11,REST

REST定义:REST即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。架构约束:统一接口:有统一的资源管理C/S架构无状态:用户状态主要在客户端,服务端没有状态...

2020-02-15 16:33:33 338

原创 springboot系列10,MVC的视图应用(下)

多视图处理器并存此处是指Thymeleaf视图处理器和jsp视图处理器并存,之前已经配置好了Thymeleaf,接下来把jsp引入进来,其对应的处理器为InternalResourceViewResolver加依赖 <dependency> <groupId>javax.servlet</groupId> ...

2020-02-12 18:51:34 216

原创 springboot系列9,MVC的视图应用

新一代服务端模板引擎:Thymeleaf支持的模板类型:HTML、XML、TEXT、JS、CSS、RAW语法:<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"> <head> <title>Good Thymes Virtual Grocery...

2020-02-12 12:19:44 279

原创 springboot系列8,SpringBoot下的Spring MVC

在SpringBoot时代,规约大于配置,对于Spring MVC简化分为几点:完全自动装配:用户不再需要手动配置那么多实现接口条件装配:例如@xxxConditional外部化配置:不用多说了完全自动装配DispatcherServlet:DispatcherServletAutoConfiguration源码中,首先会根据条件生成一个servlet将上面生成...

2020-02-11 18:14:34 189

原创 springboot系列7,Spring MVC(下)

mvc的自动装配在SpringFramework时代mvc就可以进行自动装配了,但前提是servlet依赖是3.0+servlet SPI:ServletContainerInitializer当servlet容器启动的时候,ServletContainerInitializer中的onStartup方法会被回调,ServletContext中可动态装载监听器或过滤器或其...

2020-02-10 20:45:35 249

原创 springboot系列6,Spring MVC

注意:本章只是mvc,跟springboot没有关系再说MVC之前,先说一下web的基础架构:servlet,servlet属于非常底层的api,在开发过程中大多数使用http的形式去实现。servlet特点:请求/响应式(Request/Response)、屏蔽网络通讯的细节(使我们不需要关注通讯相关的东西,只关心请求参数请求头等我们需要的)、具有完整的生命周期servlet职责:处...

2020-02-09 20:20:36 120

原创 springboot系列5,SpringApplication运行阶段

对于SpringApplication准备阶段,实际上就是构造对象阶段,而运行阶段,就是.run。对于运行阶段的运行流程:1.加载SpringApplication运行监听器(SpringApplicationRunListeners)利用spring工厂加载机制,读取SpringApplicationRunListener对象集合,并封装到组合类SpringApplicationRu...

2020-02-09 16:27:31 295

原创 springboot系列4,SpringApplication准备阶段

关于SpringBoot,大致可分为基础技术和衍生技术。基础技术主要是关于SpringFramework的,那SpringFramework中,我们可大致分为几块:Spring 模式注解:例如@Service、@Component等,详情见之前文章。Spring 应用上下文:无需多解释,核心组件,用来装配bean、相应的生命周期。Spring 工厂加载机制:之前文章自动装配。S...

2020-02-08 17:37:50 373

原创 springboot系列3,自动装配

定义:基于规约大于配置的原则,实现Spring组件自动装配的目的。对于手动装配,不管是xml或是注解都需要配,就算有enable模块可以简化配置配置,但是还是要按照需要手动配,自动装配可实现插拔式方法。装配方式:模式注解、@Enable模块、条件装配、工厂加载机制实现方式:1.激活自动化装配使用注解@EnableAutoConfiguration2.实现自动化装配XXXAu...

2020-02-08 14:39:14 157

原创 四、spring cloud alibaba学习(RocketMQ)

假如有一个文章审核,通过后加积分的需求,审核是这个方法的主体,而加积分并不需要实时同步,这时,我们就可以将加积分的功能变为异步执行。Spring实现异步的方法1.AsyncRestTemplatehttps://blog.csdn.net/jiangchao858/article/details/867097502.@Async注解https://spring.io/gu...

2020-02-07 20:30:00 1217

原创 三、spring cloud alibaba学习(Sentinel)

雪崩效应也叫级联故障,基础服务故障导致上层服务故障,并不断放大的过程。例如C-->B-->A,A挂了,B调用A超时,B的线程有限,满了以后导致B也挂了,逐渐导致C及后面的也挂了,就像滚雪球一样,最终可能导致整个服务都挂了。常见容错方案超时设置比较短的超时时间,比如给B服务设置1秒的超时时间,1秒以后不管调用成不成功,线程都会被释放。限流比如服务B最大限...

2020-02-07 20:29:42 624

原创 二、spring cloud alibaba学习(Feign)

Feign是开源的声明式http客户端,简化restTemplate调用时url难以维护,代码不可读等问题。只要声明一个接口,feign就会自动构造一个请求的地址并请求feign也具有负载均衡,通过整合ribbon实现,所以之前ribbon配置在这依然可用。加依赖<dependency> <groupId>org.springframework...

2020-02-07 20:29:40 323

原创 一、spring cloud alibaba学习(nacos,ribbon)

对比Nacos服务发现组建,也是配置服务器用来解决服务a如何找到服务b、并且管理微服务下载应用程序,并打开,以启动Nacos Server加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-clou...

2020-02-07 20:29:25 1411

go-ipfs_v0.9.0_linux-amd64.tar.gz

go-ipfs_v0.9.0_linux-amd64.tar.gz

2021-08-03

空空如也

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

TA关注的人

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