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

C++模版基础知识与STL基本介绍

目录

一. 泛型编程

二. 函数模板

1. 概念

 2. 函数模版格式

3. 函数模版的原理

4. 模版函数的实例化

(1). 隐式实例化

(2.) 显式实例化

5. 模版参数的匹配原则

三. 类模板

1. 类模板的定义格式

 2. 类模板的实例化

四. STL的介绍

1. 什么是STL?

 2. STL的版本

3. STL的六大组件


一. 泛型编程

我们之前实现一个交换函数,不同的类型就要用多个函数,我们学了函数重载比C语言时期方便了一点,不用想函数名了

如下代码

void Swap(int& xxxx, int& yyyy)
{int temp = xxxx;xxxx = yyyy;yyyy = temp;
}
void Swap(double& xxxx, double& yyyy)
{double temp = xxxx;xxxx = yyyy;yyyy = temp;
}
void Swap(char& xxxx, char& yyyy)
{char temp = xxxx;xxxx = yyyy;yyyy = temp;
}

但是呢,仍然有很多不好的地方:

1. 重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数

2. 代码的可维护性比较低,一个出错可能所有的重载均出错

那么能不能告诉编译器一个模子,让编译器根据不同类型利用模子来生成代码呢?

泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础

二. 函数模板

1. 概念

函数模版代表一个函数家族,该函数模版与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。

 2. 函数模版格式

template<typename T1,typename T2,..........,typename Tn>

返回值类型  函数名 (参数列表) {}

如以下代码所示

template <typename T>
void Swap(T& xxxx, T& yyyy)
{T temp = xxxx;xxxx = yyyy;yyyy = temp;
}

typename 是用来定义模板参数关键字也可以使用class(尤其注意:不要用struct替代class)

如下

template <class T>
void Swap(T& xxxx, T& yyyy)
{T temp = xxxx;xxxx = yyyy;yyyy = temp;
}
3. 函数模版的原理

函数模版是一个蓝图,它本身不是函数,是编译器根据使用方式产生特定具体类型函数的模具。所以其实模版就是将原本应该我们做的重复的事情交给了编译器。

 在编译器编译阶段,对于模版函数的使用,编译器需要根据传入的实参类型来推演生成对应类型的函数以供调用

假如主函数代码如下

int  main()
{int x1 = 1;int y1 = 32;Swap(x1, y1);return 0;
}

int 类型推演

处理代码为

void Swap(int& xxxx, int& yyyy)
{int temp = xxxx;xxxx = yyyy;yyyy = temp;
}

假如主函数内容如下

int  main()
{char x2 = 11;char y2 = 33;Swap(x2, y2);return 0;
}

char类型推演

处理代码为

void Swap(char& xxxx, char& yyyy)
{char temp = xxxx;xxxx = yyyy;yyyy = temp;
}

当用 double 类型使用函数模版时,编译器通过对实参类型的推演,将T确定为double类型,然后产生一份专门处理double类型的代码

4. 模版函数的实例化

用不同类型的参数使用函数模版时,称为函数模版的实例化。模版参数实例化分为:隐式实例化和显式实例化。

(1). 隐式实例化

让编译器根据实参推演模板参数的实际类型

#include<iostream>
using namespace std;template <typename T>
T Add(const T& left, const T& right)
{return left + right;
}
int main()
{int a1 = 10, a2 = 11;double d1 = 11.11, d2 = 7.007;Add(a1,d1 );Add(a2, d2);
return 0;
}

上述代码不能通过编译,因为在编译期间,当编译器看到该实例化时,需要推演其实参类型

通过实参a1将T推演为int ,通过实参d1将T推演为double类型,但模版参数列表中只有一个T,编译器无法确定此处到底该将T确定为int或double类型而报错 

注意:在模版中,编译器一般不会进行类型转换操作,因为一旦转换出问题,编译器就需要背黑锅

此时有两种解决方法:1. 用户手动强制类型转换 2.  使用显式实例化

Add(a1,(int)d1);
Add((double)a2,d2);
(2.) 显式实例化

在函数名后的<>中指定模版参数的实际类型

