Daily AI 20250514 (迁移学习与元学习)
参考资料:神经网络与深度学习
目录
- 迁移学习 (Transfer Learning)
- 归纳迁移学习
- 转导迁移学习
- 元学习 (Meta Learning)
- 基于优化器的元学习
- 模型无关的元学习(Model-AgnosticMeta-Learning,MAML)
迁移学习 (Transfer Learning)
对于一个缺乏标注数据的任务,如果有一个相关任务已经有了大量的训练数据,虽然这些训练数据的分布和目标任务不同,但是由于训练数据的规模比较大,假设可以从中学习某些可以泛化的知识,那么这些知识对目标任务会有一定的帮助.如何将相关任务的训练数据中的可泛化知识迁移到目标任务上,即迁移学习。
从统计学习的观点来看,一个机器学习任务 T \mathcal{T} T定义为在一个领域 D = ( X , Y , p ( x , y ) ) \mathcal{D}=(\mathcal{X}, \mathcal{Y}, p(\boldsymbol{x}, y)) D=(X,Y,p(x,y))上的条件概率 p ( y ∣ x ) p(y \mid \boldsymbol{x}) p(y∣x) 的建模问题.迁移学习旨在利用源领域(Source Domain) D S \mathcal{D}_S DS 中学到的知识来帮助目标领域(Target Domain) D T \mathcal{D}_T DT 上的学习任务。
归纳迁移学习
在归纳迁移学习中,源领域和目标领域有相同的输入空间 X S = X T {\mathcal{X}}_S={\mathcal{X}}_T XS=XT ,输出空间可以相同也可以不同,源任务和目标任务一般不相同 T S ≠ T T \mathcal{T}_S \neq \mathcal{T}_T TS=TT ,即 p S ( y ∣ x ) ≠ p_S(y \mid \boldsymbol{x}) \neq pS(y∣x)= p T ( y ∣ x ) p_T(y \mid \boldsymbol{x}) pT(y∣x) 。一般而言,归纳迁移学习要求源领域和目标领域是相关的,并且源领域 D S \mathcal{D}_S DS 有大量的训练样本,这些样本可以是有标注的样本,也可以是无标注样本.
(1) 当源领域只有大量无标注数据时,源任务可以转换为无监督学习任务,比如自编码和密度估计任务.在自然语言处理领域,由于语言相关任务的标注成本比较高,很多自然语言处理任务的标注数据都比较少,这导致了在这些自然语言处理任务上经常会受限于训练样本数量而无法充分发挥深度学习模型的能力.同时,由于我们可以低成本地获取大规模的无标注自然语言文本,因此一种自然的迁移学习方式是将大规模文本上的无监督学习(比如语言模型)中学到的知识迁移到一个新的目标任务上.从早期的预训练词向量(比如word2vec和GloVe等)到句子级表示(比如ELMO、OpenAI GPT 以及BERT等)都对自然语言处理任务有很大的促进作用.
(2) 当源领域有大量的标注数据时,可以直接将源领域上训练的模型迁移到目标领域上.比如在计算机视觉领域有大规模的图像分类数据集ImageNet.由于在ImageNet数据集上有很多预训练的图像分类模型,比如AlexNet、VGG和ResNet等,我们可以将这些预训练模型迁移到目标任务上.归纳迁移学习的方式主要有:
-基于特征的方式:将预训练模型的输出或者是中间隐藏层的输出作为特征直接加入到目标任务的学习模型中.目标任务的学习模型可以是一般的浅层分类器(比如支持向量机等)或一个新的神经网络模型。
-精调的方式:在目标任务上复用预训练模型的部分组件,并对其参数进行精调(Fine-Tuning)。
转导迁移学习
转导迁移学习是一种从样本到样本的迁移,转导迁移学习通常假设源领域有大量的标注数据,而目标领域没有(或只有少量)标注数据,但是有大量的无标注数据.目标领域的数据在训练阶段是可见的.
元学习 (Meta Learning)
希望有一套自动方法,根据不同任务来动态地选择合适的模型或动态地调整超参数。(Learning to Learn)
元学习的目的是从已有任务中学习一种学习方法或元知识,可以加速新任务的学习.从这个角度来说,元学习+分类似于归纳迁移学习,但元学习更侧重从多种不同(甚至是不相关)的任务中归纳出一种学习方法.
基于优化器的元学习
学习优化器g的过程可以看做一种元学习过程,其目标是找到一个适用于多个不同任务的优化器。在标准梯度下降中,每步迭代的目标是使得 L ( θ ) \mathcal{L}(\theta) L(θ)下降。在优化器的元学习中,希望在每步迭代的目标是 L ( θ ) \mathcal{L}(\theta) L(θ)最小,具体的目标函数为:
L ( ϕ ) = E f [ ∑ t = 1 T w t L ( θ t ) ] , θ t = θ t − 1 + g t , [ g t ; h t ] = LSTM ( ∇ L ( θ t − 1 ) , h t − 1 ; ϕ ) \begin{aligned} \mathcal{L}(\phi) & =\mathbb{E}_f\left[\sum_{t=1}^T w_t \mathcal{L}\left(\theta_t\right)\right], \\ \theta_t & =\theta_{t-1}+\boldsymbol{g}_t, \\ {\left[\boldsymbol{g}_t ; \boldsymbol{h}_t\right] } & =\operatorname{LSTM}\left(\nabla \mathcal{L}\left(\theta_{t-1}\right), \boldsymbol{h}_{t-1} ; \phi\right) \end{aligned} L(ϕ)θt[gt;ht]=Ef[t=1∑TwtL(θt)],=θt−1+gt,=LSTM(∇L(θt−1),ht−1;ϕ)
(用lstm网络学习更新所需的gradient)
模型无关的元学习(Model-AgnosticMeta-Learning,MAML)
是模型无关、任务无关的元学习算法,假设所有的任务都来自于一个任务空间,其分布为 p ( J ) p(\mathcal{J}) p(J)。旨在对这个任务空间的所有任务学习一个通用表示,这种表示可以经过梯度下降方法在一个特定的单任务上进行精调:
假设一个模型为 f θ f_\theta fθ ,如果我们让这个模型适应到一个新任务 J m \mathcal{J}_m Jm 上,通过一步或多步的梯度下降更新,学习到的任务适配参数 θ m ′ \theta_m^{'} θm′为:
θ m ′ = θ − α ∇ θ L J m ( f θ ) \theta_m^{\prime}=\theta-\alpha \nabla_\theta \mathcal{L}_{\mathcal{J}_m}\left(f_\theta\right) θm′=θ−α∇θLJm(fθ)
MAML的目标是学习一个参数𝜃使得其经过一个梯度迭代就可以在新任务上达到最好的性能,即
min θ ∑ J m ∼ p ( T ) L J m ( f θ m ′ ) = min θ ∑ J m ∼ p ( T ) L J m ( f ( θ − α ∇ θ L T m ( f θ ) ⏟ θ m ′ ) ) \min _\theta \sum_{\mathcal{J}_m \sim p(\mathcal{T})} \mathcal{L}_{\mathcal{J}_m}\left(f_{\theta_m^{\prime}}\right)=\min _\theta \sum_{\mathcal{J}_m \sim p(\mathcal{T})} \mathcal{L}_{\mathcal{J}_m}(f(\underbrace{\theta-\alpha \nabla_\theta \mathcal{L}_{\mathcal{T}_m}\left(f_\theta\right)}_{\theta_m^{\prime}})) θminJm∼p(T)∑LJm(fθm′)=θminJm∼p(T)∑LJm(f(θm′ θ−α∇θLTm(fθ)))
在所有任务上的元优化(Meta-Optimization)也采用梯度下降来进行优化,即
θ ← θ − β ∇ θ ∑ m = 1 M L J m ( f θ m ′ ) = θ − β ∑ m = 1 M ∇ θ L J m ( f θ m ) ( I − α ∇ θ 2 L J m ( f θ m ) ) \begin{aligned} \theta & \leftarrow \theta-\beta \nabla_\theta \sum_{m=1}^M \mathcal{L}_{\mathcal{J}_m}\left(f_{\theta_m^{\prime}}\right) \\ & =\theta-\beta \sum_{m=1}^M \nabla_\theta \mathcal{L}_{\mathcal{J}_m}\left(f_{\theta_m}\right)\left(I-\alpha \nabla_\theta^2 \mathcal{L}_{\mathcal{J}_m}\left(f_{\theta_m}\right)\right) \end{aligned} θ←θ−β∇θm=1∑MLJm(fθm′)=θ−βm=1∑M∇θLJm(fθm)(I−α∇θ2LJm(fθm))
其中 β \beta β 为元学习率, I I I 为单位阵.
第二步二阶梯度得到是由于:
∇ θ L T m ( f θ m ′ ) = ∇ θ L T m ( f θ − α ∇ θ L T m ( f θ ) ) \nabla_\theta \mathcal{L}_{\mathcal{T}_m}\left(f_{\theta_m}^{\prime}\right)=\nabla_\theta \mathcal{L}_{\mathcal{T}_m}\left(f_\theta-\alpha \nabla_\theta \mathcal{L}_{\mathcal{T}_m}\left(f_\theta\right)\right) ∇θLTm(fθm′)=∇θLTm(fθ−α∇θLTm(fθ))
对其做一阶泰勒展开得到:
≈ ∇ θ L T m ( f θ ) − α ∇ θ 2 L T m ( f θ ) ∇ θ L T m ( f θ ) = ∇ θ L T m ( f θ ) ( I − α ∇ θ 2 L T m ( f θ ) ) \approx \nabla_\theta \mathcal{L}_{\mathcal{T}_m}\left(f_\theta\right)-\alpha \nabla_\theta^2 \mathcal{L}_{\mathcal{T}_m}\left(f_\theta\right) \nabla_\theta \mathcal{L}_{\mathcal{T}_m}\left(f_\theta\right)=\nabla_\theta \mathcal{L}_{\mathcal{T}_m}\left(f_\theta\right)\left(I-\alpha \nabla_\theta^2 \mathcal{L}_{\mathcal{T}_m}\left(f_\theta\right)\right) ≈∇θLTm(fθ)−α∇θ2LTm(fθ)∇θLTm(fθ)=∇θLTm(fθ)(I−α∇θ2LTm(fθ))
(即MAML是一个嵌套优化问题,内层一步下降优化单个模型性能,外层实现一个更好的通用表示)
相关文章:
Daily AI 20250514 (迁移学习与元学习)
参考资料:神经网络与深度学习 目录 迁移学习 (Transfer Learning)归纳迁移学习转导迁移学习 元学习 (Meta Learning)基于优化器的元学习模型无关的元学习(Model-AgnosticMeta-Learning,MAML&am…...
牛市买卖数字货币逻辑
在牛市中进行数字货币交易,核心逻辑是顺势而为、控制风险、把握周期。以下是关键策略和逻辑框架: 一、牛市的核心逻辑 资金驱动 牛市由增量资金(新投资者、机构资金、杠杆资金)推动,流动性充裕时,市场情绪乐…...
7.DTH11和PWM波
目录 室内/本地温湿度检测 温湿度传感器介绍 获取手册和例程的方法 从手册中提取重要信息 传感器的分类 温度传感器类型 DHT11 的介绍 温湿度传感器的接口 温湿度传感器的时序 温湿度传感器电路介绍 IO 的配置 定时器输出 PWM 波 PWM 波介绍 PWM 波的作用&#x…...
在UI 原型设计中,交互规则有哪些核心要素?
在UI 原型设计中,交互规则主要有三个核心要素,分别为重要性、原则与实践,具体表现在: 一、交互规则在 UI 原型设计中的重要性 明确交互逻辑:设计阶段制定交互规则,清晰定义界面元素操作响应。 如社交应用…...
树的直径 | 树的最长路径
树的直径: 树上任意两节点之间最长的简单路径即为树的「直径」。 定理: 在一棵树上,从任意节点 u 开始进行一次 DFS,到达的距离其最远的节点 v 必为直径的一端。 B4016 树的直径 - 洛谷 思路: 由于这题中每条边的…...
AbMole解读:脂质体的关键组分和主要合成方法
脂质体(Liposome)是一种由磷脂等两性分子自发形成的封闭囊泡结构,随着纳米技术、材料科学等多学科的交叉发展,脂质体的研究与应用进入了一个新的阶段,并在肿瘤研究、疫苗研发、基因递送等多个领域发挥着关键作用。AbMo…...
Python爬虫之品牌口碑数据抓取
上一篇我们介绍了爬虫营销的优势,这次我就展开详细的说说,如何通过爬取社交媒体或电商平台的公开评论来分析自己或竞争对手的品牌声誉。 选择微博这样的平台,因为它的数据相对公开,而且有API支持,但要注意频率限制和反…...
【android bluetooth 协议分析 12】【A2DP详解 1】【车机侧蓝牙音乐免切源介绍】
“车机蓝牙音乐免切源” 是近年来车载系统(IVI,In-Vehicle Infotainment)中常见的一个用户体验优化功能。它主要是为了简化蓝牙音乐播放流程、减少用户操作,提升使用便捷性。 一、什么是“切源”? 在车机系统中&#…...
眼镜店哪个品牌好,你会选择哪一款眼镜
有些人买眼睛是为了耍帅,有些人买眼镜,可能就是为了调节视力。现在手机以及其他的电子产品越来越普及,近视眼的人群是越来越多了,那么要准备去配眼镜的话,就要找到一个正规的眼镜店,一起来了解一下眼镜店哪…...
基于EFISH-SCB-RK3576/SAIL-RK3576的畜禽养殖监控仪技术方案
(国产化替代J1900的农业物联网解决方案) 一、硬件架构设计 多源环境感知模块 空气质量监测: 集成NH₃/CO₂/H₂S三合一气体传感器(量程0-500ppm,精度2%FS),采样间隔≤1秒激光粉尘检测…...
linux - 权限的概念
目录 用户权限 超级用户与普通用户的区别 超级用户(root): 普通用户: 切换用户身份 使用sudo执行高权限命令 用户管理 用户组管理 文件权限 文件访问者类别 基本权限 权限表示方法 权限修改 chmod chown chgrp u…...
LeRobot 框架的核心架构概念和组件(中)
本文档概述构成 LeRobot 框架的核心架构概念和组件。它介绍主要的子系统,并解释它们如何相互作用以实现机器人学习。 。。。。。。继续。。。。。。 环境接口 环境系统提供与模拟环境交互的统一接口。这些环境允许在部署到物理机器人之前,在受控环境中…...
鸿蒙5.0项目开发——鸿蒙天气项目的实现(主页1)
【高心星出品】 文章目录 页面效果:页面功能:页面执行流程:1. 页面初始化阶段2. 定位获取阶段3. 天气数据加载阶段 这个页面是整个天气应用的核心,集成了天气查询、定位、搜索等主要功能,提供了完整的天气信息服务。 …...
虚幻引擎5-Unreal Engine笔记之摄像机与场景捕获相关概念的解析
虚幻引擎5-Unreal Engine笔记之摄像机与场景捕获相关概念的解析 code review! 文章目录 虚幻引擎5-Unreal Engine笔记之摄像机与场景捕获相关概念的解析1. UE中SceneCapture和UCameraComponent的关系是什么?Camera和SceneCapture2D的关系是什么1.1 UCameraComponen…...
【vim】--- vim 插件说明 超详细持续更新中
在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【vim】--- vim 插件说明 超详细持续更新中 开发环境一、vim 插件管理器1、Vim-Plug2…...
医学影像系统的集成与工作流优化
🧑 博主简介:CSDN博客专家、CSDN平台优质创作者,高级开发工程师,数学专业,10年以上C/C++, C#, Java等多种编程语言开发经验,拥有高级工程师证书;擅长C/C++、C#等开发语言,熟悉Java常用开发技术,能熟练应用常用数据库SQL server,Oracle,mysql,postgresql等进行开发应用…...
Vue 和 React 状态管理的性能优化策略对比
一、Vue 状态管理优化策略 合理使用 Vuex 模块化 将全局状态拆分为模块,按需加载,避免单一 Store 文件过大。通过命名空间隔离状态,减少状态冗余和无效更新。 const moduleA { namespaced: true, state: { /* ... */ } }; const store new …...
python打包exe报错:处理文件时错误:Excel xlsx file; not supported
背景:最近用python写一个excel解析工具,然后打包成exe可执行文件的时候,遇到这样的问题 1.在我自己编译器运行是可以正常将上传后的excel进行解析,但是在打包成exe后,就无法正常解析excel 问题排查: 1.切换…...
libmemcached库api接口讲解一
前言:好多接口的用法都不怎么会,得学习一下具体的用法 memcached_st ✅ 一个连接 memcached 服务集群的“客户端实例”对象,用于管理连接、执行读写操作、设置行为、维护哈希环等一切功能。 它在使用中通常通过下面的方式创建: …...
【RabbitMQ】发布确认机制的具体实现
文章目录 模式介绍建立连接单独确认代码实现逻辑运行结果 批量确认代码实现逻辑运行结果 异步确认实现逻辑介绍代码实现逻辑运行结果 三种策略对比以及完整代码 模式介绍 作为消息中间件,都会面临消息丢失的问题,消息丢失大概分为三种情况: …...
RabbitMQ是什么?应用场景有哪些?
RabbitMQ 是一款开源的消息代理中间件,基于 AMQP(高级消息队列协议)实现,用于在分布式系统中进行异步通信和消息传递。它通过将消息的发送者和接收者解耦,提高了系统的可扩展性、可靠性和灵活性。 核心特点 多协议支持:不仅支持 AMQP,还兼容 STOMP、MQTT 等多种消息协议…...
数学实验(Matlab符号运算)
一、符号对象的建立 Matlab符号运算特点 计算以推理方式进行,因此不受计算误差积累所带来的困扰 符号计算指令的调用比较简单,与数学教科书上的公式相近 Matlab符号运算举例 符号对象与符号表达式 在进行符号运算时,必须先定义基本的符号…...
使用 hover-class 实现触摸态效果 - uni-app 教程
目录 一、什么是 hover-class 二、常用组件支持 hover-class 三、基本 效果说明: 四、配合 hover-start-time 和 hover-stay-time 五、注意事项 六、实践建议 在移动端开发中,良好的用户交互体验尤为重要,点击或长按某个按钮时&#x…...
# 深度剖析LLM的“大脑”:单层Transformer的思考模式探索
简单说一下哈 —— 咱们打算训练一个单层 Transformer 加上稀疏自编码器的小型百万参数大型语言模型(LLM),然后去调试它的思考过程,看看这个 LLM 的思考和人类思考到底有多像。 LLMs 是怎么思考的呢? 开源 LLM 出现之后…...
Git仓库迁移
前言 前面我讲了GitLab搭建与使用(SSH和Docker)两种方式,那么就会延伸出来一个情况:Git仓库迁移虽然这种情况很少发生,但是我自己公司近期要把 阿里云迁移到华为云,那么放在上面的Git仓库也要全量迁移下面我就写了一个脚本演示&am…...
Windows避坑部署CosyVoice多语言大语言模型
#工作记录 前言 在实际部署与应用过程中,项目的运行环境适配性对其稳定性与功能性的发挥至关重要。CosyVoice 项目虽具备强大的语音处理能力,但受限于开发与测试环境的侧重方向,其对运行环境存在特定要求。 该项目在 Linux 和 Docker 生态…...
《实现模式》以Golang视角解读 价值观和原则 day 1
为什么阅读实现模式? 为什么阅读《实现模式》?Kent Beck 的《实现模式》其核心思想——编写清晰、易于理解且易于维护的代码,对于软件工程的新手而言,直接深入复杂的设计模式或架构理念可能会感到困惑。《实现模式》则弥合了设计…...
解决 PicGo 上传 GitHub图床及Marp中Github图片编译常见难题指南
[目录] 0.行文概述 1.PicGo图片上传失败 2.*关于在Vscode中Marp图片的编译问题* 3.总结与启示行文概述 写作本文的动机是本人看到了Awesome Marp,发现使用 Markdown \texttt{Markdown} Markdown做PPT若加持一些 CSS , JavaScript \texttt{CSS},\texttt{JavaScript} …...
LeetCode 820 单词的压缩编码题解
LeetCode 820 单词的压缩编码题解 题目描述 题目链接 给定一个单词列表,将其编码为一个索引字符串S,格式为"单词1#单词2#…"。要求当某个单词是另一个单词的后缀时,该单词可以被省略。求最终编码字符串的最小长度。 解题思路 逆…...
Windows软件插件-写wav
下载本插件 本插件,将PCM音频流写入WAV音频文件。或将PCM音频流压缩为ALAW格式,写入WAV文件。可以创作大文件(超过4字节所能表示的大小)。插件类型为DLL,可以在win32和MFC程序中使用。使用本插件创建的ALAW格式WAV音频…...
基于 Spring Boot 瑞吉外卖系统开发(十五)
基于 Spring Boot 瑞吉外卖系统开发(十五) 前台用户登录 在登录页面输入验证码,单击“登录”按钮,页面会携带输入的手机号和验证码向“/user/login”发起请求。 定义UserMapper接口 Mapper public interface UserMapper exte…...
【Linux高级IO】多路转接之epoll
多路复用之epoll 一,认识epoll二,epoll的相关接口1. epoll_create2. epoll_ctl3. epoll_wait 三,epoll的原理四,epoll的两种工作模式(ET和LT)1. 两种工作模式2. 对比ET和LT 五,总结 在了解到sel…...
Java 性能调优全解析:从设计模式到 JVM 的 7 大核心方向实践
引言 在高并发、低延迟的技术场景中,Java 性能优化需要系统化的方法论支撑。本文基于7 大核心优化方向(复用优化、计算优化、结果集优化、资源冲突优化、算法优化、高效实现、JVM 优化),结合权威框架与真实案例,构建从…...
“海外滴滴”Uber的Arm迁移实录:重构大规模基础设施
云工作负载在性价比上的自然演进路径: Intel ➜ AMD ➜ ARM 不信?来看看 Uber 的做法: 01/Arm架构:云计算新时代 2023 年 2 月,Uber 正式开启了一项战略性迁移:将从本地数据中心迁移至云端,…...
java加强 -File
File类的对象可以代表文件/文件夹,并可以调用其提供的方法对象文件进行操作。 File对象既可以代表文件,也可以代表文件夹。 创建File对象,获取某个文件的信息 语法: File 对象名 new File("需要访问文件的绝对路径&…...
SQL注入 ---04
1 简单的sql注入 要求: 要有sql注入: 1,变量 2,变量要带入数据库进行查询 3,没有对变量进行过滤或者过滤不严谨 mysql> select * from users where id2 limit 0,1; 当我的语句这样写时查寻到的结果 当我修改为&…...
MySQL知识点总结(持续更新)
聚合函数通常用于对数据进行统计和聚合操作。以下是一些常见数据库系统(如 MySQL、PostgreSQL、Oracle、SQL Server 等)中常用的聚合函数: 常见的数据库聚合函数: COUNT():计算指定列中非空值的数量 SELECT COUNT(*) …...
数字信号处理-大实验1.1
MATLAB仿真实验目录 验证实验:常见离散信号产生和实现验证实验:离散系统的时域分析应用实验:语音信号的基音周期(频率)测定 目录 一、常见离散信号产生和实现 1.1 实验目的 1.2 实验要求与内容 1.3 实验…...
Qt操作SQLite数据库教程
Qt 中操作 SQLite 数据库的步骤如下: 1. 添加 SQLite 驱动并打开数据库 #include <QSqlDatabase> #include <QSqlError> #include <QSqlQuery>// 创建数据库连接 QSqlDatabase db QSqlDatabase::addDatabase("QSQLITE"); db.setData…...
【PSINS工具箱】基于工具箱的单独GNSS导航、单独INS导航、两者结合组合导航,三种导航的对比程序。附完整的代码
本文给出基于PSINS工具箱的单独GNSS导航、单独INS导航、两者结合组合导航(153EKF)的程序。并提供三者的轨迹对比、误差对比。 文章目录 运行结果MATLAB代码代码的简单介绍简介2. 平均绝对误差 (MAE)主要模块运行结果 三轴轨迹图: 各轴误差曲线: 命令行窗口的结果输出: …...
开发者的测试复盘:架构分层测试策略与工具链闭环设计实战
摘要 针对测试复盘流于形式、覆盖率虚高等行业痛点,本文提出一套结合架构分层与工具链闭环的解决方案: 分层测试策略精准化:通过单元测试精准狙击核心逻辑、契约测试驱动接口稳定性、黄金链路固化端到端场景,实现缺陷拦截率…...
手写CString类
学习和理解字符串处理机制:手写 CString 类是深入学习字符串处理和内存管理的有效方式。通过实现构造函数、析构函数、赋值运算符等,能够理解字符串在内存中的存储方式、动态内存分配和释放的原理,以及如何处理字符串的复制、拼接、查找等操作…...
electron结合vue,直接访问静态文件如何跳转访问路径
在最外的app.vue或者index.vue的js模块编写 let refdade ref(1);//刷新,获得请求// 获取完整的查询字符串(例如: "?dade/myms")const searchParams new URLSearchParams(window.location.search);// 获取 dade 参数的值…...
解读RTOS 第七篇 · 驱动框架与中间件集成
1. 引言 在面向生产环境的 RTOS 系统中,硬件驱动框架与中间件层是连接底层外设与上层应用的桥梁。一个模块化、可扩展的驱动框架能够简化外设管理,提升代码可维护性;而丰富的中间件生态则为网络通信、文件系统、图形界面、安全加密等功能提供开箱即用的支持。本章将从驱动模…...
Java GUI开发全攻略:Swing、JavaFX与AWT
Swing 界面开发 Swing 是 Java 中用于创建图形用户界面(GUI)的库。它提供了丰富的组件,如按钮、文本框、标签等。 import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener;public class SwingExa…...
Cursor 0.5版本发布,新功能介绍
Cursor,这款流行的AI编程平台,刚刚在其v0.50更新中推出了一系列新功能。 首先,请将您的Cursor IDE更新到最新版本。当您打开Cursor时,您应该会在屏幕左下方收到关于最新版本发布的通知。 更多上下文控制: 对上下文的精细可见性,以及最新模型的MAX模式。 聊天升级: 导出…...
Android学习总结之Glide自定义三级缓存(实战篇)
一、为什么需要三级缓存 内存缓存(Memory Cache) 内存缓存旨在快速显示刚浏览过的图片,例如在滑动列表时来回切换的图片。在 Glide 中,内存缓存使用 LruCache 算法(最近最少使用),能自动清理长…...
Maven 下载安装与配置教程
## 1. Maven 简介 Maven 是一个项目管理和构建自动化工具,主要用于 Java 项目。Maven 可以帮助开发者管理项目的构建、报告和文档,简化项目依赖管理。 ## 2. 下载 Maven 1. 访问 Maven 官方网站 [https://maven.apache.org/download.cgi](https://maven.…...
一篇解决Redis:持久化机制
目录 认识持久化 持久化方案 RDB(Redis DataBase) 手动触发 自动触发 小结 AOF(Append-Only File) AOF缓冲区刷新机制 AOF重写机制 AOF重写流程 编辑 混合持久化 认识持久化 我们都知道Mysql有四大特征,原子性,持久…...
使用IDEA创建Maven版本的web项目以及lombok的使用
1.新建项目 2.修改pom.xml 3.修改项目结构 4.在main/java下面写一个Servlet测试一下 然后当前页面往下滑 -Dfile.encodingUTF-8编写一句输出语句,测试是否成功部署配置,并选择到正确的位置: 回车以后 再回到idea里面,发现控…...