自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 启动Spring Boot应用程序时配置堆大小

1.介绍启动Spring Boot应用程序时如何配置堆大小。 配置-Xms和-Xmx,它们对应于起始堆大小和最大堆大小。当在命令行上使用mvn启动应用程序时,将首先使用Maven来配置堆大小。如何使用Maven插件设置这些值。应用程序打包到jar文件中,并使用提供给java -jar命令的JVM参数运行它。2.Maven运行SpringBoot程序2.1传递JVM参数在controller中创建rest接口,获取内存信息:@GetMapping("memory-status"

2021-04-19 09:01:31 4195

原创 在Spring Boot中格式化JSON日期

1.概述如何在Spring Boot应用程序中格式化JSON日期字段。使用Jackson格式化日期的各种方式,Jackson被Spring Boot用作其默认的JSON处理器。2.在日期字段上使用@JsonFormat2.1 设定格式可以使用@JsonFormat注解以设置特定字段的格式:@Datapublic class Contact { @JsonFormat(pattern="yyyy-MM-dd") private LocalDate birthday; @

2021-04-16 09:17:18 951

原创 Spring Boot:自定义Jackson ObjectMapper

1.概述当使用JSON格式时,Spring Boot将使用ObjectMapper实例来序列化响应并反序列化请求。2.默认配置默认情况下,Spring Boot配置将:禁用 MapperFeature.DEFAULT_VIEW_INCLUSION禁用 DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES(默认情况下启用此功能(这意味着如果遇到未知属性,将抛出JsonMappingException)禁用 SerializationFeature.W

2021-04-16 09:16:17 13213 1

原创 Spring Boot应用程序中加载jar外部位置属性文件

1.概述属性文件是一种常见的方法,可用于存储特定于项目的信息。 理想情况下,应该将其保留在jar包外部,以便能够根据需要更改配置。接下来通过各种方式从Spring Boot应用程序中jar外部的位置加载属性文件。2.使用默认位置按照惯例,Spring Boot按照以下优先级顺序在4个预定的位置中寻找一个外部化的配置文件– application.properties或application.yml:当前目录的/config子目录当前目录类路径/config包类路径根加载冲突时,优先级高

2021-04-16 09:15:20 402

原创 Spring中的@ConditionalOnProperty注解

1.概述介绍@ConditionalOnProperty注解的主要目的。2.@ConditionalOnProperty的目的通常,在开发基于Spring的应用程序时,可能需要根据配置属性的存在和值有条件地创建一些bean。例如,取决于是否将属性值设置为“ prod”或“ test”,可能想要注册一个DataSource bean来指向生产或测试数据库。幸运的是,实现这一目标并不像想象的那样困难。 Spring框架正是为此目的提供了@ConditionalOnProperty注解。简而言之,@C

2021-04-14 16:06:42 62828 1

原创 Spring和Spring Boot的Properties文件

1.概述如何通过Java配置和@PropertySource在Spring中设置和使用属性。还将看到属性在Spring Boot中的工作方式。2.通过注解注册属性文件Spring 3.1还引入了新的@PropertySource注解,作为将属性源添加到环境的便捷机制。可以将此注解与@Configuration注释结合使用:@Configuration@PropertySource("classpath:foo.properties")public class PropertiesWithJa

2021-04-14 16:02:26 443

原创 Spring YAML与properties

1.概述YAML是在配置文件中使用的人性化表示法。 为什么在Spring Boot中,我们更喜欢这种数据序列化而不是属性文件? 除了可读性和减少重复之外,YAML是将Configuration as Code编写为部署的理想语言。以同样的方式,将YAML用于Spring DevOps有助于12因子身份验证器建议的环境中配置变量的存储。接下来,将比较Spring YAML和Properties文件,以检查使用它们之间的主要优点。 但是请记住,选择YAML而非属性文件配置有时是个人喜好的决定。2.YAM

2021-04-12 19:18:55 720

原创 使用Spring从YAML文件读取内容映射为Map

1.概述如何在Spring Boot中从YAML文件注入到Map。首先,将对Spring框架中的YAML文件有一些了解。 然后,通过一个实际示例展示如何将YAML属性绑定到Map。2.Spring框架中的YAML文件使用YAML文件存储外部配置数据是一种常见的做法。 基本上,Spring支持使用YAML文档作为属性的替代方法,并在后台使用SnakeYAML对其进行解析。看看典型的YAML文件是什么样的:server: port: 8090 application: name: m

2021-04-12 19:18:00 16910

原创 在Spring Boot中使用@PropertySource读取YAML文件

1.概述如何在Spring Boot中使用@PropertySource注解读取YAML属性文件。2.@PropertySource和YAML格式Spring Boot对外部化配置提供了强大的支持。 另外,可以使用不同的方式和格式直接读取Spring Boot应用程序中的属性。但是,默认情况下,@PropertySource不会加载YAML文件。2.5.2. Directly Loading YAMLSpring Framework provides two convenient classe

2021-04-12 08:48:29 3441

原创 Spring Boot注解

1.概述Spring Boot的自动配置功能使配置Spring更加容易。在本章中,将介绍org.springframework.boot.autoconfigure和org.springframework.boot.autoconfigure.condition包中的注解。2. @SpringBootApplication使用这个注解来标记Spring Boot应用程序的主类:@SpringBootApplicationpublic class VehicleFactoryApplication

2021-04-12 08:46:42 114

原创 Spring Boot面试问题

Q1: 什么是Spring Boot及其主要功能?Spring Boot本质上是在Spring框架之上构建的用于快速应用程序开发的框架。 凭借其自动配置和嵌入式应用程序服务器支持,以及所享受的广泛文档和社区支持,Spring Boot是迄今为止Java生态系统中最受欢迎的技术之一。以下是一些突出的功能:Starters–一组依赖项描述符,可随时包含相关的依赖项Auto-configuration–一种基于类路径上存在的依赖关系自动配置应用程序的方法Actuator–获得生产就绪的功能,例如监控

2021-04-09 08:41:03 121

原创 Spring中@Valid和@Validated注解的差异

1.介绍验证用户输入是我们大多数应用程序中的常见功能。 在Java生态系统中,专门使用Java标准Bean验证API来支持此功能。 而且,从4.0版本开始,它也与Spring很好地集成在一起。 @Valid和@Validated注释源自此Standard Bean API。2.@Valid 和@Validated注解在Spring中,使用JSR-303的**@Valid批注进行方法级别验证。 此外,还可以使用它来标记成员属性以进行验证。 但是,此注释不支持组验证。**组有助于限制验证期间应用的约束。

2021-04-08 08:58:35 276

原创 jackson–自定义序列化器

1.概述如何使用自定义序列化器,使用Jackson 2序列化Java实体。2.对象的标准序列化定义2个简单实体,看看Jackson如何在没有任何自定义逻辑的情况下序列化这些实体:@Data@AllArgsConstructor@NoArgsConstructorpublic class User { public int id; public String name;}@Data@AllArgsConstructor@NoArgsConstructorpublic

2021-04-03 16:08:39 2158

原创 使用Stream处理Map

1.概述讨论如何使用Java Streams来处理Maps。2.基本概念要注意的主要事情是,流是可以从Collection中轻松获得的元素序列。Map具有不同的结构,从键到值的映射没有顺序。 但是,这并不意味着无法将Map结构转换为不同的序列,从而无法自然地使用Stream API。从Map获取不同Collection的方法,然后我们可以将其转变为Stream:Map<String, Integer> someMap = new HashMap<>();可以获得一组键

2021-04-02 15:24:59 6383

原创 使用flatMap处理Java中的嵌套集合

1.嵌套集合的示例List<List<String>> nestedList = asList( asList("one:one"), asList("two:one", "two:two", "two:three"), asList("three:one", "three:two", "three:three", "three:four"));2.使用forEach整合列表为了将这个嵌套的集合展平为字符串列表,可以将forEach与Java 8方法参考结合使

2021-03-31 19:42:40 5079

原创 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 1600

原创 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 18525

原创 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 560

原创 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 4183

原创 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 4441

原创 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 13505

原创 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 1160

原创 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 3977

原创 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 4874

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

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

2021-03-30 08:58:13 5525 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 1205

原创 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 2812

原创 用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 2841

原创 Spring多次读取HttpServletRequest

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

2021-03-26 17:28:29 1841

原创 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 4392

原创 用Jackson映射动态JSON对象

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

2021-03-26 17:23:47 1669

原创 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 562

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

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

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

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

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

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

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

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

2021-03-02 10:04:22 320

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

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

2021-03-01 10:49:24 93

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

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

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

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

具体如下:

2021-01-12 15:50:49 454

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

加密算法国密算法国密即国家密码局认定的国产密码算法。主要有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 1017

原创 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 1389 1

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关注的人

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