int main()
{int a1 = 10, a2 = 11;double d1 = 11.11, d2 = 7.007;Add<int>(a1,d1 );Add<double>(a2, d2);return 0;
}

如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错。

5. 模版参数的匹配原则

一个非模版函数可以和一个同名的函数模板同时存在,而且该函数模板还可以被实例化为这个非模板函数

如以下代码

#include<iostream>
using namespace std;
template <typename T>
T Add(const T& left, const T& right)
{return left + right;
}
int Add(const int& x, const int& y)
{return (x + y) * 10;
}int main()
{int a1 = 10, a2 = 11;double d1 = 11.11, d2 = 7.007;cout << Add(1, 2) << endl;cout << Add<int>(2, 2) << endl;
}

其结果为

 我们发现,与若与非模板函数匹配,编译器不需要特化

若显式实例化则调用编译器特化的Add版本

对于非模板函数和同名函数模板,如果其他条件都相同,在调动时会优先调用非模板函数而不会从该模板中产生一个实例如果模板可以产生一个具有更好匹配的函数,那么将选择模板

#include<iostream>
using namespace std;int Add(const int& x, const int& y)
{return (x + y) * 10;
}
template <typename T1,class T2>
T2 Add(const T1& left, const T2& right)
{return left + right;
}
int main()
{int a1 = 10, a2 = 11;double d1 = 11.11, d2 = 7.007;cout << Add(1, 2) << endl;cout << Add(1, 2.1) << endl;return 0;
}

模板函数不允许自动类型转换,但普通函数可以进行自动类型转换 

template <typename T1>
T1 Add(const T1& left, const T1& right)
{return left + right;
}
int main()
{int a1 = 10, a2 = 11;double d1 = 11.11, d2 = 7.007;char c1 = 'a';Add(1, 2.1);Add(d1, c1);
}

第一个Add函数 2.1不会自动转换为int类型,1也不会自动转换为double(或float)

第二个同理 d1不会自动转化为char .......

而普通函数可以

#include<iostream>
using namespace std;int Add(const int& x, const int& y)
{return (x + y) * 10;
}int main()
{float a=10.11;int a1 = 10, a2 = 11;double d1 = 11.11, d2 = 7.007;char c1 = 'a';Add(1, 2.1);Add(d1, c1);
}

 第一个Add函数2.1 自动进行了类型转换变为int类型

第二个Add函数的d1 自动类型转换变为了int类型,c1也转化为了int类型

三. 类模板

1. 类模板的定义格式

template <class T1,class T2,.....class Tn>
class 类模板名
{
    //类内成员定义
};

 如下代码

#include<iostream>
#include<cstring>
using namespace std;template <typename T>
class Stack
{
public:Stack(size_t capacity = 4):_arr(new T[capacity]),_capacity(capacity),_size(0){}void Push(const T& data){if (_size == _capacity){T* tmp = new T [_capacity*2];memcpy(tmp, _arr, sizeof(T)*_size);delete[] _arr;_arr = tmp;_capacity *= 2;}_arr[_size++] = data;}T Top(){return _arr[_size-1];}~Stack(){delete[] _arr;_arr = nullptr; _size = _capacity = 0;}
private:T* _arr;size_t _capacity;size_t _size;
};

而类的成员函数要在类外实现时需要注意

再写一个模板,因为类上面的模版只针对类内

假如 将Push类内声明,类外定义,代码如下

class Stack
{
public:Stack(size_t capacity = 4):_arr(new T[capacity]),_capacity(capacity),_size(0){}void Push(const T& data);T Top(){return _arr[_size-1];}~Stack(){delete[] _arr;_arr = nullptr; _size = _capacity = 0;}
private:T* _arr;size_t _capacity;size_t _size;
};template <typename T>
void Stack<T>::Push(const T& data)
{if (_size == _capacity){T* tmp = new T[_capacity * 2];memcpy(tmp, _arr, sizeof(T) * _size);delete[] _arr;_arr = tmp;_capacity *= 2;}_arr[_size++] = data;
}
int main()
{Stack<int> s1;s1.Push(1);cout << s1.Top() << endl;s1.Push(5);cout << s1.Top() << endl;s1.Push(12);cout << s1.Top() << endl;s1.Push(11);cout << s1.Top() << endl;s1.Push(2);cout << s1.Top() << endl;s1.Push(3);cout << s1.Top() << endl;return 0;
}

