当前位置: 首页 > news >正文

问题记录-Java后端

问题记录

目录

  • 问题记录
    • 1.多数据源使用事务注意事项?
    • 2.mybatis执行MySQL的存储过程?
    • 3.springBoot加载不到nacos配置中心的配置问题
    • 4.服务器产生大量close_wait情况

1.多数据源使用事务注意事项?

  • 问题:在springBoot项目中多表处理数据时使用@Transaction注解处理事务会导致连不上指定的库,访问失败。
    在这里插入图片描述

  • 原因:配置动态多数据源导致事务处理不知道走哪一个TransactionManager

  • 解决方案:
    1.在配置多数据源文件中,统一在事务管理器上也指定。
    在这里插入图片描述
    2.找到使用事务的地方,在Transactional注解内加入 transactionManager = “xxxTransactionManager” ,指向对应的事务就可以了。
    在这里插入图片描述

2.mybatis执行MySQL的存储过程?

  • 问题:在执行存储过程使用stateMentType = ”STATEMENT“ 参数时报错
    在这里插入图片描述
  • 原因:
    STATEMENT是非预编译的直接执行sql,不能使用#{},使用${}。
    PREPARED:预处理,参数,进行预编译,获取数据:#—–PreparedStatement:默认
    CALLABLE:执行存储过程———CallableStatement
  • 解决方案:更改statementType类型,或者改变动态入参方式。如果没有参数形式用哪种类型都可以。

3.springBoot加载不到nacos配置中心的配置问题

  • 问题:首先报错信息打印是can not find primary datasource,
    cloud版本:2021.0.5.0 对应 nacos:2.2.0以上 版本太低会出现兼容问题。
    在这里插入图片描述
  • 原因:一开始分析找不到主数据源是因为没有设置primary:master,设置后还是出现问题。再分析可能没加载到配置文件,接下来通过nacos加载一步步分析。
    • 首先在NacosPropertySourceBuilder下的loadNacosData方法中打上断点发现this.configService.getConfig返回的data为空, 侧面证明了确实没有读取到nacos中的配置信息
      在这里插入图片描述
    • 然后再进去getConfig一步步看哪个地方获取失败,进入NacosConfigService的getConfigInner方法里面,就是具体的拉取配置的实现,nacos首先是通过LocalConfigInfoProcessor.getFailover的方法获取本地的配置, 当本地配置返回空时才会去获取nacos客户端的配置,而this.worker.getServerConfig这个方法,就是进行获取远端的配置信息, 通过断点发现response的返回也是空的,那么我继续下进入getServerConfig中
      在这里插入图片描述
    • 进入到queryConfig方法时发现了问题,通过ConfigQueryRequest.build方法生成的ConfigQueryRequest请求, 在返回时竟然返回ErrorCode:300, message 为 config data not exist, 这就是表示我传递三个参数, dataId, group, tenant 出现了问题
      在这里插入图片描述
    • 再回去nacos中反复检查发现命名空间有多个,bootstarp配置文件并没有指定所以加入namespace标签解决问题。
      在这里插入图片描述

4.服务器产生大量close_wait情况

  • 问题:运营人员突然找我说系统进不去了,我看项目正常并没有错误日志打印,没有其它日志打印,只有xxl-job还在执行有日志打印。第一反应项目不正常出现假死情况。
  • 原因:
    ①利用jstack查看线程,再用top查看系统负载和cpu占用情况一切都正常。
    ②排除了业务代码的问题,需要跳出业务代码去查问题,既然没有请求,那就先从网络开始查起,使用netstat -aonp命令查看发现大量close_wait产生,查阅相关资料,因为linux中一切皆为文件,一直产生导致tcp队列溢出。 查看tcp队列是否溢出命令:netstat -s | egrep “listen|LISTEN”
    ③查看tcp队列当前情况:ss -lnt 会出现两个值Recv-Q和Send-Q
    Recv-Q代表当前全连接队列的大小,也就是三次握手完成,目前在全连接队列中等待被应用程序accept的socket个数。
    Send-Q代表全连接队列的最大值,应用程序可以在创建ServerSocket的时候指定,tomcat有默认大小,这时Recv-Q会远远大于Send-Q。
  • 解决方案:
    设置超时时间
    server:port: 8988tomcat:uri-encoding: UTF-8connection-timeout: 20000   # 默认值20s 设置http超时时间(即keep-alive超时时间),没有任何活动则tomcat关闭连接protocol-header: HTTP/1.1servlet:session:timeout: 120s   # 会话超时时间,默认为30min  与客户端http断开
    

    另一种情况:近期项目在做信创改造时切换数据源,连接MySQL失败,导致项目产生大量close_wait。原因是同事开发时没有考虑连接报错时数据库怎么关闭连接导致产生大量close_wait,这种代码层面考虑不全不做过多概述,用try-catch-finally包住并在finally下关闭连接。

