springboot第30集:springboot集合问题

Logstash

Logstash 是开源的服务器端数据处理管道,能够同时从多个来源采集数据、格式化数据,然后将数据发送到es进行存储。

ElasticSearch

Elasticsearch 是基于JSON的分布式搜索和分析引擎,是利用倒排索引实现的全文索引。

Kibana
Kibana 能够可视化 Elasticsearch 中的数据并操作。

es在elk生态圈中处于核心地位,是开源大规模基于倒排索引的全文搜索分析引擎,他几乎能实时的支持存储搜索分析。
优势:

  • 横向可扩展性: 增加服务器可直接配置在集群中

  • 分片机制提供更好的分布性: 分而治之的方式来提升处理效率

  • 高可用: 提供复制(replica)机制

  • 实时性: 通过将磁盘上的文件放入文件缓存系统来提高查询速度

基本概念

  • Index: 一系列文档的集合,类似于mysql中数据库的概念

  • Type: 在Index里面可以定义不同的type,type的概念类似于mysql中表的概念,是一系列具有相同特征数据的结合。

  • Document: 文档的概念类似于mysql中的一条存储记录,并且为json格式,在Index下的不同type下,可以有许多document。

  • Shards: 在数据量很大的时候,进行水平的扩展,提高搜索性能

  • Replicas: 防止某个分片的数据丢失,可以并行得在备份数据里及搜索提高性能

elasticsearch查询语法

_cat API

查询当前es集群的相关消息,包括集群中的index数量、运行状态、当前集群所在的ip,目的在于将查询的结果以更加友好的方式输出。

  • cat: 输出_cat api中所有支持的查询命令

  • cat health: 检查es集群运行的状况

  • cat count: 可以快速的查询集群或者index中文档的数量

  • cat indices: 查询当前集群中所有index的数据,包括index的分片数、document的数量、存储所用的空间大小...

  • 其他cat api参考官方文档: www.elastic.co/guide/en/el…[1]

Search APIs

搜索数据,查询语法多,功能强大
REST request URI: 轻便快速的URI查询方法
REST request body: 可以有许多限制条件的json格式查询方法

  • "query": 在请求消息体中的query允许我们用Query DSL的方式查询。

    • "term": 查询时判断某个document是否包含某个具体的值,不会对被查询的值进行分词查询

    • "match" 将被查询值进行分词,然后用评分机制(TF/IDF)进行打分

    • "match_phrase": 查询指定段落

    • "Bool": 结合其他真值查询,通常和must should mustnot(与或非)一起组合出复杂的查询

    • "range": 查询时指定某个字段在某个特定的范围

