- 博客(49)
- 收藏
- 关注
原创 Elasticsearch 简介和实战
文章目录关于 ElasticsearchElasticsearch 安装Kibana 安装基本概念全文搜索(full-text search)集群、节点(cluster & node)索引(index)类型(mapping type)文档(document)映射、字段(mapping & field)快速入门最近项目要用到全文搜索,需要有中文、拼音检索以及混合搜索以及数据聚合功能...
2020-04-15 09:58:57
925
原创 Redis 的高可用,哨兵机制 Sentinel
文章目录哨兵机制什么是哨兵机制故障判定搭建哨兵实例准备启动查看主机状态故障转移上一篇聊了Redis的主从复制以及实现原理,下面会在复制的基础上来说说Redis的高可用方案:哨兵机制哨兵机制什么是哨兵机制在主从复制的模式下,主服务器宕机后,从服务器是不能自动转为主服务器的,只能手动进行故障转移而哨兵机制(Sentinel)就是Redis的高可用解决方案,由一个或多个Sentinel实例组成...
2019-10-30 19:51:16
909
原创 如何优雅的做数据校验-Hibernate Validator详细使用说明
文章目录Hibernate Validator的使用依赖bean约束声明和验证,Validator方法约束声明和验证,ExecutableValidator约束注解空与非空检查Boolean值检查日期检查数值检查其他hibernate-validator扩展约束(部分)自定义约束注解分组约束在Spring中使用Hibernate Validator配置Validator请求参数bean验证方法参数...
2019-10-23 11:54:49
2479
原创 Redis主从复制的配置和实现原理
文章目录什么是主从复制主从复制的配置主从复制的实现原理建立连接数据同步完整重同步部分重同步命令传播关闭持久化时,复制的安全性Redis的持久化功能在一定程度上保证了数据的安全性,即便是服务器宕机的情况下,也可以保证数据的丢失非常少。通常,为了避免服务的单点故障,会把数据复制到多个副本放在不同的服务器上,且这些拥有数据副本的服务器可以用于处理客户端的读请求,扩展整体的性能下面会介绍Redis的主...
2019-09-17 17:50:18
437
原创 Redis 持久化机制 RDB 和 AOF
文章目录Redis数据持久化RDB快照持久化快照持久化save和bgsave命令自动间隔触发AOF持久化AOF的实现命令追加(append)文件写入(write)和文件同步(sync)AOF重写(rewrite)数据恢复RDB vs AOFRDB和AOF优缺点如何选择RDB和AOFRedis数据持久化Redis作为一个内存数据库,数据是以内存为载体存储的,那么一旦Redis服务器进程退出,服务...
2019-09-10 17:39:19
138
原创 深入了解 Redis 底层数据结构
文章目录说明简单动态字符串(SDS)SDS的定义SDS与C字符串的区别链表链表节点和链表的定义链表特性字典字典的定义实现跳跃表跳跃表的定义跳跃表的实现整数集合整数集合的定义实现整数集合的升级压缩列表压缩列表的构成压缩列表节点的构成对象说明说到Redis的数据结构,我们大概会很快想到Redis的5种常见数据结构:字符串(String)、列表(List)、散列(Hash)、集合(Set)、有序集合...
2019-09-06 11:33:37
1183
原创 装饰模式-为类动态添加职责
文章目录装饰模式定义模式结构代码实现装饰模式的优缺点和使用场景为什么选择装饰模式而不是继承装饰模式定义装饰模式(Decorator Pattern)- 动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式相比生成子类更为灵活装饰模式也可以叫做包装器(Wrapper),可以给一个类或对象增加行为通常有两种方式来给类或对象来增加行为:继承机制:通过继承一个现有的类可以使得子类在...
2019-08-31 11:22:02
216
原创 适配器模式-通过适配器来复用
文章目录适配器模式定义适配器模式结构优点和使用场景实例适配器模式应用适配器模式是一种结构型设计模式,适配器模式主要是来解决接口不兼容的问题,使得原本没有关系的类可以协同工作。就好像我们笔记本电脑的电源适配器,在电压110v-220v之间都是可以正常工作的(那么大一坨),这适配器的工作就是把外部不稳定的电压转化成笔记本电脑能稳定使用的直流电压适配器模式定义适配器模式(Adapter Pat...
2019-08-14 18:04:07
188
原创 模板方法模式-封装不变,扩展可变
文章目录介绍定义模板方法结构优点以应用场景实例统计操作时间模板方法模式是一种行为型设计模式,它比较简单,我们平时的编程中可能就经常用到了它介绍定义模板方法模式(Template Method Pattern)- 定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤简单来说,就是把可变的部分(方法)放在子类中实现,把不可变...
2019-08-13 08:42:33
165
原创 Redis介绍、安装以及数据结构(操作命令)
文章目录Redis介绍什么是RedisRedis应用场景Redis安装启动(单机)Linux下安装启动安装命令说明启动命令行客户端Windows安装Redis数据结构字符串(String)命令使用场景散列(Hash)命令String和Hash的区别使用场景列表(List)命令使用场景集合(Set)命令使用场景有序集合(Sorted Set,zset)SortedSet和List的区别命令使用场景通...
2019-08-11 19:51:58
120
原创 建造者模式-一步步组装复杂的对象
文章目录介绍定义适用场景建造者模式角色及类图工厂模式和建造者模式的区别实例简单实例模板方法模式扩展介绍定义建造者模式是一种创建型模式,它的定义如下建造者模式(Builder Pattern) - 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具...
2019-08-10 09:53:18
331
原创 原型模式-通过克隆创建对象
文章目录介绍原型模式类图原型模式实现浅复制和深复制使用序列化实现深复制介绍原型模式:Specify the kinds of objects to create using a prototypical instance,and create new objects bycopying this prototype.(用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象)原...
2019-08-08 17:33:15
129
原创 工厂模式-简单工厂模式、工厂方法模式、抽象工厂模式
文章目录工厂模式简单工厂模式介绍简单工厂类图代码实例反射机制改良简单工厂工厂方法模式介绍工厂方法类图代码示例抽象工厂模式介绍抽象工厂类图代码示例总结工厂模式工厂模式是一种比较常见的创建型设计模式,分为简单工厂模式、工厂方法模式、抽象工厂模式工厂模式旨在把对象的创建和使用分离开来,把创建对象的职责交给工厂类,这样会有哪些好处?解耦:对象的创建和使用分离减少代码重复、创建蔓延,降低维...
2019-08-08 10:20:28
186
原创 单例模式-只有一个实例
文章目录介绍单例模式实现饿汉式懒汉式双重校验锁(DCL)静态内部类枚举方式介绍单例模式(Singleton Pattern)是一个比较简单的设计模式,属于创建型模式。其定义为确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例在系统中,单例模式要求一个单例对象只能有一个实例,这类对象如果有多个实例就可能会产生一些问题,如:资源消耗过多,处理结果不一致等,一般单例会有以下使用...
2019-08-02 15:29:23
644
原创 设计模式-面向对象设计原则
文章目录面对对象设计原则设计原则开闭原则单一职责原则里式替换原则依赖倒转原则接口分离原则合成复用原则迪米特原则总结23种设计模式设计模式(Design Pattern)是前辈们在代码实践中所总结的经验,是解决某些特定问题的套路。在使用一些优秀的框架时,可能会接触到它里面所运用到的一些设计模式,又或许你在编码去设计一些模块时,为了提高代码可复用性、扩展性、可读性等,运用到的一些设计理念也会与某些设...
2019-07-31 11:23:08
192
原创 Swagger使用和注解介绍
介绍什么是SwaggerSwagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。作用接口文档在线自动生成功能测试Swagger是一组开源项目,其中主要要项目如下:Swagger-tools:提供各...
2019-07-12 18:46:10
583
原创 Spring Cloud 服务消费(Ribbon)
文章目录准备Ribbon 实现负载均衡Ribbon 简介RestTemplate 作为负载均衡客户端LoadBalancerClient自定义 Ribbon 客户端代码自定义 Ribbon 客户端为所有Ribbon客户端自定义默认值属性自定义 Ribbon 客户端之前介绍了使用 Eureka 作为服务发现组件,构建了 Eureka Server 作为服务注册中心,使用 Eureka Client...
2019-06-19 16:49:57
195
原创 Spring Cloud Config 统一配置中心
文章目录一、统一配置中心统一管理配置Spring Cloud Config 配置中心二、使用创建 Config Server配置 Config ClientSpring Cloud Config 统一配置中心一、统一配置中心统一管理配置通常,我们会使用配置文件来管理应用的配置。如一个 Spring Boot 的应用,可以将配置信息放在 application.yml 文件中,如果需要多环境...
2019-06-19 16:49:42
176
原创 Spring Cloud 断路器 Hystrix
文章目录Hystrix 简介Ribbon 中整合 HystrixFeign 使用 Hystrix为 Feign 添加回退通过 fallbackFactory 检查回退原因在微服务架构中,通常存在多个服务调用层。微服务之间通过网络进行通信,从而支撑起整个应用,为了保证高可用,单个服务通常也会集群部署。但由于网络原因或者自身原因,服务并不能保证100% 可用。而服务间的依赖关系,会导致故障传播,即服...
2019-06-19 16:48:53
161
原创 Spring Cloud Zuul 过滤器
文章目录过滤器过滤器类型和生命周期Spring Cloud Zuul 的过滤器自定义过滤器过滤器管理端点Spring Cloud Zuul 除了可以实现请求的路由功能,还有一个重要的功能就是过滤器。Zuul 的路由功能让所有的微服务提供的接口有统一的网关入口,但并不是所有的接口都是对外完全开发的,它们的访问权限一般都有一定的限制。那我们可以在每个服务都加上对应的校验和权限鉴定,那这些通常都是用过...
2019-06-19 16:48:11
210
原创 Spring Data JPA 使用
Java 持久层框架访问数据库的方式大致分为两种。一种以 SQL 中心,封装一定程度的 JDBC 操作,比如 MyBatis。另一种是以 Java Entity 为中心,将实体的关系对应到数据库表之间的关系,如 ORM (Object Relational Mapping) 工具。JAP (Java Persistence API) 就是用来整合第三方 ORM 框架的,即建立一套标准的方式。通过...
2019-06-13 19:45:34
199
原创 Spring Cloud Zuul 构建微服务网关
为什么要有服务网关?在使用微服务架构时,一个客户端的业务需求可能会调用多个服务的接口,例如一次购物,需要调用商品服务,下单的时候要调用订单服务(服务划分更细的话还要调用更多的微服务)。客户端直接跟各个服务通信会有一些问题或者说弊端,客户端的调用会复杂,更重要的是会有跨域请求问题和复杂的权限控制认证为了对外服务的安全性,不得不在原有的服务接口上做校验逻辑,而这些权限相关的逻辑应该要把它从各个服务中...
2019-05-10 13:00:24
124
原创 Spring Cloud 服务消费(Feign)
在使用 RestTemplate 实现 Rest API 调用的时候,是通过拼接字符串的方式构造 URL,向具体服务实例发起 Http 请求。在定义 RestTemplate 的时候,还可以增加 @LoadBalanced 注解,在调用服务接口的时候,原来 host 部分是通过手动拼接ip和端口的,现在直接用 服务名 来写请求路径。在真正调用的时候,Spring Cloud 会将请求拦截下来,然后...
2019-05-05 17:49:50
247
原创 Spring Cloud 服务注册与发现、高可用(Eureka)
文章目录一、服务发现1.1 服务发现1.2 Eureka 简介二、服务注册中心 Eureka Server三、注册服务四、Eureka 的高可用Spring Cloud 服务注册与发现、高可用(Eureka)一、服务发现1.1 服务发现在微服务架构中,服务发现组件是很关键的一个组件,服务发现组件就是去管理各服务的网络地址等信息服务提供者、服务消费者、服务发现组件的关系服务启动时,会将...
2019-04-17 18:01:37
288
原创 Git 详细介绍和使用
Git 详细介绍和使用一、介绍git /gɪt/ 是一个开源的分布式版本控制系统最初是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件1.1 版本控制版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。可以对任何类型的文件进行版本控制,便于不同的开发者协同工作集中式版本控制集中化的版本控制系统是为了让不同系...
2019-04-04 17:42:06
635
原创 Docker 入门实践
Docker 入门实践一、Docker 是什么Docker 容器标准化的软件单元Docker 是开发人员或系统管理员使用容器 开发,部署和运行 应用程序的平台。使用Linux容器部署应用程序称为容器化容器化越来越受欢迎,因为容器是:灵活:即使是最复杂的应用也可以集装箱化。轻量级:容器利用并共享主机内核。可互换:您可以即时部署更新和升级。便携式:您可以在本地构建,部署到云,并在任...
2019-04-02 18:01:18
165
原创 linux 使用文件增加虚拟内存 swap
之前买了个云服务器玩,不过是最低配置的1核1G,后来发现这个内存太小了,随便装几个软件就不行了,内存消耗较大的像 redis 运行起来很多问题。这些时间了解了下 docker 容器,去尝试了下发现 mysql 就挂了,而且怎么样也启动不了了,后来发现是内存实在是不够了后来网上了解,如果服务器的总是报告内存不足,并且时常因为内存不足而引发服务被强制kill的话,在不增加物理内存的情况下,启用sw...
2019-03-25 09:30:36
2594
2
转载 Spring编程式和声明式事务实例讲解
Java面试通关手册(Java学习指南):github.com/Snailclimb/…历史回顾: 可能是最漂亮的Spring事务管理详解Spring事务管理Spring支持两种方式的事务管理:编程式事务管理: 通过Transaction Template手动管理事务,实际应用中很少使用,使用XML配置声明式事务: 推荐使用(代码侵入性最小),实际是通过AOP实现实现声明式事...
2019-03-08 16:25:11
150
转载 可能是最漂亮的 Spring 事务管理详解
Java面试通关手册(Java学习指南):github.com/Snailclimb/…微信阅读地址链接:可能是最漂亮的Spring事务管理详解事务概念回顾什么是事务?事务是逻辑上的一组操作,要么都执行,要么都不执行.事物的特性(ACID):原子性: 事务是最小的执行单位,不允许分割。事务的原子性确保动作要么全部完成,要么完全不起作用;一致性: 执行事务前后,数据保持一致...
2019-03-08 16:21:16
137
原创 Spring Boot 多环境配置
Spring Boot 多环境配置通常,在我们应用开发中,需要多个环境配置,一般是开发、测试、生产,有的还有演示环境。这些环境有不同的配置需求:服务的端口、ip地址数据库的信息、连接池等日志配置、日志级别第三方系统访问配置Spring Boot 简化了配置,属性配置都放在了 application.properties 中,除 application.properties 文件外,...
2019-03-08 14:54:02
120
原创 Spring Boot 的生产级特性--Actuator监控端点
Spring Boot 生产级的特性Spring Boot 有许多开箱即用的模块或者说插件,其中 spring-boot-actuator 提供了大量的生产级的特性。添加 spring-boot-starter-actuator 的 maven 依赖:<dependency> <groupId>org.springframework.boot</group...
2019-02-28 17:56:03
419
原创 Java 注解
Java 注解Java 注解其实大家不陌生,使用 spring、mybatis 这样的框架时,会有许多的注解,那注解到底是什么?java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。注解不会也不能影响代码的实际逻辑,仅仅起到辅助性的作用注解 (annotation) 是在实际的源代码级别保存所有的信息,而不是某种注释性的文字 (comment...
2019-02-28 15:15:20
105
原创 spring mvc 异常处理机制和统一异常处理
一、异常处理机制Spring MVC 是通过 HandlerExceptionResolver 处理程序的异常,包括请求映射、数据绑定以及处理器执行时发生的异常1、HandlerExceptionResolverHandlerExceptionResolver 只有一个接口方法public interface HandlerExceptionResolver { ModelAnd...
2019-02-21 17:07:28
404
原创 Spring Mvc 视图解析
Spring Mvc 视图解析在 Spring Mvc 中,我们自己编写的控制器方法(Controller) 并没有直接去渲染结果,使用 response 去输出到浏览器。方法返回的是 ModelAndView,甚至只是一个 String 类型的视图名,那 Spring Mvc 是怎么把模型数据填充到视图的呢?如果控制器能通过逻辑视图名来了解视图的话,那Spring Mvc 如何确定使用哪一个...
2019-02-20 16:00:40
741
原创 Spring Boot 快速入门
简介Spring Boot 简化了 Spring 应用的配置和开发,它管理着 Spring 容器和第三方插件,并提供很多默认系统级的服务,这样我们只要少量的配置和代码就能完成大部分 Spring 应用。快速入门完成一个简单的 web 应用,实现一个简单的 Http 请求处理,通过这个例子对 Spring Boot 有一个初步的了解,并体验其结构简单、开发快速的特性创建 Maven 工程使...
2019-02-14 17:32:15
129
原创 spring mvc 使用
spring mvc 是基于 Servlet API 构建的 Web 框架,围绕一个 DispatcherServlet 设计的,这个 Servlet 将请求分发给各个处理器,支持可配置的处理器映射、视图渲染、地区、时区和主题解析,以及对文件上传。默认处理程序基 于@Controller 和 @RequestMapping 注释,Spring为处理器方法提供了极其多样灵活的配置。Spring 3....
2019-01-29 09:17:29
182
原创 使用 MyBatis-Plus 代码生成器
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生MyBatis-Plus 的目的是增强 MyBatis 的功能和操作,内置代码生成器可以为我们减少不少的工作量了,这里主要介绍 MyBatis-Plus 代码生成器的使用代码生成器也是称作 MyBatis 的逆向工程,主要是用来生成 model、map...
2019-01-22 15:12:40
1242
原创 Java 发送邮件实现(JavaMail 和 Spring 实现)
Java 实现邮件的发送,使用 JavaMail 和 Spring 实现一、使用 JavaMailJavaMail 是 Java 处理电子邮件相关的编程接口,但是没有被加在标准的Java开发工具包中(Java Development Kit),所以我们使用 JavaMail 需要另外下载依赖包javax.mail.jar包实现了 SMTP、IMAP 和 POP3 协议&lt;depende...
2019-01-17 15:20:31
7538
原创 Java Lambda 表达式使用
Java8 引入了 Lambda 表达式,使用 Lambda 表达式可以让代码更加简洁。Lambda 表达式其实也就是一个匿名函数,我们可以用它去代替匿名函数,我们先来看一个例子1、Lambda 表达式语法我们用接口 Runnable 举个例子public static void main(String[] args) { // 匿名函数 new Threa...
2019-01-15 17:29:22
169
原创 使用 Maven 运行 Mybatis-Generator
使用 MyBatis 的时候,我们要花大量的时间在写mapper映射文件的sql。MyBatis Generator 是 MyBatis 的代码生成器,可以帮我们去生成 Model、Dao、Mapper 和映射的 sql,节省不少时间这里介绍使用 maven 插件方式去使用 MyBatis Generator1、首先先 pom.xml 添加 mybatis-generator 插件配置<...
2019-01-14 16:58:37
4448
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人