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

tomcat temp临时文件不清空,占用硬盘,jdk字体内存泄漏

JSP老旧项目迁移过来的代码,生成海报,会读取图片,读取字体文件,绘制图片,会生成大量临时文件,内存泄漏。
方案一,服务器定时删除temp临时文件夹
方案二,图片、字体改用静态类读取文件,并且释放相关资源文件。

在这里插入图片描述
导致原因
https://bugs.java.com/bugdatabase/view_bug.do?bug_id=8209113

package com.huida.train.utils;import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.io.IOException;@Component
public class ResourceUtil {// 使用volatile保证多线程环境下的可见性,防止指令重排private static volatile BufferedImage activityShareBannerImage;private static volatile Font sourceHanSansFont;private static volatile BufferedImage backgroundImage;private static volatile Font rdFont;/*** 方正小标宋字体*/private static volatile Font fzxbsjwFont;/*** 方正黑体*/private static volatile Font htFont;/*** 仿宋*/private static volatile Font fsFont;private static volatile BufferedImage bottomTextImg;private ResourceUtil() {// 私有构造函数,防止外部实例化}public static BufferedImage getBottomTextImg() {if (bottomTextImg == null) {synchronized (ResourceUtil.class) {if (bottomTextImg == null) {try {ClassPathResource resource = new ClassPathResource("static/qr/bottomText.png");bottomTextImg = ImageIO.read(resource.getInputStream());} catch (IOException e) {throw new RuntimeException(e);}}}}return bottomTextImg;}public static Font getFsFont() {if (fsFont == null) {synchronized (ResourceUtil.class) {if (fsFont == null) {try {ClassPathResource fsFontResource = new ClassPathResource("static/font/fs_gbk.TTF");fsFont = Font.createFont(Font.TRUETYPE_FONT, fsFontResource.getInputStream());} catch (IOException | FontFormatException e) {throw new RuntimeException(e);}}}}return fsFont;}public static Font getHtFont() {if (htFont == null) {synchronized (ResourceUtil.class) {if (htFont == null) {try {ClassPathResource fsFontResource = new ClassPathResource("static/font/ht.TTF");htFont = Font.createFont(Font.TRUETYPE_FONT, fsFontResource.getInputStream());} catch (IOException | FontFormatException e) {throw new RuntimeException(e);}}}}return htFont;}public static Font getFzxbsjwFont() {if (fzxbsjwFont == null) {synchronized (ResourceUtil.class) {if (fzxbsjwFont == null) {try {ClassPathResource fsFontResource = new ClassPathResource("static/font/FZXBSJW.TTF");fzxbsjwFont = Font.createFont(Font.TRUETYPE_FONT, fsFontResource.getInputStream());} catch (IOException | FontFormatException e) {throw new RuntimeException(e);}}}}return fzxbsjwFont;}public static Font getSimsunFont() {if (rdFont == null) {synchronized (ResourceUtil.class) {if (rdFont == null) {try {ClassPathResource fsFontResource = new ClassPathResource("static/font/simsun.ttf");rdFont = Font.createFont(Font.TRUETYPE_FONT, fsFontResource.getInputStream());} catch (IOException | FontFormatException e) {throw new RuntimeException(e);}}}}return rdFont;}public static BufferedImage getBackgroundImage() {if (backgroundImage == null) {synchronized (ResourceUtil.class) {if (backgroundImage == null) {try {ClassPathResource resource = new ClassPathResource("static/qr/backgroundImage.png");backgroundImage = ImageIO.read(resource.getInputStream());} catch (IOException e) {throw new RuntimeException(e);}}}}return backgroundImage;}public static BufferedImage getActivityShareBannerImage() {if (activityShareBannerImage == null) {synchronized (ResourceUtil.class) {if (activityShareBannerImage == null) {try {ClassPathResource resource = new ClassPathResource("static/qr/activity_share_banner.png");activityShareBannerImage = ImageIO.read(resource.getInputStream());} catch (IOException e) {throw new RuntimeException(e);}}}}return activityShareBannerImage;}public static Font getSourceHanSansFont() {if (sourceHanSansFont == null) {synchronized (ResourceUtil.class) {if (sourceHanSansFont == null) {try {ClassPathResource fsFontResource = new ClassPathResource("static/font/SourceHanSans-Regular.otf");sourceHanSansFont = Font.createFont(Font.TRUETYPE_FONT, fsFontResource.getInputStream());} catch (IOException | FontFormatException e) {throw new RuntimeException(e);}}}}return sourceHanSansFont;}
}
 @Overridepublic String getStrainingShareCode2(Map<String, String> map) throws IOException, FontFormatException {String trainingCourseId = map.get("trainingCourseId");TrainingCourse trainingCoursePo = trainingCourseMapper.select(trainingCourseId);if (trainingCoursePo == null) {throw new TipUserException("活动-培训已被删除或不可见");}BufferedImage activityShareBannerImage = ResourceUtil.getActivityShareBannerImage();// 开启画图Graphics2D graphics = activityShareBannerImage.createGraphics();//字体样式Font font = ResourceUtil.getSourceHanSansFont().deriveFont(Font.BOLD, 27);//字体颜色float[] color = Color.RGBtoHSB(58, 58, 58, null);graphics.setColor(Color.getHSBColor(color[0], color[1], color[2]));graphics.setFont(font);String address = "";//地点if (trainingCoursePo.getAddress().length() >= 16) {address = trainingCoursePo.getAddress().subSequence(0, 14) + "...";} else {address = trainingCoursePo.getAddress();}drawWrapString(graphics, address, 50, 220, activityShareBannerImage.getWidth() - 100, null, null);//时间drawWrapString(graphics, DateUtils.dateTime(trainingCoursePo.getStartTime()) + " ~ " + DateUtils.dateTime(trainingCoursePo.getEndTime()), 50, 275, activityShareBannerImage.getWidth() - 100, null, null);//报名人数Long enrollNum = trainingCoursePo.getEnrollNum();if (ObjectUtils.isNull(enrollNum)) {enrollNum = 0L;}drawWrapString(graphics, enrollNum.toString() + "人报名", 50, 330, activityShareBannerImage.getWidth() - 100, null, null);
//        String base64 = ImgUtil.toBase64DataUri(activityShareBannerImage, "png");
//        return base64;// 指定文件路径String filePath = HuiDaConfig.getTrainUploadPath() + "/shareCode/" + trainingCoursePo.getRecordId() + "/" + trainingCoursePo.getRecordId() + "_" + enrollNum + ".png";File outputfile = new File(filePath);if (!outputfile.exists()) {String deleteFilePath = HuiDaConfig.getTrainUploadPath() + "/shareCode/" + trainingCoursePo.getRecordId();File deleteFileFile = new File(deleteFilePath);FileUtils.deleteDirectory(deleteFileFile);File parentDir = outputfile.getParentFile();if (!parentDir.exists()) {parentDir.mkdirs();}ImageIO.write(activityShareBannerImage, "png", outputfile);}activityShareBannerImage.flush();graphics.dispose();return filePath;}

相关文章:

tomcat temp临时文件不清空,占用硬盘,jdk字体内存泄漏

JSP老旧项目迁移过来的代码&#xff0c;生成海报&#xff0c;会读取图片&#xff0c;读取字体文件&#xff0c;绘制图片&#xff0c;会生成大量临时文件&#xff0c;内存泄漏。 方案一&#xff0c;服务器定时删除temp临时文件夹 方案二&#xff0c;图片、字体改用静态类读取文件…...

元宇宙中的去中心化应用:Web3的未来角色

随着科技的快速发展&#xff0c;元宇宙已经成为了全球关注的焦点&#xff0c;成为一种新型的虚拟世界互动平台。与此同时&#xff0c;Web3作为新一代互联网技术&#xff0c;借助去中心化的理念&#xff0c;为元宇宙的发展提供了技术支撑。从虚拟互动到数字身份管理&#xff0c;…...

中关村科金智能客服机器人如何解决客户个性化需求与标准化服务之间的矛盾?

客户服务的个性化和标准化之间的矛盾一直是一个挑战。一方面&#xff0c;企业需要提供标准化的服务以保持运营效率和成本控制&#xff1b;另一方面&#xff0c;为了提升客户满意度和忠诚度&#xff0c;企业又必须满足客户的个性化需求。为此&#xff0c;中关村科金推出了智能客…...

【ROS2】坐标TF发布(动态)

1、创建目录 mkdir -p ~/ros/src/laoer_tf2、创建包 cd /home/laoer/ros/eg/src/cpp/laoer_tf ros2 pkg create --build-type ament_cmake laoer_tf \--dependencies rclcpp tf2_ros geometry_msgs \--license Apache-2.03、源码 3.1 TF消息TransformStamped 1)消息类型 …...