下面的模板参数 也可以不叫T ,这两个T实际上就是代号,为什么是Stack<T>:: ,可以看下一条模板的实例化

模板不建议,声明和定义分离到两个文件.h 和.cpp 会出现链接错误,具体原因后面会讲

 2. 类模板的实例化

类模板实例化,与函数模板实例化不同,类模板实例化需要在类模板名字后跟<>,然后将实例化的类型放在<>中即可类模板名字不是真正的类,而实例化的结果才是真正的类

	
//其中Stack是类名,Stack<int>、Stack<char>、Stack<double>才是类型Stack<int> s1;Stack<double> s2;Stack<char> s3;

四. STL的介绍

1. 什么是STL?

STL(standard template libaray-标准模板库): 是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

 2. STL的版本
  • 原始版本

Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许 任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原 始版本一样做开源使用。 HP 版本--所有STL实现版本的始祖。

  • P.J.版本

由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读 性比较低,符号命名比较怪异。

  • RW版本

由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一 般。

  • SGI版本

由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可 移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。

3. STL的六大组件

 


这篇文章就写到这里啦,喜欢点一下赞吧~~

(๑′ᴗ‵๑)I Lᵒᵛᵉᵧₒᵤ❤

相关文章:

C++模版基础知识与STL基本介绍

目录 一. 泛型编程 二. 函数模板 1. 概念 2. 函数模版格式 3. 函数模版的原理 4. 模版函数的实例化 (1). 隐式实例化 (2.) 显式实例化 5. 模版参数的匹配原则 三. 类模板 1. 类模板的定义格式 2. 类模板的实例化 四. STL的介绍 1. 什么是STL&#xff1f; 2. STL的版…...

Android 防止重复点击

1.第一种方式&#xff1a; // 两次点击按钮之间的点击间隔不能少于1000毫秒 private static final int MIN_CLICK_DELAY_TIME 700; private static long lastClickTime; /** * 是否是快速点击 * return */ public static boolean isFastClick() { …...

使用阿里云云主机通过nginx搭建文件服务器

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、准备基础环境二、安装配置nginx三、阿里云安全组配置安全组配置 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4ee96f38312e4771938e40f463987…...

微信Android一面凉经(2024)

微信Android一面凉经(2024) 笔者作为一名双非二本毕业7年老Android, 最近面试了不少公司, 目前已告一段落, 整理一下各家的面试问题, 打算陆续发布出来, 供有缘人参考。今天给大家带来的是《微信Android一面凉经(2024)》。 面试职位: 微信-客户端开发工程师-基础功能(广州) And…...

VMware、Docker - 让虚拟机走主机代理,解决镜像封禁问题

文章目录 虚拟机全局代理配置找到 VMnet8 的 IPv4 地址代理相关配置虚拟机代理配置 Docker 代理配置修改镜像修改 Docker 代理配置 虚拟机全局代理配置 找到 VMnet8 的 IPv4 地址 a&#xff09;打开此电脑&#xff0c;输入 “控制面板”&#xff0c;然后回车. b&#xff09;之…...

版本管理|为什么不推荐使用Git Rebase

文章目录 什么是 Git Rebase&#xff1f;如何使用 Git Rebase&#xff1f;基本语法示例更多选项 注意事项何时使用何时避免其他注意事项 为什么需要谨慎使用 Git Rebase&#xff1f;面试中的常见问题问题 1: Git Rebase 和 Git Merge 有何不同&#xff1f;问题 2: 为什么有时应…...

Https post 请求时绕过证书验证方案

解决异常&#xff1a;Caused by: java.security.cert.CertificateException: No subject alternative names matching IP address xxx.xx.xx.xx found // Https POST 请求private cn.hutool.json.JSON PostGsData(String url, String appKey, String token, Map<String, Ob…...

