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

C++11QT复习 (十六)

文章目录

    • Day11 移动语义回顾
      • 一、移动语义基础概念
      • 二、自定义 `String` 类的移动语义实现
        • 输出运算符重载:
      • 三、测试函数:验证移动与拷贝行为
      • 四、左值与右值的补充说明
        • 右值引用作为函数返回值
      • 五、知识总结
        • 如何区分左值与右值?
      • 六、附加说明:关于 `std::move`

Day11 移动语义回顾

一、移动语义基础概念

  • 移动语义:通过“转移资源所有权”而非“复制资源”,提升程序效率,尤其适用于临时对象或大对象的处理。
  • 移动构造函数移动赋值运算符:C++11引入的特殊成员函数,分别用于从右值中构造对象或赋值给现有对象。
  • 与拷贝语义的区别
    • 移动语义不会拷贝内存,只是指针赋值,效率更高。
    • 编译器不会自动生成移动构造和移动赋值,需要手动实现。

二、自定义 String 类的移动语义实现

class String
{friend std::ostream& operator<<(std::ostream& os, const String& rhs);public:// 默认构造函数String(): _pstr(nullptr) {cout << "String()" << endl;}// 构造函数:深拷贝字符串String(const char* pstr): _pstr(new char[strlen(pstr) + 1]()) {cout << "String(const char* pstr)" << endl;strcpy_s(_pstr, strlen(pstr) + 1, pstr);}// 拷贝构造函数:深拷贝另一个 String 对象String(const String& rhs): _pstr(new char[strlen(rhs._pstr) + 1]()) {cout << "String(const String& rhs)" << endl;strcpy_s(_pstr, strlen(rhs._pstr) + 1, rhs._pstr);}// 移动构造函数:资源转移,不再复制字符串内容String(String&& rhs): _pstr(rhs._pstr) {cout << "String(String&& rhs)" << endl;rhs._pstr = nullptr;  // 清空源对象}// 拷贝赋值运算符String& operator=(const String& rhs) {cout << "String& operator=(const String& rhs)" << endl;if (this != &rhs) //1、防止自复制{delete[] _pstr;//2、释放左操作数//3、深拷贝_pstr = new char[strlen(rhs._pstr) + 1]();strcpy_s(_pstr, strlen(rhs._pstr) + 1, rhs._pstr);}//4、返回*thisreturn *this;}// 移动赋值运算符String& operator=(String&& rhs) {cout << "String& operator=(String&& rhs)" << endl;if (this != &rhs)//1、自移动{delete[] _pstr;//2、释放左操作数//3、浅拷贝_pstr = rhs._pstr;rhs._pstr = nullptr;}//返回*thisreturn *this;}~String() {cout << "~String()" << endl;delete[] _pstr;_pstr = nullptr;}private:char* _pstr;
};
输出运算符重载:
std::ostream& operator<<(std::ostream& os, const String& rhs)
{if (rhs._pstr) {os << rhs._pstr;}return os;
}

三、测试函数:验证移动与拷贝行为

void test() {String s1("hello");cout << "s1 = " << s1 << endl;String s2 = s1;  // 拷贝构造cout << "s2 = " << s2 << endl;String s3 = "world";  // 隐式调用构造函数,然后移动构造//上面这条代码有个隐式转换的过程,"world" --> String("world")//String("world")是临时对象/匿名对象cout << "s3 = " << s3 << endl;String s4("hainan");cout << "s4 = " << s4 << endl;s4 = String("shangfa");  // 临时对象移动赋值cout << "s4 = " << s4 << endl;s4 = std::move(s4);  // 自移动,测试保护机制cout << "s4 = " << s4 << endl;//warning!使用已移动的 from 对象: s4 (lifetime.1)。//移动赋值运算符函数中没有判断if(this != &rhs)之前,// 打印s4的值,输出结果为空,因为在输出流重载运算符函数中,已经进行了判空操作,若指向为空,直接执行return cout << "11111" << endl;/*std::move可以将左值转换为右值,实质上没有做任何移动,只是在底层做了强制转换static_cast<T &&>(lvalue)如果以后不想再使用某个左值,可以使用std::mobe将其转换为右值,以后就不再使用了*/s2 = std::move(s1);  // s1 被移动后已失效cout << "s1 = " << s1 << endl;cout << "s2 = " << s2 << endl;
}

四、左值与右值的补充说明

