第十七章:Future Directions_《C++ Templates》notes
Future Directions
- 核心重难点:
- 示例代码:
- 设计题
- 多选题答案
- 设计题详解
核心重难点:
-
泛型非类型模板参数
- 允许任意类型作为非类型模板参数(如
template<typename T, auto N>
) - 需解决类型推导和链接问题
- 允许任意类型作为非类型模板参数(如
-
编译期控制流
constexpr if
替代模板偏特化(减少代码膨胀)- 折叠表达式优化可变参数模板处理
-
反射与元编程增强
- 类型检查(
is_convertible_v
等) - 反射提案(如成员变量/函数查询)
- 类型检查(
-
模块化支持
- 解决传统头文件包含模型的编译效率问题
- 显式实例化与模块接口的交互
-
语法简化
- 放宽
typename
使用限制 void
类型规范化(统一处理无返回值函数)
- 放宽
Concepts(概念)
功能:通过显式约束模板参数类型,提升编译时类型检查和错误提示的可读性。
示例代码:
#include <iostream>
#include <vector>
#include <concepts>// 定义一个Concept,要求类型支持加法运算
template<typename T>
concept Addable = requires(T a, T b) {{ a + b } -> std::same_as<T>;
};// 使用Concept约束模板参数
template<Addable T>
T add(T a, T b) {return a + b;
}int main() {std::cout << add(1, 2) << std::endl; // 输出3(int满足Addable)std::cout << add(1.5, 2.5) << std::endl; // 输出4(double满足Addable)// std::vector<int>不满足Addable(无operator+),编译报错// std::cout << add(std::vector<int>{1}, std::vector<int>{2}) << std::endl;return 0;
}
编译命令(需支持C++20):
g++ -std=c++20 concepts.cpp -o concepts
Modules(模块)
功能:替代传统头文件,提升编译速度和封装性。
示例代码:
math_module.ixx(模块接口文件):
export module math;export template<typename T>
T add(T a, T b) {return a + b;
}
main.cpp(使用模块):
import math;int main() {std::cout << add(3, 5) << std::endl; // 输出8return 0;
}
编译命令(需支持C++20模块):
g++ -std=c++20 -fmodules-ts -c math_module.ixx -o math_module.o
g++ -std=c++20 -fmodules-ts main.cpp math_module.o -o main
17.6 Deduction for Nonfinal Pack Expansions(非终结包展开推导)
功能:允许在模板参数包展开时进行类型推导。
示例代码:
#include <iostream>
#include <tuple>// 推导包展开中的类型
template<typename... Ts>
auto make_tuple_and_print(Ts&&... args) {auto t = std::make_tuple(std::forward<Ts>(args)...);std::cout << "Tuple elements: ";((std::cout << args << " "), ...);std::cout << std::endl;return t;
}int main() {auto t = make_tuple_and_print(1, 2.5, "Hello");// 输出类型:std::tuple<int, double, const char*>return 0;
}
编译命令:
g++ -std=c++20 pack_deduction.cpp -o pack_deduction
关键知识点总结
特性 | 核心优势 | 典型应用场景 |
---|---|---|
Concepts | 显式约束模板参数,增强编译错误信息 | 泛型算法、类型安全检查 |
Modules | 替代头文件,避免宏污染,提升编译速度 | 大型项目模块化管理 |
包展开推导 | 简化变长模板参数处理,支持复杂类型构造 | 元编程、通用容器实现 |
扩展练习
尝试实现一个使用Concepts约束的Comparable
概念,并编写一个通用的比较函数模板:
#include <iostream>
#include <concepts>template<typename T>
concept Comparable = requires(T a, T b) {{ a == b } -> std::convertible_to<bool>;{ a != b } -> std::convertible_to<bool>;
};template<Comparable T>
bool safe_compare(const T& a, const T& b) {return a == b;
}int main() {std::cout << std::boolalpha;std::cout << safe_compare(10, 20) << std::endl; // 输出falsestd::cout << safe_compare(std::string("Hello"), std::string("World")) << std::endl; // 输出false// std::vector<int>无法比较,编译报错// safe_compare(std::vector<int>{1}, std::vector<int>{2});return 0;
}
多选题
题目1:关于C++20 concept
的描述正确的是?
A. 必须在模板参数列表中使用requires
子句
B. 可以定义默认约束条件
C. 支持逻辑运算符组合约束
D. 能够自动推导约束条件
题目2:constexpr if
与普通if
的关键区别是?
A. 编译期求值条件
B. 支持非布尔类型条件
C. 分支代码生成策略不同
D. 可以出现在类外定义
答案:A、C
解析:
- A正确:条件在编译期求值
- C正确:不满足条件的分支会被丢弃(SFINAE)
- B错误:必须为布尔常量表达式
- D错误:仅限函数作用域
题目3:泛型lambda的捕获列表中可以出现?
A. auto
类型占位符
B. 静态成员变量
C. 非静态成员函数指针
D. 模板参数包
答案:B、C
解析:
- B正确:可以捕获静态成员(如
[=] { return MyClass::value; }
) - C正确:可以捕获成员函数指针(如
[&f] { return obj.*f(); }
) - A错误:捕获列表不支持
auto
- D错误:模板参数包无法直接捕获
题目4:关于折叠表达式的错误说法是?
A. 支持所有二元操作符
B. 可以展开参数包到逗号表达式
C. 空包展开有明确定义
D. 左右折叠优先级相同
答案:A、D
解析:
- A错误:不支持
||
,&&
,,
以外的操作符需要括号包裹 - D错误:左折叠
(args + ...)
和右折叠(... + args)
优先级不同 - B正确:可以展开到逗号表达式(如
([](auto x){}, ...)
) - C正确:空包左折叠为
identity
,右折叠为identity
题目5:C++23中std::type_identity_t
的主要用途是?
A. 禁止类型推导
B. 强制类型转换
C. 消除ADL影响
D. 延迟模板实例化
答案:A、C
解析:
- A正确:
std::type_identity_t<T>
阻止T
被推导(如decltype(auto) = std::type_identity_t<int>{}
) - C正确:消除ADL查找(如
std::type_identity_t<decltype(f)>::type
) - B错误:不改变类型本质
- D错误:不影响实例化时机
题目6:关于模块化的正确说法是?
A. 模块接口单元必须使用export
关键字
B. 模块实现单元可以包含#include
指令
C. 模块可以导出宏定义
D. 模块编译单元之间自动处理依赖关系
答案:A、D
解析:
- A正确:模块接口需显式导出实体(如
export module M; export int f();
) - D正确:模块编译器自动管理依赖传递
- B错误:实现单元不应包含
#include
- C错误:宏无法跨模块可见
题目7:C++20 requires
子句可以用于?
A. 函数模板约束
B. 类模板约束
C. 变量模板约束
D. 构造函数约束
答案:A、B、C、D
解析:
- 所有选项均正确:
requires
可用于任何模板声明的约束(如template<typename T> requires C<T> class C {};
)
题目8:关于[[nodiscard]]
属性的模板化用法正确的是?
A. 可以作用于类模板
B. 可以作用于函数模板
C. 可以作用于变量模板
D. 无法作用于成员模板
答案:A、B、C
解析:
- A正确:
[[nodiscard]] struct S {};
- B正确:
[[nodiscard]] template<typename T> T f();
- C正确:
[[nodiscard]] template<typename T> T x;
- D错误:成员模板同样可以标记(如
class C { [[nodiscard]] T f(); };
)
题目9:C++23中std::is_constant_evaluated()
的典型应用场景是?
A. 禁止编译期计算
B. 优化运行时分支
C. 实现编译期调试输出
D. 检测异常安全等级
答案:B、C
解析:
- B正确:避免编译期不必要的开销(如
if (!std::is_constant_evaluated()) { /* runtime code */ }
) - C正确:在编译期执行日志输出(需配合
if constexpr
) - A错误:无法禁止编译期计算
- D错误:与异常安全无关
题目10:关于std::format
与模板的结合错误说法是?
A. 可以格式化任意类型(需自定义formatter
)
B. 支持编译期字符串检查
C. 自动推导格式说明符
D. 比printf
更易出错
答案:C、D
解析:
- C错误:需显式指定格式说明符(如
std::format("{:.2f}", 3.1415)
) - D错误:类型安全优于
printf
- A正确:通过ADL注册自定义格式化器
- B正确:
constexpr
上下文支持编译期检查
设计题
题目1:实现一个支持编译期字符串拼接的concat
模板
#include <iostream>
#include <string_view>template<std::size_t N, std::size_t M>
constexpr auto concat(const char(&a)[N], const char(&b)[M]) {std::array<char, N + M - 1> result{};std::copy_n(a, N-1, result.begin());std::copy_n(b, M, result.begin() + N - 1);return result;
}int main() {constexpr auto str = concat("Hello", " World!");static_assert(str == "Hello World!");std::cout << str.data() << std::endl;
}
题目2:使用constexpr if
优化斐波那契数列计算
#include <iostream>template<int N>
constexpr int fib() {if constexpr (N <= 1) return N;return fib<N-1>() + fib<N-2>();
}int main() {static_assert(fib<10>() == 55);std::cout << "Fibonacci(10): " << fib<10>() << std::endl;
}
题目3:实现类型安全的变长参数包装器
#include <tuple>
#include <iostream>template<typename... Args>
void log(Args&&... args) {((std::cout << std::forward<Args>(args) << " "), ...);std::cout << std::endl;
}int main() {log("Hello", 42, 3.14, std::string("World"));
}
题目4:基于std::variant
的类型安全访问器
#include <variant>
#include <iostream>
#include <string>template<typename... Ts>
struct overloaded : Ts... { using Ts::operator()...; };
template<typename... Ts> overloaded(Ts...) -> overloaded<Ts...>;int main() {std::variant<int, std::string> v = "Hello";std::visit(overloaded{[](int i) { std::cout << "int: "<< i << std::endl; },[](const std::string& s) { std::cout << "string: "<< s << std::endl; }}, v);
}
题目5:编译期素数检测
#include <iostream>
#include <bit>template<unsigned N, unsigned D>
struct is_prime_helper {static constexpr bool value = (N % D != 0) && is_prime_helper<N, D-1>::value;
};template<unsigned N>
struct is_prime_helper<N, 1> {static constexpr bool value = true;
};template<unsigned N>
constexpr bool is_prime() {if constexpr (N < 2) return false;return is_prime_helper<N, N/2>::value;
}int main() {static_assert(is_prime<7>());static_assert(!is_prime<9>());std::cout << "Is 13 prime? " << std::boolalpha << is_prime<13>() << std::endl;
}
多选题答案
- 答案:B、C
解析:
- B正确:
concept
可以定义默认约束(如template<typename T> concept C = ...
) - C正确:支持
&&
,||
,!
组合约束(如C1 && !C2
) - A错误:C++20允许隐式约束(无需
requires
) - D错误:约束需显式声明
-
答案:A、C
constexpr if
在编译期求值条件并丢弃不满足的分支
-
答案:B、C
- 泛型lambda可捕获静态成员和成员函数指针
-
答案:A、D
- 折叠表达式不支持所有操作符且左右折叠优先级不同
-
答案:A、C
std::type_identity_t
阻止类型推导并消除ADL影响
-
答案:A、D
- 模块需显式导出实体且自动处理依赖关系
-
答案:A、B、C、D
requires
可约束所有模板类型
-
答案:A、B、C
[[nodiscard]]
可修饰类/函数/变量模板
-
答案:B、C
std::is_constant_evaluated()
优化运行时分支和调试输出
-
答案:C、D
std::format
需显式指定格式且比printf
更安全
设计题详解
-
编译期字符串拼接
- 使用
std::array
存储结果,递归拼接字符数组
- 使用
-
斐波那契数列优化
constexpr if
终止递归条件,避免无限展开
-
变长参数包装器
- 折叠表达式展开参数包,完美转发所有参数
-
类型安全访问器
std::visit
结合overloaded
实现多态访问逻辑
-
编译期素数检测
- 递归模板实现试除法,
std::bit
辅助优化
- 递归模板实现试除法,
相关文章:
第十七章:Future Directions_《C++ Templates》notes
Future Directions 核心重难点:示例代码: 设计题多选题答案设计题详解 核心重难点: 泛型非类型模板参数 允许任意类型作为非类型模板参数(如template<typename T, auto N>)需解决类型推导和链接问题 编译期控制…...
ComfyUI-PSD-Replace: 海报与壁纸批量生成
ComfyUI-PSD-Replace: 海报与壁纸批量生成 🚀 插件介绍 ComfyUI-PSD-Replace 是一款强大的图像批量处理插件,专为设计师和创意工作者打造。无论你是想快速生成多款海报、定制壁纸,还是批量更新设计模板,本插件都能帮你轻松实现&a…...
图解预训练模型 ELMo 和 BERT
一、ELMo 二、BERT 以上笔记参考自b站up主 自然卷小蛮(自然卷小蛮的个人空间-自然卷小蛮个人主页-哔哩哔哩视频),感兴趣的可以去深入了解。...
YoloV8训练和平精英人物检测模型
概述 和平精英人物检测,可以识别游戏中所有人物角色,并通过绘制框将人物选中,训练的模型仅仅具有识别功能,可以识别游戏中的视频、图片等文件,搭配Autox.js可以推理,实现实时绘制,但是对手机性…...
基于物联网的智能蔬菜仓库设计(论文+源码)
1系统功能分析 由于蔬菜仓库内部环境直接影响到内部货物的正常存储工作,因此对蔬菜仓库内部环境进行智能化的监控具有重要意义。本次基于物联网的智能蔬菜仓库设计,系统实现的功能如下: (1)对蔬菜仓库内部进行温度检测…...
Java 字符流全解析:核心类实战指南
一、FileReader 与 FileWriter:文本文件基础操作 功能:直接基于字符处理文本文件,自动完成字节到字符的解码(默认使用系统编码)。 适用场景:读写简单的文本文件(如 .txt、.csv)。 …...
SQL Server 2022 安装问题
一、安装与配置问题 1. SQL Server 2022 安装失败怎么办? 常见原因: 硬件或操作系统不满足最低要求(如内存、磁盘空间不足)。未关闭防火墙或杀毒软件。之前版本的 SQL Server 残留文件未清理。 解决方案: 确保硬件配…...
Vue3 实现pdf预览
1.使用到的插件 vue3-pdf-app 以及预览效果 2.下载依赖 // 可以使用npm 以及pnpm // 下载版本1.0.3 pnpm install vue3-pdf-app^1.0.3 3.封装pdfModel组件复用 <template><VuePdfApp :page-scale"pageScale" :theme"theme" :style"width: …...
python网络爬虫开发实战之网页数据的解析提取
目录 1 XPath的使用 1.1 XPath概览 1.2 XPath常用规则 1.3 准备工作 1.4 实例引入 1.5 所有节点 1.6 节点 1.7 父节点 1.8 属性匹配 1.9 文本获取 1.10 属性获取 1.11 属性多值匹配 1.12 多属性匹配 1.13 按序选择 1.14 节点轴选择 2 Beautiful Soup 2.1 简介…...
GitHub Copilot平替:CodeGeeX 2.0实测报告
本文基于20个真实开发场景对CodeGeeX 2.0进行深度评测,涵盖代码生成质量、上下文理解能力、多语言支持度等关键维度。通过Python数据分析、Java微服务、React前端开发三大核心场景的对比实验,揭示其相比GitHub Copilot在中文语境支持、本地化部署、隐私保…...
QT对象模型
信号,槽,函数执行顺序 首先,拖入一个按钮,在转到槽,在click() 转到widget.cpp 在widget.h中 然后在widget.cpp中 运行结果 当发出信号后,先执行槽函数,再执行信号后面的函数(单线程) 在widget.h…...
C++:类型推导规则 unsigned short + 1
在 C/C 中,整数提升(Integer Promotion) 规则决定了 vlan_id 1 的类型: unsigned short 的值在运算时会被 提升(promote) 到 int 或 unsigned int(取决于平台)。 默认情况下&#x…...
PHP接口开发:从基础到高级的全面指南
一、接口基础与核心概念(约800字) 1.1 接口的本质定义 在PHP中,接口(Interface)是一种特殊的抽象结构,它通过interface关键字定义一组方法的契约规范,不包含具体实现。这种设计强制实现类必须遵循统一的调用标准,如: interface PaymentGateway {public function proc…...
C#Dictionary值拷贝还是引用
Dictionary值拷贝还是引用 这可能算是Directionary的一个坑值类型(Value Type)引用类型(Reference Type)总结 关于锁1. **锁对象的可见性**2. **锁对象的唯一性**3. **最佳实践**4. **为什么 readonly 是一个好的选择**5. **总结*…...
deepseek实战教程-第六篇查找源码之仓库地址与deepseek-R1、deepseek-LLM仓库内容查看
上一篇讲了支持deepseek的模型应用的本地安装和部署以及使用。再上一篇讲解了deepseek提供的开放api,便于开发者基于deepseek提供的接口来编写属于自己的业务应用程序。但是前面几篇我们都是在用模型,我们知道deepseek是开源的,那么deepseek的源码在哪里,具体源码是什么样的…...
WELL健康建筑认证是什么?
**WELL健康建筑认证:全方位呵护居住者福祉的权威标准** WELL健康建筑认证,这一源自美国的全球性健康建筑标准,宛如建筑界的璀璨明珠,以其独特的光芒照亮了健康建筑的发展之路。它不仅是全球首部专门针对室内环境提升人体健康与福…...
C++ STL 序列式容器之(三)-- List
一、什么是list? Lists are sequence containers that allow constant time insert and erase operations anywhere within the sequence, and iteration in both directions. 列表是序列容器,允许在序列中的任何位置进行以常量时间插入和擦除操作&…...
CAN基础知识学习二
一、控制器局域网总线(CAN,Controller Area Network); 二、CAN FD 是CAN with Flexible Data rate的缩写,翻译为【可变速率的 CAN】 CAN-FD 采用了两种位速率:从控制场中的 BRS 位到 ACK 场之前(…...
Java编程思想:为何有时要将子类对象赋值给父类引用
为何有时要将子类对象赋值给父类引用,用父类来进行实例化? 这就要说多态的优势: 代码的扩展性和降低耦合度,而不是完全避免修改代码。 TuXing t new Changfangxing(); Changfangxing k (Changfangxing)t;原因1: 代码可拓展性 …...
2025年优化算法:龙卷风优化算法(Tornado optimizer with Coriolis force,TOC)
龙卷风优化算法(Tornado optimizer with Coriolis force)是发表在中科院二区期刊“ARTIFICIAL INTELLIGENCE REVIEW”(IF:11.7)的2025年智能优化算法 01.引言 当自然界的狂暴之力,化身数字世界的智慧引擎&…...
2小样本学习(Few-Shot)之相似度
目录 小样本学习的基本思路: 具体实现方法: 小样本学习的基本思路: 学习一个相似度函数similarity function:sim(x,x) 两个样本越相近,相似度越高。 比如:...
docker-操作实战
前言 C镜像制作 因为我平常不用,所以不书写了 SpringBoot 微服务镜像制作 mkdir java ca java cp /data/maxhou/myapp/xxx.jar . vi Dockerfile FROM openjdk:8 COPY ./xxx.jar /app.jar CMD ["java","-jar","/app.jar"]COPY ./…...
后大模型时代智能体将成为“新宠”
智能体 |未来已来 智能体 |市场井喷 智能体 |定义 智能体 |与大模型的区别 智能体 |与Copilot的区别 智能体 |企业价值 智能体 |个体价值 智能体 |开发流程 智能体 |提示词解读 智能体 |应用场景 智能体 |重难点问题...
【MySQL】监控MySQL
目录 使用状态变量监控MySQL 使用性能模式(Performance Schema)监控MySQL 1.性能模式 2.性能模式设置表 3.sys模式 使用状态变量监控MySQL 使用 show status 语句评估系统运行状况。 可以添加范围修饰符global或session来显示全局或本地状态信息。…...
CTF类题目复现总结-[BSidesSF2020]toast-clicker 1
一、靶场地址 https://buuoj.cn/challenges#[BSidesSF2020]toast-clicker1二、复现步骤 1、下载压缩包,解压是apk文件; 2、利用 jadx apk反编译工具; jadx下载地址:https://github.com/skylot/jadx67, 83, 68, 120, 62, 109, …...
(更新完)Supplementary Material——AZ-NAS
6. Supplementary Material 在本补充材料中,我们提供了 AZ-NAS 在 NDS [18]、NAS-Bench-201 [7] 和 MobileNetV2 [14, 19] 搜索空间上的额外结果和深入分析。 Additional results on the NDS benchmark. 神经设计空间(NDS) [18] 基准提供了…...
基于SSM框架的线上甜品销售系统(源码+lw+部署文档+讲解),源码可白嫖!
摘要 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。加上现在人们已经步入信息时代,所以对于信息的宣传和管理就很关键。因此网上销售信息的…...
TCP | 序列号和确认号 [逐包分析] | seq / ack 详解
注 : 本文为 “TCP 序号(seq)与确认序号(ack)” 相关文章合辑。 英文引文,机翻未校。 中文引文,略作重排。 如有内容异常,请看原文。 Understanding TCP Seq & Ack Numbers […...
Citus源码(1)分布式表行为测试
最近对citus的实现非常好奇,本篇对citus的行为做一些测试。本篇只测行为,不分析源码。后面会继续写一系列文章分析citus源码。 环境:3节点 PG17 with citus。 SELECT citus_set_coordinator_host(127.0.0.1, 3001); SELECT citus_add_node(1…...
【AI测试必学】DeepSeek API 快速入门:获取 API Key 与调用 API 步骤详解
DeepSeek API 快速入门:获取 API Key 与调用 API 步骤详解 一、获取 API Key二、调用 DeepSeek API方法 1:使用 OpenAI Python SDK 调用 DeepSeek API方法 2:使用 requests 库直接发送 HTTP 请求方法 3:使用 curl 命令 相关链接 一…...
Web前端之UniApp、Taro、ReactNative和Flutter的区别
MENU 前言介绍及公司技术差异使用方法使用场景差异注意事项打包与部署差异框架应用实例结语 前言 在移动应用开发领域,跨平台框架已成为开发者的得力工具。UniApp、Taro、ReactNative和Flutter它们在Android(安卓)或iOS(苹果&…...
[leetcode]map的用法
1. 定义和初始化 定义:std::map是一个关联容器,键值对会自动根据键的值进行排序(默认是升序)。 cpp复制 map<char, int> mp; 插入元素:可以通过operator[]或insert方法插入键值对。 cpp复制 mp[a] 1; mp[b] 3…...
PHP大马的使用
BestShell/best_php_shell.php at master Kevil-hui/BestShell 这里用到的是这位师傅的大马(主要是从头开始写一个大马实在太麻烦了) 用pikachu靶场进行上传的测试 在这里传马,这个是简单的前端校验,bp抓包改后缀就好了 上传成…...
【CC2530 教程 十】CC2530 Z-Stack 协议栈
一、Z-Stack 协议栈目录结构: Z-Stack 协议栈可以从 TI 官网免费下载,下载安装完成以后,会默认在 C 盘的根目录下创建 Texas Instruments 目录,该目录下的子目录就是安装的 Z-Stack 文件,并且在该子目录下创建Accessor…...
区间端点(java)(贪心问题————区间问题)
deepseek给了一种超级简单的做法 我是真的想不到 贪心的思路是 局部最优——>全局最优 这种我是真的没有想到,这样的好处就是后面便利的时候可以通过foreach循环直接便利qu的子元素也就是对应的某一个区间, 将一个二维数组变成一维数组,每一个一维…...
定长内存池原理及实现
目录 一、池化技术 二、内存池 三、内存池主要解决的问题 四、定长内存池的实现 1.定长内存池的原理 2.框架 3.Delete实现 4.New实现 5.性能测试 五、源码 FixedMemoryPool.h test.cc 一、池化技术 所谓“池化技术”,就是程序先向系统申请过量的资源&…...
通过php连接redis数据库
如上图所示,这是去搭建一个lamp平台, 阿帕奇和php安装好之后,php直接就被安装成阿帕奇的一个功能模块。 如上图所示,这就是php作为阿帕奇的功能模块。 如上图所示,我们去正常启动redis数据库。 如上图所示,…...
3D点云的深度学习网络分类(按照作用分类)
1. 3D目标检测(Object Detection) 用于在点云中识别和定位目标,输出3D边界框(Bounding Box)。 🔹 方法类别: 单阶段(Single-stage):直接预测3D目标位置&am…...
论文解读:《Word embedding factor based multi-head attention》——基于词嵌入因子的多头注意力
原文链接:Word embedding factor based multi-head attention | Artificial Intelligence Review 多头注意力机制线性地将查询、键和值投影到不同的子空间中,允许模型从不同的角度理解输入序列,并利用输入句子序列中有关令牌之间关系的信息。…...
单片机和微控制器知识汇总——《器件手册--单片机、数字信号处理器和可编程逻辑器件》
目录 四、单片机和微控制器 4.1 单片机(MCU/MPU/SOC) 一、定义 二、主要特点 三、工作原理 四、主要类型 五、应用领域 六、选型与设计注意事项 七、发展趋势 4.2 数字信号处理器(DSP/DSC) 编辑编辑 一、定义 二、工作原理 三、结构特点 四、应用领域 五、选型与设计注…...
LeetCode hot 100 每日一题(15)——48.旋转图像
这是一道难度为中等的题目,让我们来看看题目描述: 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 提示…...
Java多线程精讲:线程操作与状态转换全解析
前言 本章内容为作者结合学习与实践的总结整理,虽力求准确,但疏漏之处在所难免。若有任何疑问或建议,恳请读者朋友们不吝指正,共同完善知识体系,感激不尽! 一、认识多线程(Thread&#…...
HashMap的位操作是什么?HashSet 的 contains 方法复杂度是多少?红黑树简单讲一下?
一、HashMap 的位操作设计 HashMap 使用位运算优化哈希计算与索引定位,核心场景如下: 哈希扰动函数 计算键的哈希值时,将高16位与低16位异或: static final int hash(Object key) {int h;return (key null) ? 0 : (h key.hash…...
GitHub开源的容器管理面板-Dpanel
dpanel Docker安装部署二进制部署 GitHub官网 一块轻量化docker可视化管理面板,由国人开发,个人觉得是比较好用的,功能都很齐全,并且可以通过修改源码,自定义前端样式等。 Docker安装部署 官网 部署环境࿱…...
vue-将组件内容导出为Word文档-docx
1. 安装依赖 首先,我们需要安装docx库,以便在前端生成Word文档。可以通过以下命令进行安装: npm install docx 2. 实现导出功能 2.1 初始化文档 使用docx库创建一个新的文档实例,并定义文档的结构和内容。我们使用Document、…...
IMX6ULL学习篇——系统学习设备树
IMX6ULL学习篇——系统学习设备树 这篇博客的目的是系统的整理一下设备树当中的一些非常基本的概念。基于之前的学习,我们已经至少掌握了字符设备的基本的框架,编写一个最简单的字符设备简单的流程。 但是我们知道,一个外设很有可能是…...
使用vector构造杨辉三角形
力扣118题: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中,每个数是它左上方和右上方的数的和。 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]]示例 2: 输入: numRows 1…...
亮数据爬取API爬取亚马逊电商平台实战教程
前言 在当今数据驱动的商业环境中,企业需要快速、精准地获取互联网上的公开数据以支持市场分析、竞品调研和用户行为研究。然而,传统的手动网页爬取方式面临着诸多挑战:IP封锁、验证码干扰、网站结构频繁变更,以及高昂的运维成本…...
AI+金融 应用 使用DeepSeek、Qwen等大模型输入自然语言,得到通达信等行情软件公式代码,导入后使用
AI金融 应用 使用DeepSeek、Qwen等大模型输入自然语言,得到通达信等行情软件公式代码,导入后使用。不会编程,也能行情软件中实现个性化条件选股,个性化技术指标。 AIbxm低估值趋势选股策略,参考提示词: 编…...
SmolVLM2: 让视频理解能力触手可及
一句话总结: SmolVLM 现已具备更强的视觉理解能力📺 SmolVLM2 标志着视频理解技术的根本性转变——从依赖海量计算资源的巨型模型,转向可在任何设备运行的轻量级模型。我们的目标很简单: 让视频理解技术从手机到服务器都能轻松部署。 我们同步发布三种规…...