自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (2)
  • 收藏
  • 关注

原创 Docker 中 JVM 内存占用问题

一、问题描述最近在使用Docker Compose 编排 Spring Boot 应用的时候为了避免应用占用过大内存,为其做了内存限制,结果在应用运行时超过了这个限制,container 被docker killed。#docker compose编排微服务脚本version: "2"services: # 指定服务名称 ibaseEureka: image: 192.16...

2018-12-13 22:55:29 5778

原创 Spring Cloud Zuul 中 ribbon 和 hystrix 配置说明

本篇主要讲解一下Spring Cloud 中 Zuul 组件的Ribbon和Hystrix的配置。Ribbon:负载均衡,是针对服务的多实例负载均衡的配置Hystrix:熔断器,当zuul网关调用具体的业务的时候可能受到网络,代码执行时间等影响长时间无响应,这个时候就需要配置hystrix,避免线程长时间占用内存,造成内存泄露,服务挂掉Ribbon 配置通过查阅官方文档,我找到了配置方...

2018-12-03 21:26:17 5959

原创 Spring Cloud Config 多服务公共配置

一、问题描述使用Spring Cloud Config作为配置中心,其它服务均从配置中心获取配置信息。有这样一个场景,如果多个服务的配置存在公共配置(例如数据库连接配置等),那么可不可以只在公共的文件中配置就可以呢?是可以的,下面提供两种解决方案。涉及到的服务如下:服务名端口号说明eureka8080服务注册中心config8090配置中心servi...

2018-11-16 18:34:53 2774 1

原创 Spring Boot 集成 Druid

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

2020-01-22 17:06:33 372

原创 Spring Boot 集成 MapStruct 实现类型转换

MapStruct 是一个属性映射工具,只需要定义一个 Mapper 接口,MapStruct就会自动实现这个映射接口,避免了复杂繁琐的映射实现。MapStruct官网地址: http://mapstruct.org/

2019-12-12 18:02:14 2428

原创 Spring Boot 集成 swagger2

Swagger2可以轻松的整合到SpringBoot中,并与SpringMVC程序配合组织出强大RESTful API文档。它既可以减少我们创建文档的工作量,也可以让我们在修改代码逻辑的同时修改文档说明。此外Swagger2也提供了强大的页面测试功能来调试每个RESTful API

2019-12-12 16:20:15 627 1

原创 Spring Boot 参数校验

spring boot 实现参数校验,包括自定义规则校验,分组校验,全局异常处理等

2019-12-10 15:29:57 943

原创 前端文件下载方案汇总

前端文件下载方案汇总

2019-12-06 14:54:07 458

原创 Spring Boot 整合 H2 数据库

一、H2简介H2数据库特点:H2数据库是一个开源的关系型数据库。H2是一个嵌入式数据库引擎,采用java语言编写,不受平台的限制,同时支持网络版和嵌入式版本,有比较好的兼容性,支持相当标准的sql标准,支持集群提供JDBC、ODBC访问接口,提供了非常友好的基于web的数据库管理界面二、JAVA中使用H2数据库以嵌入式(本地)连接方式连接H2数据库这种连接方式默认情况下只允许...

2019-07-15 11:39:48 1517

原创 Spring Boot 错误页配置和全局异常处理

