C++11QT复习 (十五)
文章目录
- Day10 标准模板库学习笔记(2025.04.02)
- 一、函数和数组能否放入 STL 容器?
- 1. 引用不能直接作为容器元素类型
- ✅ 推荐做法:使用 `std::reference_wrapper<T>`
- 2. 函数不能直接作为容器元素类型
- ✅ 推荐做法一:使用函数指针类型
- ✅ 推荐做法二:使用 `std::function`
- 补充知识:函数和数组的“衰变”行为
- 二、数组能否放入容器?
- ❌ 直接存放原生数组类型 `T[N]` 不被支持
- ✅ 推荐做法一:使用数组指针
- ✅ 推荐做法二(更推荐):使用 `std::array`
- 三、测试代码
- 四、总结
- 实践建议
Day10 标准模板库学习笔记(2025.04.02)
一、函数和数组能否放入 STL 容器?
1. 引用不能直接作为容器元素类型
C++ 的容器如 std::vector
不支持存储引用类型(例如 int&
),因为引用并非对象本身,不能被复制或赋值。
std::vector<int&> rv; // ❌ 编译失败
✅ 推荐做法:使用 std::reference_wrapper<T>
标准库提供了 std::reference_wrapper
类模板,它可以将引用包装为对象,从而实现“间接”存储引用。
#include <functional>
std::vector<std::reference_wrapper<int>> rv1;
rv1.push_back(i); // i 是 int 类型变量
你也可以自定义类似的封装类,但通常没必要:
template <typename T>
class my_reference_wrapper {T& r;
public:my_reference_wrapper(T& i) : r(i) {}
};
2. 函数不能直接作为容器元素类型
函数名本身不是对象,而是函数类型,不能直接作为 std::vector
的元素类型。
std::vector<decltype(add)> fv; // ❌ 编译失败
✅ 推荐做法一:使用函数指针类型
函数名在赋值或传参时会自动“衰变”(decay)为函数指针。
auto f = add; // 类型为 void(*)()
using func_ptr = decltype(f);std::vector<func_ptr> fv1;
fv1.push_back(add);
fv1.push_back(minus);
✅ 推荐做法二:使用 std::function
std::function
是更通用、灵活的可调用对象封装器,可以容纳函数、函数指针、Lambda 表达式、函数对象等。
std::vector<std::function<void()>> fv2;
fv2.push_back(add);
fv2.push_back(minus);
fv2.push_back([](){});
fv2.push_back(Callable{}); // 假设 Callable 重载了 operator()
补充知识:函数和数组的“衰变”行为
C++ 中,数组和函数在很多场景下都会自动转换为指针类型,这种现象称为“衰变”(decay)。
int array[10];
auto p1 = array; // int*
auto&& r1 = array; // 引用仍保留 int[10] 类型
衰变行为可以用 <type_traits>
里的 std::decay_t<T>
模拟:
static_assert(std::is_same_v<decltype(array), std::remove_reference_t<decltype(r1)>>);
static_assert(std::is_same_v<decltype(p1), std::decay_t<decltype(array)>>);
函数也会衰变为函数指针:
static_assert(std::is_same_v<decltype(add), std::remove_reference_t<decltype(function_ref)>>);
二、数组能否放入容器?
❌ 直接存放原生数组类型 T[N]
不被支持
std::vector<int[10]> v; // 编译失败
因为数组不能被拷贝或赋值。
✅ 推荐做法一:使用数组指针
std::vector<int*> v1;
v1.push_back(array); // array 是 int[10]
但这种方式存在数组退化为指针的问题,可能引发不安全行为。
✅ 推荐做法二(更推荐):使用 std::array
std::array
是标准库提供的定长数组类型,兼具 C 数组的性能与 STL 容器的接口。
std::vector<std::array<int, 10>> v2;
v2.push_back(std::to_array(array)); // C++20 提供的安全转换
三、测试代码
#include <type_traits>
#include <functional>
#include <vector>
#include <algorithm>
#include <iostream>
#include <array>void add()
{std::cout << "add" << std::endl;
}void minus()
{std::cout << "minus" << std::endl;
}// 普通类定义可以写在函数里,模板类不行
template <typename T>
class my_reference_wrapper
{T& r;
public:my_reference_wrapper(T& i) : r(i) {}
};/*
容器无法容纳引用和函数?
*/
void container_can_not_contain_reference_and_function()
{int i = 1;int& ri = i;int& ri1 = i;// 想把这两个引用放到容器里// 想把上面两个函数 add 和 minus 放到容器里//std::vector<int&> rv; // 编译出错//std::vector<decltype(add)> fv; // 编译出错// 怎么办...// 对于引用,标准库提供了个包装类,把引用藏到自定义类型里std::vector<std::reference_wrapper<int>> rv1;rv1.push_back(ri);rv1.push_back(ri1);// 自己写也可以std::vector<my_reference_wrapper<int>> rv2;rv2.push_back(ri);rv2.push_back(ri1);// 你永远也不需要这么做...// 要么把对象拷贝进容器,要么移动进容器,把引用放进去是做什么???// 但是函数对象是确实有放到容器里的需求// 这里只是没写对元素的类型,试着拷贝函数给一个变量,看看变量的类型auto f = add; // f 是个函数指针using func_pointer = decltype(f);// 所以元素可以用函数指针类型std::vector<func_pointer> fv1;fv1.push_back(add);fv1.push_back(minus);// 标准库提供了更好的方案 std::function// 首先指定的还是函数类型,而不是函数指针类型// 其次接收可调用对象,即函数和重载了operator()的类都可以放进容器,包括lambdastd::vector<std::function<decltype(add)>> fv2;fv2.push_back(add);fv2.push_back(minus);class Callable{public:void operator()() {}};fv2.push_back(Callable());fv2.push_back([]() {});// 发生了什么?为什么函数赋值后成了函数指针?// 这里涉及C++比较麻烦的地方,为了保持和C语言的兼容性// 所谓 decay 衰变// C语言有数组和函数,数组和函数在赋值/传参时会自动衰变为指针// 这是C编译器的行为,C++编译器为了兼容C,无奈照搬了,这也导致了C++的类型系统有瑕疵// 模板专家很多时候就是在处理这种奇怪的兼容性问题// 这也是为什么数组名是个指针,而函数自动会转为函数指针的原因int array[10];auto array_decay = array; // 类型衰变为 int*auto&& array_ref = array; // 万能引用可以看到精确类型,其实任何引用都可以auto function_decay = add; // 类型衰变为 void(*)()auto&& function_ref = add; // 万能引用可以看到精确类型,其实任何引用都可以static_assert(std::is_same_v<decltype(array_decay),std::decay_t<decltype(array)>>); // 自动decay和手动调用decay得到一样的类型static_assert(std::is_same_v<decltype(function_decay),std::decay_t<decltype(add)>>); // 自动decay和手动调用decay得到一样的类型static_assert(std::is_same_v<decltype(array),std::remove_reference_t<decltype(array_ref)>>); // 把引用移除就得到原来的类型static_assert(std::is_same_v<decltype(add),std::remove_reference_t<decltype(function_ref)>>); // 把引用移除就得到原来的类型// C数组会衰变,还允许做元素,C++这帮人...std::vector<int[10]> array_array;// 但,怎么塞元素...//array_array.push_back(array); // 编译出错// 完蛋,没法塞进去...// 都不让塞为什么允许C数组做元素啊...// 要么妥协,使用衰变类型,即指针std::vector<int*> array_array1;array_array1.push_back(array);// 要么改成标准库的定长数组std::array,推荐做法std::vector<std::array<int, 10>> array_array2;// 使用 std::to_array 从C数组构造标准库数组array_array2.push_back(std::to_array(array));// 记住// 永远不需要把引用放进容器// 函数放进容器是有需求的,推荐用std::function代替函数指针// 数组放进容器也有需求,推荐用std::array代替指针// 碰到问题先去找标准库的解决方案,不要自己(瞎)实现
}
四、总结
数据类型 | 是否能放入 STL 容器 | 推荐做法 |
---|---|---|
引用 T& | ❌ | 使用 std::reference_wrapper<T> |
函数 void() | ❌ | 使用 std::function<void()> 或函数指针 |
数组 T[N] | ❌ | 使用 std::array<T, N> 或 T* |
实践建议
- 遇到“不能放入容器”的情况,优先查标准库是否已有合适的封装工具。
- 避免自己写低质量、重复的封装类,标准库几乎总有更好的方案。
- 多理解“类型衰变”在函数和数组上的行为,有助于掌握模板编程细节。
相关文章:
C++11QT复习 (十五)
文章目录 Day10 标准模板库学习笔记(2025.04.02)一、函数和数组能否放入 STL 容器?1. 引用不能直接作为容器元素类型✅ 推荐做法:使用 std::reference_wrapper<T> 2. 函数不能直接作为容器元素类型✅ 推荐做法一:…...
文件存储的路径简单分析
filename file_pic.filename pic /static/img/filename # 将文件的名称存储在数据库中,方便调取 p_file os.path.join(/home/enen/ee/static/img, filename) file_pic.save(p_file) # 保存文件到指定目录,具体项目是要根据项目的存储地址来看的…...
汽车与航空航天领域软件维护:深度剖析与未来展望
一、引言 在当今科技飞速发展的时代,汽车和航空航天领域的软件应用愈发广泛和深入,软件已成为这些行业系统的核心组成部分。从汽车的智能驾驶辅助系统到航空航天飞行器的飞行控制软件,软件的可靠性、安全性直接关系到整个系统的正常运行和人…...
吉利汽车采用 EMQX 与AutoMQ联合方案构建公私有云一体化的车联网核心架构
吉利汽车集团 数字化基础架构总工程师 洪旅杭 关于吉利汽车 吉利汽车集团在中国上海、宁波、以及海外等地建有造型设计和工程研发中心,研发实力雄厚。在中国、马来西亚建有世界一流的现代化整车和动力总成制造工厂,拥有各类销售网点超过 1400 多家&…...
深圳漫云科技户外公园实景儿童剧本杀小程序:开启亲子互动新纪元
在亲子娱乐需求日益增长的当下,深圳漫云科技推出的户外公园实景儿童剧本杀小程序,凭借其创新玩法与丰富功能,为亲子家庭带来全新体验。该小程序融合户外探险、角色扮演与逻辑推理,不仅满足孩子好奇心,更提升其思维能力…...
如何实现H5端对接钉钉登录并优雅扩展其他平台
如何实现H5端对接钉钉登录并优雅扩展其他平台 钉钉H5登录逻辑后端代码如何实现?本次采用策略模式工厂方式进行定义接口确定会使用的基本鉴权步骤具体逻辑类进行实现采用注册表模式(Registry Pattern)抽象工厂进行基本逻辑定义具体工厂进行对接…...
借助 AI 工具使用 Python 实现北京市店铺分布地理信息可视化教程
一、项目概述 本项目通过 Python 的pyecharts库,结合 AI 工具辅助代码编写与逻辑梳理,实现北京市店铺数量分布及区域连线的地理信息可视化,最终生成交互式地图图表。 二、准备工作 1. 环境与工具 Python 环境:确保已安装 Pyth…...
如何选择优质的安全工具柜:材质、结构与功能的考量
在工业生产和实验室环境中,安全工具柜是必不可少的设备。它不仅承担着工具的存储任务,还直接影响工作环境的安全和效率。那么,如何选择一个优质的安全工具柜呢?关键在于对材质、结构和功能的考量。 01材质:耐用与防腐 …...
使用Vue、Nodejs以及websocket搭建一个简易聊天室
简易聊天室 说在前面效果展示websocketwebsocket的由来websocket的特点 vue前端静态结构效果代码 点击切换用户以及该用户高亮实现思路效果展示 发送消息功能效果展示 连接服务端 Nodejs服务器端实现步骤代码 说在前面 在学习计算机网络的时候,看到了websocket这个…...
node.js使用pnpm运行时报错“Command failed with exit code 1.“怎么办
目录 遇到的问题 问题排查 遇到的问题 在使用pnpm dev运行时报错"Command failed with exit code 1." 如图 问题排查 是先使用pnpm install指令进行安装 然后使用pnpm dev,出现的问题 查看版本号node 发现是版本号高了 将node_modules文件夹删除 通…...
从GPU加速到深度学习革命 —— AlexNet论文概述
广泛认为,将显卡(GPU)用于深度学习模型训练这一突破性发现,主要归功于2012年发表的经典论文《ImageNet Classification with Deep Convolutional Neural Networks》。在这篇论文中,Alex Krizhevsky、Ilya Sutskever 和…...
视频分析设备平台EasyCVR打造汽车门店经营场景安全:AI智慧安防技术全解析
一、方案背景 某电动车企业不停爆出维权新闻,支持和反对的声音此起彼伏,事情不断发酵、反转,每天都有新消息,令人目不暇接。车展、车店作为维权事件的高发场所,事后复盘和责任认定时,安防监控和视频监控平…...
Python•判断循环
ʕ⸝⸝⸝˙Ⱉ˙ʔ ♡ 判断🍰常用的判断符号(比较运算符)andor括号notin 和 not inif-elif-else循环🍭计数循环 forrange()函数简易倒计时enumerate()函数zip()函数遍历列表遍历元组遍历字符串遍历字典条件循环 while提前跳转 continue跳出循环 break能量站😚判断🍰 …...
导入python包模块时报错Segmentation fault (core dumped)的解决思路
一、问题概述 有时候我们在Linux环境下执行代码时,会莫名奇妙出现Segmentation fault (core dumped)这个报错,很难定位到问题,就算定位到了,如果发现是导包的问题,也很难判断。所以记录下相关解决方式,以待…...
tcp转串口
windows 在 Windows 系统上,可以使用以下成熟的串口转 TCP 工具: HW VSP3 (HW Virtual Serial Port) 提供串口到 TCP/IP 的映射功能。支持虚拟串口和网络通信。下载地址:HW Group com0com com2tcp 开源工具,支持虚拟串口和 TCP…...
杂谈:抖音双塔召回模型:亿级内容分发的数学魔法
在信息爆炸的数字时代,我们每天都被海量内容包围。以抖音为例,这个日活跃用户数亿的平台,每分钟就有数以万计的新视频上传。面对如此庞大的内容库,一个核心问题自然浮现:系统如何从这浩瀚的内容海洋中,为每…...
Set 集合
默认情况下, Scala 使用的是不可变集合, 如果你想使用可变集合, 需要引用 scala.collection.mutable.Set Set 默认是不可变集合,数据无序 数据不可重复 遍历集合 创建可变集合 mutable.Set 打印集合 集合添加元素 向集合中…...
青蛙吃虫--dp
1.dp数组有关元素--路长和次数 2.递推公式 3.遍历顺序--最终影响的是路长,在外面 其次次数遍历,即这次路长所有情况都更新 最后,遍历次数自然就要遍历跳长 4.max时时更新 dp版本 #include<bits/stdc.h> using namespace std; #def…...
加油站小程序实战教程08用户注册
目录 1 授权手机号2 前端调用API总结 上一篇我们介绍了小程序的登录功能,当用户未注册的时候,点击自动加油按钮会弹出授权手机号,然后进行注册,本篇我们介绍一下用户注册的开发过程。 1 授权手机号 微搭提供了小程序手机号获取的…...
进程内存分布--之showmap呈现memory-layout.cpp内存分布
上一篇我们讲了:进程内存分布--之pmap呈现memory-layout.cpp内存分布 我们这里讲一个用于分析内存占用的更直观的方式,showmap来看看会是什么呈现效果: 我们再来使用showmap命令来看下它是怎么呈现内存分布的: 可以看到showmap…...
vim/vi程序(1)
今天我们来学习一下一个编辑器,vim(vi是以前的版本),这个是linux常用的编辑器,我们是必须要学习滴,来看. 各种模式示意图: 案例: vim aaa.txt 按i进入编辑模式,此时可以输入 按ESC可以退出 :进入命令模式 输入wq保存并退出 今天大家先简单了解一下基础…...
【Python】案例:计算股票收益率和波动率
【Python】案例:计算股票收益率和波动率: 1、案例需求2、数据准备3、案例实现 1、案例需求 在分析股票数据时,我们需要从这些数据中得到一些关键指标进行评估,比如收益率、波动率,其中收益率又可以细分为简单收益率和…...
从云计算到算网融合:未来已来的算力革命
一、算力网络:重塑数字时代的基础设施 在当今的数字世界,我们似乎已习惯了云计算带来的便利。然而,随着技术的飞速发展,一种全新的架构 —— 算力网络,正悄然崛起,有望彻底改变我们对计算资源的认知和利用…...
高级:消息队列面试题精讲
一、引言 消息队列在现代软件架构中扮演着至关重要的角色,尤其在处理高并发、系统解耦和异步通信等场景下。Kafka 和 RabbitMQ 作为两种主流的消息队列技术,各自具有独特的特性和适用场景。本文将深入分析 Kafka 和 RabbitMQ 的原理、使用场景及相关面试…...
大模型RAG项目实战-知识库问答助手v1版
安装 Ollama 根据官网指导,安装对应版本即可。 下载安装指导文档: handy-ollama/docs/C1/1. Ollama 介绍.md at main datawhalechina/handy-ollama 注意:在 Windows 下安装 Ollama 后,强烈建议通过配置环境变量来修改模型存储…...
【云计算】打造高效容器云平台:规划、部署与架构设计
引言 随着移动互联网时代的大步跃进,互联网公司业务的爆炸式增长发展给传统行业带来了巨大的冲击和挑战,被迫考虑转型和调整。对于我们传统的航空行业来说,还存在传统的思维、落后的技术。一项新业务从提出需求到立项审批、公开招标、项目实…...
AI智慧共治新未来——社会综合治理智慧化系统
针对社会综合治理中乱倒垃圾、乱停车、乱贴广告等不文明行为的识别与处置难题,“社会综合治理智慧化系统”融合“技防人防共治”理念,通过人工智能、智能监控与数据驱动的综合手段,构建了一套高效、智能、可扩展的城市治理工具。以下是系统的…...
MySQL学习笔记(四)——DML和DQL
目录 1. DML 1.1 添加数据 1.1.1 给指定字段添加数据 1.1.2 给全部字段添加数据 1.1.3 批量添加数据 1.2 修改数据 1.3 删除数据 2. DQL 2.1 基本语法 2.2 基础查询 2.2.1 查询多个字段 2.2.2 字段设置别名 2.2.3 去除重复记录 2.3 条件查询 2.4 聚合函数 2.5 …...
AWS SNS深度解析:构建高可用、可扩展的云原生消息通信解决方案
引言 在云原生架构中,高效的消息通信是系统解耦、实时响应的核心需求。AWS Simple Notification Service(SNS)作为一款全托管的发布/订阅(Pub/Sub)服务,为开发者提供了灵活、可靠的消息分发能力。本文将从…...
大数据(5)Spark部署核弹级避坑指南:从高并发集群调优到源码级安全加固(附万亿级日志分析实战+智能运维巡检系统)
目录 背景一、Spark核心架构拆解1. 分布式计算五层模型 二、五步军工级部署阶段1:环境核弹级校验阶段2:集群拓扑构建阶段3:黄金配置模板阶段4:高可用启停阶段5:安全加固方案 三、万亿级日志分析实战1. 案例背景&#x…...
阿里云域名证书自动更新acme.sh
因为阿里云的免费证书只有三个月的有效期,每次更换都比较繁琐,所以找到了 acme.sh,还有一种 certbot 我没有去了解,就直接使用了 acme.sh 来更新证书,acme.sh 的主要特点就是: 支持多种 DNS 服务商自动化续…...
HCIP第二次作业
一、拓扑图 二、需求 1.按照图示的VLAN及IP地址需求,完成相关配置 2.要求SW1为VLAN 2/3的主根及主网关,SW2为vlan 20/30的主根及主网关,SW1和SW2互为备份 3.上层通过静态路由协议完成数据通信过程 4.AR1为企业出口路由器 5.要求全网可达…...
数据驱动可视化实战:图表狐精准生成图表的完整数据范式
一、数据输入黄金法则 图表狐 - AI图表生成工具,在线数据可视化要求数据描述必须包含三个核心要素: [主体对象] [量化指标] [维度划分] 错误示例 ❌: "展示各部门销售额对比" 正确示例 ✅: "2023年Q1-Q4各部门销售额&a…...
代码随想录算法训练营第五十二天|图论专题: 101. 孤岛的总面积、102. 沉没孤岛、103. 水流问题、104. 建造最大岛屿
101. 孤岛的总面积 本题要求找到不靠边的陆地面积,那么我们只要从周边找到陆地然后 通过 dfs或者bfs 将周边靠陆地且相邻的陆地都变成海洋,然后再去重新遍历地图 统计此时还剩下的陆地就可以了。 1、从左边和后边向中间遍历 2、从上边和下边向中间遍历…...
Sentinel核心源码分析(下)
文章目录 前言一、StatisticSlot的异常处理二、SentinelResourceAspect的异常处理三、entry.exit2.1、StatisticSlot的exit2.2、DegradeSlot的exit 总结 前言 在上篇中,主要记录了Sentinel与Spring Boot的整合,以及责任链的构建,执行的过程。…...
如何将内网的IP地址映射到外网?详细方法与步骤解析
01 为什么需要将内网IP映射到外网 在当今数字化时代,远程访问内网资源已成为许多企业和个人的刚需。将内网IP地址映射到外网的主要目的是允许外部网络访问内网中的特定服务,比如Web服务器、远程桌面、文件共享等应用场景。无论是企业需要远程办公访问内…...
八股补充说明
ConcurrentHashMap 默认使用16个段,主要是为了平衡并发性能和内存占用。16个段的选择来源于历史经验和实际测试,能够在多数应用中提供较好的性能。 注意:可达性分析法是对所有引用类型都进行分析 总结表: 引用类型与根对象的关系回…...
数字三角形(dfs+动态规划)通过率未达100%
数字三角形 题目描述 上图给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。 路径上的每一步只能从一个数走到下一层和它最近的左边的那个数或者右 边的那…...
版本控制工具——Git
目录 【版本控制系统】 【Git概述】 【Git下载】 【Git初始化本地仓库并推送】 【克隆目标仓库】 【Git团队开发的一种流程】 【Git客户端TortoiseGit】 【下载、克隆和分支之间的区别】 【下载GitHub中的子文件夹】 【不用魔法的访问方法】 【GitHub官方文档】 【版…...
计算机网络学习前言
前言 该部分说明计算机网络是什么?它有什么作用和功能?值不值得我们去学习?我们该如何学习?这几个部分去大概介绍计算机网络这门课程,往后会介绍计算机网络的具体知识点。 1.计算机网络是什么? 计算机网…...
Python爬虫第6节-requests库的基本用法
目录 前言 一、准备工作 二、实例引入 三、GET请求 3.1 基本示例 3.2 抓取网页 3.3 抓取二进制数据 3.4 添加headers 四、POST请求 五、响应 前言 前面我们学习了urllib的基础使用方法。不过,urllib在实际应用中存在一些不便之处。以网页验证和Cookies处理…...
当实体类中的属性名和表中的字段名不一样 ,怎么办
在不同的持久化框架中,当实体类中的属性名和表中的字段名不一致时,有不同的解决办法,下面为你详细介绍: 1. MyBatis MyBatis 是一个流行的持久层框架,有两种主要方式来处理属性名和字段名不一致的情况。 方式一&…...
我用deepseek制作了一份建设项目从立项到验收全流程手册《从蓝图到交付:建设项目全生命周期管理实战手册》
建设项目全流程详解(2025年更新版) 一、立项决策阶段 项目建议书编制 明确建设背景、必要性、初步规模及投资估算,形成《项目建议书》报审材料 12 可行性研究深化 完成市场供需分析、技术方案比选、环境影响评估、财务敏感性…...
力扣HOT100之链表:19. 删除链表的倒数第 N 个结点
这道题的思路比较简单,直接定义一个虚拟头节点,然后再定义快慢指针,快慢指针在初始状态下都指向虚拟头节点,然后让快指针先走n步,慢指针停在原地,然后快慢指针同步前进,当快指针fast指向最后一个…...
【Django】教程-11-ajax弹窗实现增删改查
【Django】教程-1-安装创建项目目录结构介绍 【Django】教程-2-前端-目录结构介绍 【Django】教程-3-数据库相关介绍 【Django】教程-4-一个增删改查的Demo 【Django】教程-5-ModelForm增删改查规则校验【正则钩子函数】 【Django】教程-6-搜索框-条件查询前后端 【Django】教程…...
大厂算法面试 7 天冲刺:第7天-系统设计与模拟面试实战 —— 架构思维 + Java落地
🏗️ 第7天:系统设计与模拟面试实战 —— 架构思维 Java落地 📚 一、What:系统设计是什么? 系统设计是对一个复杂系统的高可用、高性能、高扩展性架构进行顶层思考和具体实现的过程。 🔧 涉及核心主题&a…...
面试题汇总06-场景题线上问题排查难点亮点
面试题汇总06-场景题&线上问题排查&难点亮点 【一】场景题【1】订单到期关闭如何实现【2】每天100w次登录请求,4C8G机器如何做JVM调优?(1)问题描述和分析(2)堆内存设置(3)垃圾收集器选择(4)各区大小设置(5)添加必要的日志【3】如果你的业务量突然提升100倍…...
AI训练存储架构革命:存储选型白皮书与万卡集群实战解析
一、引言 在人工智能技术持续高速发展的当下,AI 训练任务对存储系统的依赖愈发关键,而存储系统的选型也变得更为复杂。不同的 AI 训练场景,如机器学习与大模型训练,在模型特性、GPU 使用数量以及数据量带宽等方面的差异ÿ…...
数据结构实验3.1:顺序栈的基本操作与进制转换
文章目录 一,问题描述二,基本要求三,算法分析四,示例代码五,实验操作六,运行效果 一,问题描述 在数据处理中,常常会遇到需要对链接存储的线性表进行操作的情况。本次任务聚焦于将链…...
Docker与VNC的使用
https://hub.docker.com/r/dorowu/ubuntu-desktop-lxde-vnc 下载nvc 客户端 https://downloads.realvnc.com/download/file/viewer.files/VNC-Viewer-7.12.0-Windows.exe 服务端 docker pull dorowu/ubuntu-desktop-lxde-vnc#下载成功 docker pull dorowu/ubuntu-desktop-l…...