C# 数组常用遍历方式

// 假设数组Point[] points new Point[2];// 第一种遍历 forfor (int i 0; i < points.Length; i){Point p points[i];Console.WriteLine($"X{p.X},y{p.Y}");}// 第二种遍历 foreachforeach (Point p in points){Console.WriteLine($"X{p.X},y{p.Y}"…...

【JavaScript】详解Day.js:轻量级日期处理库的全面指南

文章目录 一、Day.js简介1. 什么是Day.js&#xff1f;2. 安装Day.js 二、Day.js的基本用法1. 创建日期对象2. 格式化日期3. 解析日期字符串4. 操作日期5. 比较日期 三、Day.js的高级功能1. 插件机制2. 国际化支持 四、实际应用案例1. 事件倒计时2. 日历应用 在JavaScript开发中…...

AI算法与图像处理 | 吴恩达团队新作!多模态方向

本文来源公众号“AI算法与图像处理”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;吴恩达团队新作&#xff01;多模态方向 研究评估了先进多模态基础模型在 10 个数据集上的多样本上下文学习&#xff0c;揭示了持续的性能提升。…...

云服务器Ubuntu18.04进行Nginx配置

云服务器镜像版本信息&#xff1a;Ubuntu 18.04 server 64bit&#xff0c;本文记录了在改版本镜像上安装Nginx&#xff0c;并介绍了Nginx配置文件目录&#xff0c;便于后面再次有需求时进行复习。 文章目录 Nginx的安装Nginx配置文件分析 Nginx的安装 1.执行下面命令进行安装…...

SQL labs-SQL注入(四,sqlmap对于post传参方式的注入)

本文仅作为学习参考使用&#xff0c;本文作者对任何使用本文进行渗透攻击破坏不负任何责任。 序言&#xff1a;本文主要讲解基于SQL labs靶场&#xff0c;sqlmap工具进行的post传参方式的SQL注入。 传参方式有两类&#xff0c;一类是直接在url栏内进行url编码后进行的传参&am…...

R包:plot1cell单细胞可视化包

介绍 plot1cell是用于单细胞数据seurat数据对象的可视化包。 安装 ## You might need to install the dependencies below if they are not available in your R library. bioc.packages <- c("biomaRt","GenomeInfoDb","EnsDb.Hsapiens.v86&qu…...

Tent混沌人工蜂群与粒子群混合算法遇到问题,具体问题及解决方案如文。

🏆本文收录于《CSDN问答解惑-专业版》专栏,主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 问题描述 Tent混沌人工蜂…...

Python文献调研(一)环境搭建

一、安装Python版本 1.点击进入Python官网 Download Python | Python.org 2.根据自己的需求选择python的版本&#xff0c;点击【Download】 3.自定义安装路径&#xff0c;记得勾选Add Python xxx to PATH 这步是自动配置环境变量的&#xff0c;如果忘记勾选&#xff0c;建议…...

URL重写

目录 步骤1 规则语法 Nginx URL重写规则语法 Apache URL重写规则语法 步骤2 规则配置 Apache URL重写规则配置 启用mod_rewrite模块 配置.htaccess文件 编写重写规则 测试重写规则 Nginx URL重写规则配置 配置server或location块 测试重写规则 步骤1 规则语法 Ngin…...

git配置环境变量

一.找到git安装目录 打开此git安装目录下的bin文件&#xff0c;复制此文件路径 二.配置环境变量 2.1 右键点击此电脑的属性栏 2.2 点击高级系统配置 2.3 点击环境变量 2.4 按图中步骤进行配置 三.配置完成 win r 输入cmd打开终端 终端页面中输入 git --version 如图所示…...

vue3编程-import.meta.glob实现动态路由(菜单)

import.meta.glob 是vite提供的批量懒加载组件的方法 本地开发环境&#xff1a; const modules import.meta.glob(../views/**/*.vue)这段代码返回的modules是一个Map&#xff1a; key是vue文件的相对路径&#xff0c;值是一个函数&#xff0c;将函数打印出来&#xff0c;如…...

富唯智能转运机器人:高效、智能、未来的选择

