自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(462)
  • 资源 (3)
  • 收藏
  • 关注

原创 java8 map()和flatMap()之间的区别

1.概述map()和flatMap() 在Java 8中,可以在Optional,Stream和CompletableFuture中找到它们(尽管名称稍有不同)。流表示一系列对象,而可选类是表示可以存在或不存在的值的类。 除其他聚合操作外,还有map()和flatMap()方法。尽管两者的返回类型相同,但是它们却截然不同。2.Map 和Flatmap 在 Optionalsmap()方法与Optional一起使用效果很好-如果函数返回的是需要的确切类型:@Testpublic void tes

2021-03-31 19:41:13 1568

原创 Spring Boot中的@ConfigurationProperties使用指南

1.介绍Spring Boot具有许多有用的功能,包括外部化配置和轻松访问属性文件中定义的属性。2.简单的Properties官方文档建议将配置属性隔离到单独的POJO中。因此,这么做:@Data@Configuration@ConfigurationProperties(prefix = "mail")public class ConfigProperties { private String hostName; private int port; private

2021-03-31 16:51:33 14502

原创 Java 8按收集器分组指南

1.介绍使用各种示例来了解groupingBy收集器的工作方式。2.groupingBy CollectorsJava 8 Stream API能够以声明的方式处理数据集合。静态工厂方法Collectors.groupingBy()和Collectors.groupingByConcurrent()提供了类似于SQL语言中“ GROUP BY”子句的功能。 使用它们将对象按某些属性分组,并将结果存储在Map实例中。groupingBy的重载方法是首先,以分类函数作为方法参数:static

2021-03-31 09:10:40 514

原创 Java 8收集器方法toMap

1.概述Collectors类的toMap()方法。 我们将使用它来将Streams收集到Map实例中。2.List转Map从最简单的情况开始,将List转换为Map。定义Book类:@Data@AllArgsConstructor@NoArgsConstructorpublic class Book { private String name; private int releaseYear; private String isbn;}创建书清单List&l

2021-03-30 19:16:19 4084

原创 Jackson将多个JSON字段映射到单个Java字段

1.概述如何同时使用Jackson将不同的JSON字段映射到单个Java字段。2.JSON样例假设要在Java应用程序中获取不同位置的天气详细信息。 找到了几个将天气数据发布为JSON文档的网站。 但是,它们使用略有不同的格式:json1{ "location": "beijing", "temp": 15, "weather": "Cloudy"}json2{ "place": "xian", "temperature": 35, "out

2021-03-30 16:01:34 3802

原创 Jackson注解-@JsonNaming

@JsonNaming@JsonNaming批注用于为序列化中的属性选择命名策略,覆盖默认设置。 使用value元素,我们可以指定任何策略,包括自定义策略。除了默认值LOWER_CAMEL_CASE(例如lowerCamelCase)外,Jackson库还为我们提供了另外四种内置的属性命名策略,以方便使用:KEBAB_CASE:名称元素之间用连字符分隔,例如 kebab-case。LOWER_CASE:所有字母均为小写字母,没有分隔符,例如 lowercase。LOWER_DOT_CASE:所有字

2021-03-30 15:36:54 12933

原创 Jackson解析未知属性的json

1.概述Jackjson如何处理具有未知属性的JSON内容。2.使用其他/未知字段解组JSONJSON输入内容化-在大多数情况下,需要将其映射到具有一定数量字段的预定义Java对象。 目标是简单地忽略所有无法映射到现有Java字段的JSON属性。@Datapublic class MyDtoGlobalField { private String stringValue; private int intValue; private boolean booleanVal

2021-03-30 14:00:45 1040

原创 Jackson忽略为空的字段

1.概述如何在序列化Java类时将Jackson设置为忽略空字段。2.忽略类中的空字段jackjson允许在任何一个类上控制这种行为:@JsonInclude(Include.NON_NULL)public class MyDto { ... }或更详细地在字段级别:@Datapublic class MyDtoField { @JsonInclude(JsonInclude.Include.NON_NULL) private String stringValue;

2021-03-30 11:14:04 3562

原创 Jackson忽略类的属性字段

1.概述使用Jackson 2.x将对象序列化为JSON时如何忽略某些字段。当Jackson的默认值还不够,并且需要精确控制要序列化为JSON的内容时,有几种方法可以忽略属性。2.忽略类级别的字段可以使用@JsonIgnoreProperties批注并按名称指定字段,从而在类级别忽略特定字段:@Data@NoArgsConstructor@JsonIgnoreProperties(value = { "intValue" })public class MyFieldsDto { p

2021-03-30 10:49:24 4615

原创 在Jackson中使用树模型节点JsonNode

1.概述使用JsonNode进行各种转换以及添加,修改和删除节点。2.创建一个节点创建节点的第一步是使用默认构造函数实例化ObjectMapper对象:ObjectMapper mapper = new ObjectMapper();由于创建ObjectMapper对象非常昂贵,因此建议将同一对象重复用于多个操作。接下来,一旦有了ObjectMapper,就有三种不同的方式来创建树节点。2.1 从头开始构建节点创建节点的最常见方法如下:JsonNode node = mapper.cre

2021-03-30 08:58:13 5120 1

原创 jackson–更改字段名称

1.概述更改字段名称以在序列化时映射到另一个JSON属性。2.更改要序列化的字段名称创建简单类public class MyDto { private String stringValue; public MyDto() { super(); } public String getStringValue() { return stringValue; } public void setStringValue(Str

2021-03-27 11:05:59 1169

原创 JSON字符串转换为JsonNode

1.概述使用Jackson 2将JSON字符串转换为JsonNode(com.fasterxml.jackson.databind.JsonNode)。2.快速解析解析JSON字符串,只需要一个ObjectMapper:String jsonString = "{\"k1\":\"v1\",\"k2\":\"v2\"}";ObjectMapper mapper = new ObjectMapper();JsonNode actualObj = mapper.readTree(jsonStrin

2021-03-27 09:53:43 2672

原创 用jackson比较两个JSON对象

1.概述将使用Jackson-Java的JSON处理库,比较两个JSON对象。2.使用Jackson比较两个JSON对象2.1比较两个简单的JSON对象从使用JsonNode.equals方法开始。 equals()方法执行完整(深度)比较。假设我们有一个定义为s1变量的JSON字符串:json字符串1{ "employee": { "id": "1212", "fullName": "John Miles", "age": 34

2021-03-26 17:56:15 2481

原创 Spring多次读取HttpServletRequest

Spring多次读取HttpServletRequest1.介绍如何使用Spring多次从HttpServletRequest读取正文。HttpServletRequest是一个接口,该接口公开getInputStream()方法以读取正文。 默认情况下,此InputStream中的数据只能读取一次。2. Maven 依赖<dependency> <groupId>org.springframework</groupId> <artifac

2021-03-26 17:28:29 1669

原创 jackson:无法将java.util.LinkedHashMap强制转换为X

JsonJack:无法将java.util.LinkedHashMap强制转换为X1.概述Jackson是一个广泛使用的Java库,它使可以方便地对JSON或XML进行序列化/反序列化。有时,当尝试将JSON或XML反序列化为对象集合时,可能会遇到“ java.lang.ClassCastException:java.util.LinkedHashMap无法转换为X”。2.了解问题让创建一个简单的Java应用程序来重现此异常,以了解何时会发生该异常。2.1创建一个POJO类public cla

2021-03-26 17:27:29 3650

原创 用Jackson映射动态JSON对象

用Jackson映射动态JSON对象1.介绍使用Jackson来使用预定义的JSON数据结构非常简单。 但是,有时需要处理具有未知属性的动态JSON对象。2.使用JsonNode假设要在网上商店中处理产品规格。 所有产品都有一些共同的属性,但是还有其他一些属性,取决于产品的类型。例如,想知道手机显示屏的长宽比,但是此属性对于鞋子来说意义不大。数据结构如下{ "name": "Pear yPhone 72", "category": "cellphone", "detai

2021-03-26 17:23:47 1561

原创 jackson ObjectMapper介绍

1.使用ObjectMapper进行读写public class Car { private String color; private String type; // standard getters setters}1.1Java对象转JSON使用ObjectMapper类的writeValue方法将Java对象序列化为JSON的第一个示例:ObjectMapper objectMapper = new ObjectMapper();Car car = new

2021-03-26 17:22:56 540

原创 MySQL索引深入剖析-索引使用原则、索引创建

索引使用原则在使用索引的时候容易有一个误区,就是在经常使用的查询条件上都建立索引,索引越多越好,那到底是不是这样呢?列的离散(sàn) 度第一个叫做列的离散度,我们先来看一下列的离散度的公式:count(distinct(column_name)) : count(*),列的全部不同值和所有数据行的比例。数据行数相同的情况下,分子越大,列的离散度就越高。简单来说,如果列的重复值越多,离散度就越低,重复值越少,离散度就越高在 name 上面建立索引和在 gender 上面建立索引有什么区别在

2021-03-04 19:38:16 399 2

原创 MySQL索引深入剖析-索引落地

B+Tree 落地形式MySQL 架构MySQL 是一个支持插件式存储引擎的数据库。在 MySQL 里面,每个表在创建的时候都可以指定它所使用的存储引擎 。MySQL 数据存储文件首先,MySQL 的数据都是文件的形式存放在磁盘中的,可以找到这个数据目录的地址。在 MySQL 中有这么一个参数,我们来看一下:show VARIABLES LIKE 'datadir'; 每个数据库有一个目录,我们新建了一个叫做 idaas的数据库,那么这里就有一个idaas的文件夹。这个数据库里面我们又建

2021-03-03 17:30:16 247 1

原创 MySQL索引深入剖析-索引存储模型推演

二分查找双十一过去之后,你女朋友跟你玩了一个猜数字的游戏。猜猜我昨天买了多少钱,给你五次机会。10000?低了。30000?高了。接下来你会猜多少?20000。为什么你不猜 11000,也不猜 29000 呢?其实这个就是二分查找的一种思想,也叫折半查找,每一次,我们都把候选数据缩小了一半。如果数据已经排过序的话,这种方式效率比较高。所以第一个,我们可以考虑用有序数组作为索引的数据结构。有序数组的等值查询和比较查询效率非常高,但是更新数据的时候会出现一个问题,可能要挪动大量的数据(改变 ind

2021-03-02 10:04:22 301

原创 MySQL索引深入剖析-索引介绍

索引是什么?索引是什么索引图解维基百科对数据库索引的定义:数据库索引,是数据库管理系统(DBMS)中一个排序的数据结构,以协助快速查询、更新数据库表中数据。怎么理解这个定义呢?​ 首先数据是以文件的形式存放在磁盘上面的,每一行数据都有它的磁盘地址。如果没有索引的话,要从 500 万行数据里面检索一条数据,只能依次遍历这张表的全部数据,直到找到这条数据。​ 但是有了索引之后,只需要在索引里面去检索这条数据就行了,因为它是一种特殊的专门用来快速检索的数据结构,我们找到数据存放的

2021-03-01 10:49:24 83

原创 Java设计模式-单例设计模式

单例设计模式所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。 SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这是就会使用到单例模式。单例设计模式八种方式饿汉式(静态常量)饿汉式(静态代码块)懒汉式(线程不安全)懒汉式(线

2021-01-27 15:43:02 92 1

原创 rabbitmq控制界面发送对象封装的消息内容

具体如下:

2021-01-12 15:50:49 433

原创 加密算法和公钥基础设施

加密算法国密算法国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。SM3 消息摘要。可以用MD5作为对比理解。该算法已公开

2020-12-04 13:54:02 829

原创 Java反射替换属性字段上注解属性对应的值

/** * 设置ExcelProperty注解对应的value * * @param properties 属性字段和注解属性字段值 键值对 * @tClass 泛型 那个类 */ public static <T> void setHeaderValue(Properties properties,Class<?> tClass) { Assert.notNull(properties, "propert.

2020-12-03 14:36:55 1320 1

原创 Spring @Async/@Transactional 失效的原因及解决方案

原文:https://www.cnblogs.com/steve-jiang/p/12692299.html

2020-11-18 08:37:54 463

原创 SQLyog docker之mysql连接plugin ‘caching_sha2_password‘ cannot be loaded

MySQL8.0之后的加密规则为caching_sha2_password1.进入mysql命令行docker exec -it some-mysql(镜像别名) bash2.登录myql mysql -uroot -p 密码 3.修改加密规则 设置新密码 ALTER USER '账号'@'用户域' IDENTIFIED WITH mysql_native_password BY '新密码'; 如 root用户允许所有连接:ALTER USER 'root'@'%' IDE

2020-11-11 09:04:24 193

原创 windows下docker安装rabbitmq

https://help.aliyun.com/document_detail/60750.html 阿里云镜像加速配置下载镜像启动容器下载镜像(选择的是可以访问web管理界面的tag)docker pull rabbitmq:management创建容器并运行(15672是管理界面的端口,5672是服务的端口。管理系统的用户名和密码设置为admin admin)docker run -dit --name Myrabbitmq -e RABBITMQ_DEFAULT_USER=admi.

2020-11-04 19:09:30 1045

原创 RabbitMQ延迟队列

原文:【RabbitMQ】一文带你搞定RabbitMQ延迟队列【RabbitMQ】一文带你搞定RabbitMQ死信队列

2020-11-03 15:32:12 130

原创 InputStream转MultipartFile

//调用放 MultipartFile multipartFile = getMultipartFile(inputStream, originalFilename); /** * 获取封装得MultipartFile * * @param inputStream inputStream * @param fileName fileName * @return MultipartFile */ public Mu...

2020-10-28 17:07:22 16635 3

原创 文件流复制

@PostMapping("/upload")public void uploadFile(MultipartFile file){ InputStream streamOne; InputStream streamTwo; InputStream inputStream; try { inputStream = file.getInputStream(); } catch (IOExcep.

2020-10-28 14:11:36 729

原创 mybatis-plus多表关联查询

https://blog.csdn.net/weixin_43740223/article/details/86178269

2020-10-26 17:09:51 1747

原创 异步调用Feign上下文丢失问题

由于一些业务处理,在远程调用Feign时,需要异步调用,但是当前请求上下文是保存在ThreadLocal中,这样会导致上下文丢失。公司业务需要在批量导入数据,文件上传成功,异步解析数据入库。feign 拦截器配置如下在远程调用中header进行向下传递@Component@Slf4jpublic class FeignConfiguration implements RequestInterceptor { @Override public void apply(RequestTemplat

2020-10-24 09:55:02 2134

原创 mybatis-plus 复杂and or查询

在查询过程中 经常会有类似如下查询A='123' and (B='456' or C='789' or D='110')lambdaWrapper.eq("A","123");lambdaWrapper.and(wrapper->{ wrapper.or().eq("B","456"); wrapper.or().eq("C","789"); wrapper.or().eq("D","110");})项目中应用,根据集合拼接查询条件 lambdaWrapper.and(

2020-10-16 08:59:44 2231

原创 hibernate validator 复杂数据接口校验

前段传递参数结构Controller@RestController@Api(tags = "数据权限")@Slf4j@RequestMapping(value = "data-authority")@Validatedpublic class DataAuthorityController{ @PostMapping("") @ApiOperation(value = "模拟设置用户部门管辖权限", notes = "模拟设置用户部门管辖权限", httpMethod =

2020-10-14 17:51:22 510

原创 Spring Cloud Gateway新一代网关(下篇)

1.Predicate的使用1.1是什么启动网关服务,查看控制台1.2Route Predicate Factories这个是什么1.3常用的Route Predicate1.3.1After Route Predicate根据配置时间来匹配路由以下配置为,请求时间在指定时间点之后可以用上面yaml中配置的时间戳,是默认时区时间戳。 public static void main(String[] args) { ZonedDateTime now = Zone

2020-09-04 11:34:02 289

原创 Spring Cloud Gateway新一代网关(上篇)

1.概念简介1.1官网上一代zuul 1.X https://github.com/Netflix/zuul/wiki当前gateway https://cloud.spring.io/spring-cloud-static/spring-cloud-gateway/2.2.1.RELEASE/reference/html/1.2是什么1.2.1概述该项目提供了一个在Spring生态系统之上构建的API网关,包括:Spring 5,Spring Boot 2和Project Reactor。 S

2020-09-02 13:31:15 439

原创 第四篇 SpringCloud Alibaba Sentinel实现熔断与限流(下篇)

官网地址:https://github.com/alibaba/Sentinel/wiki/%E6%B3%A8%E8%A7%A3%E6%94%AF%E6%8C%811.1按资源名称限流+后续处理1.1.1业务代码准备import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;@Data@AllArgsConstructor@NoArgsConstructorpublic cl

2020-09-01 14:55:46 315

原创 第三篇 SpringCloud Alibaba Sentinel实现熔断与限流(上篇)

1.Sentinel介绍分布式系统的流量防卫兵1.1官网地址https://github.com/alibaba/Sentinel/wiki/%E4%BB%8B%E7%BB%8D1.2是什么和Hystrix类似轻量级的流量控制、熔断降级Java库。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。1.3去哪下https://github.com/alibaba/Sentinel/releases1.4能干什么#### 1.5怎么用服务使用

2020-09-01 09:15:39 284

转载 分布式任务调度平台XXL-JOB

相关介绍及相关下载地址:https://www.cnblogs.com/xuxueli/p/5021979.htmlXXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。1.快速入门1.1数据库脚本初始化请下载项目源码并解压,获取 “调度数据库初始化SQL脚本” 并执行即可。“调度数据库初始化SQL脚本” 位置为:/xxl-job/doc/db/tables_xxl_job.sql调度中心支持集群部署,集

2020-08-28 14:48:15 1353

hibernate_validator_reference_5.1.3.pdf

hibernate_validator_reference_5.1.3 整合spring进行参数校验

2020-04-15

httpclient-tutorial开发指导文档.pdf

apache httpclient 开发指导文档4.5版本,内容比较全面,开发过程中值得借鉴,文档中各种应用场景已经覆盖到了。

2020-03-24

阿里巴巴eclipsejava代码检测规范

java代码开发规范,eclipse扫描插件,然你的开发更轻松破。

2018-05-22

空空如也

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

TA关注的人

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