自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 RestTemplate使用实战(二)-复杂多层嵌套对象的处理和封装

在上一节的文章中,我们学习了restTemplate的基础用法。但是在日常的开发中,我们通常需要更加通用的方式来处理http远程调用。先来回忆一下,发起一个请求需要哪些步骤: //1、设置访问url String url = RemoteUrl + "/id"; //2、设置Http的Header HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaTy

2021-04-20 11:18:14 4847 5

原创 SpringBoot 2.x 自定义注解annotation实现MicroMeter埋点

介绍Micrometer 为 Java 平台上的性能数据收集提供了一个通用的 API,应用程序只需要使用 Micrometer 的通用 API 来收集性能指标即可。Micrometer 会负责完成与不同监控系统的适配工作。这就使得切换监控系统变得很容易。Micrometer 还支持推送数据到多个不同的监控系统。在Springboot 2.X中,除了通过业务代码的方式埋点,官方也提供了@Timed,@Counted注解实现。遗憾的是,官方对于自定义的Tag只做了简单的适配,不能满足我们一些自定义的指标需

2021-04-15 20:20:02 2716 2

原创 SkyWalking方法级trace粒度实现 @Trace和apm-customize-enhance-plugin介绍

场景在开发过程了,我们除了想知道链路的整体耗时以外,有的时候也想要知道某些方法的执行耗时。为了达到这个目的,我们需要做一些额外的配置。今天就给大家介绍SkyWalking方法级trace的实现。实现SkyWalking方法级trace的实现具体分为侵入式和外部配置两种方式,各有优劣,可根据项目情况自行选择。首选给大家介绍侵入式实现方式。侵入式实现1、pom.xml依赖 <dependency> <groupId>org.apache.skywalking

2021-04-01 17:33:58 5733 2

原创 你还在手写serialVersionUID吗?Intellij IDEA助你一键生成serialVersionUID

serialVersionUID在开发过程中也是非常重要的一个参数,在序列化和反序列化过程中,serialVersionUID作为类唯一标识,表明类的身份(类似于人的身份证)。在开发过程中,如果手写serialVersionUID,那么很可能会导致ID冲突。(身份证如果冲突了是多可怕的一件事,别人可以利用你的身份为所欲为)今天,就教大家怎么一键生成serialVersionUID,避免手动生成的尴尬。准备环境Intellij IDEA流程步骤首先打开你的IDEA,选择File->Setti

2021-03-25 14:12:39 746 2

原创 IDEA 反编译失败 提示/*compiled code*/的解决方法

问题idea在初始化的时候会默认自带反编译插件,但是在有的同学初始化的时候没有勾选上插件,从而导致不能正常的反编译,class类提示/compiled code/。解决方案进入IDEA,选择file->settings->plugins,在installed的插件中搜索Java Bytecode Decompiler,勾选上后点击右下角的apply,然后再重启IDEA即可。...

2021-03-09 10:28:56 6496

原创 深入理解Spring Boot 实现自定义starter

starter是什么?springboot作为当前最热门的企业级开发框架,其最为重要的一个特性就是约定大于配置。springboot去掉了spring开发中繁琐的配置文件,同时内置了tomcat等,大大提升了开发的效率。约定大于配置的一个具体的实现方式,就是引入了starter机制。如果你有留意过maven依赖,那么在你的项目中肯定看到过starter结尾的jar包。正式因为这些jar包存在,才能让我们更加专业于业务开发。为什么要自定义starter?在我们的日常开发工作中,经常会有一些独立于业务

2021-03-08 17:36:16 269 2

原创 Java文件监控-WatchService了解和使用

前言前些天在分析性能问题的时候,突然发现一个文件同步的方法严重阻塞了线程。查看代码才发现,每次同步的时候都会全量的获取当前的所有文件。在文件数量较大的场景下,给系统带来的非常严重的阻塞。找到问题原因就好办了,全量获取文件不是一个长期且行之有效的方式。因此,需要另一种方案来替代全量查询。WatchService是什么?WatchService是jdk1.7版本引进的,位于nio包下。WatchService看作是文件监控器,通过操作系统原生文件系统来运行。针对单点多appkey的情况,可以注册开启

2021-03-01 20:02:19 3147 2

原创 maven多模块(module)构建部署

在我们日常开发中,常常会遇到单模块没法满足的场景。例如,我们只想对外暴露接口类和基础的实体类。为了满足以上场景,所以我们需要多模块(module)开发。项目结构新建一个项目,新建完成后点击右键->New->Module根据实际情况选择具体的构建工具,这里我选择的maven。分别创建了api和service模块,最终的项目结构如下图所示,我们就把api和service区隔开了。注意: 这里一定是新建的module,工程上右下角有一个蓝色的小方块。不要新建成目录了。...

2021-02-02 11:23:11 2967 1

原创 Spring listener——Spring boot实现监听器的两种方式

