设计模式学习笔记(4)构建者

本文实例代码:https://github.com/JamesZBL/java_design_patterns

构建者(Builder)模式通常用于将复杂对象的构造简化,将具体的构造过程与表示分离,使同样的构建过程可以创建不同的表示。使用多个简单的对象一步一步构建成一个复杂的对象,这种类型的设计模式属于创建型模式。建造模式可以将一个复杂对象的内部组成部分,与该对象本身的创建分离开来,从而使得复杂对象的组装更灵活。
继续阅读“设计模式学习笔记(4)构建者”

设计模式学习笔记(2)适配器

本文实例代码:https://github.com/JamesZBL/java_design_patterns

适配器(Adapter)模式用来将两个不同的接口进行适配,所以它是一种结构型的模式。适配器可以实现把一种接口进行转换,从而能够适应客户端的需求,所以它解决了两个类之间因为接口不匹配而无法工作的问题。适配器在日常生活中也很常见,比如 Micro-SD 卡需要一个转换器才在大多数的笔记本上存取数据,两脚插头需要转换器才能在只提供三脚插孔的插座上使用,Micro-USB 的数据线需要转换器才能在只具备 Type-C 的接口的设备之间传输数据等等…… 这些转换设备都属于适配器,它们都将一种接口转换成另一种接口,而使用者只需了解转换设备如何使用即可,无需关注其内部实现逻辑。

继续阅读“设计模式学习笔记(2)适配器”

Ubuntu Linux 中虚拟主机的配置 – 搭配 Nginx

虚拟主机,正如其名,就是将一台服务器划分为多个虚拟的主机,可以将每个域名分配给不同的虚拟主机,这样可以充分利用了域名资源和硬件资源。这次我们采用 Nginx 实现虚拟主机的配置。

Nginx 是一款 free、开源的高性能 HTTP 服务器和反向代理服务器,同时可用作 IMAP、POP3、SMTP 服务器,它经常被用作 HTTP 服务器进行 Web 应用的部署使用,另外,Nginx 还经常以反向代理服务器的身份实现负载均衡。
继续阅读“Ubuntu Linux 中虚拟主机的配置 – 搭配 Nginx”

Nginx 解决浏览器 Ajax 跨域问题

跨域是指 host 为 A 页面中的 Ajax 发起指向 host B 的请求,只要 A 和 B 的协议、域名、端口、子域名其中任何一项不同,则执行的访问都会被认为是跨域的请求,几乎所有的浏览器为了安全等问题,对跨域访问做了限制,也就是无法通过浏览器发起跨域请求。跨域问题的本质是浏览器的限制。但也并不意味着浏览器根本不能发出任何跨域请求,在发起跨域请求后,浏览器总会发送一个 OPTION 请求,并根据响应的 Header 中 Access-Control-Allow-Origin 参数值进行下一步操作,如果这个参数不存在或不符合当前的域,则拒绝这个跨域请求。解决这个问题的一个简单方法就是使用 Nginx 反向代理。
继续阅读“Nginx 解决浏览器 Ajax 跨域问题”

SpringMVC 解析之 DispatcherServlet

Spring MVC 是什么

Spring Web MVC (Spring MVC) 是一套以 Servlet API 为基础平台的优雅的 Web 框架,一直是 Spring Framework 中重要的一个组成部分。 正式名称 “Spring Web MVC” 来自其源模块 spring-webmvc 的名称,但它通常被称为“Spring MVC”。

与 Spring Web MVC 并行,Spring Framework 5.0 引入了一个 Reactive stack —— Web框架,其名称 Spring WebFlux 也基于它的源模块 spring-webflux。
继续阅读“SpringMVC 解析之 DispatcherServlet”

Spring MVC 中 @ModelAttribute 注解的妙用

Spring MVC 提供的这种基于注释的编程模型,极大的简化了 web 应用的开发。其中 @Controller@RestController 注解的组件使用 @RequestMapping@ExceptionHandler 等注解来表示请求映射,请求输入,异常处理等,使得开发者能专注于业务逻辑的编写,提高了开发效率。 带注释的控制器具有灵活的方法签名,不必扩展基类,也不需要实现特定的接口。
继续阅读“Spring MVC 中 @ModelAttribute 注解的妙用”