相关文章:

问题记录-Java后端

问题记录 目录 问题记录1.多数据源使用事务注意事项?2.mybatis执行MySQL的存储过程?3.springBoot加载不到nacos配置中心的配置问题4.服务器产生大量close_wait情况 1.多数据源使用事务注意事项? 问题:在springBoot项目中多表处理数…...

李春葆《数据结构》-课后习题代码题

一:假设不带权有向图采用邻接矩阵 g 存储,设计实现以下功能的算法: (1)求出图中每个顶点的入度。 代码: void indegree(MatGraph g){int i,j,n;printf("各个顶点的入度:\n");for(i…...

51c~C语言~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12652943 一、嵌入式开发中的C语言编译器 如果你和一个优秀的程序员共事,你会发现他对他使用的工具非常熟悉,就像一个画家了解他的画具一样。----比尔.盖茨1 不能简单的认为是个工具 嵌入式程序开发…...

【Python】构建事件驱动架构:用Python实现实时应用的高效系统

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 事件驱动架构(Event-Driven Architecture,EDA)是一种基于事件流动进行系统设计的模式,广泛应用于游戏开发、实时监控和分布式系统中。它通过解耦事件的生产者和消费者,提升系统的可扩展性和灵活性。本文章从…...

Git(一)基本使用

目录 一、使用git -v 查看安装git版本 二、使用mkdir 创建一个文件,并使用 git init 在该目录下创建一个本地仓库, 三、通过git clone命令接入线上仓库 四、使用git status查看仓库状态信息 五、利用echo写入一个文件 并使用cat进行查看 【Linux】e…...

HarmonyOS应用开发者基础认证,Next版本发布后最新题库(10月8日更新题库未收录)

笔者会尽量找到答案的出处,力求答案准确无误。有些题目答案可能有错,也有一些笔者实在找不到出处,也不知道答案的,如果读者发现错误或有补充建议,欢迎评论或私信笔者。您的每一条反馈都是宝贵的,能够帮助笔…...

【PGCCC】Postgresql BRIN 索引原理

前言 postgresql 提供了块级索引(简称 BRIN),主要适用于类似时序数据之类的,有着天然的顺序,而且都是添加写的场景。相比于 btree 索引,它的体积小得多,非常适用于大数据量的场景。 原理 pos…...

腾讯云 AI 代码助手:产品研发过程的思考和方法论

一、文章摘要 本文将详细阐述 腾讯云 AI 代码助手的历史发展形态与产品整体架构,并从技术、研发方法论的角度分别阐述了产品的研发过程。 全文阅读约 5~8 分钟。 二、产品布局 AI 代码助手产品经历了三个时代的发展 第一代诸如 Eclipse、Jetbrains、V…...

Matlab 深度学习 PINN测试与学习

PINN 与传统神经网络的区别 与传统神经网络的不同之处在于,PINN 能够以微分方程形式纳入有关问题的先验专业知识。这些附加信息使 PINN 能够在给定的测量数据之外作出更准确的预测。此外,额外的物理知识还能在存在含噪测量数据的情况下对预测解进行正则…...

【Angular】async详解

在 Angular 中,async 关键字用于定义异步函数,通常与 await 一起使用来处理 Promise。这使得异步代码看起来更像同步代码,从而更容易理解和维护。 基本用法 定义异步函数:使用 async 关键字。等待 Promise 解析:使用…...

抖音SEO矩阵系统:开发技术分享

市场环境剖析 短视频SEO矩阵系统是一种策略,旨在通过不同平台上的多个账号建立联系,整合同一品牌下的各平台粉丝流量。该系统通过遵循每个平台的规则和内容要求,输出企业和品牌形象,以矩阵形式增强粉丝基础并提升商业价值。抖音作…...

SpringBoot集成minio,并实现文件上传

SpringBoot集成minio 什么是minioSpringBoot集成minio1、引入minio依赖2、配置Minio相关参数3、在代码里读取自定义的minio配置4、在minio配置类里,注册ConfigurationProperties实现文件上传到minio1、利用SpringMVC实现接口的异常全局处理2、返回文件路径给前端3、返回文件流…...

centos为用户赋予sudo权限

在CentOS系统中,要为用户test赋予sudo权限,你需要按照以下步骤操作: 确保sudo包已安装: 如果系统中没有安装sudo,你可以通过yum(CentOS 7及以下)或dnf(CentOS 8及以上)来…...

SAP 零售方案 CAR 系统的介绍与研究

前言 当今时代,零售业务是充满活力和活力的业务领域之一。每天,由于销售运营和客户行为,它都会生成大量数据。因此,公司迫切需要管理数据并从中检索见解。它将帮助公司朝着正确的方向发展他们的业务。 这就是为什么公司用来处理…...

Android Framework AudioFlinge 面试题及参考答案

目录 请解释什么是 AudioFlinger? AudioFlinger 在 Android 系统中的位置是什么? AudioFlinger 的主要职责有哪些? AudioFlinger 如何管理音频流? 在 AudioFlinger 中,什么是音频会话? 请简述 AudioFlinger 的工作流程。 AudioFlinger 是如何与硬件交互的? 在 A…...

嵌入式系统与单片机工作原理详解

随着现代科技的发展,嵌入式系统已经深入到我们日常生活中的方方面面。无论是智能家居、汽车电子,还是工业控制、医疗设备,都离不开嵌入式系统的支持。而单片机作为嵌入式系统的核心组件,是实现这些功能的关键之一。本文将详细介绍…...

Diving into the STM32 HAL-----Timers笔记

嵌入式设备会按时间执行某些活动。对于真正简单且不准确的延迟,繁忙的循环可以执行任务,但是使用 CPU 内核执行与时间相关的活动从来都不是一个聪明的解决方案。因此,所有微控制器都提供专用的硬件外设:定时器。定时器不仅是时基生…...

对比 MyBatis 批处理 BATCH 模式与 INSERT INTO ... SELECT ... UNION ALL 进行批量插入

前言 在开发中,我们经常需要批量插入大量数据。不同的批量插入方法有不同的优缺点,适用于不同的场景。本文将详细对比两种常见的批量插入方法: MyBatis 的批处理模式。使用 INSERT INTO ... SELECT ... UNION ALL 进行批量插入。 MyBatis …...

AI大模型如何重塑软件开发流程与模式

AI大模型如何重塑软件开发流程与模式 随着人工智能技术的不断发展,AI大模型正在逐步改变软件开发的方式。传统的软件开发流程,尽管经过多年的演进,使得许多企业能够顺利进行软件开发,但仍然面临着许多挑战,例如开发周…...

NUXT3学习日记五(composables、$fetch和useAsyncData、useFetch,lazy,refresh)

composables 在 Nuxt 3 中,composables(组合式函数)是一种用于封装和复用有状态逻辑的机制。它类似于 Vue 3 中的组合式 API,允许你将相关的逻辑(如数据获取、状态管理等)提取到独立的函数中,然…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

反射获取方法和属性

Java反射获取方法 在Java中,反射(Reflection)是一种强大的机制,允许程序在运行时访问和操作类的内部属性和方法。通过反射,可以动态地创建对象、调用方法、改变属性值,这在很多Java框架中如Spring和Hiberna…...

ios苹果系统,js 滑动屏幕、锚定无效

现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

#Uniapp篇:chrome调试unapp适配

chrome调试设备----使用Android模拟机开发调试移动端页面 Chrome://inspect/#devices MuMu模拟器Edge浏览器:Android原生APP嵌入的H5页面元素定位 chrome://inspect/#devices uniapp单位适配 根路径下 postcss.config.js 需要装这些插件 “postcss”: “^8.5.…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...

PostgreSQL——环境搭建

一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在&#xff0…...