【连续学习之LwM算法】2019年CVPR顶会论文:Learning without memorizing
1 介绍
年份:2019
期刊: 2019CVPR
引用量:611
Dhar P, Singh R V, Peng K C, et al. Learning without memorizing[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019: 5138-5146.
本文提出的“Learning without Memorizing (LwM)”算法原理是通过结合知识蒸馏损失(LD)和注意力蒸馏损失(LAD)来实现增量学习,关键技术步骤是在训练过程中,利用注意力机制(Grad-CAM)生成的注意力图来保持对基础类别的知识,同时学习新类别,而无需存储任何基础类别的数据。本文算法属于基于正则化的算法。
2 创新点
- 无需存储数据的增量学习(Learning without Memorizing):
- 提出了一种新颖的增量学习方法,能够在不存储任何关于现有类别数据的情况下,保持对现有类别的知识,同时学习新类别。
- 注意力蒸馏损失(Attention Distillation Loss, LAD):
- 引入了一种基于注意力图的信息保持惩罚项LAD,通过惩罚分类器注意力图的变化来保留基础类别的信息。
- 注意力图的利用:
- 使用Grad-CAM技术生成注意力图,这些图能够更精确地编码模型的表示,并用于约束学生模型和教师模型之间的表示差异。
- 信息保持的全面提升:
- 通过结合LAD和LD,不仅考虑了类别分数的分布,还考虑了模型梯度流信息,从而更全面地保持了对基础类别的知识。
- 增量学习中的类特异性解释:
- 通过类特异性的注意力图,强化了教师模型和学生模型之间类特异性解释的一致性,这对于没有基础类别数据的增量学习设置尤为重要。
- 实验验证:
- 在多个数据集上进行了实验验证,包括iILSVRC-small、iCIFAR-100、Caltech-101和CUBS-200-2011,证明了LwM方法在增量学习中的有效性和优越性能。
3 算法
3.1 算法原理
- 增量学习(Incremental Learning, IL)背景:
- 增量学习的目标是在不遗忘已学习类别(基础类别)的情况下,使模型能够识别新的类别。这是通过在模型上逐步添加新类别并更新模型来实现的。
- 信息保持惩罚(Information Preserving Penalty, IPP):
- 在增量学习中,为了保持对基础类别的知识,需要一种机制来惩罚模型在新类别学习过程中对基础类别知识造成的遗忘。LwM通过IPP实现这一点。
- 注意力蒸馏损失(Attention Distillation Loss, LAD):
- LwM提出了一种新的IPP,即注意力蒸馏损失(LAD),它通过比较教师模型(Mt-1)和学生模型(Mt)生成的注意力图来工作。注意力图是通过Grad-CAM技术从模型的卷积层特征图中生成的,它们能够显示模型在做出预测时哪些区域是重要的。
- 类特异性注意力图:
- LwM使用类特异性的注意力图来强制教师模型和学生模型之间的类特异性解释保持一致。这意味着模型需要对特定类别的视觉特征保持一致的关注。
- L1距离约束:
- LAD通过计算教师模型和学生模型生成的注意力图之间的L1距离来约束它们的差异,迫使学生模型在学习新类别时保持与教师模型对基础类别的相似响应。
- 损失函数组合:
- LwM的总损失函数是分类损失(LC)、知识蒸馏损失(LD)和注意力蒸馏损失(LAD)的组合,即LLwM = LC + βLD + γLAD,其中β和γ是用于平衡两种损失的权重。
- 增量学习过程:
- 在每个增量步骤中,学生模型Mt被初始化为前一个教师模型Mt-1,并在新类别的数据上进行训练。同时,通过LAD和LD来惩罚Mt与Mt-1之间的差异,以保持对基础类别的知识。
- 无需存储基础类别数据:
- LwM的一个关键特点是在学习新类别时不需要存储任何关于基础类别的数据,这使得该方法在内存受限的边缘设备上特别有用。
3.2 算法步骤
图中展示了应用三种损失函数来训练学生模型$ M_t < f o n t s t y l e = " c o l o r : r g b ( 6 , 6 , 7 ) ; " > ,而教师模型 < / f o n t > <font style="color:rgb(6, 6, 7);">,而教师模型</font> <fontstyle="color:rgb(6,6,7);">,而教师模型</font> M_{t-1} $保持冻结状态。
算法步骤总结:
- 初始化教师模型$ M_0 :使用分类损失 :使用分类损失 :使用分类损失 LC 训练 训练 训练 M_0 在 在 在 N $个基础类别上。
- 对于每个增量步骤$ t = 1 到 到 到 k : a . 使用 : a. 使用 :a.使用 M_{t-1} 初始化学生模型 初始化学生模型 初始化学生模型 M_t 。 b . 将新类别的数据输入到 。 b. 将新类别的数据输入到 。b.将新类别的数据输入到 M_{t-1} 和 和 和 M_t 中。 c . 计算 中。 c. 计算 中。c.计算 M_t 和 和 和 M_{t-1} 的输出,包括类特异性注意力图和分数。 d . 应用信息保持惩罚( I P P ),包括注意力蒸馏损失( L A D )和知识蒸馏损失( L D )。 e . 对 的输出,包括类特异性注意力图和分数。 d. 应用信息保持惩罚(IPP),包括注意力蒸馏损失(LAD)和知识蒸馏损失(LD)。 e. 对 的输出,包括类特异性注意力图和分数。d.应用信息保持惩罚(IPP),包括注意力蒸馏损失(LAD)和知识蒸馏损失(LD)。e.对 M_t 应用分类损失 应用分类损失 应用分类损失 LC ,基于其对新类别的输出。 f . 联合应用分类损失和 I P P ,训练 ,基于其对新类别的输出。 f. 联合应用分类损失和IPP,训练 ,基于其对新类别的输出。f.联合应用分类损失和IPP,训练 M_t 进行多个周期。 g . 将 进行多个周期。 g. 将 进行多个周期。g.将 M_t $作为下一个增量步骤的教师模型。
- 在每个增量步骤后评估$ M_t $的性能。
损失函数计算公式:
总损失函数$ LLwM 是分类损失 是分类损失 是分类损失 LC 、知识蒸馏损失 、知识蒸馏损失 、知识蒸馏损失 LD 和注意力蒸馏损失 和注意力蒸馏损失 和注意力蒸馏损失 LAD $的组合:
$ LLwM = LC + \beta \cdot LD + \gamma \cdot LAD $
其中:
- $ LC 是分类损失,用于训练 是分类损失,用于训练 是分类损失,用于训练 M_t $学习新类别。
- $ LD 是知识蒸馏损失,用于保持 是知识蒸馏损失,用于保持 是知识蒸馏损失,用于保持 M_t 和 和 和 M_{t-1} $对基础类别预测的一致性:
$ LD(y, \hat{y}) = -\sum_{i=1}^{N} y_{0i} \cdot \log(\hat{y}_{0i}) $
其中$ y 和 和 和 \hat{y} 分别是 分别是 分别是 M_{t-1} 和 和 和 M_t 对基础类别的预测向量, 对基础类别的预测向量, 对基础类别的预测向量, y_{0i} = \sigma(y_i) 和 和 和 \hat{y}_{0i} = \sigma(\hat{y}_i) ( ( ( \sigma(\cdot) $是sigmoid激活函数)。
- $ LAD 是注意力蒸馏损失,用于保持 是注意力蒸馏损失,用于保持 是注意力蒸馏损失,用于保持 M_t 和 和 和 M_{t-1} $生成的注意力图的一致性:
$ LAD = \sum_{j=1}^{l} \left| \frac{Q_{In,b}{t-1,j}}{|Q_{In,b}{t-1}|2} - \frac{Q{In,b}{t,j}}{|Q_{In,b}{t}|_2} \right|_1 $
其中$ Q_{In,b}^{t-1} 和 和 和 Q_{In,b}^{t} 分别是 分别是 分别是 M_{t-1} 和 和 和 M_t 为输入图像 为输入图像 为输入图像 In 和基础类别 和基础类别 和基础类别 b 生成的向量化注意力图, 生成的向量化注意力图, 生成的向量化注意力图, l $是每个向量化注意力图的长度。
4 实验分析
展示了在不同的增量学习配置下,注意力图如何随着增量学习步骤的变化而变化。这些配置包括传统的分类训练(C)、LwF-MC方法,以及本文提出的LwM方法。
- 基线比较:
- LwM与LwF-MC作为基线进行比较,LwM在所有测试场景中均优于LwF-MC。
- 性能提升:
- 在iILSVRC-small数据集上,当类别数量达到40或更多时,LwM的性能比LwF-MC提高了30%以上。
- 在100个类别时,LwM的性能比LwF-MC提高了50%以上。
- 不同数据集上的表现:
- LwM在iILSVRC-small和iCIFAR-100数据集上的表现一致优于LwF-MC。
- LwM甚至在iILSVRC-small数据集上超过了iCaRL,尽管iCaRL在训练学生模型时有访问基础类别数据的优势。
- 增量批次大小的影响:
- 在iCIFAR-100数据集上,LwM在不同大小的增量批次(10、20、50类)中均优于LwF-MC。
- Caltech-101和CUBS-200-2011数据集:
- 在这两个数据集上,LwM通过每次增加10个类别的批次与微调(Finetuning)进行比较,显示出LwM在增量学习中的优势。
- LAD的有效性:
- 仅使用LC和LAD的组合在iILSVRC-small数据集上进行了测试,结果表明LAD有助于保持对基础类别的注意力,从而提高模型性能。
- 遗忘和惯性的量化:
- 通过比较不同配置下生成的注意力图,实验结果支持LwM在减少遗忘和提高模型对新类别的适应性方面的有效性。
- 定性结果:
- 通过图4展示的注意力图,LwM显示出在增量学习过程中更好地保持了对基础类别的注意力,与C和LwF-MC相比,LwM生成的注意力图更接近于初始教师模型M0的“理想”注意力图。
5 思考
(1)提出了一种基于注意力的损失函数应用到连续学习。
(2)只对比了一种算法,就发表了CVPR ,都没有对比多种的算法。
相关文章:
【连续学习之LwM算法】2019年CVPR顶会论文:Learning without memorizing
1 介绍 年份:2019 期刊: 2019CVPR 引用量:611 Dhar P, Singh R V, Peng K C, et al. Learning without memorizing[C]//Proceedings of the IEEE/CVF conference on computer vision and pattern recognition. 2019: 5138-5146. 本文提…...
数组和指针
数组和指针 数组初始化特殊的字符数组 指针的引入指针的定义和初始化指针操作指针和const限定符 C风格字符串 C提供了两种类似于vector和迭代器的低级复合类型:数组和指针。与vector类似,数组也可以保存某种类型的一组对象,只是数组一经创建就…...
【数电尾灯设计】2022-8-16
缘由数电尾灯设计问题,求解答--CSDN问答 从题目可以列出 000 100 010 111-----------4进制 000 100 010 110 001 101 011 111-----------8进制 由列出可知用16进制芯片的3个引脚可以获得8进制推导出4进制从而可用逻辑处理为4进制实现尾灯功能。之上第一步实现了尾灯…...
F.interpolate函数
F.interpolate 是 PyTorch 中用于对张量(通常是图像数据)进行插值操作的函数,常用于调整张量的大小,例如改变图像的分辨率。它支持多种插值方法,包括最近邻插值、双线性插值和三次插值等。 语法 torch.nn.functional…...
Tableau数据可视化与仪表盘搭建-基础图表制作
目录 对比分析:比大小 柱状图 条形图 数据钻取 筛选器 热力图 气泡图 变化分析:看趋势 折线图 预测 面积图 关系分布:看位置 散点图 直方图 地图 构成分析:看占比 饼图 树地图 堆积图 对比分析:比大…...
Sentinel-5P遥感数据下载及预处理教程【20250105】
Sentinel-5P是欧空局(Europe Space Agency,ESA)于2017年10月13日发射的一颗全球大气污染监测卫星。卫星搭载了对流层观测仪(Tropospheric Monitoring Instrument,TROPOMI),可以有效的观测全球各…...
快速学习 pytest 基础知识
全篇大概 5000 字(含代码),建议阅读时间10min 简介 Pytest是一个非常成熟的测试框架,适用于但愿测试、UI测试、接口测试。 简单灵活、上手快支持参数化具有多个第三方插件可以直接使用 assert 进行断言 一、Pytest安装 pip inst…...
[python]解决AttributeError: module ‘PIL.Image‘ has no attribute ‘ANTIALIAS‘问题
环境:python3.13.1 问题: 利用ddddocr进行验证码识别时报AttributeError: module PIL.Image has no attribute ANTIALIAS错误信息,具体如下: python3 Python 3.13.1 (main, Jan 6 2025, 22:29:09) [Clang 16.0.0 (clang-1600.…...
【C++】类和对象(下):友元、static成员、内部类、explicit 和 匿名对象
文章目录 前言一、友元二、static成员三、内部类四、隐式类型转换(加explicit可以阻止隐式类型转换)五、匿名对象 前言 一、友元(友元函数 和 友元类) 二、static成员(类中被static修饰的成员变量 和 成员函数…...
Shapelet-aeon-1
本文中,我们将首创一个长度为m、维度为d的时间序列表示为一个向量。 在aeon中,我们将一个序列描述为x:(n_channels, n_timepoints). x是一个二维数组,其中n_channels对应的是维度d,或者说是特征数量;n_timepoints对应…...
2. 进程和线程
文章目录 前言1. 进程是什么2. 进程的相关属性3. 线程是什么4. 为什么引入线程5. 进程和线程的区别 前言 上一篇博客,我们讲到了CPU和操作系统,今天我们讲一个操作系统中一个非常重要的概念—线程和进程 1. 进程是什么 每个应用程序运行于现代操作系统…...
CE中注册的符号地址如何通过编程获取
我的方式是先执行lua申请共享内存,内存名称是进程id,这样多开也不受影响,然后通过共享内存的名字就可以读到地址了。之后的人造指针的地址也都可以放这里集中管理。 -- 申请内存 local size 1024 -- 申请 1024 字节(1 KB&#…...
QT上实现SVM进行数据分类
针对不了解SVM的原理的同学强推下面这个课程: 6.机器学习课程(六)支持向量机(线性模型)问题_哔哩哔哩_bilibili 一、QT实现SVM的方法 1.调用SVM的C语言库:麻烦,要专门去找库,cmak…...
【unity调用c++动态库,c++和c#相互调用】
文章目录 前言一、编写C++动态库(MyLibrary.cpp)二、 编译C++动态库三、编写C#代码(CallbackExample.cs)四、将C++动态库与Unity项目集成五、Unity运行结果六、注意事项总结前言 在Unity中调用C++动态库并进行回调到C#的功能实现,涉及到C++与C#之间的交互。这个过程的关键…...
SAP FICO财务模块的会计年度变式是什么?有特殊的年度期间(财年)吗?可以不按日历月份来设定会计期间吗?
文章目录 一、会计准则中关于会计期间的一般性原则二、SAP系统中关于会计期间的设定(1)一般性的期间设定方式(2)特殊期间是什么?(3)有些国家与众不同的财年 三、可以不按日历月份来设定会计期间…...
Linux(17)——使用 DNF 安装和更新软件包
目录 一、使用 DNF 管理软件包: 1、 DNF 查找软件: 2、DNF 安装软件: 3、DNF 删除软件: 二、使用 DNF 管理软件包组: 1、DNF 显示组信息: 2、DNF 安装组: 三、使用 DNF 查看事务历史记录…...
vue中的设计模式
vue中使用了哪些设计模式 1. 观察者模式(Observer Pattern) 应用场景:Vue 的响应式系统核心就是观察者模式。 实现方式:通过 Object.defineProperty 或 Proxy 监听数据变化,当数据发生变化时,通知依赖的视…...
大模型性能随笔
1. 如果开了accumulate gradient更新,则pipeline并行的bubble会变小很多。因为每foward好多个batch,才开始backward。 2. chat聊天任务上,可以把prefix KV cache reuse功能利用起来;然后把同一个session的对话,路由到…...
pdf预览 报:Failed to load module script
pdf 预览报: Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of “application/octet-stream”. Strict MIME type checking is enforced for module scripts per HTML spec. 报错原因:…...
基于 gitlab-runner 实现调度GPU的资源
本篇目录 1. 客户需求2. 需求调研3. 实践3.1 方案一:环境变量的方式3.2 方案二:k8s 自身的spec注入机制 4. 效果 该实践来自于客户的一个真实需求 1. 客户需求 客户的某些流水线需要使用GPU资源,但是对于GPU服务器而言,会有多张G…...
【源码+文档+调试讲解】项目申报小程序
摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的管理系统应运而生,各行各业相继进入信息管理时代…...
【ShuQiHere】使用 SCP 进行安全文件传输
【ShuQiHere】🚀 在日常的开发和运维工作中,文件传输是一个常见的任务。scp(Secure Copy)是一个基于 SSH 协议的文件传输工具,能够在本地和远程主机之间安全地复制文件和目录。本文将详细介绍 scp 的使用方法…...
算法基础 - 二分查找
文章目录 二分查找算法通常应用于已排序的数组。以下是一个C实现的二分查找算法示例: #include <iostream> #include <vector>int binarySearch(const std::vector<int>& nums, int target) {int left 0;int right nums.size() - 1;while …...
权限掩码umask
1 、 设置新建文件或目录的默认权限 在 Linux 系统中,当用户创建一个新的文件或目录时,系统都会为新建的文件或目录分配默认的权限,该默认权限与umask 值有关,其具体关系是: 新建文件的默认权限 0666-umask 值 新建…...
5. CSS引入方式
5.1 CSS的三种样式 按照 CSS 样式书写的位置(或者引入的方式),CSS样式表可以分为三大类: 1.行内样式表(行内式) 2.内部样式表(嵌入式) 3. 外部样式表(链接式) 5.2 内部样式表 …...
在Linux中,SElinux的作用是什么?如何临时和永久的更改SElinux上下文?
SELinux在Linux系统中扮演者至关重要的安全角色,它通过实施强制访问控制(Mandatory Access Control,MAC)策略来增强系统的安全性。不同于传统的用户和组权限管理机制(即自主访问控制DAC),selinux提供了一种…...
windows下,golang+vscode+delve 远程调试
1 现在远程服务器安装golang和delve golang的安装,通过官网直接下载安装包安装接口 go install github.com/go-delve/delve/cmd/dlvlatest 如果dlv和golang版本不匹配,这里把latest换成匹配的版本,比如1.20.0 2 编译带调试信息的程序 go bu…...
社交牛杂症?锂电系统有了DeviceNet转Profinet网关后,沟通无障碍
在锂电行业蓬勃发展的当下,自动化与智能化浪潮正席卷而来,这无疑对设备间的通信精准度与流畅性提出了严苛要求,而稳联技术Devicenet转Profinet网(WL-PN-DVNM)关恰是破局的关键利器。 此网关设备犹如一座桥梁࿰…...
C语言的正则表达式
C语言中的正则表达式 引言 正则表达式是一种用于描述字符串模式的工具,它可以用来进行字符串匹配、查找、替换等操作。在编程中,正则表达式被广泛应用于数据验证、信息提取等场景。C语言虽然没有内置的正则表达式支持,但通过一些库我们同样…...
Launcher3主页面加载显示流程分析
布局结构 抓取布局后,可以看到每个图标是一个DoubleShadowBubbleTextView,父布局是CellLayout、workspace。 我们可以在CellLayout添加子view打印出调用堆栈信息,可以整体上看页面加载显示流程。 主要类 Launcher.java:主界面&…...
机器学习算法---贝叶斯学习
1.了解相关概念 先验概率:有数据集d,以及假设h,此时h是不确定的。在还没有训练数据之前h的初始概率记为P(h),类似地我们把P(d)表示训练数据d在任何假设都未知或不确定时的概率。P(d|h)表示已知假设h成立时d的概率。 后验概率:就是在数据d上经过学习之后…...
PyCharm+RobotFramework框架实现UDS自动化测试——(二)RobotFramework环境配置
从0开始学习CANoe使用 从0开始学习车载测试 相信时间的力量 星光不负赶路者,时光不负有心人。 文章目录 1.环境准配2.Pycharm中相关配置2.1. 安装Hyper RobotFramework Support 3.脚本执行环境3.1 执行单条的配置3.2 执行全部用例配置 4.工程运行4.1 单条用例运行4.…...
colnames看似简单,却能优化数据处理流程
引言 在数据处理和分析中,变量名称是至关重要的,它们决定了数据的可读性和操作的简便性。在R语言中,colnames 函数以其简单的语法设计,提供了高效管理数据框列名的能力,尤其是在复杂的爬虫任务中显得尤为重要。本篇文…...
Spring Boot整合Minio实现文件上传
Spring Boot整合Minio后,前端的文件上传有两种方式: 文件上传到后端,由后端保存到Minio 这种方式好处是完全由后端集中管理,可以很好的做到、身份验证、权限控制、文件与处理等,并且可以做一些额外的业务逻辑…...
GitHub - riscv-software-src/riscv-isa-sim: Spike, a RISC-V ISA Simulator
GitHub - riscv-software-src/riscv-isa-sim: Spike, a RISC-V ISA Simulator 操作手册 $ apt-get install device-tree-compiler libboost-regex-dev libboost-system-dev $ mkdir build $ cd build $ ../configure --prefix$RISCV $ make $ [sudo] make install 具体安装 …...
ceph文件系统
ceph文件系统: 使用设备:4台机器 高度可扩展,分布式的存储文件系统,旨在提供高性能,高可靠性和高可用的对象存储,块存储,文件系统的存储 使用分布式的算法保证数据的高可用和一致性 ceph的架…...
模型创新、论文复现、科研辅导、论文代码定制
建模先锋团队长期致力于为用户提供优质的代码定制服务。团队提供全网最低价格的服务,同时保证高性价比和高质量的代码交付,为您提供个性化定制的服务。 以下是定制服务范围: 通过深度学习和信号处理技术,我们能够针对不同行业和场…...
【flink-cdc】flink-cdc 3版本debug启动pipeline任务,mysql-doris
官方文档 github仓库地址 Flink cdc debug调试动态变更表结构 经过测试使用,在启动任务配置Modify classpath添加jar的方式,容易出错classNotFoundException等等。 一、build project flink-cdc版本:3.2.1 mvn clean package "-Dma…...
mybatisX插件的使用,以及打包成配置
装mybatisX插件; idea连接数据库; 点击mybatisx-generator,设置自己装mybatisX插件; idea连接数据库; 点击mybatisx-generator,设置自己要的包和类; 如果要把自己的配置设置成一个自定义模板&a…...
pip下载包出现SSLError
报错: ERROR: Could not install packages due to an OSError: HTTPSConnectionPool(host‘files.pythonhosted.org’, port443): Max retries exceeded with url: /packages/8a/c2/ae7227e4b089c6a8210920db9d5ac59186b0a84eb1e6d96b9218916cdaf1/taming_transform…...
Linux下查看文件和文件夹占用空间大小
使用Linux命令,查看文件磁盘所占的空间大小,下面可以通过以下命令进行操作 df 可以查看一级文件夹大小、使用比例、档案系统及其挂入点,但对文件束手无策du 查看文件和文件夹的磁盘使用空间 在使用中,一般是df命令和du命令一起联…...
【论文+源码】基于Spring和Spring MVC的汉服文化宣传网站
为了实现一个基于Spring和Spring MVC的汉服文化宣传网站,我们需要创建一个简单的Web应用程序来展示汉服文化和相关信息。这个系统将包括以下几个部分: 数据库表设计:定义文章、用户和评论的相关表。实体类:表示数据库中的数据。DAO层接口及MyBatis映射文件:用于与数据库交…...
C++语言的学习路线
C语言的学习路线 C是一门复杂而强大的编程语言,由于其高性能和灵活性,受到了许多开发者和企业的青睐。无论是系统软件、嵌入式系统还是游戏开发,C都有非常广泛的应用。要掌握C这门语言,需要合理制定学习路线,并结合实…...
【OpenCV】使用Python和OpenCV实现火焰检测
1、 项目源码和结构(转) https://github.com/mushfiq1998/fire-detection-python-opencv 2、 运行环境 # 安装playsound:用于播放报警声音 pip install playsound # 安装opencv-python:cv2用于图像和视频处理,特别是…...
【ArcGISPro/GeoScenePro】解决常见的空间参考和投影问题
修复空间参考缺失的图像 数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 查看属性坐标 查看属性范围 范围值并不是零或接近于零。 这意味着栅格具有范围,因此其已正确进行...
Ruby语言的语法
Ruby语言的语法之美 Ruby是一种动态、开放源代码的编程语言,由日本的松本行弘(Yukihiro Matsumoto)于1995年首次发布。Ruby语言以其简洁、优雅和易于阅读的语法而闻名。它不仅适合初学者,还被广泛应用于Web开发、数据分析和其他领…...
概述(讲讲python基本语法和第三方库)
我是北子,这是我自己写的python教程,主要是记录自己的学习成果方便自己日后复习, 我先学了C/C,所以这套教程中可能会将很多概念和C/C去对比,所以该教程大概不适合零基础的人。 it seems that python nowadays 只在人工…...
程序包org.springframework.boot不存在
springBoot项目启动报错 程序包org.springframework.boot不存在 1、检查依赖 首先检查pom文件判断依赖是否存在 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId><version>2.4.5…...
.NET Core FluentAPI
目录 约定配置 主要规则 两种配置方式 Data Annotation Fluent API Fluent API配置 Fluent API众多方法 选择 约定配置 主要规则 表名采用DbContext中的对应的DbSet的属性名。数据表列的名字采用实体类属性的名字,列的数据类型采用和实体类属性类型最兼容…...
浙江省自然资源厅:基于“浙里办”的自然资源移动政务服务创新实践——“浙里自然资源”
摘 要:本文基于浙江省自然资源移动政务服务的创新实践,设计和实现“浙里自然资源”应用,依托浙江省省域空间治理数字化平台特有的架构基础,在提升功能性和可用性、加强运营力度、丰富服务内容等方面采取了管理举措和技术创新。通…...