图解HTTP-HTTP状态码

状态码 状态码的职责是当客户端向服务器端发送请求时&#xff0c;描述返回的请求结果。 类别原因短语1XXInformational(信息状态码)接收的请求正在处理2XXSuccess&#xff08;成功状态码&#xff09;请求正常处理完毕4XXRedirection &#xff08;重定向状态码&#xff09;需要…...

SAP消息号 FD014 (抬头)没有指定国际标准货币代码 CNY

1、IDOC配置完成后&#xff0c; 2、业务下单-发货-开票&#xff08;2张&#xff09; 3、WE02 查看IDOC时发现 从报错看是货币代码设置问题。 4、解决&#xff1a; OY03 RMB和CNY同时勾选导致 RMB不勾选主要。...

GRUtopia:构建虚拟世界中的智能机器人社会

人工智能咨询培训老师叶梓 转载标明出处 人工智能讲师大模型讲师叶梓前沿技术分享&#xff1a;GRUtopia&#xff1a;构建虚拟世界中的智能机器人社会 随着Embodied AI&#xff08;具身智能&#xff09;领域的快速发展&#xff0c;对于能够在复杂环境中执行任务的机器人的需求日…...

华为:数字化转型只有“起点”,没有“终点”

上个月&#xff0c;我收到了一位朋友的私信&#xff0c;他询问我是否有关于华为数字化转型的资料。幸运的是&#xff0c;我手头正好收藏了一些&#xff0c;于是我便分享给他。 然后在昨天&#xff0c;他又再次联系我&#xff0c;并感慨&#xff1a;“如果当初我在进行企业数字…...