在现代工业中&#xff0c;高效的物流和物料处理是提升生产效率的关键。富唯智能转运机器人&#xff0c;以其卓越的技术和智能化的设计&#xff0c;为各行业提供了完美的解决方案。 产品概述 富唯智能转运机器人搭载ICD系列核心控制器&#xff0c;拥有多种移载平台&#xff0c…...

跨境电商独立站:Shopify/Wordpress/店匠选哪个?

在面对不断增加的平台运营压力时&#xff0c;不少跨境电商的商家逐渐将注意力转向建立自己的独立站。据《中国跨境出口电商发展报告&#xff08;2022&#xff09;》所示&#xff0c;中国拥有的独立站数量在2022年已接近20万个&#xff0c;这表明独立站已成为卖家拓展海外市场的…...

减轻幻觉新SOTA,7B模型自迭代训练效果超越GPT-4,上海AI lab发布

LLMs在回答各种复杂问题时&#xff0c;有时会“胡言乱语”&#xff0c;产生所谓的幻觉。解决这一问题的初始步骤就是创建高质量幻觉数据集训练模型以帮助检测、缓解幻觉。 但现有的幻觉标注数据集&#xff0c;因为领域窄、数量少&#xff0c;加上制作成本高、标注人员水平不一…...

53.最大子数组和,动态规划+贪心解法!!!

力扣53最大子数组和 题目动态规划贪心 题目 给你一个整数数组 nums &#xff0c;请你找出一个具有最大和的连续子数组&#xff08;子数组最少包含一个元素&#xff09;&#xff0c;返回其最大和。 子数组是数组中的一个连续部分。 示例 1&#xff1a; 输入&#xff1a;nums…...

python+vue3+onlyoffice在线文档系统实战20240723笔记,项目界面设计和初步开发

经过之前的学习,已经能够正常打开文档了。 目前为止,我们的代码能够实现: 打开文档编辑文档手动保存自动保存虽然功能依然比较少,但是我们已经基本实现了文档管理最核心的功能,而且我们有个非常大的优势,就是支持多人同时在线协同编辑。 现在我们要开发项目,我们得做基…...

谷粒商城实战笔记-72-商品服务-API-属性分组-获取分类属性分组

文章目录 一&#xff0c;后端接口开发Controller层修改接口接口测试 二&#xff0c;前端开发 这一节的内容是开发获取分类属性分组的接口。 一&#xff0c;后端接口开发 Controller层修改接口 修改AttrGroupController接口。 RequestMapping("/list/{catelogId}")p…...

Vue 自定义指令