我们知道,在spring启动的过程中,会生成很多的监听器,监听整个spring容器的生命周期。那么,我们想要生成自己的listener需要怎么做呢?今天,就给大家带来spring boot实现监听器的两种方式。自定义事件自定义事件XiaoAMaCreatedEvent继承ApplicationEvent类/** * [说明] * * @author xiaoama */public class XiaoAMaCreatedEvent extends ApplicationEvent {

2020-11-17 11:10:58 7598

转载 Spring Boot 2.4.0 正式发布!全面拥抱云原生!

2020年11月12日,Spring官方发布了Spring Boot 2.4.0 GA的公告。在这个版本中增加了大量的新特性和改进,下面我们一起看看在这个重要版本中都有哪些值得关注的内容!Spring Boot 2.4.0 正式发布,现在可以从 maven 中央仓库获取,全新的版本号定义,正式版本不再添加 RELEASE 后缀声明。 <dependency> <groupId>org.springframework.boot</groupId> &

2020-11-17 10:09:08 419

原创 Spring Cloud 微服务实践系列(四)—— nacos+openfeign

本期给大家带来nacos注册中心的使用实践,通过nacos+openfeign实现微服务间的RPC远程调用。PRC是什么?RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务RPC框架负责屏蔽底层的传输方式、序列化方式(XML/JSON/二进制)和通信细节。RPC调用示意图:简单来说,服务消费者可以通过clent stub,把请求序列化,通过socket发送到服务提供者,服务提供者再通过server stub反序列化请求参数,从而调用se

2020-11-15 18:00:38 948 1

原创 Spring Cloud 微服务实践系列(三)—— Nacos注册中心

上一期给大家简单介绍了nacos作为配置中心的使用,除了配置中心,nacos也常作为配置中心使用,实现服务的注册和发现。今天给大家带来的就是spring cloud 与nacos注册中心的使用实践。Nacos服务发现service-provide:服务提供者service-consumer:服务消费者服务提供者和服务消费者,通过nacos的服务注册发现功能,可以实现PRC远程调用。maven依赖<dependency> <groupId>com.aliba

2020-11-15 16:19:35 199

原创 Spring Cloud 微服务实践系列(二)—— Nacos配置中心

上一期给大家简单介绍了Spring Cloud Alibaba,这一期给大家带来的是nacos的介绍。Nacos是什么Nacos 支持基于 DNS 和基于 RPC 的服务发现,服务(Service)是 Nacos 世界的一等公民。Nacos 支持几乎所有主流类型的“服务”的发现。Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是

2020-11-09 18:03:05 668 4

原创 Spring Cloud 微服务实践系列(一)—— 初识Spring Cloud Alibaba

spring cloud是什么Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护

2020-11-07 14:59:15 205 1

原创 Idea 全局默认配置,快速搭建你的项目

全局默认设置idea老版本idea老版本通过File -> Other Settings -> Default Settings设置全局默认配置。idea2020+版本在idea新版本中,官方取消了Other Settings -> Default Settings的配置,那新版本的全局默认配置在哪里呢?新版本的全局默认配置入口配置在了File -> New Projects Settings -> Settings For New Projects中。以mav

2020-08-18 17:02:18 732

原创 自定义classloader-实现自己的类加载器

类加载器作用java.lang.ClassLoader 类的基本职责就是根据一个指定的类的名称,找到或者生成其对应的字节代码,然后从这些字节代码中定义出一个 Java 类,即java.lang.Class 类的一个实例。除此之外, ClassLoader 还负责加载 Java 应用所需的资源,如图像文件和配置文件等。它负责将 Class 的字节码形式转换成内存形式的 Class 对象。字节码可以来自于磁盘文件 *.class,也可以是 jar 包里的 *.class,也可以来自远程服务器提供的字节流,字

2020-08-13 16:10:42 2969

原创 idea2020.01-提示找不到项目中存在类的问题

问题升级到idea2020.01版本后,经常会出现从git同步代码后找不到具体类的错误,但是确确实实能看到该类已经存在项目中。为了这个问题也跟同项目组的同事埋怨过,结果最后发现问题居然是出在idea身上。解决办法解决办法其实也很简单,最简单粗暴的可以直接把找不到的类删掉,然后再重新导入一次。不过这个方法会有一个问题,需要手动的去配置依赖。对于一个依赖比较多的类,重新配置所有依赖关系是很痛苦的一件事,所以可以使用下面的方法来解决。File->Invalidate Caches/Restart…

2020-07-27 17:28:01 3064 3

原创 springboot进阶-使用aop实现接口监控和全局异常处理

AOP是什么用过spring开发的程序员对AOP应该都不陌生,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的统一维护的一种技术。简而言之,AOP就是为了减少我们纵向编码的复杂度,让我们可以更加的注重于业务实现。AOP实战准备工作1.环境准备:jdk1.8+springboot2.1.5+idea(...

2020-01-02 15:50:03 3052 1

原创 RestTemplate使用实战-exchange方法讲解

RestTemplate是什么RestTemple是Spring提供的用于访问Http请求的客户端,RestTemple提供了多种简洁的远程访问服务的方法,省去了很多无用的代码。为什么要用RestTemplate相信大家之前都用过apache的HTTPClient类,逻辑繁琐,代码复杂,还要自己编写使用类HttpClientUtil,封装对应的post,get,delete等方法。Rest...

2019-10-28 12:18:17 89588 13

原创 Springboot前后端分离实现文件上传

Springboot前后端分离实现文件上传文件上传文件上传是项目经常要用到的功能,Springboot可以通过配置MultipartFile 来接受文件。项目采用的是前后端分离的模式,springboot+vue,也可以通过这种方式来实现。代码实现controller层代码 @ApiOperation(value = "文件上传") @PostMapping(value ...

2019-10-25 13:45:17 7159 2

空空如也

空空如也

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

TA关注的人

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