在开发嵌入式系统时,尤其是处理大数时,会遇到取值范围的问题。51单片机通常没有内建大整数支持,因此我们需要采用不同的方法来解决这一问题

00 两种可行方法分别是&#xff1a; 使用数组存储每一位数据并进行进位运算&#xff1a;通过将大数按位拆分成数组&#xff0c;然后实现逐位加法、进位等操作。使用符号变量进行计算&#xff1a;将数值分成低位和高位&#xff0c;分别用符号变量进行计算。 01&#xff1a;使用…...

STM32 与 AS608 指纹模块的调试与应用

前言 在嵌入式系统中&#xff0c;指纹识别作为一种生物识别技术&#xff0c;广泛应用于门禁系统、考勤机、智能锁等场景。本文将分享如何在 STM32F103C8T6 开发板上使用 AS608 指纹模块&#xff0c;实现指纹的录入和识别功能。 硬件准备 STM32F103C8T6 开发板AS608 指纹模块…...

腾讯PHP经典面试题(附答案)

腾讯PHP经典面试题&#xff08;附答案&#xff09; PHP开发工程师笔试试卷 姓名:PHP 一、PHP开发部分 1&#xff0e;合并两个数组有几种方式&#xff0c;试比较它们的异同 答&#xff1a; 1、array_merge() 2、’’ 3、array_merge_recursive array_merge 简单的合并数…...

LightGBM分类算法在医疗数据挖掘中的深度探索与应用创新(上)