一、错误页配置1.1 错误页控制器package com.siniswift.efb.acars.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;/** * 错误页控制器 * * @a...

2019-07-12 16:08:03 1107

原创 FtpClient工具类

1、maven依赖 <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>${commons.l...

2019-07-03 21:00:02 28950 3

原创 改善 Java 程序的151个建议之性能与开源工具

一、提升Java性能的基本方法1.不要在循环条件中计算如果在循环条件中计算,则每循环一次就要遍历一次,这会降低系统的效率,例如如下代码:while(i < count*2){ //do something}应该修改为int total = count * 2;while(i < count){ //do something2.尽可能把变量、方法声明...

2019-05-16 16:39:05 296

原创 改善 Java 程序的151个建议之泛型和反射

1.Java泛型是类型擦除的Java的泛型在编译期有效,在运行期被删除,也就是说所有的泛型参数类型在编译后都会被清除掉。public class Foo{//listMethod接收数组参数并进行重载 public void arrayMethod(String[] strArray){ } public void arrayMethod(Integer[] strA...

2019-05-13 11:19:54 183

原创 改善 Java 程序的151个建议之数组和集合(三)

1. 使用shuffle打乱列表在网站上我们经常看到关键字云和标签云等,用于表明这个关键字或标签经常被查阅。我使用swap实现: public static void main(String[] arg) { int tagCloudNum = 10; List<String> tagfClouds = new ArrayList<>(tagClou...

2019-04-20 12:33:10 178

原创 改善 Java 程序的151个建议之数组和集合(二)

1.推荐使用subList处理局部列表需求:一个列表100个元素,现在要删除索引位置为20-30的元素,如果使用循环,代码如下:public static void main(String[] arg){ //初始化一个固定长度不可变列表 List<Integer> initData = Collections.nCopies(100,0); //转化为可变...

2019-04-14 12:36:45 172

原创 改善 Java 程序的151个建议之数组和集合(一)

1. 警惕数组的浅拷贝 public static void main(String[] arg){ Balloon [] a = new Balloon[5]; for(int i = 0;i < 5; i++){ a[i] = new Balloon(i,Color.values()[i]); a[i]...

2019-04-08 21:40:58 199

原创 改善 Java 程序的151个建议之字符串

推荐使用String直接量赋值Java系统中为了避免在一个系统中大量产生String对象,设计了字符串池(也叫字符串常量池)。它的创建机制为:创建一个字符串时,首先检查池中是否有字面值相等的字符串,如果有则不再创建直接返回池中对象的引用,如果没有则创建,放在池中并返回新建对象的引用。String str1 = "中国";//String PoolString str2 = "中国";//S...

2019-04-02 22:02:33 178

原创 Java 泛型

一、概述1.1 什么是Java泛型Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。那么参数化类型怎么理解呢?就是将类型由原来的具体的类型参数化,类似...

2019-01-15 20:28:55 255

原创 消息中间件-RabbitMQ

一、简介1.1 什么是AMQPAMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递消息,并不受客户端/中间件同产品,不同的开发语言等条件的限制。AMQP的主要特征是面向消息、队列、路由(包括点对点和发布/订阅)、可靠性、安全。1.2 什么是RabbitMQR...

2018-12-20 22:00:43 330

原创 消息中间件-ActiveMQ

一、简介1.1 什么是 JMSJMS 即 Java 消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java 消息服务是一个与具体平台无关的 API,绝大多数MOM提供商都对JMS提供支持。1.2 什么是 ActiveMQActiveMQ 是由 Apa...

2018-12-12 23:20:21 457

原创 MongoDB 集群模式-分片

MongoDB的集群模式有三种:主从(Master-Slaver),MongoDB 3.6彻底废弃副本集(Replica Set)分片(Sharding)本章主要讲述分片(Sharding))。一、分片介绍1.1 什么是分片分片是指将数据拆分,将其分散存放在不同的机器上的过程。有时也用分区来表示这个概念。将数据分散在不同的机器上,不需要功能强大的大型计算机就可以存储更多的数据,处...

2018-12-11 09:27:03 618

原创 MongoDB 集群模式-副本集

MongoDB的集群模式有三种:主从(Master-Slaver),MongoDB 3.6彻底废弃副本集(Replica Set)分片(Sharding)本章主要讲述副本集(Replica Set)。一、副本集介绍1.1 什么是副本集MongoDB 副本集是将数据同步在多个服务器的过程,复制提供了数据的冗余备份,并在多个服务器上存储数据副本,提高了数据的可用性, 并可以保证数据的...

2018-12-08 08:11:38 421

原创 MongoDB MapReduce 聚合操作

MongoDB的聚合操作主要是对数据的批量处理。一般都是将记录按条件分组之后进行一系列求最大值,最小值,平均值的简单操作,也可以对记录进行数据统计,数据挖掘的复杂操作。聚合操作的输入是集中的文档,输出可以是一个文档也可以是多个文档。MongoDB 提供了三种强大的聚合操作:单目的聚合操作(Single Purpose Aggregation Operation)聚合管道(Aggregati...

2018-12-08 08:06:36 964

原创 MongoDB 聚合管道

MongoDB的聚合操作主要是对数据的批量处理。一般都是将记录按条件分组之后进行一系列求最大值,最小值,平均值的简单操作,也可以对记录进行数据统计,数据挖掘的复杂操作。聚合操作的输入是集中的文档,输出可以是一个文档也可以是多个文档。MongoDB 提供了三种强大的聚合操作:单目的聚合操作(Single Purpose Aggregation Operation)聚合管道(Aggregati...

2018-12-07 09:23:44 458

原创 MongoDB 基础知识

一、简介MongoDB 是一个基于分布式 文件存储的NoSQL数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。关系型数据库(SQLite、Oracle、mysql)特点关系模型指的是二维表格模型通用的SQL语言是的操作关系型数据库非常方便...

2018-12-01 16:11:35 518

原创 Spring Boot 2.0 整合 Redis(Lettuce)

【Redis 系列】 Redis 数据类型【Redis 系列】 Redis 数据命令【Redis 系列】 Redis 发布订阅与事物一、前言在前面的几篇文章中简单的总结了一下Redis相关的知识。本章主要讲解一下 Spring Boot 2.0 整合 Redis。Jedis 和 Lettuce 是 Java 操作 Redis 的客户端。在 Spring Boot 1.x 版本默认使用的是...

2018-11-28 23:26:21 2847

原创 Redis 发布订阅与事物

一、Redis的发布和订阅Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息Redis 客户端可以订阅任意数量的频道Redis的发布订阅机制包括三个部分,发布者,订阅者和Channel发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息...

2018-11-27 14:40:01 387

原创 Redis命令

1. Redis 键基本命令Redis 键命令用于管理 redis 的键。语法Redis 键命令的基本语法如下:127.0.0.1:6379&gt; COMMAND KEY_NAME命令下表列出了常用的 redis keys命令:序号命令描述1DEL key该命令用于在 key 存在时删除 key2DUMP key序列化给定 key ,并返回被序列...

2018-11-26 17:43:46 270

原创 Redis 数据类型

一、简介Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。1.1 特点Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。...

2018-11-26 15:58:02 311

原创 Spring security oauth2-客户端模式,简化模式,密码模式(Finchley版本)

一、客户端模式原理解析(来自理解OAuth 2.0)客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是以用户的名义,向&quot;服务提供商&quot;进行认证。严格地说,客户端模式并不属于OAuth框架所要解决的问题。在这种模式中,用户直接向客户端注册,客户端以自己的名义要求&quot;服务提供商&quot;提供服务,其实不存在授权问题。具体步骤:(A) 客户端向认证服务器进行身份认证...

2018-11-22 08:10:04 6148

原创 Spring Boot 2.0 整合 Mybatis

Spring Boot 2.0 整合 Mybatis分为两种模式。一种是XML配置,一种是注解。一、XML配置方式整合1.1 依赖文件&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&amp;gt;&amp;lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot; xmlns:xsi

2018-11-20 09:13:06 616

原创 JWT详解

一、什么是JWTJWT(JSON Web Token) 是一个开放标准(RFC 7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。二、使用场景(来自理解JWT的使用场景和优劣)一次性验证:比如用户注册后需要发一封邮件让其激活账户,通常邮件中需要有一个链接,这个链接需要具备以下的特性:能够标识用户,该链接...

2018-11-16 09:11:28 552 1

原创 Spring Security OAuth2实现使用JWT

在Spring Security Oauth2-授权码模式(Finchley版本)一文中介绍了OAuth2的授权码模式的实现,本文将在这篇文章的基础上使用JWT生成token。一、准备工作下载代码大家可以在github上下载Spring Security Oauth2-授权码模式(Finchley版本)的源码。添加JWT依赖授权服务和资源服务是两个分开的服务,需要在两个服务中添加JWT...

2018-11-14 18:46:59 9096 2

原创 携程 Apollo 配置中心分布式部署(Docker)

在Spring Boot 2.0 整合携程Apollo配置中心一文中,我们在本地快速部署试用了Apollo。本文将介绍如何按照分布式部署(采用Docker部署)的方式编译、打包、部署Apollo配置中心,从而可以在开发、测试、生产等环境分别部署运行。一、准备工作本文将在CentOS 7.x上部署Apollo配置中心服务端。1.1 Java和MySQ对于Java和MySQL的要求可以参考Sp...

2018-11-07 08:16:22 1633

原创 Spring Boot 2.0 整合携程Apollo配置中心

Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。服务端基于Spring Boot和Spring Cloud开发,打包后可以直接运行,不需要额外安装Tomcat等应用容器。Java客户端不依赖任何框架,能够运行于所有Java运行时环境,同时对Spri...

2018-11-03 11:43:41 11734 2

原创 Spring Security Oauth2-授权码模式(Finchley版本)

一、授权码模式原理解析(来自理解OAuth 2.0)授权码模式(authorization code)是功能最完整、流程最严密的授权模式。它的特点就是通过客户端的后台服务器,与&amp;quot;服务提供商&amp;quot;的认证服务器进行互动。其具体的流程如下:具体步骤:A:用户访问客户端(client),客户端告知浏览器(user-Agent)重定向到授权服务器B:呈现授权界面给用户,用户选择是否给予客户端授权C...

2018-10-30 18:49:41 24664 7

原创 CAS 4.1.10 版本服务端源码解读

在工作中经常会对CAS进行二次改造适应不同的单点登录场景。这篇文章主要对CAS 4.1.10版本进行源码解读(主要是登录流程)。不同版本可以在github下载。一、准备下载下来的cas-overlay-template的依赖中默认只有&lt;dependency&gt; &lt;groupId&gt;org.jasig.cas&lt;/groupId&gt; &lt;artifact...

2018-10-25 16:10:51 2348

翻译 cas详细登录流程

一、登录流程uml解析二、登录流程http请求跟踪解析上图是3个登录场景,分别为:第一次访问www.qiandu.com、第二次访问、以及登录状态下第一次访问mail.qiandu.com。下面就详细说明上图中每个数字标号做了什么,以及相关的请求内容,响应内容。&amp;amp;amp;nbsp;2.1、第一次访问www.qiandu.com标号1:用户访问http://www.qiandu.com,经过他的第一个...

2018-10-21 12:14:24 3177

原创 Spring Data JPA复杂查询

在使用Spring Data JPA框架时,可以按照符合框架规则的自定义方法或@Query进行固定条件查询。如果是动态条件查询框架也提供了接口。public interface JpaSpecificationExecutor&amp;lt;T&amp;gt;1.符合框架规则的自定义方法:&amp;nbsp;Supported keywords inside method namesKeywordSamp...

2018-10-19 14:12:48 372

原创 Dubbo-第一个Hello World程序

Dubbo 是阿里巴巴在2011年开源的分布式服务框架,是SOA服务化治理方案的核心框架。Dubbo的整体架构如图所示;Provider: 暴露服务的服务提供方。Consumer: 调用远程服务的服务消费方。Registry: 服务注册与发现的注册中心。Monitor: 统计服务的调用次数和调用时间的监控中心Dubbo主要提供三方面的功能:远程接口调用;负载均衡和容错;自动服务注册...

2018-10-16 22:22:54 307

Spring Boot 参数校验

Bean Validation是Java定义的一套基于注解的数据校验规范。这里简单实现了Spring Boot 参数校验,包括自定义注解,分组校验,全局异常处理等

2019-12-10

通过Feign 扩展 实现Feign 文件上传

在Spring Cloud 的Feign组件中并不支持文件的传输,会出现错误。通过Feign 扩展 可以实现Feign 单个文件和多个文件的上传,示例代码中演示了单个文件上传,多个文件上参考博客自己实现即可。文章地址:https://blog.csdn.net/AaronSimon/article/details/82710938

2019-12-06

空空如也

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

TA关注的人

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