Qt C++/Go/Python 面试题(持续更新)
目录
1、封装、继承、多态是什么?
2、final标识符的作用是什么?
3、介绍一下虚函数
4、介绍一下智能指针
5、介绍一下左值、右值、左值引用、右值引用
6、指针和引用有什么区别?
7、define和const的区别是什么?
8、C++程序的内存划分
1. 代码区(Text Segment)
2. 全局/静态数据区(Data Segment)
3. 堆区(Heap)
4. 栈区(Stack)
5. 常量区(Read-Only Data)
6. 内存映射区(Memory Mapping Segment)
9、class与struct的区别
10、内存对齐是什么?
11、进程之间的通信方式有哪些?
12、介绍一下 I/O 多路复用
13、多线程为什么会发生死锁?
14、面向过程和面向对象
15、++i和i++哪个效率更高
16、介绍一下vector、list的底层实现原理和优缺点
17、空对象指针为什么能调用函数?
18、介绍一下 push_back 和 emplace_back
19、空类中有什么函数?
20、explicit 什么作用?
21、成员变量初始化的顺序是什么?
22、malloc和new的区别是什么?
23、迭代器和指针
24、线程有哪些状态
1、封装、继承、多态是什么?
封装:将具体实现过程和数据封装成一个类,只能通过接口进行访问,降低耦合性。
继承:子类继承父类的特征和行为,复用了基类的全体数据和成员函数,基类私有成员可被继承,但是无法被访问,其中构造函数、析构函数、友元函数、静态数据成员、静态成员函数都不能被继承。
多态:静态多态通过函数重载实现,可以实现同一个函数名根据传入参数不同而具有不同实现,编译期间就已经确定;动态多态:通过虚函数表实现,在派生类中重写基类函数,实现同一个函数名不同实现,运行时根据虚函数表确定调用哪个函数。
2、final标识符的作用是什么?
放在类的后面表示该类无法被继承,也就是阻止了从类的继承,放在虚函数后面该虚函数无法被重写。
3、介绍一下虚函数
虚函数是通过虚函数表实现的,含有虚函数的类在构造函数中会初始化虚函数表指针,它存储在类内存中,指向虚函数表,虚函数表存储指向每个虚函数的指针,多个类对象共用一张虚函数表。虚函数和普通函数都存储在代码段。
构造函数不能为虚函数,因为虚函数表指针需要在构造函数中初始化。析构函数最好为虚函数,这样当一个指向派生类的基类指针被释放时,可以先调用派生类析构函数,再调用基类析构函数,否则只会调用指向的类的析构函数。
类中static函数不能声明为虚函数,因为类中的 static 函数是所有类实例化对象所共有的,没有 this 指针,此时无法访问到虚函数表指针。
4、介绍一下智能指针
智能指针可以自动管理内存,通过调用对象的析构函数来实现。
share_ptr:共享同一个资源,每增加一个智能指针,引用计数加1,当引用计数为0时释源。
unique_ptr:对其持有的堆内存具有唯一拥有权,也就是说引用计数永远是 1,禁止复制语义。
weak_ptr:不占用引用计数,用于解决 share_ptr 循环引用问题。比如有两个类,它们各有一个指向对方的 share_ptr,然后相互初始化,此时就会造成引用循环。将其中的一个 share_ptr 换成 weak_ptr,就可以解决。
实际开发中,有时候需要在类中返回包裹当前对象(this)的一个 std::shared_ptr
对象给外部使用,C++ 新标准也为我们考虑到了这一点,有如此需求的类只要继承自 std::enable_shared_from_this
模板对象即可。用法如下:
#include <iostream>
#include <memory>
class A : public std::enable_shared_from_this<A>
{
public:A(){std::cout << "A constructor" << std::endl;}
~A(){std::cout << "A destructor" << std::endl;}
std::shared_ptr<A> getSelf(){return shared_from_this();}
};
int main()
{std::shared_ptr<A> sp1(new A());
std::shared_ptr<A> sp2 = sp1->getSelf();
std::cout << "use count: " << sp1.use_count() << std::endl;
return 0;
}
5、介绍一下左值、右值、左值引用、右值引用
左值:有地址的值,如下列代码中的变量a。
右值:临时值,如下列代码中的10。
int a = 10;
左值引用:就是普通的引用。
右值引用:一种引用类型,用&&
表示,它专门用于绑定到临时对象(右值)上,主要用于实现完美转发和移动语义。
完美转发就是在传递参数时维持参数的类型(左值、右值)不变
移动语义就是允许资源的所有权转移而非复制。
std::move 的功能是将一个左值引用强制转化为右值引用,继而可以通过右值引用使用该值,以用于移动语义,从实现原理上讲基本等同一个强制类型转换
6、指针和引用有什么区别?
指针:指针是变量,内存中存储的是目标数据的地址。
引用:是变量的别名,不额外占用内存,必须初始化且只能初始化一次。
7、define、const、inline 的区别是什么?
define 是在预处理时进行简单的文本替换,不会进行类型安全检查,define 定义的宏常量,在程序中使用多少次就会进行多少次替换,内存中有多个备份,占用的是代码段的内存。
const 则是在编译时确定其值,会进行类型安全检查。
inline 是建议编译器在函数调用处将函数展开,适用于比较短、功能单一的函数,节省函数调用的开销。如果函数体过长,频繁使用内联函数会导致代码编译膨胀问题
在头文件中类内声明并定义的函数默认是 inline,类内声明类外初始化的必须加 inline,以解决多重定义错误(否则多个cpp文件包含了这个h文件,链接时会出现多重定义错误)。
在头文件中类内声明,cpp文件中定义的函数不需要加 inline,此时不会发生多重定义错误。
8、C++程序的内存划分
1. 代码区(Text Segment)
-
存储内容:程序的机器指令(可执行代码)
-
特点:
-
只读内存区域
-
在程序启动时加载
-
可能被多个进程共享(对于相同的可执行文件)
-
2. 全局/静态数据区(Data Segment)
分为两部分:
-
已初始化数据段(.data)
-
存储已初始化的全局变量和静态变量
-
包括静态局部变量
-
-
未初始化数据段(.bss)
-
存储未初始化的全局变量和静态变量
-
程序加载时由操作系统初始化为零
-
3. 堆区(Heap)
-
存储内容:动态分配的内存(通过
new
/malloc
分配) -
特点:
-
手动管理(需要
delete
/free
释放) -
内存分配方向从低地址向高地址增长
-
分配速度较慢(需要系统调用)
-
大小受系统虚拟内存限制
-
4. 栈区(Stack)
-
存储内容:
-
局部变量
-
函数参数
-
函数调用信息(返回地址、寄存器状态等)
-
-
特点:
-
自动管理(函数结束时自动释放)
-
内存分配方向从高地址向低地址增长
-
分配速度快(只需移动栈指针)
-
大小有限(通常几MB,可配置)
-
5. 常量区(Read-Only Data)
-
存储内容:
-
字符串字面量
-
编译期确定的常量表达式(如
constexpr
)
-
-
特点:
-
只读内存区域
-
尝试修改会导致段错误
-
6. 内存映射区(Memory Mapping Segment)
-
存储内容:
-
动态链接库
-
内存映射文件
-
共享内存区域
-
-
特点:
-
由操作系统管理
-
可用于进程间通信
-
9、class与struct的区别
class 默认是 private 继承,struct 默认是 public 继承。
10、内存对齐是什么?
CPU通常以固定大小的块(如4字节、8字节)从内存中读取数据。如果数据未对齐,可能需要多次内存访问才能读取完整数据,降低效率。
11、进程之间的通信方式有哪些?
管道:管道本质上是一个内核中的一个缓存,当进程创建管道后会返回两个文件描述符,一个写入端一个输出端。缺点:半双工通信,一个管道只能一个进程写,一个进程读。不适合进程间频繁的交换数据
消息队列:可以边发边收,但是每个消息体都有最大长度限制,队列所包含的消息体的总数量也有上限并且在通信过程中存在用户态和内核态之间的数据拷贝问题
共享内存
套接字:例如QLocalSocket,可以创建一个类,继承于QLocalServer,接受QLocalServer::newConnection信号,在槽函数中获取客户端套接字,并调用其函数进行读取/写入。
12、介绍一下 I/O 多路复用
这三个都是I/O多路复用技术,用于同时监控多个文件描述符(fd)的状态变化(可读、可写、异常等),是高性能网络编程的核心机制。
select:每次调用select都需要把fd集合从用户区拷贝到内核区,而select系统调用后有需要把fd集合从内核区拷贝到用户区,这个系统开销在fd数量很多的时候会很大,并且存在最大fd数量限制,一般为1024
poll:和select基本相同,但采用了链表存储,没有最大fd数量限制
epoll:Linux特有的高效I/O多路复用机制,采用事件驱动方式,在调用epoll_ctl系统调用时拷贝一次要监听的文件描述符数据结构到内核区,在调用epoll_wait的时候不需要再把所有的要监听的文件描述符重复拷贝进内核区,支持水平触发和边缘触发
13、多线程为什么会发生死锁?
当各个线程想获取的资源,但是得不到满足,同时自身也不释放已有资源,就会产生死锁。
四个必要条件:互斥条件、请求和保持条件、不可剥夺条件、环路等待条件,破坏其一就可解除死锁。
14、面向过程和面向对象
面向过程:分析出解决问题的步骤,然后将这些步骤一步一步的实现,使用的时候一个一个调用就好。代码效率更高但是代码复用率低,不易维护。
面向对象:就是将问题分解为各个对象,每个对象描述某个事物在整个解决问题的步骤中的行为,相比面向过程,代码更易维护和复用。但是代码效率相对较低。
15、++i和i++哪个效率更高
++i 是左值,++i
直接修改 i
并返回 i
本身,因此它是可修改的具名对象
i++ 是右值,i++
返回的是递增前的临时副本,该副本是临时对象,过程中会触发拷贝构造
16、介绍一下vector、list的底层实现原理和优缺点
vector 是由一块连续的内存空间组成,因此可使用下标随机访问,尾插尾删效率高,当容器大小超过容量时,会自动申请一块更大的内存(原有内存的1至2倍),并且把所有数据拷贝到新内存中。
list 是由双链表实现的,不支持下标随机访问,按需申请内存,不会造成内存空间浪费。在任意位置的插入删除下效率高。
17、空对象指针为什么能调用函数?
空对象指针可以调用成员函数,前提是成员函数中不涉及到成员变量。
18、介绍一下 push_back 和 emplace_back
push_back 接收左值时调用拷贝构造函数,接受右值时调用移动构造函数
emplace_back 则是在容器内部直接构造新对象,避免了复制操作
19、空类中有什么函数?
默认构造函数、默认拷贝构造函数、默认析构函数、默认赋值运算符
空类的大小为1B
20、explicit 什么作用?
只能用于修饰只有一个参数的类构造函数(有一个例外就是,当除了第一个参数以外的其他参数都有默认值的时候此关键字依然有效),它的作用是表明该构造函数是显示的,而非隐式的。作用是防止类构造函数的隐式自动转换,比如构造函数中接收 float 类型,结果传了 int 类型,此时不进行类型转换。
跟它对应的另一个关键字是implicit,意思是隐藏的,类构造函数默认情况下声明为implicit。
21、成员变量初始化的顺序是什么?
与构造函数中初始化成员列表的顺序无关,只与类中定义成员变量的顺序有关。
类中const成员常量必须在构造函数初始化列表中初始化。类中static成员变量,只能在类内定义、类外初始化。
22、malloc和new的区别是什么?
New/delete会调用构造析构函数,malloc/free不会,所以他们无法满足动态对象的要求。
23、迭代器和指针
迭代器返回的是对象引用,而指针是一个变量。
24、线程有哪些状态
创建,就绪,运行,阻塞,结束。
阻塞态/创建态 + 资源 = 就绪态
就绪态 + CPU调度 = 运行态
运行态 - 资源 = 阻塞态
阻塞态不可直接到达运行态,需要先转为就绪态。
25、介绍一下 map 和 unordered_map
-
map
:底层使用 红黑树(Red-Black Tree) 实现。红黑树是一种自平衡二叉搜索树,元素是按照键的升序排列的。插入元素时,会自动根据键的大小进行排序。查找、插入和删除操作的时间复杂度是 O(log n)。红黑树的节点存储需要额外的指针来维护树的结构,因此内存开销相对较大。 -
unordered_map
:底层使用 哈希表(Hash Table) 实现。哈希表通过哈希函数将键映射到桶中,从而实现快速查找。元素的顺序是 不确定的,因为哈希表中的元素是根据哈希值存储的,而哈希值与元素的插入顺序没有关系。平均情况下,查找、插入和删除操作的时间复杂度是 O(1)。哈希表需要额外的内存来存储哈希桶和处理哈希冲突,但是内存开销小于 map。
26、lamda表达式捕获列表捕获的方式有哪些?
按值捕获:符号=,不能修改参数
引用捕获:符号&,可以修改传入的外部参数
默认的引用捕获可能会导致悬挂引用,引用捕获会导致闭包包含一个局部变量的引用或者形参的引用,如果一个由lambda创建的闭包的生命周期超过了局部变量或者形参的生命期,那么闭包的引用将会空悬。解决方法是对个别参数使用值捕获
27、哈希碰撞的处理方法
开放定址法:当遇到哈希冲突时,去寻找一个新的空闲的哈希地址。
再哈希法:同时构造多个哈希函数,等发生哈希冲突时就使用其他哈希函数知道不发生冲突为止,虽然不易发生聚集,但是增加了计算时间
链地址法:将所有的哈希地址相同的记录都链接在同一链表中
28、动态链接和静态链接
动态链接:不会将代码直接复制到自己程序中,只会留下调用接口,程序运行时根据代码中的路径将动态库加载到内存中,所有程序只会共享这一份动态库,因此动态库也被称为共享库。
静态链接:通俗来说就是把静态库打包到可执行程序中,如果有个多程序,每个程序链接静态库后,都会包含一份独立的代码,当程序运行起来时,所有这些重复的代码都需要占用独立的存储空间,显然很浪费计算机资源。
相关文章:
Qt C++/Go/Python 面试题(持续更新)
目录 1、封装、继承、多态是什么? 2、final标识符的作用是什么? 3、介绍一下虚函数 4、介绍一下智能指针 5、介绍一下左值、右值、左值引用、右值引用 6、指针和引用有什么区别? 7、define和const的区别是什么? 8、C程序的…...
Spring Cloud Alibaba VS Spring Cloud
Spring Cloud Alibaba 与 Spring Cloud 组件对比 服务发现与注册中心 功能Spring CloudSpring Cloud Alibaba对比说明核心组件EurekaNacosNacos 支持动态配置管理、健康检查更灵活,且提供 DNS 服务发现能力。健康检查…...
containerd 配置代理
1.systemd unit file 为 containerd 服务创建一个 systemd 插入目录 mkdir /etc/systemd/system/containerd.service.d/创建名为 /etc/systemd/system/containerd.service.d/http-proxy.conf 的文件 添加 HTTP_PROXY 环境变量 [Service] Environment"HTTP_PROXYhttp:/…...
专家系统的基本概念解析——基于《人工智能原理与方法》的深度拓展
一、什么是专家系统 (一)基本思想与定义 1. 核心思想:知识与推理的分离 迄今为止,关于专家系统还没有一个公认的严格定义,一般认为: (1)它是一个智能程序系统; &…...
什么是公链?公链项目有哪些?公链项目开发
公链技术全景解析:定义、生态与开发指南(2025年深度版) 一、公链的本质与核心特征 1.1 公链的定义 公链(Public Blockchain)是一种完全开放、无需许可的区块链网络架构,其核心特征在于去中心化、透明…...
如何解析商品详情页面
解析商品详情页面是爬虫开发中的一个重要环节。由于商品详情页面通常包含丰富的信息,如商品名称、价格、描述、图片等,因此需要仔细分析页面结构并提取所需数据。以下是一个详细的步骤指南,展示如何使用 Java 和 Jsoup 解析商品详情页面。 一…...
Android 混合开发实战:统一 View 与 Compose 的浅色/深色主题方案
整个应用(包括 View 和 Compose 部分)的浅色/深色模式保持一致。以下是完整的解决方案: 全局配置方案 1. 基础主题设置 在 res/values/themes.xml 和 res/values-night/themes.xml 中定义统一的主题: <!-- values/themes.x…...
三国杀专业分析面板,立志成为桌游界的stockfish
三国杀专业分析面板 (SGSFish) GitHub仓库: 本项目是一个基于 Python 实现的三国杀专业分析面板,旨在模拟玩家决策过程,通过量化评估动作实体(卡牌/技能)的价值、考虑它们之间的相互影响(包括基于作用域的…...
解析 select 函数
解析 select 函数 select 函数是 Unix/Linux 系统中用于多路复用的系统调用,主要用于在多个文件描述符(file descriptors)上等待事件的发生。它允许程序同时监视多个 I/O 通道,并在任意一个通道准备好进行 I/O 操作时通知程序&am…...
对话模型和补全模型区别
对话模型和补全模型区别 什么是对话模型、补全模型 什么是 Completion 最基本地说,文本模型是一个经过训练的大型数学模型,旨在完成一项单一任务:预测下一个 token 或字符。这个过程被称为 completion,在您的旅程中您会经常遇到这个术语。 例如,当使用 completion 文本…...
计算机图形学实践:结合Qt和OpenGL实现绘制彩色三角形
以下是使用Qt和OpenGL实现绘制彩色三角形并添加颜色选择按钮的步骤: 一、创建OpenGL绘制组件 继承QOpenGLWidget实现自定义绘制类: // myopenglwidget.h #include <QOpenGLWidget> #include <QOpenGLFunctions_3_3_Core> #include <QO…...
十分钟应急响应——自定义工具链整合实战
核心思路 结合群联AI云防护的API和自定义脚本,实现攻击检测、节点切换、日志分析的端到端自动化。 技术实现步骤 1. 实时攻击检测脚本 使用Python监听群联系统日志,识别攻击特征: # monitor_attack.py import json import subprocess from…...
SpringCloud微服务架构设计与实践 - 面试实战
SpringCloud微服务架构设计与实践 - 面试实战 第一轮提问 面试官:马架构,请问在SpringCloud微服务架构中,如何实现服务注册与发现? 马架构:在SpringCloud中,Eureka是常用的服务注册与发现组件。服务提供…...
每日算法——快乐数、两数之和
202. 快乐数 class Solution { public:bool isHappy(int n) {unordered_set<int> result_set;while(true){int sum 0;while(n>0){sum (n%10)*(n%10);n/10;}if(sum1){return true;}else{if(result_set.find(sum) ! result_set.end()){return false;}result_set.inser…...
反射,枚举,lambda表达式
目录 反射枚举的使用Lambda表达式函数式接口语法Lambda表达式语法精简 变量捕获Lambda在集合List中的使用 反射 作用:在Java代码中,让一个对象认识到自己 比如一个类的名字,里面的方法,属性等 让程序运行的过程,某个对…...
matlab 绘图
1.三维绘图 % 原始数据(按行输入:x y z) data [1 2 3 ;5 56 234 ;32 34 67 1 2 5 ];% 提取坐标并生成网格(适用于surf函数的网格格式) x data(:,1); % X坐标(行数对应Y轴) y data…...
AI日报 - 2025年04月25日
🌟 今日概览(60秒速览) ▎🤖 AGI突破 | OpenAI o3模型展现行动能力,英国发布RepliBench评估AI自主复制风险,DeepMind CEO担忧AGI协调挑战。 模型能力向行动和自主性演进,安全与协调成为焦点。 ▎💼 商业动向…...
力扣面试150题--基本计算器
Day 31 题目描述 思路 (逆波兰表达式扩展) 初次思路:此题我遇到了几个难点 如何处理()如何处理-1和2-1中的负数还是减法问题 1-(-(12))如何处理多余的空格 我的做法如…...
各种各样的bug合集
一、连不上数据库db 1.可能是密码一大包东西不对; 2.可能是里面某个port和数据库不一样(针对于修改了数据库但是连不上的情况); 3.可能是git代码没拉对,再拉一下代码。❤ 二、没有这个包 可能是可以#注释掉。❤ …...
【25软考网工】第三章(3)虚拟局域网VLAN
一、虚拟局域网VLAN 1. VLAN基础 定义:根据管理功能、组织机构或应用类型对交换局域网进行分段而形成的逻辑网络。例如将大型网络划分为多个VLAN(如VLAN1-4)。 优势: 管理便利:便于对不同部门或功能进行分组管理安全隔…...
SFINAE(Substitution Failure Is Not An Error)
C 中的 SFINAE(替换失败并非错误) SFINAE(Substitution Failure Is Not An Error)是 C 模板元编程的核心机制之一,允许在编译时根据类型特性选择不同的模板实现。以下通过代码示例和底层原理,逐步解析 SFI…...
学习记录:DAY17
我的学习日志:前端开发练习 前言 只想畏缩在自己的床上,什么也不想干😰 我觉得有必要调整一下复习方针,不然容易白学。 我确实不太爱复习的人,尽量每天抽出时间来复习昨天的内容,周末总体复习一下一个星期…...
LibrePhotos本地部署打造个人云相册安全存储和分享家庭照片(1)
文章目录 前言1.关于LibrePhotos2.本地部署LibrePhotos3.LibrePhotos简单使用4. 安装内网穿透5.配置LibrePhotos公网地址6. 配置固定公网地址 前言 手机里塞满了珍贵回忆,却担心一不小心就被偷看?别怕,今天我就教你一个绝招——使用LibrePho…...
Android插拔U盘导致黑屏问题排查
问题现象: 车机大屏偶先插拔带音乐的U盘,导致车机系统短暂黑屏的情况。 日志中可以看到vold进程unmount了两次分区,一次是U盘分区,一次是/storage/emulated/0分区: I vold : Start killProcesses: /mnt/media_rw/…...
Android Build Variants(构建变体)详解
Android Build Variants(构建变体)是 Android 开发中用于生成不同版本应用程序的一种机制。它允许开发者根据不同的需求,如不同的应用市场、不同的功能模块、不同的环境配置等,从同一个代码库中生成多个不同的 APK。 组成部分 B…...
看一看 中间件Middleware
中间件(Middleware)是介于操作系统与应用程序之间的一层软件 它为分布式应用程序提供了统一的通信、数据交换、服务调用、消息传递等能力。 它的作用就像“胶水”,连接各个系统组件。 文章目录 消息队列缓存中间件数据库中间件服务注册与发现…...
ai人才需要掌握什么
在人工智能(AI)技术重塑全球产业格局的今天,AI人才的核心竞争力已超越单一技术维度,演变为“技术深度+人文广度+伦理自觉”的三维能力模型。本文将从技术能力体系、跨学科思维、伦理与治理三个层面,解析AI人才的核心能力框架,并针对技术局限性提出系统性应对策略。 一、…...
RISC-V低功耗MCU动态时钟门控技术详解
我来分享一下RISC-V核低功耗MCU的动态时钟门控技术实现: 这款MCU通过硬件级时钟门控电路实现了模块级的功耗管理。当外设(如UART、SPI)处于闲置状态时,系统会自动切断其时钟信号,减少无效翻转功耗。同时支持多电压域协…...
第十天 Shader编程:编写简单表面着色器 Addressable资源管理系统 DOTS(面向数据技术栈)入门
前言 作为Unity初学者,在实现复杂场景时经常会遇到性能瓶颈。本文将带你通过四个关键技术的实战学习,掌握现代Unity开发的核心优化方案: Shader编程 - 编写表面着色器控制物体渲染Addressable系统 - 实现高效资源管理DOTS技术栈 - 解锁百万…...
把dll模块注入到游戏进程的方法_插APC注入
一、概述 APC是异步过程调用,系统创建线程的时候会为线程创建一个APC队列,当线程调用SleepEx,WaitSingleObjectEx等函数时,并把线程状态被设置为可提醒状态时,线程并不会睡眠,而是检查APC队列是否为空,如果不为空,转去执行APC队列中的每一项,因此给目标进程中的线程插…...
【C++】内存管理:内存划分、动态内存管理(new、delete用法)
文章目录 一、C/C中的内存划分二、C语言中动态内存管理方式三、C中动态内存管理方式1、new、delete基本用法(1)、内置类型(2)、自定义类型 2、operator new与operator delete函数3、new和delete的实现原理(1)内置类型(2)自定义类型…...
【k8s】KubeProxy 的三种工作模式——Userspace、iptables 、 IPVS
在 Kubernetes 集群中,KubeProxy 是实现 Service 的网络代理和负载均衡功能的关键组件。它支持三种工作模式:Userspace 模式、iptables 模式和 IPVS 模式。每种模式都有其特点和适用场景,以下是详细介绍: Userspace 模式 工作原…...
密码学的hash函数,哈希碰撞, collision resistance, BTC用到的SHA-256简介
密码学中的哈希函数、哈希碰撞、抗碰撞性(collision resistance)以及比特币中使用的 SHA-256 的简明介绍: 🧩 一、哈希函数(Hash Function) 定义: 哈希函数是一种将任意长度的输入(…...
通过监督微调(SFT)提升AI Agent效果的完整指南
一、SFT技术深度剖析 1.1 核心概念 监督微调(Supervised Fine-Tuning)是在大规模预训练语言模型(如LLaMA、GPT系列)的基础上,使用特定任务标注数据进行二次训练的过程。其本质是通过有监督学习调整模型参数ÿ…...
TCP基础题:音乐播放列表管理系统
需求描述 服务器端 创建一个 TCP 服务器,监听本地的 9999 端口,支持多个客户端连接。维护一个音乐播放列表,每个音乐条目包含歌曲名称、歌手、时长等信息。能够处理客户端的以下请求: 添加音乐到播放列表:接收客户端发…...
碰一碰发视频源码文案功能,支持OEM
在数字化营销与内容传播领域,碰一碰发视频文案功能凭借 NFC 技术的便捷性,实现了视频与文案的快速传递。本文将围绕该功能的开发流程,从需求分析、技术架构设计到核心功能实现,详细解析其开发要点,为开发者提供实践参考…...
如何在 Vue 3 中实现一个自定义的 `v-html` 组件
引言 在 Vue.js 中,v-html 是一个非常有用的指令,用于将 HTML 字符串渲染到元素中。然而,由于它直接插入 HTML 内容,存在潜在的安全风险(如 XSS 攻击)。因此,了解其工作原理并实现一个安全的替…...
差分对的返回电流-信号完整性分析
差分对的返回电流: 单端线的返回电流集中在参考平面,差分对的返回电流是怎样分布的?有一种观点认为,对于差分对这种耦合传输结构,其中一条走线是另一条走线的返回路径。甚至更进一步得出差分对不需要参考平面的结论。是否真的如此?要想了解…...
html单页业务介绍源码
源码介绍 html单页业务介绍源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行 效果预览 源码免费获取 html单页业务介绍源码...
IDEA导入并启动若依项目步骤(SpringBoot+Vue3)
1.下载后端项目 项目地址:https://gitee.com/y_project/RuoYi-Vue 复制命令,将项目克隆到本地 git clone gitgitee.com:y_project/RuoYi-Vue.git使用IDEA打开(会有点慢,耐心等待),打开后如下 2.Mysql导…...
零基础上手Python数据分析 (22)案例实战]之利用 Matplotlib Seaborn 进行电商销售数据可视化分析
写在前面 —— 图表为刃,洞察先行!综合运用 Pandas、Matplotlib 与 Seaborn,点亮数据价值 本篇通过一个完整的案例实战,体验如何将数据分析与数据可视化紧密结合,让冰冷的数据转化为生动、直观、富有洞察力的视觉故事! 案例目标: 本篇博客将延续我们在第 17 篇案例中…...
图像预处理-霍夫变换
一.概念 霍夫变换是图像处理的一种技术,主要用于检测图像中的直线、圆等几何形状。基本思想就是将图像空间(直角坐标系或极坐标系)中的点映射到(霍夫空间)参数空间中,通过在参数空间中寻找累计最大值实现对特定形状的检测。 接下…...
逐步了解蓝牙 LE 配对(物联网网络安全)
配对是蓝牙 LE 中的一个重要概念。让我们来了解一下蓝牙 LE 配对的基础知识,概述 LE 设备如何在可信设备之间安全地共享密钥。 在之前的一篇文章]中,我们讨论了蓝牙 LE 的安全密钥。我们了解到,蓝牙 LE 设备可以创建并共享三个不同的安全密钥:一个用于数据加密,一个用于创…...
嵌入模型(Embedding Models)原理详解:从Word2Vec到BERT的技术演进
一、什么是嵌入模型? 嵌入模型(Embedding Models) 是一种将高维离散数据(如文本、图像)转换为低维连续向量表示的技术。这些向量能够反映数据的语义关系,使得“语义相近的实体在向量空间中距离更近”。例如…...
解析塔能科技:绿色低碳智慧节能一站式破局之匙
在能源问题日益凸显的当下,绿色低碳、高效节能成为全球发展的重要课题。对各类节能方案进行深入剖析后,可以发现塔能科技的绿色低碳智慧节能一站式解决方案极具创新性与实用性,切实为众多行业面临的能源困境提供了有效解决路径。 直面行业痛点…...
el-menu箭头改为右下
问: el-menu箭头改为右下 回答: :deep(.el-menu){.el-sub-menu .el-sub-menu__icon-arrow{transition: transform 0.3stransform: rotateZ(-90deg) !important;}/* 展开状态:箭头向下 */.el-sub-menu.is-opened .el-sub-menu__icon-arrow,…...
[特殊字符][特殊字符] HarmonyOS相关实现原理聊聊![特殊字符][特殊字符]
Hey小伙伴们~ 今天咱们来聊聊HarmonyOS的实现原理吧!🤔💡 虽然直接看源代码是最直接的方式,但是OpenHarmony项目的开源进度有点让人捉急呢… 不过没关系,我们可以通过已经开放的SDK、IDE、开发示例和编译产物来一探究竟…...
RTSP播放器实现回调RGB|YUV给视觉算法,然后二次编码推送到RTMP服务
引言 在本文中,我们将介绍如何基于大牛直播SDK构建一个功能强大的RTSP|RTMP播放器,该播放器利用自定义SDK解码视频、处理RGB帧,并将其推送到RTMP流中进行直播。这个解决方案非常适合需要在实时视频流中集成视觉算法的场景,在处理…...
补题【Darkness+Different Billing+Dice Game】
文章目录 1.Darkness2.Different Billing3.Dice Game 1.Darkness 题目来源:Darkness I 这题不难想,通过作图我们发现 当nm时直接取对角线就好 当n!m时,取m,n的最小值,那么最小值的这个正方形都可以被填为黑色,剩下的…...
卷积神经网络:视觉炼金术士的数学魔法
🎮 “你以为《赛博朋克2077》的夜之城是画出来的?不,是卷积神经网络’卷’出来的!” 🎮 一、卷积:像素世界的连连看大师 想象你拿着一张《蒙娜丽莎》的拼图——卷积核就像你手中的拼图碎片,在画…...