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

C++(初阶)(八)——string

string

  • string
    • 遍历
      • 下标+[]
      • 迭代器
        • iterator
        • 反向迭代器
      • 范围for
        • 修改
    • Capacity
      • size和length
      • max_size
      • capacity
      • clear
      • capacity的扩容
      • reserve
      • resize
    • Element access
      • operator[]和at
    • **Modifiers**:
      • append
      • insert
      • erase
      • replace
    • String operations
      • c_str
      • substr和find
      • find_first_of
      • getline
    • 题目
      • [387. 字符串中的第一个唯一字符](https://leetcode.cn/problems/first-unique-character-in-a-string/)
      • [415. 字符串相加](https://leetcode.cn/problems/add-strings/)

string是一个模板,管理char的顺序表

typedef basic_string<char> string;

string存在于c++标准模板库std中,如果std没有展开需要加上std::

底层是顺序表

class string
{
public://本质是返回引用,这样可以修改返回值char& operator[](size_t i){return _str[i];}
private:char* _str;size_t _size;size_t _capacity;
};
(constructor)函数名称功能说明
string() (重点)构造空的string类对象,即空字符串
string(const char* s) (重点)用C-string来构造string类对象
string(size_t n, char c)string类对象中包含n个字符c
string(const string&s) (重点)拷贝构造函数
clsss Stack()
{...
};int main()
{string s1;string s2("hello world");string s3 = "hello world";//如果使用&(引用),必须加const,因为s4引用的不是常量串,而是中间产生的临时对象(具有常性)const string& s4 = "hello world";//可以实例化为int,当然也可以实例化为string(串)Stack<string> st;//第一种//string s5("你好");//st.Push(s5);//第二种st.Push("你好");string s6(s5);//开11个空间,末尾是'\0',前面是10个#string s7(10,"#");return 0;
}

string (const string& str, size_t pos, size_t len = npos);

npos在32位系统下,最大为42亿多,-1是unsinged int类型的最大值(42亿多),作为npos缺省值

int main()
{string s1("hello world");//从下标为3处开始的10个字符,如果取的字符多于原字符串,直到取完原字符结束string s2(s1,3,10);、cout << s2 <<endl;return 0;
}

遍历

string重载了operator[](一个是普通的(可修改)一个是const的(仅读))

下标+[]

int main()
{string s1("hello world");s1[0]++;cout << s1 << endl;s1[0] = 'x';cout << s1 << endl;//size不包含'\0'for(size_t i = 0; i < s1.size(); i++){s1[i]++;}cout << s1 << endl;for(size_t i = 0; i < s1.size(); i++){cout << s1[i] << " ";}cout << endl;//存在越界检查//s1[13];	//编译会报错
}//iello world
//xello world
//yfmmp!xpsme
//y f m m p ! x p s m e

迭代器

iterator

iterator是string类域中的一个类型,迭代器是类似指针的东西,begin是开始的位置,end是结束的下一个位置,即左闭右开区间[begin(),end())

int main()
{string s1("hello world");//容器通用访问方式string::iterator it = s1.begin();while (it != s1.end()){cout << *it << " ";++it;}cout << endl;//修改it = s1.begin();while (it != s1.end()){(*it)--;++it;}cout << endl;return 0;
}
//y f m m p ! x p s m e
//h e l l o   w o r l d
#include<iostream>
#include<vector>
//包含各种算法
#include<algorithm>
using namespace std;
int main()
{vector<int> a;for (int i = 0; i < 5; i++){a.push_back(i);}//auto vt = a.begin();	//auto自动推断类型,注意:作为返回值时慎用vector<int>::iterator vt = a.begin();while (vt != a.end()){cout << *vt << " ";++vt;}cout << endl;//逆置(反转)//为函数模板,传迭代器,左闭右开区间,针对所有容器reverse(a.begin(), a.end());vt = a.begin();while (vt != a.end()){cout << *vt << " ";++vt;}cout << endl;return 0;
}
//0 1 2 3 4
反向迭代器

反向迭代器,与正向的是相反的,++是向左走

注意是:reverse_iterator

int main()
{string s("hello world");//注意是rbegin()和rend()string::reverse_iterator rit = s.rbegin();while (rit != s.rend()){cout << *rit << " ";++rit;}cout << endl;return 0;
}
//d l r o w   o l l e h

普通迭代器可以读也可以修改,const迭代器可以读不可以修改

当然也有const反向迭代器

范围for

自动取容器数据依次赋值给对象,自动判断结束

#include<iostream>
using namespace std;
int main()
{//遍历字符串string str("hello world");//依次取str的拷贝给x,所以如果要对内容修改,要使用引用for (auto x : str){cout << x << " ";}cout << endl;//遍历数组int arr[6] = { 1,2,3,4,5,6 };for (auto x : arr){cout << x << " ";x++;}cout << endl;return 0;
}
修改
#include<iostream>
using namespace std;
int main()
{string str("hello world");//依次取str的拷贝给x,所以如果要对内容修改,要使用引用//for (auto x : str)//{//	x--;//}for (auto& x : str){x--;}for (auto x : str){cout << x << " ";}cout << endl;return 0;
}
//g d k k n  v n q k c

Capacity

size和length

size是不包含’\0’的

string s1("hello world");
cout << s1.size() << endl;
cout << s1.length() << endl;
//11
//11

length也是求字符串长度,还是推荐使用size

max_size

字符串最大长度

string s2;
cout << s2.max_size() <<endl;
//此处是32位系统
//2147483647

capacity

容量大小

string s2;
cout << s2.capacity() << endl;
//15(其实大小是16,因为还存储着'\0')

clear

清除数据,但是不会清除空间,相当于将size置为0

capacity的扩容

string s;
size_t old = s.capacity();
cout << old << endl;
for(size_t i = 0;i < 100;i++)
{s.push_back('x');if(s.capacity() != old){//扩容cout << s.capacity() << endl;old = s.capacity();}
}//vs下的扩容是第一次2倍,之后为1.5倍。不同的环境下扩容情况有所不同,例如在linux下是标准的2倍扩容。//15
//31
//47
//70
//105

reserve

reverse逆置翻转

reserve保留储藏储备

//扩容string s;
//提前知道使用多少空间,直接开辟完成
s.reserve(200);
size_t old = s.capacity();
cout << old << endl;
for(size_t i = 0;i < 100;i++)
{s.push_back('x');if(s.capacity() != old){//扩容cout << s.capacity() << endl;old = s.capacity();}
}
//在vs下开辟了207
//207

缩容,不同平台下不一样,可能不缩,建议不使用,与编译平台实现有关。

如果需要缩容,使用Shrink to fit

建议只使用reserve的扩容

resize

void resize (size_t n);
void resize (size_t n, char c);

在这里插入图片描述

string s1("xxxxxxxxxxxxxxxxxx");
cout << s1.size() << endl;
cout << s1.capacity() << endl;//插入数据,扩容插入数据
s1.resize(20);
s1.resize(25, 'y');
s1.resize(40, 'z');
cout << s1.size() << endl;
cout << s1.capacity() << endl;//删除数据
s1.resize(5);
cout << s1.size() << endl;
cout << s1.capacity() << endl;

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

Element access

operator[]和at

区别在于对越界的检查方式

operator[]是断言,at是抛异常,可以捕获

	string s1("aaaaa");s1[0] = 'x';cout << s1 << endl;s1.at(1) = 'v';cout << s1 << endl;//xaaaa//xvaaa

Modifiers:

append

追加,附加

string s1("xxxxx");
cout << s1 <<endl;s1.push_back('y');
cout << s1 <<endl;s1.append("zzzz");
cout << s1 <<endl;string s2("haha");
s1.append(s2);
cout << s1 <<endl;//xxxxx
//xxxxxy
//xxxxxyzzzz
//xxxxxyzzzzhaha//追加迭代区间,可以只取一部分
s1.append(++s2.begin(),--s2.end());
cout << s1 <<endl;//xxxxxyzzzzhahaah//经常使用的是+=的运算符重载
s1 += 'n';
cout << s1 <<endl;
s1 += "llllll";
cout << s1 <<endl;//xxxxxyzzzzhahaahn
//xxxxxyzzzzhahaahnllllll

insert

插入字符,是将全部字符向后移动插入,时间复杂度是O(n),谨慎使用

string s1("aaaaa");
cout << s1 << endl;s1.insert(0, 1, 'c');
cout << s1 << endl;//多个插入
s1.insert(0, 3, 'k');
cout << s1 << endl;s1.insert(0,"pppp");
cout << s1 << endl;//支持迭代器
s1.insert(s1.begin(),3,'m');
cout << s1 << endl;//aaaaa
//caaaaa
//kkkcaaaaa
//ppppkkkcaaaaa
//mmmppppkkkcaaaaa

erase

删除字符,覆盖删除,底层要挪动数据,谨慎使用

string s2("hello world");
cout << s2 << endl;s2.erase(5,2);
cout << s2 << endl;//有多少删多少
s2.erase();
cout << s2 << endl;//hello world
//helloorld
//(全删除)

replace

底层要挪动数据,谨慎使用

string s1("hello world");
cout << s1 << endl;s1.replace(5,1,"%%%");
cout << s1 << endl;//hello world
//hello%%%world

将字符串中的空格替换为%%

string s1("hello world hello c");
cout << s1 << endl;
for(size_t i = 0; i < s1.size();i++)
{if(s1[i] == ' '){s1.replace(i,1,"%%");}
}
cout << s1 << endl; 

但是这种方式的效率是非常低的

string s2("hello world hello c");
string s3;
s3.reserve(s2.size());
for(auto ch : s2)
{if(ch != ' '){s3 += ch;}else{s3 += "%%";}
}
s2 = s3;
cout << s2 << endl;

String operations

c_str

为了兼容c语言的接口,返回的字符串需要在末尾有’\0’

substr和find

#include<iostream>
#include<string>using namespace std;
int main()
{string ur1("https://cplusplus.com/reference/string/string/?kw=string");size_t pos1 = ur1.find(':');if (pos1 != string::npos){string sub1 = ur1.substr(0, pos1);cout << sub1 << endl;}size_t pos2 = ur1.find('/',pos1+3);if (pos1 != string::npos){string sub2 = ur1.substr(pos1 + 3, pos2-(pos1 + 3));cout << sub2 << endl;string sub3 = ur1.substr(pos2 + 1);cout << sub3 << endl;}return 0;
}

find_first_of

使用较少

find是找第一个,rfind是找最后一个

find是找字符或者子串

find_first_of在字符串中找给定的字符或者子串

int main ()
{std::string str ("Please, replace the vowels in this sentence by asterisks.");//在str中找aeioustd::size_t found = str.find_first_of("aeiou");while (found!=std::string::npos){//找到aeiou换成*,从找到位置的+1继续找str[found]='*';found=str.find_first_of("aeiou",found+1);}std::cout << str << '\n';return 0;
}

getline

string s1,s2;
cin >> s1;
cout << s1 << endl;//hello world
//hello
string s1,s2;
cin >> s1;getline(cin,s1);
cout << s1 << endl;
//hello world
//hello world

题目

387. 字符串中的第一个唯一字符

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1

示例 1:

输入: s = "leetcode"
输出: 0

示例 2:

输入: s = "loveleetcode"
输出: 2

示例 3:

输入: s = "aabb"
输出: -1
class Solution {
public:int firstUniqChar(string s) {int count[26] = {0};for(auto ch : s){count[ch - 'a'] ++;}for(int i = 0;i < s.size();++i){if(count[s[i] - 'a'] == 1)return i;}return -1;}
};

415. 字符串相加

给定两个字符串形式的非负整数 num1num2 ,计算它们的和并同样以字符串形式返回。

你不能使用任何內建的用于处理大整数的库(比如 BigInteger), 也不能直接将输入的字符串转换为整数形式。

示例 1:

输入:num1 = "11", num2 = "123"
输出:"134"

示例 2:

输入:num1 = "456", num2 = "77"
输出:"533"

示例 3:

输入:num1 = "0", num2 = "0"
输出:"0"

提示:

  • 1 <= num1.length, num2.length <= 104
  • num1num2 都只包含数字 0-9
  • num1num2 都不包含任何前导零
class Solution {
public:string addStrings(string num1, string num2) {string str;//提前开辟空间,降低异地扩容损耗,此处有可能进位所以多开辟一个str.reserve(max(num1.size(),num2.size()) + 1);int end1 = num1.size()-1,end2 = num2.size()-1;//进位int next = 0;while(end1 >= 0 || end2 >= 0){int val1 = end1 >= 0 ? num1[end1--]-'0' : 0;int val2 = end2 >= 0 ? num2[end2--]-'0' : 0;int ret = val1 + val2 + next;//大于10进位next = ret / 10;ret = ret % 10;//尾插,最后反转str += ('0'+ret);}if(next == 1)str += ('1');reverse(str.begin(),str.end());return str;}
};

相关文章:

C++(初阶)(八)——string

string string遍历下标[]迭代器iterator反向迭代器 范围for修改 Capacitysize和lengthmax_sizecapacityclearcapacity的扩容reserveresize Element accessoperator[]和at **Modifiers**:appendinserterasereplace String operationsc_strsubstr和findfind_first_ofgetline 题目…...

计算机操作系统处理机调度(1)

系列文章目录 第三章&#xff1a;处理机调度与死锁 文章目录 系列文章目录前言一、作业和资源&#xff1a;二、处理机调度的层次&#xff1a; 1.高级调度2.初级调度3.中级调度 三、作业调度算法举例&#xff1a;总结 前言 在多道程序的环境下&#xff0c;内存中存在着多个进…...

ctfshow REVERSE re2 萌新赛 内部赛 七夕杯 WP

目录 re2 萌新赛 flag白给 签退 数学不及格 内部赛 批量生产的伪劣产品 来一个派森 好好学习 天天向上 屏幕裂开了 七夕杯 逆向签到 easy_magic re2 ida分析主函数&#xff0c;将flag.txt内容加密写入enflag.txt 这是密钥加密过程 标准rc4加密 简单异或解…...

云服务器怎么设置端口禁用呢?

在云服务器上禁用特定端口是提升安全性的重要措施&#xff0c;可通过云平台安全组和服务器本地防火墙双重配置实现。以下是详细操作指南&#xff1a; 一、通过云平台安全组禁用端口&#xff08;优先推荐&#xff09; 1. 莱卡云/腾讯云/华为云等操作步骤 登录云控制台 进入ECS实…...

V8引擎源码编译踩坑实录

背景 为了解决 view8 代码没有指定版本的 v8 引擎问题GitHub - suleram/View8: View8 - Decompiles serialized V8 objects back into high-level readable code. 但是打出来了exe文件也没啥用&#xff0c;不清楚这个view8是解决啥逆向用的&#xff0c;如果想逆向electron的j…...

享元模式(Flyweight Pattern)

享元模式(Flyweight Pattern)是一种结构型设计模式,它通过共享技术来高效地支持大量细粒度对象的复用。 一、基础 1 意图 运用共享技术有效地支持大量细粒度的对象 减少内存中对象的数量,节省系统资源 2 适用场景 一个应用程序使用了大量对象 由于对象数量庞大造成很大的…...

RAG(Retrieval-Augmented Generation)基建之PDF解析的“魔法”与“陷阱”

嘿&#xff0c;亲爱的算法工程师们&#xff01;今天咱们聊一聊PDF解析的那些事儿&#xff0c;简直就像是在玩一场“信息捉迷藏”游戏&#xff01;PDF文档就像是个调皮的小精灵&#xff0c;表面上看起来规规矩矩&#xff0c;但当你想要从它那里提取信息时&#xff0c;它就开始跟…...

搭建小程序该如何选择服务器?

当企业选择开发属于自己的小程序&#xff0c;则需要服务器的支持&#xff0c;服务器可以帮助加速小程序的上线速度&#xff0c;影响小程序后面的运行是否流畅&#xff0c;同时还会影响用户访问网站时的速度&#xff0c;所以&#xff0c;企业在搭建小程序时该如何选择合适的服务…...

【腾讯云架构师技术沙龙2025.03.22】

大模型技术演进与行业影响分析 日期&#xff1a;2025年3月22日 主讲人&#xff1a;李建忠 《DeepSeek实战驱动行业智变—AI应用寒武纪》 整理&#xff1a;飞书语音转化DeepSeek分析汇总 一、技术演进&#xff1a;从快思考到慢思考 1. 早期争议与能力局限&#xff08;2022-202…...

【jvm】垃圾回收的并行和并发

目录 1. 说明2. 并行&#xff08;Parallel&#xff09;2.1 定义2.2 特点2.3 示例 3. 并发&#xff08;Concurrent&#xff09;3.1 定义3.2 特点3.3 示例 4. 并行与并发的比较 1. 说明 1.在JVM&#xff08;Java虚拟机&#xff09;的垃圾回收机制中&#xff0c;并行&#xff08;…...

Flowable基础表结构

工作流程的相关操作都是操作存储在对应的表结构中&#xff0c;为了能更好的弄清楚Flowable的实现原理和细节&#xff0c;我们有必要先弄清楚Flowable的相关表结构及其作用。在Flowable中的表结构在初始化的时候会创建相关表结构&#xff0c;具体如下&#xff1a; ACT_EVT&…...

为什么不同的损失函数可以提升模型性能?

不同的损失函数可以提升模型性能的原因在于&#xff0c;损失函数是模型优化的核心目标&#xff0c;它直接定义了模型在训练过程中需要最小化的误差或偏差。通过设计不同的损失函数&#xff0c;可以针对具体任务的特点、数据分布的特性以及模型的目标需求进行更精确的优化&#…...

git上传文件到远程库

1.git init 把这个目录变成git可以管理的仓库 2.git status查看文件追踪的情况&#xff08;工作区的文件是红色&#xff09; 3.git add . 添加工作区所有文件到暂存区 再git status&#xff08;此时文件都变成绿色&#xff09; 4.git commit -m 描述性文字 5.git push -u o…...

【产品小白】需求分析的进阶

在产品经理的职业发展中&#xff0c;需求分析能力的提升至关重要。普通和进阶在需求分析层面&#xff0c;往往存在从表面需求到本质问题的认知差异。以下从几个方面探讨这一进阶过程&#xff1a; 1. 需求理解的深度 普通&#xff1a;​通常停留在用户表达的显性需求层面&#…...

机试题汇总

万能头文件 #include<bits/stdc.h> 输入一个年份和月份&#xff0c;输出该月的天数 1.3.5.7.8.10.12 -- 31天 闰年判断&#xff1a; year % 400 0 || (year % 4 0 && year % 100 ! 0&#xff09; 输入字符串&#xff0c;反转输出 #include<iostream&g…...

软件公司高新技术企业代办:机遇与陷阱并存-优雅草卓伊凡

软件公司高新技术企业代办&#xff1a;机遇与陷阱并存-优雅草卓伊凡 在科技飞速发展的当下&#xff0c;软件公司如雨后春笋般涌现&#xff0c;众多企业渴望通过申请高新技术企业来获得政策支持与发展助力。随之而来的&#xff0c;是高新技术企业代办业务的兴起。然而&#xff…...

C#中3维向量的实现

c#中默认不带库三维向量&#xff0c;需要自己安装第三方库&#xff0c;或者可以手动实现一个简易的三维向量。 public struct Vector3D {public double X { get; set; }public double Y { get; set; }public double Z { get; set; }public Vector3D(double x, double y, doubl…...

使用腾龙边缘计算网关内置的AIoTedge+NodeRED接入西门子PLC

腾龙边缘计算网关一体机凭借其强大的性能和丰富的功能&#xff0c;为企业提供了一种高效、灵活的解决方案。本文将详细介绍如何使用腾龙边缘计算网关一体机内置的AIoTedgeNodeRED接入西门子PLC&#xff0c;实现数据的采集、处理与传输。 一、硬件准备与环境搭建 在开始之前&am…...

基于MLA的人类语音情感分类

《DeepSeek大模型高性能核心技术与多模态融合开发&#xff08;人工智能技术丛书&#xff09;》(王晓华)【摘要 书评 试读】- 京东图书 随着信息技术的不断发展&#xff0c;如何让机器识别人类情绪&#xff0c;这个问题受到了学术界和工业界的广泛关注。目前&#xff0c;情绪识…...

Codeforces Round 1012 (Div. 2)

AB略 C 没看懂题意&#xff0c;翻译的问题。t0代表这个人必须找一个没有人的桌子且座位离他最近&#xff0c;t1代表这个人只要找一个空座位就可以了。一个桌子四个座位&#xff0c;t0肯定会坐左下角的那个。首先建立两个小根堆q1代表左下角的座位&#xff0c;q2代表一个桌子的…...

FPGA时钟约束

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 前言 一、Create_clock 前言 时钟周期约束&#xff0c;就是对时钟进行约束。 一、Create_clock create_clock -name <name> -period <period> -waveform …...

二分查找------练习3

1. 题目 2. 思路和题解 这道题看到这个复杂度&#xff0c;就想到应该是使用二分查找进行求解。为了使二分查找的次数尽可能的少&#xff0c;我们需要对较短的数组进行查找&#xff0c;假设就在nums1上进行操作&#xff0c;因此在开始时&#xff0c;要对两个数组的长度进行一个…...

拆解美团2024年报,业务协同、生态共赢、科技创新

从早期的千团大战开始&#xff0c;到后来外卖和社区团购们的激烈角逐&#xff0c;再到现在即时零售战场的群雄争霸&#xff0c;本地生活的硝烟从来都没有真正消散过。 作为本地生活服务领域的“领头羊”——美团&#xff0c;也一直都是其他平台们的挑战目标&#xff0c;几乎所…...

EMS小车技术特点与优势:高效灵活的自动化输送解决方案

北成新控伺服技术丨EMS小车调试视频 EMS小车是一种基于单轨运行的电动输送系统&#xff0c;通过电力驱动实现物料的高效搬运和输送&#xff0c;具有高效灵活、节能环保、多功能集成、行业适配性强等特性&#xff0c;广泛应用于汽车制造、工程机械、家电生产、仓储物流等行业自动…...

GESP2025年3月认证解析

GESP一级 一、单选题 答案&#xff1a;D 解析&#xff1a;DeepSeek 是字节跳动公司开发的人工智能&#xff0c;它具备生成文本的能力&#xff0c;所以可以根据《哪吒 2》的场景生成剧情脚本。A 选项中《哪吒 2》是贺岁片&#xff0c;并非新型操作系统&#xff1b;B 选项 Deep…...

尝试在软考62天前开始成为软件设计师-信息系统安全

安全属性 保密性:最小授权原则(能干活的最小权限)、防暴露(隐藏)、信息加密、物理保密完整性(防篡改):安全协议、校验码、密码校验、数字签名、公证 可用性:综合保障( IP过滤、业务流控制、路由选择控制、审计跟踪)不可抵赖性:数字签名 对称加密 DES :替换移位 3重DESAESR…...

Dify - 架构、部署、扩展与二次开发指南

本文详细解析 Dify 的架构、部署流程、高可用中间件的独立部署方法&#xff0c;以及二次开发流程&#xff0c;帮助开发者更高效地管理和扩展 Dify。 1. 本地DEMO部署 安装Docker&#xff0c;执行下面脚本&#xff0c;可能需要配置镜像。 git clone https://github.com/langge…...

用DrissionPage升级网易云音乐爬虫:更稳定高效地获取歌单音乐(附原码)

一、传统爬虫的痛点分析 原代码使用requests re的方案存在以下局限性&#xff1a; 动态内容缺失&#xff1a;无法获取JavaScript渲染后的页面内容 维护成本高&#xff1a;网页结构变化需频繁调整正则表达式 反爬易触发&#xff1a;简单请求头伪造容易被识别 资源消耗大&am…...

详细Linux中级知识(不断完善)

Nginx服务配置 基于主机名配置 映射IP和主机名 [rootlocalhost ~]# vim /etc/hosts 192.168.72.135 www.chengke.com chengke[rootlocalhost ~]# echo "192.168.72.135 www.xx.com" >> /etc/hosts以上是两种方法&#xff0c;前面是你的IP地址&#xff0c;后…...

Softmax温度调节与注意力缩放:深度神经网络中的平滑艺术

Softmax温度调节与注意力缩放&#xff1a;深度神经网络中的平滑艺术 在深度学习的精密机械中&#xff0c;有些细微的调整机制往往被视为理所当然&#xff0c;却实际上蕴含着深刻的数学洞察和巧妙的工程智慧。今天&#xff0c;我们将探讨两个看似独立却本质相通的机制&#xff…...

python打包辅助工具

python打包辅助工具 PyInstaller 是一个非常流行的 Python 应用程序打包工具&#xff0c;它可以将 Python 脚本及其依赖项打包成独立的可执行文件&#xff0c;方便在没有 Python 环境的机器上运行。关于PyInstaller&#xff0c;可参见&#xff1a;https://blog.csdn.net/cnds1…...

jangow靶机攻略

配置网卡 VMware需要配置&#xff0c;不配置扫不到ip,VirtualBox正常打开ip会直接显示出来 网卡配置都改成NAT 打开虚拟机&#xff0c;第一个框选第二行&#xff0c;回车 选第二个&#xff0c;按e键 进入下一个框后&#xff0c;将ro 后面的修改为 rw signin init/bin/bash 按…...

【大模型LLM第十四篇】Agent学习之anthropic-quickstarts Agent

前言 对于anthropic api的快速使用&#xff0c;在github上有几个example Customer Support Agent&#xff1a;由 Claude 提供支持的客户支持代理。该项目演示了如何利用 Claude 的自然语言理解和生成功能来创建可访问知识库的 AI 辅助客户支持系统。Financial Data Analyst &…...

MonIo部署

1、命令行安装 访问monio官网下载应用程序 # wget https://dl.min.io/server/minio/release/linux-amd64/archive/minio-20250228095516.0.0-1.x86_64.rpm -O minio.rpm # sudo dnf install minio.rpm # mkdir ~/minio # minio server ~/minio --console-address :90012、dock…...

深入理解智能家居领域中RS485、Modbus、KNX 和 Zigbee协议概念

首先详细介绍一下 RS485 和 Modbus 这两个在工业自动化和数据通讯领域中非常重要的概念。 RS485 1. 定义与特点 RS485 标准&#xff1a;RS485 是一种串行通信标准&#xff0c;也称为TIA-485标准&#xff0c;主要用于数据传输。它规定了物理层的电气特性&#xff0c;与数据格式…...

Spring Boot深度解析:从核心原理到最佳实践

一、Spring Boot概述 Spring Boot作为Spring生态中的"游戏规则改变者",自2014年发布以来彻底改变了Java企业级应用的开发方式。它通过四大核心特性显著提升了开发效率: 自动配置:基于类路径和已有Bean的智能默认配置起步依赖:简化Maven/Gradle依赖管理的Starter…...

MapReduce过程中reduce task的数量是如何确定的?

在Hadoop MapReduce及Hive中&#xff0c;numReduceTasks&#xff08;Reduce任务数量&#xff09;的确定由用户显式设置、框架自动估算、作业特性约束三方面共同决定。以下是详细解析及示例&#xff1a; 1. 用户显式设置 用户可以通过代码或配置参数直接指定Reduce任务数&#…...

【euclid】21 3D包围盒模块(box3d.rs)

box3d.rs文件定义了一个三维轴对齐的矩形框&#xff08;Box3D&#xff09;&#xff0c;使用最小和最大坐标来表示。矩形框在坐标类型&#xff08;T&#xff09;和单位&#xff08;U&#xff09;上是泛型的。代码提供了多种方法来操作和查询矩形框&#xff0c;包括求交集、并集、…...

用selenium+ChromeDriver豆瓣电影 肖申克的救赎 短评爬取(pycharm 爬虫)

一、豆瓣电影 肖申克的救赎 短评url=https://movie.douban.com/subject/1292052/comments 二、基本知识点讲解 1. Selenium 的基本使用 Selenium 是一个用于自动化浏览器操作的库,常用于网页测试和爬虫。代码中使用了以下 Selenium 的核心功能: webdriver.Chrome: 启动 Chr…...

mysql入门操作

目录 一&#xff0c;MySQL简述 1&#xff0c;什么是MySQL 2&#xff0c;什么是SQL 3&#xff0c;SQL的分类 二&#xff0c;数据库的数据存储类型 1&#xff0c;数值类型 2&#xff0c;字符串类型 3&#xff0c;时间和日期类型 三&#xff0c;数据库的基本操作 1&…...

机械臂【逆运动学】

回顾正运动学fk&#xff1a; IK&#xff1a; 几何法 代数法 六轴 456轴交再同一点 有解析解 下列公式为正运动学部分结论 a和d是长度 &#xff0c;theta和alfa是角度 **疑问&#xff1a;alfa00&#xff1f; Z轴互相平行 ** 已知末端要在空间XYZ处如下 绿色项&#x…...

思库拉水厂开业庆典千人大会回顾

近日,思库拉离子水厂在广州隆重举办了开业盛典,现场汇聚了逾千名嘉宾。此次盛会不仅是对思库拉离子水厂正式投产的庆祝,更是对思库拉品牌未来蓝图的一次展示。 现场氛围热烈,洋溢着浓厚的喜庆气息。参与者来自五湖四海,既有思库拉的忠实拥趸,也有对思库拉产品充满兴趣的潜在消费…...

将Wi-Fi模块订阅MQTT主题以获取最新的固件版本推送信息

将Wi-Fi模块订阅MQTT主题以获取最新的固件版本推送信息&#xff0c;是一种常见的物联网&#xff08;IoT&#xff09;应用场景。这种设计可以实现远程监控和设备的OTA&#xff08;Over-The-Air&#xff09;升级功能。以下是详细的实现步骤和技术细节&#xff1a; 一、系统架构概…...

Netty源码—5.Pipeline和Handler一

大纲 1.Pipeline和Handler的作用和构成 2.ChannelHandler的分类 3.几个特殊的ChannelHandler 4.ChannelHandler的生命周期 5.ChannelPipeline的事件处理 6.关于ChannelPipeline的问题整理 7.ChannelPipeline主要包括三部分内容 8.ChannelPipeline的初始化 9.ChannelPi…...

Vue 中的nextTick函数的原理、作用及使用场景。

大白话Vue 中的nextTick函数的原理、作用及使用场景 在 Vue 里&#xff0c;nextTick 函数是个超实用的工具&#xff0c;它能让你在 DOM 更新完成之后再执行代码。为了能更好地理解 nextTick 函数的原理&#xff0c;咱们就来深入剖析一下。 核心思路 Vue 里的数据更新是异步执…...

详细讲解css的穿透方法

样式穿透&#xff08;CSS穿透&#xff09;的几种方法&#xff0c;包括在Vue中使用::v-deep、>>>、/deep/&#xff0c;还有pointer-events属性。还有关于Shadow DOM和::part伪元素的内容。接下来我会把这些方法分类&#xff0c;并详细说明每种方法的适用场景和注意事项…...

深入理解 tree 命令行工具:目录结构可视化的利器

文章目录 前言1. 什么是 tree 命令&#xff1f;安装 tree 2. tree 的基本用法显示当前目录的树状结构显示指定目录的树状结构 3. tree 的常用选项3.1 显示隐藏文件3.2 排除特定目录或文件3.3 限制递归深度3.4 显示文件大小3.5 显示文件的权限信息3.6 将输出保存到文件 4. 实际应…...

【QA】QT中事件和信号的区别以及联系是什么?

在 Qt 中&#xff0c;事件&#xff08;Event&#xff09; 和 信号与槽&#xff08;Signals & Slots&#xff09; 是 GUI 编程的核心机制&#xff0c;它们既有联系又有本质区别。以下从底层原理、触发流程、代码实现、适用场景四个维度展开对比&#xff0c;并通过大量示例说…...

C++实用函数:find与find_if

本篇来介绍C++中find和find_if函数的使用,通过多个实例来演示。 find用于基础的查找功能,find_if可以实现更复杂的匹配查找条件。 1 find 1.1 函数原型 template <class InputIterator, class T> InputIterator find ( InputIterator first, InputIterator last, c…...

全面了解 Cookies、Session 和 Token

&#x1f9d1; 博主简介&#xff1a;CSDN博客专家&#xff0c;历代文学网&#xff08;PC端可以访问&#xff1a;https://literature.sinhy.com/#/literature?__c1000&#xff0c;移动端可微信小程序搜索“历代文学”&#xff09;总架构师&#xff0c;15年工作经验&#xff0c;…...