一、引言 1.1 医疗数据挖掘的重要性与挑战 在当今数字化医疗时代,医疗数据呈爆炸式增长,这些数据蕴含着丰富的信息,对医疗决策具有极为重要的意义。通过对医疗数据的深入挖掘,可以发现潜在的疾病模式、治疗效果关联以及患者的健康风险因素,从而为精准医疗、个性化治疗方…...

【PCIe 总线及设备入门学习专栏 1.1 -- PCIe 基础知识 lane和link介绍】

文章目录 OverivewLane 和 LinkRC 和 RPPCIe controllerPCIE ControllerPHY模块 Inbound 和 OutboundPCIe transaction modelPIODMAP2P Overivew PCIe&#xff0c;即PCI-Express总线&#xff08;Peripheral Component Interconnect Express&#xff09;&#xff0c;是一种高速…...

PCDN 适合哪些人群?

家用宽带用户:对于家中有宽带&#xff0c;且宽带闲置时间较多的用户来说&#xff0c;PCDN是一个非常好的赚钱方式。只要你有足够的带宽和一台稳定的设备&#xff0c;就可以轻松参与。 小型网络运营者:如果你是小型网络运营者&#xff0c;拥有大量的闲置带宽资源PCDN 可以帮助你…...

C++之红黑树模拟实现

目录 红黑树的概念 红黑树的性质 红黑树的查找效率 红黑树的实现 红黑树的定义 红黑树节点的插入 红黑树的平衡调整 判断红黑树是否平衡 红黑树整体代码 测试代码 上期我们学习了AVL树的模拟实现&#xff0c;在此基础上&#xff0c;我们本期将学习另一个数据结构-…...

一分钟快速解读LEED绿色建筑认证

一分钟快速解读LEED绿色建筑认证——引领未来建筑绿色革命的风向标 LEED&#xff0c;全称为“Leadership in Energy and Environmental Design”&#xff0c;是美国绿色建筑委员会&#xff08;USGBC&#xff09;开发并推广的一套国际公认的绿色建筑评估体系。它如同一座灯塔&am…...

C# 语法糖集锦

文章目录 1、自动属性(Auto - Properties)2、对象和集合初始化器(Object and Collection Initializers)3、匿名类型(Anonymous Types)4、扩展方法(Extension Methods)5、Lambda 表达式(Lambda Expressions)6、空合并运算符(??)和空条件运算符(?.)7、隐式类型数…...

centos制作离线安装包

目录 1.yumdownloader与repotrack怎么选择&#xff1f; yumdownloader --resolve repotrack 总结 2.环境准备 3.安装 1.yumdownloader与repotrack怎么选择&#xff1f; yumdownloader --resolve 和 repotrack 都是与 YUM&#xff08;Yellowdog Updater Modified&#xf…...

HTML5 学习资源

HTML5 学习资源 学习HTML5的资源丰富多样&#xff0c;以下是一些推荐的在线教程、书籍和社区论坛&#xff0c;帮助你更好地掌握HTML5。 11.1 在线教程和课程 MDN Web Docs&#xff1a; MDN HTML 教程提供详细的HTML5文档和实例&#xff0c;适合各个水平的开发者。 W3Schools…...

大模型(LLM)提示工程(Prompt Engineering)初识

大模型提示工程&#xff08;Prompt Engineering&#xff09;是指设计和优化给定任务的输入提示&#xff0c;以便从大型语言模型&#xff08;如GPT-4、GPT-3等&#xff09;中获得最佳输出。其核心目标是通过合理设计输入内容&#xff08;提示词或提示结构&#xff09;&#xff0…...

uni-app 统一请求处理 请求拦截器 响应拦截器 请求封装

