草庐IT

再一次

全部标签

记录一次SpringBoot项目中因为server.max-http-header-size导致的内存溢出 并使用JVM命令以及Jprofile排查过程

这段时间不太忙,记录一下前段时间遇到的一个问题,有一次经理给我说线上服务器收到报警,内存已经达到了90%,而且还有增长的可能,平时的内存基本上在50%左右,一下子增加将近一倍的量,首先猜想可能是某个对象没有被释放掉或者说泄漏了,而且内存泄漏一般发生在堆内存的情况也比较多一点,下面介绍处理的过程,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。1、首先先在服务器中执行top-c命令,配合Shift+P键,一般异常的几个进程会排到前几位可以看到PID为2817的这个进程占用的MEM,也就是memory内存数值比较高,由此锁定了这个2817进程2、然后使用jstat命令,查看GC垃圾回收

java - quartz 工作比。立即执行一次性任务的线程

假设我有一些工作单元需要完成,我想相对于我的应用程序的其余部分异步完成它,因为它可能需要很长时间,例如10秒到2分钟。为此,我正在考虑两种选择:安排一个Quartz作业,将一个简单的触发器设置为仅触发一次并尽快触发。创建一个Runnable实例,将其交给Thread,然后调用run();。在上述情况下,我有以下问题:使用Quartz作业给我带来了什么线程没有的东西?使用runable给我带来了什么,而使用quartz作业却没有?就最佳实践而言,应该使用什么标准来决定此用例的Quartz作业和可运行对象? 最佳答案 使用Quartz,

java - 使用正则表达式查找第一次出现

我希望能够找到m²的第一次出现,然后是它前面的数字,可以是整数或小数。例如"sometext"38m²"sometext","sometext"48,8m²"sometext","sometext"48m²"sometext",etc..我目前拥有的是:\d\d,\d\s*(\m\u00B2)|\d\d\s*(\m\u00B2)虽然我猜它可以用findFirst()修复,但现在可以找到所有出现的地方。对如何改进Regex部分有什么想法吗? 最佳答案 要获得第一个匹配项,您只需在ifblock中使用Matcher#find():Str

Java while(true) 循环在线程内只执行一次

我正在尝试用Java实现一个简单的客户端-服务器应用程序。代码如下:客户端.javapublicclassClientimplementsRunnable{privateStringhostName;privateintportNumber;privateStringmessage;privateSocketsocket;privatePrintWriterwriter;privateBufferedReaderreader;publicClient(StringhostName,intportNumber,Stringmessage){this.hostName=hostName;t

java - 如何仅单击一次鼠标即可编辑 JXTreeTable 单元格?

我想使用JComboBox作为JXTreeTable中的单元格编辑器.它适用于标准DefaultCellEditor(即开始点击次数等于2)。现在我希望只需单击一次即可编辑该列。所以我在我的代码中添加了一个cellEditor.setClickCountToStart(1);语句。这是我的SSCCE:importjava.awt.BorderLayout;importjava.awt.Dimension;importjavax.swing.DefaultCellEditor;importjavax.swing.JComboBox;importjavax.swing.JFrame;imp

一次性搞懂什么是AIGC!

你知道什么是AIGC吗?不知道?没关系,我来告诉你。AIGC就是人工智能生成内容(ArtificialIntelligenceGenerativeContent),也就是让AI自己动手创作各种各样的内容,比如图片、视频、音乐、文字等等。听起来很酷吧?那么,AIGC是怎么做到的呢?下面,我就用最简单的语言,给你介绍一下AIGC的基本概念和常见应用。AI工作原理AI,就是人工智能。它的目标是让机器能够像人一样有智能,能够看、听、说、想、做。要实现这个目标,AI需要用到三个重要的技术:深度学习、神经网络和生成式对抗网络(GAN)。神经网络神经网络就是模仿人脑的结构,用一些小点(节点)和线(链接)来连

故障解析丨一次死锁问题的解决

背景业务端遇到报错为"Deadlockfoundwhentryingtogetlock;tryrestartingtransaction"则表明有死锁发生名称配置数据库版本GreatSQL8.0.26隔离级别Read-Commitedinnodbstatus日志greatsql>showengineinnodbstatus\G***************************1.row***************************Type:InnoDBName:Status:=====================================2024-01-2816:55:3

java - 是否优化过一次使用的变量定义?

考虑以下方法:privatestaticlongmaskAndNegate(longl){intnumberOfLeadingZeros=Long.numberOfLeadingZeros(l)longmask=CustomBitSet.masks[numberOfLeadingZeros];longresult=(~l)&mask;returnresult;}该方法可以简写为:privatestaticlongmaskAndNegate(longl){return(~l)&CustomBitSet.masks[Long.numberOfLeadingZeros(l)];}这两种表示在

java - 使用构建器模式最多设置一次值

Java中是否有标准做法,在使用构建器模式时,确保成员变量最多设置一次。我需要确保setter被调用0次或1次,但不会更多。我想抛出某种类型的RuntimeException但担心同步问题以及该领域的最佳实践。 最佳答案 如果用户像您描述的那样以非法方式调用方法,引发异常没有什么错误,但它不是非常优雅。构建器模式背后的想法是让用户编写流畅、可读的对象定义,编译时安全是其中的重要组成部分。如果用户不能相信构建器即使编译也会成功,那么您将引入额外的复杂性,用户现在需要理解和考虑。有几种方法可以完成您所描述的内容,让我们探索一下:让用户做

加速插入 - 一次插入列表

在插入多个数据时,如何加快时间?我从Excel获取数据,然后将其存储在列表中。在循环中,我为每行打开连接,然后关闭插入功能。插入函数逐行插入数据。有时此操作需要大量时间。我这样的插入循环privatevoidbtnSave_Click(objectsender,RoutedEventArgse){if(cmpList.Count==0){MessageBoxHelper.ShowError("Listcannotbeinserted");return;}foreach(varitemincmpList){item.StartDate=dpStart.SelectedDate.Value;ite