文章目录 注册局部注册全局注册 钩子钩子参数应用1、按钮权限验证2、自定义用户行为收集指令3、按钮点击防抖4、输入框自动获取焦点5、输入框自动去空字符串6、文字展示不下时展示提示框 注册 局部注册 export default {setup() {/*...*/},directives: {// 在模板中启用 v-fo…...

【python】python图书管理系统_普通用户+管理员菜单(源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…...

智能路面裂缝检测:基于YOLO和深度学习的全流程实现

引言 路面裂缝检测是维护道路质量和延长道路寿命的重要手段。传统的检测方法往往费时费力且易受人为因素影响。为了提高检测效率和准确性&#xff0c;本文介绍了一种基于深度学习的路面裂缝检测系统。该系统包括用户界面&#xff0c;利用YOLO&#xff08;You Only Look Once&a…...

C++ unordered_map

1. unordered系列关联式容器 在C98 中&#xff0c; STL 提供了底层为红黑树结构的一系列关联式容器&#xff0c;在查询时效率可达到 &#xff0c;即最差情况下需要比较红黑树的高度次&#xff0c;当树中的节点非常多时&#xff0c;查询效率也不理想。最好的查询是&#xff0c…...

PHP Switch 语句

PHP 中的 switch 语句是一种多路分支语句&#xff0c;它允许一个变量的值对多个代码块进行选择执行。这通常比使用多个 if...elseif...else 语句更清晰、更易于维护。下面将详细介绍 PHP 中 switch 语句的使用方法。 基本语法 switch (n) {case label1:// 如果 n label1&…...

electron 网页TodoList应用打包win桌面软件数据持久化

参考&#xff1a; electron 网页TodoList工具打包成win桌面应用exe https://blog.csdn.net/weixin_42357472/article/details/140648621 electron直接打包exe应用&#xff0c;打开网页上面添加的task在重启后为空&#xff0c;历史没有被保存&#xff0c;需要持久化工具保存之前…...

软件缺陷(Bug)、禅道

目录 软件缺陷的判定标准 软件缺陷的核心内容 构成缺陷的基本要素 缺陷报告 缺陷管理 缺陷的跟踪流程 项目管理工具--禅道 软件在使用过程中存在的任何问题&#xff08;如&#xff1a;错误、异常等&#xff09;&#xff0c;都叫软件的缺陷&#xff0c;简称bug。 软件缺…...

MySQL客户端命令一节将.sql文件导入MySQL

MySql客户端命令 直接输入SQL语句 使用MySQL客户端连接到服务器之后&#xff0c;可以发送SQL语句到服务器执行&#xff0c;并且以&#xff1b;和\g, \G作为结束不同的结束方式显示内容有所不同** TIPS: ;和\g结尾以表格的形式显示结果\G以行的形式显示结果 在连接到服务器之后…...

[论文笔记] DCA(Dual Chunk Attention)

DCA&#xff08;Dual Chunk Attention&#xff09;是一种在自然语言处理模型中用来处理长文本的技术。传统的注意力机制&#xff08;Attention&#xff09;在处理长文本时可能会遇到效率和性能瓶颈&#xff0c;因为计算每个单词与其他所有单词之间的关系会随着文本长度的增加而…...

构建查询洞察 UI

本文字数&#xff1a;2631&#xff1b;估计阅读时间&#xff1a;7 分钟 作者&#xff1a;Bucky Schwarz 本文在公众号【ClickHouseInc】首发 我们最近发布了 Query Insights 的初步实现&#xff0c;为 ClickHouse Cloud 用户提供了一种便捷的方法来查看和解释查询日志。该功能对…...

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第三篇 嵌入式Linux驱动开发篇-第五十九章 等待队列

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…...

35.【C语言】详解函数递归

目录&#xff1a; 定义 作用 例子1~3 拓展学习 趣味练习 1.定义&#xff1a;函数自己调用自己&#xff08;递推回归&#xff09; int main() {main()return 0; } 这样容易死循环&#xff0c;导致爆栈(Stack Overflow) 所以需要设立限制条件&#xff0c;使执行时越来越接近条…...

【机器学习】智驭未来:机器学习如何重塑制造业的转型与升级

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f50d;1. 引言&#x1f4d2;2. 机器学习重塑制造业生产流程&#x1f338;预测性维护&#xff1a;减少停机时间&#xff0c;提高设…...

Python爬虫(5) --爬取网页视频

文章目录 爬虫爬取视频指定url发送请求UA伪装请求页面 获取想要的数据解析定位定位音视频位置 存放视频完整代码实现总结 爬虫 Python 爬虫是一种自动化工具&#xff0c;用于从互联网上抓取网页数据并提取有用的信息。Python 因其简洁的语法和丰富的库支持&#xff08;如 requ…...

【Unity】关于Luban的简单使用

最近看了下Luban导出Excel数据的方式&#xff0c;来记录下 【Unity】关于Luban的简单使用 安装Luban开始使用UnityLubanC# 扩展 安装Luban Luban文档&#xff1a;https://luban.doc.code-philosophy.com/docs/beginner/quickstart 1.安装dotnet sdk 8.0或更高版本sdk 2.githu…...

企业公户验证API如何使用JAVA、Python、PHP语言进行应用

在纷繁复杂的金融与商业领域&#xff0c;确保每笔交易的安全与合规是至关重要的。而企业公户验证API&#xff0c;正是这样一位默默守护的数字卫士&#xff0c;它通过智能化的手段&#xff0c;简化了企业对公账户验证流程&#xff0c;让繁琐的审核变得快捷且可靠。 什么是企业公…...

杰发科技Bootloader(2)—— 基于7840的Keil配置地址

序 在7840的sample代码里面有一个简单的Boot跳转APP的示例 PFlash地址从0开始 DFlash的地址从1000000开始 Boot解析 他的boot地址配置为0 Boot的代码主要是这几行&#xff0c;主要作用就是Flash的跳转 int main(void) {SystemClock_Config();InitDebug();printf("demo…...

cmd常用命令

在Windows操作系统中&#xff0c;CMD&#xff08;Command Prompt&#xff09;是一个强大的命令行工具&#xff0c;允许用户通过键入命令来执行各种系统级操作。以下是一些常用的CMD命令及其功能&#xff1a; 文件与目录管理 dir&#xff1a;显示当前目录下的文件和子目录列表。…...

PCIe 以太网芯片 RTL8125B 的 spec 和 Linux driver 分析备忘

1,下载 RTL8125B driver 下载页&#xff1a; https://www.realtek.com/Download/List?cate_id584 2,RTL8125B datasheet下载 下载页&#xff1a; https://file.elecfans.com/web2/M00/44/D8/poYBAGKHVriAHnfWADAT6T6hjVk715.pdf3, 编译driver 解压&#xff1a; $ tar xj…...

Python tkinter Menu菜单组件详解

好久没有更新了&#xff0c;今天我来领大家熟悉一下Menu组件 1.认识、了解Menu 什么是Menu menu组件是tkinter中的菜单组件&#xff0c;通过该组件&#xff0c;开发者可以为窗口设计菜单和工具栏等。&#xff08;ttk还提供了treeview树形菜单&#xff0c;python遍历目录的两种…...

谷粒商城实战笔记-46-商品服务-API-三级分类-配置网关路由与路径重写

文章目录 一&#xff0c;准备工作1&#xff0c;新增一级菜单2&#xff0c;新增二级菜单 二&#xff0c;前端树形界面开发1&#xff0c;开发分类展示组件 三&#xff0c;远程调用接口获取商品分类数据1&#xff0c;远程调用2&#xff0c;路由配置 错误记录 本节的主要内容&#…...

简要了解sql注入

sql注入安全测试中危害 数据库中的数据&#xff0c;对数据库数据进行操作&#xff08;查询、删除等&#xff09;&#xff1b;网站的权限&#xff0c;找到注入点后可后门写入&#xff1b; sql注入产生原理详细分析 可控变量&#xff0c;带入数据库查询&#xff0c;变量未存在…...

Java 扫雷游戏

程序分析 使用Java编写的扫雷游戏界面程序&#xff0c;主要内容总结如下&#xff1a; Frame类继承自JFrame&#xff0c;构建了扫雷游戏的界面。 包含文本框text、标签nowBomb和setBomb、按钮start、面板MenuPamel和bombPanel等组件。通过jbInit方法进行初始化设置&#xff0c;…...

vue3 命令运行窗口暴露网络地址,以及修改端口号

一般情况下这里的地址是隐藏的 这里加上 --host 可以暴露网络地址&#xff0c;再加上--port --8080 就可以将端口号修改为8080&#xff08;修改后边的数字就可以修改为你想要的端口号&#xff09;...

由CANoe自带协议栈在TCP断开连接时同时发送两条FIN报文引起的注意事项

在我写这篇文章CAPL如何在底层模拟TCP Server端断开TCP连接时,我发现了一个奇怪的现象。我为了使用CAPL组装报文的方式实现TCP Server断开连接的过程,插入一个网络节点作为Client端。为了让Client能够发起连接和发起断开连接,给网络节点配置了独立的TCP/IP Stack,也就是CAN…...

FastGPT部署和接入使用重排模型bce-reranker-base

bce-reranker简介 bce-reranker 是一种专门用于信息检索和自然语言处理领域中的重排序(reranking)模型。这种模型由北京智源人工智能研究院(BAAI)开发,是 BGE(BAAI General Embedding)系列的一部分。BGE 系列模型专注于提供通用的嵌入表示,而 bce-reranker 则更进一步…...