封装API接口 import {http} from ../utils/request.js export function login(code){return http({url:/wx/getSession,method: GET,data:{code}}) }调用接口 import {login,test,phoneMessage,updateAvatar} from ../../api/user.js function userLogin(){ login(code.value…...

web 渗透学习指南——初学者防入狱篇

目录 一、学习方向和基础知识二、知识点详细总结三、学习流程和典型案例 案例1&#xff1a;SQL注入漏洞检测与利用案例2&#xff1a;XSS攻击检测与利用案例3&#xff1a;文件上传漏洞利用案例4&#xff1a;CSRF攻击实现 四、常用工具推荐和使用方法五、初学者实用学习资源六、渗…...

卷积神经网络入门指南:从原理到实践

目录 1 CNN的发展历史 2 CNN的基本原理 3 CNN核心组件 3.1 卷积操作基础 3.2 卷积层详解 3.3 高级卷积操作 3.3.1 分组卷积&#xff08;Group Convolution&#xff09; 3.3.2 深度可分离卷积&#xff08;Depthwise Separable Convolution&#xff09;&#xff1a; 3.3 池…...

vscode添加全局宏定义

利用vscode编辑代码时&#xff0c;设置了禁用非活动区域着色后&#xff0c;在一些编译脚本中配置的宏又识别不了 遇到#ifdef包住的代码就会变暗色&#xff0c;想查看代码不是很方便。如下图&#xff1a; 一 解决&#xff1a; 在vscode中添加全局宏定义。 二 步骤&#xff1a…...

Mysql InnoDB存储引擎中聚簇索引和非聚簇索引的区别

最核心的区别还是从需求角度来看比较好&#xff1a; 1.创建索引时 在创建表时&#xff0c;InnoDB存储引擎会根据不同情况&#xff0c;选择不同的列作为索引 &#xff08;1&#xff09;有主键&#xff0c;通过主键作为聚簇索引的索引键&#xff08;key) &#xff08;2&#xf…...

使用vcpkg安装opencv>=4.9后#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>无效

使用vcpkg安装opencv>4.9后#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>无效\无法查找或打开 至少从2024年开始&#xff0c;发布的vcpkg默认安装的opencv版本都是4.x版。4.8版本及以前&#xff0c;vcpkg编译后的opencv头文件目录是*/vcpkg/x64-win…...

opencv sdk for java中提示无stiching模块接口的问题

1、问题介绍 安卓项目中有新的需求&#xff0c;在 jni 中增加 stiching_detail.cpp 中全景拼接的实现。 但是在编译时&#xff0c;出现大量报错&#xff0c;如下截图所示 实际上&#xff0c;其他opencv的接口函数 例如 core dnn等都能正常使用&#xff0c;直觉上初步怀疑 ope…...

大恒相机开发(2)—Python软触发调用采集图像

大恒相机开发&#xff08;2&#xff09;—Python软触发调用采集图像 完整代码详细解读和功能说明扩展学习 这段代码是一个Python程序&#xff0c;用于从大恒相机采集图像&#xff0c;通过软件触发来采集图像。 完整代码 咱们直接上python的完整代码&#xff1a; # version:…...

gitlab克隆仓库报错fatal: unable to access ‘仓库地址xxxxxxxx‘

首次克隆仓库&#xff0c;失效了&#xff0c;上网查方法&#xff0c;都说是网络代理的问题&#xff0c;各种清理网络代理后都无效&#xff0c;去问同事&#xff1a; 先前都是直接复制的网页url当做远端url&#xff0c;或者点击按钮‘使用http克隆’ 这次对于我来说有效的远端u…...

代码随想录day27 贪心1

题目&#xff1a;455.分发饼干 376.摆动序列 53.最大子序和 需要重做&#xff1a;全部 贪心算法其实就是没有什么规律可言&#xff0c;所以大家了解贪心算法 就了解它没有规律的本质就够了。 不用花心思去研究其规律&#xff0c; 没有思路就立刻看题解。 理论基础 贪心的…...

Hive 部署

1 下载并安装 1.1 Hadoop安装 参考另一篇博客&#xff1a;Hadoop 部署 1.2 安装包下载 可通过下面网站下载&#xff1a; 官网&#xff1a;https://dlcdn.apache.org/hive/。清华源&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/apache/hive/。 比如下载apache-hive-4…...

SDK 指南

在前端开发中&#xff0c;SDK&#xff08;Software Development Kit&#xff0c;软件开发工具包&#xff09;是一个用于帮助开发者在特定平台、框架或技术栈中实现某些功能的工具集。 1. SDK 是什么&#xff1f; SDK 是一种开发工具包&#xff0c;它提供了开发人员实现某些功…...

unity Default constructor not found for type 的问题

文章目录 前言一、怎么解决&#xff1f;总结 前言 突然有一次打包PC的包出来&#xff0c;JSON就无法正常获取&#xff0c;后来找到原因&#xff1a; 应该是设置渲染等级相关的东西&#xff0c;不小心把剥离等级设置套高了。 一般情况不会出现&#xff0c;向我这种老爱unity 编…...

富文本编辑器实现表单非空校验

首先尝试使用form的rules规则去验证&#xff0c;发现未生效&#xff1b; <el-form ref"form" :disabled"readonly" :model"form" :rules"rules" label-width"120px"><el-form-item label"内容" prop&quo…...

使用uniapp开发微信小程序-框架搭建

最近要开发一个小程序&#xff0c;为了降低学习成本&#xff0c;最后还是选择使用uniapp来开发&#xff0c;但是由于电脑性能不行&#xff0c;实在不想多跑一个应用程序&#xff0c;就简单搭建了一个可以用vscode跑的uniapp项目。 项目整体技术栈&#xff1a;vue3 pinia type…...

华为浏览器(HuaweiBrowser),简约高效上网更轻松

华为浏览器是一款由华为公司自主研发的网页浏览工具&#xff0c;凭借其独特的设计理念和优质的用户体验&#xff0c;正在吸引越来越多的用户关注。这款基于Chromium技术打造的浏览器不仅继承了Chrome的高性能特质&#xff0c;更融入了华为自身的创新元素&#xff0c;为用户打造…...

SQLite

文章目录 1、什么是信息?2、 数据库模型3、sqLite 数据库4、 SQL 语句基础5、对数据库文件 SQL 语句:6、创建表:create 语句7、创建表:create 语句(设置主键)8、查看表: .table9、修改表: alter语句10、删除表:drop table 语句11、插入新行:insert into 语句(全部赋值)12、插入…...

uniapp下拉选择组件

目录 背景 实现思路 代码实现 配置项 使用 尾巴 背景 最近遇到一个这样的需求&#xff0c;在输入框中输入关键字&#xff0c;通过接口查询到结果之后&#xff0c;以下拉框列表形式展现供用户选择。查询了下uni-app官网和项目中使用的uv-ui库&#xff0c;没找到符合条件的…...

解决 vue3 中 echarts图表在el-dialog中显示问题

原因&#xff1a; 第一次点开不显示图表&#xff0c;第二次点开虽然显示图表&#xff0c;但是图表挤在一起&#xff0c;页面检查发现宽高只有100px,但是明明已经设置样式宽高100% 这可能是由于 el-dialog 还没有完全渲染完成&#xff0c;而你的 echarts 组件已经开始尝试渲染图…...

WebSSH:基于Go实现的高效Web SSH客户端指南

WebSSH&#xff1a;基于Go实现的高效Web SSH客户端指南 WebSSH 功能强大&#xff0c;Go 实现的一个WebSSH&#xff0c;支持文件上传下载 [这里是图片001] 项目地址: https://gitcode.com/gh_mirrors/webssh1/WebSSH 项目基础介绍&#xff1a; WebSSH是一个由Golang编写的高效…...

Hive其四,Hive的数据导出,案例展示,表类型介绍

目录 一、Hive的数据导出 1&#xff09;导出数据到本地目录 2&#xff09;导出到hdfs的目录下 3&#xff09;直接将结果导出到本地文件中 二、一个案例 三、表类型 1、表类型介绍 2、内部表和外部表转换 3、两种表的区别 4、练习 一、Hive的数据导出 数据导出的分类&…...

shell脚本定义特殊字符导致执行mysql文件错误的问题

记得有一次版本发布过程中有提供一个sh脚本用于一键执行sql文件&#xff0c;遇到一个shell脚本定义特殊字符的问题&#xff0c;sh脚本的内容类似以下内容&#xff1a; # 数据库ip地址 ip"127.0.0.1" # 数据库密码 cmdbcmdb!#$! smsm!#$!# 执行脚本文件&#xff08;参…...

【从零开始入门unity游戏开发之——C#篇29】C#泛型(T)和 泛型约束

文章目录 一、泛型1、泛型是什么2、泛型分类2.1. **泛型类和泛型接口**2.2. **泛型方法** 3、泛型类和接口3.1 泛型类示例&#xff1a;3.2 泛型接口示例&#xff1a;3.3 泛型类接受多个类型参数&#xff1a; 4、泛型方法4.1. **普通类中的泛型方法**4.2. **泛型类中的泛型方法*…...

一个从oracle使用spool导出数据到kadb的脚本

1. dump_data.sh调用sql_dump.sh导出数据 2. load_data.sh将导出的数据加载至KADB 1. dump_data.sh #!/bin/bash begin_time$(date %Y%m%d -d -1 day) end_time$(date %Y%m%d) echo "数据导出日期:"$begin_time echo "数据导出日期:"$begin_time >>…...

两道数组有关的OJ练习题

系列文章目录 &#x1f388; &#x1f388; 我的CSDN主页:OTWOL的主页&#xff0c;欢迎&#xff01;&#xff01;&#xff01;&#x1f44b;&#x1f3fc;&#x1f44b;&#x1f3fc; &#x1f389;&#x1f389;我的C语言初阶合集&#xff1a;C语言初阶合集&#xff0c;希望能…...

仿闲鱼的二手交易小程序软件开发闲置物品回收平台系统源码

市场前景 闲置物品交易软件的市场前景广阔&#xff0c;主要基于以下几个方面的因素&#xff1a; 环保意识提升&#xff1a;随着人们环保意识的增强&#xff0c;越来越多的人开始关注资源的循环利用&#xff0c;闲置物品交易因此受到了广泛的关注。消费升级与时尚节奏加快&…...

uni-app使用组件button遇到的问题

在HBuilder X工具中新建一个空白项目&#xff0c; 1、新建一个about页 然后在pages.json文件里加上路由 2、然后看下导航的方法&#xff0c;发现找不到navigateTo方法 参考&#xff1a;button | uni-app官网 第3行和第4行的代码倒是没问题的&#xff0c;第5行的代码有问题执行…...

halcon单相机+机器人*眼在手外标定心得

目的 得到相机坐标系下的点与机器人底座base的转换关系&#xff0c;camera_in_base 两个不确定的定量 1&#xff0c;相机与机器人底座base之间的相对位置是固定的&#xff0c;既camera_in_base 2&#xff0c;机械手末端与标定物 tool_in_obj是固定的 辅助确定量 工作台与相…...

为什么在多数据源的情况下,单数据源的自动配置类会失效?

在 Spring Boot 中&#xff0c;DataSourceAutoConfiguration 是单数据源情况下的默认自动配置类。当引入多数据源方案&#xff08;例如 dynamic-datasource-spring-boot-starter&#xff09;后&#xff0c;单数据源的自动配置机制会失效&#xff0c;原因主要在于多数据源自动配…...

Y3编辑器教程8:资源管理器与存档、防作弊设置

文章目录 一、资源管理器简介1.1 界面介绍1.2 资源商店1.3 AI专区1.3.1 AI文生图1.3.2 AI图生图1.3.3 立绘头像 二、导入导出2.1 文件格式2.2 模型导入2.2.1 模型制作后导出2.2.2 模型文件导入Y3编辑器2.2.3 Y3编辑器角色、装饰物模型要求 2.3 纹理导入2.4 材质贴图2.4.1 材质支…...