void testRightValue()
{int a = 10;int b = 20;int* pflag = &a;string s1("hello");string s2("world");int& ref = a;//int& ref2 = 10;//error!非常量引用的初始值必须为左值const int& ref2 = 10;/*const左值引用既可以绑定到左值,也可以绑定到右值*/const int& ref3 = a;&a;//左值&b;//左值&pflag;//左值& *pflag;//左值&s1;//左值&s2;//左值//表达式必须为左值或函数指示符//&(a + b);//左值//&(s1 + s2);//左值&ref;//左值//C++11之前是不能识别右值的,C++11之后新增语法可以识别右值int&& rref = 10;//右值引用//int&& rref2 = b;//error!无法将右值引用绑定到左值//还有一个问题,左值引用是左值还是右值?&rref;//右值引用在此处是左值(右值引用在作为函数参数的时候,体现出来的是左值的含义)}//那么,右值引用可以是右值吗?(右值引用作为函数返回类型的时候是右值)
int&& func()
{return 10;
}int main()
{test();//&func();//error!“&”要求左值return 0;
}
右值引用作为函数返回值
int&& func() {return 10;
}

右值引用返回的对象仍然是右值,不能取地址。


五、知识总结

类型是否可绑定左值是否可绑定右值备注
左值引用 (T&)常用于一般变量引用
const 左值引用 (const T&)可以绑定临时对象,常用于函数参数
右值引用 (T&&)主要用于移动语义
如何区分左值与右值?
  • 能否取地址(&) 是判断左值的重要标准。
  • 表达式结果是否具名或可持久存在

六、附加说明:关于 std::move

  • std::move(x) 实质上是 static_cast<T&&>(x),并不真正“移动”。
  • 它只是告诉编译器:“我不再使用这个对象了,可以安全地‘偷走’资源”。
  • 右值的存放位置(冷知识):右值短暂的存在于栈上

相关文章:

C++11QT复习 (十六)

文章目录 Day11 移动语义回顾一、移动语义基础概念二、自定义 String 类的移动语义实现输出运算符重载&#xff1a; 三、测试函数&#xff1a;验证移动与拷贝行为四、左值与右值的补充说明右值引用作为函数返回值 五、知识总结如何区分左值与右值&#xff1f; 六、附加说明&…...

Redis客户端命令到服务器底层对象机制的完整流程?什么是Redis对象机制?为什么要有Redis对象机制?

Redis客户端命令到服务器底层对象机制的完整流程 客户端 → RESP协议封装 → TCP传输 → 服务器事件循环 → 协议解析 → 命令表查找 → 对象机制 → 动态编码 → 数据结构操作 → 响应编码 → 网络回传 Redis客户端命令到服务器底层对象机制的完整流程可分为协议封装、命令解…...

鸿蒙NEXT开发节流、防抖工具类(ArkTs)

import { CacheUtil } from ./CacheUtil; import { DateUtil } from ./DateUtil;/*** 节流、防抖工具类&#xff08;用于点击事件&#xff0c;防止按钮被重复点击&#xff09;** author 鸿蒙布道师* since 2025/04/07*/ export class ClickUtil {private static throttleTimeou…...

Qt程序 Windows打包

目的 运行Qt的程序&#xff0c;遇上如下问题&#xff1a; 显然是少很多Qt库&#xff0c;那就把Qt库放到这里&#xff0c;Qt提供这一个命令windeployqt.exe. windeployqt windeployqt是Qt框架提供的一个工具&#xff0c;主要用于自动打包Windows平台上的Qt应用程序及其依赖项…...

2025-04-07(DS复习):Databricks DLT 详解

Databricks Delta Live Tables (DLT) 详解 Delta Live Tables (DLT) 是 Databricks 提供的一个智能框架&#xff0c;用于构建可靠、可扩展的数据处理管道。它简化了ETL(提取、转换、加载)和ELT(提取、加载、转换)流程的开发和管理&#xff0c;特别适合在数据湖house架构中实现…...

音视频入门基础:RTCP专题(3)——RTCP协议简介(中)

本文接着《音视频入门基础&#xff1a;RTCP专题&#xff08;2&#xff09;——RTCP协议简介&#xff08;上&#xff09;》&#xff0c;继续对RTCP协议进行简介。本文的一级标题从“九”开始。 九、Sender and Receiver Reports 本段内容对应《RFC 3550》的第6.4节。根据《RFC …...

嵌入式工程师多线程编程(二)生产者-消费者模式

生产者-消费者模式详解&#xff1a;多线程编程的核心范式 生产者-消费者模式(Producer-Consumer Pattern)是多线程编程中最经典的设计模式之一&#xff0c;它通过解耦生产者和消费者的工作流程&#xff0c;实现了线程间的高效协作与资源管理。本文将深入剖析这一模式的原理、实…...

秒杀系统的性能优化

秒杀任务总体QPS预期是每秒几十万&#xff0c;对tomcat、redis、JVM参数进行优化。 tomcat线程数 4核8G的机器&#xff0c;一般就是开200-300个工作线程&#xff0c;这是个经验值。每秒一个线程处理3-5个请求&#xff0c;200多个线程的QPS可以达到1000左右。线程不能太多&…...

MySQL学习笔记集--索引

索引 索引是数据库中用于提高查询效率的一种数据结构。 它类似于书籍的目录&#xff0c;通过索引可以快速定位到表中的特定行&#xff0c;而无需扫描整个表。 索引的类型 主键索引&#xff08;Primary Key Index&#xff09; 自动创建&#xff0c;用于唯一标识表中的每一行。…...

深入理解重排(Reflow)与重绘(Repaint),写出高性能 CSS 动画

在前端开发中&#xff0c;CSS 动画是提升用户体验的重要手段&#xff0c;但很多开发者在使用动画时并不了解浏览器背后的渲染机制&#xff0c;导致动画卡顿甚至影响整体性能。本文将带你深入理解 CSS 中的两大核心概念 —— 重排&#xff08;Reflow&#xff09; 与 重绘&#x…...

Elasticsearch 从入门到实战:文档聚合操作及总结

四、文档操作&#xff1a;数据的增删改查 4.1 添加文档 文档&#xff08;Document&#xff09;是索引中的最小数据单元&#xff0c;使用 POST 或 PUT 添加&#xff1a; json POST /products/_doc/1 { "name": "华为Mate50 Pro", "price": 6…...

前缀和和差分笔记

前缀和和差分笔记 一维前缀和 示意图如下&#xff1a; 代码&#xff1a; **核心公式&#xff1a;sum[i]sum[i-1]a[i];&#xff08;计算前缀和的&#xff09;**#include<bits/stdc.h> using namespace std; const int N10000; #define ll long long int a[N],sum[N]; i…...

SSRF漏洞利用的小点总结和实战演练

含义理解&#xff1a; SSRF&#xff08;Server-Side Request Forgery&#xff0c;服务器请求伪造&#xff09;是一种由攻击者构造请求&#xff0c;由服务端发起请求的安全漏洞&#xff0c;一般情况下&#xff0c;SSRF攻击的目标是外网无法访问的内网系统。 攻击者通过篡改URL…...

IAR推动嵌入式开发:云就绪、可扩展的CI/CD和可持续自动化

全球领先的嵌入式系统开发软件解决方案供应商IAR正式发布全新云就绪平台&#xff0c;为嵌入式开发团队提供企业级的可扩展性、安全性和自动化能力。该平台于在德国纽伦堡举办的embedded world 2025展会上正式亮相&#xff0c;标志着将现代DevSecOps工作流集成到嵌入式软件开发中…...

瓦片数据合并方法

影像数据 假如有两份影像数据 1.全球底层影像0-5级别如下&#xff1a; 2.局部高清影像数据级别9-14如下&#xff1a; 合并方法 将9-14文件夹复制到全球底层0-5的目录下 如下&#xff1a; 然后合并xml文件 使得Tileset设置到最高级&#xff08;包含所有级别&#xff09;&…...

RISC-V AIA学习---IPI 处理器间中断

对于有多个hart的机器&#xff0c;必须为每个 hart 提供一个由具体实现定义的内存地址。向这个地址写入数据&#xff0c;就能向该 hart 发送一个机器级软件中断&#xff08;主代码为 3&#xff09;。换句话说&#xff0c;机器级的 IPI 可以通过这种方式&#xff0c;以机器级软件…...

Automattic 裁员16%,Matt Mullenweg称此举旨在提升盈利能力并增强投资实力

2025年4月3日&#xff0c;Automattic——这家以 WordPress.com、Tumblr 和 WooCommerce 等产品闻名的公司&#xff0c;宣布裁减其全球员工队伍的16%。这一决定是在周三通过公司博客文章和 Slack 内部消息向员工透露的。根据裁员前 Automattic 官网显示的员工人数&#xff08;1,…...

图解AUTOSAR_SWS_FlexRayInterface

AUTOSAR FlexRay Interface 模块分析 本文档基于AUTOSAR SWS FlexRayInterface规范,对FlexRay Interface模块进行详细分析。 1. FlexRay Interface 模块架构 1.1 模块架构概览 1.2 架构说明 FlexRay Interface模块是AUTOSAR中的ECU抽象层组件,为上层模块提供统一的抽象接…...

AI赋能ArcGIS Pro——水系网络AI智能提取 | GIS人工智能制图技术解析

我们之前做了做了几期的AIGIS的分享。我们今天要再次做一个分享。 AI赋能ArcGIS Pro——水系网络智能提取全解析 DeepSeek结合ArcGIS Pro制作一个批量建库的脚本工具&#xff08;代码一字未改&#xff0c;直接运行&#xff09; 看老外如何玩DeepSeek&#xff01;15分钟快速创…...

STM32江科大----IIC

声明&#xff1a;本人跟随b站江科大学习&#xff0c;本文章是观看完视频后的一些个人总结和经验分享&#xff0c;也同时为了方便日后的复习&#xff0c;如果有错误请各位大佬指出&#xff0c;如果对你有帮助可以点个赞小小鼓励一下&#xff0c;本文章建议配合原视频使用❤️ 如…...

RAG(检索增强生成)系统,提示词(Prompt)表现测试(数据说话)

在RAG(检索增强生成)系统中,评价提示词(Prompt)设计是否优秀,必须通过量化测试数据来验证,而非主观判断。以下是系统化的评估方法、测试指标和具体实现方案: 一、提示词优秀的核心标准 优秀的提示词应显著提升以下指标: 维度量化指标测试方法事实一致性Faithfulness …...

【leetcode hot 100 763】划分字母区间

解法一&#xff1a;用map记录<字母&#xff0c;字母出现的次数>&#xff0c;循环取出value-1&#xff0c;每次判断已经取出的字母&#xff08;Set记录&#xff09;是否还在后面存在&#xff08;value>1&#xff09;&#xff0c;若存在继续循环&#xff0c;若不存在开启…...

PCB工艺:现代电子产品的核心制造技术

引言 PCB&#xff08;Printed Circuit Board&#xff0c;印刷电路板&#xff09;是电子设备的核心组成部分&#xff0c;几乎所有现代电子产品&#xff0c;从智能手机到航天设备&#xff0c;都依赖于PCB实现电路连接。PCB制造工艺的进步直接影响电子产品的性能、可靠性和成本。…...

【UE5 C++课程系列笔记】34——结构体与Json的相互转化

目录 准备工作 一、结构体转Json 二、Json转结构体 三、复杂结构体与Json的转换 主要通过借助FJsonObjectConverter类实现结构体和 JSON 之间的相互转换。 准备工作 首先新建一个结构体如下 添加两个方法分别用于将Struct转为Json、Json转为Struct 一、结构体转Json FStri…...

2025最新系统 Git 教程(二)

第2章 Git基础 2.1 Git 基础 - 获取 Git 仓库 如果你只想通过阅读一章来学习 Git&#xff0c;那么本章将是你的不二选择。 本章涵盖了你在使用 Git 完成各种工作时将会用到的各种基本命令。 在学习完本章之后&#xff0c;你应该能够配置并初始化一个仓库&#xff08;reposito…...

力扣hot100_动态规划

动态规划 hot100_198. 打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警。…...

玄机-第六章-哥斯拉4.0流量分析的测试报告

目录 一、测试环境 二、测试目的 三、操作过程 Flag1 Flag2 Flag3 Flag4 Flag5 Flag6 Flag7 Flag8 Flag9 Flag10 Flag11 Flag12 Flag13 pam_unix.so关键代码 四、结论 一、测试环境 靶场介绍&#xff1a;国内厂商设置的玄机靶场&#xff0c;以应急响应题目著…...

【Hadoop入门】Hadoop生态圈概述:核心组件与应用场景概述

1 Hadoop生态圈概述 Hadoop生态圈是以 HDFS&#xff08;分布式存储&#xff09; 和 YARN&#xff08;资源调度&#xff09; 为核心&#xff0c;围绕大数据存储、计算、管理、分析等需求发展出的一系列开源工具集合。 核心特点&#xff1a; 模块化&#xff1a;各组件专注解决特定…...

深度学习实战电力设备缺陷检测

本文采用YOLOv11作为核心算法框架&#xff0c;结合PyQt5构建用户界面&#xff0c;使用Python3进行开发。YOLOv11以其高效的实时检测能力&#xff0c;在多个目标检测任务中展现出卓越性能。本研究针对电力设备缺陷数据集进行训练和优化&#xff0c;该数据集包含丰富的电力设备缺…...

随机产生4位随机码(java)

Random类&#xff1a; 用于生成随机数 import java.util.Random; 导入必要的类 generateVerificationCode()方法&#xff1a; 这是一个静态方法&#xff0c;可以直接通过类名调用 返回一个6位数字的字符串&#xff0c;首位不为0 生成首位数字&#xff1a; random.nextInt…...

音视频入门基础:RTCP专题(4)——RTCP协议简介(下)

本文接着《音视频入门基础&#xff1a;RTCP专题&#xff08;3&#xff09;——RTCP协议简介&#xff08;中&#xff09;》&#xff0c;继续对RTCP协议进行简介。本文的一级标题从“十四”开始。 十四、SDES: Source Description RTCP Packet 本段内容对应《RFC 3550》的第6.5节…...

PyCharm2024.3.5专业版解决Conda executable is not found问题

项目场景&#xff1a; pycharm使用anaconda 内的虚拟环境 pycharm 2024.3.5 专业版 C:\Users\Administrator>conda infoactive environment : transmute_recipe_generatoractive env location : D:\anaconda3\envs\transmute_recipe_generatorshell level : 1user config…...

滑动窗口思想 面试算法高频题

基本思想 滑动窗口思想其实就是快慢型的特例 计算机网络中滑动窗口协议&#xff08;Sliding Window Protocol&#xff09;&#xff0c;该协议是TCP实现流量控制等的核心策略之一。事实上在与流量控制、熔断、限流、超时等场景下都会首先从滑动窗口的角度来思考问题&#xff0…...

Linux中特殊的变量

1.$# 含义&#xff1a;表示传入脚本或函数的参数数量。 用法&#xff1a;用于检查用户是否提供了足够的参数。 示例&#xff1a; #!/bin/bash echo "参数数量: $#"2.$? 含义&#xff1a;表示上一条命令的退出状态。如果命令成功执行&#xff0c;值为 0&#xff1b;…...

Linux文件系统与日志分析

目录 一.日志 1.1日志的定义 1.2日志的功能 1.3日志的分类 1.4日志的文件格式 1.5用户日志 1.6一些常见的日志 1.7日志消息的级别 二.系统日志管理 rsyslog 2.1rsyslog的定义 2.2rsyslog 配置文件 2.3rsyslog的实际应用----单独显示某一服务的日志 1.编辑rsyslog配…...

从传统物流到智能调度的全链路升级

一、TMS系统升级的核心目标与整体框架 &#xff08;一&#xff09;为什么要升级&#xff1f;传统物流管理的三大痛点 调度效率低下&#xff1a;过去依赖人工分单、手动匹配承运商&#xff0c;订单量大时容易出错&#xff0c;比如不同区域的订单混排导致运输路线绕路&#xff…...

UE5中如何修复后处理动画蓝图带来的自然状态下的metablriger身体绑定形变(如耸肩)问题

【[metablriger] UE5中如何修复后处理动画蓝图带来的自然状态下的metablriger身体绑定形变(如耸肩)问题】 UE5中如何修复后处理动画蓝图带来的自然状态下的metablriger身体绑定形变(如耸肩)问题...

STL_vector_01_基本用法

&#x1f44b; Hi, I’m liubo&#x1f440; I’m interested in harmony&#x1f331; I’m currently learning harmony&#x1f49e;️ I’m looking to collaborate on …&#x1f4eb; How to reach me …&#x1f4c7; sssssdsdsdsdsdsdasd&#x1f383; dsdsdsdsdsddfsg…...

css2学习总结之尚品汇静态页面

css2总结之尚品汇 一、布局 在 PC 端网页中&#xff0c;一般都会有一个固定宽度且水平居中的盒子&#xff0c;来显示网页的主要内容&#xff0c;这是网页 的版心。 版心的宽度一般是 960 ~ 1200 像素之间。 版心可以是一个&#xff0c;也可以是多个。 二、布局相关名词 我…...

Lua 第5部分 表

表&#xff08; Table &#xff09;是 Lua 语言中最主要&#xff08;事实上也是唯一的&#xff09;和强大的数据结构。 使用表&#xff0c;Lua语言可以以一种简单、统一且高效的方式表示数组、集合、记录和其他很多数据结构。 Lua语言也使用表来表示包&#xff08; package &am…...

01分数规划

https://ac.nowcoder.com/acm/contest/22353/1011 并不需要高级数据结构&#xff0c;对答案二分即可。 假定当前二分的答案为 x x x&#xff0c;则 ∑ v i ∑ w i ≥ x \frac{ \sum_{v_i} }{\sum_{w_i}} ≥ x ∑wi​​∑vi​​​≥x 成立时 x x x 才可能是最后的答案。 化简式…...

无人机动力系统全维度解析:技术演进、选型策略与未来趋势

一、动力系统技术理念与设计逻辑 &#xff08;一&#xff09;核心技术指标 能量密度&#xff1a;决定续航能力的关键参数&#xff0c;单位为 Wh/kg。当前主流锂聚合物电池能量密度约 250-300Wh/kg&#xff0c;氢燃料电池可达 500-800Wh/kg&#xff0c;航空燃油则高达 12,000W…...

重新审视中国的GB标准(44495 – 44497)

此前&#xff0c;我们深入探讨了中国新推出的智能互联汽车(ICV)网络安全标准GB Standard 44495-2024。我们探讨了该标准对汽车制造商的影响、与UNECE R155和ISO/SAE 21434等全球标准的一致性&#xff0c;以及该标准对未来汽车网络安全的意义。 然而&#xff0c;GB 44495-2024并…...

Linux进程控制(五)之做一个简易的shell

文章目录 做一个简易的shell预备知识代码实现运行结果 做一个简易的shell 重谈Shell shell是操作系统的一层外壳程序&#xff0c;帮我们用户执行指令&#xff0c; 获取到指令后&#xff0c;交给操作系统&#xff0c;操作系统执行完后&#xff0c;把执行结果通过shell交给用户…...

Apache Kafka全栈技术解析

目录 第一章 Kafka概述与核心价值 1.1 消息队列的演进与Kafka的诞生 1.2 Kafka的核心应用场景 1.3 Kafka生态全景图 第二章 Kafka核心概念与架构解析 2.1 核心概念深度剖析 2.2 Kafka架构设计精要 第三章 Kafka环境搭建与配置 3.1 单机部署实战 3.2 集群部署最佳实践 …...

结合 Flink/Spark 进行 AI 大数据处理(实时数据 + AI 推理的应用场景)

随着企业对实时智能决策的需求日益增强,将 Flink / Spark 等流批计算框架 与 大模型推理能力相结合,正在成为 AI 工业化落地的重要实践路径。本篇文章将深入介绍如何将 AI 模型集成到大数据流处理系统中,实现实时感知、智能判断与自动反馈。 1. 为什么需要“实时数据 + AI 推…...

开发PDF时,如何比较 PDF 文件

在 PDF 论坛上&#xff0c;“如何比较 PDF 文件”是一个经常被提到的问题。在开始之前&#xff0c;重要的是要明确你想要比较的内容是什么。 不同的 PDF 文件可能看起来一样吗&#xff1f; 是的&#xff0c;可能。不同的 PDF 创建工具可能会生成在视觉上完全相同的页面&#x…...

自动提取pdf公式 ➕ 输出 LaTeX

# 创建打包脚本的主内容 script_content """ from doc2x.extract_formula import extract_formula_imgs from pix2text import Pix2Text from PIL import Image import osdef main():pdf_path "your_file.pdf" # 将你的PDF命名为 your_file.pdf 并…...

abaqus二次开发python程序集

abaqus二次开发python程序集 1、设置字体背景色等2、读取模态频率并写入 csv 文件3、在两个窗口快速对比各价模态 1、设置字体背景色等 # _*_ coding:UTF-8 _*_from abaqusConstants import* def fontsize(sessionNone):#设置字体session.viewports[Viewport: 1].viewportAnno…...

高级java每日一道面试题-2025年3月23日-微服务篇[Nacos篇]-如何使用Nacos进行服务发现?

如果有遗漏,评论区告诉我进行补充 面试官: 如何使用Nacos进行服务发现&#xff1f; 我回答: 在Java高级面试中讨论如何使用Nacos进行服务发现时&#xff0c;可以从多个角度深入探讨&#xff0c;包括基本概念、配置步骤、代码示例以及高级特性。以下是综合了多种信息的详细回…...