location / {# 指向我们打包后上传的前端文件root /opt/nginx/dist;index index.html;}location /jwt/ {# 转发请求到后端服务网关proxy_pass http://127.0.0.1:8765/jwt/;}location /api/ {proxy_pass http://127.0.0.1:8765/api/;}

默认的 Nginx 配置文件路径如下:

  • Nginx 主配置文件路径:/www/server/nginx/conf/nginx.conf

  • 网站配置文件路径:/www/server/panel/vhost/nginx/

  • 默认主页文件路径:/www/server/panel/vhost/index.html

1.开始nginx

切换到相应路径

start nginx.exe

2.重新加载配置文件

nginx -s reload

  1. 进入jar包所在路径

  2. 输入:

    nohup java -jar xxx.jar &
  3. 按下回车后再输入exit(注意,一定要输入exit,才能让其一直运行。)

  4. 要想让其停止运行,输入:

    netstat -antp | grep java
  5. 然后停止对应进程:

    kill -9 pid

TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.

一、Swagger报错:

1、报错类型:

TypeError: Failed to execute ‘fetch‘ on ‘Window‘: Request with GET/HEAD method cannot have body

2、解决方案:

请求方式错误:请求参数使用了@RequestBody注解,就要用Post来进行请求

二、@RequestParam与@RequestBody的区别

1、@RequestParam:

@RequestParam接收的参数是来自requestHeader中,即请求头。通常用于GET请求。

2、@RequestBody:

@RequestParam接收的参数是来自requestBody中,即请求体。主要用来接收前端传递给后端的json字符串中的数据的,所以只能发送POST请求。

server {listen       80;server_name www.aaa.ink;client_max_body_size  1000M;client_body_timeout 20s;client_header_timeout 10s;send_timeout 30s;ssl_protocols TLSv1.2;charset utf-8;#后端接口location ^~ /api/ {proxy_pass http://127.0.0.1:8080/api/;}location ~/(.*)$ {#前端项目root   /usr/local/nginx/ttm;index  index.html index.htm;}error_page   500 502 503 504  /50x.html;location = /50x.html {root   html;}
}
  1. LB 转发的时候带上 X-Forwarded-Port 请求头,转发原始请求的端口号(需要 LB 转发自己能够控制,我们如果要配置还需要让 DevOps 的童鞋帮忙弄,如果完全是自己控制的就比较方便【推荐】)

  2. 在使用 Swagger 中间件之前把 X-Forwarded-Port 请求头设置为 443(不够灵活,如果访问 LB 是 http 或者有特别的端口号就会有问题)

  3. 在使用 swagger 中间件之前把 X-Forwarded-Host 请求头移除掉,这样就不会有 servers 这个属性了(感觉不够优雅)

  4. 注册一个 PreSerializeFilter 把 Servers 清空

在Swagger UI中,您可以使用servers配置指定API的服务器信息。这使您能够在Swagger UI中定义和切换不同的服务器配置,以便与不同的API环境进行交互。

以下是一个示例Swagger UI配置文件,演示如何使用servers配置:

import springfox.documentation.swagger.web.SwaggerResource;
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
import java.util.ArrayList;
import java.util.List;@Configuration
public class SwaggerConfig {@Value("${swagger.enabled:true}")private boolean enabled;@Value("${swagger.pathMapping:/api}")private String pathMapping;@Beanpublic Docket api() {return new Docket(DocumentationType.OAS_30).enable(enabled).apiInfo(apiInfo()).select().apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class)).paths(PathSelectors.any()).build().securitySchemes(securitySchemes()).securityContexts(securityContexts()).pathMapping(pathMapping).servers(servers());}private List<Server> servers() {List<Server> servers = new ArrayList<>();servers.add(new Server("https://1024bat.cn"));// 添加其他服务器配置return servers;}// 其他方法...}

具体的错误消息为 "org.apache.ibatis.type.TypeException: Could not set parameters for mapping"。该错误通常发生在尝试为 MyBatis 映射中的参数设置值时出现问题。

根据错误消息,这个具体的问题是 "Error setting non null for parameter #1 with JdbcType null",即尝试为第一个参数设置非空值时出现了问题,并且 JdbcType 为 null。另外,错误消息还提到了一个类型转换问题:"java.lang.ClassCastException: class java.lang.Long cannot be cast to class java.lang.String"。

这意味着在你的 MyBatis 映射文件中,可能存在一个参数类型不匹配的问题。具体地说,它期望一个 String 类型的参数,但实际传入的是一个 Long 类型的值,导致类型转换失败。

为了解决这个问题,你可以尝试以下几个步骤:

  1. 检查参数类型:检查 MyBatis 映射文件中相关的参数定义,确保参数类型与数据库字段的类型匹配。如果参数类型与数据库字段类型不匹配,可能会导致类型转换错误。

  2. 检查传入的参数值:检查代码中传入的参数值,确保参数值的类型与 MyBatis 映射文件中定义的参数类型一致。如果参数值的类型不正确,你可能需要进行相应的类型转换或更正。

  3. 设置正确的 JdbcType:在 MyBatis 映射文件中,尝试为该参数设置一个合适的 JdbcType。你可以通过在映射文件中的参数定义中添加 jdbcType 属性来指定 JdbcType,例如 jdbcType="VARCHAR"

