- 博客(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
原创 加密算法和公钥基础设施
加密算法国密算法国密即国家密码局认定的国产密码算法。主要有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
原创 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
2020-04-15
httpclient-tutorial开发指导文档.pdf
2020-03-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人