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

MFC: 控件根据文本内容大小自动调整

背景:

针对不同语言下,控件显示不全的现象;
例如:
现象1:中文下显示全部信息,英语下只能显示部分文字
现象2:中文下显示不全## 实现思路:

  1. 控件绑定按钮
  2. 计算控件文本长度
  3. 根据文本长度显示控件位置

举例:

Buttion按钮:
在这里插入图片描述

  1. 控件绑定按钮
BEGIN_MESSAGE_MAP(CTestDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, &CTestDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
private:CButton m_btnOpenFile;
  1. 计算控件文本长度
// 修正后的计算函数
int CalBtnTextWidth(CButton &btn) 
{CClientDC dc(&btn); // 使用CClientDC替代CPaintDCCFont* pFont = btn.GetFont();dc.SelectObject(pFont);CString strText;btn.GetWindowText(strText);CRect rectText(0,0,0,0);dc.DrawText(strText, &rectText, DT_CALCRECT | DT_SINGLELINE); // 修正拼写return rectText.Width() + 8; // 增加文本边距
}
  1. 根据文本长度显示控件位置
WINDOWPLACEMENT sBtnOpenFile;
GetDlgItem(IDB_OPENFILE)->GetWindowPlacement(&sBtnOpenFile);
int nBtnTextWidth = CalBtnTextWidth(m_btnOpenFile);
// 计算按钮的初始宽度
int initWidth = sBtnOpenFile.rcNormalPosition.right - sBtnOpenFile.rcNormalPosition.left;
// 选择新宽度(取最大值)
int newWidth = max(initWidth, textWidth);
sBtnOpenFile.rcNormalPosition.left = sBtnOpenFile.rcNormalPosition.Right - newWidth;
GetDlgItem(IDB_OPENFILE)->SetWindowPlacement(&sBtnOpenFile);

完整代码模块:


// TestDlg.h : 头文件
//#pragma once
#include "afxwin.h"// CTestDlg 对话框
class CTestDlg : public CDialogEx
{
// 构造
public:CTestDlg(CWnd* pParent = NULL);	// 标准构造函数// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_TEST_DIALOG };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV 支持// 实现
protected:HICON m_hIcon;// 生成的消息映射函数virtual BOOL OnInitDialog();afx_msg void OnSysCommand(UINT nID, LPARAM lParam);afx_msg void OnPaint();afx_msg HCURSOR OnQueryDragIcon();DECLARE_MESSAGE_MAP()
private:CButton m_btnOpenFile;private:int CalBtnTextWidth(CButton &btn);void AdjustButtonSize(CButton &btn);CComboBox TEST;
};

// TestDlg.cpp : 实现文件
//#include "stdafx.h"
#include "Test.h"
#include "TestDlg.h"
#include "afxdialogex.h"
#include <afxwin.h>  // MFC 核心头文件
#include <windows.h>  // Windows API 头文件(包含 WINDOWPLACEMENT)
#include <algorithm>  // 使用 std::max#ifdef _DEBUG
#define new DEBUG_NEW
#endif// 用于应用程序“关于”菜单项的 CAboutDlg 对话框class CAboutDlg : public CDialogEx
{
public:CAboutDlg();// 对话框数据
#ifdef AFX_DESIGN_TIMEenum { IDD = IDD_ABOUTBOX };
#endifprotected:virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV 支持// 实现
protected:DECLARE_MESSAGE_MAP()
};CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX)
{
}void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);
}BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx)
END_MESSAGE_MAP()// CTestDlg 对话框CTestDlg::CTestDlg(CWnd* pParent /*=NULL*/): CDialogEx(IDD_TEST_DIALOG, pParent)
{m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}void CTestDlg::DoDataExchange(CDataExchange* pDX)
{CDialogEx::DoDataExchange(pDX);DDX_Control(pDX, IDB_OPENFILE, m_btnOpenFile);
}BEGIN_MESSAGE_MAP(CTestDlg, CDialogEx)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()
END_MESSAGE_MAP()// CTestDlg 消息处理程序BOOL CTestDlg::OnInitDialog()
{CDialogEx::OnInitDialog();// 将“关于...”菜单项添加到系统菜单中。// IDM_ABOUTBOX 必须在系统命令范围内。ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){BOOL bNameValid;CString strAboutMenu;bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX);ASSERT(bNameValid);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// 设置此对话框的图标。  当应用程序主窗口不是对话框时,框架将自动//  执行此操作SetIcon(m_hIcon, TRUE);			// 设置大图标SetIcon(m_hIcon, FALSE);		// 设置小图标// TODO: 在此添加额外的初始化代码AdjustButtonSize(m_btnOpenFile);return TRUE;  // 除非将焦点设置到控件,否则返回 TRUE
}void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam)
{if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialogEx::OnSysCommand(nID, lParam);}
}// 如果向对话框添加最小化按钮,则需要下面的代码
//  来绘制该图标。  对于使用文档/视图模型的 MFC 应用程序,
//  这将由框架自动完成。void CTestDlg::OnPaint()
{if (IsIconic()){CPaintDC dc(this); // 用于绘制的设备上下文SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);// 使图标在工作区矩形中居中int cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// 绘制图标dc.DrawIcon(x, y, m_hIcon);}else{CDialogEx::OnPaint();}
}//当用户拖动最小化窗口时系统调用此函数取得光标
//显示。
HCURSOR CTestDlg::OnQueryDragIcon()
{return static_cast<HCURSOR>(m_hIcon);
}int  CTestDlg::CalBtnTextWidth(CButton &btn)
{// 获取设备上下文CPaintDC dc(&btn);// 获取按钮的文本CString strText;btn.GetWindowText(strText);// 计算文本的大小RECT rectText = { 0, 0, 0, 0 };dc.DrawText(strText, &rectText, DT_CALCRECT | DT_SINGLELINE);// 返回文本的宽度return rectText.right - rectText.left + 20;
}void CTestDlg::AdjustButtonSize(CButton &btn)
{int nBtnTextWidth = CalBtnTextWidth(btn);WINDOWPLACEMENT sBtnOpenFile;GetDlgItem(IDB_OPENFILE)->GetWindowPlacement(&sBtnOpenFile);sBtnOpenFile.rcNormalPosition.left = sBtnOpenFile.rcNormalPosition.right - nBtnTextWidth;GetDlgItem(IDB_OPENFILE)->SetWindowPlacement(&sBtnOpenFile);
}

扩展:

如果多个控件显示在一行,排版布局优化:

#include <array>std::array<int, 3> buttonIDs = { IDB_OPENFILE, IDB_OPENFILE1, IDB_OPENFILE2 };
std::array<CButton*, 3> buttons = { &m_btnOpenFile, &m_btnOpenFile1, &m_btnOpenFile2 };
void CTestDlg::AdjustButtonSize(CButton &btn)
{WINDOWPLACEMENT btnPlacement;for (size_t i = 0; i < buttonIDs.size(); i++){// 获取按钮的窗口信息GetDlgItem(buttonIDs[i])->GetWindowPlacement(&btnPlacement);// 计算文本宽度int nBtnTextWidth = CalBtnTextWidth(*buttons[i]);// 计算按钮的初始宽度int initWidth = btnPlacement.rcNormalPosition.right - btnPlacement.rcNormalPosition.left;// 选择新宽度(取最大值)int newWidth = max(initWidth, nBtnTextWidth);// 重新计算左边界btnPlacement.rcNormalPosition.right = btnPlacement.rcNormalPosition.left + newWidth;// 更新按钮位置GetDlgItem(buttonIDs[i])->SetWindowPlacement(&btnPlacement);} 
}

Tab控件:

1.计算每个标签页的大小

int CalTabTextWidth(CTabCtrl& tabCtrl, int nIndex)
{// 获取设备上下文CClientDC dc(&tabCtrl);CFont* pOldFont = dc.SelectObject(tabCtrl.GetFont()); // 使用 Tab 控件的字体// 获取页签文本TCITEM item;TCHAR text[256] = { 0 };item.mask = TCIF_TEXT;item.pszText = text;item.cchTextMax = _countof(text);if (!tabCtrl.GetItem(nIndex, &item)){dc.SelectObject(pOldFont); // 还原字体return 0; // 获取失败返回 0}// 计算文本尺寸RECT rectText = { 0, 0, 0, 0 };dc.DrawText(text, &rectText, DT_CALCRECT | DT_SINGLELINE);dc.SelectObject(pOldFont); // 恢复原来的字体// 返回文本宽度(加上一些间距)return (rectText.right - rectText.left) + 20; // 额外增加 20 像素以适应边距
}

2.获取单个页签的初始宽度

// 获取单个页签的初始宽度
int GetTabInitialWidth(CTabCtrl& tabCtrl, int nIndex)
{CRect rectItem;if (tabCtrl.GetItemRect(nIndex, &rectItem)){return rectItem.Width(); // 获取页签初始宽度}return 0;
}

3.调整每个页签的宽度,确保不小于初始宽度

// 调整每个页签的宽度,确保不小于初始宽度
void AdjustTabWidth(CTabCtrl& tabCtrl)
{int tabCount = tabCtrl.GetItemCount();for (int i = 0; i < tabCount; i++){int textWidth = CalTabTextWidth(tabCtrl, i); // 计算文本宽度int initialWidth = GetTabInitialWidth(tabCtrl, i); // 获取初始宽度// 确保页签宽度不小于初始宽度if (textWidth < initialWidth){textWidth = initialWidth; // 使用初始宽度}// 设置每个页签的宽度tabCtrl.SetItemSize(CSize(textWidth, 30)); // 只调整宽度,保持原高度}
}
  1. 调用模块
// 在 OnInitDialog 或 OnCreate 中调用
BOOL CMyDialog::OnInitDialog()
{CDialogEx::OnInitDialog();AdjustTabWidth(m_tabCtrl); // 调整页签宽度return TRUE;
}

相关文章:

MFC: 控件根据文本内容大小自动调整

背景&#xff1a; 针对不同语言下&#xff0c;控件显示不全的现象&#xff1b; 例如&#xff1a; 现象1&#xff1a;中文下显示全部信息&#xff0c;英语下只能显示部分文字 现象2&#xff1a;中文下显示不全## 实现思路&#xff1a; 控件绑定按钮计算控件文本长度根据文本长…...

记一次线上Tomcat服务内存溢出的问题处理

背景&#xff1a;JavaWeb项目部署在Tomcat服务器上&#xff0c;服务器用的Windows。 问题表现&#xff1a;系统出现偶发性无法访问&#xff08;隔几天就会在早上无法访问&#xff09; Tomcat的日志catalina中&#xff0c;有如下报错信息。 java.lang.OutOfMemoryError: GC ov…...

go设计模式

刘&#xff1a;https://www.bilibili.com/video/BV1kG411g7h4 https://www.bilibili.com/video/BV1jyreYKE8z 1. 单例模式 2. 简单工厂模式 代码逻辑&#xff1a; 原始&#xff1a;业务逻辑层 —> 基础类模块工厂&#xff1a;业务逻辑层 —> 工厂模块 —> 基础类模块…...

通往 AI 之路:Python 机器学习入门-语法基础

第一章 Python 语法基础 Python 是一种简单易学的编程语言&#xff0c;广泛用于数据分析、机器学习和人工智能领域。在学习机器学习之前&#xff0c;我们需要先掌握 Python 的基本语法。本章将介绍 Python 的变量与数据类型、条件语句、循环、函数以及文件操作&#xff0c;帮助…...

【再谈设计模式】备忘录模式~对象状态的守护者

一、引言 在软件开发过程中&#xff0c;我们常常会遇到需要保存对象状态以便在之后恢复的情况。例如&#xff0c;在文本编辑器中&#xff0c;我们可能想要撤销之前的操作&#xff1b;在游戏中&#xff0c;玩家可能希望恢复到之前的某个游戏状态。备忘录模式&#xff08;Memento…...

算法:判断链表是否有环

/*** brief 判断链表是否有环* * 该函数使用快慢指针法来判断链表中是否存在环。* 快指针每次移动两步&#xff0c;慢指针每次移动一步。* 如果链表中存在环&#xff0c;那么快指针最终会追上慢指针&#xff1b;* 如果链表中不存在环&#xff0c;快指针会先到达链表末尾。* * p…...

Android Logcat 高效调试指南

工具概览 Logcat 是 Android SDK 提供的命令行日志工具&#xff0c;支持灵活过滤、格式定制和实时监控&#xff0c;官方文档详见 Android Developer。 基础用法 命令格式 [adb] logcat [<option>] ... [<filter-spec>] ... 执行方式 直接调用&#xff08;通过ADB守…...

【数据结构与算法】Java描述:第一节:ArrayList顺序表

这篇文章我们自己实现一个顺序表&#xff0c; 从而更好的认识它。 一、顺序表的本质 顺序表的本质其实就是一个数组&#xff0c;但是在插入&#xff0c;查找与删除上&#xff0c;有些复杂&#xff0c;顺序表通过对方法进行封装&#xff0c;方便了使用。 二、自己的顺序表 2.…...

报错The default superclass, “jakarta.servlet.http.HttpServlet“(已经配置好tomcat)

报错报错DescriptionResourcePathLocationType The default superclass,“jakarta.servlet.http.HttpServlet”, according to the project’s Dynamic Web Module facet version (5.0), was not found on the Java Build Path. 解决办法&#xff1a; 根据错误信息&#xff0…...

在笔记本电脑上用DeepSeek搭建个人知识库

最近DeepSeek爆火&#xff0c;试用DeepSeek的企业和个人越来越多。最常见的应用场景就是知识库和知识问答。所以本人也试用了一下&#xff0c;在笔记本电脑上部署DeepSeek并使用开源工具搭建一套知识库&#xff0c;实现完全在本地环境下使用本地文档搭建个人知识库。操作过程共…...

数学建模:MATLAB极限学习机解决回归问题

一、简述 极限学习机是一种用于训练单隐层前馈神经网络的算法&#xff0c;由输入层、隐藏层、输出层组成。 基本原理&#xff1a; 输入层接受传入的样本数据。 在训练过程中随机生成从输入层到隐藏层的所有连接权重以及每个隐藏层神经元的偏置值&#xff0c;这些参数在整个…...

Immich自托管服务的本地化部署与随时随地安全便捷在线访问数据

文章目录 前言1.关于Immich2.安装Docker3.本地部署Immich4.Immich体验5.安装cpolar内网穿透6.创建远程链接公网地址7.使用固定公网地址远程访问 前言 小伙伴们&#xff0c;你们好呀&#xff01;今天要给大家揭秘一个超炫的技能——如何把自家电脑变成私人云相册&#xff0c;并…...

Python标准库【os】5 文件和目录操作2

文章目录 8 文件和目录操作8.7 浏览目录下的内容8.8 查看文件或目录的信息8.9 文件状态修改文件标志位文件权限文件所属用户和组其它 8.10 浏览Windows的驱动器、卷、挂载点8.11 系统配置信息 os模块提供了各种操作系统接口。包括环境变量、进程管理、进程调度、文件操作等方面…...

相控阵雷达

相控阵雷达 **1. 基本概念与数学模型**(1) **阵列信号模型**(2) **波束形成原理** **2. 经典波束形成算法****(1) 常规波束形成&#xff08;Conventional Beamforming, CBF&#xff09;****(2) 自适应波束形成&#xff08;Adaptive Beamforming&#xff09;****2.1 最小方差无失…...

Java 大视界 -- 基于 Java 的大数据分布式缓存一致性维护策略解析(109)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

AI: Cursor是否已奠定AI开发环境的龙头地位?

近年来&#xff0c;人工智能&#xff08;AI&#xff09;在软件开发领域的应用迅速升温&#xff0c;而Cursor作为一款AI驱动的代码编辑器&#xff0c;凭借其创新功能和市场表现&#xff0c;引发了广泛讨论。许多人认为&#xff0c;Cursor已经奠定了AI开发环境的龙头地位。然而&a…...

PHP:IDEA开发工具配置XDebug,断点调试

文章目录 一、php.ini配置二、IDEA配置 一、php.ini配置 [xdebug] zend_extension"F:\wamp64\bin\php\php7.4.0\ext\php_xdebug-2.8.0-7.4-vc15-x86_64.dll" xdebug.remote_enable on xdebug.remote_host 127.0.0.1 xdebug.remote_port 9001 xdebug.idekey"…...

回忆Redis的持久化机制

Redis的持久化机制 前言RDB触发方式配置方式手动触发bgsave的执行流程 缺点 AOF重写机制触发方式手动触发自动触发 MP-AOF RDB和AOF混合模式 前言 大家都知道&#xff0c;Redis是内存数据库&#xff0c;也就是说client与Redis交互的过程&#xff0c;无论是读key还是写key都是直…...

partner‘127.0.0.1:3200‘ not reached

在SAP虚拟机中&#xff0c;如果LRPSAP 0显示黄色&#xff0c;通常表示服务启动异常或存在配置问题。以下是一些可能的处理方法&#xff1a; 检查主机文件配置 确保主机文件&#xff08;hosts&#xff09;中已正确配置SAP服务的域名解析。例如&#xff0c;添加以下内容到hosts文…...

网络配置的基本信息

目录 一、网络接口信息 1、关闭虚拟化服务 2、配置临时IP 3、配置静态IP 4、常见网络命令 5、安装Wireshark 一、网络接口信息 输入 ip address&#xff0c;会出现下面的内容 网卡名称及其含义&#xff1a; 网卡名称说明lo 表示本地回环地址。 ens32 有线网卡&#xff0c…...

SpringBoot集成Mybatis(包括Mybatis-Plus)和日志

一、使用Mybatis 1.添加依赖 <!--Mybatis--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.0</version> <!-- 选择与Java 8兼容的版本 --&g…...

如何在 IntelliJ IDEA 中集成 DeepSeek

如何在 IntelliJ IDEA 中集成 DeepSeek 在本教程中&#xff0c;我们将带您一步步完成将 DeepSeek 集成到 IntelliJ IDEA 中的过程。通过此集成&#xff0c;您可以在IDE中利用DeepSeek强大的功能&#xff0c;提高开发工作效率。 步骤 1&#xff1a;安装 Proxy AI 插件 首先&a…...

【自学笔记】大数据基础知识点总览-持续更新

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 大数据基础知识点总览1. 大数据概述2. 大数据处理技术3. 数据仓库与数据挖掘4. 大数据分析与可视化5. 大数据平台与架构6. 大数据安全与隐私 总结 大数据基础知识点…...

AWS ALB 实现灰度验证指南:灵活流量分配与渐进式发布

AWS Application Load Balancer (ALB) 作为七层负载均衡器,支持基于权重或内容的路由策略,是实施灰度验证(金丝雀发布)的核心工具。通过将部分流量导向新版本后端,可以安全验证功能稳定性。以下是使用 ALB 实现灰度发布的详细方案。 © ivwdcwso (ID: u012172506) 一…...

专线物流公共服务平台:全面提升专线物流效率

专线物流公共服务平台&#xff1a;全面提升专线物流效率 在物流行业高速发展的今天&#xff0c;专线物流作为物流供应链的重要环节&#xff0c;面临着效率低下、成本高企、信息孤岛等痛点。临沂呆马区块链网络科技有限公司&#xff08;简称“呆马科技”&#xff09;凭借其在大…...

行为型模式 - 观察者模式 (Publish/Subscribe)

行为型模式 - 观察者模式 (Publish/Subscribe) 又称作为订阅发布模式&#xff08;Publish-Subscribe Pattern&#xff09;是一种消息传递模式&#xff0c;在该模式中&#xff0c;发送者&#xff08;发布者&#xff09;不会直接将消息发送给特定的接收者&#xff08;订阅者&…...

HTTP/2 服务器端推送:FastAPI实现与前端集成指南

HTTP/2 服务器端推送&#xff1a;FastAPI实现与前端集成指南 注意&#xff1a;本文末尾附有完整示例代码&#xff0c;文中仅展示核心关键代码。完整代码可在GitHub仓库获取。 本文将会讲解HTTP2协议和相关配置实践。但是不要混淆&#xff0c;SSE的实现完全基于HTTP/1.1的持久连…...

C++ 变量的输入输出教程

一、变量的基本概念 在 C 中&#xff0c;变量是用于存储数据的命名内存位置。在使用变量之前&#xff0c;需要先声明它的类型和名称&#xff0c;这样编译器才能为其分配适当大小的内存空间。例如&#xff1a; int age; // 声明一个整型变量 age double salary; // 声明一个…...

java作业

java作业 一. package shiyanbaogao; ​ import java.util.Scanner; ​ //给20块钱买可乐&#xff0c;每瓶可乐3块钱&#xff0c;喝完之后退瓶子可以换回1块钱&#xff0c;问最多可以喝到多少瓶可乐。请设计相应的Java程序。 public class BaoGaoDemo02 {public static void …...

LeeCode题库第四十题

40.组合总和II 项目场景&#xff1a; 给定一个候选人编号的集合 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数字在每个组合中只能使用 一次 。 注意&#xff1a;解集不能包含重复的组合。 示…...

list的模拟实现

目录 一、构造和扩容机制 二、普通迭代器 三、const迭代器 四、tip 有了前面vetcor的基础呢&#xff0c;我们在学习和使用list上就更加的方便快捷&#xff0c;浅显易懂了&#xff0c;所以相似的部分我就不做过多的言语阐述了&#xff0c;在使用方面呢&#xff0c;大家可以学…...

pandas DataFrame 数据筛选与排序

数据筛选&#xff1a; df[df[列标签] > xxx] 使用 &(与) |(或) 拼接多个条件代码应用&#xff1a; ​ &(与)应用 # 引用 pandas import pandas as pd # 定义数据 data {"产品":["男装","女装","男鞋","女鞋"…...

elpis全栈课程学习之elpis-core学习总结

elpis全栈课程学习之elpis-core学习总结 核心原理 elpis-core是全栈框架elpis的服务端内核&#xff0c;主要应用于服务端接口的开发以及页面的SSR渲染&#xff0c;elpis-core基于约定优于配置的原理&#xff0c;通过一系列的loader来加载对应的文件&#xff0c;大大节约用户的…...

零基础deep seek+剪映,如何制作高品质的视频短片

以下是专为零基础学习者设计的 剪映专业版详细教程&#xff0b;Deep seek配合制 &#xff0c;包含从入门到精通的系统化教学&#xff0c;配合具体操作步骤与实用技巧&#xff1a; 基于DeepSeek与剪映协同制作高品质视频短片的专业流程指南&#xff08;2025年最新实践版&#x…...

解决单元测试 mock final类报错

文章目录 前言解决单元测试 mock final类报错1. 报错原因2. 解决方案3. 示例demo4. 扩展 前言 如果您觉得有用的话&#xff0c;记得给博主点个赞&#xff0c;评论&#xff0c;收藏一键三连啊&#xff0c;写作不易啊^ _ ^。   而且听说点赞的人每天的运气都不会太差&#xff0…...

Git基本命令索引

GIT基本命令索引 创建代码库修改和提交代码日志管理远程操作操作分支 创建代码库 操作指令初始化仓库git init克隆远程仓库git clone 修改和提交代码 操作指令查看文件状态git status文件暂存git add文件比较git diff文件提交git commit回滚版本git reset重命名或者移动工作…...

非平稳时间序列分析(二)——ARIMA(p, d, q)模型

此前篇章&#xff08;平稳序列&#xff09;&#xff1a; 时间序列分析&#xff08;一&#xff09;——基础概念篇 时间序列分析&#xff08;二&#xff09;——平稳性检验 时间序列分析&#xff08;三&#xff09;——白噪声检验 时间序列分析&#xff08;四&#xff09;—…...

[代码规范]接口设计规范

一个优雅的接口要如何设计&#xff1f;有哪些设计规范可以遵循&#xff1f; 下面抛砖引玉&#xff0c;分享一些规范。 目录 1、RESTful API 设计最佳实践 2、Shneiderman 的 8 条黄金法则 3、Nielsen 的 10 条启发式规则 1、RESTful API 设计最佳实践 一共18条&#xff0c;参考…...

4-3自定义加载器,并添加功能

一、自定义类加载器的实现步骤 ​继承ClassLoader类​ 自定义类加载器需继承java.lang.ClassLoader&#xff0c;并选择性地重写以下方法&#xff1a; ​findClass(String name)&#xff1a;核心方法&#xff0c;用于根据类名查找并加载类的字节码。需从自定义路径&#xff08…...

北京大学DeepSeek提示词工程与落地场景(PDF无套路免费下载)

近年来&#xff0c;大模型技术飞速发展&#xff0c;但许多用户发现&#xff1a;即使使用同一款 AI 工具&#xff0c;效果也可能天差地别——有人能用 AI 快速生成精准方案&#xff0c;有人却只能得到笼统回答。这背后的关键差异&#xff0c;在于提示词工程的应用能力。 北京大…...

SSH密码更改

Windows User目录下的.ssh/config&#xff0c;全部删除 linux 在主用户文件夹&#xff0c;ctrlh显示隐藏文件。删除.shh文件夹内所有文件。...

蓝桥备赛(四)- 数组(下)

一 、 字符数组 1.1 介绍 数组的元素如果是字符类型 &#xff0c; 这种数组就是字符数组 &#xff0c; 字符数组可以是一维数组 &#xff0c; 可以是二维数组 (多维数组)。 接下来主要讨论一维的字符数组 : char arr1[5] //一维数组 char arr2[3][5] // 二维数组 C语言 中…...

基金 word-->pdf图片模糊的解决方法

1. 首先需要Adobe或福昕等pdf阅读器。 2. word中 [文件]--[打印]&#xff0c;其中打印机选择pdf阅读器&#xff0c;例如此处我选择福昕阅读器。 3. 选择 [打印机属性]--[编辑]--[图像]&#xff0c;将所有的采样、压缩均设置为 关闭。点击[另存为]&#xff0c;保存为 基金报告…...

身为小兵,如何提升不可替代性?

之前聊过,研发、PIE、PE、可靠性等岗位,主要是对物的工作, 这类岗位,如何提升不可替代性? 我的经验是,学会识别创造性工作or重复性工作。 尽可能地做创造性工作,推重复性工作。 销售、采购、HR等岗位,主要是对人的工作, 这类岗位,如何提升不可替代性? 我的思考…...

easyExcel使用案例有代码

easyExcel 入门,完成web的excel文件创建和导出 easyExcel官网 EasyExcel 的主要特点如下&#xff1a; 1、高性能&#xff1a;EasyExcel 采用了异步导入导出的方式&#xff0c;并且底层使用 NIO 技术实现&#xff0c;使得其在导入导出大数据量时的性能非常高效。 2、易于使…...

linux服务器更新jar包脚本

【需求】Java每次发布新的版本都需要先kill掉原来的服务&#xff0c;然后再启动新的包 有了这个脚本只需要把包替换掉&#xff0c;服务会自动kill 以8184 为例 完整的脚本如下 #!/bin/bash# 检查端口 8184 是否被占用 PORT8184 PID$(lsof -t -i:$PORT)if [ -n "$PID…...

Tomcat 乱码问题彻底解决

1. 终端乱码问题 找到 tomcat 安装目录下的 conf —> logging.properties .修改ConsoleHandler.endcoding GBK &#xff08;如果在idea中设置了UTF-8字符集&#xff0c;这里就不需要修改&#xff09; 2. CMD命令窗口设置编码 参考&#xff1a;WIN10的cmd查看编码方式&…...

dify绑定飞书多维表格

dify 绑定飞书和绑定 notion 有差不多的过程&#xff0c;都需要套一层应用的壳子&#xff0c;而没有直接可以访问飞书文档的 API。本文记录如何在dify工具中使用新增多条记录工具。 创建飞书应用 在飞书开放平台创建一个应用&#xff0c;个人用户创建企业自建应用。 自定义应…...

深入浅出:插入排序算法完全解析

1. 什么是插入排序&#xff1f; 插入排序&#xff08;Insertion Sort&#xff09;是一种简单的排序算法&#xff0c;其基本思想与我们整理扑克牌的方式非常相似。我们将扑克牌从第二张开始依次与前面已排序的牌进行比较&#xff0c;将其插入到合适的位置&#xff0c;直到所有牌…...

MySQL--DQL、DML、DDL、DCL概念与区别

在SQL中&#xff0c;根据功能和操作对象的不同&#xff0c;通常将语文分为四大类&#xff1a;DQL&#xff08;数据查询语言&#xff09;、DML&#xff08;数据操作语言&#xff09;、DDL&#xff08;数据定义语言&#xff09;、DCL&#xff08;数据控制语言&#xff09; 一、D…...