当前位置: 首页 > 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,允许你将相关的逻辑(如数据获取、状态管理等)提取到独立的函数中,然…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

网络六边形受到攻击

大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...

OpenLayers 可视化之热力图

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

C++_核心编程_多态案例二-制作饮品

#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为&#xff1a;煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例&#xff0c;提供抽象制作饮品基类&#xff0c;提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

2025季度云服务器排行榜

在全球云服务器市场&#xff0c;各厂商的排名和地位并非一成不变&#xff0c;而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势&#xff0c;对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析&#xff1a; 一、全球“三巨头”…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...