  4. 检查配置:检查 MyBatis 的配置文件,确保没有配置问题,例如类型别名或类型处理器的配置。

df2eac32bbaa314e74256d267356c5f5.png
image.png

如果你希望在Spring Boot中,当数据库中没有对应值时,仍然返回字段但其值为空,你可以使用Jackson库的另一个配置选项。

在Spring Boot的配置文件中添加以下配置:

spring.jackson.default-property-inclusion=non_empty

或者,在application.yml配置文件中使用以下配置:

spring:jackson:default-property-inclusion: non_empty

这将告诉Jackson在序列化对象时,忽略值为null或空的属性,并只返回非空属性。当数据库中没有对应值时,该属性将被序列化为空字符串而不是null

请注意,non_empty选项除了将null值排除在外,还会排除空字符串、空集合、空数组等。如果你只想排除null值而保留空字符串,请使用non_null选项。

使用上述配置后,当属性的值为null时,它将被序列化为一个空字符串。如果属性的值为空字符串或空集合,则不会返回该属性。

SpringBoot Jackson 支持 Java8 LocalDate 格式和 null 转 “”

@Beanpublic ObjectMapper objectMapper() {ObjectMapper objectMapper = new ObjectMapper();// 1.将null转""objectMapper.getSerializerProvider().setNullValueSerializer(new JsonSerializer<Object>() {@Overridepublic void serialize(Object paramT, JsonGenerator paramJsonGenerator, SerializerProvider paramSerializerProvider) throws IOException {//设置返回null转为 空字符串""paramJsonGenerator.writeString("");}});// 2.支持java8 LocalDate时间objectMapper.findAndRegisterModules();return objectMapper;}

default-property-inclusion配置属性有以下几个选项:

  1. always: 始终包含属性,即使属性值为null或空值。

  2. non_null: 只包含非null的属性,其他空值(如空字符串、空集合、空数组)将被排除。

  3. non_absent: 包含非null和非缺失(absent)的属性。"缺失"指的是在JSON中未出现的属性。

  4. non_default: 包含非null和非默认值的属性。"默认值"是指Java对象字段的默认初始化值,例如0false、空字符串等。

  5. non_empty: 包含非null和非空的属性,其他空值(如空字符串、空集合、空数组)将被排除。

  6. null: 包含所有属性,即使属性值为null或空值。

在Spring Boot中,默认的配置选项是default-property-inclusion=null,即所有属性都被包含在序列化的结果中,包括null和空值。

根据提供的错误信息,看起来存在JSON解析错误。错误提示显示在解析过程中遇到了意外的字符'}',期望的是双引号以开始字段名。

这种情况通常发生在接收的JSON数据格式不正确时,可能是由于发送的数据格式错误或存在其他格式问题。请确保传递给JSON.parse()的数据是有效的JSON字符串,并符合JSON的语法要求。

您可以尝试检查传递给JSON.parse()event.data数据,并确保它是有效的JSON字符串。检查JSON字符串中是否存在不正确的字符、缺少引号或其他语法错误。

另外,您可以使用console.log(event.data)输出接收到的event.data数据,以便查看实际接收到的内容。这样可以更好地了解接收到的数据,以便进一步调试和定位问题。

如果您需要更详细的帮助,请提供实际接收到的event.data数据,以便我能够更准确地帮助您解决问题。

加群联系作者vx:xiaoda0423

仓库地址:https://github.com/webVueBlog/JavaGuideInterview

参考资料

[1]

https://link.jianshu.com?t=https://www.elastic.co/guide/en/elasticsearch/reference/5.5/cat.html: https://link.juejin.cn?target=https%3A%2F%2Flink.jianshu.com%3Ft%3Dhttps%3A%2F%2Fwww.elastic.co%2Fguide%2Fen%2Felasticsearch%2Freference%2F5.5%2Fcat.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/5205.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字化时代,如何做好用户体验与应用性能管理​

引言 随着数字化时代的到来&#xff0c;各个行业的应用系统从传统私有化部署逐渐转向公有云、行业云、微服务&#xff0c;这种变迁给运维部门和应用部门均带来了较大的挑战。基于当前企业 IT 运维均为多部门负责&#xff0c;且使用多种运维工具&#xff0c;因此&#xff0c;当…

Databend 开源周报第 102 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 为指定列创建 B…

极值理论 EVT、POT超阈值、GARCH 模型分析股票指数VaR、条件CVaR:多元化投资组合预测风险测度分析...

全文链接&#xff1a;http://tecdat.cn/?p24182 本文用 R 编程语言极值理论 (EVT) 以确定 10 只股票指数的风险价值&#xff08;和条件 VaR&#xff09;&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。 使用 Anderson-Darling 检验对 10 只股票的组合数据进行…

【文生图系列】stable diffusion webui 汉化(双语)教程

文章目录 安装双语插件下载json源文件设置双语 这篇博文记录于我成功安装双语插件之后&#xff0c;所以以下的示例页面均是双语。汉化教程分为三步&#xff0c;安装插件&#xff0c;JSON源文件下载和最后一步的双语设置。 安装双语插件 在扩展&#xff08;extensions&#xf…

k8s如何访问 pod 元数据

如何访问 pod 元数据 **我们在 pod 中运行容器的时候&#xff0c;是否也会有想要获取当前 pod 的环境信息呢&#xff1f;**咱们写的 yaml 清单写的很简单&#xff0c;实际上部署之后&#xff0c; k8s 会给我们补充在 yaml 清单中没有写的字段&#xff0c;那么我们的 pod 环境信…

数学建模-典型相关分析

上节回顾 论文&#xff1a;常州大学一等奖淡水养殖… 要进行 pearson 相关系数 画散点图、折线图看是否相关检验正态分布满足上述&#xff0c;利用pearson相关系数 刚开始推导不会没关系&#xff0c;会应用就行&#xff0c;推导过程略&#xff0c;之后学习了后续知识&#xff…

❤️创意网页:HTML5,canvas创作科技感粒子特效(科技感粒子、js鼠标跟随、粒子连线)

✨博主&#xff1a;命运之光 &#x1f338;专栏&#xff1a;Python星辰秘典 &#x1f433;专栏&#xff1a;web开发&#xff08;简单好用又好看&#xff09; ❤️专栏&#xff1a;Java经典程序设计 ☀️博主的其他文章&#xff1a;点击进入博主的主页 前言&#xff1a;欢迎踏入…

Ubuntu 的安装及其设置

文章目录 安装 Ubuntu屏幕分辨率设置修改软件源服务器锁屏时间设置设置 dash跨系统拖拽复制文件的设置 安装 Ubuntu 首先安装 VMware 虚拟机&#xff0c;虚拟机的安装比较简单&#xff0c;一步步点击Next即可完成安装。 安装完成后启动虚拟机&#xff0c;点击创建新的虚拟机。…

AC+AP 旁挂式连接配置(华为)

AR1路由器配置 # interface GigabitEthernet0/0/0 ip address 10.1.30.1 255.255.255.0 ip route-static 10.1.20.0 255.255.255.0 10.1.30.2 # LSW1核心交换机 # dhcp enable vlan batch 10 20 30 interface Vlanif20 ip address 10.1.20.1 255.255.255.0 dhcp select in…

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测

回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测 目录 回归预测 | MATLAB实现基于ELM-Adaboost极限学习机结合AdaBoost多输入单输出回归预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现基于ELM-Adaboost极限学…

模拟面试2

1.说一说ArrayList的实现原理&#xff1f; ArrayList底层基于数组实现&#xff0c;内部封装了Object类型的数组&#xff0c;实现了list接口&#xff0c;通过默认构造器创建容器时&#xff0c;该数组被初始化为一个空数组&#xff0c;首次添加数据时再将其初始化为容量为10的数组…

【个人笔记】linux的cd命令与目录结构理解

cd命令 cd&#xff08;英文全拼&#xff1a;change directory&#xff09;命令用于改变当前工作目录的命令&#xff0c;切换到指定的路径。 若目录名称省略&#xff0c;则变换至使用者的 home 目录 (也就是刚 login 时所在的目录)。 另外&#xff0c;~ 也表示为 home 目录 的…

three.js学习记录(基础)

前言&#xff1a; 页面渲染3D特效&#xff0c;可以从各种图表库&#xff08;例如ECharts&#xff09;中寻找各种适用的模版&#xff0c;也可以寻找第三方插件。。。 一直以来都对three.js充满向往&#xff0c;终于偷闲找了个借口学了起来 参考资料 Three.js – JavaScript 3D…

什么?微信朋友圈能够一键转发了?

作为「国民级」聊天软件&#xff0c;微信朋友圈功能一直备受关注&#xff0c;毕竟社交 3 大巨头中&#xff0c;QQ 和微博都可以转发动态。那微信朋友圈能不能也像 QQ 空间这样&#xff0c;点击转发能分享到 QQ、微信和朋友圈呢&#xff1f; 那到底朋友圈转发怎么个转法&#xf…

流程图实现,基于vue2实现的流程图

1.基本思路 flex布局 伪元素实现竖直的连接线组件递归 2.效果图 2.1基础的&#xff08;未截全&#xff0c;大致长这样&#xff09; 2.2带有收缩功能的&#xff0c;可以展开和收缩并显示数量 3.待需要优化的点&#xff0c;根节点居中是基于整个流程图大小的来居中的&#xf…

使用 appium 进行微信小程序的自动化测试

目录 前言&#xff1a; 微信小程序结构 自动化用例的调整 示例代码 后记 前言&#xff1a; 微信小程序是一种流行的移动应用程序&#xff0c;它在移动设备上提供了丰富的功能和用户体验。为了确保微信小程序的质量和稳定性&#xff0c;自动化测试是必不可少的一环。Appiu…

VCSEL器件的常见参数有哪些?如何测试?

概述 垂直腔面发射激光器(VCSEL)是一种激光发射方向垂直于P-N结平面,而谐振腔面平行于P-N结平面的半导体激光器,它属于面发射激光器的一种。而EEL边射型激光器的光则是沿着水平方向,由芯片的边缘射出。与EEL相比, VCSEL的生产过程更具经济效益并且响应快,因此在越来越多的应用中…

element-ui message消息提示组件 ①延长提示消息在页面停留时间②提示消息换行

以实现下面的效果为示例 完整代码&#xff1a; let msgList ["数据1被引用", "数据2被引用"];// 使用html的换行标签拼接信息&#xff0c;默认行距太小&#xff0c;此处用两个<br/><br/>let message 以下数据不能删除&#xff0c;原因是&…

2023出海增长背后的隐忧

2023出海增长背后的隐忧 2023.7.19版权声明&#xff1a;本文为博主chszs的原创文章 今年出口逆势增长的领域&#xff0c;新能源车、锂电池、太阳能电池&#xff0c;号称新三样&#xff0c;有数据支撑&#xff0c;看起来鼓舞人心。 见&#xff1a;外贸出口“新三样”&#xf…

【半监督医学图像分割 2023 CVPR】PatchCL

文章目录 【半监督医学图像分割 2023 CVPR】PatchCL摘要1. 简介2. 相关工作2.1 半监督学习2.2 对比学习 3. 方法3.1 类感知补丁采样3.2 伪标记引导对比损失3.3 总体学习目标3.4 伪标号生成与求精 4. 实验5. 结果 【半监督医学图像分割 2023 CVPR】PatchCL 论文题目&#xff1a;…